Unescape HTML · C 🤝 qwen3.8-27b:8bit
SHA-256
34a13cdd2d20b4d2140c45460eee2ae0d1f11d9118b141e8eca07dee2d8d98f6
View source (62.6 KiB of C)
/* SPDX-License-Identifier: MIT
* HTML character-reference decoder, authored with OpenAI GPT-6 (Codex).
* Entity mappings: WHATWG HTML named character reference data, obtained from
* Python html.entities.html5. Front-coded sorted names in blocks of eight.
* Build: zig cc -target wasm32-freestanding -Oz -msimd128 -nostdlib
* -Wl,--no-entry -Wl,--export-memory -Wl,-z,stack-size=16384
* -Wl,--initial-memory=1310720 -Wl,--max-memory=1310720
* -Wl,--export=input_ptr -Wl,--export=input_utf8_cap
* -Wl,--export=output_utf8_cap -Wl,--export=render
* -Wl,--strip-all unescape.c -o unescape.wasm
*/
#include <stdint.h>
#include <wasm_simd128.h>
#define EXPORT __attribute__((visibility("default")))
/* Input starts 209744 bytes ahead of output. The maximum expansion is one
* byte per five input bytes (≫⃒ and ≪⃒), at most 209715 bytes for 1 MiB,
* so writes cannot overwrite unread input, including 16-byte SIMD copies.
* Values are LEB128 codepoints, NUL-terminated (code point 0 is unused). */
static unsigned char buffer[1258320];
EXPORT uint32_t input_ptr(void) { return (uint32_t)(buffer+209744); }
EXPORT uint32_t input_utf8_cap(void) { return 1048576; }
EXPORT uint32_t output_utf8_cap(void) { return 1258298; }
static const unsigned char plen[]={
5,2,5,5,4,1,2,5,5,4,2,4,2,12,4,3,
6,5,3,9,2,3,2,6,10,2,2,3,4,3,5,4,
4,5,1,17,5,5,4,3,7,3,6,7,2,2,8,5,
10,5,23,18,5,4,1,7,6,12,2,6,29,4,3,2,
6,2,6,3,3,3,5,2,5,5,1,2,2,2,15,3,
22,5,5,4,11,3,1,3,8,19,3,7,9,10,3,12,
24,10,10,3,7,9,11,7,12,7,5,15,9,6,3,14,
15,3,3,5,5,3,4,3,3,5,5,3,1,3,2,5,
7,4,14,15,4,2,6,4,10,8,3,2,2,3,5,10,
3,2,16,15,3,4,8,3,4,1,4,1,5,5,3,1,
4,2,1,3,11,4,9,7,11,10,5,3,1,6,4,1,
5,2,11,3,12,3,4,11,9,4,4,3,5,4,1,3,
3,5,1,3,7,5,2,5,12,12,5,4,2,2,3,5,
5,2,5,1,2,3,3,4,5,4,3,4,5,1,2,3,
4,4,1,5,4,2,8,2,6,4,1,15,4,3,10,7,
17,11,6,3,5,10,6,3,12,6,7,3,5,12,9,6,
15,6,3,5,10,14,9,7,8,10,5,2,1,8,5,12,
18,10,9,10,10,2,12,10,4,1,4,1,3,2,10,7,
3,8,3,3,1,4,5,5,6,1,18,10,6,13,18,8,
7,2,6,14,2,1,9,5,20,7,4,5,5,7,5,9,
17,4,10,5,12,5,12,3,20,2,5,7,4,10,5,20,
17,8,5,10,14,12,3,5,15,5,6,5,5,5,6,5,
21,5,6,5,5,5,9,5,14,3,5,1,5,5,4,1,
6,2,5,4,3,5,3,19,14,1,3,4,5,3,3,6,
9,3,11,8,2,2,2,1,9,12,2,1,6,5,10,5,
5,5,7,2,3,1,4,2,4,3,5,2,5,2,2,2,
6,4,1,1,12,10,13,2,3,16,4,3,9,7,13,11,
15,3,5,3,5,6,7,3,18,12,9,6,3,6,3,5,
4,10,10,3,1,10,6,2,6,5,1,4,4,3,1,2,
14,9,10,7,4,10,3,3,6,12,6,5,6,5,5,3,
4,2,3,5,6,5,10,5,8,1,1,5,5,3,5,4,
5,2,2,1,5,4,1,2,9,2,8,6,4,5,9,5,
4,8,3,4,6,2,4,4,6,4,1,5,2,5,4,7,
10,3,11,3,4,4,2,6,10,9,9,11,3,5,5,9,
14,10,2,3,4,3,5,3,5,3,2,4,1,2,4,1,
11,4,9,5,10,2,3,3,6,5,4,2,3,3,3,1,
4,3,4,3,3,5,4,1,3,3,3,3,4,5,5,1,
4,13,2,2,3,3,6,5,2,1,1,3,3,1,4,1,
3,5,6,2,3,4,2,1,3,3,1,5,1,1,1,2,
6,2,1,1,1,1,1,1,8,2,2,1,3,1,4,4,
4,1,1,4,1,2,2,4,8,4,3,1,3,2,5,3,
8,3,4,7,7,5,3,2,6,3,2,3,4,4,1,4,
6,1,5,3,4,2,1,4,3,5,3,2,4,4,5,5,
7,12,2,5,3,5,5,11,11,8,4,4,5,2,3,1,
5,3,2,4,2,3,1,3,6,3,1,1,1,1,1,1,
5,1,2,1,1,1,1,1,5,1,1,1,1,3,2,1,
5,1,1,1,1,1,1,5,7,5,2,1,1,1,1,1,
5,1,1,1,1,5,4,4,4,3,2,1,2,1,4,3,
6,2,1,1,1,6,1,3,8,3,2,3,1,3,2,4,
6,4,3,3,2,3,4,5,4,5,2,3,3,4,1,2,
4,1,2,11,5,2,1,3,11,4,1,5,3,4,4,3,
5,1,1,3,1,1,2,6,9,2,3,3,2,3,1,2,
5,3,3,2,1,1,1,4,7,1,3,2,4,1,1,5,
6,2,3,2,1,4,1,8,11,3,5,3,11,5,3,3,
8,3,5,4,3,5,4,2,4,1,6,3,5,1,1,5,
5,5,2,3,5,5,1,4,5,3,3,4,1,1,5,3,
3,3,7,3,3,5,3,5,4,1,2,3,5,4,6,12,
9,10,11,5,7,4,3,3,4,2,4,4,2,1,4,3,
7,3,6,5,2,5,4,5,4,1,4,1,3,1,4,1,
2,4,1,3,1,6,1,1,6,4,3,3,1,2,2,1,
3,2,4,2,3,2,3,2,7,1,5,4,3,7,4,4,
6,2,2,6,4,3,3,3,4,2,1,3,2,3,3,9,
12,13,2,5,5,3,3,1,5,4,3,3,3,3,3,4,
4,1,7,5,1,1,1,1,6,2,1,2,1,1,2,2,
6,2,2,3,3,2,1,5,5,1,1,5,4,1,3,1,
3,1,1,5,1,2,3,1,8,1,2,2,1,1,4,3,
2,1,1,1,2,2,4,1,4,1,3,3,4,3,2,1,
5,1,2,2,3,4,5,7,6,3,6,5,4,3,8,2,
4,5,2,4,4,1,3,1,4,4,5,3,4,4,2,7,
8,4,4,11,10,2,4,3,6,4,5,4,6,1,3,1,
4,3,2,1,5,1,4,2,6,3,4,4,2,4,4,2,
4,3,1,4,3,3,4,1,6,5,4,5,4,3,3,2,
4,4,5,3,2,1,3,1,6,1,1,4,4,2,5,1,
3,4,3,3,4,4,5,1,6,1,2,5,3,3,3,3,
5,2,4,4,1,1,3,5,8,4,4,2,1,2,1,3,
4,1,2,2,2,2,2,3,6,1,3,1,1,4,3,4,
6,2,3,1,5,4,2,2,3,3,3,1,5,5,2,1,
9,4,11,2,10,10,1,8,19,10,1,1,1,5,1,2,
6,1,1,1,2,7,3,5,10,3,3,5,4,1,1,1,
5,1,1,3,3,1,3,6,6,3,5,4,4,2,2,4,
3,1,1,3,4,2,3,11,18,6,10,11,5,3,1,3,
7,4,3,1,4,1,3,2,5,6,3,1,1,3,5,2,
3,2,1,1,2,2,1,4,2,2,2,3,4,4,4,5,
6,1,1,1,7,4,8,2,5,3,2,1,3,1,3,4,
10,2,4,5,1,4,12,2,3,4,1,3,3,3,3,1,
6,1,3,2,5,5,2,1,4,4,1,6,3,3,1,1,
10,10,1,1,1,10,5,4,5,4,2,1,1,2,2,4,
5,2,1,3,3,1,3,3,6,3,3,2,1,4,1,3,
6,1,2,3,4,4,2,4,7,2,2,1,1,1,5,1,
5,1,1,4,3,3,1,1,4,1,3,4,1,3,2,1,
10,10,1,1,5,1,1,3,3,2,1,3,3,1,2,1,
8,2,1,1,2,2,1,1,4,5,2,1,5,1,3,1,
5,2,4,3,1,1,9,3,6,2,3,1,1,7,8,2,
5,1,3,3,5,2,2,1,5,3,2,1,2,2,1,1,
5,3,2,1,3,4,2,11,15,5,2,1,1,3,2,5,
6,2,4,2,1,5,4,1,4,3,4,4,3,4,4,1,
7,4,2,5,2,3,1,1,5,4,2,2,4,4,4,1,
4,4,1,4,1,3,4,3,7,3,1,4,3,5,1,3,
4,3,3,3,1,3,1,2,7,1,1,4,2,5,1,3,
6,2,5,3,2,3,4,3,4,4,3,1,1,2,5,3,
6,1,4,2,2,1,4,3,2,7,1,5,1,2,2,4,
5,3,2,1,1,2,3,3,2,7,2,3,1,1,2,3,
3,1,6,7,2,7,3,3,7,3,1,2,2,3,2,5,
8,4,1,2,3,4,3,1,6,3,3,3,5,3,10,3,
5,2,2,5,2,4,4,3,4,3,3,6,2,1,1,2,
5,2,2,1,2,1,2,2,6,2,3,2,1,4,2,4,
5,3,4,1,2,3,1,5,6,2,2,1,3,5,3,1,
4,3,3,4,1,2,1,5,6,1,4,1,1,1,1,9,
14,11,2,10,8,11,10,10,4,10,4,3,1,5,4,4,
5,2,3,3,1,3,5,3,6,6,4,5,2,1,2,2,
6,5,4,2,1,1,4,6,2,6,4,1,1,2,3,3,
3,3,3,2,2,3,6,3,3,3,1,1,4,4,1,2,
4,2,4,6,1,2,2,3,5,4,1,6,8,1,4,1,
6,1,3,1,1,1,1,1,5,2,4,4,4,12,3,6,
4,2,1,1,1,5,1,1,6,2,5,3,1,4,1,2,
6,3,1,3,2,1,1,3,10,1,3,1,1,4,3,4,
6,4,3,1,13,3,2,2,4,3,1,3,4,2,1,4,
7,3,2,1,3,1,2,2,6,2,6,7,2,7,3,3,
7,1,2,1,1,1,1,1,6,3,1,3,4,2,4,4,
5,1,4,3,2,1,3,1,6,2,1,4,4,1,2,4,
5,6,1,3,5,4,1,3,6,2,5,4,2,3,1,9,
8,3,3,3,3,4,3,1,8,1,2,3,1,3,3,1,
7,2,5,4,6,4,4,2,9,5,2,3,1,5,4,2,
7,6,3,1,3,4,4,14,17,4,3,5,2,4,3,4,
3,4,4,3,5,1,5,4,5,3,5,2,3,3,4,1,
5,2,6,9,11,5,3,2,5,3,8,5,2,3,3,3,
4,4,4,2,1,4,2,6,4,3,1,4,5,8,5,7,
6,1,5,1,2,5,8,1,12,1,5,11,5,2,4,2,
6,2,4,4,1,2,4,4,5,3,4,4,3,4,1,3,
6,6,5,5,2,1,4,2,4,1,1,4,3,4,3,2,
5,2,4,3,1,4,3,3,4,4,2,3,4,4,3,3,
6,5,3,3,5,6,1,4,3,2,2,3,3,3,3,2,
6,5,1,3,5,2,2,3,7,3,3,2,2,
};
static const unsigned char pfx_bits[]={
32,132,16,68,8,32,132,32,66,8,32,4,32,70,8,64,
132,16,66,0,32,136,33,130,16,32,4,17,66,48,192,132,
161,66,17,96,136,33,66,8,0,136,16,66,16,32,136,48,
66,88,96,173,33,130,24,64,24,100,148,58,64,153,101,144,
17,32,17,130,144,35,224,145,67,130,0,32,4,33,66,8,
32,136,18,68,8,96,4,17,66,16,32,4,19,132,8,32,
132,18,130,16,32,132,16,216,57,224,156,16,64,16,32,132,
32,130,8,0,132,16,130,8,32,4,49,68,24,64,164,32,
68,8,64,0,17,66,16,0,132,16,68,8,0,132,32,132,
16,64,136,80,82,34,192,32,71,72,34,224,20,198,136,49,
128,40,66,4,33,128,144,16,68,8,128,16,68,132,40,64,
136,0,66,16,32,132,16,64,8,64,4,180,144,48,32,4,
33,196,32,96,16,68,134,82,64,41,53,206,120,160,156,115,
206,25,96,172,53,8,132,224,173,72,82,89,96,149,53,16,
66,32,132,0,66,16,32,132,32,68,8,32,4,17,70,8,
0,17,16,66,8,32,136,32,16,66,64,12,21,4,8,32,
128,16,132,32,64,136,32,208,9,32,24,165,74,57,224,149,
130,144,105,160,156,211,202,42,64,132,32,2,16,32,4,33,
132,8,160,148,18,66,8,192,24,134,156,9,32,12,35,16,
66,64,136,129,6,8,64,4,17,132,8,96,136,17,74,41,
32,4,1,4,9,32,136,16,66,8,32,21,81,130,8,224,
8,33,138,16,160,8,18,66,8,32,132,80,130,24,0,33,
52,66,8,0,132,16,2,8,32,128,16,66,16,32,132,0,
66,16,32,136,16,2,8,64,8,33,68,8,32,132,33,194,
16,96,140,49,196,24,192,156,115,206,57,96,148,51,200,8,
32,8,33,132,16,32,4,33,74,8,64,128,64,8,57,96,
152,64,130,8,192,8,33,196,24,32,16,50,8,25,96,172,
49,70,8,160,180,214,134,32,64,132,33,130,24,64,16,66,
6,33,128,12,66,200,32,128,16,66,198,32,128,12,66,8,
25,96,12,66,200,32,128,16,66,66,16,64,8,34,8,9,
64,16,82,128,24,96,144,49,196,8,64,8,81,66,16,128,
132,32,138,8,96,16,178,204,57,224,140,49,70,40,160,24,
81,6,33,64,144,33,198,32,64,4,65,6,9,192,136,33,
140,24,128,140,49,132,25,160,148,49,148,16,64,4,16,130,
16,128,4,17,68,16,64,4,33,130,8,32,144,67,132,16,
96,152,17,194,8,64,140,50,198,16,128,144,21,196,8,64,
136,32,72,16,32,8,32,130,8,128,8,17,66,16,64,136,
17,132,16,32,136,82,4,41,64,4,17,136,16,128,132,33,
198,17,96,20,17,68,16,32,136,32,130,16,0,132,16,196,
16,32,4,33,66,16,128,132,80,74,41,128,20,82,10,33,
128,12,17,128,8,160,136,16,68,8,64,140,33,198,48,96,
144,16,68,8,64,8,17,4,17,128,136,16,130,32,32,136,
33,132,16,96,140,50,70,16,32,8,33,6,33,32,4,35,
68,8,32,8,65,132,8,64,4,1,130,16,64,4,17,130,
24,64,132,48,8,25,64,4,33,138,16,96,144,49,130,16,
32,132,32,8,33,128,4,17,4,16,32,132,32,2,40,64,
132,16,66,8,64,136,16,68,8,64,8,65,136,16,128,20,
66,8,33,64,140,65,130,16,96,16,19,196,16,32,136,34,
134,8,32,145,69,136,75,128,8,49,134,24,192,156,65,6,
33,128,144,32,68,16,128,20,17,130,16,64,4,97,130,32,
96,16,17,134,16,128,16,145,196,24,64,12,49,70,32,64,
136,34,68,16,64,16,34,70,17,64,12,33,132,16,96,16,
18,70,16,32,136,65,196,48,192,136,32,66,8,32,136,49,
134,40,192,4,17,130,8,64,4,33,128,24,160,8,49,66,
16,64,8,49,198,24,160,156,32,74,24,64,20,33,66,16,
128,20,33,196,16,32,4,49,8,25,64,140,32,68,16,64,
132,32,132,16,160,12,66,6,17,96,148,16,196,40,160,24,
51,138,49,128,16,34,196,24,160,4,81,138,16,32,140,49,
132,17,160,8,33,138,32,128,156,52,202,32,128,156,20,132,
16,32,185,32,198,8,64,8,49,132,24,128,136,33,130,32,
64,128,32,2,17,64,8,33,66,16,64,136,32,66,16,64,
136,32,196,24,32,8,17,132,24,96,12,33,132,8,64,132,
97,66,0,128,12,50,66,24,96,140,16,134,16,64,136,96,
136,32,128,144,66,8,33,32,8,17,132,16,96,16,66,72,
41,64,20,49,134,24,128,12,34,68,16,0,132,16,66,32,
160,8,32,68,8,96,8,33,8,33,64,16,82,8,33,128,
16,66,196,40,64,136,50,136,9,96,8,17,132,40,32,16,
66,132,8,64,4,82,196,8,160,176,146,74,41,64,4,33,
130,9,96,8,49,134,8,64,132,32,132,24,32,8,65,8,
9,0,132,32,196,16,96,8,49,134,16,32,16,18,4,41,
64,8,65,68,24,64,12,81,68,40,64,140,65,6,25,96,
140,17,194,16,96,136,65,130,24,64,4,51,66,25,64,148,
130,72,41,64,140,50,66,16,64,4,34,208,8,96,12,50,
6,25,96,24,100,18,33,64,16,66,72,41,64,8,49,198,
24,128,12,50,202,24,128,140,97,144,73,128,148,32,72,17,
0,136,16,132,8,32,132,50,74,17,96,136,33,130,40,160,
136,32,198,24,64,132,32,16,98,0,181,49,198,24,64,132,
33,68,16,0,132,32,194,8,32,8,17,68,8,64,4,51,
68,16,64,4,33,146,16,128,136,96,134,16,32,8,65,130,
8,32,144,16,196,24,128,144,65,6,97,128,13,178,66,8,
96,8,49,66,8,32,132,16,68,25,32,128,48,138,8,32,
4,17,128,16,32,4,17,130,8,32,136,33,130,8,32,136,
16,192,8,32,132,16,66,16,32,136,16,68,8,32,132,32,
0,
};
static const unsigned char sfx_bits[]={
138,243,178,170,149,145,38,126,163,101,141,230,168,201,214,38,
159,214,106,77,230,168,242,206,43,9,147,102,29,159,178,42,
199,115,58,207,47,255,224,177,121,179,114,92,179,177,106,155,
181,98,219,172,26,223,236,123,162,56,252,46,164,233,218,47,
105,175,117,174,163,167,201,163,38,137,219,232,130,214,177,140,
191,47,107,223,100,90,203,115,90,163,57,106,155,53,14,207,
40,205,68,38,207,96,153,72,154,248,141,206,236,77,190,13,
155,166,104,141,198,55,75,190,13,255,162,188,109,146,181,28,
163,39,251,178,181,201,152,114,204,198,247,41,223,232,201,190,
47,25,223,104,221,200,119,90,175,44,91,155,47,218,200,183,
197,198,184,205,176,181,249,162,217,139,219,29,11,163,246,43,
155,174,206,218,40,35,199,183,140,215,82,124,163,106,77,190,
54,202,224,245,203,55,50,94,190,168,134,203,55,170,225,242,
141,202,175,28,163,177,90,227,104,124,51,114,204,198,247,45,
227,181,20,223,168,90,147,239,156,214,242,137,155,55,30,223,
104,205,188,178,233,234,172,141,50,114,124,203,120,45,197,55,
170,214,228,91,203,182,109,155,53,62,51,248,204,144,115,211,
200,119,77,174,231,100,242,156,201,143,38,79,170,42,90,215,
117,67,218,107,110,146,181,28,243,232,123,147,105,205,146,102,
205,222,172,73,190,138,137,223,104,35,223,13,75,154,53,123,
179,38,249,54,50,94,190,168,98,226,55,10,213,100,142,118,
236,123,162,176,28,159,105,138,214,104,124,179,228,219,200,115,
122,55,242,221,200,183,67,227,228,139,151,47,202,200,241,45,
227,181,20,223,168,90,147,111,35,223,122,172,212,181,172,87,
104,122,43,117,45,235,27,171,174,183,82,215,178,222,161,168,
28,171,21,154,222,74,93,203,122,35,227,229,139,86,114,172,
86,104,122,111,172,186,222,74,93,203,250,198,170,235,173,212,
181,172,111,172,186,222,74,93,203,122,135,162,222,172,212,181,
172,55,178,30,43,117,45,235,31,90,223,172,73,190,11,89,
235,177,82,215,178,222,200,122,172,212,181,172,47,100,237,205,
74,93,203,250,82,163,57,90,161,233,189,177,234,122,127,168,
121,203,117,135,162,31,106,222,114,253,161,230,45,215,11,89,
111,172,186,222,29,138,126,168,121,203,117,35,235,241,198,170,
235,253,161,230,45,215,11,89,119,40,170,212,181,172,147,117,
45,235,182,89,223,181,236,58,23,228,116,17,105,226,55,106,
146,181,28,179,181,201,159,242,157,214,106,77,230,168,243,162,
48,26,223,48,105,214,243,205,115,48,249,190,28,141,147,53,
250,161,53,207,193,228,251,114,52,78,214,168,172,202,241,156,
206,54,251,202,49,141,147,175,67,227,228,219,177,239,137,178,
47,91,214,44,14,219,102,205,194,55,137,195,239,206,218,183,
61,203,49,26,223,44,249,58,143,201,167,53,251,190,232,201,
193,228,251,114,52,78,214,232,135,214,60,7,147,239,203,209,
56,89,163,242,156,214,202,251,226,53,139,214,119,157,218,102,
13,77,38,223,145,48,76,158,101,141,230,168,137,158,236,203,
214,38,15,157,242,157,214,170,60,167,53,74,222,104,237,208,
56,249,86,168,109,63,248,251,58,52,78,190,80,141,146,55,
90,67,53,74,222,104,93,161,182,205,189,100,124,59,52,78,
190,29,251,158,168,109,214,119,164,108,141,201,147,38,234,222,
145,201,214,102,90,179,111,137,214,55,55,147,38,42,207,105,
205,246,114,124,147,111,197,198,168,109,214,119,45,187,56,60,
55,178,30,71,56,60,71,56,60,59,52,78,190,146,99,242,
211,203,170,152,201,147,38,126,163,38,91,155,252,41,223,82,
90,171,53,153,163,48,105,214,42,27,147,53,47,205,47,139,
218,241,141,170,53,249,74,241,141,214,54,106,222,172,28,231,
172,205,150,47,202,200,48,76,118,44,140,218,178,42,199,115,
122,147,182,89,223,236,123,162,18,238,154,60,252,78,38,91,
155,124,90,203,115,106,155,53,90,155,252,132,187,38,79,69,
38,63,153,60,57,207,164,137,158,236,203,167,181,60,167,148,
109,214,213,100,242,29,105,226,55,10,151,39,25,171,243,75,
154,232,93,167,117,93,153,100,45,199,232,201,190,60,154,222,
74,172,190,232,82,147,166,139,222,117,45,235,11,89,111,172,
186,222,74,93,203,58,131,178,47,27,171,21,154,222,141,140,
151,47,186,212,164,233,162,183,30,119,40,250,161,230,45,215,
31,106,222,114,189,144,245,243,202,114,189,177,234,122,43,117,
45,235,31,106,222,114,221,161,104,133,166,119,135,162,74,93,
203,250,135,154,183,92,215,44,25,171,47,186,144,181,67,227,
228,235,205,141,172,199,31,106,222,114,221,161,232,135,154,183,
92,127,168,121,203,117,133,166,183,55,127,168,121,203,245,66,
214,31,106,222,114,189,144,53,89,215,178,94,179,234,122,147,
117,45,235,182,237,208,56,249,66,53,74,222,104,253,224,239,
235,208,56,249,66,53,74,222,104,93,161,182,93,161,182,205,
189,100,124,59,52,78,190,29,251,158,104,90,191,104,122,147,
117,45,235,48,123,202,183,28,171,21,154,222,74,93,203,122,
37,199,106,133,166,247,198,170,235,173,212,181,172,111,172,186,
222,74,93,203,250,139,166,55,89,215,178,94,179,234,122,147,
117,45,235,53,171,174,55,89,215,178,62,167,58,90,87,104,
122,43,117,45,235,27,171,174,183,82,215,178,94,217,102,189,
222,181,236,222,22,57,155,60,122,178,56,204,205,164,137,190,
47,27,223,117,106,165,53,27,227,118,246,226,182,60,167,182,
89,227,215,100,242,164,137,223,168,73,214,114,124,153,232,201,
190,60,170,146,55,155,163,22,122,178,56,204,205,164,137,118,
43,107,186,220,76,154,104,204,205,164,137,126,104,205,119,43,
27,115,51,105,162,246,141,158,80,141,146,55,90,67,53,74,
222,104,93,161,182,93,161,182,125,161,122,197,198,104,90,203,
75,141,146,110,188,212,40,233,178,177,202,205,164,137,206,233,
205,200,177,90,227,104,124,227,51,67,206,151,124,55,50,94,
190,232,135,214,55,107,146,239,66,214,206,139,194,104,124,211,
56,249,118,236,123,162,59,107,223,54,84,163,228,141,214,14,
141,147,239,131,191,175,67,227,228,123,201,55,84,163,228,141,
214,80,141,146,55,90,87,168,109,115,47,25,223,14,141,147,
111,199,190,39,26,225,240,220,200,122,28,225,240,236,208,56,
249,86,104,122,119,53,75,198,234,139,46,100,125,201,119,133,
166,119,87,179,100,172,190,168,67,227,228,107,219,14,141,147,
47,84,163,228,141,214,21,106,219,220,75,198,183,67,227,228,
219,177,239,137,94,168,125,163,39,84,163,228,141,214,80,141,
146,55,90,95,242,125,161,246,141,158,21,106,219,21,106,219,
89,141,154,232,137,218,14,141,147,47,247,146,241,237,208,56,
249,110,104,142,214,54,234,188,40,140,198,55,171,174,119,87,
179,100,172,190,232,66,214,14,141,147,239,37,223,28,141,147,
53,202,225,165,141,222,14,141,147,239,140,214,54,122,59,52,
78,190,120,105,163,183,67,227,228,107,154,40,122,218,14,141,
147,239,37,223,28,110,154,40,122,218,220,75,198,183,67,227,
228,219,177,239,137,206,104,109,163,183,67,227,228,219,177,239,
137,58,52,78,190,15,254,190,14,141,147,111,199,190,39,122,
201,247,135,214,55,107,146,239,66,214,182,89,223,236,123,162,
56,230,188,172,74,154,248,141,154,108,109,242,216,89,190,164,
153,214,106,77,230,40,76,154,53,170,146,172,89,203,177,60,
167,51,26,51,120,253,242,141,140,151,47,170,225,242,141,98,
51,26,51,120,253,242,26,46,223,104,109,155,245,75,218,235,
205,190,39,10,163,54,14,191,57,90,47,100,141,229,104,189,
212,164,137,186,232,157,145,53,26,223,43,106,179,118,70,214,
55,75,190,141,201,167,245,202,178,217,139,219,22,27,227,182,
204,198,38,89,163,243,75,198,232,156,214,168,137,158,168,237,
208,56,249,114,47,25,223,14,141,147,111,199,190,39,154,213,
44,140,202,39,110,222,179,92,223,172,28,147,175,109,214,172,
230,97,93,90,107,242,156,218,102,189,45,100,93,59,16,105,
226,55,26,171,117,125,191,155,73,214,114,140,158,236,203,163,
57,90,219,168,243,162,48,26,223,52,206,190,108,89,179,56,
236,205,14,141,179,47,91,214,44,14,167,245,182,202,172,186,
222,74,172,190,232,82,147,166,139,222,117,45,235,11,89,87,
104,122,43,117,45,235,12,202,190,108,172,54,50,94,190,232,
82,147,166,139,222,122,220,161,232,135,154,183,92,111,172,186,
222,141,172,199,31,106,222,114,189,144,245,243,202,114,221,161,
168,82,215,178,254,161,230,45,215,53,75,198,234,139,46,100,
189,177,234,122,119,53,75,198,234,139,58,52,78,190,222,220,
200,122,252,161,230,45,215,29,138,126,168,121,203,245,135,154,
183,92,47,100,253,161,230,45,215,11,89,147,117,45,235,155,
60,167,120,124,74,240,252,178,168,93,179,234,122,147,117,45,
235,182,89,175,248,139,54,232,75,242,232,201,69,76,100,242,
38,207,97,79,103,242,164,137,223,168,73,214,114,140,158,236,
203,214,38,159,214,220,42,215,119,35,235,177,82,215,178,94,
161,233,173,212,181,172,111,172,186,222,74,93,203,186,55,43,
117,45,235,172,10,147,48,249,190,12,91,155,47,42,207,41,
93,223,28,141,147,53,42,197,55,90,219,168,121,179,114,204,
225,165,141,222,14,141,147,239,140,214,54,122,59,52,78,190,
94,204,202,177,109,214,220,77,214,120,105,163,183,67,227,228,
107,154,40,122,218,14,141,147,47,247,146,241,237,208,56,249,
118,236,123,162,28,110,174,221,74,222,240,140,214,54,122,59,
52,78,190,54,122,119,17,182,93,155,210,56,29,23,153,188,
201,147,37,110,146,181,28,163,39,251,242,105,221,173,104,141,
166,114,141,222,36,107,186,220,76,154,104,204,205,164,137,178,
239,137,58,52,78,190,15,254,190,14,141,147,111,199,190,39,
218,201,115,90,179,243,139,54,242,109,155,245,93,203,174,71,
154,248,141,214,181,108,178,117,89,155,188,87,214,104,142,154,
108,109,242,103,249,146,102,90,171,53,153,163,48,105,214,241,
137,214,11,89,123,241,137,214,75,77,154,168,139,222,25,89,
163,241,189,162,54,107,179,114,156,189,184,45,171,114,60,167,
179,82,215,178,238,205,74,93,203,250,66,214,141,172,199,74,
93,203,122,35,235,177,82,215,178,238,208,56,251,178,101,205,
226,112,135,162,74,93,203,58,89,215,178,126,202,122,76,214,
181,172,123,243,140,214,21,154,222,74,93,203,250,198,170,235,
173,212,181,172,219,236,43,199,53,27,171,182,89,223,236,123,
162,56,252,126,13,105,175,37,89,155,252,73,218,235,139,162,
117,73,214,247,135,214,55,107,146,239,66,214,21,27,163,28,
58,147,53,121,203,117,199,190,39,202,119,43,27,115,51,105,
162,105,45,207,169,109,214,95,126,146,246,10,154,108,109,162,
167,138,166,181,60,167,182,89,135,105,205,134,242,156,218,102,
45,42,38,47,153,188,103,242,164,137,223,168,201,214,38,47,
166,181,60,167,182,89,227,240,59,70,38,79,154,248,141,154,
100,45,199,252,120,202,55,90,203,32,123,222,43,55,147,38,
122,147,105,45,207,169,109,214,36,105,226,55,90,214,104,142,
146,166,115,178,181,137,223,40,143,190,172,154,146,105,173,214,
100,142,190,104,106,243,240,188,206,43,9,147,102,253,170,51,
25,159,100,124,158,246,43,207,104,174,162,47,74,198,42,108,
159,36,89,154,39,154,170,100,172,194,246,73,174,245,157,151,
167,61,175,119,79,214,181,172,202,49,41,207,233,236,144,38,
91,163,236,41,219,115,45,239,228,60,215,242,142,210,53,27,
171,182,89,223,60,60,163,244,205,190,39,138,195,47,169,155,
114,204,198,55,27,223,229,37,223,164,233,154,114,172,162,179,
205,190,114,60,215,44,140,218,44,140,210,37,89,231,40,170,
163,167,138,150,181,123,151,181,107,202,177,202,159,52,46,151,
168,73,226,54,10,207,55,159,207,54,91,199,50,126,147,171,
142,162,113,153,214,172,106,146,51,91,155,248,44,159,242,61,
191,184,125,179,48,106,219,180,137,207,37,171,218,55,89,223,
53,75,198,234,139,158,178,30,227,51,62,191,184,157,163,168,
142,158,42,234,146,181,172,191,164,233,190,114,143,198,42,90,
190,164,233,218,52,78,214,232,93,179,100,172,190,232,41,235,
241,139,166,119,205,170,235,29,187,110,32,16,229,235,14,132,
108,186,49,74,227,108,46,223,242,156,222,183,12,151,178,126,
179,232,222,84,219,91,71,141,87,202,123,116,226,94,181,189,
245,23,149,242,254,85,219,250,214,165,188,159,213,86,202,251,
249,214,107,227,157,56,204,198,184,93,202,251,252,226,246,205,
194,168,141,87,219,91,231,81,41,239,121,181,173,111,61,215,
44,140,214,104,142,230,37,89,151,182,89,163,48,203,194,168,
252,150,171,141,151,248,251,150,248,251,162,55,60,59,40,109,
146,38,126,163,51,25,159,38,57,151,181,137,207,38,57,227,
243,41,223,118,141,222,114,108,146,179,109,154,100,45,199,232,
201,190,108,109,226,179,109,195,167,124,163,39,251,194,243,205,
231,38,26,223,104,125,202,119,90,175,38,143,154,46,76,214,
46,203,214,38,91,59,38,74,191,40,89,215,178,254,162,233,
93,179,234,122,159,27,71,218,183,201,214,230,139,158,38,91,
155,39,105,175,104,26,179,241,13,179,167,109,178,245,139,151,
54,206,222,166,252,202,49,74,195,48,121,207,105,252,162,48,
26,223,166,12,207,47,186,163,118,172,158,242,205,198,247,156,
214,242,201,219,181,89,147,117,45,219,182,109,214,120,137,206,
232,125,202,183,137,159,100,93,191,53,58,215,182,249,146,117,
61,207,101,109,146,179,137,207,38,57,227,243,41,223,114,109,
215,100,93,195,47,143,210,115,141,154,38,94,191,60,74,219,
184,105,230,40,170,163,167,138,214,104,156,163,100,93,203,250,
139,166,119,205,170,235,157,163,168,142,158,166,110,202,49,27,
223,108,124,243,175,121,243,167,82,215,17,89,147,170,138,214,
47,122,175,117,125,146,246,154,151,46,89,203,250,75,154,38,
89,203,49,127,146,170,138,214,231,73,214,181,124,219,40,141,
170,239,77,194,243,205,231,41,107,175,119,189,146,245,123,174,
100,93,179,36,44,199,167,141,179,183,141,170,36,12,147,54,
27,159,108,206,158,168,28,223,44,140,218,114,188,183,38,255,
154,114,29,215,242,44,191,47,89,159,242,156,222,40,125,202,
55,204,198,184,61,191,184,109,211,56,89,163,120,249,162,37,
89,235,232,169,162,167,172,199,100,93,203,250,41,235,49,89,
215,178,110,175,100,61,203,114,252,162,233,93,179,234,122,215,
165,75,214,178,110,202,117,92,203,179,109,214,167,109,242,242,
123,215,178,123,159,242,93,179,41,78,214,245,74,214,167,78,
198,234,139,246,38,207,170,53,89,215,104,211,200,183,124,147,
38,126,163,246,141,214,38,89,203,49,106,178,181,41,191,114,
204,159,242,141,166,141,124,215,168,90,147,57,106,159,242,253,
178,241,141,214,246,107,163,175,125,202,55,76,154,245,124,243,
54,122,231,246,28,12,4,26,171,246,44,171,114,60,167,51,
89,219,239,139,219,54,139,206,54,251,202,113,78,155,108,109,
202,175,28,219,44,252,146,241,173,222,245,139,218,54,78,190,
54,74,227,168,125,179,121,211,228,51,89,219,111,221,200,55,
89,215,182,89,159,242,141,218,44,124,147,43,14,191,181,188,
155,47,107,223,51,106,222,228,205,202,49,186,207,114,140,198,
55,75,190,104,74,190,47,27,171,167,124,219,40,109,242,40,
76,190,104,202,190,172,250,178,234,203,170,117,202,190,172,218,
190,172,250,146,247,203,170,119,108,199,114,42,207,105,77,190,
111,42,215,110,62,147,245,205,198,119,77,154,129,48,16,133,
145,214,164,25,32,194,80,12,68,129,16,69,97,164,53,105,
22,200,129,216,175,172,199,182,89,171,206,75,154,248,141,170,
36,12,147,231,92,214,104,142,154,108,109,242,167,124,163,42,
250,210,180,253,146,241,109,155,230,41,223,178,138,218,167,124,
203,239,139,218,105,173,170,44,140,190,173,201,171,175,67,182,
177,67,206,115,45,239,168,26,163,52,109,179,176,60,167,53,
153,163,182,89,179,48,170,218,44,252,222,166,201,214,167,124,
191,25,89,211,56,106,223,53,57,207,181,188,171,119,77,214,
245,41,223,40,253,162,182,77,191,168,109,191,168,109,219,44,
156,163,245,29,163,52,29,59,171,82,215,36,91,219,243,155,
194,236,123,215,167,201,215,38,91,235,107,73,214,38,91,155,
40,89,223,54,206,222,239,203,206,181,41,199,105,237,218,40,
89,203,250,234,218,58,89,203,186,76,214,53,124,175,183,236,
190,104,122,147,117,45,235,53,171,174,55,89,215,178,62,167,
117,73,214,182,89,175,246,75,218,235,93,203,46,95,226,239,
59,175,104,204,146,38,126,163,38,91,155,60,139,154,252,110,
190,105,90,171,53,153,163,44,203,198,119,124,179,108,156,178,
177,124,147,237,203,170,48,105,214,42,250,178,49,58,147,245,
125,175,44,44,167,51,122,198,38,89,163,41,27,223,44,42,
159,242,125,179,241,109,146,47,170,162,181,93,155,228,251,146,
245,234,206,181,124,202,38,175,202,241,156,178,242,77,206,181,
124,210,56,106,223,182,89,179,177,115,202,183,205,218,108,108,
231,249,205,190,39,138,187,38,15,191,173,201,214,38,223,166,
53,76,222,171,60,167,182,89,163,181,201,227,174,201,187,228,
60,147,185,107,162,39,251,242,105,173,214,40,26,175,38,223,
154,188,60,167,182,89,191,10,89,215,117,125,147,236,187,144,
117,237,168,17,89,147,38,126,163,47,137,194,243,205,231,106,
77,198,112,121,146,177,122,190,232,76,227,242,75,214,117,153,
218,169,189,186,239,60,191,54,11,191,100,93,223,239,77,178,
47,106,151,100,93,151,181,91,147,38,250,150,53,105,186,46,
106,191,39,110,146,181,28,163,39,251,178,47,94,190,38,127,
154,36,141,203,117,125,174,100,141,219,43,89,219,43,250,162,
233,77,214,181,172,223,36,251,174,100,61,203,114,124,202,122,
140,207,47,154,222,100,93,203,186,93,179,234,122,147,117,45,
235,246,74,214,179,44,199,246,139,166,119,205,170,235,109,211,
56,171,146,117,45,235,247,90,163,232,205,194,168,173,210,180,
253,146,241,109,155,230,139,218,167,124,203,181,138,218,54,57,
207,181,188,159,242,141,210,234,93,191,168,109,163,52,173,222,
181,122,215,54,11,167,172,189,222,175,44,215,181,234,188,43,
89,159,248,91,190,110,107,242,47,89,215,166,92,199,104,253,
190,43,89,159,119,205,194,236,41,223,50,110,223,164,185,162,
177,67,206,115,45,239,111,140,210,180,205,194,50,25,171,117,
93,214,110,172,190,104,122,147,117,45,235,175,28,171,47,154,
222,53,171,174,55,89,215,178,14,147,179,125,203,53,171,174,
55,89,215,178,46,207,100,93,203,250,139,166,119,205,170,235,
61,147,117,250,226,246,43,223,44,140,218,58,105,223,37,89,
247,104,172,162,233,76,214,239,253,214,100,93,155,114,29,163,
245,74,214,39,124,215,172,77,210,184,108,214,175,189,178,48,
170,210,37,46,215,119,45,187,239,109,154,108,125,202,247,90,
163,40,11,163,246,75,214,53,141,163,246,253,222,117,70,214,
44,154,226,245,105,175,100,141,175,100,157,163,245,29,163,52,
29,59,112,211,200,55,105,214,47,122,163,54,58,219,183,124,
202,122,12,147,179,125,203,47,154,222,248,92,187,104,109,202,
48,76,242,39,105,175,40,105,227,53,122,146,177,250,162,105,
13,175,50,107,214,242,73,218,183,201,214,167,124,199,184,93,
194,108,140,219,39,254,154,243,89,199,243,139,219,242,137,190,
246,156,206,176,109,214,247,44,219,248,123,179,48,57,195,228,
28,67,234,157,199,21,154,222,100,93,203,122,205,170,235,77,
214,181,172,191,119,190,177,234,122,147,117,45,235,95,67,218,
235,73,218,107,76,150,47,105,226,55,26,171,179,195,158,178,
61,215,242,30,147,55,94,147,175,93,218,51,14,207,168,73,
206,181,28,199,38,122,178,175,28,171,167,124,227,51,127,146,
246,138,42,117,29,163,100,189,186,181,172,159,242,77,227,108,
110,163,100,205,194,59,107,223,49,186,179,246,109,167,181,234,
160,52,109,191,100,124,219,177,106,179,240,93,175,74,93,147,
117,61,147,53,107,199,172,125,230,173,201,191,74,93,59,100,
93,159,53,26,191,104,122,147,117,45,235,53,171,174,55,89,
215,178,78,211,246,75,198,183,109,219,44,28,191,119,205,162,
48,123,202,115,122,179,177,19,203,55,27,159,242,157,147,165,
25,179,57,89,154,241,76,214,228,251,162,175,253,222,242,203,
198,119,109,226,40,26,207,53,106,162,116,173,212,53,89,215,
166,206,170,235,77,214,181,172,223,53,27,215,119,205,162,182,
105,226,40,90,175,114,125,195,236,57,147,53,249,190,232,203,
194,177,205,194,40,13,179,231,76,214,180,141,151,232,140,226,
165,19,219,120,137,218,232,141,210,180,105,162,244,236,196,54,
62,163,54,122,163,52,125,171,47,251,158,232,171,214,44,25,
171,47,250,162,233,29,223,53,75,198,234,139,190,104,122,163,
116,205,170,235,141,210,56,140,214,178,61,231,13,105,175,113,
30,145,117,77,206,39,105,175,42,122,179,113,202,198,175,82,
215,104,156,191,119,205,162,181,82,215,119,205,162,54,11,235,
74,93,147,245,234,214,177,78,214,181,172,199,40,89,203,28,
105,226,55,106,223,38,91,155,188,124,146,246,90,190,164,201,
230,242,109,203,239,137,190,172,154,154,108,93,203,170,28,215,
100,142,222,107,73,214,48,27,223,47,89,215,38,91,203,175,
89,203,182,205,198,232,13,147,102,141,170,36,107,214,114,124,
198,184,45,203,115,58,147,53,90,207,47,110,215,100,93,159,
104,45,215,39,90,203,105,10,179,170,156,202,181,253,202,51,
154,219,102,45,219,47,105,175,242,123,179,239,137,194,168,77,
218,56,252,230,37,89,207,100,61,147,53,249,190,232,107,179,
240,123,155,60,90,155,241,205,202,231,140,214,48,251,206,55,
26,187,105,189,178,57,12,147,183,28,163,51,123,155,107,42,
215,110,254,146,177,233,174,110,142,219,164,201,214,243,139,219,
165,201,214,167,140,163,112,108,179,240,173,203,51,44,179,241,
205,198,247,156,226,241,89,59,228,108,226,232,92,163,38,57,
207,181,188,155,120,253,242,40,141,210,49,57,207,181,188,163,
52,109,179,240,92,163,166,205,194,44,140,218,177,67,206,54,
11,203,103,74,190,100,61,215,114,250,178,49,106,227,117,58,
223,178,205,194,120,141,190,182,89,179,51,30,155,246,76,167,
53,27,223,242,156,206,53,11,163,182,89,227,228,141,214,49,
43,199,54,27,223,52,142,218,55,74,203,119,173,144,117,93,
215,55,201,190,11,89,215,17,89,215,164,137,226,55,122,178,
38,10,207,55,159,199,234,137,190,104,77,210,184,92,215,228,
92,166,182,153,218,171,91,147,117,253,206,243,107,179,240,253,
234,55,201,190,172,28,147,175,93,151,100,93,151,181,91,147,
38,234,186,168,253,158,184,73,214,114,92,155,232,201,190,236,
139,151,252,105,146,239,185,146,53,141,203,117,125,218,43,74,
190,108,140,206,100,125,219,230,173,166,172,189,222,117,250,202,
114,93,175,100,125,226,175,156,179,234,122,147,117,45,235,53,
171,174,55,89,215,178,126,147,236,187,146,245,44,203,241,41,
235,49,62,191,104,122,147,117,45,235,246,74,214,179,44,199,
118,205,170,235,77,214,181,172,219,54,141,179,42,89,215,178,
126,175,53,138,222,44,140,218,53,27,171,54,27,171,167,124,
219,40,253,146,117,189,146,53,12,203,184,125,147,230,138,198,
48,123,214,50,25,171,117,93,214,238,76,214,233,139,219,55,
11,163,246,76,214,245,76,214,234,61,203,47,27,223,53,89,
215,54,73,227,178,89,175,116,137,203,181,77,227,114,125,175,
53,138,178,48,106,215,44,154,190,119,205,226,47,190,146,117,
189,219,164,137,223,104,73,227,178,233,144,115,45,199,38,142,
218,38,122,178,47,91,155,177,67,206,54,11,207,242,203,198,
183,205,194,182,201,159,242,93,162,168,82,215,100,189,186,181,
172,219,168,121,195,172,173,147,245,13,179,49,110,199,251,157,
214,178,30,219,43,89,207,230,106,242,188,92,223,48,123,206,
100,77,190,47,250,242,172,10,147,169,205,170,48,153,195,167,
124,163,180,234,188,54,11,191,78,140,206,47,110,215,100,93,
191,100,93,195,228,251,218,232,13,179,49,110,219,235,140,206,
100,109,191,54,204,158,47,122,163,182,156,222,38,255,150,182,
252,150,100,61,167,51,121,162,54,206,222,53,109,146,179,141,
207,54,109,226,179,109,227,37,106,163,55,74,207,168,141,222,
54,109,227,179,141,222,40,141,147,53,154,166,53,89,215,182,
89,163,55,28,219,54,204,190,232,77,214,233,77,214,105,77,
178,234,122,163,179,205,190,114,60,175,108,108,227,165,141,151,
206,41,223,232,41,223,48,254,222,177,131,206,47,110,219,120,
89,147,117,109,163,55,74,211,49,74,211,44,140,151,54,94,
218,248,108,154,228,60,215,242,110,226,245,203,163,52,74,199,
228,60,215,242,142,210,180,205,194,54,110,154,54,11,195,177,
58,7,194,224,216,248,124,202,183,141,151,232,41,223,171,45,
191,120,249,146,117,13,227,239,109,227,115,236,160,243,139,219,
54,122,163,52,29,163,52,109,227,179,205,194,120,57,235,74,
93,147,245,234,214,178,30,235,100,109,247,47,171,222,100,173,
162,55,94,214,174,73,214,114,140,158,236,203,159,242,125,163,
111,141,154,105,189,162,53,74,164,114,141,222,164,205,195,57,
107,186,228,60,215,242,126,175,172,233,218,44,28,219,179,75,
206,54,11,203,117,204,190,39,10,163,118,121,179,48,106,151,
100,125,198,183,140,146,115,41,223,38,91,167,183,60,167,114,
237,218,228,92,179,48,90,147,39,202,146,177,250,162,167,172,
199,47,154,222,40,125,215,44,25,171,47,74,215,172,186,222,
40,125,202,55,10,179,49,110,207,47,110,219,229,93,179,55,
11,163,51,218,179,56,108,155,53,191,154,252,93,203,174,206,
238,183,188,162,228,249,162,233,77,214,181,172,223,186,188,162,
228,89,179,234,122,147,117,45,235,184,82,215,17,89,147,38,
126,163,117,93,214,38,143,230,168,201,214,38,110,242,39,89,
215,229,75,154,43,89,167,172,189,222,181,90,147,57,186,146,
245,139,175,100,93,151,175,251,154,114,29,163,117,45,207,119,
205,194,164,89,191,184,172,202,241,156,206,100,93,203,250,41,
235,49,89,215,178,190,146,245,44,203,241,139,166,119,205,170,
235,253,226,182,205,226,179,205,174,175,28,227,51,89,215,178,
110,215,166,92,199,104,93,203,51,27,171,119,205,226,182,89,
223,167,124,179,239,137,214,108,138,147,117,13,191,58,25,171,
47,154,43,117,189,144,117,222,144,246,74,198,106,125,215,232,
108,179,175,28,187,228,60,147,177,124,175,108,172,230,100,61,
175,44,91,203,243,45,215,171,108,179,42,76,226,165,141,222,
49,74,211,57,89,219,248,108,163,119,140,210,244,189,162,55,
89,179,100,172,190,232,139,166,119,205,170,235,109,242,39,105,
175,40,154,163,104,73,214,40,253,190,236,92,151,100,125,167,
245,123,215,108,108,227,101,30,219,248,44,207,233,92,203,115,
125,215,172,109,214,120,25,59,232,28,59,185,141,207,49,218,
179,106,79,170,186,201,214,38,122,150,100,173,162,52,139,214,
115,90,235,242,156,206,53,74,222,171,109,214,187,73,206,108,
109,226,243,126,222,53,155,214,171,82,215,100,93,179,175,82,
215,100,93,195,228,188,199,172,45,159,242,61,167,47,110,223,
44,140,214,74,93,147,117,109,155,245,110,211,38,62,227,243,
139,219,119,205,230,40,170,163,167,138,242,164,137,223,40,111,
178,181,201,155,60,26,167,53,107,242,242,156,218,102,141,155,
60,252,246,164,137,223,168,73,214,114,204,159,242,141,162,119,
157,222,100,90,175,38,223,179,106,77,214,181,60,167,182,89,
235,109,220,2,
};
static const uint16_t sfx_groups[]={
0,29,65,101,134,178,218,291,355,385,420,474,545,626,697,738,
765,821,864,918,942,983,1024,1075,1108,1139,1184,1209,1236,1266,1316,1377,
1437,1506,1557,1638,1670,1702,1782,1828,1890,1958,2031,2105,2157,2218,2256,2303,
2342,2380,2430,2459,2484,2533,2599,2646,2708,2754,2780,2840,2888,2928,2960,2982,
3030,3065,3099,3142,3203,3247,3269,3316,3343,3370,3397,3435,3451,3477,3494,3508,
3533,3552,3581,3620,3647,3673,3704,3754,3792,3815,3830,3843,3858,3874,3893,3915,
3935,3956,3982,4012,4036,4065,4100,4120,4145,4165,4189,4216,4260,4294,4320,4350,
4375,4407,4444,4496,4520,4557,4576,4595,4617,4638,4673,4702,4729,4773,4801,4822,
4839,4863,4884,4901,4923,4937,4958,4987,5024,5048,5081,5127,5157,5179,5208,5231,
5263,5286,5310,5337,5363,5388,5413,5431,5454,5479,5502,5557,5597,5623,5651,5674,
5704,5732,5789,5814,5840,5856,5882,5912,5934,5974,5995,6020,6043,6085,6106,6127,
6150,6176,6196,6215,6234,6266,6282,6300,6322,6350,6380,6402,6419,6450,6484,6509,
6536,6561,6587,6611,6638,6658,6682,6710,6733,6756,6780,6800,6821,6853,6878,6904,
6940,6967,6989,7006,7030,7054,7077,7100,7124,7200,7235,7260,7288,7317,7339,7364,
7383,7407,7437,7452,7492,7508,7532,7552,7579,7613,7635,7656,7692,7707,7734,7754,
7778,7806,7838,7866,7888,7922,7953,7995,8037,8066,8092,8135,8167,8194,8231,8260,
8302,8329,8356,8387,8409,8434,8461,8494,8515,8542,
};
static const unsigned char decode[]={
48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,
71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,
87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,
109,110,111,112,113,114,115,116,117,118,119,120,121,122,0,0,
};
static const uint16_t refs[]={
32768,32771,32773,8,32779,14,17,32789,24,27,30,33,36,40,32811,46,
50,32821,32824,59,62,65,68,71,74,77,80,84,88,74,91,94,
32865,100,103,106,109,112,32883,118,121,124,127,130,109,133,136,139,
142,145,148,151,154,157,160,163,166,169,172,175,178,181,184,188,
191,106,194,197,200,203,206,209,212,215,218,221,224,227,231,234,
237,240,242,245,248,251,255,258,261,166,255,264,267,270,212,273,
276,279,282,285,288,291,294,297,300,303,306,309,312,315,318,321,
324,327,330,333,264,336,340,343,33114,33117,352,33123,358,361,364,33136,
371,374,377,380,383,386,390,393,396,399,402,405,408,33179,414,417,
420,423,427,430,433,437,440,440,443,33214,448,451,454,457,460,463,
466,469,473,476,480,483,486,489,492,495,498,501,505,508,511,514,
516,519,522,525,528,522,531,91,534,537,540,543,33314,33317,552,555,
558,33329,558,564,567,282,570,573,576,579,582,585,588,592,595,598,
601,33372,607,610,613,617,621,625,628,631,634,637,640,643,646,650,
654,658,33429,663,666,669,672,675,678,681,684,687,690,693,696,699,
702,705,708,711,714,717,720,723,726,729,732,735,738,741,744,747,
750,753,756,267,270,759,762,765,768,771,774,777,781,784,787,790,
793,796,273,276,279,799,803,806,672,809,812,815,818,821,824,827,
830,834,837,827,841,844,847,850,853,856,859,859,859,859,505,815,
862,864,868,871,874,877,880,883,886,889,892,895,900,903,906,909,
914,919,922,927,930,935,940,943,948,951,954,957,960,965,970,973,
978,983,986,991,994,997,1000,1005,1008,1013,1016,1021,1024,1029,1032,1035,
1040,1043,1048,1053,1056,1059,1062,1065,1068,1071,33843,1078,1081,33852,33855,1090,
1093,1096,33868,1103,1106,1109,1112,1116,1119,1122,1125,33897,33900,1135,33906,1141,
1144,1147,1150,1153,1156,1159,1163,1166,1169,519,1172,1175,1178,1181,1184,1187,
1190,1193,157,1196,1199,1203,33974,1208,1212,1215,1219,33990,1225,1228,1231,1234,
1237,1240,1243,1246,1249,1252,1255,1246,1258,1261,1264,1267,1270,1273,1276,1279,
1282,1285,1288,1291,1294,1297,1300,1303,1306,1309,1312,1315,1318,1321,1324,282,
1327,1330,1333,1336,1339,1342,1345,1348,1351,1354,1357,1360,1363,1366,1369,1372,
297,690,1264,1376,1379,1382,1385,1389,1392,1395,1398,1401,1404,1407,1410,1413,
1417,1420,1420,1423,1426,1429,1432,1435,1249,1438,1441,1444,1447,1441,34218,1453,
1456,1459,1462,1464,1467,1470,1473,1476,1480,1483,1486,1491,1494,1497,1500,1503,
1506,1510,1513,1517,34288,1523,1526,1529,1532,34303,1538,1541,1544,34316,1551,1554,
1556,1559,1562,1565,1568,1571,1574,1376,1578,1581,1584,1587,1590,1593,288,291,
1596,1599,1602,1605,1608,1611,1615,34386,1621,1624,1627,1630,1633,1636,1639,1639,
1642,1645,1647,1650,1653,1656,1660,1664,1668,1671,1674,1677,1681,1685,1689,1693,
1696,1700,1704,1707,1710,34481,1716,1719,1722,1726,1730,1734,1737,1740,1743,1746,
1749,859,1752,1755,1758,1761,34533,1768,1771,1774,1779,34550,32999,1785,34556,40,
1791,34563,1798,1798,1801,1804,1807,32771,1810,1813,1816,1819,1822,1825,1828,1825,
1831,1834,1837,1840,1843,1846,1849,1852,1855,1858,1861,1864,1867,43,1870,1873,
1876,1503,1880,1883,1886,1889,1892,1503,1886,34662,1897,1901,1503,191,34671,34674,
178,1909,1912,1915,1918,1921,1924,1927,1930,1933,1933,1559,1936,1915,1939,1942,
71,71,1945,1918,74,1948,1951,1954,1957,576,1961,1565,1964,1967,1970,1973,
1976,1979,1982,1985,1636,1674,1988,1991,430,1994,1997,2000,2003,2006,2009,2012,
2015,2018,2021,2025,2030,2033,1590,1590,2037,2040,2043,2046,2049,2052,2055,2058,
2061,2064,2067,2070,2073,2076,2079,2082,2085,2088,2091,2094,2097,2100,2103,2106,
2109,2112,528,2115,2118,2121,2124,2127,2130,2133,2136,2139,2142,2145,2148,2151,
2154,2157,2160,2163,2166,1921,88,34937,2172,2176,1924,1927,2179,2181,2184,2187,
2187,91,2190,534,534,2193,2196,2199,2202,2205,2208,2211,2214,2220,511,2223,
2226,34997,2232,2235,2238,2241,32895,2244,35015,130,2250,2254,2257,2257,2260,2263,
2266,2269,2272,2275,2278,1222,2281,2284,2287,2290,2272,2293,2296,2299,2302,2302,
2305,50,50,2307,2309,2311,1382,2311,172,1500,2314,169,2317,175,32865,2321,
2324,2327,2330,2334,2337,2340,2343,2346,2349,2352,2355,2358,2361,2364,2367,2370,
2373,2376,2379,2382,2385,2391,2394,2355,2358,2397,2400,35171,2361,2391,2397,2400,
148,2406,2409,264,2412,2415,2418,297,2421,723,2424,237,2427,2430,248,206,
2433,2436,35207,2442,2445,2448,2451,708,1282,245,245,2455,2455,255,2458,2461,
2464,35232,2467,2467,2470,2473,2476,2479,2481,234,261,2485,2488,2491,2494,65,
297,2433,708,1282,1219,2497,2500,2503,2507,2510,2513,2516,2519,1997,303,1255,
2522,2525,2528,2436,2485,35299,2534,2537,2540,35311,2546,2549,2552,417,2555,2558,
2562,35333,2568,2571,2574,2577,2580,2583,2586,2589,2592,2592,2592,2595,2598,2601,
2604,2607,2610,2613,2617,2620,2623,2626,2626,2629,2540,2546,396,2568,2583,2632,
2634,163,2637,2640,2643,2646,2649,261,396,2652,35423,35426,2661,2664,414,402,
417,2555,2666,2669,2672,2676,2680,2684,2688,2692,2695,2698,2702,2705,2708,437,
2712,2715,2718,35489,2724,35495,2730,2733,2736,2739,2742,35513,2748,2751,2754,2757,
2760,2763,2766,2769,2772,486,2776,2779,2782,2458,2785,2788,2791,2794,2797,480,
483,480,486,495,495,2800,2803,2806,2809,2812,2818,2821,505,473,2825,2828,
492,2831,2834,2837,2840,2843,2843,2846,2846,2840,2849,2852,240,2856,498,2859,
2862,33214,2865,2868,2871,2874,2877,2785,2880,2871,483,2776,492,498,2883,2883,
270,1653,2721,522,2889,717,2892,2895,2898,2901,2904,2904,2907,2910,2913,2917,
2920,2923,2926,2929,2932,2935,2939,2942,2898,2946,2949,2421,35720,579,35723,2958,
2961,35732,270,2967,35739,567,2974,2977,2980,2983,2986,2989,558,595,558,2992,
2995,2998,371,3001,3004,3007,2992,573,3010,1758,3010,3013,3016,3019,3022,3025,
3029,3016,35800,3035,371,3039,3042,3045,3048,371,582,3051,3054,35825,3060,3063,
3066,3070,3073,3077,3081,3084,3087,3090,3093,3096,3099,3103,3106,3109,3112,3116,
784,267,3120,3123,762,3126,3129,3132,3135,672,3138,687,3141,687,3144,35915,
690,693,3150,3153,2929,3156,3159,3162,3165,3168,3171,3174,3177,3183,3186,3189,
3191,3193,3196,3199,3202,3205,699,3189,3208,3211,1116,1942,3214,3217,3220,3223,
690,3165,315,753,3226,717,696,1252,2895,3229,759,3223,762,771,771,3232,
3235,3238,3241,3244,3250,3144,3253,759,3126,765,774,3256,714,3259,765,3263,
315,753,3266,3269,3272,815,3226,2473,3275,3278,3281,3284,3284,3287,3290,3290,
3293,3293,3287,3296,3299,3302,702,790,793,3305,796,3156,3308,3311,3314,3318,
3321,3324,1554,3327,3327,1991,3330,3332,696,2497,1252,3335,3338,3341,3344,3347,
809,774,3351,3354,3191,1119,3357,3360,33429,3363,3366,3253,3229,3369,3372,3375,
3378,3381,738,2000,3384,3387,3390,3390,3396,36167,3402,3405,3405,1294,1294,333,
726,1593,3408,3411,3414,3417,1831,3420,3424,36195,1642,1901,3430,32898,3433,2127,
2488,3436,3439,2907,834,3442,3445,834,3449,1771,3453,3456,3456,3459,3464,914,
3469,3472,3475,3480,960,3485,3488,3491,221,3494,3497,1065,3502,3507,3512,1065,
3515,3515,874,33639,930,935,3518,3521,3524,1062,3527,3532,3535,3538,892,3541,
3544,1599,1599,3547,880,3552,895,900,900,3555,909,906,906,909,922,922,
927,903,903,3472,3559,3562,1249,3565,3568,1249,3571,3469,3574,3579,3582,954,
3579,3559,954,3574,965,965,951,970,951,940,948,1068,3585,36357,889,3592,
3597,889,3602,3605,994,994,3608,3611,886,886,3614,3619,3624,983,991,986,
983,986,3485,3627,3630,3635,3627,997,1005,1032,1040,1035,3640,1068,886,1056,
1059,1059,1068,886,1013,1021,3644,3647,1029,1024,1029,3647,1032,1035,3652,3655,
1053,1048,1053,3655,919,36428,957,940,948,997,1005,3663,3666,3668,3671,3674,
3677,3680,3685,3688,3693,3697,3700,3703,3708,3712,3717,3720,3725,3730,3733,1596,
1596,3736,2281,36507,2284,2287,36510,3745,2290,3748,3751,136,3754,3757,3760,3763,
3767,36538,3773,3776,1106,169,2275,3779,3782,1141,3785,3788,3791,3794,3797,139,
3800,3804,3807,142,3810,2278,3813,3816,3816,36587,36590,3825,3828,3831,3834,3816,
36605,3840,36611,145,3846,36617,3852,294,36623,294,3858,3861,1153,3864,3867,3869,
3871,1590,3874,3877,3881,3884,827,3887,3890,2712,3893,2898,3896,2898,3899,3901,
2130,3904,2491,3907,3910,33937,3913,3916,1169,3919,3922,36694,1178,3929,3932,1184,
1181,1178,3932,1184,1181,3935,3938,3941,1187,3944,1172,3938,3935,3941,1193,3947,
3950,3953,1196,1196,1187,3956,3959,3963,3966,3969,2974,3973,3977,3980,525,3984,
3987,2634,33974,1333,282,3989,2424,3992,3995,4000,1389,4003,1261,4006,4009,1261,
36780,1264,4015,1267,4018,4021,4024,2932,3308,4027,4030,4033,4036,4039,4042,1212,
1988,4045,4048,4050,4052,4055,4058,4061,4064,1273,4048,4067,4070,4073,151,151,
4076,1246,1336,1246,1327,4079,33990,4082,1288,4085,324,1321,4089,4092,4095,1264,
4033,324,1321,1270,399,4098,4036,4101,4104,2643,1270,399,4107,4110,4110,4113,
4116,4119,1276,4122,4125,4129,4132,4135,4137,4140,4098,4143,4146,1339,4050,154,
154,4101,4150,4153,1306,2003,4156,4159,4162,4165,3357,1426,4168,4171,4174,1432,
1429,4177,4180,4183,4186,4189,4192,1435,4195,4198,2494,4201,4204,2917,806,806,
36975,4210,4212,59,59,4215,4218,2769,4222,4225,4228,1642,294,36999,4234,4237,
4237,1494,4240,1497,1497,4243,4246,4249,4252,4255,4258,4261,690,59,4264,4267,
1642,4270,4273,4276,4279,4285,4288,4290,4293,4296,4300,4300,294,1395,4303,1410,
4309,1398,1401,1398,1401,1404,1407,1404,1407,1392,1392,430,430,1264,4315,59,
4270,1417,4319,1976,2629,3884,3399,4322,4325,4328,1423,4331,4334,4337,4340,4343,
4346,4322,1423,4325,4340,4337,4349,4352,4355,1426,4171,1432,1429,4186,4183,4189,
1435,1438,4358,1444,37129,37132,37135,4370,4373,4376,1447,4379,4382,4385,4388,4391,
4394,4397,4400,1444,1447,4370,4397,4394,4403,4406,4409,4412,2920,803,803,4415,
37186,4421,4424,1147,4427,4430,4433,1510,4436,4439,1480,1480,4443,4446,4446,1503,
1494,1491,1503,1494,37217,242,37220,2133,4455,4458,2977,3552,330,4461,4464,4467,
4471,4212,4474,1453,4477,2519,3381,738,4480,4153,1306,4483,4480,4486,4489,4492,
4495,4498,4501,4505,4508,4511,1954,675,1231,288,4514,37285,1376,4520,4523,37294,
4529,1581,4532,1587,4535,4538,37310,747,1315,4545,4548,4548,4551,4554,4557,33023,
4560,4563,1376,1584,747,1315,1568,4567,1602,4567,4570,4573,4573,4576,4579,4582,
4585,4589,4592,4477,1994,4570,37363,4598,291,4601,4604,285,4607,2629,3090,2592,
3884,3893,1196,1584,4095,4237,4610,4616,4622,4628,4446,732,1300,4634,1291,3810,
4637,4640,4643,1645,1645,4646,732,1024,1048,4650,1196,1300,4654,4616,4610,4628,
4622,4658,4661,4664,1810,4667,4670,4673,4677,4670,1650,1650,4681,576,1961,1565,
1979,4685,276,793,4689,273,790,3305,4692,1964,4695,1967,1970,279,796,4699,
1973,1985,1982,1636,1674,37471,4706,4709,4712,37483,4718,4722,4725,4729,4733,37504,
4739,4742,4745,4748,1755,4751,4754,4758,4761,4764,4768,4772,4775,
};
static const unsigned char values[]={
198,1,0,38,0,193,1,0,130,2,0,194,1,0,144,8,
0,132,170,7,0,192,1,0,145,7,0,128,2,0,211,84,
0,132,2,0,184,170,7,0,225,64,0,197,1,0,156,169,
7,0,212,68,0,195,1,0,196,1,0,150,68,0,231,85,
0,134,70,0,145,8,0,181,68,0,172,66,0,146,7,0,
133,170,7,0,185,170,7,0,216,5,0,206,68,0,167,8,
0,169,1,0,134,2,0,210,69,0,197,66,0,173,66,0,
140,2,0,199,1,0,136,2,0,176,68,0,138,2,0,184,
1,0,183,1,0,167,7,0,153,69,0,150,69,0,149,69,
0,151,69,0,178,68,0,157,64,0,153,64,0,183,68,0,
244,84,0,225,68,0,175,68,0,174,68,0,130,66,0,144,
68,0,179,68,0,175,84,0,158,169,7,0,211,69,0,205,
68,0,145,82,0,130,8,0,133,8,0,143,8,0,161,64,
0,161,67,0,228,85,0,142,2,0,148,8,0,135,68,0,
148,7,0,135,170,7,0,180,1,0,217,5,0,221,5,0,
96,0,220,5,0,196,69,0,198,66,0,187,170,7,0,168,
1,0,220,65,0,208,68,0,211,67,0,208,67,0,212,67,
0,248,79,0,250,79,0,249,79,0,210,67,0,168,69,0,
209,67,0,213,67,0,165,68,0,147,67,0,147,82,0,245,
67,0,145,6,0,208,82,0,222,82,0,189,67,0,214,82,
0,223,82,0,193,67,0,215,82,0,164,69,0,167,67,0,
159,169,7,0,144,2,0,202,2,0,208,1,0,201,1,0,
154,2,0,202,1,0,173,8,0,150,2,0,136,170,7,0,
200,1,0,136,68,0,146,2,0,251,75,0,171,75,0,152,
2,0,188,170,7,0,149,7,0,245,84,0,194,68,0,204,
67,0,176,66,0,243,84,0,151,7,0,203,1,0,131,68,
0,199,66,0,164,8,0,137,170,7,0,252,75,0,170,75,
0,189,170,7,0,128,68,0,177,66,0,131,8,0,62,0,
147,7,0,220,7,0,158,2,0,162,2,0,156,2,0,147,
8,0,160,2,0,138,170,7,0,217,69,0,190,170,7,0,
229,68,0,219,69,0,231,68,0,162,85,0,247,68,0,254,
84,0,243,68,0,162,169,7,0,235,68,0,170,8,0,199,
5,0,94,0,164,2,0,140,66,0,139,66,0,141,66,0,
128,74,0,166,2,0,207,68,0,149,8,0,178,2,0,129,
8,0,205,1,0,206,1,0,152,8,0,176,2,0,145,66,
0,204,1,0,170,2,0,200,66,0,172,68,0,171,68,0,
194,69,0,227,64,0,226,64,0,174,2,0,192,170,7,0,
153,7,0,144,66,0,168,2,0,134,8,0,207,1,0,180,
2,0,153,8,0,141,170,7,0,193,170,7,0,165,169,7,
0,136,8,0,132,8,0,165,8,0,140,8,0,154,7,0,
182,2,0,154,8,0,142,170,7,0,194,170,7,0,166,169,
7,0,137,8,0,60,0,185,2,0,155,7,0,234,79,0,
146,66,0,158,67,0,189,2,0,187,2,0,155,8,0,232,
79,0,144,67,0,228,67,0,198,67,0,136,70,0,230,79,
0,225,82,0,195,67,0,217,82,0,138,70,0,148,67,0,
206,82,0,163,69,0,164,67,0,218,82,0,178,69,0,207,
83,0,180,69,0,209,82,0,224,82,0,191,67,0,216,82,
0,188,67,0,210,82,0,218,69,0,230,68,0,246,68,0,
161,85,0,253,84,0,242,68,0,143,170,7,0,216,69,0,
218,67,0,191,2,0,245,79,0,247,79,0,246,79,0,195,
170,7,0,153,67,0,152,67,0,176,67,0,193,2,0,234,
68,0,133,82,0,156,8,0,223,64,0,179,66,0,144,170,
7,0,147,68,0,196,170,7,0,156,7,0,138,8,0,195,
2,0,199,2,0,197,2,0,157,8,0,139,64,0,10,0,
145,170,7,0,224,64,0,160,1,0,149,66,0,236,85,0,
226,68,0,237,68,0,166,68,0,137,68,0,224,68,0,194,
68,184,6,0,132,68,0,239,68,0,241,68,0,231,68,184,
6,0,235,68,184,6,0,249,68,0,254,84,184,6,0,245,
68,0,206,68,184,6,0,207,68,184,6,0,234,69,0,207,
83,184,6,0,236,69,0,238,68,0,240,68,0,248,68,0,
234,68,184,6,0,253,84,184,6,0,244,68,0,162,85,184,
6,0,161,85,184,6,0,128,69,0,175,85,184,6,0,224,
69,0,140,68,0,235,69,0,208,83,184,6,0,237,69,0,
143,69,184,6,0,226,69,0,144,69,184,6,0,227,69,0,
130,69,210,65,0,136,69,0,129,69,0,176,85,184,6,0,
225,69,0,255,68,184,6,0,131,69,210,65,0,137,69,0,
193,68,0,196,68,0,199,68,0,201,68,0,164,68,0,169,
169,7,0,209,1,0,157,7,0,210,2,0,211,1,0,212,
1,0,158,8,0,208,2,0,146,170,7,0,210,1,0,204,
2,0,169,7,0,159,7,0,198,170,7,0,156,64,0,152,
64,0,212,84,0,170,169,7,0,216,1,0,213,1,0,183,
84,0,214,1,0,190,64,0,222,71,0,180,71,0,220,71,
0,130,68,0,159,8,0,147,170,7,0,166,7,0,160,7,
0,177,1,0,153,66,0,187,85,0,250,68,0,175,85,0,
252,68,0,254,68,0,179,64,0,143,68,0,157,68,0,171,
169,7,0,168,7,0,34,0,148,170,7,0,154,66,0,172,
169,7,0,144,82,0,174,1,0,212,2,0,235,79,0,160,
67,0,150,82,0,216,2,0,214,2,0,160,8,0,156,66,
0,139,68,0,203,67,0,239,82,0,161,7,0,233,79,0,
146,67,0,229,67,0,196,67,0,137,70,0,231,79,0,221,
82,0,194,67,0,213,82,0,139,70,0,162,69,0,166,67,
0,219,82,0,179,69,0,208,83,0,181,69,0,207,82,0,
220,82,0,190,67,0,212,82,0,192,67,0,211,82,0,157,
66,0,240,82,0,219,67,0,155,66,0,177,67,0,244,83,
0,169,8,0,168,8,0,172,8,0,218,2,0,188,85,0,
224,2,0,222,2,0,220,2,0,161,8,0,150,170,7,0,
145,67,0,163,7,0,152,68,0,202,170,7,0,154,68,0,
161,75,0,147,69,0,143,69,0,145,69,0,144,69,0,146,
69,0,148,69,0,174,169,7,0,198,69,0,208,69,0,134,
69,0,251,68,0,176,85,0,253,68,0,255,68,0,145,68,
0,209,69,0,131,69,0,135,69,0,222,1,0,162,66,0,
139,8,0,166,8,0,9,0,164,7,0,228,2,0,226,2,
0,162,8,0,151,170,7,0,180,68,0,152,7,0,223,64,
138,64,0,137,64,0,188,68,0,195,68,0,197,68,0,200,
68,0,203,170,7,0,219,65,0,175,169,7,0,230,2,0,
218,1,0,159,67,0,201,82,0,142,8,0,236,2,0,219,
1,0,163,8,0,240,2,0,152,170,7,0,217,1,0,234,
2,0,95,0,223,71,0,181,71,0,221,71,0,195,69,0,
142,69,0,242,2,0,204,170,7,0,146,82,0,197,67,0,
149,67,0,238,82,0,165,69,0,165,67,0,150,67,0,151,
67,0,210,7,0,165,7,0,238,2,0,176,169,7,0,232,
2,0,220,1,0,171,69,0,235,85,0,146,8,0,169,69,
0,230,85,0,193,69,0,150,64,0,163,68,0,124,0,216,
78,0,192,68,0,138,64,0,153,170,7,0,205,170,7,0,
177,169,7,0,170,69,0,244,2,0,192,69,0,154,170,7,
0,206,170,7,0,178,169,7,0,155,170,7,0,158,7,0,
207,170,7,0,179,169,7,0,175,8,0,135,8,0,174,8,
0,221,1,0,246,2,0,171,8,0,156,170,7,0,208,170,
7,0,180,169,7,0,248,2,0,150,8,0,249,2,0,253,
2,0,151,8,0,251,2,0,150,7,0,168,66,0,164,66,
0,181,169,7,0,225,1,0,131,2,0,190,68,0,190,68,
179,6,0,191,68,0,226,1,0,176,8,0,230,1,0,158,
170,7,0,224,1,0,181,66,0,177,7,0,129,2,0,191,
84,0,167,68,0,213,84,0,220,84,0,216,84,0,218,84,
0,160,68,0,164,83,0,161,68,0,168,83,0,169,83,0,
170,83,0,171,83,0,172,83,0,173,83,0,174,83,0,175,
83,0,159,68,0,190,69,0,157,83,0,162,68,0,252,70,
0,133,2,0,210,170,7,0,240,84,0,239,84,0,202,68,
0,203,68,0,39,0,229,1,0,182,169,7,0,42,0,227,
1,0,228,1,0,145,84,0,237,85,0,204,68,0,246,7,
0,181,64,0,189,68,0,205,69,0,189,69,0,133,70,0,
182,71,0,177,8,0,158,64,0,176,83,0,178,7,0,182,
66,0,236,68,0,159,170,7,0,239,75,0,128,84,0,129,
84,0,130,84,0,134,84,0,133,76,0,189,75,0,179,75,
0,132,84,0,141,82,0,235,83,0,180,75,0,190,75,0,
194,75,0,184,75,0,163,72,0,146,75,0,145,75,0,147,
75,0,136,75,0,61,229,65,0,225,68,229,65,0,144,70,
0,211,170,7,0,200,69,0,215,74,0,212,74,0,214,74,
0,211,74,0,208,74,0,230,74,0,233,74,0,228,74,0,
231,74,0,221,74,0,218,74,0,220,74,0,217,74,0,209,
74,0,236,74,0,227,74,0,224,74,0,235,74,0,226,74,
0,223,74,0,201,83,0,213,74,0,210,74,0,144,74,0,
140,74,0,229,74,0,232,74,0,172,74,0,180,74,0,159,
69,0,158,69,0,160,69,0,219,74,0,216,74,0,152,74,
0,148,74,0,130,74,0,234,74,0,225,74,0,222,74,0,
188,74,0,164,74,0,156,74,0,166,1,0,183,169,7,0,
207,64,0,92,0,197,83,0,200,79,0,162,64,0,174,85,
0,135,2,0,169,68,0,196,84,0,201,84,0,203,84,0,
199,84,0,192,84,0,169,68,128,252,3,0,193,64,0,205,
84,0,141,2,0,231,1,0,137,2,0,204,84,0,208,84,
0,139,2,0,178,83,0,162,1,0,160,170,7,0,199,8,
0,147,78,0,199,7,0,203,75,0,195,83,0,198,5,0,
215,68,0,186,67,0,187,67,0,200,73,0,155,69,0,154,
69,0,157,69,0,144,84,0,239,85,0,194,83,0,227,76,
0,58,0,44,0,64,0,129,68,0,237,84,0,212,170,7,
0,151,66,0,181,67,0,151,78,0,184,169,7,0,207,85,
0,209,85,0,208,85,0,210,85,0,239,69,0,184,82,0,
181,82,0,222,69,0,223,69,0,182,67,0,189,82,0,170,
68,0,200,84,0,198,84,0,202,84,0,141,69,0,197,84,
0,170,68,128,252,3,0,183,67,0,188,82,0,206,69,0,
207,69,0,164,1,0,177,68,0,173,70,0,229,82,0,160,
64,0,184,66,0,144,64,0,143,82,0,143,2,0,180,8,
0,202,67,0,247,84,0,176,1,0,180,7,0,177,83,0,
255,82,0,161,170,7,0,230,76,0,221,7,0,242,69,0,
247,1,0,199,69,0,210,8,0,158,70,0,141,70,0,36,
0,213,170,7,0,209,68,0,184,68,0,148,68,0,161,69,
0,159,70,0,140,70,0,185,169,7,0,213,8,0,246,83,
0,145,2,0,241,69,0,191,75,0,166,83,0,223,8,0,
255,79,0,233,1,0,238,84,0,155,2,0,214,68,0,234,
1,0,213,68,0,205,8,0,151,2,0,210,68,0,162,170,
7,0,154,85,0,232,1,0,150,85,0,152,85,0,153,85,
0,231,71,0,147,66,0,149,85,0,151,85,0,147,2,0,
133,68,0,131,64,0,132,64,0,133,64,0,203,2,0,130,
64,0,153,2,0,214,170,7,0,213,69,0,227,83,0,241,
84,0,181,7,0,245,7,0,61,0,223,68,0,248,84,0,
229,83,0,211,68,0,241,82,0,175,66,0,183,7,0,240,
1,0,235,1,0,172,65,0,33,0,196,8,0,192,76,0,
131,246,3,0,128,246,3,0,132,246,3,0,163,170,7,0,
129,246,3,0,102,106,0,237,76,0,130,246,3,0,177,75,
0,146,3,0,215,170,7,0,212,69,0,217,85,0,141,84,
0,189,1,0,211,66,0,188,1,0,213,66,0,217,66,0,
219,66,0,212,66,0,214,66,0,190,1,0,215,66,0,220,
66,0,216,66,0,218,66,0,221,66,0,222,66,0,196,64,
0,162,70,0,187,169,7,0,140,85,0,245,3,0,179,7,
0,134,85,0,159,2,0,157,2,0,179,8,0,161,2,0,
169,85,0,128,85,0,130,85,0,132,85,0,219,69,128,252,
3,0,148,85,0,164,170,7,0,183,66,0,211,8,0,146,
85,0,165,85,0,164,85,0,233,68,0,138,85,0,136,85,
0,231,69,0,216,170,7,0,138,66,0,142,85,0,144,85,
0,167,85,0,250,84,0,215,69,0,149,83,0,252,84,0,
248,82,0,233,68,128,252,3,0,202,8,0,200,82,0,173,
67,0,143,66,0,165,2,0,229,76,0,166,64,0,185,69,
0,165,170,7,0,165,82,0,166,82,0,255,67,0,187,68,
0,169,67,0,170,67,0,217,170,7,0,149,64,0,189,169,
7,0,167,2,0,195,64,0,237,1,0,238,1,0,184,8,
0,181,8,0,161,1,0,166,170,7,0,236,1,0,140,84,
0,173,68,0,220,83,0,169,66,0,179,2,0,171,2,0,
177,2,0,183,69,0,181,3,0,133,66,0,158,68,0,221,
83,0,186,69,0,151,84,0,188,84,0,209,8,0,175,2,
0,218,170,7,0,185,7,0,191,1,0,190,169,7,0,249,
69,0,245,69,0,244,69,0,243,69,0,169,2,0,214,8,
0,239,1,0,181,2,0,185,8,0,167,170,7,0,183,4,
0,219,170,7,0,191,169,7,0,216,8,0,212,8,0,186,
7,0,240,7,0,183,2,0,186,8,0,168,170,7,0,184,
2,0,197,8,0,220,8,0,220,170,7,0,192,169,7,0,
155,82,0,142,82,0,139,85,0,226,82,0,186,2,0,180,
83,0,187,7,0,145,83,0,133,85,0,171,1,0,159,82,
0,157,82,0,171,67,0,185,82,0,243,82,0,162,67,0,
171,85,0,153,82,0,173,85,0,173,85,128,252,3,0,140,
82,0,242,78,0,123,0,91,0,139,83,0,143,83,0,141,
83,0,190,2,0,188,2,0,187,8,0,182,82,0,231,82,
0,203,82,0,178,67,0,228,68,0,199,67,0,203,69,0,
168,85,0,255,84,0,129,85,0,131,85,0,218,69,128,252,
3,0,147,85,0,214,69,0,252,82,0,169,170,7,0,145,
85,0,234,82,0,132,75,0,217,8,0,235,82,0,250,75,
0,192,2,0,176,71,0,232,68,0,137,85,0,135,85,0,
230,69,0,236,79,0,253,67,0,252,79,0,172,67,0,133,
83,0,221,170,7,0,173,84,0,180,84,0,151,68,0,202,
75,0,40,0,147,83,0,237,82,0,142,64,0,191,69,0,
185,64,0,193,169,7,0,141,85,0,143,85,0,154,64,0,
194,2,0,166,85,0,249,84,0,201,69,0,246,82,0,251,
84,0,150,83,0,195,75,0,202,82,0,230,82,0,232,68,
128,252,3,0,186,68,0,175,1,0,194,76,0,160,78,0,
174,75,0,169,84,0,188,8,0,148,64,0,170,170,7,0,
167,66,0,181,1,0,240,85,0,146,68,0,170,84,0,219,
85,0,167,69,0,222,170,7,0,194,169,7,0,188,7,0,
184,69,0,217,69,184,6,0,235,68,210,65,0,205,67,0,
206,67,0,216,69,184,6,0,234,68,210,65,0,207,67,0,
175,69,0,174,69,0,196,2,0,160,68,210,65,0,240,84,
184,6,0,203,68,184,6,0,201,2,0,238,76,0,195,84,
0,200,2,0,198,2,0,237,84,184,6,0,194,84,0,189,
8,0,147,64,0,215,67,0,164,82,0,208,68,184,6,0,
168,82,0,171,170,7,0,174,67,0,242,85,0,252,69,0,
250,69,0,218,8,0,230,68,184,6,0,154,67,0,165,64,
0,223,170,7,0,172,1,0,249,69,184,6,0,245,69,184,
6,0,247,69,0,246,69,0,254,69,0,253,69,0,253,85,
229,65,0,130,68,184,6,0,148,84,0,155,67,0,179,82,
184,6,0,157,67,184,6,0,195,169,7,0,132,69,0,197,
85,184,6,0,133,69,0,198,85,184,6,0,241,1,0,189,
7,0,35,0,150,66,0,135,64,0,173,69,0,132,82,0,
205,68,210,65,0,172,69,0,229,68,210,65,0,62,210,65,
0,222,83,0,130,82,0,228,68,210,65,0,60,210,65,0,
180,69,210,65,0,131,82,0,181,69,210,65,0,188,68,210,
65,0,214,67,0,163,82,0,167,82,0,243,1,0,244,1,
0,190,8,0,209,2,0,184,84,0,188,83,0,211,2,0,
191,83,0,172,170,7,0,219,5,0,242,1,0,193,83,0,
181,83,0,190,83,0,187,83,0,192,83,0,205,2,0,201,
7,0,191,7,0,182,83,0,224,170,7,0,183,83,0,185,
83,0,168,68,0,221,84,0,180,66,0,170,1,0,186,1,
0,182,69,0,214,84,0,215,84,0,219,84,0,248,1,0,
152,69,0,245,1,0,182,84,0,246,1,0,189,70,0,182,
1,0,243,85,0,253,85,0,191,8,0,37,0,46,0,176,
64,0,177,64,0,173,170,7,0,198,7,0,213,7,0,142,
76,0,192,7,0,214,7,0,142,66,0,43,0,163,84,0,
162,84,0,165,84,0,242,84,0,166,84,0,167,84,0,149,
84,0,225,170,7,0,163,1,0,179,85,0,183,85,0,185,
85,0,181,85,0,232,69,0,178,64,0,174,70,0,146,70,
0,147,70,0,176,69,0,197,169,7,0,200,7,0,136,64,
0,174,170,7,0,226,170,7,0,215,64,0,198,169,7,0,
150,84,0,63,0,156,82,0,228,82,0,189,68,177,6,0,
213,2,0,179,83,0,146,83,0,165,83,0,187,1,0,245,
82,0,160,82,0,179,82,0,158,82,0,197,82,0,244,82,
0,163,67,0,157,67,0,154,82,0,182,68,0,243,78,0,
125,0,93,0,140,83,0,142,83,0,144,83,0,217,2,0,
215,2,0,192,8,0,183,82,0,233,82,0,179,67,0,173,
75,0,253,82,0,175,170,7,0,236,82,0,193,7,0,241,
7,0,201,67,0,204,69,0,218,5,0,143,64,0,177,71,
0,238,85,0,237,79,0,254,67,0,134,83,0,227,170,7,
0,174,84,0,181,84,0,41,0,148,83,0,146,84,0,186,
64,0,199,169,7,0,202,69,0,185,75,0,206,83,0,232,
82,0,158,66,0,219,2,0,180,85,0,184,85,0,225,2,
0,223,2,0,221,2,0,182,85,0,186,85,0,233,69,0,
147,84,0,193,8,0,197,69,0,230,84,0,216,67,0,167,
1,0,59,0,169,82,0,182,78,0,176,170,7,0,239,76,
0,201,8,0,200,8,0,173,1,0,195,7,0,194,7,0,
234,84,0,158,85,0,160,85,0,157,85,0,159,85,0,198,
68,0,164,84,0,242,82,0,179,84,0,228,83,0,163,70,
0,170,85,0,172,85,0,172,85,128,252,3,0,204,8,0,
47,0,196,83,0,191,70,0,228,170,7,0,224,76,0,147,
69,128,252,3,0,148,69,128,252,3,0,200,169,7,0,134,
76,0,130,69,0,197,85,0,189,85,0,195,85,0,193,85,
0,203,85,0,138,69,0,191,85,0,249,82,0,199,85,0,
213,85,0,211,85,0,234,76,0,185,1,0,178,1,0,179,
1,0,198,85,0,190,85,0,216,85,0,196,85,0,201,79,
0,215,85,0,251,82,0,194,85,0,204,85,0,139,69,0,
192,85,0,200,85,0,212,85,0,214,85,0,217,67,0,170,
82,0,223,1,0,150,70,0,196,7,0,229,2,0,227,2,
0,194,8,0,149,70,0,177,170,7,0,184,7,0,209,7,
0,254,1,0,215,1,0,177,84,0,176,84,0,182,70,0,
241,85,0,229,170,7,0,218,85,0,180,64,0,181,75,0,
220,68,0,236,75,0,186,84,0,185,84,0,205,83,0,187,
84,0,226,71,0,201,169,7,0,198,8,0,219,8,0,231,
2,0,227,82,0,250,1,0,222,8,0,237,2,0,251,1,
0,195,8,0,241,2,0,254,82,0,178,170,7,0,249,1,
0,128,75,0,156,70,0,143,70,0,248,75,0,235,2,0,
243,2,0,230,170,7,0,197,7,0,200,67,0,157,70,0,
142,70,0,239,2,0,249,75,0,202,169,7,0,240,69,0,
233,2,0,252,1,0,167,83,0,232,85,0,233,85,0,156,
83,0,138,69,128,252,3,0,203,85,128,252,3,0,139,69,
128,252,3,0,204,85,128,252,3,0,178,8,0,187,69,0,
218,68,0,238,69,0,179,170,7,0,231,170,7,0,203,169,
7,0,154,83,0,245,2,0,223,84,0,217,68,0,152,66,
0,180,170,7,0,232,170,7,0,204,169,7,0,181,170,7,
0,190,7,0,251,69,0,233,170,7,0,205,169,7,0,253,
1,0,207,8,0,247,2,0,203,8,0,165,1,0,182,170,
7,0,215,8,0,234,170,7,0,206,169,7,0,206,8,0,
255,1,0,250,2,0,254,2,0,183,8,0,252,2,0,182,
7,0,183,170,7,0,182,8,0,221,67,0,235,170,7,0,
207,169,7,0,141,64,0,140,64,0,
};
/* Return a value offset and a legacy flag, or -1. */
static int lookup(const unsigned char *s, unsigned n) {
unsigned lo=0,hi=sizeof(refs)/sizeof(refs[0]);
while(lo<hi) {
unsigned mid=(lo+hi)/2;
unsigned char key[32]; unsigned len=0;
unsigned sbit=sfx_groups[mid/8]*6;
for(unsigned k=mid/8*8;k<=mid;k++) {
unsigned pos=k*5;
unsigned pfx=(pos&7)>3 ? (pfx_bits[pos/8]>>(pos&7) | pfx_bits[pos/8+1]<<(8-(pos&7)))&31
: (pfx_bits[pos/8]>>(pos&7))&31;
if(k%8==0) pfx=0;
len=pfx;
unsigned sl=plen[k];
for(unsigned j=0;j<sl;j++) {
unsigned sp=sbit+j*6;
key[len+j]=decode[(sp&7)>2 ? (sfx_bits[sp/8]>>(sp&7) | sfx_bits[sp/8+1]<<(8-(sp&7)))&63
: (sfx_bits[sp/8]>>(sp&7))&63];
}
sbit+=sl*6;
len+=sl;
}
unsigned j=0;
while(j<len && j<n && key[j]==s[j]) j++;
int cmp=(j<len && j<n)?(int)key[j]-(int)s[j]:(int)len-(int)n;
if(cmp<0) lo=mid+1;
else if(cmp>0) hi=mid;
else return refs[mid];
}
return -1;
}
static unsigned utf8(unsigned o,uint32_t c) {
if(c<128) buffer[o++]=c;
else if(c<2048) { buffer[o++]=192|(c>>6); buffer[o++]=128|(c&63); }
else if(c<65536) { buffer[o++]=224|(c>>12); buffer[o++]=128|((c>>6)&63); buffer[o++]=128|(c&63); }
else { buffer[o++]=240|(c>>18); buffer[o++]=128|((c>>12)&63); buffer[o++]=128|((c>>6)&63); buffer[o++]=128|(c&63); }
return o;
}
static const uint16_t c1[]={8364,129,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,141,381,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,157,382,376};
EXPORT uint64_t render(uint32_t len) {
const unsigned char *in=buffer+209744;
if(len>1048576) len=1048576;
unsigned i=0,o=0;
while(i<len) {
if(in[i]!=39;&39;) {
if(len-i>=16) {
v128_t v=wasm_v128_load(in+i);
unsigned mask=wasm_i8x16_bitmask(wasm_i8x16_eq(v,wasm_i8x16_splat(39;&39;)));
if(!mask) { wasm_v128_store(buffer+o,v); i+=16; o+=16; continue; }
unsigned count=__builtin_ctz(mask);
for(unsigned k=0;k<count;k++) buffer[o++]=in[i++];
if(count) continue;
}
buffer[o++]=in[i++]; continue;
}
if(i+1<len && in[i+1]==39;#39;) {
unsigned j=i+2,base=10;
if(j<len && (in[j]|32)==39;x39;) { base=16;j++; }
unsigned start=j; uint32_t c=0;
while(j<len) {
unsigned d=in[j]-39;039;;
if(d>9) { d=(in[j]|32)-39;a39;+10; if(base!=16 || d<10 || d>15) break; }
c=c*base+d; if(c>0x110000) c=0x110000;
j++;
}
if(j!=start) {
if(j<len && in[j]==39;;39;) j++;
if(c>=128 && c<=159) c=c1[c-128];
else if(!c || (c>=0xd800 && c<=0xdfff) || c>0x10ffff) c=0xfffd;
o=utf8(o,c); i=j;continue;
}
} else {
unsigned j=i+1;
while(j<len && j-i<=31) {
unsigned c=in[j];
if(!((c>=39;039; && c<=39;939;) || ((c|32)>=39;a39; && (c|32)<=39;z39;))) break;
j++;
}
int ref=-1; unsigned used=0;
if(j<len && in[j]==39;;39;) { ref=lookup(in+i+1,j-i-1); if(ref>=0) used=j-i+1; }
if(!used) {
unsigned n=j-i-1; if(n>6) n=6;
for(;n>=2;n--) {
ref=lookup(in+i+1,n);
if(ref>=0 && (ref&32768)) { used=n+1;break; }
}
}
if(used) {
const unsigned char *v=values+(ref&32767);
for(;;) {
uint32_t c=0; unsigned s=0,b;
do { b=*v++; c|=(uint32_t)(b&127)<<s; s+=7; } while(b&128);
if(!c) break;
o=utf8(o,c);
}
i+=used;continue;
}
}
buffer[o++]=in[i++];
}
return ((uint64_t)(uint32_t)buffer<<32)|o;
}
Download source MIT licensed — build on it
Run it on the example input with qipdo (Node.js 22 or newer):
printf '%s' 'Fish & chips — café <3 😀 © 2026 ¬it;' | npx qipdo calculated.world components/34a13cdd2d20b4d2140c45460eee2ae0d1f11d9118b141e8eca07dee2d8d98f6.wasm
Further size optimisation of the front-coded C submission fa176a59: the name stream is now bit-packed. Suffix characters (all in [0-9A-Za-z], 62 values) are stored 6 bits each (8,559 chars -> 6,420 bytes) instead of 8 bits with NUL terminators; prefix lengths (0-17) are stored 5 bits each (1,329 bytes) instead of one byte each; per-record suffix lengths are one byte each (2,125 bytes); and one u16 per block of eight records gives the suffix-character offset of the block start (532 bytes). A 64-byte decode table maps 6-bit codes back to characters for the comparison in the binary search, which rebuilds the mid record's name from its block start as before. The LEB128 code-point value pool, u16 refs, 20-page buffer, SIMD fast path and all decode semantics are unchanged. 21,621 bytes, 20 pages, 16 KiB stack.
- Builds on
- Direct derivative of the first submitter's own C submission fa176a59 (itself derived from e9ed850e, authored with OpenAI GPT-6): same scanner, SIMD fast path, LEB128 value pool and 20-page buffer. New here: the 6-bit/5-bit bit-packed name streams with per-record suffix lengths and the decode table.
Try it
Step through this Wasm running on the input above. Focus the debugger, then press Space to run, N to step over or ? for all keys.
To debug it in your terminal with qiptui (Node.js 22 or newer):
First download the Wasm and the example input:
curl -o unescape_html.wasm https://calculated.world/components/34a13cdd2d20b4d2140c45460eee2ae0d1f11d9118b141e8eca07dee2d8d98f6.wasm
printf '%s' 'Fish & chips — café <3 😀 © 2026 ¬it;' > input.txt
Then step through it in the qipdb debugger:
npx qiptui \
-F component=@unescape_html.wasm \
-F 'input=<input.txt' \
qip.dev/tui/qipdb.wasm
The debugger command fetches qipdb from qip.dev and keeps it in memory.
Build details
Compiler, size, memory and checksum
- Submitted
- 4 November 2026 at 03:22 UTC
- Language
- C
- Compiler
-
Zig 0.15.2 (Clang 20.1.2)zig cc -target wasm32-freestanding -Oz -msimd128 -nostdlib -Wl,--no-entry -Wl,--export-memory -Wl,-z,stack-size=16384 -Wl,--initial-memory=1310720 -Wl,--max-memory=1310720 -Wl,--export=input_ptr -Wl,--export=input_utf8_cap -Wl,--export=output_utf8_cap -Wl,--export=render -Wl,--strip-all - Size
- 21.1 KiB, gzip 16.8 KiB
- Download
- ~300 ms on Slow 4G (Lighthouse’s 1.6 Mbps, 150 ms round trips)
- Memory
- 20 pages (1.3 MiB)
- SIMD
- yes
- AI models
- qwen3.8-27b:8bit
Functions, loops, branches and other static counts
- Functions
- 6
- Instructions
- 928
- Loops
- 11
- Conditional branches
- 50
- Indirect calls
- 0
- Memory loads
- 21
- Memory stores
- 11
- SIMD instructions
- 5
- Potentially trapping instructions
- 34
Instruction sites in the binary, not executions, counted by qip.dev’s wasm-counts.