trunk 20080912
[gitenigma.git] / boot / bootmenue / my_fb.cpp
blobaefef1240b8b7d8fb4762e350539bd052cbf9bb7
1 #ifdef HAVE_DREAMBOX_HARDWARE
2 #include "my_fb.h"
4 #define SAA_MODE_RGB 0
5 #define SAA_MODE_FBAS 1
6 #define SAA_MODE_SVIDEO 2
7 #define SAA_MODE_COMPONENT 3
10 inline static unsigned char make8color(unsigned char r, unsigned char g, unsigned char b)
12 return ((((r >> 5) & 7) << 5) | (((g >> 5) & 7) << 2) | ((b >> 6) & 3));
14 inline static unsigned short make15color(unsigned char r, unsigned char g, unsigned char b)
16 return ((((r >> 3) & 31) << 10) | (((g >> 3) & 31) << 5) | ((b >> 3) & 31));
18 inline static unsigned short make16color(unsigned char r, unsigned char g, unsigned char b)
20 return ((((r >> 3) & 31) << 11) | (((g >> 2) & 63) << 5) | ((b >> 3) & 31));
23 void* convertRGB2FB(int fh, unsigned char *rgbbuff, unsigned long count, int bpp, int *cpp)
25 unsigned long i;
26 void *fbbuff = NULL;
27 u_int8_t *c_fbbuff;
28 u_int16_t *s_fbbuff;
29 u_int32_t *i_fbbuff;
31 switch(bpp)
33 case 8:
34 *cpp = 1;
35 c_fbbuff = (unsigned char *) malloc(count * sizeof(unsigned char));
36 for(i = 0; i < count; i++)
37 c_fbbuff[i] = make8color(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]);
38 fbbuff = (void *) c_fbbuff;
39 break;
40 case 15:
41 *cpp = 2;
42 s_fbbuff = (unsigned short *) malloc(count * sizeof(unsigned short));
43 for(i = 0; i < count ; i++)
44 s_fbbuff[i] = make15color(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]);
45 fbbuff = (void *) s_fbbuff;
46 break;
47 case 16:
48 *cpp = 2;
49 s_fbbuff = (unsigned short *) malloc(count * sizeof(unsigned short));
50 for(i = 0; i < count ; i++)
51 s_fbbuff[i] = make16color(rgbbuff[i*3], rgbbuff[i*3+1], rgbbuff[i*3+2]);
52 fbbuff = (void *) s_fbbuff;
53 break;
54 case 24:
55 case 32:
56 *cpp = 4;
57 i_fbbuff = (unsigned int *) malloc(count * sizeof(unsigned int));
58 for(i = 0; i < count ; i++)
59 i_fbbuff[i] = ((rgbbuff[i*3] << 16) & 0xFF0000) | ((rgbbuff[i*3+1] << 8) & 0xFF00) | (rgbbuff[i*3+2] & 0xFF);
60 fbbuff = (void *) i_fbbuff;
61 break;
62 default:
63 fprintf(stderr, "Unsupported video mode! You've got: %dbpp\n", bpp);
64 exit(1);
66 return fbbuff;
69 #ifdef USEFREETYPEFB
70 FT_Error FB_FaceRequester(FTC_FaceID face_id, FT_Library library, FT_Pointer request_data, FT_Face *aface)
72 return ((fbClass*)request_data)->FTC_Face_Requester(face_id, aface);
75 FT_Error fbClass::FTC_Face_Requester(FTC_FaceID face_id, FT_Face* aface)
77 int error;
78 if ((error=FT_New_Face(library, FONT, 0, aface)))
80 printf(" failed: %s", strerror(error));
81 return error;
83 FT_Select_Charmap(*aface, ft_encoding_unicode);
84 return 0;
86 #endif
88 fbClass *fbClass::instance;
90 fbClass *fbClass::getInstance()
92 return instance;
95 fbClass::fbClass()
97 instance=this;
98 int maxbytes=4*1024*1024;
99 available=0;
101 fd=open(FB_DEV, O_RDWR);
102 if (fd<0)
104 perror(FB_DEV);
105 goto nolfb;
107 if (ioctl(fd, FBIOGET_VSCREENINFO, &screeninfo)<0)
109 perror("FBIOGET_VSCREENINFO");
110 goto nolfb;
113 memcpy(&oldscreen, &screeninfo, sizeof(screeninfo));
115 fb_fix_screeninfo fix;
116 if (ioctl(fd, FBIOGET_FSCREENINFO, &fix)<0)
118 perror("[Framebuffer] <FBIOGET_FSCREENINFO>");
119 goto nolfb;
122 available=fix.smem_len;
123 //printf("[Framebuffer] %dk video memory\n", available/1024);
124 lfb=(unsigned char*)mmap(0, available, PROT_WRITE|PROT_READ, MAP_SHARED, fd, 0);
125 if (!lfb)
127 perror("mmap");
128 goto nolfb;
131 #ifdef USEFREETYPEFB
132 FT_Error error;
134 if (error = FT_Init_FreeType(&library))
136 printf("[FONT] <FT_Init_FreeType failed with Errorcode 0x%.2X>", error);
137 munmap(lfb, available);
139 if((error = FTC_Manager_New(library, 10, 20, maxbytes, FB_FaceRequester, this, &manager)))
141 printf("[FONT] <FTC_Manager_New failed with Errorcode 0x%.2X>\n", error);
142 FT_Done_FreeType(library);
143 munmap(lfb, available);
145 if((error = FTC_SBitCache_New(manager, &cache)))
147 printf("[FONT] <FTC_SBitCache_New failed with Errorcode 0x%.2X>\n", error);
148 FTC_Manager_Done(manager);
149 FT_Done_FreeType(library);
150 munmap(lfb, available);
153 if((FTC_Manager_Lookup_Face(manager, (char*)FONT, &face)))
155 printf("[FONT] <FTC_Manager_Lookup_Face failed with Errorcode 0x%.2X>\n", error);
156 FTC_Manager_Done(manager);
157 FT_Done_FreeType(library);
158 munmap(lfb, available);
161 use_kerning = FT_HAS_KERNING(face);
163 desc.font.face_id = (char*)FONT;
164 #if FREETYPE_MAJOR == 2 && FREETYPE_MINOR == 0
165 desc.type = ftc_image_mono;
166 #else
167 desc.flags = FT_LOAD_MONOCHROME;
168 #endif
169 #endif//USEFREETYPEFB
171 showConsole(1);
172 printf("[Framebuffer] available.\n");
173 return;
174 nolfb:
175 lfb=0;
176 printf("[Framebuffer] <not available>\n");
177 return;
180 fbClass::~fbClass()
182 if(c_rect_buffer!=NULL) { free(c_rect_buffer); c_rect_buffer=NULL; }
184 if (available)
185 ioctl(fd, FBIOPUT_VSCREENINFO, &oldscreen);
186 if (lfb)
187 munmap(lfb, available);
189 #ifdef USEFREETYPEFB
190 FTC_Manager_Done(manager);
191 FT_Done_FreeType(library);
192 #endif
195 int fbClass::SetMode(unsigned int nxRes, unsigned int nyRes, unsigned int nbpp)
197 screeninfo.xres_virtual=screeninfo.xres=nxRes;
198 screeninfo.yres_virtual=screeninfo.yres=nyRes;
199 screeninfo.height=0;
200 screeninfo.width=0;
201 screeninfo.xoffset=screeninfo.yoffset=0;
202 screeninfo.bits_per_pixel=nbpp;
203 if (ioctl(fd, FBIOPUT_VSCREENINFO, &screeninfo)<0)
205 perror("[FB-SET] <FBIOPUT_VSCREENINFO>");
206 return -1;
209 if ((screeninfo.xres!=nxRes) && (screeninfo.yres!=nyRes) && (screeninfo.bits_per_pixel!=nbpp))
211 printf("[FB-SET] <SetMode failed: wanted: %dx%dx%d, got %dx%dx%d>\n", nxRes, nyRes, nbpp,
212 screeninfo.xres,screeninfo.yres, screeninfo.bits_per_pixel);
214 xRes=screeninfo.xres;
215 yRes=screeninfo.yres;
216 printf("[Framebuffer] xRes:%d yRes:%d bpp:%d\n", xRes, yRes, screeninfo.bits_per_pixel);
217 bpp=screeninfo.bits_per_pixel;
218 fb_fix_screeninfo fix;
219 if (ioctl(fd, FBIOGET_FSCREENINFO, &fix)<0) perror("[FB-SET] <FBIOGET_FSCREENINFO>");
221 stride=fix.line_length;
222 x_stride = (fix.line_length*8)/screeninfo.bits_per_pixel;
223 memset(lfb, 0, stride*yRes);
225 palette();
226 return 0;
229 void fbClass::fb_display(unsigned char *rgbbuff,unsigned char * alpha,int x_size,int y_size,int x_pan,int y_pan,int x_offs,int y_offs)
231 /* correct panning */
232 if(x_pan > x_size - (int)x_stride) x_pan = 0;
233 if(y_pan > y_size - (int)yRes) y_pan = 0;
234 /* correct offset */
235 if(x_offs + x_size > (int)x_stride) x_offs = 0;
236 if(y_offs + y_size > (int)yRes) y_offs = 0;
238 /* blit buffer 2 fb */
239 int cpp = 0;
240 unsigned short *fbbuff = (unsigned short *) convertRGB2FB(fd, rgbbuff, x_size * y_size, screeninfo.bits_per_pixel, &cpp);
241 if(fbbuff==NULL) return;
242 blit2FB(fbbuff, alpha, x_size, y_size, x_stride, yRes, x_pan, y_pan, x_offs, y_offs, cpp);
243 free(fbbuff);
246 void fbClass::blit2FB(void *fbbuff,unsigned char *alpha,unsigned int pic_xs,unsigned int pic_ys,unsigned int scr_xs,unsigned int scr_ys, unsigned int xp, unsigned int yp,unsigned int xoffs, unsigned int yoffs,int cpp)
248 int xc = (pic_xs > scr_xs) ? scr_xs : pic_xs;
249 int yc = (pic_ys > scr_ys) ? scr_ys : pic_ys;
252 unsigned char *fb = (unsigned char*) mmap(NULL, scr_xs * scr_ys * cpp, PROT_WRITE | PROT_READ, MAP_SHARED, fd, 0);
253 if(fb == MAP_FAILED) { perror("mmap"); return; }
255 if(cpp == 1) make332map();
257 unsigned char *fbptr = fb + (yoffs * scr_xs + xoffs) * cpp;
258 unsigned char *imptr = (unsigned char*) fbbuff + (yp * pic_xs + xp) * cpp;
260 for(int i = 0; i < yc; i++, fbptr += scr_xs * cpp, imptr += pic_xs * cpp)
261 memcpy(fbptr, imptr, xc * cpp);
263 if(cpp == 1) make8map();
265 munmap(fb, scr_xs * scr_ys * cpp);
268 void fbClass::make8map()
270 struct fb_cmap colormap;
271 colormap.start=0;
272 colormap.len=256;
273 colormap.red=red;
274 colormap.green=green;
275 colormap.blue=blue;
276 colormap.transp=trans;
278 ioctl(fd, FBIOPUTCMAP, &colormap);
281 void fbClass::make332map()
283 int r = 8, g = 8, b = 4;
285 struct fb_cmap colormap;
286 colormap.start=0;
287 colormap.len=256;
288 colormap.red=red;
289 colormap.green = green;
290 colormap.blue = blue;
291 colormap.transp=trans;
293 int rs = 256 / (r - 1);
294 int gs = 256 / (g - 1);
295 int bs = 256 / (b - 1);
297 for (int i = 0; i < 256; i++) {
298 colormap.red[i] = (rs * ((i / (g * b)) % r)) * 255;
299 colormap.green[i] = (gs * ((i / b) % g)) * 255;
300 colormap.blue[i] = (bs * ((i) % b)) * 255;
303 ioctl(fd, FBIOPUTCMAP, &colormap);
306 //----------------------------------------------------------------------------------------
308 void fbClass::W_buffer(int sx, int sy, int width, int height)
310 if(c_rect_buffer!=NULL)
312 unsigned char* busy_buffer_wrk = c_rect_buffer;
314 for(int y=sy ; y < sy+height; y++)
316 for(int x=sx ; x< sx+width; x++)
318 memcpy(lfb + y * stride + x * c_rect_buffer_cpp, busy_buffer_wrk, c_rect_buffer_cpp);
319 busy_buffer_wrk += c_rect_buffer_cpp;
325 void fbClass::Fill_buffer(int sx, int sy, int width, int height)
327 unsigned char rgb_buffer[3];
328 unsigned char* fbbuff;
329 unsigned char* busy_buffer_wrk;
330 int cpp = 0;
332 rgb_buffer[0]=0;
333 rgb_buffer[1]=0;
334 rgb_buffer[2]=0;
336 fbbuff = (unsigned char *) convertRGB2FB(fd, rgb_buffer, 1, screeninfo.bits_per_pixel, &cpp);
337 if(fbbuff==NULL) { printf("malloc_1\n"); return; }
339 if(c_rect_buffer!=NULL) { free(c_rect_buffer); c_rect_buffer=NULL; }
340 c_rect_buffer = (unsigned char*) malloc(width*width*cpp);
341 if(c_rect_buffer==NULL) { printf("malloc_2\n"); return; }
342 busy_buffer_wrk = c_rect_buffer;
344 for(int y=sy ; y < sy+height; y++)
346 for(int x=sx ; x< sx+width; x++)
348 memcpy(busy_buffer_wrk, lfb + y * stride + x*cpp, cpp);
349 busy_buffer_wrk += cpp;
353 free(fbbuff);
354 c_rect_buffer_cpp=cpp;
357 void fbClass::palette()
359 unsigned char rgb_buffer[3];
360 rgb_buffer[0]=0;
361 rgb_buffer[1]=0;
362 rgb_buffer[2]=0;
363 int cpp = 0;
365 unsigned char* fbbuff = (unsigned char *) convertRGB2FB(fd, rgb_buffer, 1, screeninfo.bits_per_pixel, &cpp);
366 if(fbbuff==NULL) { printf("malloc\n"); return; }
367 blit2FB(fbbuff, NULL, 1, 1, x_stride, yRes, 0, 0, 0, 0, cpp);
368 free(fbbuff);
371 //----------------------------------------------------------------------------------------
372 char circle[] =
374 0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,
375 0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,
376 0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,
377 0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,
378 0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,
379 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
380 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
381 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
382 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
383 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
384 0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,
385 0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,
386 0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,
387 0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,
388 0,0,0,0,0,1,1,1,1,1,0,0,0,0,0
391 void fbClass::RenderCircle(int sx, int sy, int r, int g, int b)
394 unsigned char rgb_buffer[3];
395 unsigned char* fbbuff;
396 int cpp = 0;
398 rgb_buffer[0]=r;
399 rgb_buffer[1]=g;
400 rgb_buffer[2]=b;
402 fbbuff = (unsigned char *) convertRGB2FB(fd, rgb_buffer, 1, screeninfo.bits_per_pixel, &cpp);
403 if(fbbuff==NULL) { printf("malloc\n"); return; }
405 for(int y = 0; y < 15; y++)
406 for(int x = 0; x < 15; x++)
407 if(circle[x + y*15])
408 memcpy(lfb + (sy+y) * stride + (sx+x)*cpp, fbbuff, cpp);
410 free(fbbuff);
413 void fbClass::FillRect(int sx, int sy, int width, int height, int r, int g, int b)
415 unsigned char rgb_buffer[3];
416 rgb_buffer[0]=r;
417 rgb_buffer[1]=g;
418 rgb_buffer[2]=b;
419 int cpp = 0;
421 unsigned char* fbbuff = (unsigned char *) convertRGB2FB(fd, rgb_buffer, 1, screeninfo.bits_per_pixel, &cpp);
422 if(fbbuff==NULL) { printf("malloc\n"); return; }
424 for(int y=sy ; y < sy+height; y++)
426 for(int x=sx ; x< sx+width; x++)
428 memcpy(lfb + y * stride + x*cpp, fbbuff, cpp);
432 free(fbbuff);
435 void fbClass::PaintPixel(int x, int y, int r, int g, int b)
437 unsigned char rgb_buffer[3];
438 unsigned char* fbbuff;
439 int cpp = 0;
440 rgb_buffer[0]=r;
441 rgb_buffer[1]=g;
442 rgb_buffer[2]=b;
444 fbbuff = (unsigned char *) convertRGB2FB(fd, rgb_buffer, 1, screeninfo.bits_per_pixel, &cpp);
445 if(fbbuff==NULL) { printf("malloc\n"); return; }
447 memcpy(lfb + y * stride + x*cpp, fbbuff, cpp);
448 free(fbbuff);
451 void fbClass::DrawRect( int x, int y, int width, int height, int r, int g, int b)
453 DrawHLine( x, y, width, r,g,b );
454 DrawHLine( x, y+height, width, r,g,b );
455 DrawVLine( x, y, height, r,g,b );
456 DrawVLine( x+width, y, height, r,g,b );
459 void fbClass::DrawVLine(int x, int y, int sy, int r, int g, int b)
461 while (sy--)
462 PaintPixel(x, y+sy, r, g, b);
466 void fbClass::DrawHLine(int x, int y, int sx, int r, int g, int b)
468 while (sx--)
469 PaintPixel(x+sx, y, r, g, b);
472 #ifdef USEFREETYPEFB
474 void fbClass::RenderString(std::string word, int sx, int sy, int maxwidth, int layout, int size, int r, int g, int b)
476 int stringlen, ex, charwidth;
477 unsigned char *string = ((unsigned char*)word.c_str());
479 desc.font.pix_width = desc.font.pix_height = size;
481 if(layout != LEFT)
483 stringlen = GetStringLen(string);
484 switch(layout)
486 case CENTER: if(stringlen < maxwidth) sx += (maxwidth - stringlen)/2;
487 break;
489 case RIGHT: if(stringlen < maxwidth) sx += maxwidth - stringlen;
490 break;
493 //reset kerning
494 prev_glyphindex = 0;
495 //render string
496 ex = sx + maxwidth;
497 while(*string != '\0')
499 if((charwidth = RenderChar(*string, sx, sy, ex, r,g,b)) == -1) return; /* string > maxwidth */
500 sx += charwidth;
501 string++;
505 int fbClass::RenderChar(FT_ULong currentchar, int sx, int sy, int ex, int r, int g, int b)
507 unsigned char rgb_buffer[3];
508 unsigned char* fbbuff;
509 int cpp = 0;
510 rgb_buffer[0]=r;
511 rgb_buffer[1]=g;
512 rgb_buffer[2]=b;
514 fbbuff = (unsigned char *) convertRGB2FB(fd, rgb_buffer, 1, screeninfo.bits_per_pixel, &cpp);
515 if(fbbuff==NULL) { printf("malloc\n"); return 0; }
517 int row, pitch, bit, x = 0, y = 0;
518 FT_Error error;
519 FT_UInt glyphindex;
520 FT_Vector kerning;
521 FTC_Node anode;
523 //load char
524 if(!(glyphindex = FT_Get_Char_Index(face, currentchar)))
526 printf("TuxMail <FT_Get_Char_Index for Char \"%c\" failed: \"undefined character code\">\n", (int)currentchar);return 0;
529 if((error = FTC_SBitCache_Lookup(cache, &desc, glyphindex, &sbit, &anode)))
531 printf("TuxMail <FTC_SBitCache_Lookup for Char \"%c\" failed with Errorcode 0x%.2X>\n", (int)currentchar, error);return 0;
534 if(use_kerning)
536 FT_Get_Kerning(face, prev_glyphindex, glyphindex, ft_kerning_default, &kerning);
537 prev_glyphindex = glyphindex;
538 kerning.x >>= 6;
540 else kerning.x = 0;
542 //render char
543 if(r != -1)
545 if(sx + sbit->xadvance >= ex) return -1; /* limit to maxwidth */
547 for(row = 0; row < sbit->height; row++)
549 for(pitch = 0; pitch < sbit->pitch; pitch++)
551 for(bit = 7; bit >= 0; bit--)
553 if(pitch*8 + 7-bit >= sbit->width) break; /* render needed bits only */
555 if((sbit->buffer[row * sbit->pitch + pitch]) & 1<<bit)
557 memcpy(lfb + (sy - sbit->top + y ) * stride + (sx + sbit->left + kerning.x + x)*cpp, fbbuff, cpp);
559 x++;
562 x = 0;
563 y++;
567 free(fbbuff);
568 return sbit->xadvance + kerning.x;
571 int fbClass::GetStringLen(unsigned char *string)
573 int stringlen = 0;
574 //reset kerning
575 prev_glyphindex = 0;
576 //calc len
577 while(*string != '\0')
579 stringlen += RenderChar(*string, -1, -1, -1, -1,-1,-1);
580 string++;
582 return stringlen;
585 #else//USEFREETYPEFB
587 #define MAXMSG 1024
588 #define DWIDTH 132
589 #define NCHARS 128
590 #define NBYTES 9271
592 /* Pointers into data_table for each ASCII char */
593 const int asc_ptr[NCHARS] = {
594 0, 0, 0, 0, 0, 0, 0, 0,
595 0, 0, 0, 0, 0, 0, 0, 0,
596 0, 0, 0, 0, 0, 0, 0, 0,
597 0, 0, 0, 0, 0, 0, 0, 0,
598 1, 3, 50, 81, 104, 281, 483, 590,
599 621, 685, 749, 851, 862, 893, 898, 921,
600 1019, 1150, 1200, 1419, 1599, 1744, 1934, 2111,
601 2235, 2445, 2622, 2659, 0, 2708, 0, 2715,
602 2857, 3072, 3273, 3403, 3560, 3662, 3730, 3785,
603 3965, 4000, 4015, 4115, 4281, 4314, 4432, 4548,
604 4709, 4790, 4999, 5188, 5397, 5448, 5576, 5710,
605 5892, 6106, 6257, 0, 0, 0, 0, 0,
606 50, 6503, 6642, 6733, 6837, 6930, 7073, 7157,
607 7380, 7452, 7499, 7584, 7689, 7702, 7797, 7869,
608 7978, 8069, 8160, 8222, 8381, 8442, 8508, 8605,
609 8732, 8888, 9016, 0, 0, 0, 0, 0
612 const unsigned char data_table[NBYTES] = {
613 129, 227, 130, 34, 6, 90, 19, 129, 32, 10,
614 74, 40, 129, 31, 12, 64, 53, 129, 30, 14,
615 54, 65, 129, 30, 14, 53, 67, 129, 30, 14,
616 54, 65, 129, 31, 12, 64, 53, 129, 32, 10,
617 74, 40, 129, 34, 6, 90, 19, 129, 194, 130,
618 99, 9, 129, 97, 14, 129, 96, 18, 129, 95,
619 22, 129, 95, 16, 117, 2, 129, 95, 14, 129,
620 96, 11, 129, 97, 9, 129, 99, 6, 129, 194,
621 129, 87, 4, 101, 4, 131, 82, 28, 131, 87,
622 4, 101, 4, 133, 82, 28, 131, 87, 4, 101,
623 4, 131, 193, 129, 39, 1, 84, 27, 129, 38,
624 3, 81, 32, 129, 37, 5, 79, 35, 129, 36,
625 5, 77, 38, 129, 35, 5, 76, 40, 129, 34,
626 5, 75, 21, 103, 14, 129, 33, 5, 74, 19,
627 107, 11, 129, 32, 5, 73, 17, 110, 9, 129,
628 32, 4, 73, 16, 112, 7, 129, 31, 4, 72,
629 15, 114, 6, 129, 31, 4, 72, 14, 115, 5,
630 129, 30, 4, 71, 15, 116, 5, 129, 27, 97,
631 131, 30, 4, 69, 14, 117, 4, 129, 30, 4,
632 68, 15, 117, 4, 132, 30, 4, 68, 14, 117,
633 4, 129, 27, 97, 131, 30, 5, 65, 15, 116,
634 5, 129, 31, 4, 65, 14, 116, 4, 129, 31,
635 6, 64, 15, 116, 4, 129, 32, 7, 62, 16,
636 115, 4, 129, 32, 9, 61, 17, 114, 5, 129,
637 33, 11, 58, 19, 113, 5, 129, 34, 14, 55,
638 21, 112, 5, 129, 35, 40, 111, 5, 129, 36,
639 38, 110, 5, 129, 37, 35, 109, 5, 129, 38,
640 32, 110, 3, 129, 40, 27, 111, 1, 129, 193,
641 129, 30, 4, 103, 9, 129, 30, 7, 100, 15,
642 129, 30, 10, 99, 17, 129, 33, 10, 97, 6,
643 112, 6, 129, 36, 10, 96, 5, 114, 5, 129,
644 39, 10, 96, 4, 115, 4, 129, 42, 10, 95,
645 4, 116, 4, 129, 45, 10, 95, 3, 117, 3,
646 129, 48, 10, 95, 3, 117, 3, 129, 51, 10,
647 95, 4, 116, 4, 129, 54, 10, 96, 4, 115,
648 4, 129, 57, 10, 96, 5, 114, 5, 129, 60,
649 10, 97, 6, 112, 6, 129, 63, 10, 99, 17,
650 129, 66, 10, 100, 15, 129, 69, 10, 103, 9,
651 129, 39, 9, 72, 10, 129, 36, 15, 75, 10,
652 129, 35, 17, 78, 10, 129, 33, 6, 48, 6,
653 81, 10, 129, 32, 5, 50, 5, 84, 10, 129,
654 32, 4, 51, 4, 87, 10, 129, 31, 4, 52,
655 4, 90, 10, 129, 31, 3, 53, 3, 93, 10,
656 129, 31, 3, 53, 3, 96, 10, 129, 31, 4,
657 52, 4, 99, 10, 129, 32, 4, 51, 4, 102,
658 10, 129, 32, 5, 50, 5, 105, 10, 129, 33,
659 6, 48, 6, 108, 10, 129, 35, 17, 111, 10,
660 129, 36, 15, 114, 7, 129, 40, 9, 118, 4,
661 129, 193, 129, 48, 18, 129, 43, 28, 129, 41,
662 32, 129, 39, 36, 129, 37, 40, 129, 35, 44,
663 129, 34, 46, 129, 33, 13, 68, 13, 129, 32,
664 9, 73, 9, 129, 32, 7, 75, 7, 129, 31,
665 6, 77, 6, 129, 31, 5, 78, 5, 129, 30,
666 5, 79, 5, 129, 20, 74, 132, 30, 4, 80,
667 4, 129, 31, 3, 79, 4, 129, 31, 4, 79,
668 4, 129, 32, 3, 78, 4, 129, 32, 4, 76,
669 6, 129, 33, 4, 74, 7, 129, 34, 4, 72,
670 8, 129, 35, 5, 72, 7, 129, 37, 5, 73,
671 4, 129, 39, 4, 74, 1, 129, 129, 193, 130,
672 111, 6, 129, 109, 10, 129, 108, 12, 129, 107,
673 14, 129, 97, 2, 105, 16, 129, 99, 22, 129,
674 102, 18, 129, 105, 14, 129, 108, 9, 129, 194,
675 130, 63, 25, 129, 57, 37, 129, 52, 47, 129,
676 48, 55, 129, 44, 63, 129, 41, 69, 129, 38,
677 75, 129, 36, 79, 129, 34, 83, 129, 33, 28,
678 90, 28, 129, 32, 23, 96, 23, 129, 32, 17,
679 102, 17, 129, 31, 13, 107, 13, 129, 30, 9,
680 112, 9, 129, 30, 5, 116, 5, 129, 30, 1,
681 120, 1, 129, 194, 130, 30, 1, 120, 1, 129,
682 30, 5, 116, 5, 129, 30, 9, 112, 9, 129,
683 31, 13, 107, 13, 129, 32, 17, 102, 17, 129,
684 32, 23, 96, 23, 129, 33, 28, 90, 28, 129,
685 34, 83, 129, 36, 79, 129, 38, 75, 129, 41,
686 69, 129, 44, 63, 129, 48, 55, 129, 52, 47,
687 129, 57, 37, 129, 63, 25, 129, 194, 129, 80,
688 4, 130, 80, 4, 129, 68, 2, 80, 4, 94,
689 2, 129, 66, 6, 80, 4, 92, 6, 129, 67,
690 7, 80, 4, 90, 7, 129, 69, 7, 80, 4,
691 88, 7, 129, 71, 6, 80, 4, 87, 6, 129,
692 72, 20, 129, 74, 16, 129, 76, 12, 129, 62,
693 40, 131, 76, 12, 129, 74, 16, 129, 72, 20,
694 129, 71, 6, 80, 4, 87, 6, 129, 69, 7,
695 80, 4, 88, 7, 129, 67, 7, 80, 4, 90,
696 7, 129, 66, 6, 80, 4, 92, 6, 129, 68,
697 2, 80, 4, 94, 2, 129, 80, 4, 130, 193,
698 129, 60, 4, 139, 41, 42, 131, 60, 4, 139,
699 193, 130, 34, 6, 129, 32, 10, 129, 31, 12,
700 129, 30, 14, 129, 20, 2, 28, 16, 129, 22,
701 22, 129, 24, 19, 129, 27, 15, 129, 31, 9,
702 129, 194, 129, 60, 4, 152, 193, 130, 34, 6,
703 129, 32, 10, 129, 31, 12, 129, 30, 14, 131,
704 31, 12, 129, 32, 10, 129, 34, 6, 129, 194,
705 129, 30, 4, 129, 30, 7, 129, 30, 10, 129,
706 33, 10, 129, 36, 10, 129, 39, 10, 129, 42,
707 10, 129, 45, 10, 129, 48, 10, 129, 51, 10,
708 129, 54, 10, 129, 57, 10, 129, 60, 10, 129,
709 63, 10, 129, 66, 10, 129, 69, 10, 129, 72,
710 10, 129, 75, 10, 129, 78, 10, 129, 81, 10,
711 129, 84, 10, 129, 87, 10, 129, 90, 10, 129,
712 93, 10, 129, 96, 10, 129, 99, 10, 129, 102,
713 10, 129, 105, 10, 129, 108, 10, 129, 111, 10,
714 129, 114, 7, 129, 117, 4, 129, 193, 129, 60,
715 31, 129, 53, 45, 129, 49, 53, 129, 46, 59,
716 129, 43, 65, 129, 41, 69, 129, 39, 73, 129,
717 37, 77, 129, 36, 79, 129, 35, 15, 101, 15,
718 129, 34, 11, 106, 11, 129, 33, 9, 109, 9,
719 129, 32, 7, 112, 7, 129, 31, 6, 114, 6,
720 129, 31, 5, 115, 5, 129, 30, 5, 116, 5,
721 129, 30, 4, 117, 4, 132, 30, 5, 116, 5,
722 129, 31, 5, 115, 5, 129, 31, 6, 114, 6,
723 129, 32, 7, 112, 7, 129, 33, 9, 109, 9,
724 129, 34, 11, 106, 11, 129, 35, 15, 101, 15,
725 129, 36, 79, 129, 37, 77, 129, 39, 73, 129,
726 41, 69, 129, 43, 65, 129, 46, 59, 129, 49,
727 53, 129, 53, 45, 129, 60, 31, 129, 193, 129,
728 30, 4, 129, 30, 4, 100, 1, 129, 30, 4,
729 100, 3, 129, 30, 4, 100, 5, 129, 30, 76,
730 /* 1170 */ 129, 30, 78, 129, 30, 80, 129, 30, 82, 129,
731 /* 1180 */ 30, 83, 129, 30, 85, 129, 30, 87, 129, 30,
732 /* 1190 */ 89, 129, 30, 91, 129, 30, 4, 132, 193, 129,
733 /* 1200 */ 30, 3, 129, 30, 7, 129, 30, 10, 112, 1,
734 /* 1210 */ 129, 30, 13, 112, 2, 129, 30, 16, 112, 3,
735 /* 1220 */ 129, 30, 18, 111, 5, 129, 30, 21, 111, 6,
736 /* 1230 */ 129, 30, 23, 112, 6, 129, 30, 14, 47, 8,
737 /* 1240 */ 113, 6, 129, 30, 14, 49, 8, 114, 5, 129,
738 /* 1250 */ 30, 14, 51, 8, 115, 5, 129, 30, 14, 53,
739 /* 1260 */ 8, 116, 4, 129, 30, 14, 55, 8, 116, 5,
740 /* 1270 */ 129, 30, 14, 56, 9, 117, 4, 129, 30, 14,
741 /* 1280 */ 57, 9, 117, 4, 129, 30, 14, 58, 10, 117,
742 /* 1290 */ 4, 129, 30, 14, 59, 10, 117, 4, 129, 30,
743 /* 1300 */ 14, 60, 11, 117, 4, 129, 30, 14, 61, 11,
744 /* 1310 */ 116, 5, 129, 30, 14, 62, 11, 116, 5, 129,
745 /* 1320 */ 30, 14, 63, 12, 115, 6, 129, 30, 14, 64,
746 /* 1330 */ 13, 114, 7, 129, 30, 14, 65, 13, 113, 8,
747 /* 1340 */ 129, 30, 14, 65, 15, 111, 9, 129, 30, 14,
748 /* 1350 */ 66, 16, 109, 11, 129, 30, 14, 67, 17, 107,
749 /* 1360 */ 12, 129, 30, 14, 68, 20, 103, 16, 129, 30,
750 /* 1370 */ 14, 69, 49, 129, 30, 14, 70, 47, 129, 30,
751 /* 1380 */ 14, 71, 45, 129, 30, 14, 73, 42, 129, 30,
752 /* 1390 */ 15, 75, 38, 129, 33, 12, 77, 34, 129, 36,
753 /* 1400 */ 10, 79, 30, 129, 40, 6, 82, 23, 129, 44,
754 /* 1410 */ 3, 86, 15, 129, 47, 1, 129, 193, 129, 129,
755 /* 1420 */ 38, 3, 129, 37, 5, 111, 1, 129, 36, 7,
756 /* 1430 */ 111, 2, 129, 35, 9, 110, 5, 129, 34, 8,
757 /* 1440 */ 110, 6, 129, 33, 7, 109, 8, 129, 32, 7,
758 /* 1450 */ 110, 8, 129, 32, 6, 112, 7, 129, 31, 6,
759 /* 1460 */ 113, 6, 129, 31, 5, 114, 6, 129, 30, 5,
760 /* 1470 */ 115, 5, 129, 30, 5, 116, 4, 129, 30, 4,
761 /* 1480 */ 117, 4, 131, 30, 4, 117, 4, 129, 30, 4,
762 /* 1490 */ 79, 2, 117, 4, 129, 30, 5, 78, 4, 117,
763 /* 1500 */ 4, 129, 30, 5, 77, 6, 116, 5, 129, 30,
764 /* 1510 */ 6, 76, 8, 115, 6, 129, 30, 7, 75, 11,
765 /* 1520 */ 114, 6, 129, 30, 8, 73, 15, 112, 8, 129,
766 /* 1530 */ 31, 9, 71, 19, 110, 9, 129, 31, 11, 68,
767 /* 1540 */ 26, 107, 12, 129, 32, 13, 65, 14, 82, 36,
768 /* 1550 */ 129, 32, 16, 61, 17, 83, 34, 129, 33, 44,
769 /* 1560 */ 84, 32, 129, 34, 42, 85, 30, 129, 35, 40,
770 /* 1570 */ 87, 27, 129, 36, 38, 89, 23, 129, 38, 34,
771 /* 1580 */ 92, 17, 129, 40, 30, 95, 11, 129, 42, 26,
772 /* 1590 */ 129, 45, 20, 129, 49, 11, 129, 193, 129, 49,
773 /* 1600 */ 1, 129, 49, 4, 129, 49, 6, 129, 49, 8,
774 /* 1610 */ 129, 49, 10, 129, 49, 12, 129, 49, 14, 129,
775 /* 1620 */ 49, 17, 129, 49, 19, 129, 49, 21, 129, 49,
776 /* 1630 */ 23, 129, 49, 14, 65, 9, 129, 49, 14, 67,
777 /* 1640 */ 9, 129, 49, 14, 69, 9, 129, 49, 14, 71,
778 /* 1650 */ 10, 129, 49, 14, 74, 9, 129, 49, 14, 76,
779 /* 1660 */ 9, 129, 49, 14, 78, 9, 129, 49, 14, 80,
780 /* 1670 */ 9, 129, 49, 14, 82, 9, 129, 49, 14, 84,
781 /* 1680 */ 9, 129, 30, 4, 49, 14, 86, 10, 129, 30,
782 /* 1690 */ 4, 49, 14, 89, 9, 129, 30, 4, 49, 14,
783 /* 1700 */ 91, 9, 129, 30, 4, 49, 14, 93, 9, 129,
784 /* 1710 */ 30, 74, 129, 30, 76, 129, 30, 78, 129, 30,
785 /* 1720 */ 81, 129, 30, 83, 129, 30, 85, 129, 30, 87,
786 /* 1730 */ 129, 30, 89, 129, 30, 91, 129, 30, 4, 49,
787 /* 1740 */ 14, 132, 193, 129, 37, 1, 129, 36, 3, 77,
788 /* 1750 */ 3, 129, 35, 5, 78, 11, 129, 34, 7, 78,
789 /* 1760 */ 21, 129, 33, 7, 79, 29, 129, 32, 7, 79,
790 /* 1770 */ 38, 129, 32, 6, 80, 4, 92, 29, 129, 31,
791 /* 1780 */ 6, 80, 5, 102, 19, 129, 31, 5, 80, 6,
792 /* 1790 */ 107, 14, 129, 31, 4, 81, 5, 107, 14, 129,
793 /* 1800 */ 30, 5, 81, 6, 107, 14, 129, 30, 4, 81,
794 /* 1810 */ 6, 107, 14, 130, 30, 4, 81, 7, 107, 14,
795 /* 1820 */ 129, 30, 4, 80, 8, 107, 14, 130, 30, 5,
796 /* 1830 */ 80, 8, 107, 14, 129, 30, 5, 79, 9, 107,
797 /* 1840 */ 14, 129, 31, 5, 79, 9, 107, 14, 129, 31,
798 /* 1850 */ 6, 78, 10, 107, 14, 129, 32, 6, 76, 11,
799 /* 1860 */ 107, 14, 129, 32, 8, 74, 13, 107, 14, 129,
800 /* 1870 */ 33, 10, 71, 16, 107, 14, 129, 33, 15, 67,
801 /* 1880 */ 19, 107, 14, 129, 34, 51, 107, 14, 129, 35,
802 /* 1890 */ 49, 107, 14, 129, 36, 47, 107, 14, 129, 37,
803 /* 1900 */ 45, 107, 14, 129, 39, 41, 107, 14, 129, 41,
804 /* 1910 */ 37, 107, 14, 129, 44, 32, 107, 14, 129, 47,
805 /* 1920 */ 25, 111, 10, 129, 51, 16, 115, 6, 129, 119,
806 /* 1930 */ 2, 129, 193, 129, 56, 39, 129, 51, 49, 129,
807 /* 1940 */ 47, 57, 129, 44, 63, 129, 42, 67, 129, 40,
808 /* 1950 */ 71, 129, 38, 75, 129, 37, 77, 129, 35, 81,
809 /* 1960 */ 129, 34, 16, 74, 5, 101, 16, 129, 33, 11,
810 /* 1970 */ 76, 5, 107, 11, 129, 32, 9, 77, 5, 110,
811 /* 1980 */ 9, 129, 32, 7, 79, 4, 112, 7, 129, 31,
812 /* 1990 */ 6, 80, 4, 114, 6, 129, 31, 5, 81, 4,
813 /* 2000 */ 115, 5, 129, 30, 5, 82, 4, 116, 5, 129,
814 /* 2010 */ 30, 4, 82, 4, 116, 5, 129, 30, 4, 82,
815 /* 2020 */ 5, 117, 4, 131, 30, 5, 82, 5, 117, 4,
816 /* 2030 */ 129, 31, 5, 81, 6, 117, 4, 129, 31, 6,
817 /* 2040 */ 80, 7, 117, 4, 129, 32, 7, 79, 8, 117,
818 /* 2050 */ 4, 129, 32, 9, 77, 9, 116, 5, 129, 33,
819 /* 2060 */ 11, 75, 11, 116, 4, 129, 34, 16, 69, 16,
820 /* 2070 */ 115, 5, 129, 35, 49, 114, 5, 129, 37, 46,
821 /* 2080 */ 113, 5, 129, 38, 44, 112, 6, 129, 40, 41,
822 /* 2090 */ 112, 5, 129, 42, 37, 113, 3, 129, 44, 33,
823 /* 2100 */ 114, 1, 129, 47, 27, 129, 51, 17, 129, 193,
824 /* 2110 */ 129, 103, 2, 129, 103, 6, 129, 104, 9, 129,
825 /* 2120 */ 105, 12, 129, 106, 15, 129, 107, 14, 135, 30,
826 /* 2130 */ 10, 107, 14, 129, 30, 17, 107, 14, 129, 30,
827 /* 2140 */ 25, 107, 14, 129, 30, 31, 107, 14, 129, 30,
828 /* 2150 */ 37, 107, 14, 129, 30, 42, 107, 14, 129, 30,
829 /* 2160 */ 46, 107, 14, 129, 30, 50, 107, 14, 129, 30,
830 /* 2170 */ 54, 107, 14, 129, 30, 58, 107, 14, 129, 59,
831 /* 2180 */ 32, 107, 14, 129, 64, 30, 107, 14, 129, 74,
832 /* 2190 */ 23, 107, 14, 129, 81, 18, 107, 14, 129, 86,
833 /* 2200 */ 16, 107, 14, 129, 91, 14, 107, 14, 129, 96,
834 /* 2210 */ 25, 129, 100, 21, 129, 104, 17, 129, 107, 14,
835 /* 2220 */ 129, 111, 10, 129, 114, 7, 129, 117, 4, 129,
836 /* 2230 */ 120, 1, 129, 193, 129, 48, 13, 129, 44, 21,
837 /* 2240 */ 129, 42, 26, 129, 40, 30, 92, 12, 129, 38,
838 /* 2250 */ 34, 88, 20, 129, 36, 37, 86, 25, 129, 35,
839 /* 2260 */ 39, 84, 29, 129, 34, 13, 63, 12, 82, 33,
840 /* 2270 */ 129, 33, 11, 67, 9, 80, 36, 129, 32, 9,
841 /* 2280 */ 70, 7, 79, 38, 129, 31, 8, 72, 46, 129,
842 /* 2290 */ 30, 7, 74, 22, 108, 11, 129, 30, 6, 75,
843 /* 2300 */ 19, 111, 9, 129, 30, 5, 75, 17, 113, 7,
844 /* 2310 */ 129, 30, 5, 74, 16, 114, 6, 129, 30, 4,
845 /* 2320 */ 73, 16, 115, 6, 129, 30, 4, 72, 16, 116,
846 /* 2330 */ 5, 129, 30, 4, 72, 15, 117, 4, 129, 30,
847 /* 2340 */ 4, 71, 16, 117, 4, 129, 30, 5, 70, 16,
848 /* 2350 */ 117, 4, 129, 30, 5, 70, 15, 117, 4, 129,
849 /* 2360 */ 30, 6, 69, 15, 116, 5, 129, 30, 7, 68,
850 /* 2370 */ 17, 115, 5, 129, 30, 9, 67, 19, 114, 6,
851 /* 2380 */ 129, 30, 10, 65, 22, 113, 6, 129, 31, 12,
852 /* 2390 */ 63, 27, 110, 9, 129, 32, 14, 60, 21, 84,
853 /* 2400 */ 9, 106, 12, 129, 33, 47, 85, 32, 129, 34,
854 /* 2410 */ 45, 86, 30, 129, 35, 43, 88, 26, 129, 36,
855 /* 2420 */ 40, 90, 22, 129, 38, 36, 93, 17, 129, 40,
856 /* 2430 */ 32, 96, 10, 129, 42, 28, 129, 44, 23, 129,
857 /* 2440 */ 48, 15, 129, 193, 129, 83, 17, 129, 77, 27,
858 /* 2450 */ 129, 36, 1, 74, 33, 129, 35, 3, 72, 37,
859 /* 2460 */ 129, 34, 5, 70, 41, 129, 33, 6, 69, 44,
860 /* 2470 */ 129, 33, 5, 68, 46, 129, 32, 5, 67, 49,
861 /* 2480 */ 129, 31, 5, 66, 17, 101, 16, 129, 31, 5,
862 /* 2490 */ 66, 11, 108, 10, 129, 30, 4, 65, 9, 110,
863 /* 2500 */ 9, 129, 30, 4, 64, 8, 112, 7, 129, 30,
864 /* 2510 */ 4, 64, 7, 114, 6, 129, 30, 4, 64, 6,
865 /* 2520 */ 115, 5, 129, 30, 4, 64, 5, 116, 5, 129,
866 /* 2530 */ 30, 4, 64, 5, 117, 4, 131, 30, 4, 65,
867 /* 2540 */ 4, 117, 4, 129, 30, 5, 65, 4, 116, 5,
868 /* 2550 */ 129, 31, 5, 66, 4, 115, 5, 129, 31, 6,
869 /* 2560 */ 67, 4, 114, 6, 129, 32, 7, 68, 4, 112,
870 /* 2570 */ 7, 129, 32, 9, 69, 5, 110, 9, 129, 33,
871 /* 2580 */ 11, 70, 5, 107, 11, 129, 34, 16, 72, 5,
872 /* 2590 */ 101, 16, 129, 35, 81, 129, 37, 77, 129, 38,
873 /* 2600 */ 75, 129, 40, 71, 129, 42, 67, 129, 44, 63,
874 /* 2610 */ 129, 47, 57, 129, 51, 49, 129, 56, 39, 129,
875 /* 2620 */ 193, 130, 34, 6, 74, 6, 129, 32, 10, 72,
876 /* 2630 */ 10, 129, 31, 12, 71, 12, 129, 30, 14, 70,
877 /* 2640 */ 14, 131, 31, 12, 71, 12, 129, 32, 10, 72,
878 /* 2650 */ 10, 129, 34, 6, 74, 6, 129, 194, 130, 34,
879 /* 2660 */ 6, 74, 6, 129, 32, 10, 72, 10, 129, 31,
880 /* 2670 */ 12, 71, 12, 129, 30, 14, 70, 14, 129, 20,
881 /* 2680 */ 2, 28, 16, 70, 14, 129, 22, 22, 70, 14,
882 /* 2690 */ 129, 24, 19, 71, 12, 129, 27, 15, 72, 10,
883 /* 2700 */ 129, 31, 9, 74, 6, 129, 194, 129, 53, 4,
884 /* 2710 */ 63, 4, 152, 193, 130, 99, 7, 129, 97, 13,
885 /* 2720 */ 129, 96, 16, 129, 96, 18, 129, 96, 19, 129,
886 /* 2730 */ 97, 19, 129, 99, 6, 110, 7, 129, 112, 6,
887 /* 2740 */ 129, 114, 5, 129, 34, 6, 57, 5, 115, 4,
888 /* 2750 */ 129, 32, 10, 54, 12, 116, 4, 129, 31, 12,
889 /* 2760 */ 53, 16, 117, 3, 129, 30, 14, 52, 20, 117,
890 /* 2770 */ 4, 129, 30, 14, 52, 23, 117, 4, 129, 30,
891 /* 2780 */ 14, 52, 25, 117, 4, 129, 31, 12, 52, 27,
892 /* 2790 */ 117, 4, 129, 32, 10, 53, 10, 70, 11, 116,
893 /* 2800 */ 5, 129, 34, 6, 55, 5, 73, 10, 115, 6,
894 /* 2810 */ 129, 74, 11, 114, 7, 129, 75, 12, 112, 9,
895 /* 2820 */ 129, 76, 13, 110, 10, 129, 77, 16, 106, 14,
896 /* 2830 */ 129, 78, 41, 129, 80, 38, 129, 81, 36, 129,
897 /* 2840 */ 82, 34, 129, 84, 30, 129, 86, 26, 129, 88,
898 /* 2850 */ 22, 129, 92, 14, 129, 194, 129, 55, 15, 129,
899 /* 2860 */ 50, 25, 129, 47, 32, 129, 45, 13, 70, 12,
900 /* 2870 */ 129, 43, 9, 76, 10, 129, 42, 6, 79, 8,
901 /* 2880 */ 129, 41, 5, 81, 7, 129, 40, 4, 84, 6,
902 /* 2890 */ 129, 39, 4, 59, 12, 85, 6, 129, 38, 4,
903 /* 2900 */ 55, 19, 87, 5, 129, 37, 4, 53, 23, 88,
904 /* 2910 */ 4, 129, 36, 4, 51, 8, 71, 6, 89, 4,
905 /* 2920 */ 129, 36, 4, 51, 6, 73, 4, 89, 4, 129,
906 /* 2930 */ 36, 4, 50, 6, 74, 4, 90, 3, 129, 35,
907 /* 2940 */ 4, 50, 5, 75, 3, 90, 4, 129, 35, 4,
908 /* 2950 */ 50, 4, 75, 4, 90, 4, 131, 35, 4, 50,
909 /* 2960 */ 5, 75, 4, 90, 4, 129, 36, 4, 51, 5,
910 /* 2970 */ 75, 4, 90, 4, 129, 36, 4, 51, 6, 75,
911 /* 2980 */ 4, 90, 4, 129, 36, 4, 53, 26, 90, 4,
912 /* 2990 */ 129, 37, 4, 54, 25, 90, 4, 129, 37, 4,
913 /* 3000 */ 52, 27, 90, 3, 129, 38, 4, 52, 4, 89,
914 /* 3010 */ 4, 129, 39, 4, 51, 4, 88, 4, 129, 40,
915 /* 3020 */ 4, 50, 4, 87, 5, 129, 41, 4, 50, 4,
916 /* 3030 */ 86, 5, 129, 42, 4, 50, 4, 85, 5, 129,
917 /* 3040 */ 43, 3, 50, 4, 83, 6, 129, 44, 2, 51,
918 /* 3050 */ 5, 80, 7, 129, 46, 1, 52, 6, 76, 9,
919 /* 3060 */ 129, 54, 28, 129, 56, 23, 129, 60, 16, 129,
920 /* 3070 */ 193, 129, 30, 4, 132, 30, 5, 129, 30, 8,
921 /* 3080 */ 129, 30, 12, 129, 30, 16, 129, 30, 4, 37,
922 /* 3090 */ 12, 129, 30, 4, 41, 12, 129, 30, 4, 44,
923 /* 3100 */ 13, 129, 30, 4, 48, 13, 129, 52, 13, 129,
924 /* 3110 */ 56, 12, 129, 58, 14, 129, 58, 4, 64, 12,
925 /* 3120 */ 129, 58, 4, 68, 12, 129, 58, 4, 72, 12,
926 /* 3130 */ 129, 58, 4, 75, 13, 129, 58, 4, 79, 13,
927 /* 3140 */ 129, 58, 4, 83, 13, 129, 58, 4, 87, 13,
928 /* 3150 */ 129, 58, 4, 91, 12, 129, 58, 4, 95, 12,
929 /* 3160 */ 129, 58, 4, 96, 15, 129, 58, 4, 93, 22,
930 /* 3170 */ 129, 58, 4, 89, 30, 129, 58, 4, 85, 36,
931 /* 3180 */ 129, 58, 4, 81, 38, 129, 58, 4, 77, 38,
932 /* 3190 */ 129, 58, 4, 73, 38, 129, 58, 4, 70, 37,
933 /* 3200 */ 129, 58, 4, 66, 37, 129, 58, 41, 129, 58,
934 /* 3210 */ 37, 129, 54, 38, 129, 30, 4, 50, 38, 129,
935 /* 3220 */ 30, 4, 46, 38, 129, 30, 4, 42, 38, 129,
936 /* 3230 */ 30, 4, 38, 39, 129, 30, 43, 129, 30, 39,
937 /* 3240 */ 129, 30, 35, 129, 30, 31, 129, 30, 27, 129,
938 /* 3250 */ 30, 24, 129, 30, 20, 129, 30, 16, 129, 30,
939 /* 3260 */ 12, 129, 30, 8, 129, 30, 5, 129, 30, 4,
940 /* 3270 */ 132, 193, 129, 30, 4, 117, 4, 132, 30, 91,
941 /* 3280 */ 137, 30, 4, 80, 4, 117, 4, 138, 30, 4,
942 /* 3290 */ 80, 5, 116, 5, 129, 30, 5, 79, 6, 116,
943 /* 3300 */ 5, 130, 30, 6, 78, 8, 115, 6, 129, 31,
944 /* 3310 */ 6, 77, 9, 115, 6, 129, 31, 7, 76, 11,
945 /* 3320 */ 114, 6, 129, 31, 8, 75, 14, 112, 8, 129,
946 /* 3330 */ 32, 8, 74, 16, 111, 9, 129, 32, 9, 73,
947 /* 3340 */ 19, 109, 10, 129, 33, 10, 71, 24, 106, 13,
948 /* 3350 */ 129, 33, 13, 68, 12, 83, 35, 129, 34, 16,
949 /* 3360 */ 64, 15, 84, 33, 129, 35, 43, 85, 31, 129,
950 /* 3370 */ 36, 41, 86, 29, 129, 37, 39, 88, 25, 129,
951 /* 3380 */ 38, 37, 90, 21, 129, 40, 33, 93, 15, 129,
952 /* 3390 */ 42, 29, 96, 9, 129, 45, 24, 129, 49, 16,
953 /* 3400 */ 129, 193, 129, 63, 25, 129, 57, 37, 129, 53,
954 /* 3410 */ 45, 129, 50, 51, 129, 47, 57, 129, 45, 61,
955 /* 3420 */ 129, 43, 65, 129, 41, 69, 129, 39, 73, 129,
956 /* 3430 */ 38, 25, 92, 21, 129, 36, 21, 97, 18, 129,
957 /* 3440 */ 35, 18, 102, 14, 129, 34, 16, 106, 11, 129,
958 /* 3450 */ 33, 14, 108, 10, 129, 32, 12, 111, 8, 129,
959 /* 3460 */ 32, 10, 113, 6, 129, 31, 10, 114, 6, 129,
960 /* 3470 */ 31, 8, 115, 5, 129, 30, 8, 116, 5, 129,
961 /* 3480 */ 30, 7, 116, 5, 129, 30, 6, 117, 4, 130,
962 /* 3490 */ 30, 5, 117, 4, 131, 31, 4, 116, 5, 129,
963 /* 3500 */ 32, 4, 116, 4, 129, 32, 5, 115, 5, 129,
964 /* 3510 */ 33, 4, 114, 5, 129, 34, 4, 112, 6, 129,
965 /* 3520 */ 35, 4, 110, 7, 129, 37, 4, 107, 9, 129,
966 /* 3530 */ 39, 4, 103, 12, 129, 41, 4, 103, 18, 129,
967 /* 3540 */ 43, 4, 103, 18, 129, 45, 5, 103, 18, 129,
968 /* 3550 */ 48, 5, 103, 18, 129, 51, 1, 129, 193, 129,
969 /* 3560 */ 30, 4, 117, 4, 132, 30, 91, 137, 30, 4,
970 /* 3570 */ 117, 4, 135, 30, 5, 116, 5, 130, 30, 6,
971 /* 3580 */ 115, 6, 130, 31, 6, 114, 6, 129, 31, 7,
972 /* 3590 */ 113, 7, 129, 32, 7, 112, 7, 129, 32, 8,
973 /* 3600 */ 111, 8, 129, 33, 9, 109, 9, 129, 33, 12,
974 /* 3610 */ 106, 12, 129, 34, 13, 104, 13, 129, 35, 15,
975 /* 3620 */ 101, 15, 129, 36, 19, 96, 19, 129, 37, 24,
976 /* 3630 */ 90, 24, 129, 39, 73, 129, 40, 71, 129, 42,
977 /* 3640 */ 67, 129, 44, 63, 129, 46, 59, 129, 49, 53,
978 /* 3650 */ 129, 52, 47, 129, 56, 39, 129, 61, 29, 129,
979 /* 3660 */ 193, 129, 30, 4, 117, 4, 132, 30, 91, 137,
980 /* 3670 */ 30, 4, 80, 4, 117, 4, 140, 30, 4, 79,
981 /* 3680 */ 6, 117, 4, 129, 30, 4, 77, 10, 117, 4,
982 /* 3690 */ 129, 30, 4, 73, 18, 117, 4, 132, 30, 4,
983 /* 3700 */ 117, 4, 130, 30, 5, 116, 5, 130, 30, 7,
984 /* 3710 */ 114, 7, 129, 30, 8, 113, 8, 129, 30, 11,
985 /* 3720 */ 110, 11, 129, 30, 18, 103, 18, 132, 193, 129,
986 /* 3730 */ 30, 4, 117, 4, 132, 30, 91, 137, 30, 4,
987 /* 3740 */ 80, 4, 117, 4, 132, 80, 4, 117, 4, 136,
988 /* 3750 */ 79, 6, 117, 4, 129, 77, 10, 117, 4, 129,
989 /* 3760 */ 73, 18, 117, 4, 132, 117, 4, 130, 116, 5,
990 /* 3770 */ 130, 114, 7, 129, 113, 8, 129, 110, 11, 129,
991 /* 3780 */ 103, 18, 132, 193, 129, 63, 25, 129, 57, 37,
992 /* 3790 */ 129, 53, 45, 129, 50, 51, 129, 47, 57, 129,
993 /* 3800 */ 45, 61, 129, 43, 65, 129, 41, 69, 129, 39,
994 /* 3810 */ 73, 129, 38, 25, 92, 21, 129, 36, 21, 97,
995 /* 3820 */ 18, 129, 35, 18, 102, 14, 129, 34, 16, 106,
996 /* 3830 */ 11, 129, 33, 14, 108, 10, 129, 32, 12, 111,
997 /* 3840 */ 8, 129, 32, 10, 113, 6, 129, 31, 10, 114,
998 /* 3850 */ 6, 129, 31, 8, 115, 5, 129, 30, 8, 116,
999 /* 3860 */ 5, 129, 30, 7, 116, 5, 129, 30, 6, 117,
1000 /* 3870 */ 4, 130, 30, 5, 117, 4, 131, 30, 5, 75,
1001 /* 3880 */ 4, 116, 5, 129, 31, 5, 75, 4, 116, 4,
1002 /* 3890 */ 129, 31, 6, 75, 4, 115, 5, 129, 32, 7,
1003 /* 3900 */ 75, 4, 114, 5, 129, 32, 9, 75, 4, 112,
1004 /* 3910 */ 6, 129, 33, 11, 75, 4, 110, 7, 129, 34,
1005 /* 3920 */ 15, 75, 4, 107, 9, 129, 35, 44, 103, 12,
1006 /* 3930 */ 129, 36, 43, 103, 18, 129, 38, 41, 103, 18,
1007 /* 3940 */ 129, 39, 40, 103, 18, 129, 41, 38, 103, 18,
1008 /* 3950 */ 129, 44, 35, 129, 48, 31, 129, 52, 27, 129,
1009 /* 3960 */ 61, 18, 129, 193, 129, 30, 4, 117, 4, 132,
1010 /* 3970 */ 30, 91, 137, 30, 4, 80, 4, 117, 4, 132,
1011 /* 3980 */ 80, 4, 140, 30, 4, 80, 4, 117, 4, 132,
1012 /* 3990 */ 30, 91, 137, 30, 4, 117, 4, 132, 193, 129,
1013 /* 4000 */ 30, 4, 117, 4, 132, 30, 91, 137, 30, 4,
1014 /* 4010 */ 117, 4, 132, 193, 129, 44, 7, 129, 40, 13,
1015 /* 4020 */ 129, 37, 17, 129, 35, 20, 129, 34, 22, 129,
1016 /* 4030 */ 33, 23, 129, 32, 24, 129, 32, 23, 129, 31,
1017 /* 4040 */ 6, 41, 13, 129, 31, 5, 42, 11, 129, 30,
1018 /* 4050 */ 5, 44, 7, 129, 30, 4, 132, 30, 5, 130,
1019 /* 4060 */ 31, 5, 129, 31, 6, 117, 4, 129, 31, 8,
1020 /* 4070 */ 117, 4, 129, 32, 9, 117, 4, 129, 33, 11,
1021 /* 4080 */ 117, 4, 129, 34, 87, 129, 35, 86, 129, 36,
1022 /* 4090 */ 85, 129, 37, 84, 129, 38, 83, 129, 40, 81,
1023 /* 4100 */ 129, 42, 79, 129, 45, 76, 129, 50, 71, 129,
1024 /* 4110 */ 117, 4, 132, 193, 129, 30, 4, 117, 4, 132,
1025 /* 4120 */ 30, 91, 137, 30, 4, 76, 8, 117, 4, 129,
1026 /* 4130 */ 30, 4, 73, 13, 117, 4, 129, 30, 4, 70,
1027 /* 4140 */ 18, 117, 4, 129, 30, 4, 67, 23, 117, 4,
1028 /* 4150 */ 129, 65, 26, 129, 62, 31, 129, 59, 35, 129,
1029 /* 4160 */ 56, 29, 89, 7, 129, 53, 29, 91, 7, 129,
1030 /* 4170 */ 50, 29, 93, 7, 129, 47, 29, 95, 6, 129,
1031 /* 4180 */ 30, 4, 45, 29, 96, 7, 129, 30, 4, 42,
1032 /* 4190 */ 29, 98, 7, 129, 30, 4, 39, 30, 100, 6,
1033 /* 4200 */ 129, 30, 4, 36, 30, 101, 7, 129, 30, 33,
1034 /* 4210 */ 103, 7, 117, 4, 129, 30, 30, 105, 6, 117,
1035 /* 4220 */ 4, 129, 30, 27, 106, 7, 117, 4, 129, 30,
1036 /* 4230 */ 25, 108, 7, 117, 4, 129, 30, 22, 110, 11,
1037 /* 4240 */ 129, 30, 19, 111, 10, 129, 30, 16, 113, 8,
1038 /* 4250 */ 129, 30, 13, 115, 6, 129, 30, 11, 116, 5,
1039 /* 4260 */ 129, 30, 8, 117, 4, 129, 30, 5, 117, 4,
1040 /* 4270 */ 129, 30, 4, 117, 4, 130, 30, 4, 130, 193,
1041 /* 4280 */ 129, 30, 4, 117, 4, 132, 30, 91, 137, 30,
1042 /* 4290 */ 4, 117, 4, 132, 30, 4, 144, 30, 5, 130,
1043 /* 4300 */ 30, 7, 129, 30, 8, 129, 30, 11, 129, 30,
1044 /* 4310 */ 18, 132, 193, 129, 30, 4, 117, 4, 132, 30,
1045 /* 4320 */ 91, 132, 30, 4, 103, 18, 129, 30, 4, 97,
1046 /* 4330 */ 24, 129, 30, 4, 92, 29, 129, 30, 4, 87,
1047 /* 4340 */ 34, 129, 81, 40, 129, 76, 45, 129, 70, 49,
1048 /* 4350 */ 129, 65, 49, 129, 60, 49, 129, 55, 49, 129,
1049 /* 4360 */ 50, 48, 129, 44, 49, 129, 39, 48, 129, 33,
1050 /* 4370 */ 49, 129, 30, 47, 129, 34, 37, 129, 40, 26,
1051 /* 4380 */ 129, 46, 19, 129, 52, 19, 129, 58, 19, 129,
1052 /* 4390 */ 64, 19, 129, 70, 19, 129, 76, 19, 129, 82,
1053 /* 4400 */ 19, 129, 30, 4, 88, 18, 129, 30, 4, 94,
1054 /* 4410 */ 18, 129, 30, 4, 100, 18, 129, 30, 4, 106,
1055 /* 4420 */ 15, 129, 30, 91, 137, 30, 4, 117, 4, 132,
1056 /* 4430 */ 193, 129, 30, 4, 117, 4, 132, 30, 91, 132,
1057 /* 4440 */ 30, 4, 107, 14, 129, 30, 4, 104, 17, 129,
1058 /* 4450 */ 30, 4, 101, 20, 129, 30, 4, 99, 22, 129,
1059 /* 4460 */ 96, 25, 129, 93, 28, 129, 91, 28, 129, 88,
1060 /* 4470 */ 29, 129, 85, 29, 129, 82, 29, 129, 79, 29,
1061 /* 4480 */ 129, 76, 29, 129, 74, 29, 129, 71, 29, 129,
1062 /* 4490 */ 68, 29, 129, 65, 29, 129, 62, 29, 129, 60,
1063 /* 4500 */ 29, 129, 57, 29, 129, 54, 29, 129, 51, 29,
1064 /* 4510 */ 129, 49, 28, 129, 46, 29, 129, 43, 29, 129,
1065 /* 4520 */ 40, 29, 117, 4, 129, 37, 29, 117, 4, 129,
1066 /* 4530 */ 35, 29, 117, 4, 129, 32, 29, 117, 4, 129,
1067 /* 4540 */ 30, 91, 132, 117, 4, 132, 193, 129, 63, 25,
1068 /* 4550 */ 129, 57, 37, 129, 53, 45, 129, 50, 51, 129,
1069 /* 4560 */ 47, 57, 129, 45, 61, 129, 43, 65, 129, 41,
1070 /* 4570 */ 69, 129, 39, 73, 129, 38, 21, 92, 21, 129,
1071 /* 4580 */ 36, 18, 97, 18, 129, 35, 14, 102, 14, 129,
1072 /* 4590 */ 34, 11, 106, 11, 129, 33, 10, 108, 10, 129,
1073 /* 4600 */ 32, 8, 111, 8, 129, 32, 6, 113, 6, 129,
1074 /* 4610 */ 31, 6, 114, 6, 129, 31, 5, 115, 5, 129,
1075 /* 4620 */ 30, 5, 116, 5, 130, 30, 4, 117, 4, 132,
1076 /* 4630 */ 30, 5, 116, 5, 130, 31, 5, 115, 5, 129,
1077 /* 4640 */ 31, 6, 114, 6, 129, 32, 6, 113, 6, 129,
1078 /* 4650 */ 32, 8, 111, 8, 129, 33, 10, 108, 10, 129,
1079 /* 4660 */ 34, 11, 106, 11, 129, 35, 14, 102, 14, 129,
1080 /* 4670 */ 36, 18, 97, 18, 129, 38, 21, 92, 21, 129,
1081 /* 4680 */ 39, 73, 129, 41, 69, 129, 43, 65, 129, 45,
1082 /* 4690 */ 61, 129, 47, 57, 129, 50, 51, 129, 53, 45,
1083 /* 4700 */ 129, 57, 37, 129, 63, 25, 129, 193, 129, 30,
1084 /* 4710 */ 4, 117, 4, 132, 30, 91, 137, 30, 4, 80,
1085 /* 4720 */ 4, 117, 4, 132, 80, 4, 117, 4, 134, 80,
1086 /* 4730 */ 5, 116, 5, 131, 80, 6, 115, 6, 130, 81,
1087 /* 4740 */ 6, 114, 6, 129, 81, 8, 112, 8, 129, 81,
1088 /* 4750 */ 9, 111, 9, 129, 82, 10, 109, 10, 129, 82,
1089 /* 4760 */ 13, 106, 13, 129, 83, 35, 129, 84, 33, 129,
1090 /* 4770 */ 85, 31, 129, 86, 29, 129, 88, 25, 129, 90,
1091 /* 4780 */ 21, 129, 93, 15, 129, 96, 9, 129, 193, 129,
1092 /* 4790 */ 63, 25, 129, 57, 37, 129, 53, 45, 129, 50,
1093 /* 4800 */ 51, 129, 47, 57, 129, 45, 61, 129, 43, 65,
1094 /* 4810 */ 129, 41, 69, 129, 39, 73, 129, 38, 21, 92,
1095 /* 4820 */ 21, 129, 36, 18, 97, 18, 129, 35, 14, 102,
1096 /* 4830 */ 14, 129, 34, 11, 106, 11, 129, 33, 10, 108,
1097 /* 4840 */ 10, 129, 32, 8, 111, 8, 129, 32, 6, 113,
1098 /* 4850 */ 6, 129, 31, 6, 114, 6, 129, 31, 5, 115,
1099 /* 4860 */ 5, 129, 30, 5, 116, 5, 130, 30, 4, 39,
1100 /* 4870 */ 2, 117, 4, 129, 30, 4, 40, 4, 117, 4,
1101 /* 4880 */ 129, 30, 4, 41, 5, 117, 4, 129, 30, 4,
1102 /* 4890 */ 41, 6, 117, 4, 129, 30, 5, 40, 8, 116,
1103 /* 4900 */ 5, 129, 30, 5, 39, 10, 116, 5, 129, 31,
1104 /* 4910 */ 5, 38, 11, 115, 5, 129, 31, 18, 114, 6,
1105 /* 4920 */ 129, 32, 17, 113, 6, 129, 32, 16, 111, 8,
1106 /* 4930 */ 129, 33, 15, 108, 10, 129, 33, 14, 106, 11,
1107 /* 4940 */ 129, 32, 17, 102, 14, 129, 31, 23, 97, 18,
1108 /* 4950 */ 129, 31, 28, 92, 21, 129, 30, 82, 129, 30,
1109 /* 4960 */ 80, 129, 30, 11, 43, 65, 129, 30, 10, 45,
1110 /* 4970 */ 61, 129, 31, 8, 47, 57, 129, 32, 6, 50,
1111 /* 4980 */ 51, 129, 33, 5, 53, 45, 129, 35, 4, 57,
1112 /* 4990 */ 37, 129, 38, 2, 63, 25, 129, 193, 129, 30,
1113 /* 5000 */ 4, 117, 4, 132, 30, 91, 137, 30, 4, 76,
1114 /* 5010 */ 8, 117, 4, 129, 30, 4, 73, 11, 117, 4,
1115 /* 5020 */ 129, 30, 4, 70, 14, 117, 4, 129, 30, 4,
1116 /* 5030 */ 67, 17, 117, 4, 129, 65, 19, 117, 4, 129,
1117 /* 5040 */ 62, 22, 117, 4, 129, 59, 25, 117, 4, 129,
1118 /* 5050 */ 56, 28, 117, 4, 129, 53, 31, 117, 4, 129,
1119 /* 5060 */ 50, 34, 117, 4, 129, 47, 29, 80, 5, 116,
1120 /* 5070 */ 5, 129, 30, 4, 45, 29, 80, 5, 116, 5,
1121 /* 5080 */ 129, 30, 4, 42, 29, 80, 5, 116, 5, 129,
1122 /* 5090 */ 30, 4, 39, 30, 80, 6, 115, 6, 129, 30,
1123 /* 5100 */ 4, 36, 30, 80, 6, 115, 6, 129, 30, 33,
1124 /* 5110 */ 81, 6, 114, 6, 129, 30, 30, 81, 8, 112,
1125 /* 5120 */ 8, 129, 30, 27, 81, 9, 111, 9, 129, 30,
1126 /* 5130 */ 25, 82, 10, 109, 10, 129, 30, 22, 82, 13,
1127 /* 5140 */ 106, 13, 129, 30, 19, 83, 35, 129, 30, 16,
1128 /* 5150 */ 84, 33, 129, 30, 13, 85, 31, 129, 30, 11,
1129 /* 5160 */ 86, 29, 129, 30, 8, 88, 25, 129, 30, 5,
1130 /* 5170 */ 90, 21, 129, 30, 4, 93, 15, 129, 30, 4,
1131 /* 5180 */ 96, 9, 129, 30, 4, 130, 193, 129, 30, 18,
1132 /* 5190 */ 130, 30, 18, 89, 15, 129, 30, 18, 85, 23,
1133 /* 5200 */ 129, 34, 11, 83, 27, 129, 34, 9, 81, 31,
1134 /* 5210 */ 129, 33, 8, 79, 35, 129, 33, 6, 78, 16,
1135 /* 5220 */ 106, 9, 129, 32, 6, 77, 15, 109, 7, 129,
1136 /* 5230 */ 32, 5, 76, 14, 111, 6, 129, 31, 5, 75,
1137 /* 5240 */ 14, 113, 5, 129, 31, 4, 74, 15, 114, 5,
1138 /* 5250 */ 129, 31, 4, 74, 14, 115, 4, 129, 30, 4,
1139 /* 5260 */ 73, 15, 116, 4, 129, 30, 4, 73, 14, 116,
1140 /* 5270 */ 4, 129, 30, 4, 73, 14, 117, 4, 129, 30,
1141 /* 5280 */ 4, 72, 15, 117, 4, 130, 30, 4, 71, 15,
1142 /* 5290 */ 117, 4, 130, 30, 4, 70, 15, 117, 4, 129,
1143 /* 5300 */ 30, 5, 70, 15, 117, 4, 129, 30, 5, 69,
1144 /* 5310 */ 15, 116, 5, 129, 30, 6, 68, 16, 115, 5,
1145 /* 5320 */ 129, 31, 6, 67, 16, 114, 6, 129, 31, 7,
1146 /* 5330 */ 66, 17, 113, 6, 129, 32, 7, 64, 18, 111,
1147 /* 5340 */ 8, 129, 32, 8, 62, 19, 109, 9, 129, 33,
1148 /* 5350 */ 9, 60, 20, 107, 10, 129, 34, 11, 57, 22,
1149 /* 5360 */ 103, 13, 129, 35, 43, 103, 18, 129, 36, 41,
1150 /* 5370 */ 103, 18, 129, 38, 38, 103, 18, 129, 39, 35,
1151 /* 5380 */ 103, 18, 129, 41, 31, 129, 43, 27, 129, 46,
1152 /* 5390 */ 22, 129, 49, 14, 129, 193, 129, 103, 18, 132,
1153 /* 5400 */ 110, 11, 129, 113, 8, 129, 114, 7, 129, 116,
1154 /* 5410 */ 5, 130, 117, 4, 132, 30, 4, 117, 4, 132,
1155 /* 5420 */ 30, 91, 137, 30, 4, 117, 4, 132, 117, 4,
1156 /* 5430 */ 132, 116, 5, 130, 114, 7, 129, 113, 8, 129,
1157 /* 5440 */ 110, 11, 129, 103, 18, 132, 193, 129, 117, 4,
1158 /* 5450 */ 132, 56, 65, 129, 50, 71, 129, 46, 75, 129,
1159 /* 5460 */ 44, 77, 129, 42, 79, 129, 40, 81, 129, 38,
1160 /* 5470 */ 83, 129, 36, 85, 129, 35, 86, 129, 34, 20,
1161 /* 5480 */ 117, 4, 129, 33, 17, 117, 4, 129, 32, 15,
1162 /* 5490 */ 117, 4, 129, 32, 13, 117, 4, 129, 31, 12,
1163 /* 5500 */ 129, 31, 10, 129, 31, 9, 129, 30, 9, 129,
1164 /* 5510 */ 30, 8, 130, 30, 7, 132, 31, 6, 130, 31,
1165 /* 5520 */ 7, 129, 32, 6, 129, 32, 7, 129, 33, 7,
1166 /* 5530 */ 129, 34, 7, 129, 35, 8, 129, 36, 9, 117,
1167 /* 5540 */ 4, 129, 38, 9, 117, 4, 129, 40, 10, 117,
1168 /* 5550 */ 4, 129, 42, 12, 117, 4, 129, 44, 77, 129,
1169 /* 5560 */ 46, 75, 129, 50, 71, 129, 56, 43, 100, 21,
1170 /* 5570 */ 129, 117, 4, 132, 193, 129, 117, 4, 132, 115,
1171 /* 5580 */ 6, 129, 110, 11, 129, 105, 16, 129, 101, 20,
1172 /* 5590 */ 129, 96, 25, 129, 92, 29, 129, 87, 34, 129,
1173 /* 5600 */ 83, 38, 129, 78, 43, 129, 74, 47, 129, 70,
1174 /* 5610 */ 42, 117, 4, 129, 65, 42, 117, 4, 129, 60,
1175 /* 5620 */ 43, 117, 4, 129, 56, 42, 129, 51, 42, 129,
1176 /* 5630 */ 46, 43, 129, 42, 43, 129, 37, 44, 129, 33,
1177 /* 5640 */ 43, 129, 30, 42, 129, 33, 34, 129, 38, 25,
1178 /* 5650 */ 129, 42, 16, 129, 47, 15, 129, 52, 15, 129,
1179 /* 5660 */ 57, 15, 129, 61, 16, 129, 66, 16, 129, 71,
1180 /* 5670 */ 16, 129, 76, 16, 129, 80, 16, 129, 85, 16,
1181 /* 5680 */ 117, 4, 129, 90, 16, 117, 4, 129, 95, 16,
1182 /* 5690 */ 117, 4, 129, 100, 21, 129, 105, 16, 129, 110,
1183 /* 5700 */ 11, 129, 114, 7, 129, 117, 4, 132, 193, 129,
1184 /* 5710 */ 117, 4, 132, 115, 6, 129, 110, 11, 129, 105,
1185 /* 5720 */ 16, 129, 101, 20, 129, 96, 25, 129, 92, 29,
1186 /* 5730 */ 129, 87, 34, 129, 83, 38, 129, 78, 43, 129,
1187 /* 5740 */ 74, 47, 129, 70, 42, 117, 4, 129, 65, 42,
1188 /* 5750 */ 117, 4, 129, 60, 43, 117, 4, 129, 56, 42,
1189 /* 5760 */ 129, 51, 42, 129, 46, 43, 129, 42, 43, 129,
1190 /* 5770 */ 37, 44, 129, 33, 43, 129, 30, 42, 129, 33,
1191 /* 5780 */ 34, 129, 38, 25, 129, 42, 16, 129, 47, 15,
1192 /* 5790 */ 129, 52, 15, 129, 57, 15, 129, 61, 16, 129,
1193 /* 5800 */ 65, 17, 129, 60, 27, 129, 56, 36, 129, 51,
1194 /* 5810 */ 42, 129, 46, 43, 129, 42, 43, 129, 37, 44,
1195 /* 5820 */ 129, 33, 43, 129, 30, 42, 129, 33, 34, 129,
1196 /* 5830 */ 38, 25, 129, 42, 16, 129, 47, 15, 129, 52,
1197 /* 5840 */ 15, 129, 57, 15, 129, 61, 16, 129, 66, 16,
1198 /* 5850 */ 129, 71, 16, 129, 76, 16, 129, 80, 16, 129,
1199 /* 5860 */ 85, 16, 117, 4, 129, 90, 16, 117, 4, 129,
1200 /* 5870 */ 95, 16, 117, 4, 129, 100, 21, 129, 105, 16,
1201 /* 5880 */ 129, 110, 11, 129, 114, 7, 129, 117, 4, 132,
1202 /* 5890 */ 193, 129, 30, 4, 117, 4, 132, 30, 4, 115,
1203 /* 5900 */ 6, 129, 30, 4, 112, 9, 129, 30, 6, 109,
1204 /* 5910 */ 12, 129, 30, 9, 106, 15, 129, 30, 11, 103,
1205 /* 5920 */ 18, 129, 30, 14, 100, 21, 129, 30, 4, 38,
1206 /* 5930 */ 9, 98, 23, 129, 30, 4, 40, 10, 95, 26,
1207 /* 5940 */ 129, 30, 4, 43, 9, 92, 29, 129, 46, 9,
1208 /* 5950 */ 89, 32, 129, 49, 8, 86, 28, 117, 4, 129,
1209 /* 5960 */ 51, 9, 83, 28, 117, 4, 129, 54, 9, 80,
1210 /* 5970 */ 28, 117, 4, 129, 57, 8, 77, 28, 117, 4,
1211 /* 5980 */ 129, 59, 9, 74, 28, 129, 62, 37, 129, 64,
1212 /* 5990 */ 33, 129, 66, 28, 129, 63, 28, 129, 60, 28,
1213 /* 6000 */ 129, 57, 28, 129, 54, 33, 129, 51, 39, 129,
1214 /* 6010 */ 48, 29, 83, 9, 129, 30, 4, 45, 29, 86,
1215 /* 6020 */ 9, 129, 30, 4, 42, 29, 89, 9, 129, 30,
1216 /* 6030 */ 4, 39, 29, 92, 8, 129, 30, 4, 36, 29,
1217 /* 6040 */ 94, 9, 129, 30, 32, 97, 9, 129, 30, 29,
1218 /* 6050 */ 100, 8, 117, 4, 129, 30, 26, 103, 8, 117,
1219 /* 6060 */ 4, 129, 30, 23, 105, 9, 117, 4, 129, 30,
1220 /* 6070 */ 20, 108, 13, 129, 30, 18, 111, 10, 129, 30,
1221 /* 6080 */ 15, 113, 8, 129, 30, 12, 116, 5, 129, 30,
1222 /* 6090 */ 9, 117, 4, 129, 30, 6, 117, 4, 129, 30,
1223 /* 6100 */ 4, 117, 4, 132, 193, 129, 117, 4, 132, 114,
1224 /* 6110 */ 7, 129, 111, 10, 129, 108, 13, 129, 105, 16,
1225 /* 6120 */ 129, 102, 19, 129, 100, 21, 129, 96, 25, 129,
1226 /* 6130 */ 93, 28, 129, 90, 31, 129, 87, 34, 129, 84,
1227 /* 6140 */ 30, 117, 4, 129, 30, 4, 81, 30, 117, 4,
1228 /* 6150 */ 129, 30, 4, 78, 30, 117, 4, 129, 30, 4,
1229 /* 6160 */ 75, 30, 117, 4, 129, 30, 4, 72, 30, 129,
1230 /* 6170 */ 30, 69, 129, 30, 66, 129, 30, 63, 129, 30,
1231 /* 6180 */ 60, 129, 30, 57, 129, 30, 54, 129, 30, 51,
1232 /* 6190 */ 129, 30, 48, 129, 30, 51, 129, 30, 4, 73,
1233 /* 6200 */ 12, 129, 30, 4, 76, 12, 129, 30, 4, 80,
1234 /* 6210 */ 12, 129, 30, 4, 83, 12, 129, 87, 12, 129,
1235 /* 6220 */ 90, 12, 117, 4, 129, 94, 11, 117, 4, 129,
1236 /* 6230 */ 97, 12, 117, 4, 129, 101, 12, 117, 4, 129,
1237 /* 6240 */ 104, 17, 129, 108, 13, 129, 111, 10, 129, 115,
1238 /* 6250 */ 6, 129, 117, 4, 134, 193, 129, 30, 1, 103,
1239 /* 6260 */ 18, 129, 30, 4, 103, 18, 129, 30, 7, 103,
1240 /* 6270 */ 18, 129, 30, 9, 103, 18, 129, 30, 12, 110,
1241 /* 6280 */ 11, 129, 30, 15, 113, 8, 129, 30, 18, 114,
1242 /* 6290 */ 7, 129, 30, 21, 116, 5, 129, 30, 24, 116,
1243 /* 6300 */ 5, 129, 30, 27, 117, 4, 129, 30, 30, 117,
1244 /* 6310 */ 4, 129, 30, 33, 117, 4, 129, 30, 4, 37,
1245 /* 6320 */ 28, 117, 4, 129, 30, 4, 40, 28, 117, 4,
1246 /* 6330 */ 129, 30, 4, 42, 29, 117, 4, 129, 30, 4,
1247 /* 6340 */ 45, 29, 117, 4, 129, 30, 4, 48, 29, 117,
1248 /* 6350 */ 4, 129, 30, 4, 51, 29, 117, 4, 129, 30,
1249 /* 6360 */ 4, 54, 29, 117, 4, 129, 30, 4, 57, 29,
1250 /* 6370 */ 117, 4, 129, 30, 4, 59, 30, 117, 4, 129,
1251 /* 6380 */ 30, 4, 62, 30, 117, 4, 129, 30, 4, 65,
1252 /* 6390 */ 30, 117, 4, 129, 30, 4, 68, 30, 117, 4,
1253 /* 6400 */ 129, 30, 4, 71, 30, 117, 4, 129, 30, 4,
1254 /* 6410 */ 74, 30, 117, 4, 129, 30, 4, 77, 30, 117,
1255 /* 6420 */ 4, 129, 30, 4, 80, 30, 117, 4, 129, 30,
1256 /* 6430 */ 4, 83, 30, 117, 4, 129, 30, 4, 86, 35,
1257 /* 6440 */ 129, 30, 4, 89, 32, 129, 30, 4, 91, 30,
1258 /* 6450 */ 129, 30, 4, 94, 27, 129, 30, 5, 97, 24,
1259 /* 6460 */ 129, 30, 5, 100, 21, 129, 30, 7, 103, 18,
1260 /* 6470 */ 129, 30, 8, 106, 15, 129, 30, 11, 109, 12,
1261 /* 6480 */ 129, 30, 18, 112, 9, 129, 30, 18, 115, 6,
1262 /* 6490 */ 129, 30, 18, 117, 4, 129, 30, 18, 120, 1,
1263 /* 6500 */ 129, 193, 129, 42, 8, 129, 38, 16, 129, 36,
1264 /* 6510 */ 20, 129, 34, 24, 71, 5, 129, 33, 26, 69,
1265 /* 6520 */ 10, 129, 32, 28, 68, 13, 129, 31, 30, 68,
1266 /* 6530 */ 14, 129, 31, 9, 52, 9, 68, 15, 129, 30,
1267 /* 6540 */ 8, 54, 8, 69, 14, 129, 30, 7, 55, 7,
1268 /* 6550 */ 71, 4, 78, 6, 129, 30, 6, 56, 6, 79,
1269 /* 6560 */ 5, 129, 30, 6, 56, 6, 80, 4, 130, 31,
1270 /* 6570 */ 5, 56, 5, 80, 4, 129, 31, 5, 56, 5,
1271 /* 6580 */ 79, 5, 129, 32, 5, 55, 5, 78, 6, 129,
1272 /* 6590 */ 33, 5, 54, 5, 77, 7, 129, 34, 6, 52,
1273 /* 6600 */ 6, 74, 9, 129, 35, 48, 129, 33, 49, 129,
1274 /* 6610 */ 32, 49, 129, 31, 49, 129, 30, 49, 129, 30,
1275 /* 6620 */ 47, 129, 30, 45, 129, 30, 41, 129, 30, 6,
1276 /* 6630 */ 129, 30, 4, 129, 30, 3, 129, 30, 2, 129,
1277 /* 6640 */ 193, 129, 30, 4, 117, 4, 130, 31, 90, 136,
1278 /* 6650 */ 37, 5, 72, 5, 129, 35, 5, 74, 5, 129,
1279 /* 6660 */ 33, 5, 76, 5, 129, 32, 5, 77, 5, 129,
1280 /* 6670 */ 31, 5, 78, 5, 129, 31, 4, 79, 4, 129,
1281 /* 6680 */ 30, 5, 79, 5, 131, 30, 6, 78, 6, 129,
1282 /* 6690 */ 30, 7, 77, 7, 129, 31, 8, 75, 8, 129,
1283 /* 6700 */ 31, 11, 72, 11, 129, 32, 15, 67, 15, 129,
1284 /* 6710 */ 33, 48, 129, 34, 46, 129, 35, 44, 129, 37,
1285 /* 6720 */ 40, 129, 39, 36, 129, 42, 30, 129, 46, 22,
1286 /* 6730 */ 129, 193, 129, 48, 18, 129, 43, 28, 129, 41,
1287 /* 6740 */ 32, 129, 39, 36, 129, 37, 40, 129, 35, 44,
1288 /* 6750 */ 129, 34, 46, 129, 33, 13, 68, 13, 129, 32,
1289 /* 6760 */ 9, 73, 9, 129, 32, 7, 75, 7, 129, 31,
1290 /* 6770 */ 6, 77, 6, 129, 31, 5, 78, 5, 129, 30,
1291 /* 6780 */ 5, 79, 5, 129, 30, 4, 80, 4, 133, 31,
1292 /* 6790 */ 3, 79, 4, 129, 31, 4, 79, 4, 129, 32,
1293 /* 6800 */ 3, 78, 4, 129, 32, 4, 76, 6, 129, 33,
1294 /* 6810 */ 4, 74, 7, 129, 34, 4, 72, 8, 129, 35,
1295 /* 6820 */ 5, 72, 7, 129, 37, 5, 73, 4, 129, 39,
1296 /* 6830 */ 4, 74, 1, 129, 129, 193, 129, 46, 22, 129,
1297 /* 6840 */ 42, 30, 129, 39, 36, 129, 37, 40, 129, 35,
1298 /* 6850 */ 44, 129, 34, 46, 129, 33, 48, 129, 32, 15,
1299 /* 6860 */ 67, 15, 129, 31, 11, 72, 11, 129, 31, 8,
1300 /* 6870 */ 75, 8, 129, 30, 7, 77, 7, 129, 30, 6,
1301 /* 6880 */ 78, 6, 129, 30, 5, 79, 5, 131, 31, 4,
1302 /* 6890 */ 79, 4, 129, 31, 5, 78, 5, 129, 32, 5,
1303 /* 6900 */ 77, 5, 129, 33, 5, 76, 5, 129, 35, 5,
1304 /* 6910 */ 74, 5, 117, 4, 129, 37, 5, 72, 5, 117,
1305 /* 6920 */ 4, 129, 30, 91, 136, 30, 4, 130, 193, 129,
1306 /* 6930 */ 48, 18, 129, 43, 28, 129, 41, 32, 129, 39,
1307 /* 6940 */ 36, 129, 37, 40, 129, 35, 44, 129, 34, 46,
1308 /* 6950 */ 129, 33, 13, 55, 4, 68, 13, 129, 32, 9,
1309 /* 6960 */ 55, 4, 73, 9, 129, 32, 7, 55, 4, 75,
1310 /* 6970 */ 7, 129, 31, 6, 55, 4, 77, 6, 129, 31,
1311 /* 6980 */ 5, 55, 4, 78, 5, 129, 30, 5, 55, 4,
1312 /* 6990 */ 79, 5, 129, 30, 4, 55, 4, 80, 4, 132,
1313 /* 7000 */ 30, 4, 55, 4, 79, 5, 129, 31, 3, 55,
1314 /* 7010 */ 4, 78, 5, 129, 31, 4, 55, 4, 77, 6,
1315 /* 7020 */ 129, 32, 3, 55, 4, 75, 7, 129, 32, 4,
1316 /* 7030 */ 55, 4, 73, 9, 129, 33, 4, 55, 4, 68,
1317 /* 7040 */ 13, 129, 34, 4, 55, 25, 129, 35, 5, 55,
1318 /* 7050 */ 24, 129, 37, 5, 55, 22, 129, 39, 4, 55,
1319 /* 7060 */ 20, 129, 55, 18, 129, 55, 16, 129, 55, 11,
1320 /* 7070 */ 129, 193, 129, 80, 4, 129, 30, 4, 80, 4,
1321 /* 7080 */ 130, 30, 78, 129, 30, 82, 129, 30, 85, 129,
1322 /* 7090 */ 30, 87, 129, 30, 88, 129, 30, 89, 129, 30,
1323 /* 7100 */ 90, 130, 30, 4, 80, 4, 115, 6, 129, 30,
1324 /* 7110 */ 4, 80, 4, 117, 4, 129, 80, 4, 105, 6,
1325 /* 7120 */ 117, 4, 129, 80, 4, 103, 10, 116, 5, 129,
1326 /* 7130 */ 80, 4, 102, 19, 129, 80, 4, 101, 19, 129,
1327 /* 7140 */ 101, 19, 129, 101, 18, 129, 102, 16, 129, 103,
1328 /* 7150 */ 12, 129, 105, 6, 129, 193, 129, 12, 10, 59,
1329 /* 7160 */ 11, 129, 9, 16, 55, 19, 129, 7, 20, 53,
1330 /* 7170 */ 23, 129, 6, 7, 23, 5, 32, 6, 51, 27,
1331 /* 7180 */ 129, 4, 7, 25, 16, 50, 29, 129, 3, 6,
1332 /* 7190 */ 27, 16, 49, 31, 129, 2, 6, 28, 16, 48,
1333 /* 7200 */ 33, 129, 1, 6, 27, 18, 47, 35, 129, 1,
1334 /* 7210 */ 6, 27, 31, 71, 12, 129, 1, 5, 26, 15,
1335 /* 7220 */ 44, 10, 75, 8, 129, 1, 5, 25, 14, 45,
1336 /* 7230 */ 7, 77, 7, 129, 1, 5, 25, 13, 45, 5,
1337 /* 7240 */ 79, 5, 129, 1, 5, 24, 14, 45, 4, 80,
1338 /* 7250 */ 4, 129, 1, 5, 24, 13, 45, 4, 80, 4,
1339 /* 7260 */ 129, 1, 5, 23, 14, 45, 4, 80, 4, 129,
1340 /* 7270 */ 1, 5, 23, 13, 45, 4, 80, 4, 129, 1,
1341 /* 7280 */ 6, 22, 13, 45, 5, 79, 5, 129, 1, 6,
1342 /* 7290 */ 21, 14, 45, 7, 77, 7, 129, 1, 7, 21,
1343 /* 7300 */ 13, 46, 8, 75, 8, 129, 1, 8, 20, 13,
1344 /* 7310 */ 46, 12, 71, 12, 129, 1, 10, 18, 15, 47,
1345 /* 7320 */ 35, 129, 2, 30, 48, 33, 129, 3, 29, 49,
1346 /* 7330 */ 32, 129, 4, 27, 50, 31, 129, 5, 25, 51,
1347 /* 7340 */ 27, 80, 2, 86, 4, 129, 7, 21, 53, 23,
1348 /* 7350 */ 80, 3, 85, 6, 129, 9, 17, 55, 19, 80,
1349 /* 7360 */ 12, 129, 12, 12, 59, 11, 81, 11, 129, 82,
1350 /* 7370 */ 10, 129, 84, 7, 129, 86, 4, 129, 193, 129,
1351 /* 7380 */ 30, 4, 117, 4, 130, 30, 91, 136, 30, 4,
1352 /* 7390 */ 72, 5, 129, 30, 4, 74, 5, 129, 75, 5,
1353 /* 7400 */ 129, 76, 5, 129, 76, 6, 129, 77, 6, 130,
1354 /* 7410 */ 77, 7, 130, 76, 8, 129, 30, 4, 75, 9,
1355 /* 7420 */ 129, 30, 4, 72, 12, 129, 30, 54, 129, 30,
1356 /* 7430 */ 53, 130, 30, 52, 129, 30, 51, 129, 30, 49,
1357 /* 7440 */ 129, 30, 46, 129, 30, 42, 129, 30, 4, 130,
1358 /* 7450 */ 193, 129, 30, 4, 80, 4, 129, 30, 4, 80,
1359 /* 7460 */ 4, 100, 6, 129, 30, 54, 98, 10, 129, 30,
1360 /* 7470 */ 54, 97, 12, 129, 30, 54, 96, 14, 131, 30,
1361 /* 7480 */ 54, 97, 12, 129, 30, 54, 98, 10, 129, 30,
1362 /* 7490 */ 54, 100, 6, 129, 30, 4, 130, 193, 129, 7,
1363 /* 7500 */ 6, 129, 4, 11, 129, 3, 13, 129, 2, 14,
1364 /* 7510 */ 129, 1, 15, 130, 1, 3, 6, 9, 129, 1,
1365 /* 7520 */ 3, 7, 6, 129, 1, 3, 130, 1, 4, 129,
1366 /* 7530 */ 1, 5, 80, 4, 129, 1, 7, 80, 4, 100,
1367 /* 7540 */ 6, 129, 2, 82, 98, 10, 129, 3, 81, 97,
1368 /* 7550 */ 12, 129, 4, 80, 96, 14, 129, 5, 79, 96,
1369 /* 7560 */ 14, 129, 7, 77, 96, 14, 129, 10, 74, 97,
1370 /* 7570 */ 12, 129, 14, 70, 98, 10, 129, 19, 65, 100,
1371 /* 7580 */ 6, 129, 193, 129, 30, 4, 117, 4, 130, 30,
1372 /* 7590 */ 91, 136, 30, 4, 57, 9, 129, 30, 4, 55,
1373 /* 7600 */ 12, 129, 52, 17, 129, 50, 20, 129, 48, 24,
1374 /* 7610 */ 129, 46, 27, 129, 44, 21, 69, 6, 129, 41,
1375 /* 7620 */ 22, 70, 6, 80, 4, 129, 30, 4, 39, 21,
1376 /* 7630 */ 72, 6, 80, 4, 129, 30, 4, 36, 22, 73,
1377 /* 7640 */ 11, 129, 30, 26, 75, 9, 129, 30, 23, 76,
1378 /* 7650 */ 8, 129, 30, 21, 78, 6, 129, 30, 19, 79,
1379 /* 7660 */ 5, 129, 30, 16, 80, 4, 129, 30, 14, 80,
1380 /* 7670 */ 4, 129, 30, 12, 129, 30, 10, 129, 30, 7,
1381 /* 7680 */ 129, 30, 5, 129, 30, 4, 130, 193, 129, 30,
1382 /* 7690 */ 4, 117, 4, 130, 30, 91, 136, 30, 4, 130,
1383 /* 7700 */ 193, 129, 30, 4, 80, 4, 130, 30, 54, 136,
1384 /* 7710 */ 30, 4, 72, 5, 129, 30, 4, 74, 5, 129,
1385 /* 7720 */ 75, 5, 129, 76, 5, 129, 30, 4, 75, 7,
1386 /* 7730 */ 129, 30, 4, 74, 9, 129, 30, 54, 132, 30,
1387 /* 7740 */ 53, 129, 30, 52, 129, 30, 51, 129, 30, 48,
1388 /* 7750 */ 129, 30, 4, 72, 5, 129, 30, 4, 74, 5,
1389 /* 7760 */ 129, 75, 5, 129, 76, 5, 129, 30, 4, 75,
1390 /* 7770 */ 7, 129, 30, 4, 74, 9, 129, 30, 54, 132,
1391 /* 7780 */ 30, 53, 129, 30, 52, 129, 30, 51, 129, 30,
1392 /* 7790 */ 48, 129, 30, 4, 130, 193, 129, 30, 4, 80,
1393 /* 7800 */ 4, 130, 30, 54, 136, 30, 4, 72, 5, 129,
1394 /* 7810 */ 30, 4, 74, 5, 129, 75, 5, 129, 76, 5,
1395 /* 7820 */ 129, 76, 6, 129, 77, 6, 130, 77, 7, 130,
1396 /* 7830 */ 76, 8, 129, 30, 4, 75, 9, 129, 30, 4,
1397 /* 7840 */ 72, 12, 129, 30, 54, 129, 30, 53, 130, 30,
1398 /* 7850 */ 52, 129, 30, 51, 129, 30, 49, 129, 30, 46,
1399 /* 7860 */ 129, 30, 42, 129, 30, 4, 130, 193, 129, 48,
1400 /* 7870 */ 18, 129, 43, 28, 129, 41, 32, 129, 39, 36,
1401 /* 7880 */ 129, 37, 40, 129, 35, 44, 129, 34, 46, 129,
1402 /* 7890 */ 33, 13, 68, 13, 129, 32, 9, 73, 9, 129,
1403 /* 7900 */ 32, 7, 75, 7, 129, 31, 6, 77, 6, 129,
1404 /* 7910 */ 31, 5, 78, 5, 129, 30, 5, 79, 5, 129,
1405 /* 7920 */ 30, 4, 80, 4, 132, 30, 5, 79, 5, 130,
1406 /* 7930 */ 31, 5, 78, 5, 129, 31, 6, 77, 6, 129,
1407 /* 7940 */ 32, 7, 75, 7, 129, 32, 9, 73, 9, 129,
1408 /* 7950 */ 33, 13, 68, 13, 129, 34, 46, 129, 35, 44,
1409 /* 7960 */ 129, 37, 40, 129, 39, 36, 129, 41, 32, 129,
1410 /* 7970 */ 43, 28, 129, 48, 18, 129, 193, 129, 1, 3,
1411 /* 7980 */ 80, 4, 130, 1, 83, 137, 37, 5, 72, 5,
1412 /* 7990 */ 129, 35, 5, 74, 5, 129, 33, 5, 76, 5,
1413 /* 8000 */ 129, 32, 5, 77, 5, 129, 31, 5, 78, 5,
1414 /* 8010 */ 129, 31, 4, 79, 4, 129, 30, 5, 79, 5,
1415 /* 8020 */ 131, 30, 6, 78, 6, 129, 30, 7, 77, 7,
1416 /* 8030 */ 129, 31, 8, 75, 8, 129, 31, 11, 72, 11,
1417 /* 8040 */ 129, 32, 15, 67, 15, 129, 33, 48, 129, 34,
1418 /* 8050 */ 46, 129, 35, 44, 129, 37, 40, 129, 39, 36,
1419 /* 8060 */ 129, 42, 30, 129, 46, 22, 129, 193, 129, 46,
1420 /* 8070 */ 22, 129, 42, 30, 129, 39, 36, 129, 37, 40,
1421 /* 8080 */ 129, 35, 44, 129, 34, 46, 129, 33, 48, 129,
1422 /* 8090 */ 32, 15, 67, 15, 129, 31, 11, 72, 11, 129,
1423 /* 8100 */ 31, 8, 75, 8, 129, 30, 7, 77, 7, 129,
1424 /* 8110 */ 30, 6, 78, 6, 129, 30, 5, 79, 5, 131,
1425 /* 8120 */ 31, 4, 79, 4, 129, 31, 5, 78, 5, 129,
1426 /* 8130 */ 32, 5, 77, 5, 129, 33, 5, 76, 5, 129,
1427 /* 8140 */ 35, 5, 74, 5, 129, 37, 5, 72, 5, 129,
1428 /* 8150 */ 1, 83, 136, 1, 3, 80, 4, 130, 193, 129,
1429 /* 8160 */ 30, 4, 80, 4, 130, 30, 54, 136, 30, 4,
1430 /* 8170 */ 68, 6, 129, 30, 4, 70, 6, 129, 71, 7,
1431 /* 8180 */ 129, 72, 7, 129, 73, 7, 129, 74, 7, 129,
1432 /* 8190 */ 74, 8, 129, 75, 8, 130, 69, 15, 129, 67,
1433 /* 8200 */ 17, 129, 66, 18, 129, 65, 19, 130, 65, 18,
1434 /* 8210 */ 130, 66, 16, 129, 67, 13, 129, 69, 8, 129,
1435 /* 8220 */ 193, 129, 30, 13, 64, 8, 129, 30, 13, 61,
1436 /* 8230 */ 14, 129, 30, 13, 59, 18, 129, 30, 13, 57,
1437 /* 8240 */ 22, 129, 33, 8, 56, 24, 129, 32, 7, 55,
1438 /* 8250 */ 26, 129, 32, 6, 54, 28, 129, 31, 6, 53,
1439 /* 8260 */ 16, 77, 6, 129, 31, 5, 53, 14, 79, 4,
1440 /* 8270 */ 129, 30, 5, 52, 14, 80, 4, 129, 30, 5,
1441 /* 8280 */ 52, 13, 80, 4, 129, 30, 4, 52, 13, 80,
1442 /* 8290 */ 4, 129, 30, 4, 52, 12, 80, 4, 129, 30,
1443 /* 8300 */ 4, 51, 13, 80, 4, 130, 30, 4, 50, 13,
1444 /* 8310 */ 79, 5, 129, 30, 4, 50, 13, 78, 5, 129,
1445 /* 8320 */ 30, 5, 49, 14, 77, 6, 129, 31, 4, 49,
1446 /* 8330 */ 13, 76, 6, 129, 31, 5, 48, 14, 75, 7,
1447 /* 8340 */ 129, 32, 5, 47, 14, 73, 8, 129, 32, 6,
1448 /* 8350 */ 45, 16, 71, 13, 129, 33, 27, 71, 13, 129,
1449 /* 8360 */ 34, 26, 71, 13, 129, 35, 24, 71, 13, 129,
1450 /* 8370 */ 37, 20, 129, 39, 16, 129, 43, 9, 129, 193,
1451 /* 8380 */ 129, 80, 4, 131, 41, 56, 129, 37, 60, 129,
1452 /* 8390 */ 35, 62, 129, 33, 64, 129, 32, 65, 129, 31,
1453 /* 8400 */ 66, 129, 30, 67, 130, 30, 11, 80, 4, 129,
1454 /* 8410 */ 30, 9, 80, 4, 129, 30, 8, 80, 4, 129,
1455 /* 8420 */ 31, 7, 80, 4, 129, 31, 6, 129, 32, 5,
1456 /* 8430 */ 129, 33, 5, 129, 35, 4, 129, 38, 3, 129,
1457 /* 8440 */ 193, 129, 80, 4, 130, 42, 42, 129, 38, 46,
1458 /* 8450 */ 129, 35, 49, 129, 33, 51, 129, 32, 52, 129,
1459 /* 8460 */ 31, 53, 130, 30, 54, 129, 30, 12, 129, 30,
1460 /* 8470 */ 9, 129, 30, 8, 129, 30, 7, 130, 31, 6,
1461 /* 8480 */ 130, 32, 6, 129, 33, 5, 129, 34, 5, 129,
1462 /* 8490 */ 35, 5, 80, 4, 129, 37, 5, 80, 4, 129,
1463 /* 8500 */ 30, 54, 136, 30, 4, 130, 193, 129, 80, 4,
1464 /* 8510 */ 130, 77, 7, 129, 74, 10, 129, 70, 14, 129,
1465 /* 8520 */ 66, 18, 129, 62, 22, 129, 59, 25, 129, 55,
1466 /* 8530 */ 29, 129, 51, 33, 129, 47, 37, 129, 44, 32,
1467 /* 8540 */ 80, 4, 129, 40, 32, 80, 4, 129, 36, 32,
1468 /* 8550 */ 129, 32, 33, 129, 30, 31, 129, 33, 24, 129,
1469 /* 8560 */ 36, 17, 129, 40, 12, 129, 44, 12, 129, 48,
1470 /* 8570 */ 12, 129, 51, 13, 129, 55, 13, 129, 59, 13,
1471 /* 8580 */ 80, 4, 129, 63, 13, 80, 4, 129, 67, 17,
1472 /* 8590 */ 129, 71, 13, 129, 74, 10, 129, 78, 6, 129,
1473 /* 8600 */ 80, 4, 131, 193, 129, 80, 4, 130, 77, 7,
1474 /* 8610 */ 129, 74, 10, 129, 70, 14, 129, 66, 18, 129,
1475 /* 8620 */ 62, 22, 129, 59, 25, 129, 55, 29, 129, 51,
1476 /* 8630 */ 33, 129, 47, 37, 129, 44, 32, 80, 4, 129,
1477 /* 8640 */ 40, 32, 80, 4, 129, 36, 32, 129, 32, 33,
1478 /* 8650 */ 129, 30, 31, 129, 33, 24, 129, 36, 17, 129,
1479 /* 8660 */ 40, 12, 129, 44, 12, 129, 47, 13, 129, 44,
1480 /* 8670 */ 20, 129, 40, 28, 129, 36, 31, 129, 32, 32,
1481 /* 8680 */ 129, 30, 30, 129, 33, 24, 129, 36, 17, 129,
1482 /* 8690 */ 40, 12, 129, 44, 12, 129, 48, 12, 129, 51,
1483 /* 8700 */ 13, 129, 55, 13, 129, 59, 13, 80, 4, 129,
1484 /* 8710 */ 63, 13, 80, 4, 129, 67, 17, 129, 71, 13,
1485 /* 8720 */ 129, 74, 10, 129, 78, 6, 129, 80, 4, 131,
1486 /* 8730 */ 193, 129, 30, 4, 80, 4, 130, 30, 4, 79,
1487 /* 8740 */ 5, 129, 30, 5, 77, 7, 129, 30, 6, 74,
1488 /* 8750 */ 10, 129, 30, 8, 72, 12, 129, 30, 11, 69,
1489 /* 8760 */ 15, 129, 30, 13, 67, 17, 129, 30, 4, 37,
1490 /* 8770 */ 8, 64, 20, 129, 30, 4, 39, 8, 62, 22,
1491 /* 8780 */ 129, 41, 8, 59, 25, 129, 43, 8, 57, 27,
1492 /* 8790 */ 129, 45, 8, 55, 22, 80, 4, 129, 47, 27,
1493 /* 8800 */ 80, 4, 129, 49, 23, 129, 47, 22, 129, 44,
1494 /* 8810 */ 23, 129, 42, 22, 129, 30, 4, 39, 27, 129,
1495 /* 8820 */ 30, 4, 37, 31, 129, 30, 27, 62, 8, 129,
1496 /* 8830 */ 30, 25, 64, 8, 129, 30, 22, 66, 8, 80,
1497 /* 8840 */ 4, 129, 30, 20, 68, 8, 80, 4, 129, 30,
1498 /* 8850 */ 17, 70, 8, 80, 4, 129, 30, 15, 73, 11,
1499 /* 8860 */ 129, 30, 12, 75, 9, 129, 30, 10, 77, 7,
1500 /* 8870 */ 129, 30, 7, 79, 5, 129, 30, 5, 80, 4,
1501 /* 8880 */ 129, 30, 4, 80, 4, 130, 193, 129, 4, 5,
1502 80, 4, 129, 2, 9, 80, 4, 129, 1, 11,
1503 77, 7, 129, 1, 12, 74, 10, 129, 1, 12,
1504 70, 14, 129, 1, 12, 66, 18, 129, 1, 11,
1505 62, 22, 129, 2, 9, 59, 25, 129, 4, 11,
1506 55, 29, 129, 7, 12, 51, 33, 129, 10, 12,
1507 47, 37, 129, 14, 12, 44, 32, 80, 4, 129,
1508 17, 13, 40, 32, 80, 4, 129, 21, 13, 36,
1509 32, 129, 25, 40, 129, 29, 32, 129, 33, 24,
1510 129, 36, 17, 129, 40, 12, 129, 44, 12, 129,
1511 48, 12, 129, 51, 13, 129, 55, 13, 129, 59,
1512 13, 80, 4, 129, 63, 13, 80, 4, 129, 67,
1513 17, 129, 71, 13, 129, 74, 10, 129, 78, 6,
1514 129, 80, 4, 131, 193, 129, 30, 1, 71, 13,
1515 129, 30, 3, 71, 13, 129, 30, 6, 71, 13,
1516 129, 30, 9, 75, 9, 129, 30, 11, 77, 7,
1517 129, 30, 14, 79, 5, 129, 30, 17, 79, 5,
1518 129, 30, 19, 80, 4, 129, 30, 22, 80, 4,
1519 129, 30, 25, 80, 4, 129, 30, 27, 80, 4,
1520 129, 30, 4, 36, 24, 80, 4, 129, 30, 4,
1521 38, 25, 80, 4, 129, 30, 4, 41, 24, 80,
1522 4, 129, 30, 4, 44, 24, 80, 4, 129, 30,
1523 4, 46, 25, 80, 4, 129, 30, 4, 49, 25,
1524 80, 4, 129, 30, 4, 52, 24, 80, 4, 129,
1525 30, 4, 54, 30, 129, 30, 4, 57, 27, 129,
1526 30, 4, 59, 25, 129, 30, 4, 62, 22, 129,
1527 30, 4, 65, 19, 129, 30, 5, 67, 17, 129,
1528 30, 5, 70, 14, 129, 30, 7, 73, 11, 129,
1529 30, 9, 76, 8, 129, 30, 13, 78, 6, 129,
1530 30, 13, 81, 3, 129, 30, 13, 129, 193, 2,
1531 9, 59, 25, 129, 4, 11, 55, 29, 129, 7,
1532 12, 51, 33, 129, 10, 12, 47, 37, 129, 14,
1533 12, 44, 32, 80, 4, 129, 17, 13, 40, 32,
1534 80, 4, 129, 21, 13, 36, 32, 129, 25, 40,
1535 129, 29, 32, 129, 33, 24, 129, 36, 17, 129,
1536 40, 12, 129, 44, 12, 129, 48, 12, 129, 51,
1537 13, 129, 55, 13, 129, 59, 13, 80, 4, 129,
1538 63, 13, 80, 4, 129, 67, 17, 129, 71, 13,
1539 129, 74, 10, 129, 78, 6, 129, 80, 4, 131,
1543 int fbClass::DrawString( int xpos, int ypos, int height, const char *msg, int r, int g, int b )
1545 char line[DWIDTH];
1546 char message[MAXMSG];
1547 char print[DWIDTH];
1548 int i, j, linen, max, nchars, pc, term, x, y;
1549 int gx = xpos;
1550 int gy = ypos + height -1;
1552 strcpy(message,msg);
1554 memset(print,0,DWIDTH);
1556 for (i = 0; i < height; i++)
1558 j = i * 132 / height;
1559 print[j] = 1;
1562 nchars = strlen(message);
1564 for (i = 0; i < nchars; i++)
1566 if ((u_char) message[i] >= NCHARS || asc_ptr[(u_char) message[i]] == 0) return(gx-xpos);
1569 for (i = 0; i < nchars; i++)
1571 for (j = 0; j < DWIDTH; j++)
1572 line[j] = ' ';
1573 pc = asc_ptr[(u_char) message[i]];
1574 term = 0;
1575 max = 0;
1576 linen = 0;
1577 while (!term)
1579 if (pc < 0 || pc > NBYTES) return(gx-xpos);
1581 x = data_table[pc] & 0377;
1582 if (x >= 128)
1584 if (x>192) term++;
1585 x = x & 63;
1586 while (x--)
1588 if (print[linen++])
1590 for (j=0; j <= max; j++)
1592 if (print[j])
1594 if ( line[j] == '#' ) PaintPixel(gx,gy,r,g,b);
1595 gy--;
1598 gx++;
1599 gy=ypos+height-1;
1602 for (j = 0; j < DWIDTH; j++)
1603 line[j] = ' ';
1604 pc++;
1606 else
1608 y = data_table[pc+1];
1609 max = x+y;
1610 while (x < max) line[x++] = '#';
1611 pc += 2;
1615 return(gx-xpos);
1617 #endif //USEFREETYPEFB
1619 int fbClass::showConsole(int state)
1621 int fd=open("/dev/vc/0", O_RDWR);
1622 if(fd>=0)
1624 if(ioctl(fd, KDSETMODE, state?KD_TEXT:KD_GRAPHICS)<0)
1625 perror("[CONSOLE] <setting /dev/vc/0 status failed>");
1626 close(fd);
1628 return 0;
1631 int fbClass::SetSAA(int value)
1633 int arg, saafd;
1635 switch (value)
1637 case 0: arg=SAA_MODE_RGB; break;
1638 case 1: arg=SAA_MODE_FBAS; break;
1639 case 2: arg=SAA_MODE_SVIDEO; break;
1640 case 3: arg=SAA_MODE_COMPONENT; break;
1643 if ((saafd=open("/dev/dbox/saa0", O_RDWR))<0)
1645 perror("[SAA-Set] saa open"); return 1;
1647 else
1649 if((ioctl(saafd, 5, &arg))<0)
1651 perror("[SAA-Set] saa set"); close(saafd); return 1;
1653 close(saafd);
1655 return 0;
1657 #endif