summaryrefslogtreecommitdiff
path: root/qmake/tools/qstring.cpp
Unidiff
Diffstat (limited to 'qmake/tools/qstring.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--qmake/tools/qstring.cpp17867
1 files changed, 17867 insertions, 0 deletions
diff --git a/qmake/tools/qstring.cpp b/qmake/tools/qstring.cpp
new file mode 100644
index 0000000..56df62b
--- a/dev/null
+++ b/qmake/tools/qstring.cpp
@@ -0,0 +1,17867 @@
1/****************************************************************************
2** $Id$
3**
4** Implementation of the QString class and related Unicode functions
5**
6** Created : 920722
7**
8** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
9**
10** This file is part of the tools module of the Qt GUI Toolkit.
11**
12** This file may be distributed under the terms of the Q Public License
13** as defined by Trolltech AS of Norway and appearing in the file
14** LICENSE.QPL included in the packaging of this file.
15**
16** This file may be distributed and/or modified under the terms of the
17** GNU General Public License version 2 as published by the Free Software
18** Foundation and appearing in the file LICENSE.GPL included in the
19** packaging of this file.
20**
21** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
22** licenses may use this file in accordance with the Qt Commercial License
23** Agreement provided with the Software.
24**
25** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
26** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
27**
28** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
29** information about Qt Commercial License Agreements.
30** See http://www.trolltech.com/qpl/ for QPL licensing information.
31** See http://www.trolltech.com/gpl/ for GPL licensing information.
32**
33** Contact info@trolltech.com if any conditions of this licensing are
34** not clear to you.
35**
36**********************************************************************/
37
38// Don't define it while compiling this module, or USERS of Qt will
39// not be able to link.
40#ifdef QT_NO_CAST_ASCII
41#undef QT_NO_CAST_ASCII
42#endif
43
44#include "qstring.h"
45#include "qregexp.h"
46#include "qdatastream.h"
47#ifndef QT_NO_TEXTCODEC
48#include "qtextcodec.h"
49#endif
50#include <ctype.h>
51#include <limits.h>
52#include <stdarg.h>
53#include <stdio.h>
54#include <stdlib.h>
55#if defined(Q_WS_WIN)
56#include "qt_windows.h"
57#endif
58#if !defined( QT_NO_COMPONENT ) && !defined( QT_LITE_COMPONENT )
59#include "qcleanuphandler.h"
60#endif
61
62
63/* -------------------------------------------------------------------------
64 * unicode information
65 * these tables are generated from the unicode reference file
66 * ftp://ftp.unicode.org/Public/3.2-Update/UnicodeData.txt
67 *
68 * Lars
69 * -------------------------------------------------------------------------
70 */
71
72/* Perl script to generate (run perl -x tools/qstring.cpp)
73
74#!perl
75
76sub numberize
77{
78 my(%r, $n, $id);
79 for $id ( @_ ) {
80 $i = $id;
81 $i="" if $i eq "EMPTY";
82 $r{$i}=$n++;
83 }
84 return %r;
85}
86
87
88sub readUnicodeDataLine {
89 $code = shift @_;
90 for $n (qw{
91 name category combining_class bidi_category
92 character_decomposition decimal_digit_value digit_value
93 numeric_value mirrored oldname comment
94 uppercase lowercase titlecase})
95 {
96 $id = shift @_;
97 $codes = "${n}_code";
98 if ( defined %$codes && defined $$codes{$id} ) {
99 $id = $$codes{$id};
100 }
101 ${$n}{$code}=$id;
102 }
103 $decomp = $character_decomposition{$code};
104 if ( length $decomp == 0 ) {
105 $decomp = "<single>";
106 }
107 if (substr($decomp, 0, 1) ne '<') {
108 $decomp = "<canonical> " . $decomp;
109 }
110 @_ = split(" ", $decomp);
111 $tag = shift @_;
112 $tag = $character_decomposition_tag{$tag};
113 $decomp = join( ", 0x", @_ );
114 $decomp = "0x".$decomp;
115 $decomposition{$code} = $decomp;
116 $decomposition_tag{$code} = $tag;
117 $decomposition_pos{$code} = $position;
118 $len = scalar(@_);
119 $decomposition_len{$code} = $len;
120
121# we use canonical decompositions longer than 1 char
122# we exlude Arabic ligatures from the table
123 if($len > 1 and $tag == 1) {
124# ligature to add...
125 $start = shift @_;
126 $ligature{$start} = $ligature{$start}." ".$code;
127 }
128
129# adjust position
130 if($len != 0) {
131 $position += $len + 3;
132 }
133}
134
135
136# Code to integer mappings...
137#
138%category_code = numberize(qw{
139 EMPTY
140 Mn Mc Me
141 Nd Nl No
142 Zs Zl Zp
143 Cc Cf Cs Co Cn
144
145 Lu Ll Lt Lm Lo
146 Pc Pd Ps Pe Pi Pf Po
147 Sm Sc Sk So
148});
149%bidi_category_code = numberize(qw{
150 L R EN ES ET AN CS B S WS ON LRE LRO AL RLE RLO PDF NSM BN});
151%character_decomposition_tag = numberize(qw{
152 <single> <canonical> <font> <noBreak> <initial> <medial>
153 <final> <isolated> <circle> <super> <sub> <vertical>
154 <wide> <narrow> <small> <square> <compat> <fraction>
155});
156%mirrored_code = numberize(qw{N Y});
157
158%joining_code = numberize(qw{U D R C});
159
160# Read data into hashes...
161#
162open IN, "UnicodeData.txt";
163$position = 1;
164while (<IN>) {
165 @fields = split /;/;
166 if ( length($fields[0]) < 5 ) {
167 if ( $fields[1] =~ /, First>/ ) {
168 $codeRangeBegin = $fields[0];
169 } elsif ( $fields[1] =~ /, Last>/ ) {
170 for ( $i=hex($codeRangeBegin); $i<=hex($fields[0]); $i+=1 ) {
171 @fields2 = @fields;
172 $fields2[0] = sprintf "%lX", $i;
173 readUnicodeDataLine @fields2;
174 }
175 } else {
176 readUnicodeDataLine @fields;
177 }
178 }
179}
180
181open IN2, "ArabicShaping.txt";
182$position = 1;
183while (<IN2>) {
184 @fields = split /;/;
185 $code = shift @fields;
186 $dummy = shift @fields;
187 $join = shift @fields;
188 $join =~ s/ //g;
189 $join = $joining_code{$join};
190 $joining{$code}=$join;
191}
192
193# Build pages...
194#
195$rowtable_txt =
196 "static const Q_UINT8 * const unicode_info[256] = {";
197for $row ( 0..255 ) {
198 $nonzero=0;
199 $txt = "";
200 for $cell ( 0..255 ) {
201 $code = sprintf("%02X%02X",$row,$cell);
202 $info = $category{$code};
203 $info = 0 if !defined $info;
204 $txt .= "\n " if $cell%8 == 0;
205 $txt .= "$info, ";
206 }
207 $therow = $row{$txt};
208 if ( !defined $therow ) {
209 $size+=256;
210 $therow = "ui_".sprintf("%02X",$row);
211 $rowtext{$therow} =
212 "static const Q_UINT8 ${therow}[] = {$txt\n};\n\n";
213 $row{$txt}=$therow;
214 }
215 $rowtable_txt .= "\n " if $row%8 == 0;
216 $rowtable_txt .= "$therow, ";
217}
218
219print "// START OF GENERATED DATA\n\n";
220print "#ifndef QT_NO_UNICODETABLES\n\n";
221
222# Print pages...
223#
224for $r ( sort keys %rowtext ) {
225 print $rowtext{$r};
226}
227print "$rowtable_txt\n};\n";
228$size += 256*4;
229print "// $size bytes\n\n";
230
231# Build decomposition tables
232#
233$rowtable_txt =
234 "static const Q_UINT16 * const decomposition_info[256] = {";
235$table_txt =
236 "static const Q_UINT16 decomposition_map[] = {\n 0,\n";
237for $row ( 0..255 ) {
238 $nonzero=0;
239 $txt = "";
240 for $cell ( 0..255 ) {
241 $code = sprintf("%02X%02X",$row,$cell);
242 $txt .= "\n " if $cell%8 == 0;
243 if( $decomposition_tag{$code} != 0 ) {
244 $txt .= " $decomposition_pos{$code},";
245 $table_txt .= " $decomposition_tag{$code},";
246 $table_txt .= " 0x$code,";
247 $table_txt .= " $decomposition{$code}, 0,\n";
248 $size += 2 * $decomposition_len{$code} + 6;
249 } else {
250 $txt .= " 0,";
251 }
252 }
253 $therow = $row{$txt};
254 if ( !defined $therow ) {
255 $size+=512;
256 $therow = "di_".sprintf("%02X",$row);
257 $dec_rowtext{$therow} =
258 "static const Q_UINT16 ${therow}[] = {$txt\n};\n\n";
259 $row{$txt}=$therow;
260 }
261 $rowtable_txt .= "\n " if $row%8 == 0;
262 $rowtable_txt .= "$therow, ";
263}
264
265# Print decomposition tables
266#
267print "$table_txt\n};\n\n";
268for $r ( sort keys %dec_rowtext ) {
269 print $dec_rowtext{$r};
270}
271print "$rowtable_txt\n};\n";
272$size += 256*4;
273print "// $size bytes\n\n";
274
275
276# build ligature tables
277#
278$size = 0;
279$position = 1;
280$rowtable_txt =
281 "static const Q_UINT16 * const ligature_info[256] = {";
282$table_txt =
283 "static const Q_UINT16 ligature_map[] = {\n 0,\n";
284for $lig_row ( 0..255 ) {
285 $nonzero=0;
286 $txt = "";
287 for $cell ( 0..255 ) {
288 $code = sprintf("%02X%02X",$lig_row,$cell);
289 $txt .= "\n " if $cell%8 == 0;
290 if( defined $ligature{$code} ) {
291 $txt .= " $position,";
292 @ligature = split(" ", $ligature{$code});
293# we need to sort ligatures according to their length.
294# long ones have to come first!
295 @ligature_sort = sort { $decomposition_len{$b} <=> $decomposition_len{$a} } @ligature;
296# now replace each code by its position in
297# the decomposition map.
298 undef(@lig_pos);
299 for $n (@ligature_sort) {
300 push(@lig_pos, $decomposition_pos{$n});
301 }
302# debug info
303 if( 0 ) {
304 print "ligatures: $ligature{$code}\n";
305 $sort = join(" ", @ligature_sort);
306 print "sorted : $sort\n";
307 }
308 $lig = join(", ", @lig_pos);
309 $table_txt .= " $lig, 0,\n";
310 $size += 2 * scalar(@ligature) + 2;
311 $position += scalar(@ligature) + 1;
312 } else {
313 $txt .= " 0,";
314 }
315 }
316 $therow = $lig_row{$txt};
317 if ( !defined $therow ) {
318 $size+=512;
319 $therow = "li_".sprintf("%02X",$lig_row);
320 $lig_rowtext{$therow} =
321 "static const Q_UINT16 ${therow}[] = {$txt\n};\n\n";
322 $lig_row{$txt}=$therow;
323 }
324 $rowtable_txt .= "\n " if $lig_row%8 == 0;
325 $rowtable_txt .= "$therow, ";
326}
327
328# Print ligature tables
329#
330print "$table_txt\n};\n\n";
331for $r ( sort keys %lig_rowtext ) {
332 print $lig_rowtext{$r};
333}
334print "$rowtable_txt\n};\n";
335$size += 256*4;
336print "// $size bytes\n\n";
337
338
339
340# Build direction/joining/mirrored pages...
341#
342$rowtable_txt =
343 "static const Q_UINT8 * const direction_info[256] = {";
344for $dir_row ( 0..255 ) {
345 $nonzero=0;
346 $txt = "";
347 for $cell ( 0..255 ) {
348 $code = sprintf("%02X%02X",$dir_row,$cell);
349 $dir = $bidi_category{$code};
350 $dir = 0 if !defined $dir;
351 $join = $joining{$code};
352 $join = 0 if !defined $join;
353 $mirr = $mirrored{$code};
354 $mirr = 0 if !defined $mirr;
355 $info = $dir + 32*$join + 128*$mirr;
356 $txt .= "\n " if $cell%8 == 0;
357 $txt .= "$info, ";
358 }
359 $therow = $dir_row{$txt};
360 if ( !defined $therow ) {
361 $size+=256;
362 $therow = "dir_".sprintf("%02X",$dir_row);
363 $dir_rowtext{$therow} =
364 "static const Q_UINT8 ${therow}[] = {$txt\n};\n\n";
365 $dir_row{$txt}=$therow;
366 }
367 $rowtable_txt .= "\n " if $dir_row%8 == 0;
368 $rowtable_txt .= "$therow, ";
369}
370
371# Print pages...
372#
373for $r ( sort keys %dir_rowtext ) {
374 print $dir_rowtext{$r};
375}
376print "$rowtable_txt\n};\n";
377$size += 256*4;
378print "// $size bytes\n\n";
379
380# Build table of combining classes
381#
382$rowtable_txt =
383 "static const Q_UINT8 * const combining_info[256] = {";
384for $combining_row ( 0..255 ) {
385 $nonzero=0;
386 $txt = "";
387 for $cell ( 0..255 ) {
388 $code = sprintf("%02X%02X",$combining_row,$cell);
389 $info = $combining_class{$code};
390 $info = 0 if !defined $info;
391 $txt .= "\n " if $cell%8 == 0;
392 $txt .= "$info, ";
393 }
394 $therow = $combining_row{$txt};
395 if ( !defined $therow ) {
396 $size+=256;
397 $therow = "cmb_".sprintf("%02X",$combining_row);
398 $combining_rowtext{$therow} =
399 "static const Q_UINT8 ${therow}[] = {$txt\n};\n\n";
400 $combining_row{$txt}=$therow;
401 }
402 $rowtable_txt .= "\n " if $combining_row%8 == 0;
403 $rowtable_txt .= "$therow, ";
404}
405
406# Print pages...
407#
408for $r ( sort keys %combining_rowtext ) {
409 print $combining_rowtext{$r};
410}
411print "$rowtable_txt\n};\n";
412$size += 256*4;
413print "// $size bytes\n\n";
414
415# Build case info
416#
417$rowtable_txt =
418 "static const Q_UINT16 * const case_info[256] = {";
419for $row ( 0..255 ) {
420 $nonzero=0;
421 $txt = "";
422 for $cell ( 0..255 ) {
423 $code = sprintf("%02X%02X",$row,$cell);
424 $info = $uppercase{$code};
425 if ( length( $info ) eq 0 ) {
426 $info = $lowercase{$code};
427 }
428 $info =~ s/^0+//;
429 if ( length( $info ) eq 0 ) {
430 $info = "0";
431 } else {
432 $info = "0x".lc($info);
433 }
434 if ( length( $info ) ne 1 ) {
435 $nonzero = 1;
436 }
437 $txt .= "\n " if $cell%8 == 0;
438 $txt .= "$info, ";
439 }
440 $therow = $case_row{$txt};
441 if ( !defined $therow && $nonzero ne 0 ) {
442 $size+=512;
443 $therow = "case_".sprintf("%02X",$row);
444 $case_rowtext{$therow} =
445 "static const Q_UINT16 ${therow}[] = {$txt\n};\n\n";
446 $case_row{$txt}=$therow;
447 }
448 $rowtable_txt .= "\n " if $row%8 == 0;
449 if ( $nonzero ne 0 ) {
450 $rowtable_txt .= "$therow, ";
451 } else {
452 $rowtable_txt .= "0, ";
453 }
454}
455
456# Print pages...
457#
458for $r ( sort keys %case_rowtext ) {
459 print $case_rowtext{$r};
460}
461print "$rowtable_txt\n};\n";
462$size += 256*4;
463print "// $size bytes\n\n";
464
465# Build decimal info
466#
467$rowtable_txt =
468 "static const Q_INT8 * const decimal_info[256] = {";
469for $row ( 0..255 ) {
470 $nonzero=0;
471 $txt = "";
472 for $cell ( 0..255 ) {
473 $code = sprintf("%02X%02X",$row,$cell);
474 $info = $digit_value{$code};
475 if ( length( $info ) eq 0 ) {
476 $info = -1;
477 } else {
478 $nonzero = 1;
479 }
480 $txt .= "\n " if $cell%8 == 0;
481 $txt .= "$info, ";
482 }
483 $therow = $decimal_row{$txt};
484 if ( !defined $therow && $nonzero ne 0 ) {
485 $size+=512;
486 $therow = "num_".sprintf("%02X",$row);
487 $decimal_rowtext{$therow} =
488 "static const Q_INT8 ${therow}[] = {$txt\n};\n\n";
489 $decimal_row{$txt}=$therow;
490 }
491 $rowtable_txt .= "\n " if $row%8 == 0;
492 if ( $nonzero ne 0 ) {
493 $rowtable_txt .= "$therow, ";
494 } else {
495 $rowtable_txt .= "0, ";
496 }
497}
498
499# Print pages...
500#
501for $r ( sort keys %decimal_rowtext ) {
502 print $decimal_rowtext{$r};
503}
504print "$rowtable_txt\n};\n";
505$size += 256*4;
506print "// $size bytes\n\n";
507
508
509
510print "#endif\n\n";
511print "// END OF GENERATED DATA\n\n";
512
513
514
515__END__
516
517*/
518
519// START OF GENERATED DATA
520
521static const Q_UINT8 ui_00[] = {
522 10, 10, 10, 10, 10, 10, 10, 10,
523 10, 10, 10, 10, 10, 10, 10, 10,
524 10, 10, 10, 10, 10, 10, 10, 10,
525 10, 10, 10, 10, 10, 10, 10, 10,
526 7, 26, 26, 26, 28, 26, 26, 26,
527 22, 23, 26, 27, 26, 21, 26, 26,
528 4, 4, 4, 4, 4, 4, 4, 4,
529 4, 4, 26, 26, 27, 27, 27, 26,
530 26, 15, 15, 15, 15, 15, 15, 15,
531 15, 15, 15, 15, 15, 15, 15, 15,
532 15, 15, 15, 15, 15, 15, 15, 15,
533 15, 15, 15, 22, 26, 23, 29, 20,
534 29, 16, 16, 16, 16, 16, 16, 16,
535 16, 16, 16, 16, 16, 16, 16, 16,
536 16, 16, 16, 16, 16, 16, 16, 16,
537 16, 16, 16, 22, 27, 23, 27, 10,
538 10, 10, 10, 10, 10, 10, 10, 10,
539 10, 10, 10, 10, 10, 10, 10, 10,
540 10, 10, 10, 10, 10, 10, 10, 10,
541 10, 10, 10, 10, 10, 10, 10, 10,
542 7, 26, 28, 28, 28, 28, 30, 30,
543 29, 30, 16, 24, 27, 21, 30, 29,
544 30, 27, 6, 6, 29, 16, 30, 26,
545 29, 6, 16, 25, 6, 6, 6, 26,
546 15, 15, 15, 15, 15, 15, 15, 15,
547 15, 15, 15, 15, 15, 15, 15, 15,
548 15, 15, 15, 15, 15, 15, 15, 27,
549 15, 15, 15, 15, 15, 15, 15, 16,
550 16, 16, 16, 16, 16, 16, 16, 16,
551 16, 16, 16, 16, 16, 16, 16, 16,
552 16, 16, 16, 16, 16, 16, 16, 27,
553 16, 16, 16, 16, 16, 16, 16, 16,
554};
555
556#ifndef QT_NO_UNICODETABLES
557
558static const Q_UINT8 ui_01[] = {
559 15, 16, 15, 16, 15, 16, 15, 16,
560 15, 16, 15, 16, 15, 16, 15, 16,
561 15, 16, 15, 16, 15, 16, 15, 16,
562 15, 16, 15, 16, 15, 16, 15, 16,
563 15, 16, 15, 16, 15, 16, 15, 16,
564 15, 16, 15, 16, 15, 16, 15, 16,
565 15, 16, 15, 16, 15, 16, 15, 16,
566 16, 15, 16, 15, 16, 15, 16, 15,
567 16, 15, 16, 15, 16, 15, 16, 15,
568 16, 16, 15, 16, 15, 16, 15, 16,
569 15, 16, 15, 16, 15, 16, 15, 16,
570 15, 16, 15, 16, 15, 16, 15, 16,
571 15, 16, 15, 16, 15, 16, 15, 16,
572 15, 16, 15, 16, 15, 16, 15, 16,
573 15, 16, 15, 16, 15, 16, 15, 16,
574 15, 15, 16, 15, 16, 15, 16, 16,
575 16, 15, 15, 16, 15, 16, 15, 15,
576 16, 15, 15, 15, 16, 16, 15, 15,
577 15, 15, 16, 15, 15, 16, 15, 15,
578 15, 16, 16, 16, 15, 15, 16, 15,
579 15, 16, 15, 16, 15, 16, 15, 15,
580 16, 15, 16, 16, 15, 16, 15, 15,
581 16, 15, 15, 15, 16, 15, 16, 15,
582 15, 16, 16, 19, 15, 16, 16, 16,
583 19, 19, 19, 19, 15, 17, 16, 15,
584 17, 16, 15, 17, 16, 15, 16, 15,
585 16, 15, 16, 15, 16, 15, 16, 15,
586 16, 15, 16, 15, 16, 16, 15, 16,
587 15, 16, 15, 16, 15, 16, 15, 16,
588 15, 16, 15, 16, 15, 16, 15, 16,
589 16, 15, 17, 16, 15, 16, 15, 15,
590 15, 16, 15, 16, 15, 16, 15, 16,
591};
592
593static const Q_UINT8 ui_02[] = {
594 15, 16, 15, 16, 15, 16, 15, 16,
595 15, 16, 15, 16, 15, 16, 15, 16,
596 15, 16, 15, 16, 15, 16, 15, 16,
597 15, 16, 15, 16, 15, 16, 15, 16,
598 15, 0, 15, 16, 15, 16, 15, 16,
599 15, 16, 15, 16, 15, 16, 15, 16,
600 15, 16, 15, 16, 0, 0, 0, 0,
601 0, 0, 0, 0, 0, 0, 0, 0,
602 0, 0, 0, 0, 0, 0, 0, 0,
603 0, 0, 0, 0, 0, 0, 0, 0,
604 16, 16, 16, 16, 16, 16, 16, 16,
605 16, 16, 16, 16, 16, 16, 16, 16,
606 16, 16, 16, 16, 16, 16, 16, 16,
607 16, 16, 16, 16, 16, 16, 16, 16,
608 16, 16, 16, 16, 16, 16, 16, 16,
609 16, 16, 16, 16, 16, 16, 16, 16,
610 16, 16, 16, 16, 16, 16, 16, 16,
611 16, 16, 16, 16, 16, 16, 16, 16,
612 16, 16, 16, 16, 16, 16, 16, 16,
613 16, 16, 16, 16, 16, 16, 16, 16,
614 16, 16, 16, 16, 16, 16, 16, 16,
615 16, 16, 16, 16, 16, 16, 0, 0,
616 18, 18, 18, 18, 18, 18, 18, 18,
617 18, 29, 29, 18, 18, 18, 18, 18,
618 18, 18, 29, 29, 29, 29, 29, 29,
619 29, 29, 29, 29, 29, 29, 29, 29,
620 18, 18, 29, 29, 29, 29, 29, 29,
621 29, 29, 29, 29, 29, 29, 29, 29,
622 18, 18, 18, 18, 18, 29, 29, 29,
623 29, 29, 29, 29, 29, 29, 18, 0,
624 0, 0, 0, 0, 0, 0, 0, 0,
625 0, 0, 0, 0, 0, 0, 0, 0,
626};
627
628static const Q_UINT8 ui_03[] = {
629 1, 1, 1, 1, 1, 1, 1, 1,
630 1, 1, 1, 1, 1, 1, 1, 1,
631 1, 1, 1, 1, 1, 1, 1, 1,
632 1, 1, 1, 1, 1, 1, 1, 1,
633 1, 1, 1, 1, 1, 1, 1, 1,
634 1, 1, 1, 1, 1, 1, 1, 1,
635 1, 1, 1, 1, 1, 1, 1, 1,
636 1, 1, 1, 1, 1, 1, 1, 1,
637 1, 1, 1, 1, 1, 1, 1, 1,
638 1, 1, 1, 1, 1, 1, 1, 1,
639 0, 0, 0, 0, 0, 0, 0, 0,
640 0, 0, 0, 0, 0, 0, 0, 0,
641 1, 1, 1, 1, 1, 1, 1, 1,
642 1, 1, 1, 1, 1, 1, 1, 1,
643 0, 0, 0, 0, 29, 29, 0, 0,
644 0, 0, 18, 0, 0, 0, 26, 0,
645 0, 0, 0, 0, 29, 29, 15, 26,
646 15, 15, 15, 0, 15, 0, 15, 15,
647 16, 15, 15, 15, 15, 15, 15, 15,
648 15, 15, 15, 15, 15, 15, 15, 15,
649 15, 15, 0, 15, 15, 15, 15, 15,
650 15, 15, 15, 15, 16, 16, 16, 16,
651 16, 16, 16, 16, 16, 16, 16, 16,
652 16, 16, 16, 16, 16, 16, 16, 16,
653 16, 16, 16, 16, 16, 16, 16, 16,
654 16, 16, 16, 16, 16, 16, 16, 0,
655 16, 16, 15, 15, 15, 16, 16, 16,
656 15, 16, 15, 16, 15, 16, 15, 16,
657 15, 16, 15, 16, 15, 16, 15, 16,
658 15, 16, 15, 16, 15, 16, 15, 16,
659 16, 16, 16, 16, 15, 16, 27, 0,
660 0, 0, 0, 0, 0, 0, 0, 0,
661};
662
663static const Q_UINT8 ui_04[] = {
664 15, 15, 15, 15, 15, 15, 15, 15,
665 15, 15, 15, 15, 15, 15, 15, 15,
666 15, 15, 15, 15, 15, 15, 15, 15,
667 15, 15, 15, 15, 15, 15, 15, 15,
668 15, 15, 15, 15, 15, 15, 15, 15,
669 15, 15, 15, 15, 15, 15, 15, 15,
670 16, 16, 16, 16, 16, 16, 16, 16,
671 16, 16, 16, 16, 16, 16, 16, 16,
672 16, 16, 16, 16, 16, 16, 16, 16,
673 16, 16, 16, 16, 16, 16, 16, 16,
674 16, 16, 16, 16, 16, 16, 16, 16,
675 16, 16, 16, 16, 16, 16, 16, 16,
676 15, 16, 15, 16, 15, 16, 15, 16,
677 15, 16, 15, 16, 15, 16, 15, 16,
678 15, 16, 15, 16, 15, 16, 15, 16,
679 15, 16, 15, 16, 15, 16, 15, 16,
680 15, 16, 30, 1, 1, 1, 1, 0,
681 3, 3, 15, 16, 15, 16, 15, 16,
682 15, 16, 15, 16, 15, 16, 15, 16,
683 15, 16, 15, 16, 15, 16, 15, 16,
684 15, 16, 15, 16, 15, 16, 15, 16,
685 15, 16, 15, 16, 15, 16, 15, 16,
686 15, 16, 15, 16, 15, 16, 15, 16,
687 15, 16, 15, 16, 15, 16, 15, 16,
688 15, 15, 16, 15, 16, 15, 16, 15,
689 16, 15, 16, 15, 16, 15, 16, 0,
690 15, 16, 15, 16, 15, 16, 15, 16,
691 15, 16, 15, 16, 15, 16, 15, 16,
692 15, 16, 15, 16, 15, 16, 15, 16,
693 15, 16, 15, 16, 15, 16, 15, 16,
694 15, 16, 15, 16, 15, 16, 0, 0,
695 15, 16, 0, 0, 0, 0, 0, 0,
696};
697
698static const Q_UINT8 ui_05[] = {
699 15, 16, 15, 16, 15, 16, 15, 16,
700 15, 16, 15, 16, 15, 16, 15, 16,
701 0, 0, 0, 0, 0, 0, 0, 0,
702 0, 0, 0, 0, 0, 0, 0, 0,
703 0, 0, 0, 0, 0, 0, 0, 0,
704 0, 0, 0, 0, 0, 0, 0, 0,
705 0, 15, 15, 15, 15, 15, 15, 15,
706 15, 15, 15, 15, 15, 15, 15, 15,
707 15, 15, 15, 15, 15, 15, 15, 15,
708 15, 15, 15, 15, 15, 15, 15, 15,
709 15, 15, 15, 15, 15, 15, 15, 0,
710 0, 18, 26, 26, 26, 26, 26, 26,
711 0, 16, 16, 16, 16, 16, 16, 16,
712 16, 16, 16, 16, 16, 16, 16, 16,
713 16, 16, 16, 16, 16, 16, 16, 16,
714 16, 16, 16, 16, 16, 16, 16, 16,
715 16, 16, 16, 16, 16, 16, 16, 16,
716 0, 26, 21, 0, 0, 0, 0, 0,
717 0, 1, 1, 1, 1, 1, 1, 1,
718 1, 1, 1, 1, 1, 1, 1, 1,
719 1, 1, 0, 1, 1, 1, 1, 1,
720 1, 1, 1, 1, 1, 1, 1, 1,
721 1, 1, 1, 1, 1, 1, 1, 1,
722 1, 1, 0, 1, 1, 1, 26, 1,
723 26, 1, 1, 26, 1, 0, 0, 0,
724 0, 0, 0, 0, 0, 0, 0, 0,
725 19, 19, 19, 19, 19, 19, 19, 19,
726 19, 19, 19, 19, 19, 19, 19, 19,
727 19, 19, 19, 19, 19, 19, 19, 19,
728 19, 19, 19, 0, 0, 0, 0, 0,
729 19, 19, 19, 26, 26, 0, 0, 0,
730 0, 0, 0, 0, 0, 0, 0, 0,
731};
732
733static const Q_UINT8 ui_06[] = {
734 0, 0, 0, 0, 0, 0, 0, 0,
735 0, 0, 0, 0, 26, 0, 0, 0,
736 0, 0, 0, 0, 0, 0, 0, 0,
737 0, 0, 0, 26, 0, 0, 0, 26,
738 0, 19, 19, 19, 19, 19, 19, 19,
739 19, 19, 19, 19, 19, 19, 19, 19,
740 19, 19, 19, 19, 19, 19, 19, 19,
741 19, 19, 19, 0, 0, 0, 0, 0,
742 18, 19, 19, 19, 19, 19, 19, 19,
743 19, 19, 19, 1, 1, 1, 1, 1,
744 1, 1, 1, 1, 1, 1, 0, 0,
745 0, 0, 0, 0, 0, 0, 0, 0,
746 4, 4, 4, 4, 4, 4, 4, 4,
747 4, 4, 26, 26, 26, 26, 19, 19,
748 1, 19, 19, 19, 19, 19, 19, 19,
749 19, 19, 19, 19, 19, 19, 19, 19,
750 19, 19, 19, 19, 19, 19, 19, 19,
751 19, 19, 19, 19, 19, 19, 19, 19,
752 19, 19, 19, 19, 19, 19, 19, 19,
753 19, 19, 19, 19, 19, 19, 19, 19,
754 19, 19, 19, 19, 19, 19, 19, 19,
755 19, 19, 19, 19, 19, 19, 19, 19,
756 19, 19, 19, 19, 19, 19, 19, 19,
757 19, 19, 19, 19, 19, 19, 19, 19,
758 19, 19, 19, 19, 19, 19, 19, 19,
759 19, 19, 19, 19, 19, 19, 19, 19,
760 19, 19, 19, 19, 26, 19, 1, 1,
761 1, 1, 1, 1, 1, 11, 3, 1,
762 1, 1, 1, 1, 1, 18, 18, 1,
763 1, 30, 1, 1, 1, 1, 0, 0,
764 4, 4, 4, 4, 4, 4, 4, 4,
765 4, 4, 19, 19, 19, 30, 30, 0,
766};
767
768static const Q_UINT8 ui_07[] = {
769 26, 26, 26, 26, 26, 26, 26, 26,
770 26, 26, 26, 26, 26, 26, 0, 11,
771 19, 1, 19, 19, 19, 19, 19, 19,
772 19, 19, 19, 19, 19, 19, 19, 19,
773 19, 19, 19, 19, 19, 19, 19, 19,
774 19, 19, 19, 19, 19, 0, 0, 0,
775 1, 1, 1, 1, 1, 1, 1, 1,
776 1, 1, 1, 1, 1, 1, 1, 1,
777 1, 1, 1, 1, 1, 1, 1, 1,
778 1, 1, 1, 0, 0, 0, 0, 0,
779 0, 0, 0, 0, 0, 0, 0, 0,
780 0, 0, 0, 0, 0, 0, 0, 0,
781 0, 0, 0, 0, 0, 0, 0, 0,
782 0, 0, 0, 0, 0, 0, 0, 0,
783 0, 0, 0, 0, 0, 0, 0, 0,
784 0, 0, 0, 0, 0, 0, 0, 0,
785 19, 19, 19, 19, 19, 19, 19, 19,
786 19, 19, 19, 19, 19, 19, 19, 19,
787 19, 19, 19, 19, 19, 19, 19, 19,
788 19, 19, 19, 19, 19, 19, 19, 19,
789 19, 19, 19, 19, 19, 19, 1, 1,
790 1, 1, 1, 1, 1, 1, 1, 1,
791 1, 19, 0, 0, 0, 0, 0, 0,
792 0, 0, 0, 0, 0, 0, 0, 0,
793 0, 0, 0, 0, 0, 0, 0, 0,
794 0, 0, 0, 0, 0, 0, 0, 0,
795 0, 0, 0, 0, 0, 0, 0, 0,
796 0, 0, 0, 0, 0, 0, 0, 0,
797 0, 0, 0, 0, 0, 0, 0, 0,
798 0, 0, 0, 0, 0, 0, 0, 0,
799 0, 0, 0, 0, 0, 0, 0, 0,
800 0, 0, 0, 0, 0, 0, 0, 0,
801};
802
803static const Q_UINT8 ui_08[] = {
804 0, 0, 0, 0, 0, 0, 0, 0,
805 0, 0, 0, 0, 0, 0, 0, 0,
806 0, 0, 0, 0, 0, 0, 0, 0,
807 0, 0, 0, 0, 0, 0, 0, 0,
808 0, 0, 0, 0, 0, 0, 0, 0,
809 0, 0, 0, 0, 0, 0, 0, 0,
810 0, 0, 0, 0, 0, 0, 0, 0,
811 0, 0, 0, 0, 0, 0, 0, 0,
812 0, 0, 0, 0, 0, 0, 0, 0,
813 0, 0, 0, 0, 0, 0, 0, 0,
814 0, 0, 0, 0, 0, 0, 0, 0,
815 0, 0, 0, 0, 0, 0, 0, 0,
816 0, 0, 0, 0, 0, 0, 0, 0,
817 0, 0, 0, 0, 0, 0, 0, 0,
818 0, 0, 0, 0, 0, 0, 0, 0,
819 0, 0, 0, 0, 0, 0, 0, 0,
820 0, 0, 0, 0, 0, 0, 0, 0,
821 0, 0, 0, 0, 0, 0, 0, 0,
822 0, 0, 0, 0, 0, 0, 0, 0,
823 0, 0, 0, 0, 0, 0, 0, 0,
824 0, 0, 0, 0, 0, 0, 0, 0,
825 0, 0, 0, 0, 0, 0, 0, 0,
826 0, 0, 0, 0, 0, 0, 0, 0,
827 0, 0, 0, 0, 0, 0, 0, 0,
828 0, 0, 0, 0, 0, 0, 0, 0,
829 0, 0, 0, 0, 0, 0, 0, 0,
830 0, 0, 0, 0, 0, 0, 0, 0,
831 0, 0, 0, 0, 0, 0, 0, 0,
832 0, 0, 0, 0, 0, 0, 0, 0,
833 0, 0, 0, 0, 0, 0, 0, 0,
834 0, 0, 0, 0, 0, 0, 0, 0,
835 0, 0, 0, 0, 0, 0, 0, 0,
836};
837
838static const Q_UINT8 ui_09[] = {
839 0, 1, 1, 2, 0, 19, 19, 19,
840 19, 19, 19, 19, 19, 19, 19, 19,
841 19, 19, 19, 19, 19, 19, 19, 19,
842 19, 19, 19, 19, 19, 19, 19, 19,
843 19, 19, 19, 19, 19, 19, 19, 19,
844 19, 19, 19, 19, 19, 19, 19, 19,
845 19, 19, 19, 19, 19, 19, 19, 19,
846 19, 19, 0, 0, 1, 19, 2, 2,
847 2, 1, 1, 1, 1, 1, 1, 1,
848 1, 2, 2, 2, 2, 1, 0, 0,
849 19, 1, 1, 1, 1, 0, 0, 0,
850 19, 19, 19, 19, 19, 19, 19, 19,
851 19, 19, 1, 1, 26, 26, 4, 4,
852 4, 4, 4, 4, 4, 4, 4, 4,
853 26, 0, 0, 0, 0, 0, 0, 0,
854 0, 0, 0, 0, 0, 0, 0, 0,
855 0, 1, 2, 2, 0, 19, 19, 19,
856 19, 19, 19, 19, 19, 0, 0, 19,
857 19, 0, 0, 19, 19, 19, 19, 19,
858 19, 19, 19, 19, 19, 19, 19, 19,
859 19, 19, 19, 19, 19, 19, 19, 19,
860 19, 0, 19, 19, 19, 19, 19, 19,
861 19, 0, 19, 0, 0, 0, 19, 19,
862 19, 19, 0, 0, 1, 0, 2, 2,
863 2, 1, 1, 1, 1, 0, 0, 2,
864 2, 0, 0, 2, 2, 1, 0, 0,
865 0, 0, 0, 0, 0, 0, 0, 2,
866 0, 0, 0, 0, 19, 19, 0, 19,
867 19, 19, 1, 1, 0, 0, 4, 4,
868 4, 4, 4, 4, 4, 4, 4, 4,
869 19, 19, 28, 28, 6, 6, 6, 6,
870 6, 6, 30, 0, 0, 0, 0, 0,
871};
872
873static const Q_UINT8 ui_0A[] = {
874 0, 0, 1, 0, 0, 19, 19, 19,
875 19, 19, 19, 0, 0, 0, 0, 19,
876 19, 0, 0, 19, 19, 19, 19, 19,
877 19, 19, 19, 19, 19, 19, 19, 19,
878 19, 19, 19, 19, 19, 19, 19, 19,
879 19, 0, 19, 19, 19, 19, 19, 19,
880 19, 0, 19, 19, 0, 19, 19, 0,
881 19, 19, 0, 0, 1, 0, 2, 2,
882 2, 1, 1, 0, 0, 0, 0, 1,
883 1, 0, 0, 1, 1, 1, 0, 0,
884 0, 0, 0, 0, 0, 0, 0, 0,
885 0, 19, 19, 19, 19, 0, 19, 0,
886 0, 0, 0, 0, 0, 0, 4, 4,
887 4, 4, 4, 4, 4, 4, 4, 4,
888 1, 1, 19, 19, 19, 0, 0, 0,
889 0, 0, 0, 0, 0, 0, 0, 0,
890 0, 1, 1, 2, 0, 19, 19, 19,
891 19, 19, 19, 19, 0, 19, 0, 19,
892 19, 19, 0, 19, 19, 19, 19, 19,
893 19, 19, 19, 19, 19, 19, 19, 19,
894 19, 19, 19, 19, 19, 19, 19, 19,
895 19, 0, 19, 19, 19, 19, 19, 19,
896 19, 0, 19, 19, 0, 19, 19, 19,
897 19, 19, 0, 0, 1, 19, 2, 2,
898 2, 1, 1, 1, 1, 1, 0, 1,
899 1, 2, 0, 2, 2, 1, 0, 0,
900 19, 0, 0, 0, 0, 0, 0, 0,
901 0, 0, 0, 0, 0, 0, 0, 0,
902 19, 0, 0, 0, 0, 0, 4, 4,
903 4, 4, 4, 4, 4, 4, 4, 4,
904 0, 0, 0, 0, 0, 0, 0, 0,
905 0, 0, 0, 0, 0, 0, 0, 0,
906};
907
908static const Q_UINT8 ui_0B[] = {
909 0, 1, 2, 2, 0, 19, 19, 19,
910 19, 19, 19, 19, 19, 0, 0, 19,
911 19, 0, 0, 19, 19, 19, 19, 19,
912 19, 19, 19, 19, 19, 19, 19, 19,
913 19, 19, 19, 19, 19, 19, 19, 19,
914 19, 0, 19, 19, 19, 19, 19, 19,
915 19, 0, 19, 19, 0, 0, 19, 19,
916 19, 19, 0, 0, 1, 19, 2, 1,
917 2, 1, 1, 1, 0, 0, 0, 2,
918 2, 0, 0, 2, 2, 1, 0, 0,
919 0, 0, 0, 0, 0, 0, 1, 2,
920 0, 0, 0, 0, 19, 19, 0, 19,
921 19, 19, 0, 0, 0, 0, 4, 4,
922 4, 4, 4, 4, 4, 4, 4, 4,
923 30, 0, 0, 0, 0, 0, 0, 0,
924 0, 0, 0, 0, 0, 0, 0, 0,
925 0, 0, 1, 19, 0, 19, 19, 19,
926 19, 19, 19, 0, 0, 0, 19, 19,
927 19, 0, 19, 19, 19, 19, 0, 0,
928 0, 19, 19, 0, 19, 0, 19, 19,
929 0, 0, 0, 19, 19, 0, 0, 0,
930 19, 19, 19, 0, 0, 0, 19, 19,
931 19, 19, 19, 19, 19, 19, 0, 19,
932 19, 19, 0, 0, 0, 0, 2, 2,
933 1, 2, 2, 0, 0, 0, 2, 2,
934 2, 0, 2, 2, 2, 1, 0, 0,
935 0, 0, 0, 0, 0, 0, 0, 2,
936 0, 0, 0, 0, 0, 0, 0, 0,
937 0, 0, 0, 0, 0, 0, 0, 4,
938 4, 4, 4, 4, 4, 4, 4, 4,
939 6, 6, 6, 0, 0, 0, 0, 0,
940 0, 0, 0, 0, 0, 0, 0, 0,
941};
942
943static const Q_UINT8 ui_0C[] = {
944 0, 2, 2, 2, 0, 19, 19, 19,
945 19, 19, 19, 19, 19, 0, 19, 19,
946 19, 0, 19, 19, 19, 19, 19, 19,
947 19, 19, 19, 19, 19, 19, 19, 19,
948 19, 19, 19, 19, 19, 19, 19, 19,
949 19, 0, 19, 19, 19, 19, 19, 19,
950 19, 19, 19, 19, 0, 19, 19, 19,
951 19, 19, 0, 0, 0, 0, 1, 1,
952 1, 2, 2, 2, 2, 0, 1, 1,
953 1, 0, 1, 1, 1, 1, 0, 0,
954 0, 0, 0, 0, 0, 1, 1, 0,
955 0, 0, 0, 0, 0, 0, 0, 0,
956 19, 19, 0, 0, 0, 0, 4, 4,
957 4, 4, 4, 4, 4, 4, 4, 4,
958 0, 0, 0, 0, 0, 0, 0, 0,
959 0, 0, 0, 0, 0, 0, 0, 0,
960 0, 0, 2, 2, 0, 19, 19, 19,
961 19, 19, 19, 19, 19, 0, 19, 19,
962 19, 0, 19, 19, 19, 19, 19, 19,
963 19, 19, 19, 19, 19, 19, 19, 19,
964 19, 19, 19, 19, 19, 19, 19, 19,
965 19, 0, 19, 19, 19, 19, 19, 19,
966 19, 19, 19, 19, 0, 19, 19, 19,
967 19, 19, 0, 0, 0, 0, 2, 1,
968 2, 2, 2, 2, 2, 0, 1, 2,
969 2, 0, 2, 2, 1, 1, 0, 0,
970 0, 0, 0, 0, 0, 2, 2, 0,
971 0, 0, 0, 0, 0, 0, 19, 0,
972 19, 19, 0, 0, 0, 0, 4, 4,
973 4, 4, 4, 4, 4, 4, 4, 4,
974 0, 0, 0, 0, 0, 0, 0, 0,
975 0, 0, 0, 0, 0, 0, 0, 0,
976};
977
978static const Q_UINT8 ui_0D[] = {
979 0, 0, 2, 2, 0, 19, 19, 19,
980 19, 19, 19, 19, 19, 0, 19, 19,
981 19, 0, 19, 19, 19, 19, 19, 19,
982 19, 19, 19, 19, 19, 19, 19, 19,
983 19, 19, 19, 19, 19, 19, 19, 19,
984 19, 0, 19, 19, 19, 19, 19, 19,
985 19, 19, 19, 19, 19, 19, 19, 19,
986 19, 19, 0, 0, 0, 0, 2, 2,
987 2, 1, 1, 1, 0, 0, 2, 2,
988 2, 0, 2, 2, 2, 1, 0, 0,
989 0, 0, 0, 0, 0, 0, 0, 2,
990 0, 0, 0, 0, 0, 0, 0, 0,
991 19, 19, 0, 0, 0, 0, 4, 4,
992 4, 4, 4, 4, 4, 4, 4, 4,
993 0, 0, 0, 0, 0, 0, 0, 0,
994 0, 0, 0, 0, 0, 0, 0, 0,
995 0, 0, 2, 2, 0, 19, 19, 19,
996 19, 19, 19, 19, 19, 19, 19, 19,
997 19, 19, 19, 19, 19, 19, 19, 0,
998 0, 0, 19, 19, 19, 19, 19, 19,
999 19, 19, 19, 19, 19, 19, 19, 19,
1000 19, 19, 19, 19, 19, 19, 19, 19,
1001 19, 19, 0, 19, 19, 19, 19, 19,
1002 19, 19, 19, 19, 0, 19, 0, 0,
1003 19, 19, 19, 19, 19, 19, 19, 0,
1004 0, 0, 1, 0, 0, 0, 0, 2,
1005 2, 2, 1, 1, 1, 0, 1, 0,
1006 2, 2, 2, 2, 2, 2, 2, 2,
1007 0, 0, 0, 0, 0, 0, 0, 0,
1008 0, 0, 0, 0, 0, 0, 0, 0,
1009 0, 0, 2, 2, 26, 0, 0, 0,
1010 0, 0, 0, 0, 0, 0, 0, 0,
1011};
1012
1013static const Q_UINT8 ui_0E[] = {
1014 0, 19, 19, 19, 19, 19, 19, 19,
1015 19, 19, 19, 19, 19, 19, 19, 19,
1016 19, 19, 19, 19, 19, 19, 19, 19,
1017 19, 19, 19, 19, 19, 19, 19, 19,
1018 19, 19, 19, 19, 19, 19, 19, 19,
1019 19, 19, 19, 19, 19, 19, 19, 19,
1020 19, 1, 19, 19, 1, 1, 1, 1,
1021 1, 1, 1, 0, 0, 0, 0, 28,
1022 19, 19, 19, 19, 19, 19, 18, 1,
1023 1, 1, 1, 1, 1, 1, 1, 26,
1024 4, 4, 4, 4, 4, 4, 4, 4,
1025 4, 4, 26, 26, 0, 0, 0, 0,
1026 0, 0, 0, 0, 0, 0, 0, 0,
1027 0, 0, 0, 0, 0, 0, 0, 0,
1028 0, 0, 0, 0, 0, 0, 0, 0,
1029 0, 0, 0, 0, 0, 0, 0, 0,
1030 0, 19, 19, 0, 19, 0, 0, 19,
1031 19, 0, 19, 0, 0, 19, 0, 0,
1032 0, 0, 0, 0, 19, 19, 19, 19,
1033 0, 19, 19, 19, 19, 19, 19, 19,
1034 0, 19, 19, 19, 0, 19, 0, 19,
1035 0, 0, 19, 19, 0, 19, 19, 19,
1036 19, 1, 19, 19, 1, 1, 1, 1,
1037 1, 1, 0, 1, 1, 19, 0, 0,
1038 19, 19, 19, 19, 19, 0, 18, 0,
1039 1, 1, 1, 1, 1, 1, 0, 0,
1040 4, 4, 4, 4, 4, 4, 4, 4,
1041 4, 4, 0, 0, 19, 19, 0, 0,
1042 0, 0, 0, 0, 0, 0, 0, 0,
1043 0, 0, 0, 0, 0, 0, 0, 0,
1044 0, 0, 0, 0, 0, 0, 0, 0,
1045 0, 0, 0, 0, 0, 0, 0, 0,
1046};
1047
1048static const Q_UINT8 ui_0F[] = {
1049 19, 30, 30, 30, 26, 26, 26, 26,
1050 26, 26, 26, 26, 26, 26, 26, 26,
1051 26, 26, 26, 30, 30, 30, 30, 30,
1052 1, 1, 30, 30, 30, 30, 30, 30,
1053 4, 4, 4, 4, 4, 4, 4, 4,
1054 4, 4, 6, 6, 6, 6, 6, 6,
1055 6, 6, 6, 6, 30, 1, 30, 1,
1056 30, 1, 22, 23, 22, 23, 2, 2,
1057 19, 19, 19, 19, 19, 19, 19, 19,
1058 0, 19, 19, 19, 19, 19, 19, 19,
1059 19, 19, 19, 19, 19, 19, 19, 19,
1060 19, 19, 19, 19, 19, 19, 19, 19,
1061 19, 19, 19, 19, 19, 19, 19, 19,
1062 19, 19, 19, 0, 0, 0, 0, 0,
1063 0, 1, 1, 1, 1, 1, 1, 1,
1064 1, 1, 1, 1, 1, 1, 1, 2,
1065 1, 1, 1, 1, 1, 26, 1, 1,
1066 19, 19, 19, 19, 0, 0, 0, 0,
1067 1, 1, 1, 1, 1, 1, 1, 1,
1068 0, 1, 1, 1, 1, 1, 1, 1,
1069 1, 1, 1, 1, 1, 1, 1, 1,
1070 1, 1, 1, 1, 1, 1, 1, 1,
1071 1, 1, 1, 1, 1, 1, 1, 1,
1072 1, 1, 1, 1, 1, 0, 30, 30,
1073 30, 30, 30, 30, 30, 30, 1, 30,
1074 30, 30, 30, 30, 30, 0, 0, 30,
1075 0, 0, 0, 0, 0, 0, 0, 0,
1076 0, 0, 0, 0, 0, 0, 0, 0,
1077 0, 0, 0, 0, 0, 0, 0, 0,
1078 0, 0, 0, 0, 0, 0, 0, 0,
1079 0, 0, 0, 0, 0, 0, 0, 0,
1080 0, 0, 0, 0, 0, 0, 0, 0,
1081};
1082
1083static const Q_UINT8 ui_10[] = {
1084 19, 19, 19, 19, 19, 19, 19, 19,
1085 19, 19, 19, 19, 19, 19, 19, 19,
1086 19, 19, 19, 19, 19, 19, 19, 19,
1087 19, 19, 19, 19, 19, 19, 19, 19,
1088 19, 19, 0, 19, 19, 19, 19, 19,
1089 0, 19, 19, 0, 2, 1, 1, 1,
1090 1, 2, 1, 0, 0, 0, 1, 1,
1091 2, 1, 0, 0, 0, 0, 0, 0,
1092 4, 4, 4, 4, 4, 4, 4, 4,
1093 4, 4, 26, 26, 26, 26, 26, 26,
1094 19, 19, 19, 19, 19, 19, 2, 2,
1095 1, 1, 0, 0, 0, 0, 0, 0,
1096 0, 0, 0, 0, 0, 0, 0, 0,
1097 0, 0, 0, 0, 0, 0, 0, 0,
1098 0, 0, 0, 0, 0, 0, 0, 0,
1099 0, 0, 0, 0, 0, 0, 0, 0,
1100 0, 0, 0, 0, 0, 0, 0, 0,
1101 0, 0, 0, 0, 0, 0, 0, 0,
1102 0, 0, 0, 0, 0, 0, 0, 0,
1103 0, 0, 0, 0, 0, 0, 0, 0,
1104 15, 15, 15, 15, 15, 15, 15, 15,
1105 15, 15, 15, 15, 15, 15, 15, 15,
1106 15, 15, 15, 15, 15, 15, 15, 15,
1107 15, 15, 15, 15, 15, 15, 15, 15,
1108 15, 15, 15, 15, 15, 15, 0, 0,
1109 0, 0, 0, 0, 0, 0, 0, 0,
1110 19, 19, 19, 19, 19, 19, 19, 19,
1111 19, 19, 19, 19, 19, 19, 19, 19,
1112 19, 19, 19, 19, 19, 19, 19, 19,
1113 19, 19, 19, 19, 19, 19, 19, 19,
1114 19, 19, 19, 19, 19, 19, 19, 19,
1115 19, 0, 0, 26, 0, 0, 0, 0,
1116};
1117
1118static const Q_UINT8 ui_11[] = {
1119 19, 19, 19, 19, 19, 19, 19, 19,
1120 19, 19, 19, 19, 19, 19, 19, 19,
1121 19, 19, 19, 19, 19, 19, 19, 19,
1122 19, 19, 19, 19, 19, 19, 19, 19,
1123 19, 19, 19, 19, 19, 19, 19, 19,
1124 19, 19, 19, 19, 19, 19, 19, 19,
1125 19, 19, 19, 19, 19, 19, 19, 19,
1126 19, 19, 19, 19, 19, 19, 19, 19,
1127 19, 19, 19, 19, 19, 19, 19, 19,
1128 19, 19, 19, 19, 19, 19, 19, 19,
1129 19, 19, 19, 19, 19, 19, 19, 19,
1130 19, 19, 0, 0, 0, 0, 0, 19,
1131 19, 19, 19, 19, 19, 19, 19, 19,
1132 19, 19, 19, 19, 19, 19, 19, 19,
1133 19, 19, 19, 19, 19, 19, 19, 19,
1134 19, 19, 19, 19, 19, 19, 19, 19,
1135 19, 19, 19, 19, 19, 19, 19, 19,
1136 19, 19, 19, 19, 19, 19, 19, 19,
1137 19, 19, 19, 19, 19, 19, 19, 19,
1138 19, 19, 19, 19, 19, 19, 19, 19,
1139 19, 19, 19, 0, 0, 0, 0, 0,
1140 19, 19, 19, 19, 19, 19, 19, 19,
1141 19, 19, 19, 19, 19, 19, 19, 19,
1142 19, 19, 19, 19, 19, 19, 19, 19,
1143 19, 19, 19, 19, 19, 19, 19, 19,
1144 19, 19, 19, 19, 19, 19, 19, 19,
1145 19, 19, 19, 19, 19, 19, 19, 19,
1146 19, 19, 19, 19, 19, 19, 19, 19,
1147 19, 19, 19, 19, 19, 19, 19, 19,
1148 19, 19, 19, 19, 19, 19, 19, 19,
1149 19, 19, 19, 19, 19, 19, 19, 19,
1150 19, 19, 0, 0, 0, 0, 0, 0,
1151};
1152
1153static const Q_UINT8 ui_12[] = {
1154 19, 19, 19, 19, 19, 19, 19, 0,
1155 19, 19, 19, 19, 19, 19, 19, 19,
1156 19, 19, 19, 19, 19, 19, 19, 19,
1157 19, 19, 19, 19, 19, 19, 19, 19,
1158 19, 19, 19, 19, 19, 19, 19, 19,
1159 19, 19, 19, 19, 19, 19, 19, 19,
1160 19, 19, 19, 19, 19, 19, 19, 19,
1161 19, 19, 19, 19, 19, 19, 19, 19,
1162 19, 19, 19, 19, 19, 19, 19, 0,
1163 19, 0, 19, 19, 19, 19, 0, 0,
1164 19, 19, 19, 19, 19, 19, 19, 0,
1165 19, 0, 19, 19, 19, 19, 0, 0,
1166 19, 19, 19, 19, 19, 19, 19, 19,
1167 19, 19, 19, 19, 19, 19, 19, 19,
1168 19, 19, 19, 19, 19, 19, 19, 19,
1169 19, 19, 19, 19, 19, 19, 19, 19,
1170 19, 19, 19, 19, 19, 19, 19, 0,
1171 19, 0, 19, 19, 19, 19, 0, 0,
1172 19, 19, 19, 19, 19, 19, 19, 19,
1173 19, 19, 19, 19, 19, 19, 19, 19,
1174 19, 19, 19, 19, 19, 19, 19, 19,
1175 19, 19, 19, 19, 19, 19, 19, 0,
1176 19, 0, 19, 19, 19, 19, 0, 0,
1177 19, 19, 19, 19, 19, 19, 19, 0,
1178 19, 0, 19, 19, 19, 19, 0, 0,
1179 19, 19, 19, 19, 19, 19, 19, 0,
1180 19, 19, 19, 19, 19, 19, 19, 0,
1181 19, 19, 19, 19, 19, 19, 19, 19,
1182 19, 19, 19, 19, 19, 19, 19, 19,
1183 19, 19, 19, 19, 19, 19, 19, 0,
1184 19, 19, 19, 19, 19, 19, 19, 19,
1185 19, 19, 19, 19, 19, 19, 19, 19,
1186};
1187
1188static const Q_UINT8 ui_13[] = {
1189 19, 19, 19, 19, 19, 19, 19, 19,
1190 19, 19, 19, 19, 19, 19, 19, 0,
1191 19, 0, 19, 19, 19, 19, 0, 0,
1192 19, 19, 19, 19, 19, 19, 19, 0,
1193 19, 19, 19, 19, 19, 19, 19, 19,
1194 19, 19, 19, 19, 19, 19, 19, 19,
1195 19, 19, 19, 19, 19, 19, 19, 19,
1196 19, 19, 19, 19, 19, 19, 19, 19,
1197 19, 19, 19, 19, 19, 19, 19, 0,
1198 19, 19, 19, 19, 19, 19, 19, 19,
1199 19, 19, 19, 19, 19, 19, 19, 19,
1200 19, 19, 19, 0, 0, 0, 0, 0,
1201 0, 26, 26, 26, 26, 26, 26, 26,
1202 26, 4, 4, 4, 4, 4, 4, 4,
1203 4, 4, 6, 6, 6, 6, 6, 6,
1204 6, 6, 6, 6, 6, 0, 0, 0,
1205 0, 0, 0, 0, 0, 0, 0, 0,
1206 0, 0, 0, 0, 0, 0, 0, 0,
1207 0, 0, 0, 0, 0, 0, 0, 0,
1208 0, 0, 0, 0, 0, 0, 0, 0,
1209 19, 19, 19, 19, 19, 19, 19, 19,
1210 19, 19, 19, 19, 19, 19, 19, 19,
1211 19, 19, 19, 19, 19, 19, 19, 19,
1212 19, 19, 19, 19, 19, 19, 19, 19,
1213 19, 19, 19, 19, 19, 19, 19, 19,
1214 19, 19, 19, 19, 19, 19, 19, 19,
1215 19, 19, 19, 19, 19, 19, 19, 19,
1216 19, 19, 19, 19, 19, 19, 19, 19,
1217 19, 19, 19, 19, 19, 19, 19, 19,
1218 19, 19, 19, 19, 19, 19, 19, 19,
1219 19, 19, 19, 19, 19, 0, 0, 0,
1220 0, 0, 0, 0, 0, 0, 0, 0,
1221};
1222
1223static const Q_UINT8 ui_14[] = {
1224 0, 19, 19, 19, 19, 19, 19, 19,
1225 19, 19, 19, 19, 19, 19, 19, 19,
1226 19, 19, 19, 19, 19, 19, 19, 19,
1227 19, 19, 19, 19, 19, 19, 19, 19,
1228 19, 19, 19, 19, 19, 19, 19, 19,
1229 19, 19, 19, 19, 19, 19, 19, 19,
1230 19, 19, 19, 19, 19, 19, 19, 19,
1231 19, 19, 19, 19, 19, 19, 19, 19,
1232 19, 19, 19, 19, 19, 19, 19, 19,
1233 19, 19, 19, 19, 19, 19, 19, 19,
1234 19, 19, 19, 19, 19, 19, 19, 19,
1235 19, 19, 19, 19, 19, 19, 19, 19,
1236 19, 19, 19, 19, 19, 19, 19, 19,
1237 19, 19, 19, 19, 19, 19, 19, 19,
1238 19, 19, 19, 19, 19, 19, 19, 19,
1239 19, 19, 19, 19, 19, 19, 19, 19,
1240 19, 19, 19, 19, 19, 19, 19, 19,
1241 19, 19, 19, 19, 19, 19, 19, 19,
1242 19, 19, 19, 19, 19, 19, 19, 19,
1243 19, 19, 19, 19, 19, 19, 19, 19,
1244 19, 19, 19, 19, 19, 19, 19, 19,
1245 19, 19, 19, 19, 19, 19, 19, 19,
1246 19, 19, 19, 19, 19, 19, 19, 19,
1247 19, 19, 19, 19, 19, 19, 19, 19,
1248 19, 19, 19, 19, 19, 19, 19, 19,
1249 19, 19, 19, 19, 19, 19, 19, 19,
1250 19, 19, 19, 19, 19, 19, 19, 19,
1251 19, 19, 19, 19, 19, 19, 19, 19,
1252 19, 19, 19, 19, 19, 19, 19, 19,
1253 19, 19, 19, 19, 19, 19, 19, 19,
1254 19, 19, 19, 19, 19, 19, 19, 19,
1255 19, 19, 19, 19, 19, 19, 19, 19,
1256};
1257
1258static const Q_UINT8 ui_15[] = {
1259 19, 19, 19, 19, 19, 19, 19, 19,
1260 19, 19, 19, 19, 19, 19, 19, 19,
1261 19, 19, 19, 19, 19, 19, 19, 19,
1262 19, 19, 19, 19, 19, 19, 19, 19,
1263 19, 19, 19, 19, 19, 19, 19, 19,
1264 19, 19, 19, 19, 19, 19, 19, 19,
1265 19, 19, 19, 19, 19, 19, 19, 19,
1266 19, 19, 19, 19, 19, 19, 19, 19,
1267 19, 19, 19, 19, 19, 19, 19, 19,
1268 19, 19, 19, 19, 19, 19, 19, 19,
1269 19, 19, 19, 19, 19, 19, 19, 19,
1270 19, 19, 19, 19, 19, 19, 19, 19,
1271 19, 19, 19, 19, 19, 19, 19, 19,
1272 19, 19, 19, 19, 19, 19, 19, 19,
1273 19, 19, 19, 19, 19, 19, 19, 19,
1274 19, 19, 19, 19, 19, 19, 19, 19,
1275 19, 19, 19, 19, 19, 19, 19, 19,
1276 19, 19, 19, 19, 19, 19, 19, 19,
1277 19, 19, 19, 19, 19, 19, 19, 19,
1278 19, 19, 19, 19, 19, 19, 19, 19,
1279 19, 19, 19, 19, 19, 19, 19, 19,
1280 19, 19, 19, 19, 19, 19, 19, 19,
1281 19, 19, 19, 19, 19, 19, 19, 19,
1282 19, 19, 19, 19, 19, 19, 19, 19,
1283 19, 19, 19, 19, 19, 19, 19, 19,
1284 19, 19, 19, 19, 19, 19, 19, 19,
1285 19, 19, 19, 19, 19, 19, 19, 19,
1286 19, 19, 19, 19, 19, 19, 19, 19,
1287 19, 19, 19, 19, 19, 19, 19, 19,
1288 19, 19, 19, 19, 19, 19, 19, 19,
1289 19, 19, 19, 19, 19, 19, 19, 19,
1290 19, 19, 19, 19, 19, 19, 19, 19,
1291};
1292
1293static const Q_UINT8 ui_16[] = {
1294 19, 19, 19, 19, 19, 19, 19, 19,
1295 19, 19, 19, 19, 19, 19, 19, 19,
1296 19, 19, 19, 19, 19, 19, 19, 19,
1297 19, 19, 19, 19, 19, 19, 19, 19,
1298 19, 19, 19, 19, 19, 19, 19, 19,
1299 19, 19, 19, 19, 19, 19, 19, 19,
1300 19, 19, 19, 19, 19, 19, 19, 19,
1301 19, 19, 19, 19, 19, 19, 19, 19,
1302 19, 19, 19, 19, 19, 19, 19, 19,
1303 19, 19, 19, 19, 19, 19, 19, 19,
1304 19, 19, 19, 19, 19, 19, 19, 19,
1305 19, 19, 19, 19, 19, 19, 19, 19,
1306 19, 19, 19, 19, 19, 19, 19, 19,
1307 19, 19, 19, 19, 19, 26, 26, 19,
1308 19, 19, 19, 19, 19, 19, 19, 0,
1309 0, 0, 0, 0, 0, 0, 0, 0,
1310 7, 19, 19, 19, 19, 19, 19, 19,
1311 19, 19, 19, 19, 19, 19, 19, 19,
1312 19, 19, 19, 19, 19, 19, 19, 19,
1313 19, 19, 19, 22, 23, 0, 0, 0,
1314 19, 19, 19, 19, 19, 19, 19, 19,
1315 19, 19, 19, 19, 19, 19, 19, 19,
1316 19, 19, 19, 19, 19, 19, 19, 19,
1317 19, 19, 19, 19, 19, 19, 19, 19,
1318 19, 19, 19, 19, 19, 19, 19, 19,
1319 19, 19, 19, 19, 19, 19, 19, 19,
1320 19, 19, 19, 19, 19, 19, 19, 19,
1321 19, 19, 19, 19, 19, 19, 19, 19,
1322 19, 19, 19, 19, 19, 19, 19, 19,
1323 19, 19, 19, 26, 26, 26, 5, 5,
1324 5, 0, 0, 0, 0, 0, 0, 0,
1325 0, 0, 0, 0, 0, 0, 0, 0,
1326};
1327
1328static const Q_UINT8 ui_17[] = {
1329 19, 19, 19, 19, 19, 19, 19, 19,
1330 19, 19, 19, 19, 19, 0, 19, 19,
1331 19, 19, 1, 1, 1, 0, 0, 0,
1332 0, 0, 0, 0, 0, 0, 0, 0,
1333 19, 19, 19, 19, 19, 19, 19, 19,
1334 19, 19, 19, 19, 19, 19, 19, 19,
1335 19, 19, 1, 1, 1, 26, 26, 0,
1336 0, 0, 0, 0, 0, 0, 0, 0,
1337 19, 19, 19, 19, 19, 19, 19, 19,
1338 19, 19, 19, 19, 19, 19, 19, 19,
1339 19, 19, 1, 1, 0, 0, 0, 0,
1340 0, 0, 0, 0, 0, 0, 0, 0,
1341 19, 19, 19, 19, 19, 19, 19, 19,
1342 19, 19, 19, 19, 19, 0, 19, 19,
1343 19, 0, 1, 1, 0, 0, 0, 0,
1344 0, 0, 0, 0, 0, 0, 0, 0,
1345 19, 19, 19, 19, 19, 19, 19, 19,
1346 19, 19, 19, 19, 19, 19, 19, 19,
1347 19, 19, 19, 19, 19, 19, 19, 19,
1348 19, 19, 19, 19, 19, 19, 19, 19,
1349 19, 19, 19, 19, 19, 19, 19, 19,
1350 19, 19, 19, 19, 19, 19, 19, 19,
1351 19, 19, 19, 19, 2, 2, 2, 1,
1352 1, 1, 1, 1, 1, 1, 2, 2,
1353 2, 2, 2, 2, 2, 2, 1, 2,
1354 2, 1, 1, 1, 1, 1, 1, 1,
1355 1, 1, 1, 1, 26, 26, 26, 18,
1356 26, 26, 26, 28, 19, 0, 0, 0,
1357 4, 4, 4, 4, 4, 4, 4, 4,
1358 4, 4, 0, 0, 0, 0, 0, 0,
1359 0, 0, 0, 0, 0, 0, 0, 0,
1360 0, 0, 0, 0, 0, 0, 0, 0,
1361};
1362
1363static const Q_UINT8 ui_18[] = {
1364 26, 26, 26, 26, 26, 26, 21, 26,
1365 26, 26, 26, 1, 1, 1, 11, 0,
1366 4, 4, 4, 4, 4, 4, 4, 4,
1367 4, 4, 0, 0, 0, 0, 0, 0,
1368 19, 19, 19, 19, 19, 19, 19, 19,
1369 19, 19, 19, 19, 19, 19, 19, 19,
1370 19, 19, 19, 19, 19, 19, 19, 19,
1371 19, 19, 19, 19, 19, 19, 19, 19,
1372 19, 19, 19, 18, 19, 19, 19, 19,
1373 19, 19, 19, 19, 19, 19, 19, 19,
1374 19, 19, 19, 19, 19, 19, 19, 19,
1375 19, 19, 19, 19, 19, 19, 19, 19,
1376 19, 19, 19, 19, 19, 19, 19, 19,
1377 19, 19, 19, 19, 19, 19, 19, 19,
1378 19, 19, 19, 19, 19, 19, 19, 19,
1379 0, 0, 0, 0, 0, 0, 0, 0,
1380 19, 19, 19, 19, 19, 19, 19, 19,
1381 19, 19, 19, 19, 19, 19, 19, 19,
1382 19, 19, 19, 19, 19, 19, 19, 19,
1383 19, 19, 19, 19, 19, 19, 19, 19,
1384 19, 19, 19, 19, 19, 19, 19, 19,
1385 19, 1, 0, 0, 0, 0, 0, 0,
1386 0, 0, 0, 0, 0, 0, 0, 0,
1387 0, 0, 0, 0, 0, 0, 0, 0,
1388 0, 0, 0, 0, 0, 0, 0, 0,
1389 0, 0, 0, 0, 0, 0, 0, 0,
1390 0, 0, 0, 0, 0, 0, 0, 0,
1391 0, 0, 0, 0, 0, 0, 0, 0,
1392 0, 0, 0, 0, 0, 0, 0, 0,
1393 0, 0, 0, 0, 0, 0, 0, 0,
1394 0, 0, 0, 0, 0, 0, 0, 0,
1395 0, 0, 0, 0, 0, 0, 0, 0,
1396};
1397
1398static const Q_UINT8 ui_1E[] = {
1399 15, 16, 15, 16, 15, 16, 15, 16,
1400 15, 16, 15, 16, 15, 16, 15, 16,
1401 15, 16, 15, 16, 15, 16, 15, 16,
1402 15, 16, 15, 16, 15, 16, 15, 16,
1403 15, 16, 15, 16, 15, 16, 15, 16,
1404 15, 16, 15, 16, 15, 16, 15, 16,
1405 15, 16, 15, 16, 15, 16, 15, 16,
1406 15, 16, 15, 16, 15, 16, 15, 16,
1407 15, 16, 15, 16, 15, 16, 15, 16,
1408 15, 16, 15, 16, 15, 16, 15, 16,
1409 15, 16, 15, 16, 15, 16, 15, 16,
1410 15, 16, 15, 16, 15, 16, 15, 16,
1411 15, 16, 15, 16, 15, 16, 15, 16,
1412 15, 16, 15, 16, 15, 16, 15, 16,
1413 15, 16, 15, 16, 15, 16, 15, 16,
1414 15, 16, 15, 16, 15, 16, 15, 16,
1415 15, 16, 15, 16, 15, 16, 15, 16,
1416 15, 16, 15, 16, 15, 16, 15, 16,
1417 15, 16, 15, 16, 15, 16, 16, 16,
1418 16, 16, 16, 16, 0, 0, 0, 0,
1419 15, 16, 15, 16, 15, 16, 15, 16,
1420 15, 16, 15, 16, 15, 16, 15, 16,
1421 15, 16, 15, 16, 15, 16, 15, 16,
1422 15, 16, 15, 16, 15, 16, 15, 16,
1423 15, 16, 15, 16, 15, 16, 15, 16,
1424 15, 16, 15, 16, 15, 16, 15, 16,
1425 15, 16, 15, 16, 15, 16, 15, 16,
1426 15, 16, 15, 16, 15, 16, 15, 16,
1427 15, 16, 15, 16, 15, 16, 15, 16,
1428 15, 16, 15, 16, 15, 16, 15, 16,
1429 15, 16, 15, 16, 15, 16, 15, 16,
1430 15, 16, 0, 0, 0, 0, 0, 0,
1431};
1432
1433static const Q_UINT8 ui_1F[] = {
1434 16, 16, 16, 16, 16, 16, 16, 16,
1435 15, 15, 15, 15, 15, 15, 15, 15,
1436 16, 16, 16, 16, 16, 16, 0, 0,
1437 15, 15, 15, 15, 15, 15, 0, 0,
1438 16, 16, 16, 16, 16, 16, 16, 16,
1439 15, 15, 15, 15, 15, 15, 15, 15,
1440 16, 16, 16, 16, 16, 16, 16, 16,
1441 15, 15, 15, 15, 15, 15, 15, 15,
1442 16, 16, 16, 16, 16, 16, 0, 0,
1443 15, 15, 15, 15, 15, 15, 0, 0,
1444 16, 16, 16, 16, 16, 16, 16, 16,
1445 0, 15, 0, 15, 0, 15, 0, 15,
1446 16, 16, 16, 16, 16, 16, 16, 16,
1447 15, 15, 15, 15, 15, 15, 15, 15,
1448 16, 16, 16, 16, 16, 16, 16, 16,
1449 16, 16, 16, 16, 16, 16, 0, 0,
1450 16, 16, 16, 16, 16, 16, 16, 16,
1451 17, 17, 17, 17, 17, 17, 17, 17,
1452 16, 16, 16, 16, 16, 16, 16, 16,
1453 17, 17, 17, 17, 17, 17, 17, 17,
1454 16, 16, 16, 16, 16, 16, 16, 16,
1455 17, 17, 17, 17, 17, 17, 17, 17,
1456 16, 16, 16, 16, 16, 0, 16, 16,
1457 15, 15, 15, 15, 17, 29, 16, 29,
1458 29, 29, 16, 16, 16, 0, 16, 16,
1459 15, 15, 15, 15, 17, 29, 29, 29,
1460 16, 16, 16, 16, 0, 0, 16, 16,
1461 15, 15, 15, 15, 0, 29, 29, 29,
1462 16, 16, 16, 16, 16, 16, 16, 16,
1463 15, 15, 15, 15, 15, 29, 29, 29,
1464 0, 0, 16, 16, 16, 0, 16, 16,
1465 15, 15, 15, 15, 17, 29, 29, 0,
1466};
1467
1468static const Q_UINT8 ui_20[] = {
1469 7, 7, 7, 7, 7, 7, 7, 7,
1470 7, 7, 7, 7, 11, 11, 11, 11,
1471 21, 21, 21, 21, 21, 21, 26, 26,
1472 24, 25, 22, 24, 24, 25, 22, 24,
1473 26, 26, 26, 26, 26, 26, 26, 26,
1474 8, 9, 11, 11, 11, 11, 11, 7,
1475 26, 26, 26, 26, 26, 26, 26, 26,
1476 26, 24, 25, 26, 26, 26, 26, 20,
1477 20, 26, 26, 26, 27, 22, 23, 26,
1478 26, 26, 26, 26, 26, 26, 26, 26,
1479 26, 26, 27, 0, 0, 0, 0, 26,
1480 0, 0, 0, 0, 0, 0, 0, 7,
1481 11, 11, 11, 11, 0, 0, 0, 0,
1482 0, 0, 11, 11, 11, 11, 11, 11,
1483 6, 16, 0, 0, 6, 6, 6, 6,
1484 6, 6, 27, 27, 27, 22, 23, 16,
1485 6, 6, 6, 6, 6, 6, 6, 6,
1486 6, 6, 27, 27, 27, 22, 23, 0,
1487 0, 0, 0, 0, 0, 0, 0, 0,
1488 0, 0, 0, 0, 0, 0, 0, 0,
1489 28, 28, 28, 28, 28, 28, 28, 28,
1490 28, 28, 28, 28, 28, 28, 28, 28,
1491 28, 28, 0, 0, 0, 0, 0, 0,
1492 0, 0, 0, 0, 0, 0, 0, 0,
1493 0, 0, 0, 0, 0, 0, 0, 0,
1494 0, 0, 0, 0, 0, 0, 0, 0,
1495 1, 1, 1, 1, 1, 1, 1, 1,
1496 1, 1, 1, 1, 1, 3, 3, 3,
1497 3, 1, 3, 3, 3, 1, 1, 1,
1498 1, 1, 1, 0, 0, 0, 0, 0,
1499 0, 0, 0, 0, 0, 0, 0, 0,
1500 0, 0, 0, 0, 0, 0, 0, 0,
1501};
1502
1503static const Q_UINT8 ui_21[] = {
1504 30, 30, 15, 30, 30, 30, 30, 15,
1505 30, 30, 16, 15, 15, 15, 16, 16,
1506 15, 15, 15, 16, 30, 15, 30, 30,
1507 30, 15, 15, 15, 15, 15, 30, 30,
1508 30, 30, 30, 30, 15, 30, 15, 30,
1509 15, 30, 15, 15, 15, 15, 30, 16,
1510 15, 15, 30, 15, 16, 19, 19, 19,
1511 19, 16, 30, 0, 0, 16, 15, 15,
1512 27, 27, 27, 27, 27, 15, 16, 16,
1513 16, 16, 30, 27, 0, 0, 0, 0,
1514 0, 0, 0, 6, 6, 6, 6, 6,
1515 6, 6, 6, 6, 6, 6, 6, 6,
1516 5, 5, 5, 5, 5, 5, 5, 5,
1517 5, 5, 5, 5, 5, 5, 5, 5,
1518 5, 5, 5, 5, 5, 5, 5, 5,
1519 5, 5, 5, 5, 5, 5, 5, 5,
1520 5, 5, 5, 5, 0, 0, 0, 0,
1521 0, 0, 0, 0, 0, 0, 0, 0,
1522 27, 27, 27, 27, 27, 30, 30, 30,
1523 30, 30, 27, 27, 30, 30, 30, 30,
1524 27, 30, 30, 27, 30, 30, 27, 30,
1525 30, 30, 30, 30, 30, 30, 27, 30,
1526 30, 30, 30, 30, 30, 30, 30, 30,
1527 30, 30, 30, 30, 30, 30, 30, 30,
1528 30, 30, 30, 30, 30, 30, 30, 30,
1529 30, 30, 30, 30, 30, 30, 27, 27,
1530 30, 30, 27, 30, 27, 30, 30, 30,
1531 30, 30, 30, 30, 30, 30, 30, 30,
1532 30, 30, 30, 30, 30, 30, 30, 30,
1533 30, 30, 30, 30, 30, 30, 30, 30,
1534 30, 30, 30, 30, 27, 27, 27, 27,
1535 27, 27, 27, 27, 27, 27, 27, 27,
1536};
1537
1538static const Q_UINT8 ui_22[] = {
1539 27, 27, 27, 27, 27, 27, 27, 27,
1540 27, 27, 27, 27, 27, 27, 27, 27,
1541 27, 27, 27, 27, 27, 27, 27, 27,
1542 27, 27, 27, 27, 27, 27, 27, 27,
1543 27, 27, 27, 27, 27, 27, 27, 27,
1544 27, 27, 27, 27, 27, 27, 27, 27,
1545 27, 27, 27, 27, 27, 27, 27, 27,
1546 27, 27, 27, 27, 27, 27, 27, 27,
1547 27, 27, 27, 27, 27, 27, 27, 27,
1548 27, 27, 27, 27, 27, 27, 27, 27,
1549 27, 27, 27, 27, 27, 27, 27, 27,
1550 27, 27, 27, 27, 27, 27, 27, 27,
1551 27, 27, 27, 27, 27, 27, 27, 27,
1552 27, 27, 27, 27, 27, 27, 27, 27,
1553 27, 27, 27, 27, 27, 27, 27, 27,
1554 27, 27, 27, 27, 27, 27, 27, 27,
1555 27, 27, 27, 27, 27, 27, 27, 27,
1556 27, 27, 27, 27, 27, 27, 27, 27,
1557 27, 27, 27, 27, 27, 27, 27, 27,
1558 27, 27, 27, 27, 27, 27, 27, 27,
1559 27, 27, 27, 27, 27, 27, 27, 27,
1560 27, 27, 27, 27, 27, 27, 27, 27,
1561 27, 27, 27, 27, 27, 27, 27, 27,
1562 27, 27, 27, 27, 27, 27, 27, 27,
1563 27, 27, 27, 27, 27, 27, 27, 27,
1564 27, 27, 27, 27, 27, 27, 27, 27,
1565 27, 27, 27, 27, 27, 27, 27, 27,
1566 27, 27, 27, 27, 27, 27, 27, 27,
1567 27, 27, 27, 27, 27, 27, 27, 27,
1568 27, 27, 27, 27, 27, 27, 27, 27,
1569 27, 27, 27, 27, 27, 27, 27, 27,
1570 27, 27, 27, 27, 27, 27, 27, 27,
1571};
1572
1573static const Q_UINT8 ui_23[] = {
1574 30, 30, 30, 30, 30, 30, 30, 30,
1575 27, 27, 27, 27, 30, 30, 30, 30,
1576 30, 30, 30, 30, 30, 30, 30, 30,
1577 30, 30, 30, 30, 30, 30, 30, 30,
1578 27, 27, 30, 30, 30, 30, 30, 30,
1579 30, 22, 23, 30, 30, 30, 30, 30,
1580 30, 30, 30, 30, 30, 30, 30, 30,
1581 30, 30, 30, 30, 30, 30, 30, 30,
1582 30, 30, 30, 30, 30, 30, 30, 30,
1583 30, 30, 30, 30, 30, 30, 30, 30,
1584 30, 30, 30, 30, 30, 30, 30, 30,
1585 30, 30, 30, 30, 30, 30, 30, 30,
1586 30, 30, 30, 30, 30, 30, 30, 30,
1587 30, 30, 30, 30, 30, 30, 30, 30,
1588 30, 30, 30, 30, 30, 30, 30, 30,
1589 30, 30, 30, 30, 27, 30, 30, 30,
1590 30, 30, 30, 30, 30, 30, 30, 30,
1591 30, 30, 30, 30, 30, 30, 30, 30,
1592 30, 30, 30, 30, 30, 30, 30, 30,
1593 30, 30, 30, 27, 27, 27, 27, 27,
1594 27, 27, 27, 27, 27, 27, 27, 27,
1595 27, 27, 27, 27, 27, 27, 27, 27,
1596 27, 27, 27, 27, 22, 23, 26, 30,
1597 30, 30, 30, 30, 30, 30, 30, 30,
1598 30, 30, 30, 30, 30, 30, 30, 30,
1599 30, 30, 30, 30, 30, 30, 30, 0,
1600 0, 0, 0, 0, 0, 0, 0, 0,
1601 0, 0, 0, 0, 0, 0, 0, 0,
1602 0, 0, 0, 0, 0, 0, 0, 0,
1603 0, 0, 0, 0, 0, 0, 0, 0,
1604 0, 0, 0, 0, 0, 0, 0, 0,
1605 0, 0, 0, 0, 0, 0, 0, 0,
1606};
1607
1608static const Q_UINT8 ui_24[] = {
1609 30, 30, 30, 30, 30, 30, 30, 30,
1610 30, 30, 30, 30, 30, 30, 30, 30,
1611 30, 30, 30, 30, 30, 30, 30, 30,
1612 30, 30, 30, 30, 30, 30, 30, 30,
1613 30, 30, 30, 30, 30, 30, 30, 0,
1614 0, 0, 0, 0, 0, 0, 0, 0,
1615 0, 0, 0, 0, 0, 0, 0, 0,
1616 0, 0, 0, 0, 0, 0, 0, 0,
1617 30, 30, 30, 30, 30, 30, 30, 30,
1618 30, 30, 30, 0, 0, 0, 0, 0,
1619 0, 0, 0, 0, 0, 0, 0, 0,
1620 0, 0, 0, 0, 0, 0, 0, 0,
1621 6, 6, 6, 6, 6, 6, 6, 6,
1622 6, 6, 6, 6, 6, 6, 6, 6,
1623 6, 6, 6, 6, 6, 6, 6, 6,
1624 6, 6, 6, 6, 6, 6, 6, 6,
1625 6, 6, 6, 6, 6, 6, 6, 6,
1626 6, 6, 6, 6, 6, 6, 6, 6,
1627 6, 6, 6, 6, 6, 6, 6, 6,
1628 6, 6, 6, 6, 30, 30, 30, 30,
1629 30, 30, 30, 30, 30, 30, 30, 30,
1630 30, 30, 30, 30, 30, 30, 30, 30,
1631 30, 30, 30, 30, 30, 30, 30, 30,
1632 30, 30, 30, 30, 30, 30, 30, 30,
1633 30, 30, 30, 30, 30, 30, 30, 30,
1634 30, 30, 30, 30, 30, 30, 30, 30,
1635 30, 30, 30, 30, 30, 30, 30, 30,
1636 30, 30, 30, 30, 30, 30, 30, 30,
1637 30, 30, 30, 30, 30, 30, 30, 30,
1638 30, 30, 6, 6, 6, 6, 6, 6,
1639 6, 6, 6, 6, 6, 6, 6, 6,
1640 6, 6, 6, 6, 6, 6, 6, 0,
1641};
1642
1643static const Q_UINT8 ui_25[] = {
1644 30, 30, 30, 30, 30, 30, 30, 30,
1645 30, 30, 30, 30, 30, 30, 30, 30,
1646 30, 30, 30, 30, 30, 30, 30, 30,
1647 30, 30, 30, 30, 30, 30, 30, 30,
1648 30, 30, 30, 30, 30, 30, 30, 30,
1649 30, 30, 30, 30, 30, 30, 30, 30,
1650 30, 30, 30, 30, 30, 30, 30, 30,
1651 30, 30, 30, 30, 30, 30, 30, 30,
1652 30, 30, 30, 30, 30, 30, 30, 30,
1653 30, 30, 30, 30, 30, 30, 30, 30,
1654 30, 30, 30, 30, 30, 30, 30, 30,
1655 30, 30, 30, 30, 30, 30, 30, 30,
1656 30, 30, 30, 30, 30, 30, 30, 30,
1657 30, 30, 30, 30, 30, 30, 30, 30,
1658 30, 30, 30, 30, 30, 30, 30, 30,
1659 30, 30, 30, 30, 30, 30, 30, 30,
1660 30, 30, 30, 30, 30, 30, 30, 30,
1661 30, 30, 30, 30, 30, 30, 30, 30,
1662 30, 30, 30, 30, 30, 30, 30, 30,
1663 30, 30, 30, 30, 30, 30, 30, 30,
1664 30, 30, 30, 30, 30, 30, 30, 30,
1665 30, 30, 30, 30, 30, 30, 30, 30,
1666 30, 30, 30, 30, 30, 30, 30, 27,
1667 30, 30, 30, 30, 30, 30, 30, 30,
1668 30, 27, 30, 30, 30, 30, 30, 30,
1669 30, 30, 30, 30, 30, 30, 30, 30,
1670 30, 30, 30, 30, 30, 30, 30, 30,
1671 30, 30, 30, 30, 30, 30, 30, 30,
1672 30, 30, 30, 30, 30, 30, 30, 30,
1673 30, 30, 30, 30, 30, 30, 30, 30,
1674 30, 30, 30, 30, 30, 30, 30, 30,
1675 27, 27, 27, 27, 27, 27, 27, 27,
1676};
1677
1678static const Q_UINT8 ui_26[] = {
1679 30, 30, 30, 30, 30, 30, 30, 30,
1680 30, 30, 30, 30, 30, 30, 30, 30,
1681 30, 30, 30, 30, 0, 0, 30, 30,
1682 0, 30, 30, 30, 30, 30, 30, 30,
1683 30, 30, 30, 30, 30, 30, 30, 30,
1684 30, 30, 30, 30, 30, 30, 30, 30,
1685 30, 30, 30, 30, 30, 30, 30, 30,
1686 30, 30, 30, 30, 30, 30, 30, 30,
1687 30, 30, 30, 30, 30, 30, 30, 30,
1688 30, 30, 30, 30, 30, 30, 30, 30,
1689 30, 30, 30, 30, 30, 30, 30, 30,
1690 30, 30, 30, 30, 30, 30, 30, 30,
1691 30, 30, 30, 30, 30, 30, 30, 30,
1692 30, 30, 30, 30, 30, 30, 30, 27,
1693 30, 30, 30, 30, 30, 30, 30, 30,
1694 30, 30, 30, 30, 30, 30, 0, 0,
1695 30, 30, 30, 30, 30, 30, 30, 30,
1696 30, 30, 0, 0, 0, 0, 0, 0,
1697 0, 0, 0, 0, 0, 0, 0, 0,
1698 0, 0, 0, 0, 0, 0, 0, 0,
1699 0, 0, 0, 0, 0, 0, 0, 0,
1700 0, 0, 0, 0, 0, 0, 0, 0,
1701 0, 0, 0, 0, 0, 0, 0, 0,
1702 0, 0, 0, 0, 0, 0, 0, 0,
1703 0, 0, 0, 0, 0, 0, 0, 0,
1704 0, 0, 0, 0, 0, 0, 0, 0,
1705 0, 0, 0, 0, 0, 0, 0, 0,
1706 0, 0, 0, 0, 0, 0, 0, 0,
1707 0, 0, 0, 0, 0, 0, 0, 0,
1708 0, 0, 0, 0, 0, 0, 0, 0,
1709 0, 0, 0, 0, 0, 0, 0, 0,
1710 0, 0, 0, 0, 0, 0, 0, 0,
1711};
1712
1713static const Q_UINT8 ui_27[] = {
1714 0, 30, 30, 30, 30, 0, 30, 30,
1715 30, 30, 0, 0, 30, 30, 30, 30,
1716 30, 30, 30, 30, 30, 30, 30, 30,
1717 30, 30, 30, 30, 30, 30, 30, 30,
1718 30, 30, 30, 30, 30, 30, 30, 30,
1719 0, 30, 30, 30, 30, 30, 30, 30,
1720 30, 30, 30, 30, 30, 30, 30, 30,
1721 30, 30, 30, 30, 30, 30, 30, 30,
1722 30, 30, 30, 30, 30, 30, 30, 30,
1723 30, 30, 30, 30, 0, 30, 0, 30,
1724 30, 30, 30, 0, 0, 0, 30, 0,
1725 30, 30, 30, 30, 30, 30, 30, 0,
1726 0, 30, 30, 30, 30, 30, 30, 30,
1727 22, 23, 22, 23, 22, 23, 22, 23,
1728 22, 23, 22, 23, 22, 23, 6, 6,
1729 6, 6, 6, 6, 6, 6, 6, 6,
1730 6, 6, 6, 6, 6, 6, 6, 6,
1731 6, 6, 6, 6, 6, 6, 6, 6,
1732 6, 6, 6, 6, 30, 0, 0, 0,
1733 30, 30, 30, 30, 30, 30, 30, 30,
1734 30, 30, 30, 30, 30, 30, 30, 30,
1735 30, 30, 30, 30, 30, 30, 30, 30,
1736 0, 30, 30, 30, 30, 30, 30, 30,
1737 30, 30, 30, 30, 30, 30, 30, 0,
1738 0, 0, 0, 0, 0, 0, 0, 0,
1739 0, 0, 0, 0, 0, 0, 0, 0,
1740 27, 27, 27, 27, 27, 27, 27, 27,
1741 27, 27, 27, 27, 27, 27, 27, 27,
1742 27, 27, 27, 27, 27, 27, 22, 23,
1743 22, 23, 22, 23, 0, 0, 0, 0,
1744 27, 27, 27, 27, 27, 27, 27, 27,
1745 27, 27, 27, 27, 27, 27, 27, 27,
1746};
1747
1748static const Q_UINT8 ui_28[] = {
1749 30, 30, 30, 30, 30, 30, 30, 30,
1750 30, 30, 30, 30, 30, 30, 30, 30,
1751 30, 30, 30, 30, 30, 30, 30, 30,
1752 30, 30, 30, 30, 30, 30, 30, 30,
1753 30, 30, 30, 30, 30, 30, 30, 30,
1754 30, 30, 30, 30, 30, 30, 30, 30,
1755 30, 30, 30, 30, 30, 30, 30, 30,
1756 30, 30, 30, 30, 30, 30, 30, 30,
1757 30, 30, 30, 30, 30, 30, 30, 30,
1758 30, 30, 30, 30, 30, 30, 30, 30,
1759 30, 30, 30, 30, 30, 30, 30, 30,
1760 30, 30, 30, 30, 30, 30, 30, 30,
1761 30, 30, 30, 30, 30, 30, 30, 30,
1762 30, 30, 30, 30, 30, 30, 30, 30,
1763 30, 30, 30, 30, 30, 30, 30, 30,
1764 30, 30, 30, 30, 30, 30, 30, 30,
1765 30, 30, 30, 30, 30, 30, 30, 30,
1766 30, 30, 30, 30, 30, 30, 30, 30,
1767 30, 30, 30, 30, 30, 30, 30, 30,
1768 30, 30, 30, 30, 30, 30, 30, 30,
1769 30, 30, 30, 30, 30, 30, 30, 30,
1770 30, 30, 30, 30, 30, 30, 30, 30,
1771 30, 30, 30, 30, 30, 30, 30, 30,
1772 30, 30, 30, 30, 30, 30, 30, 30,
1773 30, 30, 30, 30, 30, 30, 30, 30,
1774 30, 30, 30, 30, 30, 30, 30, 30,
1775 30, 30, 30, 30, 30, 30, 30, 30,
1776 30, 30, 30, 30, 30, 30, 30, 30,
1777 30, 30, 30, 30, 30, 30, 30, 30,
1778 30, 30, 30, 30, 30, 30, 30, 30,
1779 30, 30, 30, 30, 30, 30, 30, 30,
1780 30, 30, 30, 30, 30, 30, 30, 30,
1781};
1782
1783static const Q_UINT8 ui_29[] = {
1784 27, 27, 27, 27, 27, 27, 27, 27,
1785 27, 27, 27, 27, 27, 27, 27, 27,
1786 27, 27, 27, 27, 27, 27, 27, 27,
1787 27, 27, 27, 27, 27, 27, 27, 27,
1788 27, 27, 27, 27, 27, 27, 27, 27,
1789 27, 27, 27, 27, 27, 27, 27, 27,
1790 27, 27, 27, 27, 27, 27, 27, 27,
1791 27, 27, 27, 27, 27, 27, 27, 27,
1792 27, 27, 27, 27, 27, 27, 27, 27,
1793 27, 27, 27, 27, 27, 27, 27, 27,
1794 27, 27, 27, 27, 27, 27, 27, 27,
1795 27, 27, 27, 27, 27, 27, 27, 27,
1796 27, 27, 27, 27, 27, 27, 27, 27,
1797 27, 27, 27, 27, 27, 27, 27, 27,
1798 27, 27, 27, 27, 27, 27, 27, 27,
1799 27, 27, 27, 27, 27, 27, 27, 27,
1800 27, 27, 27, 22, 23, 22, 23, 22,
1801 23, 22, 23, 22, 23, 22, 23, 22,
1802 23, 22, 23, 22, 23, 22, 23, 22,
1803 23, 27, 27, 27, 27, 27, 27, 27,
1804 27, 27, 27, 27, 27, 27, 27, 27,
1805 27, 27, 27, 27, 27, 27, 27, 27,
1806 27, 27, 27, 27, 27, 27, 27, 27,
1807 27, 27, 27, 27, 27, 27, 27, 27,
1808 27, 27, 27, 27, 27, 27, 27, 27,
1809 27, 27, 27, 27, 27, 27, 27, 27,
1810 27, 27, 27, 27, 27, 27, 27, 27,
1811 22, 23, 22, 23, 27, 27, 27, 27,
1812 27, 27, 27, 27, 27, 27, 27, 27,
1813 27, 27, 27, 27, 27, 27, 27, 27,
1814 27, 27, 27, 27, 27, 27, 27, 27,
1815 27, 27, 27, 27, 22, 23, 27, 27,
1816};
1817
1818static const Q_UINT8 ui_2E[] = {
1819 0, 0, 0, 0, 0, 0, 0, 0,
1820 0, 0, 0, 0, 0, 0, 0, 0,
1821 0, 0, 0, 0, 0, 0, 0, 0,
1822 0, 0, 0, 0, 0, 0, 0, 0,
1823 0, 0, 0, 0, 0, 0, 0, 0,
1824 0, 0, 0, 0, 0, 0, 0, 0,
1825 0, 0, 0, 0, 0, 0, 0, 0,
1826 0, 0, 0, 0, 0, 0, 0, 0,
1827 0, 0, 0, 0, 0, 0, 0, 0,
1828 0, 0, 0, 0, 0, 0, 0, 0,
1829 0, 0, 0, 0, 0, 0, 0, 0,
1830 0, 0, 0, 0, 0, 0, 0, 0,
1831 0, 0, 0, 0, 0, 0, 0, 0,
1832 0, 0, 0, 0, 0, 0, 0, 0,
1833 0, 0, 0, 0, 0, 0, 0, 0,
1834 0, 0, 0, 0, 0, 0, 0, 0,
1835 30, 30, 30, 30, 30, 30, 30, 30,
1836 30, 30, 30, 30, 30, 30, 30, 30,
1837 30, 30, 30, 30, 30, 30, 30, 30,
1838 30, 30, 0, 30, 30, 30, 30, 30,
1839 30, 30, 30, 30, 30, 30, 30, 30,
1840 30, 30, 30, 30, 30, 30, 30, 30,
1841 30, 30, 30, 30, 30, 30, 30, 30,
1842 30, 30, 30, 30, 30, 30, 30, 30,
1843 30, 30, 30, 30, 30, 30, 30, 30,
1844 30, 30, 30, 30, 30, 30, 30, 30,
1845 30, 30, 30, 30, 30, 30, 30, 30,
1846 30, 30, 30, 30, 30, 30, 30, 30,
1847 30, 30, 30, 30, 30, 30, 30, 30,
1848 30, 30, 30, 30, 30, 30, 30, 30,
1849 30, 30, 30, 30, 0, 0, 0, 0,
1850 0, 0, 0, 0, 0, 0, 0, 0,
1851};
1852
1853static const Q_UINT8 ui_2F[] = {
1854 30, 30, 30, 30, 30, 30, 30, 30,
1855 30, 30, 30, 30, 30, 30, 30, 30,
1856 30, 30, 30, 30, 30, 30, 30, 30,
1857 30, 30, 30, 30, 30, 30, 30, 30,
1858 30, 30, 30, 30, 30, 30, 30, 30,
1859 30, 30, 30, 30, 30, 30, 30, 30,
1860 30, 30, 30, 30, 30, 30, 30, 30,
1861 30, 30, 30, 30, 30, 30, 30, 30,
1862 30, 30, 30, 30, 30, 30, 30, 30,
1863 30, 30, 30, 30, 30, 30, 30, 30,
1864 30, 30, 30, 30, 30, 30, 30, 30,
1865 30, 30, 30, 30, 30, 30, 30, 30,
1866 30, 30, 30, 30, 30, 30, 30, 30,
1867 30, 30, 30, 30, 30, 30, 30, 30,
1868 30, 30, 30, 30, 30, 30, 30, 30,
1869 30, 30, 30, 30, 30, 30, 30, 30,
1870 30, 30, 30, 30, 30, 30, 30, 30,
1871 30, 30, 30, 30, 30, 30, 30, 30,
1872 30, 30, 30, 30, 30, 30, 30, 30,
1873 30, 30, 30, 30, 30, 30, 30, 30,
1874 30, 30, 30, 30, 30, 30, 30, 30,
1875 30, 30, 30, 30, 30, 30, 30, 30,
1876 30, 30, 30, 30, 30, 30, 30, 30,
1877 30, 30, 30, 30, 30, 30, 30, 30,
1878 30, 30, 30, 30, 30, 30, 30, 30,
1879 30, 30, 30, 30, 30, 30, 30, 30,
1880 30, 30, 30, 30, 30, 30, 0, 0,
1881 0, 0, 0, 0, 0, 0, 0, 0,
1882 0, 0, 0, 0, 0, 0, 0, 0,
1883 0, 0, 0, 0, 0, 0, 0, 0,
1884 30, 30, 30, 30, 30, 30, 30, 30,
1885 30, 30, 30, 30, 0, 0, 0, 0,
1886};
1887
1888static const Q_UINT8 ui_30[] = {
1889 7, 26, 26, 26, 30, 18, 19, 5,
1890 22, 23, 22, 23, 22, 23, 22, 23,
1891 22, 23, 30, 30, 22, 23, 22, 23,
1892 22, 23, 22, 23, 21, 22, 23, 23,
1893 30, 5, 5, 5, 5, 5, 5, 5,
1894 5, 5, 1, 1, 1, 1, 1, 1,
1895 21, 18, 18, 18, 18, 18, 30, 30,
1896 5, 5, 5, 18, 19, 26, 30, 30,
1897 0, 19, 19, 19, 19, 19, 19, 19,
1898 19, 19, 19, 19, 19, 19, 19, 19,
1899 19, 19, 19, 19, 19, 19, 19, 19,
1900 19, 19, 19, 19, 19, 19, 19, 19,
1901 19, 19, 19, 19, 19, 19, 19, 19,
1902 19, 19, 19, 19, 19, 19, 19, 19,
1903 19, 19, 19, 19, 19, 19, 19, 19,
1904 19, 19, 19, 19, 19, 19, 19, 19,
1905 19, 19, 19, 19, 19, 19, 19, 19,
1906 19, 19, 19, 19, 19, 19, 19, 19,
1907 19, 19, 19, 19, 19, 19, 19, 0,
1908 0, 1, 1, 29, 29, 18, 18, 19,
1909 21, 19, 19, 19, 19, 19, 19, 19,
1910 19, 19, 19, 19, 19, 19, 19, 19,
1911 19, 19, 19, 19, 19, 19, 19, 19,
1912 19, 19, 19, 19, 19, 19, 19, 19,
1913 19, 19, 19, 19, 19, 19, 19, 19,
1914 19, 19, 19, 19, 19, 19, 19, 19,
1915 19, 19, 19, 19, 19, 19, 19, 19,
1916 19, 19, 19, 19, 19, 19, 19, 19,
1917 19, 19, 19, 19, 19, 19, 19, 19,
1918 19, 19, 19, 19, 19, 19, 19, 19,
1919 19, 19, 19, 19, 19, 19, 19, 19,
1920 19, 19, 19, 20, 18, 18, 18, 19,
1921};
1922
1923static const Q_UINT8 ui_31[] = {
1924 0, 0, 0, 0, 0, 19, 19, 19,
1925 19, 19, 19, 19, 19, 19, 19, 19,
1926 19, 19, 19, 19, 19, 19, 19, 19,
1927 19, 19, 19, 19, 19, 19, 19, 19,
1928 19, 19, 19, 19, 19, 19, 19, 19,
1929 19, 19, 19, 19, 19, 0, 0, 0,
1930 0, 19, 19, 19, 19, 19, 19, 19,
1931 19, 19, 19, 19, 19, 19, 19, 19,
1932 19, 19, 19, 19, 19, 19, 19, 19,
1933 19, 19, 19, 19, 19, 19, 19, 19,
1934 19, 19, 19, 19, 19, 19, 19, 19,
1935 19, 19, 19, 19, 19, 19, 19, 19,
1936 19, 19, 19, 19, 19, 19, 19, 19,
1937 19, 19, 19, 19, 19, 19, 19, 19,
1938 19, 19, 19, 19, 19, 19, 19, 19,
1939 19, 19, 19, 19, 19, 19, 19, 19,
1940 19, 19, 19, 19, 19, 19, 19, 19,
1941 19, 19, 19, 19, 19, 19, 19, 0,
1942 30, 30, 6, 6, 6, 6, 30, 30,
1943 30, 30, 30, 30, 30, 30, 30, 30,
1944 19, 19, 19, 19, 19, 19, 19, 19,
1945 19, 19, 19, 19, 19, 19, 19, 19,
1946 19, 19, 19, 19, 19, 19, 19, 19,
1947 0, 0, 0, 0, 0, 0, 0, 0,
1948 0, 0, 0, 0, 0, 0, 0, 0,
1949 0, 0, 0, 0, 0, 0, 0, 0,
1950 0, 0, 0, 0, 0, 0, 0, 0,
1951 0, 0, 0, 0, 0, 0, 0, 0,
1952 0, 0, 0, 0, 0, 0, 0, 0,
1953 0, 0, 0, 0, 0, 0, 0, 0,
1954 19, 19, 19, 19, 19, 19, 19, 19,
1955 19, 19, 19, 19, 19, 19, 19, 19,
1956};
1957
1958static const Q_UINT8 ui_32[] = {
1959 30, 30, 30, 30, 30, 30, 30, 30,
1960 30, 30, 30, 30, 30, 30, 30, 30,
1961 30, 30, 30, 30, 30, 30, 30, 30,
1962 30, 30, 30, 30, 30, 0, 0, 0,
1963 6, 6, 6, 6, 6, 6, 6, 6,
1964 6, 6, 30, 30, 30, 30, 30, 30,
1965 30, 30, 30, 30, 30, 30, 30, 30,
1966 30, 30, 30, 30, 30, 30, 30, 30,
1967 30, 30, 30, 30, 0, 0, 0, 0,
1968 0, 0, 0, 0, 0, 0, 0, 0,
1969 0, 6, 6, 6, 6, 6, 6, 6,
1970 6, 6, 6, 6, 6, 6, 6, 6,
1971 30, 30, 30, 30, 30, 30, 30, 30,
1972 30, 30, 30, 30, 30, 30, 30, 30,
1973 30, 30, 30, 30, 30, 30, 30, 30,
1974 30, 30, 30, 30, 0, 0, 0, 30,
1975 6, 6, 6, 6, 6, 6, 6, 6,
1976 6, 6, 30, 30, 30, 30, 30, 30,
1977 30, 30, 30, 30, 30, 30, 30, 30,
1978 30, 30, 30, 30, 30, 30, 30, 30,
1979 30, 30, 30, 30, 30, 30, 30, 30,
1980 30, 30, 30, 30, 30, 30, 30, 30,
1981 30, 6, 6, 6, 6, 6, 6, 6,
1982 6, 6, 6, 6, 6, 6, 6, 6,
1983 30, 30, 30, 30, 30, 30, 30, 30,
1984 30, 30, 30, 30, 0, 0, 0, 0,
1985 30, 30, 30, 30, 30, 30, 30, 30,
1986 30, 30, 30, 30, 30, 30, 30, 30,
1987 30, 30, 30, 30, 30, 30, 30, 30,
1988 30, 30, 30, 30, 30, 30, 30, 30,
1989 30, 30, 30, 30, 30, 30, 30, 30,
1990 30, 30, 30, 30, 30, 30, 30, 0,
1991};
1992
1993static const Q_UINT8 ui_33[] = {
1994 30, 30, 30, 30, 30, 30, 30, 30,
1995 30, 30, 30, 30, 30, 30, 30, 30,
1996 30, 30, 30, 30, 30, 30, 30, 30,
1997 30, 30, 30, 30, 30, 30, 30, 30,
1998 30, 30, 30, 30, 30, 30, 30, 30,
1999 30, 30, 30, 30, 30, 30, 30, 30,
2000 30, 30, 30, 30, 30, 30, 30, 30,
2001 30, 30, 30, 30, 30, 30, 30, 30,
2002 30, 30, 30, 30, 30, 30, 30, 30,
2003 30, 30, 30, 30, 30, 30, 30, 30,
2004 30, 30, 30, 30, 30, 30, 30, 30,
2005 30, 30, 30, 30, 30, 30, 30, 30,
2006 30, 30, 30, 30, 30, 30, 30, 30,
2007 30, 30, 30, 30, 30, 30, 30, 30,
2008 30, 30, 30, 30, 30, 30, 30, 0,
2009 0, 0, 0, 30, 30, 30, 30, 30,
2010 30, 30, 30, 30, 30, 30, 30, 30,
2011 30, 30, 30, 30, 30, 30, 30, 30,
2012 30, 30, 30, 30, 30, 30, 30, 30,
2013 30, 30, 30, 30, 30, 30, 30, 30,
2014 30, 30, 30, 30, 30, 30, 30, 30,
2015 30, 30, 30, 30, 30, 30, 30, 30,
2016 30, 30, 30, 30, 30, 30, 30, 30,
2017 30, 30, 30, 30, 30, 30, 30, 30,
2018 30, 30, 30, 30, 30, 30, 30, 30,
2019 30, 30, 30, 30, 30, 30, 30, 30,
2020 30, 30, 30, 30, 30, 30, 30, 30,
2021 30, 30, 30, 30, 30, 30, 0, 0,
2022 30, 30, 30, 30, 30, 30, 30, 30,
2023 30, 30, 30, 30, 30, 30, 30, 30,
2024 30, 30, 30, 30, 30, 30, 30, 30,
2025 30, 30, 30, 30, 30, 30, 30, 0,
2026};
2027
2028static const Q_UINT8 ui_4D[] = {
2029 19, 19, 19, 19, 19, 19, 19, 19,
2030 19, 19, 19, 19, 19, 19, 19, 19,
2031 19, 19, 19, 19, 19, 19, 19, 19,
2032 19, 19, 19, 19, 19, 19, 19, 19,
2033 19, 19, 19, 19, 19, 19, 19, 19,
2034 19, 19, 19, 19, 19, 19, 19, 19,
2035 19, 19, 19, 19, 19, 19, 19, 19,
2036 19, 19, 19, 19, 19, 19, 19, 19,
2037 19, 19, 19, 19, 19, 19, 19, 19,
2038 19, 19, 19, 19, 19, 19, 19, 19,
2039 19, 19, 19, 19, 19, 19, 19, 19,
2040 19, 19, 19, 19, 19, 19, 19, 19,
2041 19, 19, 19, 19, 19, 19, 19, 19,
2042 19, 19, 19, 19, 19, 19, 19, 19,
2043 19, 19, 19, 19, 19, 19, 19, 19,
2044 19, 19, 19, 19, 19, 19, 19, 19,
2045 19, 19, 19, 19, 19, 19, 19, 19,
2046 19, 19, 19, 19, 19, 19, 19, 19,
2047 19, 19, 19, 19, 19, 19, 19, 19,
2048 19, 19, 19, 19, 19, 19, 19, 19,
2049 19, 19, 19, 19, 19, 19, 19, 19,
2050 19, 19, 19, 19, 19, 19, 19, 19,
2051 19, 19, 19, 19, 19, 19, 0, 0,
2052 0, 0, 0, 0, 0, 0, 0, 0,
2053 0, 0, 0, 0, 0, 0, 0, 0,
2054 0, 0, 0, 0, 0, 0, 0, 0,
2055 0, 0, 0, 0, 0, 0, 0, 0,
2056 0, 0, 0, 0, 0, 0, 0, 0,
2057 0, 0, 0, 0, 0, 0, 0, 0,
2058 0, 0, 0, 0, 0, 0, 0, 0,
2059 0, 0, 0, 0, 0, 0, 0, 0,
2060 0, 0, 0, 0, 0, 0, 0, 0,
2061};
2062
2063static const Q_UINT8 ui_9F[] = {
2064 19, 19, 19, 19, 19, 19, 19, 19,
2065 19, 19, 19, 19, 19, 19, 19, 19,
2066 19, 19, 19, 19, 19, 19, 19, 19,
2067 19, 19, 19, 19, 19, 19, 19, 19,
2068 19, 19, 19, 19, 19, 19, 19, 19,
2069 19, 19, 19, 19, 19, 19, 19, 19,
2070 19, 19, 19, 19, 19, 19, 19, 19,
2071 19, 19, 19, 19, 19, 19, 19, 19,
2072 19, 19, 19, 19, 19, 19, 19, 19,
2073 19, 19, 19, 19, 19, 19, 19, 19,
2074 19, 19, 19, 19, 19, 19, 19, 19,
2075 19, 19, 19, 19, 19, 19, 19, 19,
2076 19, 19, 19, 19, 19, 19, 19, 19,
2077 19, 19, 19, 19, 19, 19, 19, 19,
2078 19, 19, 19, 19, 19, 19, 19, 19,
2079 19, 19, 19, 19, 19, 19, 19, 19,
2080 19, 19, 19, 19, 19, 19, 19, 19,
2081 19, 19, 19, 19, 19, 19, 19, 19,
2082 19, 19, 19, 19, 19, 19, 19, 19,
2083 19, 19, 19, 19, 19, 19, 19, 19,
2084 19, 19, 19, 19, 19, 19, 0, 0,
2085 0, 0, 0, 0, 0, 0, 0, 0,
2086 0, 0, 0, 0, 0, 0, 0, 0,
2087 0, 0, 0, 0, 0, 0, 0, 0,
2088 0, 0, 0, 0, 0, 0, 0, 0,
2089 0, 0, 0, 0, 0, 0, 0, 0,
2090 0, 0, 0, 0, 0, 0, 0, 0,
2091 0, 0, 0, 0, 0, 0, 0, 0,
2092 0, 0, 0, 0, 0, 0, 0, 0,
2093 0, 0, 0, 0, 0, 0, 0, 0,
2094 0, 0, 0, 0, 0, 0, 0, 0,
2095 0, 0, 0, 0, 0, 0, 0, 0,
2096};
2097
2098static const Q_UINT8 ui_A4[] = {
2099 19, 19, 19, 19, 19, 19, 19, 19,
2100 19, 19, 19, 19, 19, 19, 19, 19,
2101 19, 19, 19, 19, 19, 19, 19, 19,
2102 19, 19, 19, 19, 19, 19, 19, 19,
2103 19, 19, 19, 19, 19, 19, 19, 19,
2104 19, 19, 19, 19, 19, 19, 19, 19,
2105 19, 19, 19, 19, 19, 19, 19, 19,
2106 19, 19, 19, 19, 19, 19, 19, 19,
2107 19, 19, 19, 19, 19, 19, 19, 19,
2108 19, 19, 19, 19, 19, 19, 19, 19,
2109 19, 19, 19, 19, 19, 19, 19, 19,
2110 19, 19, 19, 19, 19, 19, 19, 19,
2111 19, 19, 19, 19, 19, 19, 19, 19,
2112 19, 19, 19, 19, 19, 19, 19, 19,
2113 19, 19, 19, 19, 19, 19, 19, 19,
2114 19, 19, 19, 19, 19, 19, 19, 19,
2115 19, 19, 19, 19, 19, 19, 19, 19,
2116 19, 19, 19, 19, 19, 0, 0, 0,
2117 30, 30, 30, 30, 30, 30, 30, 30,
2118 30, 30, 30, 30, 30, 30, 30, 30,
2119 30, 30, 30, 30, 30, 30, 30, 30,
2120 30, 30, 30, 30, 30, 30, 30, 30,
2121 30, 30, 30, 30, 30, 30, 30, 30,
2122 30, 30, 30, 30, 30, 30, 30, 30,
2123 30, 30, 30, 30, 30, 30, 30, 0,
2124 0, 0, 0, 0, 0, 0, 0, 0,
2125 0, 0, 0, 0, 0, 0, 0, 0,
2126 0, 0, 0, 0, 0, 0, 0, 0,
2127 0, 0, 0, 0, 0, 0, 0, 0,
2128 0, 0, 0, 0, 0, 0, 0, 0,
2129 0, 0, 0, 0, 0, 0, 0, 0,
2130 0, 0, 0, 0, 0, 0, 0, 0,
2131};
2132
2133static const Q_UINT8 ui_D7[] = {
2134 19, 19, 19, 19, 19, 19, 19, 19,
2135 19, 19, 19, 19, 19, 19, 19, 19,
2136 19, 19, 19, 19, 19, 19, 19, 19,
2137 19, 19, 19, 19, 19, 19, 19, 19,
2138 19, 19, 19, 19, 19, 19, 19, 19,
2139 19, 19, 19, 19, 19, 19, 19, 19,
2140 19, 19, 19, 19, 19, 19, 19, 19,
2141 19, 19, 19, 19, 19, 19, 19, 19,
2142 19, 19, 19, 19, 19, 19, 19, 19,
2143 19, 19, 19, 19, 19, 19, 19, 19,
2144 19, 19, 19, 19, 19, 19, 19, 19,
2145 19, 19, 19, 19, 19, 19, 19, 19,
2146 19, 19, 19, 19, 19, 19, 19, 19,
2147 19, 19, 19, 19, 19, 19, 19, 19,
2148 19, 19, 19, 19, 19, 19, 19, 19,
2149 19, 19, 19, 19, 19, 19, 19, 19,
2150 19, 19, 19, 19, 19, 19, 19, 19,
2151 19, 19, 19, 19, 19, 19, 19, 19,
2152 19, 19, 19, 19, 19, 19, 19, 19,
2153 19, 19, 19, 19, 19, 19, 19, 19,
2154 19, 19, 19, 19, 0, 0, 0, 0,
2155 0, 0, 0, 0, 0, 0, 0, 0,
2156 0, 0, 0, 0, 0, 0, 0, 0,
2157 0, 0, 0, 0, 0, 0, 0, 0,
2158 0, 0, 0, 0, 0, 0, 0, 0,
2159 0, 0, 0, 0, 0, 0, 0, 0,
2160 0, 0, 0, 0, 0, 0, 0, 0,
2161 0, 0, 0, 0, 0, 0, 0, 0,
2162 0, 0, 0, 0, 0, 0, 0, 0,
2163 0, 0, 0, 0, 0, 0, 0, 0,
2164 0, 0, 0, 0, 0, 0, 0, 0,
2165 0, 0, 0, 0, 0, 0, 0, 0,
2166};
2167
2168static const Q_UINT8 ui_D8[] = {
2169 12, 12, 12, 12, 12, 12, 12, 12,
2170 12, 12, 12, 12, 12, 12, 12, 12,
2171 12, 12, 12, 12, 12, 12, 12, 12,
2172 12, 12, 12, 12, 12, 12, 12, 12,
2173 12, 12, 12, 12, 12, 12, 12, 12,
2174 12, 12, 12, 12, 12, 12, 12, 12,
2175 12, 12, 12, 12, 12, 12, 12, 12,
2176 12, 12, 12, 12, 12, 12, 12, 12,
2177 12, 12, 12, 12, 12, 12, 12, 12,
2178 12, 12, 12, 12, 12, 12, 12, 12,
2179 12, 12, 12, 12, 12, 12, 12, 12,
2180 12, 12, 12, 12, 12, 12, 12, 12,
2181 12, 12, 12, 12, 12, 12, 12, 12,
2182 12, 12, 12, 12, 12, 12, 12, 12,
2183 12, 12, 12, 12, 12, 12, 12, 12,
2184 12, 12, 12, 12, 12, 12, 12, 12,
2185 12, 12, 12, 12, 12, 12, 12, 12,
2186 12, 12, 12, 12, 12, 12, 12, 12,
2187 12, 12, 12, 12, 12, 12, 12, 12,
2188 12, 12, 12, 12, 12, 12, 12, 12,
2189 12, 12, 12, 12, 12, 12, 12, 12,
2190 12, 12, 12, 12, 12, 12, 12, 12,
2191 12, 12, 12, 12, 12, 12, 12, 12,
2192 12, 12, 12, 12, 12, 12, 12, 12,
2193 12, 12, 12, 12, 12, 12, 12, 12,
2194 12, 12, 12, 12, 12, 12, 12, 12,
2195 12, 12, 12, 12, 12, 12, 12, 12,
2196 12, 12, 12, 12, 12, 12, 12, 12,
2197 12, 12, 12, 12, 12, 12, 12, 12,
2198 12, 12, 12, 12, 12, 12, 12, 12,
2199 12, 12, 12, 12, 12, 12, 12, 12,
2200 12, 12, 12, 12, 12, 12, 12, 12,
2201};
2202
2203static const Q_UINT8 ui_E0[] = {
2204 13, 13, 13, 13, 13, 13, 13, 13,
2205 13, 13, 13, 13, 13, 13, 13, 13,
2206 13, 13, 13, 13, 13, 13, 13, 13,
2207 13, 13, 13, 13, 13, 13, 13, 13,
2208 13, 13, 13, 13, 13, 13, 13, 13,
2209 13, 13, 13, 13, 13, 13, 13, 13,
2210 13, 13, 13, 13, 13, 13, 13, 13,
2211 13, 13, 13, 13, 13, 13, 13, 13,
2212 13, 13, 13, 13, 13, 13, 13, 13,
2213 13, 13, 13, 13, 13, 13, 13, 13,
2214 13, 13, 13, 13, 13, 13, 13, 13,
2215 13, 13, 13, 13, 13, 13, 13, 13,
2216 13, 13, 13, 13, 13, 13, 13, 13,
2217 13, 13, 13, 13, 13, 13, 13, 13,
2218 13, 13, 13, 13, 13, 13, 13, 13,
2219 13, 13, 13, 13, 13, 13, 13, 13,
2220 13, 13, 13, 13, 13, 13, 13, 13,
2221 13, 13, 13, 13, 13, 13, 13, 13,
2222 13, 13, 13, 13, 13, 13, 13, 13,
2223 13, 13, 13, 13, 13, 13, 13, 13,
2224 13, 13, 13, 13, 13, 13, 13, 13,
2225 13, 13, 13, 13, 13, 13, 13, 13,
2226 13, 13, 13, 13, 13, 13, 13, 13,
2227 13, 13, 13, 13, 13, 13, 13, 13,
2228 13, 13, 13, 13, 13, 13, 13, 13,
2229 13, 13, 13, 13, 13, 13, 13, 13,
2230 13, 13, 13, 13, 13, 13, 13, 13,
2231 13, 13, 13, 13, 13, 13, 13, 13,
2232 13, 13, 13, 13, 13, 13, 13, 13,
2233 13, 13, 13, 13, 13, 13, 13, 13,
2234 13, 13, 13, 13, 13, 13, 13, 13,
2235 13, 13, 13, 13, 13, 13, 13, 13,
2236};
2237
2238static const Q_UINT8 ui_FA[] = {
2239 19, 19, 19, 19, 19, 19, 19, 19,
2240 19, 19, 19, 19, 19, 19, 19, 19,
2241 19, 19, 19, 19, 19, 19, 19, 19,
2242 19, 19, 19, 19, 19, 19, 19, 19,
2243 19, 19, 19, 19, 19, 19, 19, 19,
2244 19, 19, 19, 19, 19, 19, 0, 0,
2245 19, 19, 19, 19, 19, 19, 19, 19,
2246 19, 19, 19, 19, 19, 19, 19, 19,
2247 19, 19, 19, 19, 19, 19, 19, 19,
2248 19, 19, 19, 19, 19, 19, 19, 19,
2249 19, 19, 19, 19, 19, 19, 19, 19,
2250 19, 19, 19, 19, 19, 19, 19, 19,
2251 19, 19, 19, 19, 19, 19, 19, 19,
2252 19, 19, 19, 0, 0, 0, 0, 0,
2253 0, 0, 0, 0, 0, 0, 0, 0,
2254 0, 0, 0, 0, 0, 0, 0, 0,
2255 0, 0, 0, 0, 0, 0, 0, 0,
2256 0, 0, 0, 0, 0, 0, 0, 0,
2257 0, 0, 0, 0, 0, 0, 0, 0,
2258 0, 0, 0, 0, 0, 0, 0, 0,
2259 0, 0, 0, 0, 0, 0, 0, 0,
2260 0, 0, 0, 0, 0, 0, 0, 0,
2261 0, 0, 0, 0, 0, 0, 0, 0,
2262 0, 0, 0, 0, 0, 0, 0, 0,
2263 0, 0, 0, 0, 0, 0, 0, 0,
2264 0, 0, 0, 0, 0, 0, 0, 0,
2265 0, 0, 0, 0, 0, 0, 0, 0,
2266 0, 0, 0, 0, 0, 0, 0, 0,
2267 0, 0, 0, 0, 0, 0, 0, 0,
2268 0, 0, 0, 0, 0, 0, 0, 0,
2269 0, 0, 0, 0, 0, 0, 0, 0,
2270 0, 0, 0, 0, 0, 0, 0, 0,
2271};
2272
2273static const Q_UINT8 ui_FB[] = {
2274 16, 16, 16, 16, 16, 16, 16, 0,
2275 0, 0, 0, 0, 0, 0, 0, 0,
2276 0, 0, 0, 16, 16, 16, 16, 16,
2277 0, 0, 0, 0, 0, 19, 1, 19,
2278 19, 19, 19, 19, 19, 19, 19, 19,
2279 19, 27, 19, 19, 19, 19, 19, 19,
2280 19, 19, 19, 19, 19, 19, 19, 0,
2281 19, 19, 19, 19, 19, 0, 19, 0,
2282 19, 19, 0, 19, 19, 0, 19, 19,
2283 19, 19, 19, 19, 19, 19, 19, 19,
2284 19, 19, 19, 19, 19, 19, 19, 19,
2285 19, 19, 19, 19, 19, 19, 19, 19,
2286 19, 19, 19, 19, 19, 19, 19, 19,
2287 19, 19, 19, 19, 19, 19, 19, 19,
2288 19, 19, 19, 19, 19, 19, 19, 19,
2289 19, 19, 19, 19, 19, 19, 19, 19,
2290 19, 19, 19, 19, 19, 19, 19, 19,
2291 19, 19, 19, 19, 19, 19, 19, 19,
2292 19, 19, 19, 19, 19, 19, 19, 19,
2293 19, 19, 19, 19, 19, 19, 19, 19,
2294 19, 19, 19, 19, 19, 19, 19, 19,
2295 19, 19, 19, 19, 19, 19, 19, 19,
2296 19, 19, 0, 0, 0, 0, 0, 0,
2297 0, 0, 0, 0, 0, 0, 0, 0,
2298 0, 0, 0, 0, 0, 0, 0, 0,
2299 0, 0, 0, 0, 0, 0, 0, 0,
2300 0, 0, 0, 19, 19, 19, 19, 19,
2301 19, 19, 19, 19, 19, 19, 19, 19,
2302 19, 19, 19, 19, 19, 19, 19, 19,
2303 19, 19, 19, 19, 19, 19, 19, 19,
2304 19, 19, 19, 19, 19, 19, 19, 19,
2305 19, 19, 19, 19, 19, 19, 19, 19,
2306};
2307
2308static const Q_UINT8 ui_FD[] = {
2309 19, 19, 19, 19, 19, 19, 19, 19,
2310 19, 19, 19, 19, 19, 19, 19, 19,
2311 19, 19, 19, 19, 19, 19, 19, 19,
2312 19, 19, 19, 19, 19, 19, 19, 19,
2313 19, 19, 19, 19, 19, 19, 19, 19,
2314 19, 19, 19, 19, 19, 19, 19, 19,
2315 19, 19, 19, 19, 19, 19, 19, 19,
2316 19, 19, 19, 19, 19, 19, 22, 23,
2317 0, 0, 0, 0, 0, 0, 0, 0,
2318 0, 0, 0, 0, 0, 0, 0, 0,
2319 19, 19, 19, 19, 19, 19, 19, 19,
2320 19, 19, 19, 19, 19, 19, 19, 19,
2321 19, 19, 19, 19, 19, 19, 19, 19,
2322 19, 19, 19, 19, 19, 19, 19, 19,
2323 19, 19, 19, 19, 19, 19, 19, 19,
2324 19, 19, 19, 19, 19, 19, 19, 19,
2325 19, 19, 19, 19, 19, 19, 19, 19,
2326 19, 19, 19, 19, 19, 19, 19, 19,
2327 0, 0, 19, 19, 19, 19, 19, 19,
2328 19, 19, 19, 19, 19, 19, 19, 19,
2329 19, 19, 19, 19, 19, 19, 19, 19,
2330 19, 19, 19, 19, 19, 19, 19, 19,
2331 19, 19, 19, 19, 19, 19, 19, 19,
2332 19, 19, 19, 19, 19, 19, 19, 19,
2333 19, 19, 19, 19, 19, 19, 19, 19,
2334 0, 0, 0, 0, 0, 0, 0, 0,
2335 0, 0, 0, 0, 0, 0, 0, 0,
2336 0, 0, 0, 0, 0, 0, 0, 0,
2337 0, 0, 0, 0, 0, 0, 0, 0,
2338 0, 0, 0, 0, 0, 0, 0, 0,
2339 19, 19, 19, 19, 19, 19, 19, 19,
2340 19, 19, 19, 19, 28, 0, 0, 0,
2341};
2342
2343static const Q_UINT8 ui_FE[] = {
2344 1, 1, 1, 1, 1, 1, 1, 1,
2345 1, 1, 1, 1, 1, 1, 1, 1,
2346 0, 0, 0, 0, 0, 0, 0, 0,
2347 0, 0, 0, 0, 0, 0, 0, 0,
2348 1, 1, 1, 1, 0, 0, 0, 0,
2349 0, 0, 0, 0, 0, 0, 0, 0,
2350 26, 21, 21, 20, 20, 22, 23, 22,
2351 23, 22, 23, 22, 23, 22, 23, 22,
2352 23, 22, 23, 22, 23, 26, 26, 0,
2353 0, 26, 26, 26, 26, 20, 20, 20,
2354 26, 26, 26, 0, 26, 26, 26, 26,
2355 21, 22, 23, 22, 23, 22, 23, 26,
2356 26, 26, 27, 21, 27, 27, 27, 0,
2357 26, 28, 26, 26, 0, 0, 0, 0,
2358 19, 19, 19, 19, 19, 0, 19, 19,
2359 19, 19, 19, 19, 19, 19, 19, 19,
2360 19, 19, 19, 19, 19, 19, 19, 19,
2361 19, 19, 19, 19, 19, 19, 19, 19,
2362 19, 19, 19, 19, 19, 19, 19, 19,
2363 19, 19, 19, 19, 19, 19, 19, 19,
2364 19, 19, 19, 19, 19, 19, 19, 19,
2365 19, 19, 19, 19, 19, 19, 19, 19,
2366 19, 19, 19, 19, 19, 19, 19, 19,
2367 19, 19, 19, 19, 19, 19, 19, 19,
2368 19, 19, 19, 19, 19, 19, 19, 19,
2369 19, 19, 19, 19, 19, 19, 19, 19,
2370 19, 19, 19, 19, 19, 19, 19, 19,
2371 19, 19, 19, 19, 19, 19, 19, 19,
2372 19, 19, 19, 19, 19, 19, 19, 19,
2373 19, 19, 19, 19, 19, 19, 19, 19,
2374 19, 19, 19, 19, 19, 19, 19, 19,
2375 19, 19, 19, 19, 19, 0, 0, 11,
2376};
2377
2378static const Q_UINT8 ui_FF[] = {
2379 0, 26, 26, 26, 28, 26, 26, 26,
2380 22, 23, 26, 27, 26, 21, 26, 26,
2381 4, 4, 4, 4, 4, 4, 4, 4,
2382 4, 4, 26, 26, 27, 27, 27, 26,
2383 26, 15, 15, 15, 15, 15, 15, 15,
2384 15, 15, 15, 15, 15, 15, 15, 15,
2385 15, 15, 15, 15, 15, 15, 15, 15,
2386 15, 15, 15, 22, 26, 23, 29, 20,
2387 29, 16, 16, 16, 16, 16, 16, 16,
2388 16, 16, 16, 16, 16, 16, 16, 16,
2389 16, 16, 16, 16, 16, 16, 16, 16,
2390 16, 16, 16, 22, 27, 23, 27, 22,
2391 23, 26, 22, 23, 26, 20, 19, 19,
2392 19, 19, 19, 19, 19, 19, 19, 19,
2393 18, 19, 19, 19, 19, 19, 19, 19,
2394 19, 19, 19, 19, 19, 19, 19, 19,
2395 19, 19, 19, 19, 19, 19, 19, 19,
2396 19, 19, 19, 19, 19, 19, 19, 19,
2397 19, 19, 19, 19, 19, 19, 19, 19,
2398 19, 19, 19, 19, 19, 19, 18, 18,
2399 19, 19, 19, 19, 19, 19, 19, 19,
2400 19, 19, 19, 19, 19, 19, 19, 19,
2401 19, 19, 19, 19, 19, 19, 19, 19,
2402 19, 19, 19, 19, 19, 19, 19, 0,
2403 0, 0, 19, 19, 19, 19, 19, 19,
2404 0, 0, 19, 19, 19, 19, 19, 19,
2405 0, 0, 19, 19, 19, 19, 19, 19,
2406 0, 0, 19, 19, 19, 0, 0, 0,
2407 28, 28, 27, 29, 30, 28, 28, 0,
2408 30, 27, 27, 27, 27, 30, 30, 0,
2409 0, 0, 0, 0, 0, 0, 0, 0,
2410 0, 11, 11, 11, 30, 30, 0, 0,
2411};
2412
2413static const Q_UINT8 * const unicode_info[256] = {
2414 ui_00, ui_01, ui_02, ui_03, ui_04, ui_05, ui_06, ui_07,
2415 ui_08, ui_09, ui_0A, ui_0B, ui_0C, ui_0D, ui_0E, ui_0F,
2416 ui_10, ui_11, ui_12, ui_13, ui_14, ui_15, ui_16, ui_17,
2417 ui_18, ui_08, ui_08, ui_08, ui_08, ui_08, ui_1E, ui_1F,
2418 ui_20, ui_21, ui_22, ui_23, ui_24, ui_25, ui_26, ui_27,
2419 ui_28, ui_29, ui_22, ui_08, ui_08, ui_08, ui_2E, ui_2F,
2420 ui_30, ui_31, ui_32, ui_33, ui_15, ui_15, ui_15, ui_15,
2421 ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15,
2422 ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15,
2423 ui_15, ui_15, ui_15, ui_15, ui_15, ui_4D, ui_15, ui_15,
2424 ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15,
2425 ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15,
2426 ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15,
2427 ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15,
2428 ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15,
2429 ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15,
2430 ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15,
2431 ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15,
2432 ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15,
2433 ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_9F,
2434 ui_15, ui_15, ui_15, ui_15, ui_A4, ui_08, ui_08, ui_08,
2435 ui_08, ui_08, ui_08, ui_08, ui_15, ui_15, ui_15, ui_15,
2436 ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15,
2437 ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15,
2438 ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15,
2439 ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15,
2440 ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_15, ui_D7,
2441 ui_D8, ui_D8, ui_D8, ui_D8, ui_D8, ui_D8, ui_D8, ui_D8,
2442 ui_E0, ui_E0, ui_E0, ui_E0, ui_E0, ui_E0, ui_E0, ui_E0,
2443 ui_E0, ui_E0, ui_E0, ui_E0, ui_E0, ui_E0, ui_E0, ui_E0,
2444 ui_E0, ui_E0, ui_E0, ui_E0, ui_E0, ui_E0, ui_E0, ui_E0,
2445 ui_E0, ui_15, ui_FA, ui_FB, ui_15, ui_FD, ui_FE, ui_FF,
2446};
2447// 14848 bytes
2448
2449static const Q_UINT16 decomposition_map[] = {
2450 0,
2451 3, 0x00A0, 0x0020, 0,
2452 16, 0x00A8, 0x0020, 0x0308, 0,
2453 9, 0x00AA, 0x0061, 0,
2454 16, 0x00AF, 0x0020, 0x0304, 0,
2455 9, 0x00B2, 0x0032, 0,
2456 9, 0x00B3, 0x0033, 0,
2457 16, 0x00B4, 0x0020, 0x0301, 0,
2458 16, 0x00B5, 0x03BC, 0,
2459 16, 0x00B8, 0x0020, 0x0327, 0,
2460 9, 0x00B9, 0x0031, 0,
2461 9, 0x00BA, 0x006F, 0,
2462 17, 0x00BC, 0x0031, 0x2044, 0x0034, 0,
2463 17, 0x00BD, 0x0031, 0x2044, 0x0032, 0,
2464 17, 0x00BE, 0x0033, 0x2044, 0x0034, 0,
2465 1, 0x00C0, 0x0041, 0x0300, 0,
2466 1, 0x00C1, 0x0041, 0x0301, 0,
2467 1, 0x00C2, 0x0041, 0x0302, 0,
2468 1, 0x00C3, 0x0041, 0x0303, 0,
2469 1, 0x00C4, 0x0041, 0x0308, 0,
2470 1, 0x00C5, 0x0041, 0x030A, 0,
2471 1, 0x00C7, 0x0043, 0x0327, 0,
2472 1, 0x00C8, 0x0045, 0x0300, 0,
2473 1, 0x00C9, 0x0045, 0x0301, 0,
2474 1, 0x00CA, 0x0045, 0x0302, 0,
2475 1, 0x00CB, 0x0045, 0x0308, 0,
2476 1, 0x00CC, 0x0049, 0x0300, 0,
2477 1, 0x00CD, 0x0049, 0x0301, 0,
2478 1, 0x00CE, 0x0049, 0x0302, 0,
2479 1, 0x00CF, 0x0049, 0x0308, 0,
2480 1, 0x00D1, 0x004E, 0x0303, 0,
2481 1, 0x00D2, 0x004F, 0x0300, 0,
2482 1, 0x00D3, 0x004F, 0x0301, 0,
2483 1, 0x00D4, 0x004F, 0x0302, 0,
2484 1, 0x00D5, 0x004F, 0x0303, 0,
2485 1, 0x00D6, 0x004F, 0x0308, 0,
2486 1, 0x00D9, 0x0055, 0x0300, 0,
2487 1, 0x00DA, 0x0055, 0x0301, 0,
2488 1, 0x00DB, 0x0055, 0x0302, 0,
2489 1, 0x00DC, 0x0055, 0x0308, 0,
2490 1, 0x00DD, 0x0059, 0x0301, 0,
2491 1, 0x00E0, 0x0061, 0x0300, 0,
2492 1, 0x00E1, 0x0061, 0x0301, 0,
2493 1, 0x00E2, 0x0061, 0x0302, 0,
2494 1, 0x00E3, 0x0061, 0x0303, 0,
2495 1, 0x00E4, 0x0061, 0x0308, 0,
2496 1, 0x00E5, 0x0061, 0x030A, 0,
2497 1, 0x00E7, 0x0063, 0x0327, 0,
2498 1, 0x00E8, 0x0065, 0x0300, 0,
2499 1, 0x00E9, 0x0065, 0x0301, 0,
2500 1, 0x00EA, 0x0065, 0x0302, 0,
2501 1, 0x00EB, 0x0065, 0x0308, 0,
2502 1, 0x00EC, 0x0069, 0x0300, 0,
2503 1, 0x00ED, 0x0069, 0x0301, 0,
2504 1, 0x00EE, 0x0069, 0x0302, 0,
2505 1, 0x00EF, 0x0069, 0x0308, 0,
2506 1, 0x00F1, 0x006E, 0x0303, 0,
2507 1, 0x00F2, 0x006F, 0x0300, 0,
2508 1, 0x00F3, 0x006F, 0x0301, 0,
2509 1, 0x00F4, 0x006F, 0x0302, 0,
2510 1, 0x00F5, 0x006F, 0x0303, 0,
2511 1, 0x00F6, 0x006F, 0x0308, 0,
2512 1, 0x00F9, 0x0075, 0x0300, 0,
2513 1, 0x00FA, 0x0075, 0x0301, 0,
2514 1, 0x00FB, 0x0075, 0x0302, 0,
2515 1, 0x00FC, 0x0075, 0x0308, 0,
2516 1, 0x00FD, 0x0079, 0x0301, 0,
2517 1, 0x00FF, 0x0079, 0x0308, 0,
2518 1, 0x0100, 0x0041, 0x0304, 0,
2519 1, 0x0101, 0x0061, 0x0304, 0,
2520 1, 0x0102, 0x0041, 0x0306, 0,
2521 1, 0x0103, 0x0061, 0x0306, 0,
2522 1, 0x0104, 0x0041, 0x0328, 0,
2523 1, 0x0105, 0x0061, 0x0328, 0,
2524 1, 0x0106, 0x0043, 0x0301, 0,
2525 1, 0x0107, 0x0063, 0x0301, 0,
2526 1, 0x0108, 0x0043, 0x0302, 0,
2527 1, 0x0109, 0x0063, 0x0302, 0,
2528 1, 0x010A, 0x0043, 0x0307, 0,
2529 1, 0x010B, 0x0063, 0x0307, 0,
2530 1, 0x010C, 0x0043, 0x030C, 0,
2531 1, 0x010D, 0x0063, 0x030C, 0,
2532 1, 0x010E, 0x0044, 0x030C, 0,
2533 1, 0x010F, 0x0064, 0x030C, 0,
2534 1, 0x0112, 0x0045, 0x0304, 0,
2535 1, 0x0113, 0x0065, 0x0304, 0,
2536 1, 0x0114, 0x0045, 0x0306, 0,
2537 1, 0x0115, 0x0065, 0x0306, 0,
2538 1, 0x0116, 0x0045, 0x0307, 0,
2539 1, 0x0117, 0x0065, 0x0307, 0,
2540 1, 0x0118, 0x0045, 0x0328, 0,
2541 1, 0x0119, 0x0065, 0x0328, 0,
2542 1, 0x011A, 0x0045, 0x030C, 0,
2543 1, 0x011B, 0x0065, 0x030C, 0,
2544 1, 0x011C, 0x0047, 0x0302, 0,
2545 1, 0x011D, 0x0067, 0x0302, 0,
2546 1, 0x011E, 0x0047, 0x0306, 0,
2547 1, 0x011F, 0x0067, 0x0306, 0,
2548 1, 0x0120, 0x0047, 0x0307, 0,
2549 1, 0x0121, 0x0067, 0x0307, 0,
2550 1, 0x0122, 0x0047, 0x0327, 0,
2551 1, 0x0123, 0x0067, 0x0327, 0,
2552 1, 0x0124, 0x0048, 0x0302, 0,
2553 1, 0x0125, 0x0068, 0x0302, 0,
2554 1, 0x0128, 0x0049, 0x0303, 0,
2555 1, 0x0129, 0x0069, 0x0303, 0,
2556 1, 0x012A, 0x0049, 0x0304, 0,
2557 1, 0x012B, 0x0069, 0x0304, 0,
2558 1, 0x012C, 0x0049, 0x0306, 0,
2559 1, 0x012D, 0x0069, 0x0306, 0,
2560 1, 0x012E, 0x0049, 0x0328, 0,
2561 1, 0x012F, 0x0069, 0x0328, 0,
2562 1, 0x0130, 0x0049, 0x0307, 0,
2563 16, 0x0132, 0x0049, 0x004A, 0,
2564 16, 0x0133, 0x0069, 0x006A, 0,
2565 1, 0x0134, 0x004A, 0x0302, 0,
2566 1, 0x0135, 0x006A, 0x0302, 0,
2567 1, 0x0136, 0x004B, 0x0327, 0,
2568 1, 0x0137, 0x006B, 0x0327, 0,
2569 1, 0x0139, 0x004C, 0x0301, 0,
2570 1, 0x013A, 0x006C, 0x0301, 0,
2571 1, 0x013B, 0x004C, 0x0327, 0,
2572 1, 0x013C, 0x006C, 0x0327, 0,
2573 1, 0x013D, 0x004C, 0x030C, 0,
2574 1, 0x013E, 0x006C, 0x030C, 0,
2575 16, 0x013F, 0x004C, 0x00B7, 0,
2576 16, 0x0140, 0x006C, 0x00B7, 0,
2577 1, 0x0143, 0x004E, 0x0301, 0,
2578 1, 0x0144, 0x006E, 0x0301, 0,
2579 1, 0x0145, 0x004E, 0x0327, 0,
2580 1, 0x0146, 0x006E, 0x0327, 0,
2581 1, 0x0147, 0x004E, 0x030C, 0,
2582 1, 0x0148, 0x006E, 0x030C, 0,
2583 16, 0x0149, 0x02BC, 0x006E, 0,
2584 1, 0x014C, 0x004F, 0x0304, 0,
2585 1, 0x014D, 0x006F, 0x0304, 0,
2586 1, 0x014E, 0x004F, 0x0306, 0,
2587 1, 0x014F, 0x006F, 0x0306, 0,
2588 1, 0x0150, 0x004F, 0x030B, 0,
2589 1, 0x0151, 0x006F, 0x030B, 0,
2590 1, 0x0154, 0x0052, 0x0301, 0,
2591 1, 0x0155, 0x0072, 0x0301, 0,
2592 1, 0x0156, 0x0052, 0x0327, 0,
2593 1, 0x0157, 0x0072, 0x0327, 0,
2594 1, 0x0158, 0x0052, 0x030C, 0,
2595 1, 0x0159, 0x0072, 0x030C, 0,
2596 1, 0x015A, 0x0053, 0x0301, 0,
2597 1, 0x015B, 0x0073, 0x0301, 0,
2598 1, 0x015C, 0x0053, 0x0302, 0,
2599 1, 0x015D, 0x0073, 0x0302, 0,
2600 1, 0x015E, 0x0053, 0x0327, 0,
2601 1, 0x015F, 0x0073, 0x0327, 0,
2602 1, 0x0160, 0x0053, 0x030C, 0,
2603 1, 0x0161, 0x0073, 0x030C, 0,
2604 1, 0x0162, 0x0054, 0x0327, 0,
2605 1, 0x0163, 0x0074, 0x0327, 0,
2606 1, 0x0164, 0x0054, 0x030C, 0,
2607 1, 0x0165, 0x0074, 0x030C, 0,
2608 1, 0x0168, 0x0055, 0x0303, 0,
2609 1, 0x0169, 0x0075, 0x0303, 0,
2610 1, 0x016A, 0x0055, 0x0304, 0,
2611 1, 0x016B, 0x0075, 0x0304, 0,
2612 1, 0x016C, 0x0055, 0x0306, 0,
2613 1, 0x016D, 0x0075, 0x0306, 0,
2614 1, 0x016E, 0x0055, 0x030A, 0,
2615 1, 0x016F, 0x0075, 0x030A, 0,
2616 1, 0x0170, 0x0055, 0x030B, 0,
2617 1, 0x0171, 0x0075, 0x030B, 0,
2618 1, 0x0172, 0x0055, 0x0328, 0,
2619 1, 0x0173, 0x0075, 0x0328, 0,
2620 1, 0x0174, 0x0057, 0x0302, 0,
2621 1, 0x0175, 0x0077, 0x0302, 0,
2622 1, 0x0176, 0x0059, 0x0302, 0,
2623 1, 0x0177, 0x0079, 0x0302, 0,
2624 1, 0x0178, 0x0059, 0x0308, 0,
2625 1, 0x0179, 0x005A, 0x0301, 0,
2626 1, 0x017A, 0x007A, 0x0301, 0,
2627 1, 0x017B, 0x005A, 0x0307, 0,
2628 1, 0x017C, 0x007A, 0x0307, 0,
2629 1, 0x017D, 0x005A, 0x030C, 0,
2630 1, 0x017E, 0x007A, 0x030C, 0,
2631 16, 0x017F, 0x0073, 0,
2632 1, 0x01A0, 0x004F, 0x031B, 0,
2633 1, 0x01A1, 0x006F, 0x031B, 0,
2634 1, 0x01AF, 0x0055, 0x031B, 0,
2635 1, 0x01B0, 0x0075, 0x031B, 0,
2636 16, 0x01C4, 0x0044, 0x017D, 0,
2637 16, 0x01C5, 0x0044, 0x017E, 0,
2638 16, 0x01C6, 0x0064, 0x017E, 0,
2639 16, 0x01C7, 0x004C, 0x004A, 0,
2640 16, 0x01C8, 0x004C, 0x006A, 0,
2641 16, 0x01C9, 0x006C, 0x006A, 0,
2642 16, 0x01CA, 0x004E, 0x004A, 0,
2643 16, 0x01CB, 0x004E, 0x006A, 0,
2644 16, 0x01CC, 0x006E, 0x006A, 0,
2645 1, 0x01CD, 0x0041, 0x030C, 0,
2646 1, 0x01CE, 0x0061, 0x030C, 0,
2647 1, 0x01CF, 0x0049, 0x030C, 0,
2648 1, 0x01D0, 0x0069, 0x030C, 0,
2649 1, 0x01D1, 0x004F, 0x030C, 0,
2650 1, 0x01D2, 0x006F, 0x030C, 0,
2651 1, 0x01D3, 0x0055, 0x030C, 0,
2652 1, 0x01D4, 0x0075, 0x030C, 0,
2653 1, 0x01D5, 0x00DC, 0x0304, 0,
2654 1, 0x01D6, 0x00FC, 0x0304, 0,
2655 1, 0x01D7, 0x00DC, 0x0301, 0,
2656 1, 0x01D8, 0x00FC, 0x0301, 0,
2657 1, 0x01D9, 0x00DC, 0x030C, 0,
2658 1, 0x01DA, 0x00FC, 0x030C, 0,
2659 1, 0x01DB, 0x00DC, 0x0300, 0,
2660 1, 0x01DC, 0x00FC, 0x0300, 0,
2661 1, 0x01DE, 0x00C4, 0x0304, 0,
2662 1, 0x01DF, 0x00E4, 0x0304, 0,
2663 1, 0x01E0, 0x0226, 0x0304, 0,
2664 1, 0x01E1, 0x0227, 0x0304, 0,
2665 1, 0x01E2, 0x00C6, 0x0304, 0,
2666 1, 0x01E3, 0x00E6, 0x0304, 0,
2667 1, 0x01E6, 0x0047, 0x030C, 0,
2668 1, 0x01E7, 0x0067, 0x030C, 0,
2669 1, 0x01E8, 0x004B, 0x030C, 0,
2670 1, 0x01E9, 0x006B, 0x030C, 0,
2671 1, 0x01EA, 0x004F, 0x0328, 0,
2672 1, 0x01EB, 0x006F, 0x0328, 0,
2673 1, 0x01EC, 0x01EA, 0x0304, 0,
2674 1, 0x01ED, 0x01EB, 0x0304, 0,
2675 1, 0x01EE, 0x01B7, 0x030C, 0,
2676 1, 0x01EF, 0x0292, 0x030C, 0,
2677 1, 0x01F0, 0x006A, 0x030C, 0,
2678 16, 0x01F1, 0x0044, 0x005A, 0,
2679 16, 0x01F2, 0x0044, 0x007A, 0,
2680 16, 0x01F3, 0x0064, 0x007A, 0,
2681 1, 0x01F4, 0x0047, 0x0301, 0,
2682 1, 0x01F5, 0x0067, 0x0301, 0,
2683 1, 0x01F8, 0x004E, 0x0300, 0,
2684 1, 0x01F9, 0x006E, 0x0300, 0,
2685 1, 0x01FA, 0x00C5, 0x0301, 0,
2686 1, 0x01FB, 0x00E5, 0x0301, 0,
2687 1, 0x01FC, 0x00C6, 0x0301, 0,
2688 1, 0x01FD, 0x00E6, 0x0301, 0,
2689 1, 0x01FE, 0x00D8, 0x0301, 0,
2690 1, 0x01FF, 0x00F8, 0x0301, 0,
2691 1, 0x0200, 0x0041, 0x030F, 0,
2692 1, 0x0201, 0x0061, 0x030F, 0,
2693 1, 0x0202, 0x0041, 0x0311, 0,
2694 1, 0x0203, 0x0061, 0x0311, 0,
2695 1, 0x0204, 0x0045, 0x030F, 0,
2696 1, 0x0205, 0x0065, 0x030F, 0,
2697 1, 0x0206, 0x0045, 0x0311, 0,
2698 1, 0x0207, 0x0065, 0x0311, 0,
2699 1, 0x0208, 0x0049, 0x030F, 0,
2700 1, 0x0209, 0x0069, 0x030F, 0,
2701 1, 0x020A, 0x0049, 0x0311, 0,
2702 1, 0x020B, 0x0069, 0x0311, 0,
2703 1, 0x020C, 0x004F, 0x030F, 0,
2704 1, 0x020D, 0x006F, 0x030F, 0,
2705 1, 0x020E, 0x004F, 0x0311, 0,
2706 1, 0x020F, 0x006F, 0x0311, 0,
2707 1, 0x0210, 0x0052, 0x030F, 0,
2708 1, 0x0211, 0x0072, 0x030F, 0,
2709 1, 0x0212, 0x0052, 0x0311, 0,
2710 1, 0x0213, 0x0072, 0x0311, 0,
2711 1, 0x0214, 0x0055, 0x030F, 0,
2712 1, 0x0215, 0x0075, 0x030F, 0,
2713 1, 0x0216, 0x0055, 0x0311, 0,
2714 1, 0x0217, 0x0075, 0x0311, 0,
2715 1, 0x0218, 0x0053, 0x0326, 0,
2716 1, 0x0219, 0x0073, 0x0326, 0,
2717 1, 0x021A, 0x0054, 0x0326, 0,
2718 1, 0x021B, 0x0074, 0x0326, 0,
2719 1, 0x021E, 0x0048, 0x030C, 0,
2720 1, 0x021F, 0x0068, 0x030C, 0,
2721 1, 0x0226, 0x0041, 0x0307, 0,
2722 1, 0x0227, 0x0061, 0x0307, 0,
2723 1, 0x0228, 0x0045, 0x0327, 0,
2724 1, 0x0229, 0x0065, 0x0327, 0,
2725 1, 0x022A, 0x00D6, 0x0304, 0,
2726 1, 0x022B, 0x00F6, 0x0304, 0,
2727 1, 0x022C, 0x00D5, 0x0304, 0,
2728 1, 0x022D, 0x00F5, 0x0304, 0,
2729 1, 0x022E, 0x004F, 0x0307, 0,
2730 1, 0x022F, 0x006F, 0x0307, 0,
2731 1, 0x0230, 0x022E, 0x0304, 0,
2732 1, 0x0231, 0x022F, 0x0304, 0,
2733 1, 0x0232, 0x0059, 0x0304, 0,
2734 1, 0x0233, 0x0079, 0x0304, 0,
2735 9, 0x02B0, 0x0068, 0,
2736 9, 0x02B1, 0x0266, 0,
2737 9, 0x02B2, 0x006A, 0,
2738 9, 0x02B3, 0x0072, 0,
2739 9, 0x02B4, 0x0279, 0,
2740 9, 0x02B5, 0x027B, 0,
2741 9, 0x02B6, 0x0281, 0,
2742 9, 0x02B7, 0x0077, 0,
2743 9, 0x02B8, 0x0079, 0,
2744 16, 0x02D8, 0x0020, 0x0306, 0,
2745 16, 0x02D9, 0x0020, 0x0307, 0,
2746 16, 0x02DA, 0x0020, 0x030A, 0,
2747 16, 0x02DB, 0x0020, 0x0328, 0,
2748 16, 0x02DC, 0x0020, 0x0303, 0,
2749 16, 0x02DD, 0x0020, 0x030B, 0,
2750 9, 0x02E0, 0x0263, 0,
2751 9, 0x02E1, 0x006C, 0,
2752 9, 0x02E2, 0x0073, 0,
2753 9, 0x02E3, 0x0078, 0,
2754 9, 0x02E4, 0x0295, 0,
2755 1, 0x0340, 0x0300, 0,
2756 1, 0x0341, 0x0301, 0,
2757 1, 0x0343, 0x0313, 0,
2758 1, 0x0344, 0x0308, 0x0301, 0,
2759 1, 0x0374, 0x02B9, 0,
2760 16, 0x037A, 0x0020, 0x0345, 0,
2761 1, 0x037E, 0x003B, 0,
2762 16, 0x0384, 0x0020, 0x0301, 0,
2763 1, 0x0385, 0x00A8, 0x0301, 0,
2764 1, 0x0386, 0x0391, 0x0301, 0,
2765 1, 0x0387, 0x00B7, 0,
2766 1, 0x0388, 0x0395, 0x0301, 0,
2767 1, 0x0389, 0x0397, 0x0301, 0,
2768 1, 0x038A, 0x0399, 0x0301, 0,
2769 1, 0x038C, 0x039F, 0x0301, 0,
2770 1, 0x038E, 0x03A5, 0x0301, 0,
2771 1, 0x038F, 0x03A9, 0x0301, 0,
2772 1, 0x0390, 0x03CA, 0x0301, 0,
2773 1, 0x03AA, 0x0399, 0x0308, 0,
2774 1, 0x03AB, 0x03A5, 0x0308, 0,
2775 1, 0x03AC, 0x03B1, 0x0301, 0,
2776 1, 0x03AD, 0x03B5, 0x0301, 0,
2777 1, 0x03AE, 0x03B7, 0x0301, 0,
2778 1, 0x03AF, 0x03B9, 0x0301, 0,
2779 1, 0x03B0, 0x03CB, 0x0301, 0,
2780 1, 0x03CA, 0x03B9, 0x0308, 0,
2781 1, 0x03CB, 0x03C5, 0x0308, 0,
2782 1, 0x03CC, 0x03BF, 0x0301, 0,
2783 1, 0x03CD, 0x03C5, 0x0301, 0,
2784 1, 0x03CE, 0x03C9, 0x0301, 0,
2785 16, 0x03D0, 0x03B2, 0,
2786 16, 0x03D1, 0x03B8, 0,
2787 16, 0x03D2, 0x03A5, 0,
2788 1, 0x03D3, 0x03D2, 0x0301, 0,
2789 1, 0x03D4, 0x03D2, 0x0308, 0,
2790 16, 0x03D5, 0x03C6, 0,
2791 16, 0x03D6, 0x03C0, 0,
2792 16, 0x03F0, 0x03BA, 0,
2793 16, 0x03F1, 0x03C1, 0,
2794 16, 0x03F2, 0x03C2, 0,
2795 16, 0x03F4, 0x0398, 0,
2796 16, 0x03F5, 0x03B5, 0,
2797 1, 0x0400, 0x0415, 0x0300, 0,
2798 1, 0x0401, 0x0415, 0x0308, 0,
2799 1, 0x0403, 0x0413, 0x0301, 0,
2800 1, 0x0407, 0x0406, 0x0308, 0,
2801 1, 0x040C, 0x041A, 0x0301, 0,
2802 1, 0x040D, 0x0418, 0x0300, 0,
2803 1, 0x040E, 0x0423, 0x0306, 0,
2804 1, 0x0419, 0x0418, 0x0306, 0,
2805 1, 0x0439, 0x0438, 0x0306, 0,
2806 1, 0x0450, 0x0435, 0x0300, 0,
2807 1, 0x0451, 0x0435, 0x0308, 0,
2808 1, 0x0453, 0x0433, 0x0301, 0,
2809 1, 0x0457, 0x0456, 0x0308, 0,
2810 1, 0x045C, 0x043A, 0x0301, 0,
2811 1, 0x045D, 0x0438, 0x0300, 0,
2812 1, 0x045E, 0x0443, 0x0306, 0,
2813 1, 0x0476, 0x0474, 0x030F, 0,
2814 1, 0x0477, 0x0475, 0x030F, 0,
2815 1, 0x04C1, 0x0416, 0x0306, 0,
2816 1, 0x04C2, 0x0436, 0x0306, 0,
2817 1, 0x04D0, 0x0410, 0x0306, 0,
2818 1, 0x04D1, 0x0430, 0x0306, 0,
2819 1, 0x04D2, 0x0410, 0x0308, 0,
2820 1, 0x04D3, 0x0430, 0x0308, 0,
2821 1, 0x04D6, 0x0415, 0x0306, 0,
2822 1, 0x04D7, 0x0435, 0x0306, 0,
2823 1, 0x04DA, 0x04D8, 0x0308, 0,
2824 1, 0x04DB, 0x04D9, 0x0308, 0,
2825 1, 0x04DC, 0x0416, 0x0308, 0,
2826 1, 0x04DD, 0x0436, 0x0308, 0,
2827 1, 0x04DE, 0x0417, 0x0308, 0,
2828 1, 0x04DF, 0x0437, 0x0308, 0,
2829 1, 0x04E2, 0x0418, 0x0304, 0,
2830 1, 0x04E3, 0x0438, 0x0304, 0,
2831 1, 0x04E4, 0x0418, 0x0308, 0,
2832 1, 0x04E5, 0x0438, 0x0308, 0,
2833 1, 0x04E6, 0x041E, 0x0308, 0,
2834 1, 0x04E7, 0x043E, 0x0308, 0,
2835 1, 0x04EA, 0x04E8, 0x0308, 0,
2836 1, 0x04EB, 0x04E9, 0x0308, 0,
2837 1, 0x04EC, 0x042D, 0x0308, 0,
2838 1, 0x04ED, 0x044D, 0x0308, 0,
2839 1, 0x04EE, 0x0423, 0x0304, 0,
2840 1, 0x04EF, 0x0443, 0x0304, 0,
2841 1, 0x04F0, 0x0423, 0x0308, 0,
2842 1, 0x04F1, 0x0443, 0x0308, 0,
2843 1, 0x04F2, 0x0423, 0x030B, 0,
2844 1, 0x04F3, 0x0443, 0x030B, 0,
2845 1, 0x04F4, 0x0427, 0x0308, 0,
2846 1, 0x04F5, 0x0447, 0x0308, 0,
2847 1, 0x04F8, 0x042B, 0x0308, 0,
2848 1, 0x04F9, 0x044B, 0x0308, 0,
2849 16, 0x0587, 0x0565, 0x0582, 0,
2850 1, 0x0622, 0x0627, 0x0653, 0,
2851 1, 0x0623, 0x0627, 0x0654, 0,
2852 1, 0x0624, 0x0648, 0x0654, 0,
2853 1, 0x0625, 0x0627, 0x0655, 0,
2854 1, 0x0626, 0x064A, 0x0654, 0,
2855 16, 0x0675, 0x0627, 0x0674, 0,
2856 16, 0x0676, 0x0648, 0x0674, 0,
2857 16, 0x0677, 0x06C7, 0x0674, 0,
2858 16, 0x0678, 0x064A, 0x0674, 0,
2859 1, 0x06C0, 0x06D5, 0x0654, 0,
2860 1, 0x06C2, 0x06C1, 0x0654, 0,
2861 1, 0x06D3, 0x06D2, 0x0654, 0,
2862 1, 0x0929, 0x0928, 0x093C, 0,
2863 1, 0x0931, 0x0930, 0x093C, 0,
2864 1, 0x0934, 0x0933, 0x093C, 0,
2865 1, 0x0958, 0x0915, 0x093C, 0,
2866 1, 0x0959, 0x0916, 0x093C, 0,
2867 1, 0x095A, 0x0917, 0x093C, 0,
2868 1, 0x095B, 0x091C, 0x093C, 0,
2869 1, 0x095C, 0x0921, 0x093C, 0,
2870 1, 0x095D, 0x0922, 0x093C, 0,
2871 1, 0x095E, 0x092B, 0x093C, 0,
2872 1, 0x095F, 0x092F, 0x093C, 0,
2873 1, 0x09CB, 0x09C7, 0x09BE, 0,
2874 1, 0x09CC, 0x09C7, 0x09D7, 0,
2875 1, 0x09DC, 0x09A1, 0x09BC, 0,
2876 1, 0x09DD, 0x09A2, 0x09BC, 0,
2877 1, 0x09DF, 0x09AF, 0x09BC, 0,
2878 1, 0x0A33, 0x0A32, 0x0A3C, 0,
2879 1, 0x0A36, 0x0A38, 0x0A3C, 0,
2880 1, 0x0A59, 0x0A16, 0x0A3C, 0,
2881 1, 0x0A5A, 0x0A17, 0x0A3C, 0,
2882 1, 0x0A5B, 0x0A1C, 0x0A3C, 0,
2883 1, 0x0A5E, 0x0A2B, 0x0A3C, 0,
2884 1, 0x0B48, 0x0B47, 0x0B56, 0,
2885 1, 0x0B4B, 0x0B47, 0x0B3E, 0,
2886 1, 0x0B4C, 0x0B47, 0x0B57, 0,
2887 1, 0x0B5C, 0x0B21, 0x0B3C, 0,
2888 1, 0x0B5D, 0x0B22, 0x0B3C, 0,
2889 1, 0x0B94, 0x0B92, 0x0BD7, 0,
2890 1, 0x0BCA, 0x0BC6, 0x0BBE, 0,
2891 1, 0x0BCB, 0x0BC7, 0x0BBE, 0,
2892 1, 0x0BCC, 0x0BC6, 0x0BD7, 0,
2893 1, 0x0C48, 0x0C46, 0x0C56, 0,
2894 1, 0x0CC0, 0x0CBF, 0x0CD5, 0,
2895 1, 0x0CC7, 0x0CC6, 0x0CD5, 0,
2896 1, 0x0CC8, 0x0CC6, 0x0CD6, 0,
2897 1, 0x0CCA, 0x0CC6, 0x0CC2, 0,
2898 1, 0x0CCB, 0x0CCA, 0x0CD5, 0,
2899 1, 0x0D4A, 0x0D46, 0x0D3E, 0,
2900 1, 0x0D4B, 0x0D47, 0x0D3E, 0,
2901 1, 0x0D4C, 0x0D46, 0x0D57, 0,
2902 1, 0x0DDA, 0x0DD9, 0x0DCA, 0,
2903 1, 0x0DDC, 0x0DD9, 0x0DCF, 0,
2904 1, 0x0DDD, 0x0DDC, 0x0DCA, 0,
2905 1, 0x0DDE, 0x0DD9, 0x0DDF, 0,
2906 16, 0x0E33, 0x0E4D, 0x0E32, 0,
2907 16, 0x0EB3, 0x0ECD, 0x0EB2, 0,
2908 16, 0x0EDC, 0x0EAB, 0x0E99, 0,
2909 16, 0x0EDD, 0x0EAB, 0x0EA1, 0,
2910 3, 0x0F0C, 0x0F0B, 0,
2911 1, 0x0F43, 0x0F42, 0x0FB7, 0,
2912 1, 0x0F4D, 0x0F4C, 0x0FB7, 0,
2913 1, 0x0F52, 0x0F51, 0x0FB7, 0,
2914 1, 0x0F57, 0x0F56, 0x0FB7, 0,
2915 1, 0x0F5C, 0x0F5B, 0x0FB7, 0,
2916 1, 0x0F69, 0x0F40, 0x0FB5, 0,
2917 1, 0x0F73, 0x0F71, 0x0F72, 0,
2918 1, 0x0F75, 0x0F71, 0x0F74, 0,
2919 1, 0x0F76, 0x0FB2, 0x0F80, 0,
2920 16, 0x0F77, 0x0FB2, 0x0F81, 0,
2921 1, 0x0F78, 0x0FB3, 0x0F80, 0,
2922 16, 0x0F79, 0x0FB3, 0x0F81, 0,
2923 1, 0x0F81, 0x0F71, 0x0F80, 0,
2924 1, 0x0F93, 0x0F92, 0x0FB7, 0,
2925 1, 0x0F9D, 0x0F9C, 0x0FB7, 0,
2926 1, 0x0FA2, 0x0FA1, 0x0FB7, 0,
2927 1, 0x0FA7, 0x0FA6, 0x0FB7, 0,
2928 1, 0x0FAC, 0x0FAB, 0x0FB7, 0,
2929 1, 0x0FB9, 0x0F90, 0x0FB5, 0,
2930 1, 0x1026, 0x1025, 0x102E, 0,
2931 1, 0x1E00, 0x0041, 0x0325, 0,
2932 1, 0x1E01, 0x0061, 0x0325, 0,
2933 1, 0x1E02, 0x0042, 0x0307, 0,
2934 1, 0x1E03, 0x0062, 0x0307, 0,
2935 1, 0x1E04, 0x0042, 0x0323, 0,
2936 1, 0x1E05, 0x0062, 0x0323, 0,
2937 1, 0x1E06, 0x0042, 0x0331, 0,
2938 1, 0x1E07, 0x0062, 0x0331, 0,
2939 1, 0x1E08, 0x00C7, 0x0301, 0,
2940 1, 0x1E09, 0x00E7, 0x0301, 0,
2941 1, 0x1E0A, 0x0044, 0x0307, 0,
2942 1, 0x1E0B, 0x0064, 0x0307, 0,
2943 1, 0x1E0C, 0x0044, 0x0323, 0,
2944 1, 0x1E0D, 0x0064, 0x0323, 0,
2945 1, 0x1E0E, 0x0044, 0x0331, 0,
2946 1, 0x1E0F, 0x0064, 0x0331, 0,
2947 1, 0x1E10, 0x0044, 0x0327, 0,
2948 1, 0x1E11, 0x0064, 0x0327, 0,
2949 1, 0x1E12, 0x0044, 0x032D, 0,
2950 1, 0x1E13, 0x0064, 0x032D, 0,
2951 1, 0x1E14, 0x0112, 0x0300, 0,
2952 1, 0x1E15, 0x0113, 0x0300, 0,
2953 1, 0x1E16, 0x0112, 0x0301, 0,
2954 1, 0x1E17, 0x0113, 0x0301, 0,
2955 1, 0x1E18, 0x0045, 0x032D, 0,
2956 1, 0x1E19, 0x0065, 0x032D, 0,
2957 1, 0x1E1A, 0x0045, 0x0330, 0,
2958 1, 0x1E1B, 0x0065, 0x0330, 0,
2959 1, 0x1E1C, 0x0228, 0x0306, 0,
2960 1, 0x1E1D, 0x0229, 0x0306, 0,
2961 1, 0x1E1E, 0x0046, 0x0307, 0,
2962 1, 0x1E1F, 0x0066, 0x0307, 0,
2963 1, 0x1E20, 0x0047, 0x0304, 0,
2964 1, 0x1E21, 0x0067, 0x0304, 0,
2965 1, 0x1E22, 0x0048, 0x0307, 0,
2966 1, 0x1E23, 0x0068, 0x0307, 0,
2967 1, 0x1E24, 0x0048, 0x0323, 0,
2968 1, 0x1E25, 0x0068, 0x0323, 0,
2969 1, 0x1E26, 0x0048, 0x0308, 0,
2970 1, 0x1E27, 0x0068, 0x0308, 0,
2971 1, 0x1E28, 0x0048, 0x0327, 0,
2972 1, 0x1E29, 0x0068, 0x0327, 0,
2973 1, 0x1E2A, 0x0048, 0x032E, 0,
2974 1, 0x1E2B, 0x0068, 0x032E, 0,
2975 1, 0x1E2C, 0x0049, 0x0330, 0,
2976 1, 0x1E2D, 0x0069, 0x0330, 0,
2977 1, 0x1E2E, 0x00CF, 0x0301, 0,
2978 1, 0x1E2F, 0x00EF, 0x0301, 0,
2979 1, 0x1E30, 0x004B, 0x0301, 0,
2980 1, 0x1E31, 0x006B, 0x0301, 0,
2981 1, 0x1E32, 0x004B, 0x0323, 0,
2982 1, 0x1E33, 0x006B, 0x0323, 0,
2983 1, 0x1E34, 0x004B, 0x0331, 0,
2984 1, 0x1E35, 0x006B, 0x0331, 0,
2985 1, 0x1E36, 0x004C, 0x0323, 0,
2986 1, 0x1E37, 0x006C, 0x0323, 0,
2987 1, 0x1E38, 0x1E36, 0x0304, 0,
2988 1, 0x1E39, 0x1E37, 0x0304, 0,
2989 1, 0x1E3A, 0x004C, 0x0331, 0,
2990 1, 0x1E3B, 0x006C, 0x0331, 0,
2991 1, 0x1E3C, 0x004C, 0x032D, 0,
2992 1, 0x1E3D, 0x006C, 0x032D, 0,
2993 1, 0x1E3E, 0x004D, 0x0301, 0,
2994 1, 0x1E3F, 0x006D, 0x0301, 0,
2995 1, 0x1E40, 0x004D, 0x0307, 0,
2996 1, 0x1E41, 0x006D, 0x0307, 0,
2997 1, 0x1E42, 0x004D, 0x0323, 0,
2998 1, 0x1E43, 0x006D, 0x0323, 0,
2999 1, 0x1E44, 0x004E, 0x0307, 0,
3000 1, 0x1E45, 0x006E, 0x0307, 0,
3001 1, 0x1E46, 0x004E, 0x0323, 0,
3002 1, 0x1E47, 0x006E, 0x0323, 0,
3003 1, 0x1E48, 0x004E, 0x0331, 0,
3004 1, 0x1E49, 0x006E, 0x0331, 0,
3005 1, 0x1E4A, 0x004E, 0x032D, 0,
3006 1, 0x1E4B, 0x006E, 0x032D, 0,
3007 1, 0x1E4C, 0x00D5, 0x0301, 0,
3008 1, 0x1E4D, 0x00F5, 0x0301, 0,
3009 1, 0x1E4E, 0x00D5, 0x0308, 0,
3010 1, 0x1E4F, 0x00F5, 0x0308, 0,
3011 1, 0x1E50, 0x014C, 0x0300, 0,
3012 1, 0x1E51, 0x014D, 0x0300, 0,
3013 1, 0x1E52, 0x014C, 0x0301, 0,
3014 1, 0x1E53, 0x014D, 0x0301, 0,
3015 1, 0x1E54, 0x0050, 0x0301, 0,
3016 1, 0x1E55, 0x0070, 0x0301, 0,
3017 1, 0x1E56, 0x0050, 0x0307, 0,
3018 1, 0x1E57, 0x0070, 0x0307, 0,
3019 1, 0x1E58, 0x0052, 0x0307, 0,
3020 1, 0x1E59, 0x0072, 0x0307, 0,
3021 1, 0x1E5A, 0x0052, 0x0323, 0,
3022 1, 0x1E5B, 0x0072, 0x0323, 0,
3023 1, 0x1E5C, 0x1E5A, 0x0304, 0,
3024 1, 0x1E5D, 0x1E5B, 0x0304, 0,
3025 1, 0x1E5E, 0x0052, 0x0331, 0,
3026 1, 0x1E5F, 0x0072, 0x0331, 0,
3027 1, 0x1E60, 0x0053, 0x0307, 0,
3028 1, 0x1E61, 0x0073, 0x0307, 0,
3029 1, 0x1E62, 0x0053, 0x0323, 0,
3030 1, 0x1E63, 0x0073, 0x0323, 0,
3031 1, 0x1E64, 0x015A, 0x0307, 0,
3032 1, 0x1E65, 0x015B, 0x0307, 0,
3033 1, 0x1E66, 0x0160, 0x0307, 0,
3034 1, 0x1E67, 0x0161, 0x0307, 0,
3035 1, 0x1E68, 0x1E62, 0x0307, 0,
3036 1, 0x1E69, 0x1E63, 0x0307, 0,
3037 1, 0x1E6A, 0x0054, 0x0307, 0,
3038 1, 0x1E6B, 0x0074, 0x0307, 0,
3039 1, 0x1E6C, 0x0054, 0x0323, 0,
3040 1, 0x1E6D, 0x0074, 0x0323, 0,
3041 1, 0x1E6E, 0x0054, 0x0331, 0,
3042 1, 0x1E6F, 0x0074, 0x0331, 0,
3043 1, 0x1E70, 0x0054, 0x032D, 0,
3044 1, 0x1E71, 0x0074, 0x032D, 0,
3045 1, 0x1E72, 0x0055, 0x0324, 0,
3046 1, 0x1E73, 0x0075, 0x0324, 0,
3047 1, 0x1E74, 0x0055, 0x0330, 0,
3048 1, 0x1E75, 0x0075, 0x0330, 0,
3049 1, 0x1E76, 0x0055, 0x032D, 0,
3050 1, 0x1E77, 0x0075, 0x032D, 0,
3051 1, 0x1E78, 0x0168, 0x0301, 0,
3052 1, 0x1E79, 0x0169, 0x0301, 0,
3053 1, 0x1E7A, 0x016A, 0x0308, 0,
3054 1, 0x1E7B, 0x016B, 0x0308, 0,
3055 1, 0x1E7C, 0x0056, 0x0303, 0,
3056 1, 0x1E7D, 0x0076, 0x0303, 0,
3057 1, 0x1E7E, 0x0056, 0x0323, 0,
3058 1, 0x1E7F, 0x0076, 0x0323, 0,
3059 1, 0x1E80, 0x0057, 0x0300, 0,
3060 1, 0x1E81, 0x0077, 0x0300, 0,
3061 1, 0x1E82, 0x0057, 0x0301, 0,
3062 1, 0x1E83, 0x0077, 0x0301, 0,
3063 1, 0x1E84, 0x0057, 0x0308, 0,
3064 1, 0x1E85, 0x0077, 0x0308, 0,
3065 1, 0x1E86, 0x0057, 0x0307, 0,
3066 1, 0x1E87, 0x0077, 0x0307, 0,
3067 1, 0x1E88, 0x0057, 0x0323, 0,
3068 1, 0x1E89, 0x0077, 0x0323, 0,
3069 1, 0x1E8A, 0x0058, 0x0307, 0,
3070 1, 0x1E8B, 0x0078, 0x0307, 0,
3071 1, 0x1E8C, 0x0058, 0x0308, 0,
3072 1, 0x1E8D, 0x0078, 0x0308, 0,
3073 1, 0x1E8E, 0x0059, 0x0307, 0,
3074 1, 0x1E8F, 0x0079, 0x0307, 0,
3075 1, 0x1E90, 0x005A, 0x0302, 0,
3076 1, 0x1E91, 0x007A, 0x0302, 0,
3077 1, 0x1E92, 0x005A, 0x0323, 0,
3078 1, 0x1E93, 0x007A, 0x0323, 0,
3079 1, 0x1E94, 0x005A, 0x0331, 0,
3080 1, 0x1E95, 0x007A, 0x0331, 0,
3081 1, 0x1E96, 0x0068, 0x0331, 0,
3082 1, 0x1E97, 0x0074, 0x0308, 0,
3083 1, 0x1E98, 0x0077, 0x030A, 0,
3084 1, 0x1E99, 0x0079, 0x030A, 0,
3085 16, 0x1E9A, 0x0061, 0x02BE, 0,
3086 1, 0x1E9B, 0x017F, 0x0307, 0,
3087 1, 0x1EA0, 0x0041, 0x0323, 0,
3088 1, 0x1EA1, 0x0061, 0x0323, 0,
3089 1, 0x1EA2, 0x0041, 0x0309, 0,
3090 1, 0x1EA3, 0x0061, 0x0309, 0,
3091 1, 0x1EA4, 0x00C2, 0x0301, 0,
3092 1, 0x1EA5, 0x00E2, 0x0301, 0,
3093 1, 0x1EA6, 0x00C2, 0x0300, 0,
3094 1, 0x1EA7, 0x00E2, 0x0300, 0,
3095 1, 0x1EA8, 0x00C2, 0x0309, 0,
3096 1, 0x1EA9, 0x00E2, 0x0309, 0,
3097 1, 0x1EAA, 0x00C2, 0x0303, 0,
3098 1, 0x1EAB, 0x00E2, 0x0303, 0,
3099 1, 0x1EAC, 0x1EA0, 0x0302, 0,
3100 1, 0x1EAD, 0x1EA1, 0x0302, 0,
3101 1, 0x1EAE, 0x0102, 0x0301, 0,
3102 1, 0x1EAF, 0x0103, 0x0301, 0,
3103 1, 0x1EB0, 0x0102, 0x0300, 0,
3104 1, 0x1EB1, 0x0103, 0x0300, 0,
3105 1, 0x1EB2, 0x0102, 0x0309, 0,
3106 1, 0x1EB3, 0x0103, 0x0309, 0,
3107 1, 0x1EB4, 0x0102, 0x0303, 0,
3108 1, 0x1EB5, 0x0103, 0x0303, 0,
3109 1, 0x1EB6, 0x1EA0, 0x0306, 0,
3110 1, 0x1EB7, 0x1EA1, 0x0306, 0,
3111 1, 0x1EB8, 0x0045, 0x0323, 0,
3112 1, 0x1EB9, 0x0065, 0x0323, 0,
3113 1, 0x1EBA, 0x0045, 0x0309, 0,
3114 1, 0x1EBB, 0x0065, 0x0309, 0,
3115 1, 0x1EBC, 0x0045, 0x0303, 0,
3116 1, 0x1EBD, 0x0065, 0x0303, 0,
3117 1, 0x1EBE, 0x00CA, 0x0301, 0,
3118 1, 0x1EBF, 0x00EA, 0x0301, 0,
3119 1, 0x1EC0, 0x00CA, 0x0300, 0,
3120 1, 0x1EC1, 0x00EA, 0x0300, 0,
3121 1, 0x1EC2, 0x00CA, 0x0309, 0,
3122 1, 0x1EC3, 0x00EA, 0x0309, 0,
3123 1, 0x1EC4, 0x00CA, 0x0303, 0,
3124 1, 0x1EC5, 0x00EA, 0x0303, 0,
3125 1, 0x1EC6, 0x1EB8, 0x0302, 0,
3126 1, 0x1EC7, 0x1EB9, 0x0302, 0,
3127 1, 0x1EC8, 0x0049, 0x0309, 0,
3128 1, 0x1EC9, 0x0069, 0x0309, 0,
3129 1, 0x1ECA, 0x0049, 0x0323, 0,
3130 1, 0x1ECB, 0x0069, 0x0323, 0,
3131 1, 0x1ECC, 0x004F, 0x0323, 0,
3132 1, 0x1ECD, 0x006F, 0x0323, 0,
3133 1, 0x1ECE, 0x004F, 0x0309, 0,
3134 1, 0x1ECF, 0x006F, 0x0309, 0,
3135 1, 0x1ED0, 0x00D4, 0x0301, 0,
3136 1, 0x1ED1, 0x00F4, 0x0301, 0,
3137 1, 0x1ED2, 0x00D4, 0x0300, 0,
3138 1, 0x1ED3, 0x00F4, 0x0300, 0,
3139 1, 0x1ED4, 0x00D4, 0x0309, 0,
3140 1, 0x1ED5, 0x00F4, 0x0309, 0,
3141 1, 0x1ED6, 0x00D4, 0x0303, 0,
3142 1, 0x1ED7, 0x00F4, 0x0303, 0,
3143 1, 0x1ED8, 0x1ECC, 0x0302, 0,
3144 1, 0x1ED9, 0x1ECD, 0x0302, 0,
3145 1, 0x1EDA, 0x01A0, 0x0301, 0,
3146 1, 0x1EDB, 0x01A1, 0x0301, 0,
3147 1, 0x1EDC, 0x01A0, 0x0300, 0,
3148 1, 0x1EDD, 0x01A1, 0x0300, 0,
3149 1, 0x1EDE, 0x01A0, 0x0309, 0,
3150 1, 0x1EDF, 0x01A1, 0x0309, 0,
3151 1, 0x1EE0, 0x01A0, 0x0303, 0,
3152 1, 0x1EE1, 0x01A1, 0x0303, 0,
3153 1, 0x1EE2, 0x01A0, 0x0323, 0,
3154 1, 0x1EE3, 0x01A1, 0x0323, 0,
3155 1, 0x1EE4, 0x0055, 0x0323, 0,
3156 1, 0x1EE5, 0x0075, 0x0323, 0,
3157 1, 0x1EE6, 0x0055, 0x0309, 0,
3158 1, 0x1EE7, 0x0075, 0x0309, 0,
3159 1, 0x1EE8, 0x01AF, 0x0301, 0,
3160 1, 0x1EE9, 0x01B0, 0x0301, 0,
3161 1, 0x1EEA, 0x01AF, 0x0300, 0,
3162 1, 0x1EEB, 0x01B0, 0x0300, 0,
3163 1, 0x1EEC, 0x01AF, 0x0309, 0,
3164 1, 0x1EED, 0x01B0, 0x0309, 0,
3165 1, 0x1EEE, 0x01AF, 0x0303, 0,
3166 1, 0x1EEF, 0x01B0, 0x0303, 0,
3167 1, 0x1EF0, 0x01AF, 0x0323, 0,
3168 1, 0x1EF1, 0x01B0, 0x0323, 0,
3169 1, 0x1EF2, 0x0059, 0x0300, 0,
3170 1, 0x1EF3, 0x0079, 0x0300, 0,
3171 1, 0x1EF4, 0x0059, 0x0323, 0,
3172 1, 0x1EF5, 0x0079, 0x0323, 0,
3173 1, 0x1EF6, 0x0059, 0x0309, 0,
3174 1, 0x1EF7, 0x0079, 0x0309, 0,
3175 1, 0x1EF8, 0x0059, 0x0303, 0,
3176 1, 0x1EF9, 0x0079, 0x0303, 0,
3177 1, 0x1F00, 0x03B1, 0x0313, 0,
3178 1, 0x1F01, 0x03B1, 0x0314, 0,
3179 1, 0x1F02, 0x1F00, 0x0300, 0,
3180 1, 0x1F03, 0x1F01, 0x0300, 0,
3181 1, 0x1F04, 0x1F00, 0x0301, 0,
3182 1, 0x1F05, 0x1F01, 0x0301, 0,
3183 1, 0x1F06, 0x1F00, 0x0342, 0,
3184 1, 0x1F07, 0x1F01, 0x0342, 0,
3185 1, 0x1F08, 0x0391, 0x0313, 0,
3186 1, 0x1F09, 0x0391, 0x0314, 0,
3187 1, 0x1F0A, 0x1F08, 0x0300, 0,
3188 1, 0x1F0B, 0x1F09, 0x0300, 0,
3189 1, 0x1F0C, 0x1F08, 0x0301, 0,
3190 1, 0x1F0D, 0x1F09, 0x0301, 0,
3191 1, 0x1F0E, 0x1F08, 0x0342, 0,
3192 1, 0x1F0F, 0x1F09, 0x0342, 0,
3193 1, 0x1F10, 0x03B5, 0x0313, 0,
3194 1, 0x1F11, 0x03B5, 0x0314, 0,
3195 1, 0x1F12, 0x1F10, 0x0300, 0,
3196 1, 0x1F13, 0x1F11, 0x0300, 0,
3197 1, 0x1F14, 0x1F10, 0x0301, 0,
3198 1, 0x1F15, 0x1F11, 0x0301, 0,
3199 1, 0x1F18, 0x0395, 0x0313, 0,
3200 1, 0x1F19, 0x0395, 0x0314, 0,
3201 1, 0x1F1A, 0x1F18, 0x0300, 0,
3202 1, 0x1F1B, 0x1F19, 0x0300, 0,
3203 1, 0x1F1C, 0x1F18, 0x0301, 0,
3204 1, 0x1F1D, 0x1F19, 0x0301, 0,
3205 1, 0x1F20, 0x03B7, 0x0313, 0,
3206 1, 0x1F21, 0x03B7, 0x0314, 0,
3207 1, 0x1F22, 0x1F20, 0x0300, 0,
3208 1, 0x1F23, 0x1F21, 0x0300, 0,
3209 1, 0x1F24, 0x1F20, 0x0301, 0,
3210 1, 0x1F25, 0x1F21, 0x0301, 0,
3211 1, 0x1F26, 0x1F20, 0x0342, 0,
3212 1, 0x1F27, 0x1F21, 0x0342, 0,
3213 1, 0x1F28, 0x0397, 0x0313, 0,
3214 1, 0x1F29, 0x0397, 0x0314, 0,
3215 1, 0x1F2A, 0x1F28, 0x0300, 0,
3216 1, 0x1F2B, 0x1F29, 0x0300, 0,
3217 1, 0x1F2C, 0x1F28, 0x0301, 0,
3218 1, 0x1F2D, 0x1F29, 0x0301, 0,
3219 1, 0x1F2E, 0x1F28, 0x0342, 0,
3220 1, 0x1F2F, 0x1F29, 0x0342, 0,
3221 1, 0x1F30, 0x03B9, 0x0313, 0,
3222 1, 0x1F31, 0x03B9, 0x0314, 0,
3223 1, 0x1F32, 0x1F30, 0x0300, 0,
3224 1, 0x1F33, 0x1F31, 0x0300, 0,
3225 1, 0x1F34, 0x1F30, 0x0301, 0,
3226 1, 0x1F35, 0x1F31, 0x0301, 0,
3227 1, 0x1F36, 0x1F30, 0x0342, 0,
3228 1, 0x1F37, 0x1F31, 0x0342, 0,
3229 1, 0x1F38, 0x0399, 0x0313, 0,
3230 1, 0x1F39, 0x0399, 0x0314, 0,
3231 1, 0x1F3A, 0x1F38, 0x0300, 0,
3232 1, 0x1F3B, 0x1F39, 0x0300, 0,
3233 1, 0x1F3C, 0x1F38, 0x0301, 0,
3234 1, 0x1F3D, 0x1F39, 0x0301, 0,
3235 1, 0x1F3E, 0x1F38, 0x0342, 0,
3236 1, 0x1F3F, 0x1F39, 0x0342, 0,
3237 1, 0x1F40, 0x03BF, 0x0313, 0,
3238 1, 0x1F41, 0x03BF, 0x0314, 0,
3239 1, 0x1F42, 0x1F40, 0x0300, 0,
3240 1, 0x1F43, 0x1F41, 0x0300, 0,
3241 1, 0x1F44, 0x1F40, 0x0301, 0,
3242 1, 0x1F45, 0x1F41, 0x0301, 0,
3243 1, 0x1F48, 0x039F, 0x0313, 0,
3244 1, 0x1F49, 0x039F, 0x0314, 0,
3245 1, 0x1F4A, 0x1F48, 0x0300, 0,
3246 1, 0x1F4B, 0x1F49, 0x0300, 0,
3247 1, 0x1F4C, 0x1F48, 0x0301, 0,
3248 1, 0x1F4D, 0x1F49, 0x0301, 0,
3249 1, 0x1F50, 0x03C5, 0x0313, 0,
3250 1, 0x1F51, 0x03C5, 0x0314, 0,
3251 1, 0x1F52, 0x1F50, 0x0300, 0,
3252 1, 0x1F53, 0x1F51, 0x0300, 0,
3253 1, 0x1F54, 0x1F50, 0x0301, 0,
3254 1, 0x1F55, 0x1F51, 0x0301, 0,
3255 1, 0x1F56, 0x1F50, 0x0342, 0,
3256 1, 0x1F57, 0x1F51, 0x0342, 0,
3257 1, 0x1F59, 0x03A5, 0x0314, 0,
3258 1, 0x1F5B, 0x1F59, 0x0300, 0,
3259 1, 0x1F5D, 0x1F59, 0x0301, 0,
3260 1, 0x1F5F, 0x1F59, 0x0342, 0,
3261 1, 0x1F60, 0x03C9, 0x0313, 0,
3262 1, 0x1F61, 0x03C9, 0x0314, 0,
3263 1, 0x1F62, 0x1F60, 0x0300, 0,
3264 1, 0x1F63, 0x1F61, 0x0300, 0,
3265 1, 0x1F64, 0x1F60, 0x0301, 0,
3266 1, 0x1F65, 0x1F61, 0x0301, 0,
3267 1, 0x1F66, 0x1F60, 0x0342, 0,
3268 1, 0x1F67, 0x1F61, 0x0342, 0,
3269 1, 0x1F68, 0x03A9, 0x0313, 0,
3270 1, 0x1F69, 0x03A9, 0x0314, 0,
3271 1, 0x1F6A, 0x1F68, 0x0300, 0,
3272 1, 0x1F6B, 0x1F69, 0x0300, 0,
3273 1, 0x1F6C, 0x1F68, 0x0301, 0,
3274 1, 0x1F6D, 0x1F69, 0x0301, 0,
3275 1, 0x1F6E, 0x1F68, 0x0342, 0,
3276 1, 0x1F6F, 0x1F69, 0x0342, 0,
3277 1, 0x1F70, 0x03B1, 0x0300, 0,
3278 1, 0x1F71, 0x03AC, 0,
3279 1, 0x1F72, 0x03B5, 0x0300, 0,
3280 1, 0x1F73, 0x03AD, 0,
3281 1, 0x1F74, 0x03B7, 0x0300, 0,
3282 1, 0x1F75, 0x03AE, 0,
3283 1, 0x1F76, 0x03B9, 0x0300, 0,
3284 1, 0x1F77, 0x03AF, 0,
3285 1, 0x1F78, 0x03BF, 0x0300, 0,
3286 1, 0x1F79, 0x03CC, 0,
3287 1, 0x1F7A, 0x03C5, 0x0300, 0,
3288 1, 0x1F7B, 0x03CD, 0,
3289 1, 0x1F7C, 0x03C9, 0x0300, 0,
3290 1, 0x1F7D, 0x03CE, 0,
3291 1, 0x1F80, 0x1F00, 0x0345, 0,
3292 1, 0x1F81, 0x1F01, 0x0345, 0,
3293 1, 0x1F82, 0x1F02, 0x0345, 0,
3294 1, 0x1F83, 0x1F03, 0x0345, 0,
3295 1, 0x1F84, 0x1F04, 0x0345, 0,
3296 1, 0x1F85, 0x1F05, 0x0345, 0,
3297 1, 0x1F86, 0x1F06, 0x0345, 0,
3298 1, 0x1F87, 0x1F07, 0x0345, 0,
3299 1, 0x1F88, 0x1F08, 0x0345, 0,
3300 1, 0x1F89, 0x1F09, 0x0345, 0,
3301 1, 0x1F8A, 0x1F0A, 0x0345, 0,
3302 1, 0x1F8B, 0x1F0B, 0x0345, 0,
3303 1, 0x1F8C, 0x1F0C, 0x0345, 0,
3304 1, 0x1F8D, 0x1F0D, 0x0345, 0,
3305 1, 0x1F8E, 0x1F0E, 0x0345, 0,
3306 1, 0x1F8F, 0x1F0F, 0x0345, 0,
3307 1, 0x1F90, 0x1F20, 0x0345, 0,
3308 1, 0x1F91, 0x1F21, 0x0345, 0,
3309 1, 0x1F92, 0x1F22, 0x0345, 0,
3310 1, 0x1F93, 0x1F23, 0x0345, 0,
3311 1, 0x1F94, 0x1F24, 0x0345, 0,
3312 1, 0x1F95, 0x1F25, 0x0345, 0,
3313 1, 0x1F96, 0x1F26, 0x0345, 0,
3314 1, 0x1F97, 0x1F27, 0x0345, 0,
3315 1, 0x1F98, 0x1F28, 0x0345, 0,
3316 1, 0x1F99, 0x1F29, 0x0345, 0,
3317 1, 0x1F9A, 0x1F2A, 0x0345, 0,
3318 1, 0x1F9B, 0x1F2B, 0x0345, 0,
3319 1, 0x1F9C, 0x1F2C, 0x0345, 0,
3320 1, 0x1F9D, 0x1F2D, 0x0345, 0,
3321 1, 0x1F9E, 0x1F2E, 0x0345, 0,
3322 1, 0x1F9F, 0x1F2F, 0x0345, 0,
3323 1, 0x1FA0, 0x1F60, 0x0345, 0,
3324 1, 0x1FA1, 0x1F61, 0x0345, 0,
3325 1, 0x1FA2, 0x1F62, 0x0345, 0,
3326 1, 0x1FA3, 0x1F63, 0x0345, 0,
3327 1, 0x1FA4, 0x1F64, 0x0345, 0,
3328 1, 0x1FA5, 0x1F65, 0x0345, 0,
3329 1, 0x1FA6, 0x1F66, 0x0345, 0,
3330 1, 0x1FA7, 0x1F67, 0x0345, 0,
3331 1, 0x1FA8, 0x1F68, 0x0345, 0,
3332 1, 0x1FA9, 0x1F69, 0x0345, 0,
3333 1, 0x1FAA, 0x1F6A, 0x0345, 0,
3334 1, 0x1FAB, 0x1F6B, 0x0345, 0,
3335 1, 0x1FAC, 0x1F6C, 0x0345, 0,
3336 1, 0x1FAD, 0x1F6D, 0x0345, 0,
3337 1, 0x1FAE, 0x1F6E, 0x0345, 0,
3338 1, 0x1FAF, 0x1F6F, 0x0345, 0,
3339 1, 0x1FB0, 0x03B1, 0x0306, 0,
3340 1, 0x1FB1, 0x03B1, 0x0304, 0,
3341 1, 0x1FB2, 0x1F70, 0x0345, 0,
3342 1, 0x1FB3, 0x03B1, 0x0345, 0,
3343 1, 0x1FB4, 0x03AC, 0x0345, 0,
3344 1, 0x1FB6, 0x03B1, 0x0342, 0,
3345 1, 0x1FB7, 0x1FB6, 0x0345, 0,
3346 1, 0x1FB8, 0x0391, 0x0306, 0,
3347 1, 0x1FB9, 0x0391, 0x0304, 0,
3348 1, 0x1FBA, 0x0391, 0x0300, 0,
3349 1, 0x1FBB, 0x0386, 0,
3350 1, 0x1FBC, 0x0391, 0x0345, 0,
3351 16, 0x1FBD, 0x0020, 0x0313, 0,
3352 1, 0x1FBE, 0x03B9, 0,
3353 16, 0x1FBF, 0x0020, 0x0313, 0,
3354 16, 0x1FC0, 0x0020, 0x0342, 0,
3355 1, 0x1FC1, 0x00A8, 0x0342, 0,
3356 1, 0x1FC2, 0x1F74, 0x0345, 0,
3357 1, 0x1FC3, 0x03B7, 0x0345, 0,
3358 1, 0x1FC4, 0x03AE, 0x0345, 0,
3359 1, 0x1FC6, 0x03B7, 0x0342, 0,
3360 1, 0x1FC7, 0x1FC6, 0x0345, 0,
3361 1, 0x1FC8, 0x0395, 0x0300, 0,
3362 1, 0x1FC9, 0x0388, 0,
3363 1, 0x1FCA, 0x0397, 0x0300, 0,
3364 1, 0x1FCB, 0x0389, 0,
3365 1, 0x1FCC, 0x0397, 0x0345, 0,
3366 1, 0x1FCD, 0x1FBF, 0x0300, 0,
3367 1, 0x1FCE, 0x1FBF, 0x0301, 0,
3368 1, 0x1FCF, 0x1FBF, 0x0342, 0,
3369 1, 0x1FD0, 0x03B9, 0x0306, 0,
3370 1, 0x1FD1, 0x03B9, 0x0304, 0,
3371 1, 0x1FD2, 0x03CA, 0x0300, 0,
3372 1, 0x1FD3, 0x0390, 0,
3373 1, 0x1FD6, 0x03B9, 0x0342, 0,
3374 1, 0x1FD7, 0x03CA, 0x0342, 0,
3375 1, 0x1FD8, 0x0399, 0x0306, 0,
3376 1, 0x1FD9, 0x0399, 0x0304, 0,
3377 1, 0x1FDA, 0x0399, 0x0300, 0,
3378 1, 0x1FDB, 0x038A, 0,
3379 1, 0x1FDD, 0x1FFE, 0x0300, 0,
3380 1, 0x1FDE, 0x1FFE, 0x0301, 0,
3381 1, 0x1FDF, 0x1FFE, 0x0342, 0,
3382 1, 0x1FE0, 0x03C5, 0x0306, 0,
3383 1, 0x1FE1, 0x03C5, 0x0304, 0,
3384 1, 0x1FE2, 0x03CB, 0x0300, 0,
3385 1, 0x1FE3, 0x03B0, 0,
3386 1, 0x1FE4, 0x03C1, 0x0313, 0,
3387 1, 0x1FE5, 0x03C1, 0x0314, 0,
3388 1, 0x1FE6, 0x03C5, 0x0342, 0,
3389 1, 0x1FE7, 0x03CB, 0x0342, 0,
3390 1, 0x1FE8, 0x03A5, 0x0306, 0,
3391 1, 0x1FE9, 0x03A5, 0x0304, 0,
3392 1, 0x1FEA, 0x03A5, 0x0300, 0,
3393 1, 0x1FEB, 0x038E, 0,
3394 1, 0x1FEC, 0x03A1, 0x0314, 0,
3395 1, 0x1FED, 0x00A8, 0x0300, 0,
3396 1, 0x1FEE, 0x0385, 0,
3397 1, 0x1FEF, 0x0060, 0,
3398 1, 0x1FF2, 0x1F7C, 0x0345, 0,
3399 1, 0x1FF3, 0x03C9, 0x0345, 0,
3400 1, 0x1FF4, 0x03CE, 0x0345, 0,
3401 1, 0x1FF6, 0x03C9, 0x0342, 0,
3402 1, 0x1FF7, 0x1FF6, 0x0345, 0,
3403 1, 0x1FF8, 0x039F, 0x0300, 0,
3404 1, 0x1FF9, 0x038C, 0,
3405 1, 0x1FFA, 0x03A9, 0x0300, 0,
3406 1, 0x1FFB, 0x038F, 0,
3407 1, 0x1FFC, 0x03A9, 0x0345, 0,
3408 1, 0x1FFD, 0x00B4, 0,
3409 16, 0x1FFE, 0x0020, 0x0314, 0,
3410 1, 0x2000, 0x2002, 0,
3411 1, 0x2001, 0x2003, 0,
3412 16, 0x2002, 0x0020, 0,
3413 16, 0x2003, 0x0020, 0,
3414 16, 0x2004, 0x0020, 0,
3415 16, 0x2005, 0x0020, 0,
3416 16, 0x2006, 0x0020, 0,
3417 3, 0x2007, 0x0020, 0,
3418 16, 0x2008, 0x0020, 0,
3419 16, 0x2009, 0x0020, 0,
3420 16, 0x200A, 0x0020, 0,
3421 3, 0x2011, 0x2010, 0,
3422 16, 0x2017, 0x0020, 0x0333, 0,
3423 16, 0x2024, 0x002E, 0,
3424 16, 0x2025, 0x002E, 0x002E, 0,
3425 16, 0x2026, 0x002E, 0x002E, 0x002E, 0,
3426 3, 0x202F, 0x0020, 0,
3427 16, 0x2033, 0x2032, 0x2032, 0,
3428 16, 0x2034, 0x2032, 0x2032, 0x2032, 0,
3429 16, 0x2036, 0x2035, 0x2035, 0,
3430 16, 0x2037, 0x2035, 0x2035, 0x2035, 0,
3431 16, 0x203C, 0x0021, 0x0021, 0,
3432 16, 0x203E, 0x0020, 0x0305, 0,
3433 16, 0x2047, 0x003F, 0x003F, 0,
3434 16, 0x2048, 0x003F, 0x0021, 0,
3435 16, 0x2049, 0x0021, 0x003F, 0,
3436 16, 0x2057, 0x2032, 0x2032, 0x2032, 0x2032, 0,
3437 16, 0x205F, 0x0020, 0,
3438 9, 0x2070, 0x0030, 0,
3439 9, 0x2071, 0x0069, 0,
3440 9, 0x2074, 0x0034, 0,
3441 9, 0x2075, 0x0035, 0,
3442 9, 0x2076, 0x0036, 0,
3443 9, 0x2077, 0x0037, 0,
3444 9, 0x2078, 0x0038, 0,
3445 9, 0x2079, 0x0039, 0,
3446 9, 0x207A, 0x002B, 0,
3447 9, 0x207B, 0x2212, 0,
3448 9, 0x207C, 0x003D, 0,
3449 9, 0x207D, 0x0028, 0,
3450 9, 0x207E, 0x0029, 0,
3451 9, 0x207F, 0x006E, 0,
3452 10, 0x2080, 0x0030, 0,
3453 10, 0x2081, 0x0031, 0,
3454 10, 0x2082, 0x0032, 0,
3455 10, 0x2083, 0x0033, 0,
3456 10, 0x2084, 0x0034, 0,
3457 10, 0x2085, 0x0035, 0,
3458 10, 0x2086, 0x0036, 0,
3459 10, 0x2087, 0x0037, 0,
3460 10, 0x2088, 0x0038, 0,
3461 10, 0x2089, 0x0039, 0,
3462 10, 0x208A, 0x002B, 0,
3463 10, 0x208B, 0x2212, 0,
3464 10, 0x208C, 0x003D, 0,
3465 10, 0x208D, 0x0028, 0,
3466 10, 0x208E, 0x0029, 0,
3467 16, 0x20A8, 0x0052, 0x0073, 0,
3468 16, 0x2100, 0x0061, 0x002F, 0x0063, 0,
3469 16, 0x2101, 0x0061, 0x002F, 0x0073, 0,
3470 2, 0x2102, 0x0043, 0,
3471 16, 0x2103, 0x00B0, 0x0043, 0,
3472 16, 0x2105, 0x0063, 0x002F, 0x006F, 0,
3473 16, 0x2106, 0x0063, 0x002F, 0x0075, 0,
3474 16, 0x2107, 0x0190, 0,
3475 16, 0x2109, 0x00B0, 0x0046, 0,
3476 2, 0x210A, 0x0067, 0,
3477 2, 0x210B, 0x0048, 0,
3478 2, 0x210C, 0x0048, 0,
3479 2, 0x210D, 0x0048, 0,
3480 2, 0x210E, 0x0068, 0,
3481 2, 0x210F, 0x0127, 0,
3482 2, 0x2110, 0x0049, 0,
3483 2, 0x2111, 0x0049, 0,
3484 2, 0x2112, 0x004C, 0,
3485 2, 0x2113, 0x006C, 0,
3486 2, 0x2115, 0x004E, 0,
3487 16, 0x2116, 0x004E, 0x006F, 0,
3488 2, 0x2119, 0x0050, 0,
3489 2, 0x211A, 0x0051, 0,
3490 2, 0x211B, 0x0052, 0,
3491 2, 0x211C, 0x0052, 0,
3492 2, 0x211D, 0x0052, 0,
3493 9, 0x2120, 0x0053, 0x004D, 0,
3494 16, 0x2121, 0x0054, 0x0045, 0x004C, 0,
3495 9, 0x2122, 0x0054, 0x004D, 0,
3496 2, 0x2124, 0x005A, 0,
3497 1, 0x2126, 0x03A9, 0,
3498 2, 0x2128, 0x005A, 0,
3499 1, 0x212A, 0x004B, 0,
3500 1, 0x212B, 0x00C5, 0,
3501 2, 0x212C, 0x0042, 0,
3502 2, 0x212D, 0x0043, 0,
3503 2, 0x212F, 0x0065, 0,
3504 2, 0x2130, 0x0045, 0,
3505 2, 0x2131, 0x0046, 0,
3506 2, 0x2133, 0x004D, 0,
3507 2, 0x2134, 0x006F, 0,
3508 16, 0x2135, 0x05D0, 0,
3509 16, 0x2136, 0x05D1, 0,
3510 16, 0x2137, 0x05D2, 0,
3511 16, 0x2138, 0x05D3, 0,
3512 2, 0x2139, 0x0069, 0,
3513 2, 0x213D, 0x03B3, 0,
3514 2, 0x213E, 0x0393, 0,
3515 2, 0x213F, 0x03A0, 0,
3516 2, 0x2140, 0x2211, 0,
3517 2, 0x2145, 0x0044, 0,
3518 2, 0x2146, 0x0064, 0,
3519 2, 0x2147, 0x0065, 0,
3520 2, 0x2148, 0x0069, 0,
3521 2, 0x2149, 0x006A, 0,
3522 17, 0x2153, 0x0031, 0x2044, 0x0033, 0,
3523 17, 0x2154, 0x0032, 0x2044, 0x0033, 0,
3524 17, 0x2155, 0x0031, 0x2044, 0x0035, 0,
3525 17, 0x2156, 0x0032, 0x2044, 0x0035, 0,
3526 17, 0x2157, 0x0033, 0x2044, 0x0035, 0,
3527 17, 0x2158, 0x0034, 0x2044, 0x0035, 0,
3528 17, 0x2159, 0x0031, 0x2044, 0x0036, 0,
3529 17, 0x215A, 0x0035, 0x2044, 0x0036, 0,
3530 17, 0x215B, 0x0031, 0x2044, 0x0038, 0,
3531 17, 0x215C, 0x0033, 0x2044, 0x0038, 0,
3532 17, 0x215D, 0x0035, 0x2044, 0x0038, 0,
3533 17, 0x215E, 0x0037, 0x2044, 0x0038, 0,
3534 17, 0x215F, 0x0031, 0x2044, 0,
3535 16, 0x2160, 0x0049, 0,
3536 16, 0x2161, 0x0049, 0x0049, 0,
3537 16, 0x2162, 0x0049, 0x0049, 0x0049, 0,
3538 16, 0x2163, 0x0049, 0x0056, 0,
3539 16, 0x2164, 0x0056, 0,
3540 16, 0x2165, 0x0056, 0x0049, 0,
3541 16, 0x2166, 0x0056, 0x0049, 0x0049, 0,
3542 16, 0x2167, 0x0056, 0x0049, 0x0049, 0x0049, 0,
3543 16, 0x2168, 0x0049, 0x0058, 0,
3544 16, 0x2169, 0x0058, 0,
3545 16, 0x216A, 0x0058, 0x0049, 0,
3546 16, 0x216B, 0x0058, 0x0049, 0x0049, 0,
3547 16, 0x216C, 0x004C, 0,
3548 16, 0x216D, 0x0043, 0,
3549 16, 0x216E, 0x0044, 0,
3550 16, 0x216F, 0x004D, 0,
3551 16, 0x2170, 0x0069, 0,
3552 16, 0x2171, 0x0069, 0x0069, 0,
3553 16, 0x2172, 0x0069, 0x0069, 0x0069, 0,
3554 16, 0x2173, 0x0069, 0x0076, 0,
3555 16, 0x2174, 0x0076, 0,
3556 16, 0x2175, 0x0076, 0x0069, 0,
3557 16, 0x2176, 0x0076, 0x0069, 0x0069, 0,
3558 16, 0x2177, 0x0076, 0x0069, 0x0069, 0x0069, 0,
3559 16, 0x2178, 0x0069, 0x0078, 0,
3560 16, 0x2179, 0x0078, 0,
3561 16, 0x217A, 0x0078, 0x0069, 0,
3562 16, 0x217B, 0x0078, 0x0069, 0x0069, 0,
3563 16, 0x217C, 0x006C, 0,
3564 16, 0x217D, 0x0063, 0,
3565 16, 0x217E, 0x0064, 0,
3566 16, 0x217F, 0x006D, 0,
3567 1, 0x219A, 0x2190, 0x0338, 0,
3568 1, 0x219B, 0x2192, 0x0338, 0,
3569 1, 0x21AE, 0x2194, 0x0338, 0,
3570 1, 0x21CD, 0x21D0, 0x0338, 0,
3571 1, 0x21CE, 0x21D4, 0x0338, 0,
3572 1, 0x21CF, 0x21D2, 0x0338, 0,
3573 1, 0x2204, 0x2203, 0x0338, 0,
3574 1, 0x2209, 0x2208, 0x0338, 0,
3575 1, 0x220C, 0x220B, 0x0338, 0,
3576 1, 0x2224, 0x2223, 0x0338, 0,
3577 1, 0x2226, 0x2225, 0x0338, 0,
3578 16, 0x222C, 0x222B, 0x222B, 0,
3579 16, 0x222D, 0x222B, 0x222B, 0x222B, 0,
3580 16, 0x222F, 0x222E, 0x222E, 0,
3581 16, 0x2230, 0x222E, 0x222E, 0x222E, 0,
3582 1, 0x2241, 0x223C, 0x0338, 0,
3583 1, 0x2244, 0x2243, 0x0338, 0,
3584 1, 0x2247, 0x2245, 0x0338, 0,
3585 1, 0x2249, 0x2248, 0x0338, 0,
3586 1, 0x2260, 0x003D, 0x0338, 0,
3587 1, 0x2262, 0x2261, 0x0338, 0,
3588 1, 0x226D, 0x224D, 0x0338, 0,
3589 1, 0x226E, 0x003C, 0x0338, 0,
3590 1, 0x226F, 0x003E, 0x0338, 0,
3591 1, 0x2270, 0x2264, 0x0338, 0,
3592 1, 0x2271, 0x2265, 0x0338, 0,
3593 1, 0x2274, 0x2272, 0x0338, 0,
3594 1, 0x2275, 0x2273, 0x0338, 0,
3595 1, 0x2278, 0x2276, 0x0338, 0,
3596 1, 0x2279, 0x2277, 0x0338, 0,
3597 1, 0x2280, 0x227A, 0x0338, 0,
3598 1, 0x2281, 0x227B, 0x0338, 0,
3599 1, 0x2284, 0x2282, 0x0338, 0,
3600 1, 0x2285, 0x2283, 0x0338, 0,
3601 1, 0x2288, 0x2286, 0x0338, 0,
3602 1, 0x2289, 0x2287, 0x0338, 0,
3603 1, 0x22AC, 0x22A2, 0x0338, 0,
3604 1, 0x22AD, 0x22A8, 0x0338, 0,
3605 1, 0x22AE, 0x22A9, 0x0338, 0,
3606 1, 0x22AF, 0x22AB, 0x0338, 0,
3607 1, 0x22E0, 0x227C, 0x0338, 0,
3608 1, 0x22E1, 0x227D, 0x0338, 0,
3609 1, 0x22E2, 0x2291, 0x0338, 0,
3610 1, 0x22E3, 0x2292, 0x0338, 0,
3611 1, 0x22EA, 0x22B2, 0x0338, 0,
3612 1, 0x22EB, 0x22B3, 0x0338, 0,
3613 1, 0x22EC, 0x22B4, 0x0338, 0,
3614 1, 0x22ED, 0x22B5, 0x0338, 0,
3615 1, 0x2329, 0x3008, 0,
3616 1, 0x232A, 0x3009, 0,
3617 8, 0x2460, 0x0031, 0,
3618 8, 0x2461, 0x0032, 0,
3619 8, 0x2462, 0x0033, 0,
3620 8, 0x2463, 0x0034, 0,
3621 8, 0x2464, 0x0035, 0,
3622 8, 0x2465, 0x0036, 0,
3623 8, 0x2466, 0x0037, 0,
3624 8, 0x2467, 0x0038, 0,
3625 8, 0x2468, 0x0039, 0,
3626 8, 0x2469, 0x0031, 0x0030, 0,
3627 8, 0x246A, 0x0031, 0x0031, 0,
3628 8, 0x246B, 0x0031, 0x0032, 0,
3629 8, 0x246C, 0x0031, 0x0033, 0,
3630 8, 0x246D, 0x0031, 0x0034, 0,
3631 8, 0x246E, 0x0031, 0x0035, 0,
3632 8, 0x246F, 0x0031, 0x0036, 0,
3633 8, 0x2470, 0x0031, 0x0037, 0,
3634 8, 0x2471, 0x0031, 0x0038, 0,
3635 8, 0x2472, 0x0031, 0x0039, 0,
3636 8, 0x2473, 0x0032, 0x0030, 0,
3637 16, 0x2474, 0x0028, 0x0031, 0x0029, 0,
3638 16, 0x2475, 0x0028, 0x0032, 0x0029, 0,
3639 16, 0x2476, 0x0028, 0x0033, 0x0029, 0,
3640 16, 0x2477, 0x0028, 0x0034, 0x0029, 0,
3641 16, 0x2478, 0x0028, 0x0035, 0x0029, 0,
3642 16, 0x2479, 0x0028, 0x0036, 0x0029, 0,
3643 16, 0x247A, 0x0028, 0x0037, 0x0029, 0,
3644 16, 0x247B, 0x0028, 0x0038, 0x0029, 0,
3645 16, 0x247C, 0x0028, 0x0039, 0x0029, 0,
3646 16, 0x247D, 0x0028, 0x0031, 0x0030, 0x0029, 0,
3647 16, 0x247E, 0x0028, 0x0031, 0x0031, 0x0029, 0,
3648 16, 0x247F, 0x0028, 0x0031, 0x0032, 0x0029, 0,
3649 16, 0x2480, 0x0028, 0x0031, 0x0033, 0x0029, 0,
3650 16, 0x2481, 0x0028, 0x0031, 0x0034, 0x0029, 0,
3651 16, 0x2482, 0x0028, 0x0031, 0x0035, 0x0029, 0,
3652 16, 0x2483, 0x0028, 0x0031, 0x0036, 0x0029, 0,
3653 16, 0x2484, 0x0028, 0x0031, 0x0037, 0x0029, 0,
3654 16, 0x2485, 0x0028, 0x0031, 0x0038, 0x0029, 0,
3655 16, 0x2486, 0x0028, 0x0031, 0x0039, 0x0029, 0,
3656 16, 0x2487, 0x0028, 0x0032, 0x0030, 0x0029, 0,
3657 16, 0x2488, 0x0031, 0x002E, 0,
3658 16, 0x2489, 0x0032, 0x002E, 0,
3659 16, 0x248A, 0x0033, 0x002E, 0,
3660 16, 0x248B, 0x0034, 0x002E, 0,
3661 16, 0x248C, 0x0035, 0x002E, 0,
3662 16, 0x248D, 0x0036, 0x002E, 0,
3663 16, 0x248E, 0x0037, 0x002E, 0,
3664 16, 0x248F, 0x0038, 0x002E, 0,
3665 16, 0x2490, 0x0039, 0x002E, 0,
3666 16, 0x2491, 0x0031, 0x0030, 0x002E, 0,
3667 16, 0x2492, 0x0031, 0x0031, 0x002E, 0,
3668 16, 0x2493, 0x0031, 0x0032, 0x002E, 0,
3669 16, 0x2494, 0x0031, 0x0033, 0x002E, 0,
3670 16, 0x2495, 0x0031, 0x0034, 0x002E, 0,
3671 16, 0x2496, 0x0031, 0x0035, 0x002E, 0,
3672 16, 0x2497, 0x0031, 0x0036, 0x002E, 0,
3673 16, 0x2498, 0x0031, 0x0037, 0x002E, 0,
3674 16, 0x2499, 0x0031, 0x0038, 0x002E, 0,
3675 16, 0x249A, 0x0031, 0x0039, 0x002E, 0,
3676 16, 0x249B, 0x0032, 0x0030, 0x002E, 0,
3677 16, 0x249C, 0x0028, 0x0061, 0x0029, 0,
3678 16, 0x249D, 0x0028, 0x0062, 0x0029, 0,
3679 16, 0x249E, 0x0028, 0x0063, 0x0029, 0,
3680 16, 0x249F, 0x0028, 0x0064, 0x0029, 0,
3681 16, 0x24A0, 0x0028, 0x0065, 0x0029, 0,
3682 16, 0x24A1, 0x0028, 0x0066, 0x0029, 0,
3683 16, 0x24A2, 0x0028, 0x0067, 0x0029, 0,
3684 16, 0x24A3, 0x0028, 0x0068, 0x0029, 0,
3685 16, 0x24A4, 0x0028, 0x0069, 0x0029, 0,
3686 16, 0x24A5, 0x0028, 0x006A, 0x0029, 0,
3687 16, 0x24A6, 0x0028, 0x006B, 0x0029, 0,
3688 16, 0x24A7, 0x0028, 0x006C, 0x0029, 0,
3689 16, 0x24A8, 0x0028, 0x006D, 0x0029, 0,
3690 16, 0x24A9, 0x0028, 0x006E, 0x0029, 0,
3691 16, 0x24AA, 0x0028, 0x006F, 0x0029, 0,
3692 16, 0x24AB, 0x0028, 0x0070, 0x0029, 0,
3693 16, 0x24AC, 0x0028, 0x0071, 0x0029, 0,
3694 16, 0x24AD, 0x0028, 0x0072, 0x0029, 0,
3695 16, 0x24AE, 0x0028, 0x0073, 0x0029, 0,
3696 16, 0x24AF, 0x0028, 0x0074, 0x0029, 0,
3697 16, 0x24B0, 0x0028, 0x0075, 0x0029, 0,
3698 16, 0x24B1, 0x0028, 0x0076, 0x0029, 0,
3699 16, 0x24B2, 0x0028, 0x0077, 0x0029, 0,
3700 16, 0x24B3, 0x0028, 0x0078, 0x0029, 0,
3701 16, 0x24B4, 0x0028, 0x0079, 0x0029, 0,
3702 16, 0x24B5, 0x0028, 0x007A, 0x0029, 0,
3703 8, 0x24B6, 0x0041, 0,
3704 8, 0x24B7, 0x0042, 0,
3705 8, 0x24B8, 0x0043, 0,
3706 8, 0x24B9, 0x0044, 0,
3707 8, 0x24BA, 0x0045, 0,
3708 8, 0x24BB, 0x0046, 0,
3709 8, 0x24BC, 0x0047, 0,
3710 8, 0x24BD, 0x0048, 0,
3711 8, 0x24BE, 0x0049, 0,
3712 8, 0x24BF, 0x004A, 0,
3713 8, 0x24C0, 0x004B, 0,
3714 8, 0x24C1, 0x004C, 0,
3715 8, 0x24C2, 0x004D, 0,
3716 8, 0x24C3, 0x004E, 0,
3717 8, 0x24C4, 0x004F, 0,
3718 8, 0x24C5, 0x0050, 0,
3719 8, 0x24C6, 0x0051, 0,
3720 8, 0x24C7, 0x0052, 0,
3721 8, 0x24C8, 0x0053, 0,
3722 8, 0x24C9, 0x0054, 0,
3723 8, 0x24CA, 0x0055, 0,
3724 8, 0x24CB, 0x0056, 0,
3725 8, 0x24CC, 0x0057, 0,
3726 8, 0x24CD, 0x0058, 0,
3727 8, 0x24CE, 0x0059, 0,
3728 8, 0x24CF, 0x005A, 0,
3729 8, 0x24D0, 0x0061, 0,
3730 8, 0x24D1, 0x0062, 0,
3731 8, 0x24D2, 0x0063, 0,
3732 8, 0x24D3, 0x0064, 0,
3733 8, 0x24D4, 0x0065, 0,
3734 8, 0x24D5, 0x0066, 0,
3735 8, 0x24D6, 0x0067, 0,
3736 8, 0x24D7, 0x0068, 0,
3737 8, 0x24D8, 0x0069, 0,
3738 8, 0x24D9, 0x006A, 0,
3739 8, 0x24DA, 0x006B, 0,
3740 8, 0x24DB, 0x006C, 0,
3741 8, 0x24DC, 0x006D, 0,
3742 8, 0x24DD, 0x006E, 0,
3743 8, 0x24DE, 0x006F, 0,
3744 8, 0x24DF, 0x0070, 0,
3745 8, 0x24E0, 0x0071, 0,
3746 8, 0x24E1, 0x0072, 0,
3747 8, 0x24E2, 0x0073, 0,
3748 8, 0x24E3, 0x0074, 0,
3749 8, 0x24E4, 0x0075, 0,
3750 8, 0x24E5, 0x0076, 0,
3751 8, 0x24E6, 0x0077, 0,
3752 8, 0x24E7, 0x0078, 0,
3753 8, 0x24E8, 0x0079, 0,
3754 8, 0x24E9, 0x007A, 0,
3755 8, 0x24EA, 0x0030, 0,
3756 16, 0x2A0C, 0x222B, 0x222B, 0x222B, 0x222B, 0,
3757 16, 0x2A74, 0x003A, 0x003A, 0x003D, 0,
3758 16, 0x2A75, 0x003D, 0x003D, 0,
3759 16, 0x2A76, 0x003D, 0x003D, 0x003D, 0,
3760 1, 0x2ADC, 0x2ADD, 0x0338, 0,
3761 16, 0x2E9F, 0x6BCD, 0,
3762 16, 0x2EF3, 0x9F9F, 0,
3763 16, 0x2F00, 0x4E00, 0,
3764 16, 0x2F01, 0x4E28, 0,
3765 16, 0x2F02, 0x4E36, 0,
3766 16, 0x2F03, 0x4E3F, 0,
3767 16, 0x2F04, 0x4E59, 0,
3768 16, 0x2F05, 0x4E85, 0,
3769 16, 0x2F06, 0x4E8C, 0,
3770 16, 0x2F07, 0x4EA0, 0,
3771 16, 0x2F08, 0x4EBA, 0,
3772 16, 0x2F09, 0x513F, 0,
3773 16, 0x2F0A, 0x5165, 0,
3774 16, 0x2F0B, 0x516B, 0,
3775 16, 0x2F0C, 0x5182, 0,
3776 16, 0x2F0D, 0x5196, 0,
3777 16, 0x2F0E, 0x51AB, 0,
3778 16, 0x2F0F, 0x51E0, 0,
3779 16, 0x2F10, 0x51F5, 0,
3780 16, 0x2F11, 0x5200, 0,
3781 16, 0x2F12, 0x529B, 0,
3782 16, 0x2F13, 0x52F9, 0,
3783 16, 0x2F14, 0x5315, 0,
3784 16, 0x2F15, 0x531A, 0,
3785 16, 0x2F16, 0x5338, 0,
3786 16, 0x2F17, 0x5341, 0,
3787 16, 0x2F18, 0x535C, 0,
3788 16, 0x2F19, 0x5369, 0,
3789 16, 0x2F1A, 0x5382, 0,
3790 16, 0x2F1B, 0x53B6, 0,
3791 16, 0x2F1C, 0x53C8, 0,
3792 16, 0x2F1D, 0x53E3, 0,
3793 16, 0x2F1E, 0x56D7, 0,
3794 16, 0x2F1F, 0x571F, 0,
3795 16, 0x2F20, 0x58EB, 0,
3796 16, 0x2F21, 0x5902, 0,
3797 16, 0x2F22, 0x590A, 0,
3798 16, 0x2F23, 0x5915, 0,
3799 16, 0x2F24, 0x5927, 0,
3800 16, 0x2F25, 0x5973, 0,
3801 16, 0x2F26, 0x5B50, 0,
3802 16, 0x2F27, 0x5B80, 0,
3803 16, 0x2F28, 0x5BF8, 0,
3804 16, 0x2F29, 0x5C0F, 0,
3805 16, 0x2F2A, 0x5C22, 0,
3806 16, 0x2F2B, 0x5C38, 0,
3807 16, 0x2F2C, 0x5C6E, 0,
3808 16, 0x2F2D, 0x5C71, 0,
3809 16, 0x2F2E, 0x5DDB, 0,
3810 16, 0x2F2F, 0x5DE5, 0,
3811 16, 0x2F30, 0x5DF1, 0,
3812 16, 0x2F31, 0x5DFE, 0,
3813 16, 0x2F32, 0x5E72, 0,
3814 16, 0x2F33, 0x5E7A, 0,
3815 16, 0x2F34, 0x5E7F, 0,
3816 16, 0x2F35, 0x5EF4, 0,
3817 16, 0x2F36, 0x5EFE, 0,
3818 16, 0x2F37, 0x5F0B, 0,
3819 16, 0x2F38, 0x5F13, 0,
3820 16, 0x2F39, 0x5F50, 0,
3821 16, 0x2F3A, 0x5F61, 0,
3822 16, 0x2F3B, 0x5F73, 0,
3823 16, 0x2F3C, 0x5FC3, 0,
3824 16, 0x2F3D, 0x6208, 0,
3825 16, 0x2F3E, 0x6236, 0,
3826 16, 0x2F3F, 0x624B, 0,
3827 16, 0x2F40, 0x652F, 0,
3828 16, 0x2F41, 0x6534, 0,
3829 16, 0x2F42, 0x6587, 0,
3830 16, 0x2F43, 0x6597, 0,
3831 16, 0x2F44, 0x65A4, 0,
3832 16, 0x2F45, 0x65B9, 0,
3833 16, 0x2F46, 0x65E0, 0,
3834 16, 0x2F47, 0x65E5, 0,
3835 16, 0x2F48, 0x66F0, 0,
3836 16, 0x2F49, 0x6708, 0,
3837 16, 0x2F4A, 0x6728, 0,
3838 16, 0x2F4B, 0x6B20, 0,
3839 16, 0x2F4C, 0x6B62, 0,
3840 16, 0x2F4D, 0x6B79, 0,
3841 16, 0x2F4E, 0x6BB3, 0,
3842 16, 0x2F4F, 0x6BCB, 0,
3843 16, 0x2F50, 0x6BD4, 0,
3844 16, 0x2F51, 0x6BDB, 0,
3845 16, 0x2F52, 0x6C0F, 0,
3846 16, 0x2F53, 0x6C14, 0,
3847 16, 0x2F54, 0x6C34, 0,
3848 16, 0x2F55, 0x706B, 0,
3849 16, 0x2F56, 0x722A, 0,
3850 16, 0x2F57, 0x7236, 0,
3851 16, 0x2F58, 0x723B, 0,
3852 16, 0x2F59, 0x723F, 0,
3853 16, 0x2F5A, 0x7247, 0,
3854 16, 0x2F5B, 0x7259, 0,
3855 16, 0x2F5C, 0x725B, 0,
3856 16, 0x2F5D, 0x72AC, 0,
3857 16, 0x2F5E, 0x7384, 0,
3858 16, 0x2F5F, 0x7389, 0,
3859 16, 0x2F60, 0x74DC, 0,
3860 16, 0x2F61, 0x74E6, 0,
3861 16, 0x2F62, 0x7518, 0,
3862 16, 0x2F63, 0x751F, 0,
3863 16, 0x2F64, 0x7528, 0,
3864 16, 0x2F65, 0x7530, 0,
3865 16, 0x2F66, 0x758B, 0,
3866 16, 0x2F67, 0x7592, 0,
3867 16, 0x2F68, 0x7676, 0,
3868 16, 0x2F69, 0x767D, 0,
3869 16, 0x2F6A, 0x76AE, 0,
3870 16, 0x2F6B, 0x76BF, 0,
3871 16, 0x2F6C, 0x76EE, 0,
3872 16, 0x2F6D, 0x77DB, 0,
3873 16, 0x2F6E, 0x77E2, 0,
3874 16, 0x2F6F, 0x77F3, 0,
3875 16, 0x2F70, 0x793A, 0,
3876 16, 0x2F71, 0x79B8, 0,
3877 16, 0x2F72, 0x79BE, 0,
3878 16, 0x2F73, 0x7A74, 0,
3879 16, 0x2F74, 0x7ACB, 0,
3880 16, 0x2F75, 0x7AF9, 0,
3881 16, 0x2F76, 0x7C73, 0,
3882 16, 0x2F77, 0x7CF8, 0,
3883 16, 0x2F78, 0x7F36, 0,
3884 16, 0x2F79, 0x7F51, 0,
3885 16, 0x2F7A, 0x7F8A, 0,
3886 16, 0x2F7B, 0x7FBD, 0,
3887 16, 0x2F7C, 0x8001, 0,
3888 16, 0x2F7D, 0x800C, 0,
3889 16, 0x2F7E, 0x8012, 0,
3890 16, 0x2F7F, 0x8033, 0,
3891 16, 0x2F80, 0x807F, 0,
3892 16, 0x2F81, 0x8089, 0,
3893 16, 0x2F82, 0x81E3, 0,
3894 16, 0x2F83, 0x81EA, 0,
3895 16, 0x2F84, 0x81F3, 0,
3896 16, 0x2F85, 0x81FC, 0,
3897 16, 0x2F86, 0x820C, 0,
3898 16, 0x2F87, 0x821B, 0,
3899 16, 0x2F88, 0x821F, 0,
3900 16, 0x2F89, 0x826E, 0,
3901 16, 0x2F8A, 0x8272, 0,
3902 16, 0x2F8B, 0x8278, 0,
3903 16, 0x2F8C, 0x864D, 0,
3904 16, 0x2F8D, 0x866B, 0,
3905 16, 0x2F8E, 0x8840, 0,
3906 16, 0x2F8F, 0x884C, 0,
3907 16, 0x2F90, 0x8863, 0,
3908 16, 0x2F91, 0x897E, 0,
3909 16, 0x2F92, 0x898B, 0,
3910 16, 0x2F93, 0x89D2, 0,
3911 16, 0x2F94, 0x8A00, 0,
3912 16, 0x2F95, 0x8C37, 0,
3913 16, 0x2F96, 0x8C46, 0,
3914 16, 0x2F97, 0x8C55, 0,
3915 16, 0x2F98, 0x8C78, 0,
3916 16, 0x2F99, 0x8C9D, 0,
3917 16, 0x2F9A, 0x8D64, 0,
3918 16, 0x2F9B, 0x8D70, 0,
3919 16, 0x2F9C, 0x8DB3, 0,
3920 16, 0x2F9D, 0x8EAB, 0,
3921 16, 0x2F9E, 0x8ECA, 0,
3922 16, 0x2F9F, 0x8F9B, 0,
3923 16, 0x2FA0, 0x8FB0, 0,
3924 16, 0x2FA1, 0x8FB5, 0,
3925 16, 0x2FA2, 0x9091, 0,
3926 16, 0x2FA3, 0x9149, 0,
3927 16, 0x2FA4, 0x91C6, 0,
3928 16, 0x2FA5, 0x91CC, 0,
3929 16, 0x2FA6, 0x91D1, 0,
3930 16, 0x2FA7, 0x9577, 0,
3931 16, 0x2FA8, 0x9580, 0,
3932 16, 0x2FA9, 0x961C, 0,
3933 16, 0x2FAA, 0x96B6, 0,
3934 16, 0x2FAB, 0x96B9, 0,
3935 16, 0x2FAC, 0x96E8, 0,
3936 16, 0x2FAD, 0x9751, 0,
3937 16, 0x2FAE, 0x975E, 0,
3938 16, 0x2FAF, 0x9762, 0,
3939 16, 0x2FB0, 0x9769, 0,
3940 16, 0x2FB1, 0x97CB, 0,
3941 16, 0x2FB2, 0x97ED, 0,
3942 16, 0x2FB3, 0x97F3, 0,
3943 16, 0x2FB4, 0x9801, 0,
3944 16, 0x2FB5, 0x98A8, 0,
3945 16, 0x2FB6, 0x98DB, 0,
3946 16, 0x2FB7, 0x98DF, 0,
3947 16, 0x2FB8, 0x9996, 0,
3948 16, 0x2FB9, 0x9999, 0,
3949 16, 0x2FBA, 0x99AC, 0,
3950 16, 0x2FBB, 0x9AA8, 0,
3951 16, 0x2FBC, 0x9AD8, 0,
3952 16, 0x2FBD, 0x9ADF, 0,
3953 16, 0x2FBE, 0x9B25, 0,
3954 16, 0x2FBF, 0x9B2F, 0,
3955 16, 0x2FC0, 0x9B32, 0,
3956 16, 0x2FC1, 0x9B3C, 0,
3957 16, 0x2FC2, 0x9B5A, 0,
3958 16, 0x2FC3, 0x9CE5, 0,
3959 16, 0x2FC4, 0x9E75, 0,
3960 16, 0x2FC5, 0x9E7F, 0,
3961 16, 0x2FC6, 0x9EA5, 0,
3962 16, 0x2FC7, 0x9EBB, 0,
3963 16, 0x2FC8, 0x9EC3, 0,
3964 16, 0x2FC9, 0x9ECD, 0,
3965 16, 0x2FCA, 0x9ED1, 0,
3966 16, 0x2FCB, 0x9EF9, 0,
3967 16, 0x2FCC, 0x9EFD, 0,
3968 16, 0x2FCD, 0x9F0E, 0,
3969 16, 0x2FCE, 0x9F13, 0,
3970 16, 0x2FCF, 0x9F20, 0,
3971 16, 0x2FD0, 0x9F3B, 0,
3972 16, 0x2FD1, 0x9F4A, 0,
3973 16, 0x2FD2, 0x9F52, 0,
3974 16, 0x2FD3, 0x9F8D, 0,
3975 16, 0x2FD4, 0x9F9C, 0,
3976 16, 0x2FD5, 0x9FA0, 0,
3977 12, 0x3000, 0x0020, 0,
3978 16, 0x3036, 0x3012, 0,
3979 16, 0x3038, 0x5341, 0,
3980 16, 0x3039, 0x5344, 0,
3981 16, 0x303A, 0x5345, 0,
3982 1, 0x304C, 0x304B, 0x3099, 0,
3983 1, 0x304E, 0x304D, 0x3099, 0,
3984 1, 0x3050, 0x304F, 0x3099, 0,
3985 1, 0x3052, 0x3051, 0x3099, 0,
3986 1, 0x3054, 0x3053, 0x3099, 0,
3987 1, 0x3056, 0x3055, 0x3099, 0,
3988 1, 0x3058, 0x3057, 0x3099, 0,
3989 1, 0x305A, 0x3059, 0x3099, 0,
3990 1, 0x305C, 0x305B, 0x3099, 0,
3991 1, 0x305E, 0x305D, 0x3099, 0,
3992 1, 0x3060, 0x305F, 0x3099, 0,
3993 1, 0x3062, 0x3061, 0x3099, 0,
3994 1, 0x3065, 0x3064, 0x3099, 0,
3995 1, 0x3067, 0x3066, 0x3099, 0,
3996 1, 0x3069, 0x3068, 0x3099, 0,
3997 1, 0x3070, 0x306F, 0x3099, 0,
3998 1, 0x3071, 0x306F, 0x309A, 0,
3999 1, 0x3073, 0x3072, 0x3099, 0,
4000 1, 0x3074, 0x3072, 0x309A, 0,
4001 1, 0x3076, 0x3075, 0x3099, 0,
4002 1, 0x3077, 0x3075, 0x309A, 0,
4003 1, 0x3079, 0x3078, 0x3099, 0,
4004 1, 0x307A, 0x3078, 0x309A, 0,
4005 1, 0x307C, 0x307B, 0x3099, 0,
4006 1, 0x307D, 0x307B, 0x309A, 0,
4007 1, 0x3094, 0x3046, 0x3099, 0,
4008 16, 0x309B, 0x0020, 0x3099, 0,
4009 16, 0x309C, 0x0020, 0x309A, 0,
4010 1, 0x309E, 0x309D, 0x3099, 0,
4011 11, 0x309F, 0x3088, 0x308A, 0,
4012 1, 0x30AC, 0x30AB, 0x3099, 0,
4013 1, 0x30AE, 0x30AD, 0x3099, 0,
4014 1, 0x30B0, 0x30AF, 0x3099, 0,
4015 1, 0x30B2, 0x30B1, 0x3099, 0,
4016 1, 0x30B4, 0x30B3, 0x3099, 0,
4017 1, 0x30B6, 0x30B5, 0x3099, 0,
4018 1, 0x30B8, 0x30B7, 0x3099, 0,
4019 1, 0x30BA, 0x30B9, 0x3099, 0,
4020 1, 0x30BC, 0x30BB, 0x3099, 0,
4021 1, 0x30BE, 0x30BD, 0x3099, 0,
4022 1, 0x30C0, 0x30BF, 0x3099, 0,
4023 1, 0x30C2, 0x30C1, 0x3099, 0,
4024 1, 0x30C5, 0x30C4, 0x3099, 0,
4025 1, 0x30C7, 0x30C6, 0x3099, 0,
4026 1, 0x30C9, 0x30C8, 0x3099, 0,
4027 1, 0x30D0, 0x30CF, 0x3099, 0,
4028 1, 0x30D1, 0x30CF, 0x309A, 0,
4029 1, 0x30D3, 0x30D2, 0x3099, 0,
4030 1, 0x30D4, 0x30D2, 0x309A, 0,
4031 1, 0x30D6, 0x30D5, 0x3099, 0,
4032 1, 0x30D7, 0x30D5, 0x309A, 0,
4033 1, 0x30D9, 0x30D8, 0x3099, 0,
4034 1, 0x30DA, 0x30D8, 0x309A, 0,
4035 1, 0x30DC, 0x30DB, 0x3099, 0,
4036 1, 0x30DD, 0x30DB, 0x309A, 0,
4037 1, 0x30F4, 0x30A6, 0x3099, 0,
4038 1, 0x30F7, 0x30EF, 0x3099, 0,
4039 1, 0x30F8, 0x30F0, 0x3099, 0,
4040 1, 0x30F9, 0x30F1, 0x3099, 0,
4041 1, 0x30FA, 0x30F2, 0x3099, 0,
4042 1, 0x30FE, 0x30FD, 0x3099, 0,
4043 11, 0x30FF, 0x30B3, 0x30C8, 0,
4044 16, 0x3131, 0x1100, 0,
4045 16, 0x3132, 0x1101, 0,
4046 16, 0x3133, 0x11AA, 0,
4047 16, 0x3134, 0x1102, 0,
4048 16, 0x3135, 0x11AC, 0,
4049 16, 0x3136, 0x11AD, 0,
4050 16, 0x3137, 0x1103, 0,
4051 16, 0x3138, 0x1104, 0,
4052 16, 0x3139, 0x1105, 0,
4053 16, 0x313A, 0x11B0, 0,
4054 16, 0x313B, 0x11B1, 0,
4055 16, 0x313C, 0x11B2, 0,
4056 16, 0x313D, 0x11B3, 0,
4057 16, 0x313E, 0x11B4, 0,
4058 16, 0x313F, 0x11B5, 0,
4059 16, 0x3140, 0x111A, 0,
4060 16, 0x3141, 0x1106, 0,
4061 16, 0x3142, 0x1107, 0,
4062 16, 0x3143, 0x1108, 0,
4063 16, 0x3144, 0x1121, 0,
4064 16, 0x3145, 0x1109, 0,
4065 16, 0x3146, 0x110A, 0,
4066 16, 0x3147, 0x110B, 0,
4067 16, 0x3148, 0x110C, 0,
4068 16, 0x3149, 0x110D, 0,
4069 16, 0x314A, 0x110E, 0,
4070 16, 0x314B, 0x110F, 0,
4071 16, 0x314C, 0x1110, 0,
4072 16, 0x314D, 0x1111, 0,
4073 16, 0x314E, 0x1112, 0,
4074 16, 0x314F, 0x1161, 0,
4075 16, 0x3150, 0x1162, 0,
4076 16, 0x3151, 0x1163, 0,
4077 16, 0x3152, 0x1164, 0,
4078 16, 0x3153, 0x1165, 0,
4079 16, 0x3154, 0x1166, 0,
4080 16, 0x3155, 0x1167, 0,
4081 16, 0x3156, 0x1168, 0,
4082 16, 0x3157, 0x1169, 0,
4083 16, 0x3158, 0x116A, 0,
4084 16, 0x3159, 0x116B, 0,
4085 16, 0x315A, 0x116C, 0,
4086 16, 0x315B, 0x116D, 0,
4087 16, 0x315C, 0x116E, 0,
4088 16, 0x315D, 0x116F, 0,
4089 16, 0x315E, 0x1170, 0,
4090 16, 0x315F, 0x1171, 0,
4091 16, 0x3160, 0x1172, 0,
4092 16, 0x3161, 0x1173, 0,
4093 16, 0x3162, 0x1174, 0,
4094 16, 0x3163, 0x1175, 0,
4095 16, 0x3164, 0x1160, 0,
4096 16, 0x3165, 0x1114, 0,
4097 16, 0x3166, 0x1115, 0,
4098 16, 0x3167, 0x11C7, 0,
4099 16, 0x3168, 0x11C8, 0,
4100 16, 0x3169, 0x11CC, 0,
4101 16, 0x316A, 0x11CE, 0,
4102 16, 0x316B, 0x11D3, 0,
4103 16, 0x316C, 0x11D7, 0,
4104 16, 0x316D, 0x11D9, 0,
4105 16, 0x316E, 0x111C, 0,
4106 16, 0x316F, 0x11DD, 0,
4107 16, 0x3170, 0x11DF, 0,
4108 16, 0x3171, 0x111D, 0,
4109 16, 0x3172, 0x111E, 0,
4110 16, 0x3173, 0x1120, 0,
4111 16, 0x3174, 0x1122, 0,
4112 16, 0x3175, 0x1123, 0,
4113 16, 0x3176, 0x1127, 0,
4114 16, 0x3177, 0x1129, 0,
4115 16, 0x3178, 0x112B, 0,
4116 16, 0x3179, 0x112C, 0,
4117 16, 0x317A, 0x112D, 0,
4118 16, 0x317B, 0x112E, 0,
4119 16, 0x317C, 0x112F, 0,
4120 16, 0x317D, 0x1132, 0,
4121 16, 0x317E, 0x1136, 0,
4122 16, 0x317F, 0x1140, 0,
4123 16, 0x3180, 0x1147, 0,
4124 16, 0x3181, 0x114C, 0,
4125 16, 0x3182, 0x11F1, 0,
4126 16, 0x3183, 0x11F2, 0,
4127 16, 0x3184, 0x1157, 0,
4128 16, 0x3185, 0x1158, 0,
4129 16, 0x3186, 0x1159, 0,
4130 16, 0x3187, 0x1184, 0,
4131 16, 0x3188, 0x1185, 0,
4132 16, 0x3189, 0x1188, 0,
4133 16, 0x318A, 0x1191, 0,
4134 16, 0x318B, 0x1192, 0,
4135 16, 0x318C, 0x1194, 0,
4136 16, 0x318D, 0x119E, 0,
4137 16, 0x318E, 0x11A1, 0,
4138 9, 0x3192, 0x4E00, 0,
4139 9, 0x3193, 0x4E8C, 0,
4140 9, 0x3194, 0x4E09, 0,
4141 9, 0x3195, 0x56DB, 0,
4142 9, 0x3196, 0x4E0A, 0,
4143 9, 0x3197, 0x4E2D, 0,
4144 9, 0x3198, 0x4E0B, 0,
4145 9, 0x3199, 0x7532, 0,
4146 9, 0x319A, 0x4E59, 0,
4147 9, 0x319B, 0x4E19, 0,
4148 9, 0x319C, 0x4E01, 0,
4149 9, 0x319D, 0x5929, 0,
4150 9, 0x319E, 0x5730, 0,
4151 9, 0x319F, 0x4EBA, 0,
4152 16, 0x3200, 0x0028, 0x1100, 0x0029, 0,
4153 16, 0x3201, 0x0028, 0x1102, 0x0029, 0,
4154 16, 0x3202, 0x0028, 0x1103, 0x0029, 0,
4155 16, 0x3203, 0x0028, 0x1105, 0x0029, 0,
4156 16, 0x3204, 0x0028, 0x1106, 0x0029, 0,
4157 16, 0x3205, 0x0028, 0x1107, 0x0029, 0,
4158 16, 0x3206, 0x0028, 0x1109, 0x0029, 0,
4159 16, 0x3207, 0x0028, 0x110B, 0x0029, 0,
4160 16, 0x3208, 0x0028, 0x110C, 0x0029, 0,
4161 16, 0x3209, 0x0028, 0x110E, 0x0029, 0,
4162 16, 0x320A, 0x0028, 0x110F, 0x0029, 0,
4163 16, 0x320B, 0x0028, 0x1110, 0x0029, 0,
4164 16, 0x320C, 0x0028, 0x1111, 0x0029, 0,
4165 16, 0x320D, 0x0028, 0x1112, 0x0029, 0,
4166 16, 0x320E, 0x0028, 0x1100, 0x1161, 0x0029, 0,
4167 16, 0x320F, 0x0028, 0x1102, 0x1161, 0x0029, 0,
4168 16, 0x3210, 0x0028, 0x1103, 0x1161, 0x0029, 0,
4169 16, 0x3211, 0x0028, 0x1105, 0x1161, 0x0029, 0,
4170 16, 0x3212, 0x0028, 0x1106, 0x1161, 0x0029, 0,
4171 16, 0x3213, 0x0028, 0x1107, 0x1161, 0x0029, 0,
4172 16, 0x3214, 0x0028, 0x1109, 0x1161, 0x0029, 0,
4173 16, 0x3215, 0x0028, 0x110B, 0x1161, 0x0029, 0,
4174 16, 0x3216, 0x0028, 0x110C, 0x1161, 0x0029, 0,
4175 16, 0x3217, 0x0028, 0x110E, 0x1161, 0x0029, 0,
4176 16, 0x3218, 0x0028, 0x110F, 0x1161, 0x0029, 0,
4177 16, 0x3219, 0x0028, 0x1110, 0x1161, 0x0029, 0,
4178 16, 0x321A, 0x0028, 0x1111, 0x1161, 0x0029, 0,
4179 16, 0x321B, 0x0028, 0x1112, 0x1161, 0x0029, 0,
4180 16, 0x321C, 0x0028, 0x110C, 0x116E, 0x0029, 0,
4181 16, 0x3220, 0x0028, 0x4E00, 0x0029, 0,
4182 16, 0x3221, 0x0028, 0x4E8C, 0x0029, 0,
4183 16, 0x3222, 0x0028, 0x4E09, 0x0029, 0,
4184 16, 0x3223, 0x0028, 0x56DB, 0x0029, 0,
4185 16, 0x3224, 0x0028, 0x4E94, 0x0029, 0,
4186 16, 0x3225, 0x0028, 0x516D, 0x0029, 0,
4187 16, 0x3226, 0x0028, 0x4E03, 0x0029, 0,
4188 16, 0x3227, 0x0028, 0x516B, 0x0029, 0,
4189 16, 0x3228, 0x0028, 0x4E5D, 0x0029, 0,
4190 16, 0x3229, 0x0028, 0x5341, 0x0029, 0,
4191 16, 0x322A, 0x0028, 0x6708, 0x0029, 0,
4192 16, 0x322B, 0x0028, 0x706B, 0x0029, 0,
4193 16, 0x322C, 0x0028, 0x6C34, 0x0029, 0,
4194 16, 0x322D, 0x0028, 0x6728, 0x0029, 0,
4195 16, 0x322E, 0x0028, 0x91D1, 0x0029, 0,
4196 16, 0x322F, 0x0028, 0x571F, 0x0029, 0,
4197 16, 0x3230, 0x0028, 0x65E5, 0x0029, 0,
4198 16, 0x3231, 0x0028, 0x682A, 0x0029, 0,
4199 16, 0x3232, 0x0028, 0x6709, 0x0029, 0,
4200 16, 0x3233, 0x0028, 0x793E, 0x0029, 0,
4201 16, 0x3234, 0x0028, 0x540D, 0x0029, 0,
4202 16, 0x3235, 0x0028, 0x7279, 0x0029, 0,
4203 16, 0x3236, 0x0028, 0x8CA1, 0x0029, 0,
4204 16, 0x3237, 0x0028, 0x795D, 0x0029, 0,
4205 16, 0x3238, 0x0028, 0x52B4, 0x0029, 0,
4206 16, 0x3239, 0x0028, 0x4EE3, 0x0029, 0,
4207 16, 0x323A, 0x0028, 0x547C, 0x0029, 0,
4208 16, 0x323B, 0x0028, 0x5B66, 0x0029, 0,
4209 16, 0x323C, 0x0028, 0x76E3, 0x0029, 0,
4210 16, 0x323D, 0x0028, 0x4F01, 0x0029, 0,
4211 16, 0x323E, 0x0028, 0x8CC7, 0x0029, 0,
4212 16, 0x323F, 0x0028, 0x5354, 0x0029, 0,
4213 16, 0x3240, 0x0028, 0x796D, 0x0029, 0,
4214 16, 0x3241, 0x0028, 0x4F11, 0x0029, 0,
4215 16, 0x3242, 0x0028, 0x81EA, 0x0029, 0,
4216 16, 0x3243, 0x0028, 0x81F3, 0x0029, 0,
4217 8, 0x3251, 0x0032, 0x0031, 0,
4218 8, 0x3252, 0x0032, 0x0032, 0,
4219 8, 0x3253, 0x0032, 0x0033, 0,
4220 8, 0x3254, 0x0032, 0x0034, 0,
4221 8, 0x3255, 0x0032, 0x0035, 0,
4222 8, 0x3256, 0x0032, 0x0036, 0,
4223 8, 0x3257, 0x0032, 0x0037, 0,
4224 8, 0x3258, 0x0032, 0x0038, 0,
4225 8, 0x3259, 0x0032, 0x0039, 0,
4226 8, 0x325A, 0x0033, 0x0030, 0,
4227 8, 0x325B, 0x0033, 0x0031, 0,
4228 8, 0x325C, 0x0033, 0x0032, 0,
4229 8, 0x325D, 0x0033, 0x0033, 0,
4230 8, 0x325E, 0x0033, 0x0034, 0,
4231 8, 0x325F, 0x0033, 0x0035, 0,
4232 8, 0x3260, 0x1100, 0,
4233 8, 0x3261, 0x1102, 0,
4234 8, 0x3262, 0x1103, 0,
4235 8, 0x3263, 0x1105, 0,
4236 8, 0x3264, 0x1106, 0,
4237 8, 0x3265, 0x1107, 0,
4238 8, 0x3266, 0x1109, 0,
4239 8, 0x3267, 0x110B, 0,
4240 8, 0x3268, 0x110C, 0,
4241 8, 0x3269, 0x110E, 0,
4242 8, 0x326A, 0x110F, 0,
4243 8, 0x326B, 0x1110, 0,
4244 8, 0x326C, 0x1111, 0,
4245 8, 0x326D, 0x1112, 0,
4246 8, 0x326E, 0x1100, 0x1161, 0,
4247 8, 0x326F, 0x1102, 0x1161, 0,
4248 8, 0x3270, 0x1103, 0x1161, 0,
4249 8, 0x3271, 0x1105, 0x1161, 0,
4250 8, 0x3272, 0x1106, 0x1161, 0,
4251 8, 0x3273, 0x1107, 0x1161, 0,
4252 8, 0x3274, 0x1109, 0x1161, 0,
4253 8, 0x3275, 0x110B, 0x1161, 0,
4254 8, 0x3276, 0x110C, 0x1161, 0,
4255 8, 0x3277, 0x110E, 0x1161, 0,
4256 8, 0x3278, 0x110F, 0x1161, 0,
4257 8, 0x3279, 0x1110, 0x1161, 0,
4258 8, 0x327A, 0x1111, 0x1161, 0,
4259 8, 0x327B, 0x1112, 0x1161, 0,
4260 8, 0x3280, 0x4E00, 0,
4261 8, 0x3281, 0x4E8C, 0,
4262 8, 0x3282, 0x4E09, 0,
4263 8, 0x3283, 0x56DB, 0,
4264 8, 0x3284, 0x4E94, 0,
4265 8, 0x3285, 0x516D, 0,
4266 8, 0x3286, 0x4E03, 0,
4267 8, 0x3287, 0x516B, 0,
4268 8, 0x3288, 0x4E5D, 0,
4269 8, 0x3289, 0x5341, 0,
4270 8, 0x328A, 0x6708, 0,
4271 8, 0x328B, 0x706B, 0,
4272 8, 0x328C, 0x6C34, 0,
4273 8, 0x328D, 0x6728, 0,
4274 8, 0x328E, 0x91D1, 0,
4275 8, 0x328F, 0x571F, 0,
4276 8, 0x3290, 0x65E5, 0,
4277 8, 0x3291, 0x682A, 0,
4278 8, 0x3292, 0x6709, 0,
4279 8, 0x3293, 0x793E, 0,
4280 8, 0x3294, 0x540D, 0,
4281 8, 0x3295, 0x7279, 0,
4282 8, 0x3296, 0x8CA1, 0,
4283 8, 0x3297, 0x795D, 0,
4284 8, 0x3298, 0x52B4, 0,
4285 8, 0x3299, 0x79D8, 0,
4286 8, 0x329A, 0x7537, 0,
4287 8, 0x329B, 0x5973, 0,
4288 8, 0x329C, 0x9069, 0,
4289 8, 0x329D, 0x512A, 0,
4290 8, 0x329E, 0x5370, 0,
4291 8, 0x329F, 0x6CE8, 0,
4292 8, 0x32A0, 0x9805, 0,
4293 8, 0x32A1, 0x4F11, 0,
4294 8, 0x32A2, 0x5199, 0,
4295 8, 0x32A3, 0x6B63, 0,
4296 8, 0x32A4, 0x4E0A, 0,
4297 8, 0x32A5, 0x4E2D, 0,
4298 8, 0x32A6, 0x4E0B, 0,
4299 8, 0x32A7, 0x5DE6, 0,
4300 8, 0x32A8, 0x53F3, 0,
4301 8, 0x32A9, 0x533B, 0,
4302 8, 0x32AA, 0x5B97, 0,
4303 8, 0x32AB, 0x5B66, 0,
4304 8, 0x32AC, 0x76E3, 0,
4305 8, 0x32AD, 0x4F01, 0,
4306 8, 0x32AE, 0x8CC7, 0,
4307 8, 0x32AF, 0x5354, 0,
4308 8, 0x32B0, 0x591C, 0,
4309 8, 0x32B1, 0x0033, 0x0036, 0,
4310 8, 0x32B2, 0x0033, 0x0037, 0,
4311 8, 0x32B3, 0x0033, 0x0038, 0,
4312 8, 0x32B4, 0x0033, 0x0039, 0,
4313 8, 0x32B5, 0x0034, 0x0030, 0,
4314 8, 0x32B6, 0x0034, 0x0031, 0,
4315 8, 0x32B7, 0x0034, 0x0032, 0,
4316 8, 0x32B8, 0x0034, 0x0033, 0,
4317 8, 0x32B9, 0x0034, 0x0034, 0,
4318 8, 0x32BA, 0x0034, 0x0035, 0,
4319 8, 0x32BB, 0x0034, 0x0036, 0,
4320 8, 0x32BC, 0x0034, 0x0037, 0,
4321 8, 0x32BD, 0x0034, 0x0038, 0,
4322 8, 0x32BE, 0x0034, 0x0039, 0,
4323 8, 0x32BF, 0x0035, 0x0030, 0,
4324 16, 0x32C0, 0x0031, 0x6708, 0,
4325 16, 0x32C1, 0x0032, 0x6708, 0,
4326 16, 0x32C2, 0x0033, 0x6708, 0,
4327 16, 0x32C3, 0x0034, 0x6708, 0,
4328 16, 0x32C4, 0x0035, 0x6708, 0,
4329 16, 0x32C5, 0x0036, 0x6708, 0,
4330 16, 0x32C6, 0x0037, 0x6708, 0,
4331 16, 0x32C7, 0x0038, 0x6708, 0,
4332 16, 0x32C8, 0x0039, 0x6708, 0,
4333 16, 0x32C9, 0x0031, 0x0030, 0x6708, 0,
4334 16, 0x32CA, 0x0031, 0x0031, 0x6708, 0,
4335 16, 0x32CB, 0x0031, 0x0032, 0x6708, 0,
4336 8, 0x32D0, 0x30A2, 0,
4337 8, 0x32D1, 0x30A4, 0,
4338 8, 0x32D2, 0x30A6, 0,
4339 8, 0x32D3, 0x30A8, 0,
4340 8, 0x32D4, 0x30AA, 0,
4341 8, 0x32D5, 0x30AB, 0,
4342 8, 0x32D6, 0x30AD, 0,
4343 8, 0x32D7, 0x30AF, 0,
4344 8, 0x32D8, 0x30B1, 0,
4345 8, 0x32D9, 0x30B3, 0,
4346 8, 0x32DA, 0x30B5, 0,
4347 8, 0x32DB, 0x30B7, 0,
4348 8, 0x32DC, 0x30B9, 0,
4349 8, 0x32DD, 0x30BB, 0,
4350 8, 0x32DE, 0x30BD, 0,
4351 8, 0x32DF, 0x30BF, 0,
4352 8, 0x32E0, 0x30C1, 0,
4353 8, 0x32E1, 0x30C4, 0,
4354 8, 0x32E2, 0x30C6, 0,
4355 8, 0x32E3, 0x30C8, 0,
4356 8, 0x32E4, 0x30CA, 0,
4357 8, 0x32E5, 0x30CB, 0,
4358 8, 0x32E6, 0x30CC, 0,
4359 8, 0x32E7, 0x30CD, 0,
4360 8, 0x32E8, 0x30CE, 0,
4361 8, 0x32E9, 0x30CF, 0,
4362 8, 0x32EA, 0x30D2, 0,
4363 8, 0x32EB, 0x30D5, 0,
4364 8, 0x32EC, 0x30D8, 0,
4365 8, 0x32ED, 0x30DB, 0,
4366 8, 0x32EE, 0x30DE, 0,
4367 8, 0x32EF, 0x30DF, 0,
4368 8, 0x32F0, 0x30E0, 0,
4369 8, 0x32F1, 0x30E1, 0,
4370 8, 0x32F2, 0x30E2, 0,
4371 8, 0x32F3, 0x30E4, 0,
4372 8, 0x32F4, 0x30E6, 0,
4373 8, 0x32F5, 0x30E8, 0,
4374 8, 0x32F6, 0x30E9, 0,
4375 8, 0x32F7, 0x30EA, 0,
4376 8, 0x32F8, 0x30EB, 0,
4377 8, 0x32F9, 0x30EC, 0,
4378 8, 0x32FA, 0x30ED, 0,
4379 8, 0x32FB, 0x30EF, 0,
4380 8, 0x32FC, 0x30F0, 0,
4381 8, 0x32FD, 0x30F1, 0,
4382 8, 0x32FE, 0x30F2, 0,
4383 15, 0x3300, 0x30A2, 0x30D1, 0x30FC, 0x30C8, 0,
4384 15, 0x3301, 0x30A2, 0x30EB, 0x30D5, 0x30A1, 0,
4385 15, 0x3302, 0x30A2, 0x30F3, 0x30DA, 0x30A2, 0,
4386 15, 0x3303, 0x30A2, 0x30FC, 0x30EB, 0,
4387 15, 0x3304, 0x30A4, 0x30CB, 0x30F3, 0x30B0, 0,
4388 15, 0x3305, 0x30A4, 0x30F3, 0x30C1, 0,
4389 15, 0x3306, 0x30A6, 0x30A9, 0x30F3, 0,
4390 15, 0x3307, 0x30A8, 0x30B9, 0x30AF, 0x30FC, 0x30C9, 0,
4391 15, 0x3308, 0x30A8, 0x30FC, 0x30AB, 0x30FC, 0,
4392 15, 0x3309, 0x30AA, 0x30F3, 0x30B9, 0,
4393 15, 0x330A, 0x30AA, 0x30FC, 0x30E0, 0,
4394 15, 0x330B, 0x30AB, 0x30A4, 0x30EA, 0,
4395 15, 0x330C, 0x30AB, 0x30E9, 0x30C3, 0x30C8, 0,
4396 15, 0x330D, 0x30AB, 0x30ED, 0x30EA, 0x30FC, 0,
4397 15, 0x330E, 0x30AC, 0x30ED, 0x30F3, 0,
4398 15, 0x330F, 0x30AC, 0x30F3, 0x30DE, 0,
4399 15, 0x3310, 0x30AE, 0x30AC, 0,
4400 15, 0x3311, 0x30AE, 0x30CB, 0x30FC, 0,
4401 15, 0x3312, 0x30AD, 0x30E5, 0x30EA, 0x30FC, 0,
4402 15, 0x3313, 0x30AE, 0x30EB, 0x30C0, 0x30FC, 0,
4403 15, 0x3314, 0x30AD, 0x30ED, 0,
4404 15, 0x3315, 0x30AD, 0x30ED, 0x30B0, 0x30E9, 0x30E0, 0,
4405 15, 0x3316, 0x30AD, 0x30ED, 0x30E1, 0x30FC, 0x30C8, 0x30EB, 0,
4406 15, 0x3317, 0x30AD, 0x30ED, 0x30EF, 0x30C3, 0x30C8, 0,
4407 15, 0x3318, 0x30B0, 0x30E9, 0x30E0, 0,
4408 15, 0x3319, 0x30B0, 0x30E9, 0x30E0, 0x30C8, 0x30F3, 0,
4409 15, 0x331A, 0x30AF, 0x30EB, 0x30BC, 0x30A4, 0x30ED, 0,
4410 15, 0x331B, 0x30AF, 0x30ED, 0x30FC, 0x30CD, 0,
4411 15, 0x331C, 0x30B1, 0x30FC, 0x30B9, 0,
4412 15, 0x331D, 0x30B3, 0x30EB, 0x30CA, 0,
4413 15, 0x331E, 0x30B3, 0x30FC, 0x30DD, 0,
4414 15, 0x331F, 0x30B5, 0x30A4, 0x30AF, 0x30EB, 0,
4415 15, 0x3320, 0x30B5, 0x30F3, 0x30C1, 0x30FC, 0x30E0, 0,
4416 15, 0x3321, 0x30B7, 0x30EA, 0x30F3, 0x30B0, 0,
4417 15, 0x3322, 0x30BB, 0x30F3, 0x30C1, 0,
4418 15, 0x3323, 0x30BB, 0x30F3, 0x30C8, 0,
4419 15, 0x3324, 0x30C0, 0x30FC, 0x30B9, 0,
4420 15, 0x3325, 0x30C7, 0x30B7, 0,
4421 15, 0x3326, 0x30C9, 0x30EB, 0,
4422 15, 0x3327, 0x30C8, 0x30F3, 0,
4423 15, 0x3328, 0x30CA, 0x30CE, 0,
4424 15, 0x3329, 0x30CE, 0x30C3, 0x30C8, 0,
4425 15, 0x332A, 0x30CF, 0x30A4, 0x30C4, 0,
4426 15, 0x332B, 0x30D1, 0x30FC, 0x30BB, 0x30F3, 0x30C8, 0,
4427 15, 0x332C, 0x30D1, 0x30FC, 0x30C4, 0,
4428 15, 0x332D, 0x30D0, 0x30FC, 0x30EC, 0x30EB, 0,
4429 15, 0x332E, 0x30D4, 0x30A2, 0x30B9, 0x30C8, 0x30EB, 0,
4430 15, 0x332F, 0x30D4, 0x30AF, 0x30EB, 0,
4431 15, 0x3330, 0x30D4, 0x30B3, 0,
4432 15, 0x3331, 0x30D3, 0x30EB, 0,
4433 15, 0x3332, 0x30D5, 0x30A1, 0x30E9, 0x30C3, 0x30C9, 0,
4434 15, 0x3333, 0x30D5, 0x30A3, 0x30FC, 0x30C8, 0,
4435 15, 0x3334, 0x30D6, 0x30C3, 0x30B7, 0x30A7, 0x30EB, 0,
4436 15, 0x3335, 0x30D5, 0x30E9, 0x30F3, 0,
4437 15, 0x3336, 0x30D8, 0x30AF, 0x30BF, 0x30FC, 0x30EB, 0,
4438 15, 0x3337, 0x30DA, 0x30BD, 0,
4439 15, 0x3338, 0x30DA, 0x30CB, 0x30D2, 0,
4440 15, 0x3339, 0x30D8, 0x30EB, 0x30C4, 0,
4441 15, 0x333A, 0x30DA, 0x30F3, 0x30B9, 0,
4442 15, 0x333B, 0x30DA, 0x30FC, 0x30B8, 0,
4443 15, 0x333C, 0x30D9, 0x30FC, 0x30BF, 0,
4444 15, 0x333D, 0x30DD, 0x30A4, 0x30F3, 0x30C8, 0,
4445 15, 0x333E, 0x30DC, 0x30EB, 0x30C8, 0,
4446 15, 0x333F, 0x30DB, 0x30F3, 0,
4447 15, 0x3340, 0x30DD, 0x30F3, 0x30C9, 0,
4448 15, 0x3341, 0x30DB, 0x30FC, 0x30EB, 0,
4449 15, 0x3342, 0x30DB, 0x30FC, 0x30F3, 0,
4450 15, 0x3343, 0x30DE, 0x30A4, 0x30AF, 0x30ED, 0,
4451 15, 0x3344, 0x30DE, 0x30A4, 0x30EB, 0,
4452 15, 0x3345, 0x30DE, 0x30C3, 0x30CF, 0,
4453 15, 0x3346, 0x30DE, 0x30EB, 0x30AF, 0,
4454 15, 0x3347, 0x30DE, 0x30F3, 0x30B7, 0x30E7, 0x30F3, 0,
4455 15, 0x3348, 0x30DF, 0x30AF, 0x30ED, 0x30F3, 0,
4456 15, 0x3349, 0x30DF, 0x30EA, 0,
4457 15, 0x334A, 0x30DF, 0x30EA, 0x30D0, 0x30FC, 0x30EB, 0,
4458 15, 0x334B, 0x30E1, 0x30AC, 0,
4459 15, 0x334C, 0x30E1, 0x30AC, 0x30C8, 0x30F3, 0,
4460 15, 0x334D, 0x30E1, 0x30FC, 0x30C8, 0x30EB, 0,
4461 15, 0x334E, 0x30E4, 0x30FC, 0x30C9, 0,
4462 15, 0x334F, 0x30E4, 0x30FC, 0x30EB, 0,
4463 15, 0x3350, 0x30E6, 0x30A2, 0x30F3, 0,
4464 15, 0x3351, 0x30EA, 0x30C3, 0x30C8, 0x30EB, 0,
4465 15, 0x3352, 0x30EA, 0x30E9, 0,
4466 15, 0x3353, 0x30EB, 0x30D4, 0x30FC, 0,
4467 15, 0x3354, 0x30EB, 0x30FC, 0x30D6, 0x30EB, 0,
4468 15, 0x3355, 0x30EC, 0x30E0, 0,
4469 15, 0x3356, 0x30EC, 0x30F3, 0x30C8, 0x30B2, 0x30F3, 0,
4470 15, 0x3357, 0x30EF, 0x30C3, 0x30C8, 0,
4471 16, 0x3358, 0x0030, 0x70B9, 0,
4472 16, 0x3359, 0x0031, 0x70B9, 0,
4473 16, 0x335A, 0x0032, 0x70B9, 0,
4474 16, 0x335B, 0x0033, 0x70B9, 0,
4475 16, 0x335C, 0x0034, 0x70B9, 0,
4476 16, 0x335D, 0x0035, 0x70B9, 0,
4477 16, 0x335E, 0x0036, 0x70B9, 0,
4478 16, 0x335F, 0x0037, 0x70B9, 0,
4479 16, 0x3360, 0x0038, 0x70B9, 0,
4480 16, 0x3361, 0x0039, 0x70B9, 0,
4481 16, 0x3362, 0x0031, 0x0030, 0x70B9, 0,
4482 16, 0x3363, 0x0031, 0x0031, 0x70B9, 0,
4483 16, 0x3364, 0x0031, 0x0032, 0x70B9, 0,
4484 16, 0x3365, 0x0031, 0x0033, 0x70B9, 0,
4485 16, 0x3366, 0x0031, 0x0034, 0x70B9, 0,
4486 16, 0x3367, 0x0031, 0x0035, 0x70B9, 0,
4487 16, 0x3368, 0x0031, 0x0036, 0x70B9, 0,
4488 16, 0x3369, 0x0031, 0x0037, 0x70B9, 0,
4489 16, 0x336A, 0x0031, 0x0038, 0x70B9, 0,
4490 16, 0x336B, 0x0031, 0x0039, 0x70B9, 0,
4491 16, 0x336C, 0x0032, 0x0030, 0x70B9, 0,
4492 16, 0x336D, 0x0032, 0x0031, 0x70B9, 0,
4493 16, 0x336E, 0x0032, 0x0032, 0x70B9, 0,
4494 16, 0x336F, 0x0032, 0x0033, 0x70B9, 0,
4495 16, 0x3370, 0x0032, 0x0034, 0x70B9, 0,
4496 15, 0x3371, 0x0068, 0x0050, 0x0061, 0,
4497 15, 0x3372, 0x0064, 0x0061, 0,
4498 15, 0x3373, 0x0041, 0x0055, 0,
4499 15, 0x3374, 0x0062, 0x0061, 0x0072, 0,
4500 15, 0x3375, 0x006F, 0x0056, 0,
4501 15, 0x3376, 0x0070, 0x0063, 0,
4502 15, 0x337B, 0x5E73, 0x6210, 0,
4503 15, 0x337C, 0x662D, 0x548C, 0,
4504 15, 0x337D, 0x5927, 0x6B63, 0,
4505 15, 0x337E, 0x660E, 0x6CBB, 0,
4506 15, 0x337F, 0x682A, 0x5F0F, 0x4F1A, 0x793E, 0,
4507 15, 0x3380, 0x0070, 0x0041, 0,
4508 15, 0x3381, 0x006E, 0x0041, 0,
4509 15, 0x3382, 0x03BC, 0x0041, 0,
4510 15, 0x3383, 0x006D, 0x0041, 0,
4511 15, 0x3384, 0x006B, 0x0041, 0,
4512 15, 0x3385, 0x004B, 0x0042, 0,
4513 15, 0x3386, 0x004D, 0x0042, 0,
4514 15, 0x3387, 0x0047, 0x0042, 0,
4515 15, 0x3388, 0x0063, 0x0061, 0x006C, 0,
4516 15, 0x3389, 0x006B, 0x0063, 0x0061, 0x006C, 0,
4517 15, 0x338A, 0x0070, 0x0046, 0,
4518 15, 0x338B, 0x006E, 0x0046, 0,
4519 15, 0x338C, 0x03BC, 0x0046, 0,
4520 15, 0x338D, 0x03BC, 0x0067, 0,
4521 15, 0x338E, 0x006D, 0x0067, 0,
4522 15, 0x338F, 0x006B, 0x0067, 0,
4523 15, 0x3390, 0x0048, 0x007A, 0,
4524 15, 0x3391, 0x006B, 0x0048, 0x007A, 0,
4525 15, 0x3392, 0x004D, 0x0048, 0x007A, 0,
4526 15, 0x3393, 0x0047, 0x0048, 0x007A, 0,
4527 15, 0x3394, 0x0054, 0x0048, 0x007A, 0,
4528 15, 0x3395, 0x03BC, 0x2113, 0,
4529 15, 0x3396, 0x006D, 0x2113, 0,
4530 15, 0x3397, 0x0064, 0x2113, 0,
4531 15, 0x3398, 0x006B, 0x2113, 0,
4532 15, 0x3399, 0x0066, 0x006D, 0,
4533 15, 0x339A, 0x006E, 0x006D, 0,
4534 15, 0x339B, 0x03BC, 0x006D, 0,
4535 15, 0x339C, 0x006D, 0x006D, 0,
4536 15, 0x339D, 0x0063, 0x006D, 0,
4537 15, 0x339E, 0x006B, 0x006D, 0,
4538 15, 0x339F, 0x006D, 0x006D, 0x00B2, 0,
4539 15, 0x33A0, 0x0063, 0x006D, 0x00B2, 0,
4540 15, 0x33A1, 0x006D, 0x00B2, 0,
4541 15, 0x33A2, 0x006B, 0x006D, 0x00B2, 0,
4542 15, 0x33A3, 0x006D, 0x006D, 0x00B3, 0,
4543 15, 0x33A4, 0x0063, 0x006D, 0x00B3, 0,
4544 15, 0x33A5, 0x006D, 0x00B3, 0,
4545 15, 0x33A6, 0x006B, 0x006D, 0x00B3, 0,
4546 15, 0x33A7, 0x006D, 0x2215, 0x0073, 0,
4547 15, 0x33A8, 0x006D, 0x2215, 0x0073, 0x00B2, 0,
4548 15, 0x33A9, 0x0050, 0x0061, 0,
4549 15, 0x33AA, 0x006B, 0x0050, 0x0061, 0,
4550 15, 0x33AB, 0x004D, 0x0050, 0x0061, 0,
4551 15, 0x33AC, 0x0047, 0x0050, 0x0061, 0,
4552 15, 0x33AD, 0x0072, 0x0061, 0x0064, 0,
4553 15, 0x33AE, 0x0072, 0x0061, 0x0064, 0x2215, 0x0073, 0,
4554 15, 0x33AF, 0x0072, 0x0061, 0x0064, 0x2215, 0x0073, 0x00B2, 0,
4555 15, 0x33B0, 0x0070, 0x0073, 0,
4556 15, 0x33B1, 0x006E, 0x0073, 0,
4557 15, 0x33B2, 0x03BC, 0x0073, 0,
4558 15, 0x33B3, 0x006D, 0x0073, 0,
4559 15, 0x33B4, 0x0070, 0x0056, 0,
4560 15, 0x33B5, 0x006E, 0x0056, 0,
4561 15, 0x33B6, 0x03BC, 0x0056, 0,
4562 15, 0x33B7, 0x006D, 0x0056, 0,
4563 15, 0x33B8, 0x006B, 0x0056, 0,
4564 15, 0x33B9, 0x004D, 0x0056, 0,
4565 15, 0x33BA, 0x0070, 0x0057, 0,
4566 15, 0x33BB, 0x006E, 0x0057, 0,
4567 15, 0x33BC, 0x03BC, 0x0057, 0,
4568 15, 0x33BD, 0x006D, 0x0057, 0,
4569 15, 0x33BE, 0x006B, 0x0057, 0,
4570 15, 0x33BF, 0x004D, 0x0057, 0,
4571 15, 0x33C0, 0x006B, 0x03A9, 0,
4572 15, 0x33C1, 0x004D, 0x03A9, 0,
4573 15, 0x33C2, 0x0061, 0x002E, 0x006D, 0x002E, 0,
4574 15, 0x33C3, 0x0042, 0x0071, 0,
4575 15, 0x33C4, 0x0063, 0x0063, 0,
4576 15, 0x33C5, 0x0063, 0x0064, 0,
4577 15, 0x33C6, 0x0043, 0x2215, 0x006B, 0x0067, 0,
4578 15, 0x33C7, 0x0043, 0x006F, 0x002E, 0,
4579 15, 0x33C8, 0x0064, 0x0042, 0,
4580 15, 0x33C9, 0x0047, 0x0079, 0,
4581 15, 0x33CA, 0x0068, 0x0061, 0,
4582 15, 0x33CB, 0x0048, 0x0050, 0,
4583 15, 0x33CC, 0x0069, 0x006E, 0,
4584 15, 0x33CD, 0x004B, 0x004B, 0,
4585 15, 0x33CE, 0x004B, 0x004D, 0,
4586 15, 0x33CF, 0x006B, 0x0074, 0,
4587 15, 0x33D0, 0x006C, 0x006D, 0,
4588 15, 0x33D1, 0x006C, 0x006E, 0,
4589 15, 0x33D2, 0x006C, 0x006F, 0x0067, 0,
4590 15, 0x33D3, 0x006C, 0x0078, 0,
4591 15, 0x33D4, 0x006D, 0x0062, 0,
4592 15, 0x33D5, 0x006D, 0x0069, 0x006C, 0,
4593 15, 0x33D6, 0x006D, 0x006F, 0x006C, 0,
4594 15, 0x33D7, 0x0050, 0x0048, 0,
4595 15, 0x33D8, 0x0070, 0x002E, 0x006D, 0x002E, 0,
4596 15, 0x33D9, 0x0050, 0x0050, 0x004D, 0,
4597 15, 0x33DA, 0x0050, 0x0052, 0,
4598 15, 0x33DB, 0x0073, 0x0072, 0,
4599 15, 0x33DC, 0x0053, 0x0076, 0,
4600 15, 0x33DD, 0x0057, 0x0062, 0,
4601 16, 0x33E0, 0x0031, 0x65E5, 0,
4602 16, 0x33E1, 0x0032, 0x65E5, 0,
4603 16, 0x33E2, 0x0033, 0x65E5, 0,
4604 16, 0x33E3, 0x0034, 0x65E5, 0,
4605 16, 0x33E4, 0x0035, 0x65E5, 0,
4606 16, 0x33E5, 0x0036, 0x65E5, 0,
4607 16, 0x33E6, 0x0037, 0x65E5, 0,
4608 16, 0x33E7, 0x0038, 0x65E5, 0,
4609 16, 0x33E8, 0x0039, 0x65E5, 0,
4610 16, 0x33E9, 0x0031, 0x0030, 0x65E5, 0,
4611 16, 0x33EA, 0x0031, 0x0031, 0x65E5, 0,
4612 16, 0x33EB, 0x0031, 0x0032, 0x65E5, 0,
4613 16, 0x33EC, 0x0031, 0x0033, 0x65E5, 0,
4614 16, 0x33ED, 0x0031, 0x0034, 0x65E5, 0,
4615 16, 0x33EE, 0x0031, 0x0035, 0x65E5, 0,
4616 16, 0x33EF, 0x0031, 0x0036, 0x65E5, 0,
4617 16, 0x33F0, 0x0031, 0x0037, 0x65E5, 0,
4618 16, 0x33F1, 0x0031, 0x0038, 0x65E5, 0,
4619 16, 0x33F2, 0x0031, 0x0039, 0x65E5, 0,
4620 16, 0x33F3, 0x0032, 0x0030, 0x65E5, 0,
4621 16, 0x33F4, 0x0032, 0x0031, 0x65E5, 0,
4622 16, 0x33F5, 0x0032, 0x0032, 0x65E5, 0,
4623 16, 0x33F6, 0x0032, 0x0033, 0x65E5, 0,
4624 16, 0x33F7, 0x0032, 0x0034, 0x65E5, 0,
4625 16, 0x33F8, 0x0032, 0x0035, 0x65E5, 0,
4626 16, 0x33F9, 0x0032, 0x0036, 0x65E5, 0,
4627 16, 0x33FA, 0x0032, 0x0037, 0x65E5, 0,
4628 16, 0x33FB, 0x0032, 0x0038, 0x65E5, 0,
4629 16, 0x33FC, 0x0032, 0x0039, 0x65E5, 0,
4630 16, 0x33FD, 0x0033, 0x0030, 0x65E5, 0,
4631 16, 0x33FE, 0x0033, 0x0031, 0x65E5, 0,
4632 1, 0xF900, 0x8C48, 0,
4633 1, 0xF901, 0x66F4, 0,
4634 1, 0xF902, 0x8ECA, 0,
4635 1, 0xF903, 0x8CC8, 0,
4636 1, 0xF904, 0x6ED1, 0,
4637 1, 0xF905, 0x4E32, 0,
4638 1, 0xF906, 0x53E5, 0,
4639 1, 0xF907, 0x9F9C, 0,
4640 1, 0xF908, 0x9F9C, 0,
4641 1, 0xF909, 0x5951, 0,
4642 1, 0xF90A, 0x91D1, 0,
4643 1, 0xF90B, 0x5587, 0,
4644 1, 0xF90C, 0x5948, 0,
4645 1, 0xF90D, 0x61F6, 0,
4646 1, 0xF90E, 0x7669, 0,
4647 1, 0xF90F, 0x7F85, 0,
4648 1, 0xF910, 0x863F, 0,
4649 1, 0xF911, 0x87BA, 0,
4650 1, 0xF912, 0x88F8, 0,
4651 1, 0xF913, 0x908F, 0,
4652 1, 0xF914, 0x6A02, 0,
4653 1, 0xF915, 0x6D1B, 0,
4654 1, 0xF916, 0x70D9, 0,
4655 1, 0xF917, 0x73DE, 0,
4656 1, 0xF918, 0x843D, 0,
4657 1, 0xF919, 0x916A, 0,
4658 1, 0xF91A, 0x99F1, 0,
4659 1, 0xF91B, 0x4E82, 0,
4660 1, 0xF91C, 0x5375, 0,
4661 1, 0xF91D, 0x6B04, 0,
4662 1, 0xF91E, 0x721B, 0,
4663 1, 0xF91F, 0x862D, 0,
4664 1, 0xF920, 0x9E1E, 0,
4665 1, 0xF921, 0x5D50, 0,
4666 1, 0xF922, 0x6FEB, 0,
4667 1, 0xF923, 0x85CD, 0,
4668 1, 0xF924, 0x8964, 0,
4669 1, 0xF925, 0x62C9, 0,
4670 1, 0xF926, 0x81D8, 0,
4671 1, 0xF927, 0x881F, 0,
4672 1, 0xF928, 0x5ECA, 0,
4673 1, 0xF929, 0x6717, 0,
4674 1, 0xF92A, 0x6D6A, 0,
4675 1, 0xF92B, 0x72FC, 0,
4676 1, 0xF92C, 0x90CE, 0,
4677 1, 0xF92D, 0x4F86, 0,
4678 1, 0xF92E, 0x51B7, 0,
4679 1, 0xF92F, 0x52DE, 0,
4680 1, 0xF930, 0x64C4, 0,
4681 1, 0xF931, 0x6AD3, 0,
4682 1, 0xF932, 0x7210, 0,
4683 1, 0xF933, 0x76E7, 0,
4684 1, 0xF934, 0x8001, 0,
4685 1, 0xF935, 0x8606, 0,
4686 1, 0xF936, 0x865C, 0,
4687 1, 0xF937, 0x8DEF, 0,
4688 1, 0xF938, 0x9732, 0,
4689 1, 0xF939, 0x9B6F, 0,
4690 1, 0xF93A, 0x9DFA, 0,
4691 1, 0xF93B, 0x788C, 0,
4692 1, 0xF93C, 0x797F, 0,
4693 1, 0xF93D, 0x7DA0, 0,
4694 1, 0xF93E, 0x83C9, 0,
4695 1, 0xF93F, 0x9304, 0,
4696 1, 0xF940, 0x9E7F, 0,
4697 1, 0xF941, 0x8AD6, 0,
4698 1, 0xF942, 0x58DF, 0,
4699 1, 0xF943, 0x5F04, 0,
4700 1, 0xF944, 0x7C60, 0,
4701 1, 0xF945, 0x807E, 0,
4702 1, 0xF946, 0x7262, 0,
4703 1, 0xF947, 0x78CA, 0,
4704 1, 0xF948, 0x8CC2, 0,
4705 1, 0xF949, 0x96F7, 0,
4706 1, 0xF94A, 0x58D8, 0,
4707 1, 0xF94B, 0x5C62, 0,
4708 1, 0xF94C, 0x6A13, 0,
4709 1, 0xF94D, 0x6DDA, 0,
4710 1, 0xF94E, 0x6F0F, 0,
4711 1, 0xF94F, 0x7D2F, 0,
4712 1, 0xF950, 0x7E37, 0,
4713 1, 0xF951, 0x964B, 0,
4714 1, 0xF952, 0x52D2, 0,
4715 1, 0xF953, 0x808B, 0,
4716 1, 0xF954, 0x51DC, 0,
4717 1, 0xF955, 0x51CC, 0,
4718 1, 0xF956, 0x7A1C, 0,
4719 1, 0xF957, 0x7DBE, 0,
4720 1, 0xF958, 0x83F1, 0,
4721 1, 0xF959, 0x9675, 0,
4722 1, 0xF95A, 0x8B80, 0,
4723 1, 0xF95B, 0x62CF, 0,
4724 1, 0xF95C, 0x6A02, 0,
4725 1, 0xF95D, 0x8AFE, 0,
4726 1, 0xF95E, 0x4E39, 0,
4727 1, 0xF95F, 0x5BE7, 0,
4728 1, 0xF960, 0x6012, 0,
4729 1, 0xF961, 0x7387, 0,
4730 1, 0xF962, 0x7570, 0,
4731 1, 0xF963, 0x5317, 0,
4732 1, 0xF964, 0x78FB, 0,
4733 1, 0xF965, 0x4FBF, 0,
4734 1, 0xF966, 0x5FA9, 0,
4735 1, 0xF967, 0x4E0D, 0,
4736 1, 0xF968, 0x6CCC, 0,
4737 1, 0xF969, 0x6578, 0,
4738 1, 0xF96A, 0x7D22, 0,
4739 1, 0xF96B, 0x53C3, 0,
4740 1, 0xF96C, 0x585E, 0,
4741 1, 0xF96D, 0x7701, 0,
4742 1, 0xF96E, 0x8449, 0,
4743 1, 0xF96F, 0x8AAA, 0,
4744 1, 0xF970, 0x6BBA, 0,
4745 1, 0xF971, 0x8FB0, 0,
4746 1, 0xF972, 0x6C88, 0,
4747 1, 0xF973, 0x62FE, 0,
4748 1, 0xF974, 0x82E5, 0,
4749 1, 0xF975, 0x63A0, 0,
4750 1, 0xF976, 0x7565, 0,
4751 1, 0xF977, 0x4EAE, 0,
4752 1, 0xF978, 0x5169, 0,
4753 1, 0xF979, 0x51C9, 0,
4754 1, 0xF97A, 0x6881, 0,
4755 1, 0xF97B, 0x7CE7, 0,
4756 1, 0xF97C, 0x826F, 0,
4757 1, 0xF97D, 0x8AD2, 0,
4758 1, 0xF97E, 0x91CF, 0,
4759 1, 0xF97F, 0x52F5, 0,
4760 1, 0xF980, 0x5442, 0,
4761 1, 0xF981, 0x5973, 0,
4762 1, 0xF982, 0x5EEC, 0,
4763 1, 0xF983, 0x65C5, 0,
4764 1, 0xF984, 0x6FFE, 0,
4765 1, 0xF985, 0x792A, 0,
4766 1, 0xF986, 0x95AD, 0,
4767 1, 0xF987, 0x9A6A, 0,
4768 1, 0xF988, 0x9E97, 0,
4769 1, 0xF989, 0x9ECE, 0,
4770 1, 0xF98A, 0x529B, 0,
4771 1, 0xF98B, 0x66C6, 0,
4772 1, 0xF98C, 0x6B77, 0,
4773 1, 0xF98D, 0x8F62, 0,
4774 1, 0xF98E, 0x5E74, 0,
4775 1, 0xF98F, 0x6190, 0,
4776 1, 0xF990, 0x6200, 0,
4777 1, 0xF991, 0x649A, 0,
4778 1, 0xF992, 0x6F23, 0,
4779 1, 0xF993, 0x7149, 0,
4780 1, 0xF994, 0x7489, 0,
4781 1, 0xF995, 0x79CA, 0,
4782 1, 0xF996, 0x7DF4, 0,
4783 1, 0xF997, 0x806F, 0,
4784 1, 0xF998, 0x8F26, 0,
4785 1, 0xF999, 0x84EE, 0,
4786 1, 0xF99A, 0x9023, 0,
4787 1, 0xF99B, 0x934A, 0,
4788 1, 0xF99C, 0x5217, 0,
4789 1, 0xF99D, 0x52A3, 0,
4790 1, 0xF99E, 0x54BD, 0,
4791 1, 0xF99F, 0x70C8, 0,
4792 1, 0xF9A0, 0x88C2, 0,
4793 1, 0xF9A1, 0x8AAA, 0,
4794 1, 0xF9A2, 0x5EC9, 0,
4795 1, 0xF9A3, 0x5FF5, 0,
4796 1, 0xF9A4, 0x637B, 0,
4797 1, 0xF9A5, 0x6BAE, 0,
4798 1, 0xF9A6, 0x7C3E, 0,
4799 1, 0xF9A7, 0x7375, 0,
4800 1, 0xF9A8, 0x4EE4, 0,
4801 1, 0xF9A9, 0x56F9, 0,
4802 1, 0xF9AA, 0x5BE7, 0,
4803 1, 0xF9AB, 0x5DBA, 0,
4804 1, 0xF9AC, 0x601C, 0,
4805 1, 0xF9AD, 0x73B2, 0,
4806 1, 0xF9AE, 0x7469, 0,
4807 1, 0xF9AF, 0x7F9A, 0,
4808 1, 0xF9B0, 0x8046, 0,
4809 1, 0xF9B1, 0x9234, 0,
4810 1, 0xF9B2, 0x96F6, 0,
4811 1, 0xF9B3, 0x9748, 0,
4812 1, 0xF9B4, 0x9818, 0,
4813 1, 0xF9B5, 0x4F8B, 0,
4814 1, 0xF9B6, 0x79AE, 0,
4815 1, 0xF9B7, 0x91B4, 0,
4816 1, 0xF9B8, 0x96B8, 0,
4817 1, 0xF9B9, 0x60E1, 0,
4818 1, 0xF9BA, 0x4E86, 0,
4819 1, 0xF9BB, 0x50DA, 0,
4820 1, 0xF9BC, 0x5BEE, 0,
4821 1, 0xF9BD, 0x5C3F, 0,
4822 1, 0xF9BE, 0x6599, 0,
4823 1, 0xF9BF, 0x6A02, 0,
4824 1, 0xF9C0, 0x71CE, 0,
4825 1, 0xF9C1, 0x7642, 0,
4826 1, 0xF9C2, 0x84FC, 0,
4827 1, 0xF9C3, 0x907C, 0,
4828 1, 0xF9C4, 0x9F8D, 0,
4829 1, 0xF9C5, 0x6688, 0,
4830 1, 0xF9C6, 0x962E, 0,
4831 1, 0xF9C7, 0x5289, 0,
4832 1, 0xF9C8, 0x677B, 0,
4833 1, 0xF9C9, 0x67F3, 0,
4834 1, 0xF9CA, 0x6D41, 0,
4835 1, 0xF9CB, 0x6E9C, 0,
4836 1, 0xF9CC, 0x7409, 0,
4837 1, 0xF9CD, 0x7559, 0,
4838 1, 0xF9CE, 0x786B, 0,
4839 1, 0xF9CF, 0x7D10, 0,
4840 1, 0xF9D0, 0x985E, 0,
4841 1, 0xF9D1, 0x516D, 0,
4842 1, 0xF9D2, 0x622E, 0,
4843 1, 0xF9D3, 0x9678, 0,
4844 1, 0xF9D4, 0x502B, 0,
4845 1, 0xF9D5, 0x5D19, 0,
4846 1, 0xF9D6, 0x6DEA, 0,
4847 1, 0xF9D7, 0x8F2A, 0,
4848 1, 0xF9D8, 0x5F8B, 0,
4849 1, 0xF9D9, 0x6144, 0,
4850 1, 0xF9DA, 0x6817, 0,
4851 1, 0xF9DB, 0x7387, 0,
4852 1, 0xF9DC, 0x9686, 0,
4853 1, 0xF9DD, 0x5229, 0,
4854 1, 0xF9DE, 0x540F, 0,
4855 1, 0xF9DF, 0x5C65, 0,
4856 1, 0xF9E0, 0x6613, 0,
4857 1, 0xF9E1, 0x674E, 0,
4858 1, 0xF9E2, 0x68A8, 0,
4859 1, 0xF9E3, 0x6CE5, 0,
4860 1, 0xF9E4, 0x7406, 0,
4861 1, 0xF9E5, 0x75E2, 0,
4862 1, 0xF9E6, 0x7F79, 0,
4863 1, 0xF9E7, 0x88CF, 0,
4864 1, 0xF9E8, 0x88E1, 0,
4865 1, 0xF9E9, 0x91CC, 0,
4866 1, 0xF9EA, 0x96E2, 0,
4867 1, 0xF9EB, 0x533F, 0,
4868 1, 0xF9EC, 0x6EBA, 0,
4869 1, 0xF9ED, 0x541D, 0,
4870 1, 0xF9EE, 0x71D0, 0,
4871 1, 0xF9EF, 0x7498, 0,
4872 1, 0xF9F0, 0x85FA, 0,
4873 1, 0xF9F1, 0x96A3, 0,
4874 1, 0xF9F2, 0x9C57, 0,
4875 1, 0xF9F3, 0x9E9F, 0,
4876 1, 0xF9F4, 0x6797, 0,
4877 1, 0xF9F5, 0x6DCB, 0,
4878 1, 0xF9F6, 0x81E8, 0,
4879 1, 0xF9F7, 0x7ACB, 0,
4880 1, 0xF9F8, 0x7B20, 0,
4881 1, 0xF9F9, 0x7C92, 0,
4882 1, 0xF9FA, 0x72C0, 0,
4883 1, 0xF9FB, 0x7099, 0,
4884 1, 0xF9FC, 0x8B58, 0,
4885 1, 0xF9FD, 0x4EC0, 0,
4886 1, 0xF9FE, 0x8336, 0,
4887 1, 0xF9FF, 0x523A, 0,
4888 1, 0xFA00, 0x5207, 0,
4889 1, 0xFA01, 0x5EA6, 0,
4890 1, 0xFA02, 0x62D3, 0,
4891 1, 0xFA03, 0x7CD6, 0,
4892 1, 0xFA04, 0x5B85, 0,
4893 1, 0xFA05, 0x6D1E, 0,
4894 1, 0xFA06, 0x66B4, 0,
4895 1, 0xFA07, 0x8F3B, 0,
4896 1, 0xFA08, 0x884C, 0,
4897 1, 0xFA09, 0x964D, 0,
4898 1, 0xFA0A, 0x898B, 0,
4899 1, 0xFA0B, 0x5ED3, 0,
4900 1, 0xFA0C, 0x5140, 0,
4901 1, 0xFA0D, 0x55C0, 0,
4902 1, 0xFA10, 0x585A, 0,
4903 1, 0xFA12, 0x6674, 0,
4904 1, 0xFA15, 0x51DE, 0,
4905 1, 0xFA16, 0x732A, 0,
4906 1, 0xFA17, 0x76CA, 0,
4907 1, 0xFA18, 0x793C, 0,
4908 1, 0xFA19, 0x795E, 0,
4909 1, 0xFA1A, 0x7965, 0,
4910 1, 0xFA1B, 0x798F, 0,
4911 1, 0xFA1C, 0x9756, 0,
4912 1, 0xFA1D, 0x7CBE, 0,
4913 1, 0xFA1E, 0x7FBD, 0,
4914 1, 0xFA20, 0x8612, 0,
4915 1, 0xFA22, 0x8AF8, 0,
4916 1, 0xFA25, 0x9038, 0,
4917 1, 0xFA26, 0x90FD, 0,
4918 1, 0xFA2A, 0x98EF, 0,
4919 1, 0xFA2B, 0x98FC, 0,
4920 1, 0xFA2C, 0x9928, 0,
4921 1, 0xFA2D, 0x9DB4, 0,
4922 1, 0xFA30, 0x4FAE, 0,
4923 1, 0xFA31, 0x50E7, 0,
4924 1, 0xFA32, 0x514D, 0,
4925 1, 0xFA33, 0x52C9, 0,
4926 1, 0xFA34, 0x52E4, 0,
4927 1, 0xFA35, 0x5351, 0,
4928 1, 0xFA36, 0x559D, 0,
4929 1, 0xFA37, 0x5606, 0,
4930 1, 0xFA38, 0x5668, 0,
4931 1, 0xFA39, 0x5840, 0,
4932 1, 0xFA3A, 0x58A8, 0,
4933 1, 0xFA3B, 0x5C64, 0,
4934 1, 0xFA3C, 0x5C6E, 0,
4935 1, 0xFA3D, 0x6094, 0,
4936 1, 0xFA3E, 0x6168, 0,
4937 1, 0xFA3F, 0x618E, 0,
4938 1, 0xFA40, 0x61F2, 0,
4939 1, 0xFA41, 0x654F, 0,
4940 1, 0xFA42, 0x65E2, 0,
4941 1, 0xFA43, 0x6691, 0,
4942 1, 0xFA44, 0x6885, 0,
4943 1, 0xFA45, 0x6D77, 0,
4944 1, 0xFA46, 0x6E1A, 0,
4945 1, 0xFA47, 0x6F22, 0,
4946 1, 0xFA48, 0x716E, 0,
4947 1, 0xFA49, 0x722B, 0,
4948 1, 0xFA4A, 0x7422, 0,
4949 1, 0xFA4B, 0x7891, 0,
4950 1, 0xFA4C, 0x793E, 0,
4951 1, 0xFA4D, 0x7949, 0,
4952 1, 0xFA4E, 0x7948, 0,
4953 1, 0xFA4F, 0x7950, 0,
4954 1, 0xFA50, 0x7956, 0,
4955 1, 0xFA51, 0x795D, 0,
4956 1, 0xFA52, 0x798D, 0,
4957 1, 0xFA53, 0x798E, 0,
4958 1, 0xFA54, 0x7A40, 0,
4959 1, 0xFA55, 0x7A81, 0,
4960 1, 0xFA56, 0x7BC0, 0,
4961 1, 0xFA57, 0x7DF4, 0,
4962 1, 0xFA58, 0x7E09, 0,
4963 1, 0xFA59, 0x7E41, 0,
4964 1, 0xFA5A, 0x7F72, 0,
4965 1, 0xFA5B, 0x8005, 0,
4966 1, 0xFA5C, 0x81ED, 0,
4967 1, 0xFA5D, 0x8279, 0,
4968 1, 0xFA5E, 0x8279, 0,
4969 1, 0xFA5F, 0x8457, 0,
4970 1, 0xFA60, 0x8910, 0,
4971 1, 0xFA61, 0x8996, 0,
4972 1, 0xFA62, 0x8B01, 0,
4973 1, 0xFA63, 0x8B39, 0,
4974 1, 0xFA64, 0x8CD3, 0,
4975 1, 0xFA65, 0x8D08, 0,
4976 1, 0xFA66, 0x8FB6, 0,
4977 1, 0xFA67, 0x9038, 0,
4978 1, 0xFA68, 0x96E3, 0,
4979 1, 0xFA69, 0x97FF, 0,
4980 1, 0xFA6A, 0x983B, 0,
4981 16, 0xFB00, 0x0066, 0x0066, 0,
4982 16, 0xFB01, 0x0066, 0x0069, 0,
4983 16, 0xFB02, 0x0066, 0x006C, 0,
4984 16, 0xFB03, 0x0066, 0x0066, 0x0069, 0,
4985 16, 0xFB04, 0x0066, 0x0066, 0x006C, 0,
4986 16, 0xFB05, 0x017F, 0x0074, 0,
4987 16, 0xFB06, 0x0073, 0x0074, 0,
4988 16, 0xFB13, 0x0574, 0x0576, 0,
4989 16, 0xFB14, 0x0574, 0x0565, 0,
4990 16, 0xFB15, 0x0574, 0x056B, 0,
4991 16, 0xFB16, 0x057E, 0x0576, 0,
4992 16, 0xFB17, 0x0574, 0x056D, 0,
4993 1, 0xFB1D, 0x05D9, 0x05B4, 0,
4994 1, 0xFB1F, 0x05F2, 0x05B7, 0,
4995 2, 0xFB20, 0x05E2, 0,
4996 2, 0xFB21, 0x05D0, 0,
4997 2, 0xFB22, 0x05D3, 0,
4998 2, 0xFB23, 0x05D4, 0,
4999 2, 0xFB24, 0x05DB, 0,
5000 2, 0xFB25, 0x05DC, 0,
5001 2, 0xFB26, 0x05DD, 0,
5002 2, 0xFB27, 0x05E8, 0,
5003 2, 0xFB28, 0x05EA, 0,
5004 2, 0xFB29, 0x002B, 0,
5005 1, 0xFB2A, 0x05E9, 0x05C1, 0,
5006 1, 0xFB2B, 0x05E9, 0x05C2, 0,
5007 1, 0xFB2C, 0xFB49, 0x05C1, 0,
5008 1, 0xFB2D, 0xFB49, 0x05C2, 0,
5009 1, 0xFB2E, 0x05D0, 0x05B7, 0,
5010 1, 0xFB2F, 0x05D0, 0x05B8, 0,
5011 1, 0xFB30, 0x05D0, 0x05BC, 0,
5012 1, 0xFB31, 0x05D1, 0x05BC, 0,
5013 1, 0xFB32, 0x05D2, 0x05BC, 0,
5014 1, 0xFB33, 0x05D3, 0x05BC, 0,
5015 1, 0xFB34, 0x05D4, 0x05BC, 0,
5016 1, 0xFB35, 0x05D5, 0x05BC, 0,
5017 1, 0xFB36, 0x05D6, 0x05BC, 0,
5018 1, 0xFB38, 0x05D8, 0x05BC, 0,
5019 1, 0xFB39, 0x05D9, 0x05BC, 0,
5020 1, 0xFB3A, 0x05DA, 0x05BC, 0,
5021 1, 0xFB3B, 0x05DB, 0x05BC, 0,
5022 1, 0xFB3C, 0x05DC, 0x05BC, 0,
5023 1, 0xFB3E, 0x05DE, 0x05BC, 0,
5024 1, 0xFB40, 0x05E0, 0x05BC, 0,
5025 1, 0xFB41, 0x05E1, 0x05BC, 0,
5026 1, 0xFB43, 0x05E3, 0x05BC, 0,
5027 1, 0xFB44, 0x05E4, 0x05BC, 0,
5028 1, 0xFB46, 0x05E6, 0x05BC, 0,
5029 1, 0xFB47, 0x05E7, 0x05BC, 0,
5030 1, 0xFB48, 0x05E8, 0x05BC, 0,
5031 1, 0xFB49, 0x05E9, 0x05BC, 0,
5032 1, 0xFB4A, 0x05EA, 0x05BC, 0,
5033 1, 0xFB4B, 0x05D5, 0x05B9, 0,
5034 1, 0xFB4C, 0x05D1, 0x05BF, 0,
5035 1, 0xFB4D, 0x05DB, 0x05BF, 0,
5036 1, 0xFB4E, 0x05E4, 0x05BF, 0,
5037 16, 0xFB4F, 0x05D0, 0x05DC, 0,
5038 7, 0xFB50, 0x0671, 0,
5039 6, 0xFB51, 0x0671, 0,
5040 7, 0xFB52, 0x067B, 0,
5041 6, 0xFB53, 0x067B, 0,
5042 4, 0xFB54, 0x067B, 0,
5043 5, 0xFB55, 0x067B, 0,
5044 7, 0xFB56, 0x067E, 0,
5045 6, 0xFB57, 0x067E, 0,
5046 4, 0xFB58, 0x067E, 0,
5047 5, 0xFB59, 0x067E, 0,
5048 7, 0xFB5A, 0x0680, 0,
5049 6, 0xFB5B, 0x0680, 0,
5050 4, 0xFB5C, 0x0680, 0,
5051 5, 0xFB5D, 0x0680, 0,
5052 7, 0xFB5E, 0x067A, 0,
5053 6, 0xFB5F, 0x067A, 0,
5054 4, 0xFB60, 0x067A, 0,
5055 5, 0xFB61, 0x067A, 0,
5056 7, 0xFB62, 0x067F, 0,
5057 6, 0xFB63, 0x067F, 0,
5058 4, 0xFB64, 0x067F, 0,
5059 5, 0xFB65, 0x067F, 0,
5060 7, 0xFB66, 0x0679, 0,
5061 6, 0xFB67, 0x0679, 0,
5062 4, 0xFB68, 0x0679, 0,
5063 5, 0xFB69, 0x0679, 0,
5064 7, 0xFB6A, 0x06A4, 0,
5065 6, 0xFB6B, 0x06A4, 0,
5066 4, 0xFB6C, 0x06A4, 0,
5067 5, 0xFB6D, 0x06A4, 0,
5068 7, 0xFB6E, 0x06A6, 0,
5069 6, 0xFB6F, 0x06A6, 0,
5070 4, 0xFB70, 0x06A6, 0,
5071 5, 0xFB71, 0x06A6, 0,
5072 7, 0xFB72, 0x0684, 0,
5073 6, 0xFB73, 0x0684, 0,
5074 4, 0xFB74, 0x0684, 0,
5075 5, 0xFB75, 0x0684, 0,
5076 7, 0xFB76, 0x0683, 0,
5077 6, 0xFB77, 0x0683, 0,
5078 4, 0xFB78, 0x0683, 0,
5079 5, 0xFB79, 0x0683, 0,
5080 7, 0xFB7A, 0x0686, 0,
5081 6, 0xFB7B, 0x0686, 0,
5082 4, 0xFB7C, 0x0686, 0,
5083 5, 0xFB7D, 0x0686, 0,
5084 7, 0xFB7E, 0x0687, 0,
5085 6, 0xFB7F, 0x0687, 0,
5086 4, 0xFB80, 0x0687, 0,
5087 5, 0xFB81, 0x0687, 0,
5088 7, 0xFB82, 0x068D, 0,
5089 6, 0xFB83, 0x068D, 0,
5090 7, 0xFB84, 0x068C, 0,
5091 6, 0xFB85, 0x068C, 0,
5092 7, 0xFB86, 0x068E, 0,
5093 6, 0xFB87, 0x068E, 0,
5094 7, 0xFB88, 0x0688, 0,
5095 6, 0xFB89, 0x0688, 0,
5096 7, 0xFB8A, 0x0698, 0,
5097 6, 0xFB8B, 0x0698, 0,
5098 7, 0xFB8C, 0x0691, 0,
5099 6, 0xFB8D, 0x0691, 0,
5100 7, 0xFB8E, 0x06A9, 0,
5101 6, 0xFB8F, 0x06A9, 0,
5102 4, 0xFB90, 0x06A9, 0,
5103 5, 0xFB91, 0x06A9, 0,
5104 7, 0xFB92, 0x06AF, 0,
5105 6, 0xFB93, 0x06AF, 0,
5106 4, 0xFB94, 0x06AF, 0,
5107 5, 0xFB95, 0x06AF, 0,
5108 7, 0xFB96, 0x06B3, 0,
5109 6, 0xFB97, 0x06B3, 0,
5110 4, 0xFB98, 0x06B3, 0,
5111 5, 0xFB99, 0x06B3, 0,
5112 7, 0xFB9A, 0x06B1, 0,
5113 6, 0xFB9B, 0x06B1, 0,
5114 4, 0xFB9C, 0x06B1, 0,
5115 5, 0xFB9D, 0x06B1, 0,
5116 7, 0xFB9E, 0x06BA, 0,
5117 6, 0xFB9F, 0x06BA, 0,
5118 7, 0xFBA0, 0x06BB, 0,
5119 6, 0xFBA1, 0x06BB, 0,
5120 4, 0xFBA2, 0x06BB, 0,
5121 5, 0xFBA3, 0x06BB, 0,
5122 7, 0xFBA4, 0x06C0, 0,
5123 6, 0xFBA5, 0x06C0, 0,
5124 7, 0xFBA6, 0x06C1, 0,
5125 6, 0xFBA7, 0x06C1, 0,
5126 4, 0xFBA8, 0x06C1, 0,
5127 5, 0xFBA9, 0x06C1, 0,
5128 7, 0xFBAA, 0x06BE, 0,
5129 6, 0xFBAB, 0x06BE, 0,
5130 4, 0xFBAC, 0x06BE, 0,
5131 5, 0xFBAD, 0x06BE, 0,
5132 7, 0xFBAE, 0x06D2, 0,
5133 6, 0xFBAF, 0x06D2, 0,
5134 7, 0xFBB0, 0x06D3, 0,
5135 6, 0xFBB1, 0x06D3, 0,
5136 7, 0xFBD3, 0x06AD, 0,
5137 6, 0xFBD4, 0x06AD, 0,
5138 4, 0xFBD5, 0x06AD, 0,
5139 5, 0xFBD6, 0x06AD, 0,
5140 7, 0xFBD7, 0x06C7, 0,
5141 6, 0xFBD8, 0x06C7, 0,
5142 7, 0xFBD9, 0x06C6, 0,
5143 6, 0xFBDA, 0x06C6, 0,
5144 7, 0xFBDB, 0x06C8, 0,
5145 6, 0xFBDC, 0x06C8, 0,
5146 7, 0xFBDD, 0x0677, 0,
5147 7, 0xFBDE, 0x06CB, 0,
5148 6, 0xFBDF, 0x06CB, 0,
5149 7, 0xFBE0, 0x06C5, 0,
5150 6, 0xFBE1, 0x06C5, 0,
5151 7, 0xFBE2, 0x06C9, 0,
5152 6, 0xFBE3, 0x06C9, 0,
5153 7, 0xFBE4, 0x06D0, 0,
5154 6, 0xFBE5, 0x06D0, 0,
5155 4, 0xFBE6, 0x06D0, 0,
5156 5, 0xFBE7, 0x06D0, 0,
5157 4, 0xFBE8, 0x0649, 0,
5158 5, 0xFBE9, 0x0649, 0,
5159 7, 0xFBEA, 0x0626, 0x0627, 0,
5160 6, 0xFBEB, 0x0626, 0x0627, 0,
5161 7, 0xFBEC, 0x0626, 0x06D5, 0,
5162 6, 0xFBED, 0x0626, 0x06D5, 0,
5163 7, 0xFBEE, 0x0626, 0x0648, 0,
5164 6, 0xFBEF, 0x0626, 0x0648, 0,
5165 7, 0xFBF0, 0x0626, 0x06C7, 0,
5166 6, 0xFBF1, 0x0626, 0x06C7, 0,
5167 7, 0xFBF2, 0x0626, 0x06C6, 0,
5168 6, 0xFBF3, 0x0626, 0x06C6, 0,
5169 7, 0xFBF4, 0x0626, 0x06C8, 0,
5170 6, 0xFBF5, 0x0626, 0x06C8, 0,
5171 7, 0xFBF6, 0x0626, 0x06D0, 0,
5172 6, 0xFBF7, 0x0626, 0x06D0, 0,
5173 4, 0xFBF8, 0x0626, 0x06D0, 0,
5174 7, 0xFBF9, 0x0626, 0x0649, 0,
5175 6, 0xFBFA, 0x0626, 0x0649, 0,
5176 4, 0xFBFB, 0x0626, 0x0649, 0,
5177 7, 0xFBFC, 0x06CC, 0,
5178 6, 0xFBFD, 0x06CC, 0,
5179 4, 0xFBFE, 0x06CC, 0,
5180 5, 0xFBFF, 0x06CC, 0,
5181 7, 0xFC00, 0x0626, 0x062C, 0,
5182 7, 0xFC01, 0x0626, 0x062D, 0,
5183 7, 0xFC02, 0x0626, 0x0645, 0,
5184 7, 0xFC03, 0x0626, 0x0649, 0,
5185 7, 0xFC04, 0x0626, 0x064A, 0,
5186 7, 0xFC05, 0x0628, 0x062C, 0,
5187 7, 0xFC06, 0x0628, 0x062D, 0,
5188 7, 0xFC07, 0x0628, 0x062E, 0,
5189 7, 0xFC08, 0x0628, 0x0645, 0,
5190 7, 0xFC09, 0x0628, 0x0649, 0,
5191 7, 0xFC0A, 0x0628, 0x064A, 0,
5192 7, 0xFC0B, 0x062A, 0x062C, 0,
5193 7, 0xFC0C, 0x062A, 0x062D, 0,
5194 7, 0xFC0D, 0x062A, 0x062E, 0,
5195 7, 0xFC0E, 0x062A, 0x0645, 0,
5196 7, 0xFC0F, 0x062A, 0x0649, 0,
5197 7, 0xFC10, 0x062A, 0x064A, 0,
5198 7, 0xFC11, 0x062B, 0x062C, 0,
5199 7, 0xFC12, 0x062B, 0x0645, 0,
5200 7, 0xFC13, 0x062B, 0x0649, 0,
5201 7, 0xFC14, 0x062B, 0x064A, 0,
5202 7, 0xFC15, 0x062C, 0x062D, 0,
5203 7, 0xFC16, 0x062C, 0x0645, 0,
5204 7, 0xFC17, 0x062D, 0x062C, 0,
5205 7, 0xFC18, 0x062D, 0x0645, 0,
5206 7, 0xFC19, 0x062E, 0x062C, 0,
5207 7, 0xFC1A, 0x062E, 0x062D, 0,
5208 7, 0xFC1B, 0x062E, 0x0645, 0,
5209 7, 0xFC1C, 0x0633, 0x062C, 0,
5210 7, 0xFC1D, 0x0633, 0x062D, 0,
5211 7, 0xFC1E, 0x0633, 0x062E, 0,
5212 7, 0xFC1F, 0x0633, 0x0645, 0,
5213 7, 0xFC20, 0x0635, 0x062D, 0,
5214 7, 0xFC21, 0x0635, 0x0645, 0,
5215 7, 0xFC22, 0x0636, 0x062C, 0,
5216 7, 0xFC23, 0x0636, 0x062D, 0,
5217 7, 0xFC24, 0x0636, 0x062E, 0,
5218 7, 0xFC25, 0x0636, 0x0645, 0,
5219 7, 0xFC26, 0x0637, 0x062D, 0,
5220 7, 0xFC27, 0x0637, 0x0645, 0,
5221 7, 0xFC28, 0x0638, 0x0645, 0,
5222 7, 0xFC29, 0x0639, 0x062C, 0,
5223 7, 0xFC2A, 0x0639, 0x0645, 0,
5224 7, 0xFC2B, 0x063A, 0x062C, 0,
5225 7, 0xFC2C, 0x063A, 0x0645, 0,
5226 7, 0xFC2D, 0x0641, 0x062C, 0,
5227 7, 0xFC2E, 0x0641, 0x062D, 0,
5228 7, 0xFC2F, 0x0641, 0x062E, 0,
5229 7, 0xFC30, 0x0641, 0x0645, 0,
5230 7, 0xFC31, 0x0641, 0x0649, 0,
5231 7, 0xFC32, 0x0641, 0x064A, 0,
5232 7, 0xFC33, 0x0642, 0x062D, 0,
5233 7, 0xFC34, 0x0642, 0x0645, 0,
5234 7, 0xFC35, 0x0642, 0x0649, 0,
5235 7, 0xFC36, 0x0642, 0x064A, 0,
5236 7, 0xFC37, 0x0643, 0x0627, 0,
5237 7, 0xFC38, 0x0643, 0x062C, 0,
5238 7, 0xFC39, 0x0643, 0x062D, 0,
5239 7, 0xFC3A, 0x0643, 0x062E, 0,
5240 7, 0xFC3B, 0x0643, 0x0644, 0,
5241 7, 0xFC3C, 0x0643, 0x0645, 0,
5242 7, 0xFC3D, 0x0643, 0x0649, 0,
5243 7, 0xFC3E, 0x0643, 0x064A, 0,
5244 7, 0xFC3F, 0x0644, 0x062C, 0,
5245 7, 0xFC40, 0x0644, 0x062D, 0,
5246 7, 0xFC41, 0x0644, 0x062E, 0,
5247 7, 0xFC42, 0x0644, 0x0645, 0,
5248 7, 0xFC43, 0x0644, 0x0649, 0,
5249 7, 0xFC44, 0x0644, 0x064A, 0,
5250 7, 0xFC45, 0x0645, 0x062C, 0,
5251 7, 0xFC46, 0x0645, 0x062D, 0,
5252 7, 0xFC47, 0x0645, 0x062E, 0,
5253 7, 0xFC48, 0x0645, 0x0645, 0,
5254 7, 0xFC49, 0x0645, 0x0649, 0,
5255 7, 0xFC4A, 0x0645, 0x064A, 0,
5256 7, 0xFC4B, 0x0646, 0x062C, 0,
5257 7, 0xFC4C, 0x0646, 0x062D, 0,
5258 7, 0xFC4D, 0x0646, 0x062E, 0,
5259 7, 0xFC4E, 0x0646, 0x0645, 0,
5260 7, 0xFC4F, 0x0646, 0x0649, 0,
5261 7, 0xFC50, 0x0646, 0x064A, 0,
5262 7, 0xFC51, 0x0647, 0x062C, 0,
5263 7, 0xFC52, 0x0647, 0x0645, 0,
5264 7, 0xFC53, 0x0647, 0x0649, 0,
5265 7, 0xFC54, 0x0647, 0x064A, 0,
5266 7, 0xFC55, 0x064A, 0x062C, 0,
5267 7, 0xFC56, 0x064A, 0x062D, 0,
5268 7, 0xFC57, 0x064A, 0x062E, 0,
5269 7, 0xFC58, 0x064A, 0x0645, 0,
5270 7, 0xFC59, 0x064A, 0x0649, 0,
5271 7, 0xFC5A, 0x064A, 0x064A, 0,
5272 7, 0xFC5B, 0x0630, 0x0670, 0,
5273 7, 0xFC5C, 0x0631, 0x0670, 0,
5274 7, 0xFC5D, 0x0649, 0x0670, 0,
5275 7, 0xFC5E, 0x0020, 0x064C, 0x0651, 0,
5276 7, 0xFC5F, 0x0020, 0x064D, 0x0651, 0,
5277 7, 0xFC60, 0x0020, 0x064E, 0x0651, 0,
5278 7, 0xFC61, 0x0020, 0x064F, 0x0651, 0,
5279 7, 0xFC62, 0x0020, 0x0650, 0x0651, 0,
5280 7, 0xFC63, 0x0020, 0x0651, 0x0670, 0,
5281 6, 0xFC64, 0x0626, 0x0631, 0,
5282 6, 0xFC65, 0x0626, 0x0632, 0,
5283 6, 0xFC66, 0x0626, 0x0645, 0,
5284 6, 0xFC67, 0x0626, 0x0646, 0,
5285 6, 0xFC68, 0x0626, 0x0649, 0,
5286 6, 0xFC69, 0x0626, 0x064A, 0,
5287 6, 0xFC6A, 0x0628, 0x0631, 0,
5288 6, 0xFC6B, 0x0628, 0x0632, 0,
5289 6, 0xFC6C, 0x0628, 0x0645, 0,
5290 6, 0xFC6D, 0x0628, 0x0646, 0,
5291 6, 0xFC6E, 0x0628, 0x0649, 0,
5292 6, 0xFC6F, 0x0628, 0x064A, 0,
5293 6, 0xFC70, 0x062A, 0x0631, 0,
5294 6, 0xFC71, 0x062A, 0x0632, 0,
5295 6, 0xFC72, 0x062A, 0x0645, 0,
5296 6, 0xFC73, 0x062A, 0x0646, 0,
5297 6, 0xFC74, 0x062A, 0x0649, 0,
5298 6, 0xFC75, 0x062A, 0x064A, 0,
5299 6, 0xFC76, 0x062B, 0x0631, 0,
5300 6, 0xFC77, 0x062B, 0x0632, 0,
5301 6, 0xFC78, 0x062B, 0x0645, 0,
5302 6, 0xFC79, 0x062B, 0x0646, 0,
5303 6, 0xFC7A, 0x062B, 0x0649, 0,
5304 6, 0xFC7B, 0x062B, 0x064A, 0,
5305 6, 0xFC7C, 0x0641, 0x0649, 0,
5306 6, 0xFC7D, 0x0641, 0x064A, 0,
5307 6, 0xFC7E, 0x0642, 0x0649, 0,
5308 6, 0xFC7F, 0x0642, 0x064A, 0,
5309 6, 0xFC80, 0x0643, 0x0627, 0,
5310 6, 0xFC81, 0x0643, 0x0644, 0,
5311 6, 0xFC82, 0x0643, 0x0645, 0,
5312 6, 0xFC83, 0x0643, 0x0649, 0,
5313 6, 0xFC84, 0x0643, 0x064A, 0,
5314 6, 0xFC85, 0x0644, 0x0645, 0,
5315 6, 0xFC86, 0x0644, 0x0649, 0,
5316 6, 0xFC87, 0x0644, 0x064A, 0,
5317 6, 0xFC88, 0x0645, 0x0627, 0,
5318 6, 0xFC89, 0x0645, 0x0645, 0,
5319 6, 0xFC8A, 0x0646, 0x0631, 0,
5320 6, 0xFC8B, 0x0646, 0x0632, 0,
5321 6, 0xFC8C, 0x0646, 0x0645, 0,
5322 6, 0xFC8D, 0x0646, 0x0646, 0,
5323 6, 0xFC8E, 0x0646, 0x0649, 0,
5324 6, 0xFC8F, 0x0646, 0x064A, 0,
5325 6, 0xFC90, 0x0649, 0x0670, 0,
5326 6, 0xFC91, 0x064A, 0x0631, 0,
5327 6, 0xFC92, 0x064A, 0x0632, 0,
5328 6, 0xFC93, 0x064A, 0x0645, 0,
5329 6, 0xFC94, 0x064A, 0x0646, 0,
5330 6, 0xFC95, 0x064A, 0x0649, 0,
5331 6, 0xFC96, 0x064A, 0x064A, 0,
5332 4, 0xFC97, 0x0626, 0x062C, 0,
5333 4, 0xFC98, 0x0626, 0x062D, 0,
5334 4, 0xFC99, 0x0626, 0x062E, 0,
5335 4, 0xFC9A, 0x0626, 0x0645, 0,
5336 4, 0xFC9B, 0x0626, 0x0647, 0,
5337 4, 0xFC9C, 0x0628, 0x062C, 0,
5338 4, 0xFC9D, 0x0628, 0x062D, 0,
5339 4, 0xFC9E, 0x0628, 0x062E, 0,
5340 4, 0xFC9F, 0x0628, 0x0645, 0,
5341 4, 0xFCA0, 0x0628, 0x0647, 0,
5342 4, 0xFCA1, 0x062A, 0x062C, 0,
5343 4, 0xFCA2, 0x062A, 0x062D, 0,
5344 4, 0xFCA3, 0x062A, 0x062E, 0,
5345 4, 0xFCA4, 0x062A, 0x0645, 0,
5346 4, 0xFCA5, 0x062A, 0x0647, 0,
5347 4, 0xFCA6, 0x062B, 0x0645, 0,
5348 4, 0xFCA7, 0x062C, 0x062D, 0,
5349 4, 0xFCA8, 0x062C, 0x0645, 0,
5350 4, 0xFCA9, 0x062D, 0x062C, 0,
5351 4, 0xFCAA, 0x062D, 0x0645, 0,
5352 4, 0xFCAB, 0x062E, 0x062C, 0,
5353 4, 0xFCAC, 0x062E, 0x0645, 0,
5354 4, 0xFCAD, 0x0633, 0x062C, 0,
5355 4, 0xFCAE, 0x0633, 0x062D, 0,
5356 4, 0xFCAF, 0x0633, 0x062E, 0,
5357 4, 0xFCB0, 0x0633, 0x0645, 0,
5358 4, 0xFCB1, 0x0635, 0x062D, 0,
5359 4, 0xFCB2, 0x0635, 0x062E, 0,
5360 4, 0xFCB3, 0x0635, 0x0645, 0,
5361 4, 0xFCB4, 0x0636, 0x062C, 0,
5362 4, 0xFCB5, 0x0636, 0x062D, 0,
5363 4, 0xFCB6, 0x0636, 0x062E, 0,
5364 4, 0xFCB7, 0x0636, 0x0645, 0,
5365 4, 0xFCB8, 0x0637, 0x062D, 0,
5366 4, 0xFCB9, 0x0638, 0x0645, 0,
5367 4, 0xFCBA, 0x0639, 0x062C, 0,
5368 4, 0xFCBB, 0x0639, 0x0645, 0,
5369 4, 0xFCBC, 0x063A, 0x062C, 0,
5370 4, 0xFCBD, 0x063A, 0x0645, 0,
5371 4, 0xFCBE, 0x0641, 0x062C, 0,
5372 4, 0xFCBF, 0x0641, 0x062D, 0,
5373 4, 0xFCC0, 0x0641, 0x062E, 0,
5374 4, 0xFCC1, 0x0641, 0x0645, 0,
5375 4, 0xFCC2, 0x0642, 0x062D, 0,
5376 4, 0xFCC3, 0x0642, 0x0645, 0,
5377 4, 0xFCC4, 0x0643, 0x062C, 0,
5378 4, 0xFCC5, 0x0643, 0x062D, 0,
5379 4, 0xFCC6, 0x0643, 0x062E, 0,
5380 4, 0xFCC7, 0x0643, 0x0644, 0,
5381 4, 0xFCC8, 0x0643, 0x0645, 0,
5382 4, 0xFCC9, 0x0644, 0x062C, 0,
5383 4, 0xFCCA, 0x0644, 0x062D, 0,
5384 4, 0xFCCB, 0x0644, 0x062E, 0,
5385 4, 0xFCCC, 0x0644, 0x0645, 0,
5386 4, 0xFCCD, 0x0644, 0x0647, 0,
5387 4, 0xFCCE, 0x0645, 0x062C, 0,
5388 4, 0xFCCF, 0x0645, 0x062D, 0,
5389 4, 0xFCD0, 0x0645, 0x062E, 0,
5390 4, 0xFCD1, 0x0645, 0x0645, 0,
5391 4, 0xFCD2, 0x0646, 0x062C, 0,
5392 4, 0xFCD3, 0x0646, 0x062D, 0,
5393 4, 0xFCD4, 0x0646, 0x062E, 0,
5394 4, 0xFCD5, 0x0646, 0x0645, 0,
5395 4, 0xFCD6, 0x0646, 0x0647, 0,
5396 4, 0xFCD7, 0x0647, 0x062C, 0,
5397 4, 0xFCD8, 0x0647, 0x0645, 0,
5398 4, 0xFCD9, 0x0647, 0x0670, 0,
5399 4, 0xFCDA, 0x064A, 0x062C, 0,
5400 4, 0xFCDB, 0x064A, 0x062D, 0,
5401 4, 0xFCDC, 0x064A, 0x062E, 0,
5402 4, 0xFCDD, 0x064A, 0x0645, 0,
5403 4, 0xFCDE, 0x064A, 0x0647, 0,
5404 5, 0xFCDF, 0x0626, 0x0645, 0,
5405 5, 0xFCE0, 0x0626, 0x0647, 0,
5406 5, 0xFCE1, 0x0628, 0x0645, 0,
5407 5, 0xFCE2, 0x0628, 0x0647, 0,
5408 5, 0xFCE3, 0x062A, 0x0645, 0,
5409 5, 0xFCE4, 0x062A, 0x0647, 0,
5410 5, 0xFCE5, 0x062B, 0x0645, 0,
5411 5, 0xFCE6, 0x062B, 0x0647, 0,
5412 5, 0xFCE7, 0x0633, 0x0645, 0,
5413 5, 0xFCE8, 0x0633, 0x0647, 0,
5414 5, 0xFCE9, 0x0634, 0x0645, 0,
5415 5, 0xFCEA, 0x0634, 0x0647, 0,
5416 5, 0xFCEB, 0x0643, 0x0644, 0,
5417 5, 0xFCEC, 0x0643, 0x0645, 0,
5418 5, 0xFCED, 0x0644, 0x0645, 0,
5419 5, 0xFCEE, 0x0646, 0x0645, 0,
5420 5, 0xFCEF, 0x0646, 0x0647, 0,
5421 5, 0xFCF0, 0x064A, 0x0645, 0,
5422 5, 0xFCF1, 0x064A, 0x0647, 0,
5423 5, 0xFCF2, 0x0640, 0x064E, 0x0651, 0,
5424 5, 0xFCF3, 0x0640, 0x064F, 0x0651, 0,
5425 5, 0xFCF4, 0x0640, 0x0650, 0x0651, 0,
5426 7, 0xFCF5, 0x0637, 0x0649, 0,
5427 7, 0xFCF6, 0x0637, 0x064A, 0,
5428 7, 0xFCF7, 0x0639, 0x0649, 0,
5429 7, 0xFCF8, 0x0639, 0x064A, 0,
5430 7, 0xFCF9, 0x063A, 0x0649, 0,
5431 7, 0xFCFA, 0x063A, 0x064A, 0,
5432 7, 0xFCFB, 0x0633, 0x0649, 0,
5433 7, 0xFCFC, 0x0633, 0x064A, 0,
5434 7, 0xFCFD, 0x0634, 0x0649, 0,
5435 7, 0xFCFE, 0x0634, 0x064A, 0,
5436 7, 0xFCFF, 0x062D, 0x0649, 0,
5437 7, 0xFD00, 0x062D, 0x064A, 0,
5438 7, 0xFD01, 0x062C, 0x0649, 0,
5439 7, 0xFD02, 0x062C, 0x064A, 0,
5440 7, 0xFD03, 0x062E, 0x0649, 0,
5441 7, 0xFD04, 0x062E, 0x064A, 0,
5442 7, 0xFD05, 0x0635, 0x0649, 0,
5443 7, 0xFD06, 0x0635, 0x064A, 0,
5444 7, 0xFD07, 0x0636, 0x0649, 0,
5445 7, 0xFD08, 0x0636, 0x064A, 0,
5446 7, 0xFD09, 0x0634, 0x062C, 0,
5447 7, 0xFD0A, 0x0634, 0x062D, 0,
5448 7, 0xFD0B, 0x0634, 0x062E, 0,
5449 7, 0xFD0C, 0x0634, 0x0645, 0,
5450 7, 0xFD0D, 0x0634, 0x0631, 0,
5451 7, 0xFD0E, 0x0633, 0x0631, 0,
5452 7, 0xFD0F, 0x0635, 0x0631, 0,
5453 7, 0xFD10, 0x0636, 0x0631, 0,
5454 6, 0xFD11, 0x0637, 0x0649, 0,
5455 6, 0xFD12, 0x0637, 0x064A, 0,
5456 6, 0xFD13, 0x0639, 0x0649, 0,
5457 6, 0xFD14, 0x0639, 0x064A, 0,
5458 6, 0xFD15, 0x063A, 0x0649, 0,
5459 6, 0xFD16, 0x063A, 0x064A, 0,
5460 6, 0xFD17, 0x0633, 0x0649, 0,
5461 6, 0xFD18, 0x0633, 0x064A, 0,
5462 6, 0xFD19, 0x0634, 0x0649, 0,
5463 6, 0xFD1A, 0x0634, 0x064A, 0,
5464 6, 0xFD1B, 0x062D, 0x0649, 0,
5465 6, 0xFD1C, 0x062D, 0x064A, 0,
5466 6, 0xFD1D, 0x062C, 0x0649, 0,
5467 6, 0xFD1E, 0x062C, 0x064A, 0,
5468 6, 0xFD1F, 0x062E, 0x0649, 0,
5469 6, 0xFD20, 0x062E, 0x064A, 0,
5470 6, 0xFD21, 0x0635, 0x0649, 0,
5471 6, 0xFD22, 0x0635, 0x064A, 0,
5472 6, 0xFD23, 0x0636, 0x0649, 0,
5473 6, 0xFD24, 0x0636, 0x064A, 0,
5474 6, 0xFD25, 0x0634, 0x062C, 0,
5475 6, 0xFD26, 0x0634, 0x062D, 0,
5476 6, 0xFD27, 0x0634, 0x062E, 0,
5477 6, 0xFD28, 0x0634, 0x0645, 0,
5478 6, 0xFD29, 0x0634, 0x0631, 0,
5479 6, 0xFD2A, 0x0633, 0x0631, 0,
5480 6, 0xFD2B, 0x0635, 0x0631, 0,
5481 6, 0xFD2C, 0x0636, 0x0631, 0,
5482 4, 0xFD2D, 0x0634, 0x062C, 0,
5483 4, 0xFD2E, 0x0634, 0x062D, 0,
5484 4, 0xFD2F, 0x0634, 0x062E, 0,
5485 4, 0xFD30, 0x0634, 0x0645, 0,
5486 4, 0xFD31, 0x0633, 0x0647, 0,
5487 4, 0xFD32, 0x0634, 0x0647, 0,
5488 4, 0xFD33, 0x0637, 0x0645, 0,
5489 5, 0xFD34, 0x0633, 0x062C, 0,
5490 5, 0xFD35, 0x0633, 0x062D, 0,
5491 5, 0xFD36, 0x0633, 0x062E, 0,
5492 5, 0xFD37, 0x0634, 0x062C, 0,
5493 5, 0xFD38, 0x0634, 0x062D, 0,
5494 5, 0xFD39, 0x0634, 0x062E, 0,
5495 5, 0xFD3A, 0x0637, 0x0645, 0,
5496 5, 0xFD3B, 0x0638, 0x0645, 0,
5497 6, 0xFD3C, 0x0627, 0x064B, 0,
5498 7, 0xFD3D, 0x0627, 0x064B, 0,
5499 4, 0xFD50, 0x062A, 0x062C, 0x0645, 0,
5500 6, 0xFD51, 0x062A, 0x062D, 0x062C, 0,
5501 4, 0xFD52, 0x062A, 0x062D, 0x062C, 0,
5502 4, 0xFD53, 0x062A, 0x062D, 0x0645, 0,
5503 4, 0xFD54, 0x062A, 0x062E, 0x0645, 0,
5504 4, 0xFD55, 0x062A, 0x0645, 0x062C, 0,
5505 4, 0xFD56, 0x062A, 0x0645, 0x062D, 0,
5506 4, 0xFD57, 0x062A, 0x0645, 0x062E, 0,
5507 6, 0xFD58, 0x062C, 0x0645, 0x062D, 0,
5508 4, 0xFD59, 0x062C, 0x0645, 0x062D, 0,
5509 6, 0xFD5A, 0x062D, 0x0645, 0x064A, 0,
5510 6, 0xFD5B, 0x062D, 0x0645, 0x0649, 0,
5511 4, 0xFD5C, 0x0633, 0x062D, 0x062C, 0,
5512 4, 0xFD5D, 0x0633, 0x062C, 0x062D, 0,
5513 6, 0xFD5E, 0x0633, 0x062C, 0x0649, 0,
5514 6, 0xFD5F, 0x0633, 0x0645, 0x062D, 0,
5515 4, 0xFD60, 0x0633, 0x0645, 0x062D, 0,
5516 4, 0xFD61, 0x0633, 0x0645, 0x062C, 0,
5517 6, 0xFD62, 0x0633, 0x0645, 0x0645, 0,
5518 4, 0xFD63, 0x0633, 0x0645, 0x0645, 0,
5519 6, 0xFD64, 0x0635, 0x062D, 0x062D, 0,
5520 4, 0xFD65, 0x0635, 0x062D, 0x062D, 0,
5521 6, 0xFD66, 0x0635, 0x0645, 0x0645, 0,
5522 6, 0xFD67, 0x0634, 0x062D, 0x0645, 0,
5523 4, 0xFD68, 0x0634, 0x062D, 0x0645, 0,
5524 6, 0xFD69, 0x0634, 0x062C, 0x064A, 0,
5525 6, 0xFD6A, 0x0634, 0x0645, 0x062E, 0,
5526 4, 0xFD6B, 0x0634, 0x0645, 0x062E, 0,
5527 6, 0xFD6C, 0x0634, 0x0645, 0x0645, 0,
5528 4, 0xFD6D, 0x0634, 0x0645, 0x0645, 0,
5529 6, 0xFD6E, 0x0636, 0x062D, 0x0649, 0,
5530 6, 0xFD6F, 0x0636, 0x062E, 0x0645, 0,
5531 4, 0xFD70, 0x0636, 0x062E, 0x0645, 0,
5532 6, 0xFD71, 0x0637, 0x0645, 0x062D, 0,
5533 4, 0xFD72, 0x0637, 0x0645, 0x062D, 0,
5534 4, 0xFD73, 0x0637, 0x0645, 0x0645, 0,
5535 6, 0xFD74, 0x0637, 0x0645, 0x064A, 0,
5536 6, 0xFD75, 0x0639, 0x062C, 0x0645, 0,
5537 6, 0xFD76, 0x0639, 0x0645, 0x0645, 0,
5538 4, 0xFD77, 0x0639, 0x0645, 0x0645, 0,
5539 6, 0xFD78, 0x0639, 0x0645, 0x0649, 0,
5540 6, 0xFD79, 0x063A, 0x0645, 0x0645, 0,
5541 6, 0xFD7A, 0x063A, 0x0645, 0x064A, 0,
5542 6, 0xFD7B, 0x063A, 0x0645, 0x0649, 0,
5543 6, 0xFD7C, 0x0641, 0x062E, 0x0645, 0,
5544 4, 0xFD7D, 0x0641, 0x062E, 0x0645, 0,
5545 6, 0xFD7E, 0x0642, 0x0645, 0x062D, 0,
5546 6, 0xFD7F, 0x0642, 0x0645, 0x0645, 0,
5547 6, 0xFD80, 0x0644, 0x062D, 0x0645, 0,
5548 6, 0xFD81, 0x0644, 0x062D, 0x064A, 0,
5549 6, 0xFD82, 0x0644, 0x062D, 0x0649, 0,
5550 4, 0xFD83, 0x0644, 0x062C, 0x062C, 0,
5551 6, 0xFD84, 0x0644, 0x062C, 0x062C, 0,
5552 6, 0xFD85, 0x0644, 0x062E, 0x0645, 0,
5553 4, 0xFD86, 0x0644, 0x062E, 0x0645, 0,
5554 6, 0xFD87, 0x0644, 0x0645, 0x062D, 0,
5555 4, 0xFD88, 0x0644, 0x0645, 0x062D, 0,
5556 4, 0xFD89, 0x0645, 0x062D, 0x062C, 0,
5557 4, 0xFD8A, 0x0645, 0x062D, 0x0645, 0,
5558 6, 0xFD8B, 0x0645, 0x062D, 0x064A, 0,
5559 4, 0xFD8C, 0x0645, 0x062C, 0x062D, 0,
5560 4, 0xFD8D, 0x0645, 0x062C, 0x0645, 0,
5561 4, 0xFD8E, 0x0645, 0x062E, 0x062C, 0,
5562 4, 0xFD8F, 0x0645, 0x062E, 0x0645, 0,
5563 4, 0xFD92, 0x0645, 0x062C, 0x062E, 0,
5564 4, 0xFD93, 0x0647, 0x0645, 0x062C, 0,
5565 4, 0xFD94, 0x0647, 0x0645, 0x0645, 0,
5566 4, 0xFD95, 0x0646, 0x062D, 0x0645, 0,
5567 6, 0xFD96, 0x0646, 0x062D, 0x0649, 0,
5568 6, 0xFD97, 0x0646, 0x062C, 0x0645, 0,
5569 4, 0xFD98, 0x0646, 0x062C, 0x0645, 0,
5570 6, 0xFD99, 0x0646, 0x062C, 0x0649, 0,
5571 6, 0xFD9A, 0x0646, 0x0645, 0x064A, 0,
5572 6, 0xFD9B, 0x0646, 0x0645, 0x0649, 0,
5573 6, 0xFD9C, 0x064A, 0x0645, 0x0645, 0,
5574 4, 0xFD9D, 0x064A, 0x0645, 0x0645, 0,
5575 6, 0xFD9E, 0x0628, 0x062E, 0x064A, 0,
5576 6, 0xFD9F, 0x062A, 0x062C, 0x064A, 0,
5577 6, 0xFDA0, 0x062A, 0x062C, 0x0649, 0,
5578 6, 0xFDA1, 0x062A, 0x062E, 0x064A, 0,
5579 6, 0xFDA2, 0x062A, 0x062E, 0x0649, 0,
5580 6, 0xFDA3, 0x062A, 0x0645, 0x064A, 0,
5581 6, 0xFDA4, 0x062A, 0x0645, 0x0649, 0,
5582 6, 0xFDA5, 0x062C, 0x0645, 0x064A, 0,
5583 6, 0xFDA6, 0x062C, 0x062D, 0x0649, 0,
5584 6, 0xFDA7, 0x062C, 0x0645, 0x0649, 0,
5585 6, 0xFDA8, 0x0633, 0x062E, 0x0649, 0,
5586 6, 0xFDA9, 0x0635, 0x062D, 0x064A, 0,
5587 6, 0xFDAA, 0x0634, 0x062D, 0x064A, 0,
5588 6, 0xFDAB, 0x0636, 0x062D, 0x064A, 0,
5589 6, 0xFDAC, 0x0644, 0x062C, 0x064A, 0,
5590 6, 0xFDAD, 0x0644, 0x0645, 0x064A, 0,
5591 6, 0xFDAE, 0x064A, 0x062D, 0x064A, 0,
5592 6, 0xFDAF, 0x064A, 0x062C, 0x064A, 0,
5593 6, 0xFDB0, 0x064A, 0x0645, 0x064A, 0,
5594 6, 0xFDB1, 0x0645, 0x0645, 0x064A, 0,
5595 6, 0xFDB2, 0x0642, 0x0645, 0x064A, 0,
5596 6, 0xFDB3, 0x0646, 0x062D, 0x064A, 0,
5597 4, 0xFDB4, 0x0642, 0x0645, 0x062D, 0,
5598 4, 0xFDB5, 0x0644, 0x062D, 0x0645, 0,
5599 6, 0xFDB6, 0x0639, 0x0645, 0x064A, 0,
5600 6, 0xFDB7, 0x0643, 0x0645, 0x064A, 0,
5601 4, 0xFDB8, 0x0646, 0x062C, 0x062D, 0,
5602 6, 0xFDB9, 0x0645, 0x062E, 0x064A, 0,
5603 4, 0xFDBA, 0x0644, 0x062C, 0x0645, 0,
5604 6, 0xFDBB, 0x0643, 0x0645, 0x0645, 0,
5605 6, 0xFDBC, 0x0644, 0x062C, 0x0645, 0,
5606 6, 0xFDBD, 0x0646, 0x062C, 0x062D, 0,
5607 6, 0xFDBE, 0x062C, 0x062D, 0x064A, 0,
5608 6, 0xFDBF, 0x062D, 0x062C, 0x064A, 0,
5609 6, 0xFDC0, 0x0645, 0x062C, 0x064A, 0,
5610 6, 0xFDC1, 0x0641, 0x0645, 0x064A, 0,
5611 6, 0xFDC2, 0x0628, 0x062D, 0x064A, 0,
5612 4, 0xFDC3, 0x0643, 0x0645, 0x0645, 0,
5613 4, 0xFDC4, 0x0639, 0x062C, 0x0645, 0,
5614 4, 0xFDC5, 0x0635, 0x0645, 0x0645, 0,
5615 6, 0xFDC6, 0x0633, 0x062E, 0x064A, 0,
5616 6, 0xFDC7, 0x0646, 0x062C, 0x064A, 0,
5617 7, 0xFDF0, 0x0635, 0x0644, 0x06D2, 0,
5618 7, 0xFDF1, 0x0642, 0x0644, 0x06D2, 0,
5619 7, 0xFDF2, 0x0627, 0x0644, 0x0644, 0x0647, 0,
5620 7, 0xFDF3, 0x0627, 0x0643, 0x0628, 0x0631, 0,
5621 7, 0xFDF4, 0x0645, 0x062D, 0x0645, 0x062F, 0,
5622 7, 0xFDF5, 0x0635, 0x0644, 0x0639, 0x0645, 0,
5623 7, 0xFDF6, 0x0631, 0x0633, 0x0648, 0x0644, 0,
5624 7, 0xFDF7, 0x0639, 0x0644, 0x064A, 0x0647, 0,
5625 7, 0xFDF8, 0x0648, 0x0633, 0x0644, 0x0645, 0,
5626 7, 0xFDF9, 0x0635, 0x0644, 0x0649, 0,
5627 7, 0xFDFA, 0x0635, 0x0644, 0x0649, 0x0020, 0x0627, 0x0644, 0x0644, 0x0647, 0x0020, 0x0639, 0x0644, 0x064A, 0x0647, 0x0020, 0x0648, 0x0633, 0x0644, 0x0645, 0,
5628 7, 0xFDFB, 0x062C, 0x0644, 0x0020, 0x062C, 0x0644, 0x0627, 0x0644, 0x0647, 0,
5629 7, 0xFDFC, 0x0631, 0x06CC, 0x0627, 0x0644, 0,
5630 11, 0xFE30, 0x2025, 0,
5631 11, 0xFE31, 0x2014, 0,
5632 11, 0xFE32, 0x2013, 0,
5633 11, 0xFE33, 0x005F, 0,
5634 11, 0xFE34, 0x005F, 0,
5635 11, 0xFE35, 0x0028, 0,
5636 11, 0xFE36, 0x0029, 0,
5637 11, 0xFE37, 0x007B, 0,
5638 11, 0xFE38, 0x007D, 0,
5639 11, 0xFE39, 0x3014, 0,
5640 11, 0xFE3A, 0x3015, 0,
5641 11, 0xFE3B, 0x3010, 0,
5642 11, 0xFE3C, 0x3011, 0,
5643 11, 0xFE3D, 0x300A, 0,
5644 11, 0xFE3E, 0x300B, 0,
5645 11, 0xFE3F, 0x3008, 0,
5646 11, 0xFE40, 0x3009, 0,
5647 11, 0xFE41, 0x300C, 0,
5648 11, 0xFE42, 0x300D, 0,
5649 11, 0xFE43, 0x300E, 0,
5650 11, 0xFE44, 0x300F, 0,
5651 16, 0xFE49, 0x203E, 0,
5652 16, 0xFE4A, 0x203E, 0,
5653 16, 0xFE4B, 0x203E, 0,
5654 16, 0xFE4C, 0x203E, 0,
5655 16, 0xFE4D, 0x005F, 0,
5656 16, 0xFE4E, 0x005F, 0,
5657 16, 0xFE4F, 0x005F, 0,
5658 14, 0xFE50, 0x002C, 0,
5659 14, 0xFE51, 0x3001, 0,
5660 14, 0xFE52, 0x002E, 0,
5661 14, 0xFE54, 0x003B, 0,
5662 14, 0xFE55, 0x003A, 0,
5663 14, 0xFE56, 0x003F, 0,
5664 14, 0xFE57, 0x0021, 0,
5665 14, 0xFE58, 0x2014, 0,
5666 14, 0xFE59, 0x0028, 0,
5667 14, 0xFE5A, 0x0029, 0,
5668 14, 0xFE5B, 0x007B, 0,
5669 14, 0xFE5C, 0x007D, 0,
5670 14, 0xFE5D, 0x3014, 0,
5671 14, 0xFE5E, 0x3015, 0,
5672 14, 0xFE5F, 0x0023, 0,
5673 14, 0xFE60, 0x0026, 0,
5674 14, 0xFE61, 0x002A, 0,
5675 14, 0xFE62, 0x002B, 0,
5676 14, 0xFE63, 0x002D, 0,
5677 14, 0xFE64, 0x003C, 0,
5678 14, 0xFE65, 0x003E, 0,
5679 14, 0xFE66, 0x003D, 0,
5680 14, 0xFE68, 0x005C, 0,
5681 14, 0xFE69, 0x0024, 0,
5682 14, 0xFE6A, 0x0025, 0,
5683 14, 0xFE6B, 0x0040, 0,
5684 7, 0xFE70, 0x0020, 0x064B, 0,
5685 5, 0xFE71, 0x0640, 0x064B, 0,
5686 7, 0xFE72, 0x0020, 0x064C, 0,
5687 7, 0xFE74, 0x0020, 0x064D, 0,
5688 7, 0xFE76, 0x0020, 0x064E, 0,
5689 5, 0xFE77, 0x0640, 0x064E, 0,
5690 7, 0xFE78, 0x0020, 0x064F, 0,
5691 5, 0xFE79, 0x0640, 0x064F, 0,
5692 7, 0xFE7A, 0x0020, 0x0650, 0,
5693 5, 0xFE7B, 0x0640, 0x0650, 0,
5694 7, 0xFE7C, 0x0020, 0x0651, 0,
5695 5, 0xFE7D, 0x0640, 0x0651, 0,
5696 7, 0xFE7E, 0x0020, 0x0652, 0,
5697 5, 0xFE7F, 0x0640, 0x0652, 0,
5698 7, 0xFE80, 0x0621, 0,
5699 7, 0xFE81, 0x0622, 0,
5700 6, 0xFE82, 0x0622, 0,
5701 7, 0xFE83, 0x0623, 0,
5702 6, 0xFE84, 0x0623, 0,
5703 7, 0xFE85, 0x0624, 0,
5704 6, 0xFE86, 0x0624, 0,
5705 7, 0xFE87, 0x0625, 0,
5706 6, 0xFE88, 0x0625, 0,
5707 7, 0xFE89, 0x0626, 0,
5708 6, 0xFE8A, 0x0626, 0,
5709 4, 0xFE8B, 0x0626, 0,
5710 5, 0xFE8C, 0x0626, 0,
5711 7, 0xFE8D, 0x0627, 0,
5712 6, 0xFE8E, 0x0627, 0,
5713 7, 0xFE8F, 0x0628, 0,
5714 6, 0xFE90, 0x0628, 0,
5715 4, 0xFE91, 0x0628, 0,
5716 5, 0xFE92, 0x0628, 0,
5717 7, 0xFE93, 0x0629, 0,
5718 6, 0xFE94, 0x0629, 0,
5719 7, 0xFE95, 0x062A, 0,
5720 6, 0xFE96, 0x062A, 0,
5721 4, 0xFE97, 0x062A, 0,
5722 5, 0xFE98, 0x062A, 0,
5723 7, 0xFE99, 0x062B, 0,
5724 6, 0xFE9A, 0x062B, 0,
5725 4, 0xFE9B, 0x062B, 0,
5726 5, 0xFE9C, 0x062B, 0,
5727 7, 0xFE9D, 0x062C, 0,
5728 6, 0xFE9E, 0x062C, 0,
5729 4, 0xFE9F, 0x062C, 0,
5730 5, 0xFEA0, 0x062C, 0,
5731 7, 0xFEA1, 0x062D, 0,
5732 6, 0xFEA2, 0x062D, 0,
5733 4, 0xFEA3, 0x062D, 0,
5734 5, 0xFEA4, 0x062D, 0,
5735 7, 0xFEA5, 0x062E, 0,
5736 6, 0xFEA6, 0x062E, 0,
5737 4, 0xFEA7, 0x062E, 0,
5738 5, 0xFEA8, 0x062E, 0,
5739 7, 0xFEA9, 0x062F, 0,
5740 6, 0xFEAA, 0x062F, 0,
5741 7, 0xFEAB, 0x0630, 0,
5742 6, 0xFEAC, 0x0630, 0,
5743 7, 0xFEAD, 0x0631, 0,
5744 6, 0xFEAE, 0x0631, 0,
5745 7, 0xFEAF, 0x0632, 0,
5746 6, 0xFEB0, 0x0632, 0,
5747 7, 0xFEB1, 0x0633, 0,
5748 6, 0xFEB2, 0x0633, 0,
5749 4, 0xFEB3, 0x0633, 0,
5750 5, 0xFEB4, 0x0633, 0,
5751 7, 0xFEB5, 0x0634, 0,
5752 6, 0xFEB6, 0x0634, 0,
5753 4, 0xFEB7, 0x0634, 0,
5754 5, 0xFEB8, 0x0634, 0,
5755 7, 0xFEB9, 0x0635, 0,
5756 6, 0xFEBA, 0x0635, 0,
5757 4, 0xFEBB, 0x0635, 0,
5758 5, 0xFEBC, 0x0635, 0,
5759 7, 0xFEBD, 0x0636, 0,
5760 6, 0xFEBE, 0x0636, 0,
5761 4, 0xFEBF, 0x0636, 0,
5762 5, 0xFEC0, 0x0636, 0,
5763 7, 0xFEC1, 0x0637, 0,
5764 6, 0xFEC2, 0x0637, 0,
5765 4, 0xFEC3, 0x0637, 0,
5766 5, 0xFEC4, 0x0637, 0,
5767 7, 0xFEC5, 0x0638, 0,
5768 6, 0xFEC6, 0x0638, 0,
5769 4, 0xFEC7, 0x0638, 0,
5770 5, 0xFEC8, 0x0638, 0,
5771 7, 0xFEC9, 0x0639, 0,
5772 6, 0xFECA, 0x0639, 0,
5773 4, 0xFECB, 0x0639, 0,
5774 5, 0xFECC, 0x0639, 0,
5775 7, 0xFECD, 0x063A, 0,
5776 6, 0xFECE, 0x063A, 0,
5777 4, 0xFECF, 0x063A, 0,
5778 5, 0xFED0, 0x063A, 0,
5779 7, 0xFED1, 0x0641, 0,
5780 6, 0xFED2, 0x0641, 0,
5781 4, 0xFED3, 0x0641, 0,
5782 5, 0xFED4, 0x0641, 0,
5783 7, 0xFED5, 0x0642, 0,
5784 6, 0xFED6, 0x0642, 0,
5785 4, 0xFED7, 0x0642, 0,
5786 5, 0xFED8, 0x0642, 0,
5787 7, 0xFED9, 0x0643, 0,
5788 6, 0xFEDA, 0x0643, 0,
5789 4, 0xFEDB, 0x0643, 0,
5790 5, 0xFEDC, 0x0643, 0,
5791 7, 0xFEDD, 0x0644, 0,
5792 6, 0xFEDE, 0x0644, 0,
5793 4, 0xFEDF, 0x0644, 0,
5794 5, 0xFEE0, 0x0644, 0,
5795 7, 0xFEE1, 0x0645, 0,
5796 6, 0xFEE2, 0x0645, 0,
5797 4, 0xFEE3, 0x0645, 0,
5798 5, 0xFEE4, 0x0645, 0,
5799 7, 0xFEE5, 0x0646, 0,
5800 6, 0xFEE6, 0x0646, 0,
5801 4, 0xFEE7, 0x0646, 0,
5802 5, 0xFEE8, 0x0646, 0,
5803 7, 0xFEE9, 0x0647, 0,
5804 6, 0xFEEA, 0x0647, 0,
5805 4, 0xFEEB, 0x0647, 0,
5806 5, 0xFEEC, 0x0647, 0,
5807 7, 0xFEED, 0x0648, 0,
5808 6, 0xFEEE, 0x0648, 0,
5809 7, 0xFEEF, 0x0649, 0,
5810 6, 0xFEF0, 0x0649, 0,
5811 7, 0xFEF1, 0x064A, 0,
5812 6, 0xFEF2, 0x064A, 0,
5813 4, 0xFEF3, 0x064A, 0,
5814 5, 0xFEF4, 0x064A, 0,
5815 7, 0xFEF5, 0x0644, 0x0622, 0,
5816 6, 0xFEF6, 0x0644, 0x0622, 0,
5817 7, 0xFEF7, 0x0644, 0x0623, 0,
5818 6, 0xFEF8, 0x0644, 0x0623, 0,
5819 7, 0xFEF9, 0x0644, 0x0625, 0,
5820 6, 0xFEFA, 0x0644, 0x0625, 0,
5821 7, 0xFEFB, 0x0644, 0x0627, 0,
5822 6, 0xFEFC, 0x0644, 0x0627, 0,
5823 12, 0xFF01, 0x0021, 0,
5824 12, 0xFF02, 0x0022, 0,
5825 12, 0xFF03, 0x0023, 0,
5826 12, 0xFF04, 0x0024, 0,
5827 12, 0xFF05, 0x0025, 0,
5828 12, 0xFF06, 0x0026, 0,
5829 12, 0xFF07, 0x0027, 0,
5830 12, 0xFF08, 0x0028, 0,
5831 12, 0xFF09, 0x0029, 0,
5832 12, 0xFF0A, 0x002A, 0,
5833 12, 0xFF0B, 0x002B, 0,
5834 12, 0xFF0C, 0x002C, 0,
5835 12, 0xFF0D, 0x002D, 0,
5836 12, 0xFF0E, 0x002E, 0,
5837 12, 0xFF0F, 0x002F, 0,
5838 12, 0xFF10, 0x0030, 0,
5839 12, 0xFF11, 0x0031, 0,
5840 12, 0xFF12, 0x0032, 0,
5841 12, 0xFF13, 0x0033, 0,
5842 12, 0xFF14, 0x0034, 0,
5843 12, 0xFF15, 0x0035, 0,
5844 12, 0xFF16, 0x0036, 0,
5845 12, 0xFF17, 0x0037, 0,
5846 12, 0xFF18, 0x0038, 0,
5847 12, 0xFF19, 0x0039, 0,
5848 12, 0xFF1A, 0x003A, 0,
5849 12, 0xFF1B, 0x003B, 0,
5850 12, 0xFF1C, 0x003C, 0,
5851 12, 0xFF1D, 0x003D, 0,
5852 12, 0xFF1E, 0x003E, 0,
5853 12, 0xFF1F, 0x003F, 0,
5854 12, 0xFF20, 0x0040, 0,
5855 12, 0xFF21, 0x0041, 0,
5856 12, 0xFF22, 0x0042, 0,
5857 12, 0xFF23, 0x0043, 0,
5858 12, 0xFF24, 0x0044, 0,
5859 12, 0xFF25, 0x0045, 0,
5860 12, 0xFF26, 0x0046, 0,
5861 12, 0xFF27, 0x0047, 0,
5862 12, 0xFF28, 0x0048, 0,
5863 12, 0xFF29, 0x0049, 0,
5864 12, 0xFF2A, 0x004A, 0,
5865 12, 0xFF2B, 0x004B, 0,
5866 12, 0xFF2C, 0x004C, 0,
5867 12, 0xFF2D, 0x004D, 0,
5868 12, 0xFF2E, 0x004E, 0,
5869 12, 0xFF2F, 0x004F, 0,
5870 12, 0xFF30, 0x0050, 0,
5871 12, 0xFF31, 0x0051, 0,
5872 12, 0xFF32, 0x0052, 0,
5873 12, 0xFF33, 0x0053, 0,
5874 12, 0xFF34, 0x0054, 0,
5875 12, 0xFF35, 0x0055, 0,
5876 12, 0xFF36, 0x0056, 0,
5877 12, 0xFF37, 0x0057, 0,
5878 12, 0xFF38, 0x0058, 0,
5879 12, 0xFF39, 0x0059, 0,
5880 12, 0xFF3A, 0x005A, 0,
5881 12, 0xFF3B, 0x005B, 0,
5882 12, 0xFF3C, 0x005C, 0,
5883 12, 0xFF3D, 0x005D, 0,
5884 12, 0xFF3E, 0x005E, 0,
5885 12, 0xFF3F, 0x005F, 0,
5886 12, 0xFF40, 0x0060, 0,
5887 12, 0xFF41, 0x0061, 0,
5888 12, 0xFF42, 0x0062, 0,
5889 12, 0xFF43, 0x0063, 0,
5890 12, 0xFF44, 0x0064, 0,
5891 12, 0xFF45, 0x0065, 0,
5892 12, 0xFF46, 0x0066, 0,
5893 12, 0xFF47, 0x0067, 0,
5894 12, 0xFF48, 0x0068, 0,
5895 12, 0xFF49, 0x0069, 0,
5896 12, 0xFF4A, 0x006A, 0,
5897 12, 0xFF4B, 0x006B, 0,
5898 12, 0xFF4C, 0x006C, 0,
5899 12, 0xFF4D, 0x006D, 0,
5900 12, 0xFF4E, 0x006E, 0,
5901 12, 0xFF4F, 0x006F, 0,
5902 12, 0xFF50, 0x0070, 0,
5903 12, 0xFF51, 0x0071, 0,
5904 12, 0xFF52, 0x0072, 0,
5905 12, 0xFF53, 0x0073, 0,
5906 12, 0xFF54, 0x0074, 0,
5907 12, 0xFF55, 0x0075, 0,
5908 12, 0xFF56, 0x0076, 0,
5909 12, 0xFF57, 0x0077, 0,
5910 12, 0xFF58, 0x0078, 0,
5911 12, 0xFF59, 0x0079, 0,
5912 12, 0xFF5A, 0x007A, 0,
5913 12, 0xFF5B, 0x007B, 0,
5914 12, 0xFF5C, 0x007C, 0,
5915 12, 0xFF5D, 0x007D, 0,
5916 12, 0xFF5E, 0x007E, 0,
5917 12, 0xFF5F, 0x2985, 0,
5918 12, 0xFF60, 0x2986, 0,
5919 13, 0xFF61, 0x3002, 0,
5920 13, 0xFF62, 0x300C, 0,
5921 13, 0xFF63, 0x300D, 0,
5922 13, 0xFF64, 0x3001, 0,
5923 13, 0xFF65, 0x30FB, 0,
5924 13, 0xFF66, 0x30F2, 0,
5925 13, 0xFF67, 0x30A1, 0,
5926 13, 0xFF68, 0x30A3, 0,
5927 13, 0xFF69, 0x30A5, 0,
5928 13, 0xFF6A, 0x30A7, 0,
5929 13, 0xFF6B, 0x30A9, 0,
5930 13, 0xFF6C, 0x30E3, 0,
5931 13, 0xFF6D, 0x30E5, 0,
5932 13, 0xFF6E, 0x30E7, 0,
5933 13, 0xFF6F, 0x30C3, 0,
5934 13, 0xFF70, 0x30FC, 0,
5935 13, 0xFF71, 0x30A2, 0,
5936 13, 0xFF72, 0x30A4, 0,
5937 13, 0xFF73, 0x30A6, 0,
5938 13, 0xFF74, 0x30A8, 0,
5939 13, 0xFF75, 0x30AA, 0,
5940 13, 0xFF76, 0x30AB, 0,
5941 13, 0xFF77, 0x30AD, 0,
5942 13, 0xFF78, 0x30AF, 0,
5943 13, 0xFF79, 0x30B1, 0,
5944 13, 0xFF7A, 0x30B3, 0,
5945 13, 0xFF7B, 0x30B5, 0,
5946 13, 0xFF7C, 0x30B7, 0,
5947 13, 0xFF7D, 0x30B9, 0,
5948 13, 0xFF7E, 0x30BB, 0,
5949 13, 0xFF7F, 0x30BD, 0,
5950 13, 0xFF80, 0x30BF, 0,
5951 13, 0xFF81, 0x30C1, 0,
5952 13, 0xFF82, 0x30C4, 0,
5953 13, 0xFF83, 0x30C6, 0,
5954 13, 0xFF84, 0x30C8, 0,
5955 13, 0xFF85, 0x30CA, 0,
5956 13, 0xFF86, 0x30CB, 0,
5957 13, 0xFF87, 0x30CC, 0,
5958 13, 0xFF88, 0x30CD, 0,
5959 13, 0xFF89, 0x30CE, 0,
5960 13, 0xFF8A, 0x30CF, 0,
5961 13, 0xFF8B, 0x30D2, 0,
5962 13, 0xFF8C, 0x30D5, 0,
5963 13, 0xFF8D, 0x30D8, 0,
5964 13, 0xFF8E, 0x30DB, 0,
5965 13, 0xFF8F, 0x30DE, 0,
5966 13, 0xFF90, 0x30DF, 0,
5967 13, 0xFF91, 0x30E0, 0,
5968 13, 0xFF92, 0x30E1, 0,
5969 13, 0xFF93, 0x30E2, 0,
5970 13, 0xFF94, 0x30E4, 0,
5971 13, 0xFF95, 0x30E6, 0,
5972 13, 0xFF96, 0x30E8, 0,
5973 13, 0xFF97, 0x30E9, 0,
5974 13, 0xFF98, 0x30EA, 0,
5975 13, 0xFF99, 0x30EB, 0,
5976 13, 0xFF9A, 0x30EC, 0,
5977 13, 0xFF9B, 0x30ED, 0,
5978 13, 0xFF9C, 0x30EF, 0,
5979 13, 0xFF9D, 0x30F3, 0,
5980 13, 0xFF9E, 0x3099, 0,
5981 13, 0xFF9F, 0x309A, 0,
5982 13, 0xFFA0, 0x3164, 0,
5983 13, 0xFFA1, 0x3131, 0,
5984 13, 0xFFA2, 0x3132, 0,
5985 13, 0xFFA3, 0x3133, 0,
5986 13, 0xFFA4, 0x3134, 0,
5987 13, 0xFFA5, 0x3135, 0,
5988 13, 0xFFA6, 0x3136, 0,
5989 13, 0xFFA7, 0x3137, 0,
5990 13, 0xFFA8, 0x3138, 0,
5991 13, 0xFFA9, 0x3139, 0,
5992 13, 0xFFAA, 0x313A, 0,
5993 13, 0xFFAB, 0x313B, 0,
5994 13, 0xFFAC, 0x313C, 0,
5995 13, 0xFFAD, 0x313D, 0,
5996 13, 0xFFAE, 0x313E, 0,
5997 13, 0xFFAF, 0x313F, 0,
5998 13, 0xFFB0, 0x3140, 0,
5999 13, 0xFFB1, 0x3141, 0,
6000 13, 0xFFB2, 0x3142, 0,
6001 13, 0xFFB3, 0x3143, 0,
6002 13, 0xFFB4, 0x3144, 0,
6003 13, 0xFFB5, 0x3145, 0,
6004 13, 0xFFB6, 0x3146, 0,
6005 13, 0xFFB7, 0x3147, 0,
6006 13, 0xFFB8, 0x3148, 0,
6007 13, 0xFFB9, 0x3149, 0,
6008 13, 0xFFBA, 0x314A, 0,
6009 13, 0xFFBB, 0x314B, 0,
6010 13, 0xFFBC, 0x314C, 0,
6011 13, 0xFFBD, 0x314D, 0,
6012 13, 0xFFBE, 0x314E, 0,
6013 13, 0xFFC2, 0x314F, 0,
6014 13, 0xFFC3, 0x3150, 0,
6015 13, 0xFFC4, 0x3151, 0,
6016 13, 0xFFC5, 0x3152, 0,
6017 13, 0xFFC6, 0x3153, 0,
6018 13, 0xFFC7, 0x3154, 0,
6019 13, 0xFFCA, 0x3155, 0,
6020 13, 0xFFCB, 0x3156, 0,
6021 13, 0xFFCC, 0x3157, 0,
6022 13, 0xFFCD, 0x3158, 0,
6023 13, 0xFFCE, 0x3159, 0,
6024 13, 0xFFCF, 0x315A, 0,
6025 13, 0xFFD2, 0x315B, 0,
6026 13, 0xFFD3, 0x315C, 0,
6027 13, 0xFFD4, 0x315D, 0,
6028 13, 0xFFD5, 0x315E, 0,
6029 13, 0xFFD6, 0x315F, 0,
6030 13, 0xFFD7, 0x3160, 0,
6031 13, 0xFFDA, 0x3161, 0,
6032 13, 0xFFDB, 0x3162, 0,
6033 13, 0xFFDC, 0x3163, 0,
6034 12, 0xFFE0, 0x00A2, 0,
6035 12, 0xFFE1, 0x00A3, 0,
6036 12, 0xFFE2, 0x00AC, 0,
6037 12, 0xFFE3, 0x00AF, 0,
6038 12, 0xFFE4, 0x00A6, 0,
6039 12, 0xFFE5, 0x00A5, 0,
6040 12, 0xFFE6, 0x20A9, 0,
6041 13, 0xFFE8, 0x2502, 0,
6042 13, 0xFFE9, 0x2190, 0,
6043 13, 0xFFEA, 0x2191, 0,
6044 13, 0xFFEB, 0x2192, 0,
6045 13, 0xFFEC, 0x2193, 0,
6046 13, 0xFFED, 0x25A0, 0,
6047 13, 0xFFEE, 0x25CB, 0,
6048
6049};
6050
6051static const Q_UINT16 di_00[] = {
6052 0, 0, 0, 0, 0, 0, 0, 0,
6053 0, 0, 0, 0, 0, 0, 0, 0,
6054 0, 0, 0, 0, 0, 0, 0, 0,
6055 0, 0, 0, 0, 0, 0, 0, 0,
6056 0, 0, 0, 0, 0, 0, 0, 0,
6057 0, 0, 0, 0, 0, 0, 0, 0,
6058 0, 0, 0, 0, 0, 0, 0, 0,
6059 0, 0, 0, 0, 0, 0, 0, 0,
6060 0, 0, 0, 0, 0, 0, 0, 0,
6061 0, 0, 0, 0, 0, 0, 0, 0,
6062 0, 0, 0, 0, 0, 0, 0, 0,
6063 0, 0, 0, 0, 0, 0, 0, 0,
6064 0, 0, 0, 0, 0, 0, 0, 0,
6065 0, 0, 0, 0, 0, 0, 0, 0,
6066 0, 0, 0, 0, 0, 0, 0, 0,
6067 0, 0, 0, 0, 0, 0, 0, 0,
6068 0, 0, 0, 0, 0, 0, 0, 0,
6069 0, 0, 0, 0, 0, 0, 0, 0,
6070 0, 0, 0, 0, 0, 0, 0, 0,
6071 0, 0, 0, 0, 0, 0, 0, 0,
6072 1, 0, 0, 0, 0, 0, 0, 0,
6073 5, 0, 10, 0, 0, 0, 0, 14,
6074 0, 0, 19, 23, 27, 32, 0, 0,
6075 36, 41, 45, 0, 49, 55, 61, 0,
6076 67, 72, 77, 82, 87, 92, 0, 97,
6077 102, 107, 112, 117, 122, 127, 132, 137,
6078 0, 142, 147, 152, 157, 162, 167, 0,
6079 0, 172, 177, 182, 187, 192, 0, 0,
6080 197, 202, 207, 212, 217, 222, 0, 227,
6081 232, 237, 242, 247, 252, 257, 262, 267,
6082 0, 272, 277, 282, 287, 292, 297, 0,
6083 0, 302, 307, 312, 317, 322, 0, 327,
6084};
6085
6086static const Q_UINT16 di_01[] = {
6087 332, 337, 342, 347, 352, 357, 362, 367,
6088 372, 377, 382, 387, 392, 397, 402, 407,
6089 0, 0, 412, 417, 422, 427, 432, 437,
6090 442, 447, 452, 457, 462, 467, 472, 477,
6091 482, 487, 492, 497, 502, 507, 0, 0,
6092 512, 517, 522, 527, 532, 537, 542, 547,
6093 552, 0, 557, 562, 567, 572, 577, 582,
6094 0, 587, 592, 597, 602, 607, 612, 617,
6095 622, 0, 0, 627, 632, 637, 642, 647,
6096 652, 657, 0, 0, 662, 667, 672, 677,
6097 682, 687, 0, 0, 692, 697, 702, 707,
6098 712, 717, 722, 727, 732, 737, 742, 747,
6099 752, 757, 762, 767, 772, 777, 0, 0,
6100 782, 787, 792, 797, 802, 807, 812, 817,
6101 822, 827, 832, 837, 842, 847, 852, 857,
6102 862, 867, 872, 877, 882, 887, 892, 897,
6103 0, 0, 0, 0, 0, 0, 0, 0,
6104 0, 0, 0, 0, 0, 0, 0, 0,
6105 0, 0, 0, 0, 0, 0, 0, 0,
6106 0, 0, 0, 0, 0, 0, 0, 0,
6107 901, 906, 0, 0, 0, 0, 0, 0,
6108 0, 0, 0, 0, 0, 0, 0, 911,
6109 916, 0, 0, 0, 0, 0, 0, 0,
6110 0, 0, 0, 0, 0, 0, 0, 0,
6111 0, 0, 0, 0, 921, 926, 931, 936,
6112 941, 946, 951, 956, 961, 966, 971, 976,
6113 981, 986, 991, 996, 1001, 1006, 1011, 1016,
6114 1021, 1026, 1031, 1036, 1041, 0, 1046, 1051,
6115 1056, 1061, 1066, 1071, 0, 0, 1076, 1081,
6116 1086, 1091, 1096, 1101, 1106, 1111, 1116, 1121,
6117 1126, 1131, 1136, 1141, 1146, 1151, 0, 0,
6118 1156, 1161, 1166, 1171, 1176, 1181, 1186, 1191,
6119};
6120
6121static const Q_UINT16 di_02[] = {
6122 1196, 1201, 1206, 1211, 1216, 1221, 1226, 1231,
6123 1236, 1241, 1246, 1251, 1256, 1261, 1266, 1271,
6124 1276, 1281, 1286, 1291, 1296, 1301, 1306, 1311,
6125 1316, 1321, 1326, 1331, 0, 0, 1336, 1341,
6126 0, 0, 0, 0, 0, 0, 1346, 1351,
6127 1356, 1361, 1366, 1371, 1376, 1381, 1386, 1391,
6128 1396, 1401, 1406, 1411, 0, 0, 0, 0,
6129 0, 0, 0, 0, 0, 0, 0, 0,
6130 0, 0, 0, 0, 0, 0, 0, 0,
6131 0, 0, 0, 0, 0, 0, 0, 0,
6132 0, 0, 0, 0, 0, 0, 0, 0,
6133 0, 0, 0, 0, 0, 0, 0, 0,
6134 0, 0, 0, 0, 0, 0, 0, 0,
6135 0, 0, 0, 0, 0, 0, 0, 0,
6136 0, 0, 0, 0, 0, 0, 0, 0,
6137 0, 0, 0, 0, 0, 0, 0, 0,
6138 0, 0, 0, 0, 0, 0, 0, 0,
6139 0, 0, 0, 0, 0, 0, 0, 0,
6140 0, 0, 0, 0, 0, 0, 0, 0,
6141 0, 0, 0, 0, 0, 0, 0, 0,
6142 0, 0, 0, 0, 0, 0, 0, 0,
6143 0, 0, 0, 0, 0, 0, 0, 0,
6144 1416, 1420, 1424, 1428, 1432, 1436, 1440, 1444,
6145 1448, 0, 0, 0, 0, 0, 0, 0,
6146 0, 0, 0, 0, 0, 0, 0, 0,
6147 0, 0, 0, 0, 0, 0, 0, 0,
6148 0, 0, 0, 0, 0, 0, 0, 0,
6149 1452, 1457, 1462, 1467, 1472, 1477, 0, 0,
6150 1482, 1486, 1490, 1494, 1498, 0, 0, 0,
6151 0, 0, 0, 0, 0, 0, 0, 0,
6152 0, 0, 0, 0, 0, 0, 0, 0,
6153 0, 0, 0, 0, 0, 0, 0, 0,
6154};
6155
6156static const Q_UINT16 di_03[] = {
6157 0, 0, 0, 0, 0, 0, 0, 0,
6158 0, 0, 0, 0, 0, 0, 0, 0,
6159 0, 0, 0, 0, 0, 0, 0, 0,
6160 0, 0, 0, 0, 0, 0, 0, 0,
6161 0, 0, 0, 0, 0, 0, 0, 0,
6162 0, 0, 0, 0, 0, 0, 0, 0,
6163 0, 0, 0, 0, 0, 0, 0, 0,
6164 0, 0, 0, 0, 0, 0, 0, 0,
6165 1502, 1506, 0, 1510, 1514, 0, 0, 0,
6166 0, 0, 0, 0, 0, 0, 0, 0,
6167 0, 0, 0, 0, 0, 0, 0, 0,
6168 0, 0, 0, 0, 0, 0, 0, 0,
6169 0, 0, 0, 0, 0, 0, 0, 0,
6170 0, 0, 0, 0, 0, 0, 0, 0,
6171 0, 0, 0, 0, 1519, 0, 0, 0,
6172 0, 0, 1523, 0, 0, 0, 1528, 0,
6173 0, 0, 0, 0, 1532, 1537, 1542, 1547,
6174 1551, 1556, 1561, 0, 1566, 0, 1571, 1576,
6175 1581, 0, 0, 0, 0, 0, 0, 0,
6176 0, 0, 0, 0, 0, 0, 0, 0,
6177 0, 0, 0, 0, 0, 0, 0, 0,
6178 0, 0, 1586, 1591, 1596, 1601, 1606, 1611,
6179 1616, 0, 0, 0, 0, 0, 0, 0,
6180 0, 0, 0, 0, 0, 0, 0, 0,
6181 0, 0, 0, 0, 0, 0, 0, 0,
6182 0, 0, 1621, 1626, 1631, 1636, 1641, 0,
6183 1646, 1650, 1654, 1658, 1663, 1668, 1672, 0,
6184 0, 0, 0, 0, 0, 0, 0, 0,
6185 0, 0, 0, 0, 0, 0, 0, 0,
6186 0, 0, 0, 0, 0, 0, 0, 0,
6187 1676, 1680, 1684, 0, 1688, 1692, 0, 0,
6188 0, 0, 0, 0, 0, 0, 0, 0,
6189};
6190
6191static const Q_UINT16 di_04[] = {
6192 1696, 1701, 0, 1706, 0, 0, 0, 1711,
6193 0, 0, 0, 0, 1716, 1721, 1726, 0,
6194 0, 0, 0, 0, 0, 0, 0, 0,
6195 0, 1731, 0, 0, 0, 0, 0, 0,
6196 0, 0, 0, 0, 0, 0, 0, 0,
6197 0, 0, 0, 0, 0, 0, 0, 0,
6198 0, 0, 0, 0, 0, 0, 0, 0,
6199 0, 1736, 0, 0, 0, 0, 0, 0,
6200 0, 0, 0, 0, 0, 0, 0, 0,
6201 0, 0, 0, 0, 0, 0, 0, 0,
6202 1741, 1746, 0, 1751, 0, 0, 0, 1756,
6203 0, 0, 0, 0, 1761, 1766, 1771, 0,
6204 0, 0, 0, 0, 0, 0, 0, 0,
6205 0, 0, 0, 0, 0, 0, 0, 0,
6206 0, 0, 0, 0, 0, 0, 1776, 1781,
6207 0, 0, 0, 0, 0, 0, 0, 0,
6208 0, 0, 0, 0, 0, 0, 0, 0,
6209 0, 0, 0, 0, 0, 0, 0, 0,
6210 0, 0, 0, 0, 0, 0, 0, 0,
6211 0, 0, 0, 0, 0, 0, 0, 0,
6212 0, 0, 0, 0, 0, 0, 0, 0,
6213 0, 0, 0, 0, 0, 0, 0, 0,
6214 0, 0, 0, 0, 0, 0, 0, 0,
6215 0, 0, 0, 0, 0, 0, 0, 0,
6216 0, 1786, 1791, 0, 0, 0, 0, 0,
6217 0, 0, 0, 0, 0, 0, 0, 0,
6218 1796, 1801, 1806, 1811, 0, 0, 1816, 1821,
6219 0, 0, 1826, 1831, 1836, 1841, 1846, 1851,
6220 0, 0, 1856, 1861, 1866, 1871, 1876, 1881,
6221 0, 0, 1886, 1891, 1896, 1901, 1906, 1911,
6222 1916, 1921, 1926, 1931, 1936, 1941, 0, 0,
6223 1946, 1951, 0, 0, 0, 0, 0, 0,
6224};
6225
6226static const Q_UINT16 di_05[] = {
6227 0, 0, 0, 0, 0, 0, 0, 0,
6228 0, 0, 0, 0, 0, 0, 0, 0,
6229 0, 0, 0, 0, 0, 0, 0, 0,
6230 0, 0, 0, 0, 0, 0, 0, 0,
6231 0, 0, 0, 0, 0, 0, 0, 0,
6232 0, 0, 0, 0, 0, 0, 0, 0,
6233 0, 0, 0, 0, 0, 0, 0, 0,
6234 0, 0, 0, 0, 0, 0, 0, 0,
6235 0, 0, 0, 0, 0, 0, 0, 0,
6236 0, 0, 0, 0, 0, 0, 0, 0,
6237 0, 0, 0, 0, 0, 0, 0, 0,
6238 0, 0, 0, 0, 0, 0, 0, 0,
6239 0, 0, 0, 0, 0, 0, 0, 0,
6240 0, 0, 0, 0, 0, 0, 0, 0,
6241 0, 0, 0, 0, 0, 0, 0, 0,
6242 0, 0, 0, 0, 0, 0, 0, 0,
6243 0, 0, 0, 0, 0, 0, 0, 1956,
6244 0, 0, 0, 0, 0, 0, 0, 0,
6245 0, 0, 0, 0, 0, 0, 0, 0,
6246 0, 0, 0, 0, 0, 0, 0, 0,
6247 0, 0, 0, 0, 0, 0, 0, 0,
6248 0, 0, 0, 0, 0, 0, 0, 0,
6249 0, 0, 0, 0, 0, 0, 0, 0,
6250 0, 0, 0, 0, 0, 0, 0, 0,
6251 0, 0, 0, 0, 0, 0, 0, 0,
6252 0, 0, 0, 0, 0, 0, 0, 0,
6253 0, 0, 0, 0, 0, 0, 0, 0,
6254 0, 0, 0, 0, 0, 0, 0, 0,
6255 0, 0, 0, 0, 0, 0, 0, 0,
6256 0, 0, 0, 0, 0, 0, 0, 0,
6257 0, 0, 0, 0, 0, 0, 0, 0,
6258 0, 0, 0, 0, 0, 0, 0, 0,
6259};
6260
6261static const Q_UINT16 di_06[] = {
6262 0, 0, 0, 0, 0, 0, 0, 0,
6263 0, 0, 0, 0, 0, 0, 0, 0,
6264 0, 0, 0, 0, 0, 0, 0, 0,
6265 0, 0, 0, 0, 0, 0, 0, 0,
6266 0, 0, 1961, 1966, 1971, 1976, 1981, 0,
6267 0, 0, 0, 0, 0, 0, 0, 0,
6268 0, 0, 0, 0, 0, 0, 0, 0,
6269 0, 0, 0, 0, 0, 0, 0, 0,
6270 0, 0, 0, 0, 0, 0, 0, 0,
6271 0, 0, 0, 0, 0, 0, 0, 0,
6272 0, 0, 0, 0, 0, 0, 0, 0,
6273 0, 0, 0, 0, 0, 0, 0, 0,
6274 0, 0, 0, 0, 0, 0, 0, 0,
6275 0, 0, 0, 0, 0, 0, 0, 0,
6276 0, 0, 0, 0, 0, 1986, 1991, 1996,
6277 2001, 0, 0, 0, 0, 0, 0, 0,
6278 0, 0, 0, 0, 0, 0, 0, 0,
6279 0, 0, 0, 0, 0, 0, 0, 0,
6280 0, 0, 0, 0, 0, 0, 0, 0,
6281 0, 0, 0, 0, 0, 0, 0, 0,
6282 0, 0, 0, 0, 0, 0, 0, 0,
6283 0, 0, 0, 0, 0, 0, 0, 0,
6284 0, 0, 0, 0, 0, 0, 0, 0,
6285 0, 0, 0, 0, 0, 0, 0, 0,
6286 2006, 0, 2011, 0, 0, 0, 0, 0,
6287 0, 0, 0, 0, 0, 0, 0, 0,
6288 0, 0, 0, 2016, 0, 0, 0, 0,
6289 0, 0, 0, 0, 0, 0, 0, 0,
6290 0, 0, 0, 0, 0, 0, 0, 0,
6291 0, 0, 0, 0, 0, 0, 0, 0,
6292 0, 0, 0, 0, 0, 0, 0, 0,
6293 0, 0, 0, 0, 0, 0, 0, 0,
6294};
6295
6296static const Q_UINT16 di_07[] = {
6297 0, 0, 0, 0, 0, 0, 0, 0,
6298 0, 0, 0, 0, 0, 0, 0, 0,
6299 0, 0, 0, 0, 0, 0, 0, 0,
6300 0, 0, 0, 0, 0, 0, 0, 0,
6301 0, 0, 0, 0, 0, 0, 0, 0,
6302 0, 0, 0, 0, 0, 0, 0, 0,
6303 0, 0, 0, 0, 0, 0, 0, 0,
6304 0, 0, 0, 0, 0, 0, 0, 0,
6305 0, 0, 0, 0, 0, 0, 0, 0,
6306 0, 0, 0, 0, 0, 0, 0, 0,
6307 0, 0, 0, 0, 0, 0, 0, 0,
6308 0, 0, 0, 0, 0, 0, 0, 0,
6309 0, 0, 0, 0, 0, 0, 0, 0,
6310 0, 0, 0, 0, 0, 0, 0, 0,
6311 0, 0, 0, 0, 0, 0, 0, 0,
6312 0, 0, 0, 0, 0, 0, 0, 0,
6313 0, 0, 0, 0, 0, 0, 0, 0,
6314 0, 0, 0, 0, 0, 0, 0, 0,
6315 0, 0, 0, 0, 0, 0, 0, 0,
6316 0, 0, 0, 0, 0, 0, 0, 0,
6317 0, 0, 0, 0, 0, 0, 0, 0,
6318 0, 0, 0, 0, 0, 0, 0, 0,
6319 0, 0, 0, 0, 0, 0, 0, 0,
6320 0, 0, 0, 0, 0, 0, 0, 0,
6321 0, 0, 0, 0, 0, 0, 0, 0,
6322 0, 0, 0, 0, 0, 0, 0, 0,
6323 0, 0, 0, 0, 0, 0, 0, 0,
6324 0, 0, 0, 0, 0, 0, 0, 0,
6325 0, 0, 0, 0, 0, 0, 0, 0,
6326 0, 0, 0, 0, 0, 0, 0, 0,
6327 0, 0, 0, 0, 0, 0, 0, 0,
6328 0, 0, 0, 0, 0, 0, 0, 0,
6329};
6330
6331static const Q_UINT16 di_09[] = {
6332 0, 0, 0, 0, 0, 0, 0, 0,
6333 0, 0, 0, 0, 0, 0, 0, 0,
6334 0, 0, 0, 0, 0, 0, 0, 0,
6335 0, 0, 0, 0, 0, 0, 0, 0,
6336 0, 0, 0, 0, 0, 0, 0, 0,
6337 0, 2021, 0, 0, 0, 0, 0, 0,
6338 0, 2026, 0, 0, 2031, 0, 0, 0,
6339 0, 0, 0, 0, 0, 0, 0, 0,
6340 0, 0, 0, 0, 0, 0, 0, 0,
6341 0, 0, 0, 0, 0, 0, 0, 0,
6342 0, 0, 0, 0, 0, 0, 0, 0,
6343 2036, 2041, 2046, 2051, 2056, 2061, 2066, 2071,
6344 0, 0, 0, 0, 0, 0, 0, 0,
6345 0, 0, 0, 0, 0, 0, 0, 0,
6346 0, 0, 0, 0, 0, 0, 0, 0,
6347 0, 0, 0, 0, 0, 0, 0, 0,
6348 0, 0, 0, 0, 0, 0, 0, 0,
6349 0, 0, 0, 0, 0, 0, 0, 0,
6350 0, 0, 0, 0, 0, 0, 0, 0,
6351 0, 0, 0, 0, 0, 0, 0, 0,
6352 0, 0, 0, 0, 0, 0, 0, 0,
6353 0, 0, 0, 0, 0, 0, 0, 0,
6354 0, 0, 0, 0, 0, 0, 0, 0,
6355 0, 0, 0, 0, 0, 0, 0, 0,
6356 0, 0, 0, 0, 0, 0, 0, 0,
6357 0, 0, 0, 2076, 2081, 0, 0, 0,
6358 0, 0, 0, 0, 0, 0, 0, 0,
6359 0, 0, 0, 0, 2086, 2091, 0, 2096,
6360 0, 0, 0, 0, 0, 0, 0, 0,
6361 0, 0, 0, 0, 0, 0, 0, 0,
6362 0, 0, 0, 0, 0, 0, 0, 0,
6363 0, 0, 0, 0, 0, 0, 0, 0,
6364};
6365
6366static const Q_UINT16 di_0A[] = {
6367 0, 0, 0, 0, 0, 0, 0, 0,
6368 0, 0, 0, 0, 0, 0, 0, 0,
6369 0, 0, 0, 0, 0, 0, 0, 0,
6370 0, 0, 0, 0, 0, 0, 0, 0,
6371 0, 0, 0, 0, 0, 0, 0, 0,
6372 0, 0, 0, 0, 0, 0, 0, 0,
6373 0, 0, 0, 2101, 0, 0, 2106, 0,
6374 0, 0, 0, 0, 0, 0, 0, 0,
6375 0, 0, 0, 0, 0, 0, 0, 0,
6376 0, 0, 0, 0, 0, 0, 0, 0,
6377 0, 0, 0, 0, 0, 0, 0, 0,
6378 0, 2111, 2116, 2121, 0, 0, 2126, 0,
6379 0, 0, 0, 0, 0, 0, 0, 0,
6380 0, 0, 0, 0, 0, 0, 0, 0,
6381 0, 0, 0, 0, 0, 0, 0, 0,
6382 0, 0, 0, 0, 0, 0, 0, 0,
6383 0, 0, 0, 0, 0, 0, 0, 0,
6384 0, 0, 0, 0, 0, 0, 0, 0,
6385 0, 0, 0, 0, 0, 0, 0, 0,
6386 0, 0, 0, 0, 0, 0, 0, 0,
6387 0, 0, 0, 0, 0, 0, 0, 0,
6388 0, 0, 0, 0, 0, 0, 0, 0,
6389 0, 0, 0, 0, 0, 0, 0, 0,
6390 0, 0, 0, 0, 0, 0, 0, 0,
6391 0, 0, 0, 0, 0, 0, 0, 0,
6392 0, 0, 0, 0, 0, 0, 0, 0,
6393 0, 0, 0, 0, 0, 0, 0, 0,
6394 0, 0, 0, 0, 0, 0, 0, 0,
6395 0, 0, 0, 0, 0, 0, 0, 0,
6396 0, 0, 0, 0, 0, 0, 0, 0,
6397 0, 0, 0, 0, 0, 0, 0, 0,
6398 0, 0, 0, 0, 0, 0, 0, 0,
6399};
6400
6401static const Q_UINT16 di_0B[] = {
6402 0, 0, 0, 0, 0, 0, 0, 0,
6403 0, 0, 0, 0, 0, 0, 0, 0,
6404 0, 0, 0, 0, 0, 0, 0, 0,
6405 0, 0, 0, 0, 0, 0, 0, 0,
6406 0, 0, 0, 0, 0, 0, 0, 0,
6407 0, 0, 0, 0, 0, 0, 0, 0,
6408 0, 0, 0, 0, 0, 0, 0, 0,
6409 0, 0, 0, 0, 0, 0, 0, 0,
6410 0, 0, 0, 0, 0, 0, 0, 0,
6411 2131, 0, 0, 2136, 2141, 0, 0, 0,
6412 0, 0, 0, 0, 0, 0, 0, 0,
6413 0, 0, 0, 0, 2146, 2151, 0, 0,
6414 0, 0, 0, 0, 0, 0, 0, 0,
6415 0, 0, 0, 0, 0, 0, 0, 0,
6416 0, 0, 0, 0, 0, 0, 0, 0,
6417 0, 0, 0, 0, 0, 0, 0, 0,
6418 0, 0, 0, 0, 0, 0, 0, 0,
6419 0, 0, 0, 0, 0, 0, 0, 0,
6420 0, 0, 0, 0, 2156, 0, 0, 0,
6421 0, 0, 0, 0, 0, 0, 0, 0,
6422 0, 0, 0, 0, 0, 0, 0, 0,
6423 0, 0, 0, 0, 0, 0, 0, 0,
6424 0, 0, 0, 0, 0, 0, 0, 0,
6425 0, 0, 0, 0, 0, 0, 0, 0,
6426 0, 0, 0, 0, 0, 0, 0, 0,
6427 0, 0, 2161, 2166, 2171, 0, 0, 0,
6428 0, 0, 0, 0, 0, 0, 0, 0,
6429 0, 0, 0, 0, 0, 0, 0, 0,
6430 0, 0, 0, 0, 0, 0, 0, 0,
6431 0, 0, 0, 0, 0, 0, 0, 0,
6432 0, 0, 0, 0, 0, 0, 0, 0,
6433 0, 0, 0, 0, 0, 0, 0, 0,
6434};
6435
6436static const Q_UINT16 di_0C[] = {
6437 0, 0, 0, 0, 0, 0, 0, 0,
6438 0, 0, 0, 0, 0, 0, 0, 0,
6439 0, 0, 0, 0, 0, 0, 0, 0,
6440 0, 0, 0, 0, 0, 0, 0, 0,
6441 0, 0, 0, 0, 0, 0, 0, 0,
6442 0, 0, 0, 0, 0, 0, 0, 0,
6443 0, 0, 0, 0, 0, 0, 0, 0,
6444 0, 0, 0, 0, 0, 0, 0, 0,
6445 0, 0, 0, 0, 0, 0, 0, 0,
6446 2176, 0, 0, 0, 0, 0, 0, 0,
6447 0, 0, 0, 0, 0, 0, 0, 0,
6448 0, 0, 0, 0, 0, 0, 0, 0,
6449 0, 0, 0, 0, 0, 0, 0, 0,
6450 0, 0, 0, 0, 0, 0, 0, 0,
6451 0, 0, 0, 0, 0, 0, 0, 0,
6452 0, 0, 0, 0, 0, 0, 0, 0,
6453 0, 0, 0, 0, 0, 0, 0, 0,
6454 0, 0, 0, 0, 0, 0, 0, 0,
6455 0, 0, 0, 0, 0, 0, 0, 0,
6456 0, 0, 0, 0, 0, 0, 0, 0,
6457 0, 0, 0, 0, 0, 0, 0, 0,
6458 0, 0, 0, 0, 0, 0, 0, 0,
6459 0, 0, 0, 0, 0, 0, 0, 0,
6460 0, 0, 0, 0, 0, 0, 0, 0,
6461 2181, 0, 0, 0, 0, 0, 0, 2186,
6462 2191, 0, 2196, 2201, 0, 0, 0, 0,
6463 0, 0, 0, 0, 0, 0, 0, 0,
6464 0, 0, 0, 0, 0, 0, 0, 0,
6465 0, 0, 0, 0, 0, 0, 0, 0,
6466 0, 0, 0, 0, 0, 0, 0, 0,
6467 0, 0, 0, 0, 0, 0, 0, 0,
6468 0, 0, 0, 0, 0, 0, 0, 0,
6469};
6470
6471static const Q_UINT16 di_0D[] = {
6472 0, 0, 0, 0, 0, 0, 0, 0,
6473 0, 0, 0, 0, 0, 0, 0, 0,
6474 0, 0, 0, 0, 0, 0, 0, 0,
6475 0, 0, 0, 0, 0, 0, 0, 0,
6476 0, 0, 0, 0, 0, 0, 0, 0,
6477 0, 0, 0, 0, 0, 0, 0, 0,
6478 0, 0, 0, 0, 0, 0, 0, 0,
6479 0, 0, 0, 0, 0, 0, 0, 0,
6480 0, 0, 0, 0, 0, 0, 0, 0,
6481 0, 0, 2206, 2211, 2216, 0, 0, 0,
6482 0, 0, 0, 0, 0, 0, 0, 0,
6483 0, 0, 0, 0, 0, 0, 0, 0,
6484 0, 0, 0, 0, 0, 0, 0, 0,
6485 0, 0, 0, 0, 0, 0, 0, 0,
6486 0, 0, 0, 0, 0, 0, 0, 0,
6487 0, 0, 0, 0, 0, 0, 0, 0,
6488 0, 0, 0, 0, 0, 0, 0, 0,
6489 0, 0, 0, 0, 0, 0, 0, 0,
6490 0, 0, 0, 0, 0, 0, 0, 0,
6491 0, 0, 0, 0, 0, 0, 0, 0,
6492 0, 0, 0, 0, 0, 0, 0, 0,
6493 0, 0, 0, 0, 0, 0, 0, 0,
6494 0, 0, 0, 0, 0, 0, 0, 0,
6495 0, 0, 0, 0, 0, 0, 0, 0,
6496 0, 0, 0, 0, 0, 0, 0, 0,
6497 0, 0, 0, 0, 0, 0, 0, 0,
6498 0, 0, 0, 0, 0, 0, 0, 0,
6499 0, 0, 2221, 0, 2226, 2231, 2236, 0,
6500 0, 0, 0, 0, 0, 0, 0, 0,
6501 0, 0, 0, 0, 0, 0, 0, 0,
6502 0, 0, 0, 0, 0, 0, 0, 0,
6503 0, 0, 0, 0, 0, 0, 0, 0,
6504};
6505
6506static const Q_UINT16 di_0E[] = {
6507 0, 0, 0, 0, 0, 0, 0, 0,
6508 0, 0, 0, 0, 0, 0, 0, 0,
6509 0, 0, 0, 0, 0, 0, 0, 0,
6510 0, 0, 0, 0, 0, 0, 0, 0,
6511 0, 0, 0, 0, 0, 0, 0, 0,
6512 0, 0, 0, 0, 0, 0, 0, 0,
6513 0, 0, 0, 2241, 0, 0, 0, 0,
6514 0, 0, 0, 0, 0, 0, 0, 0,
6515 0, 0, 0, 0, 0, 0, 0, 0,
6516 0, 0, 0, 0, 0, 0, 0, 0,
6517 0, 0, 0, 0, 0, 0, 0, 0,
6518 0, 0, 0, 0, 0, 0, 0, 0,
6519 0, 0, 0, 0, 0, 0, 0, 0,
6520 0, 0, 0, 0, 0, 0, 0, 0,
6521 0, 0, 0, 0, 0, 0, 0, 0,
6522 0, 0, 0, 0, 0, 0, 0, 0,
6523 0, 0, 0, 0, 0, 0, 0, 0,
6524 0, 0, 0, 0, 0, 0, 0, 0,
6525 0, 0, 0, 0, 0, 0, 0, 0,
6526 0, 0, 0, 0, 0, 0, 0, 0,
6527 0, 0, 0, 0, 0, 0, 0, 0,
6528 0, 0, 0, 0, 0, 0, 0, 0,
6529 0, 0, 0, 2246, 0, 0, 0, 0,
6530 0, 0, 0, 0, 0, 0, 0, 0,
6531 0, 0, 0, 0, 0, 0, 0, 0,
6532 0, 0, 0, 0, 0, 0, 0, 0,
6533 0, 0, 0, 0, 0, 0, 0, 0,
6534 0, 0, 0, 0, 2251, 2256, 0, 0,
6535 0, 0, 0, 0, 0, 0, 0, 0,
6536 0, 0, 0, 0, 0, 0, 0, 0,
6537 0, 0, 0, 0, 0, 0, 0, 0,
6538 0, 0, 0, 0, 0, 0, 0, 0,
6539};
6540
6541static const Q_UINT16 di_0F[] = {
6542 0, 0, 0, 0, 0, 0, 0, 0,
6543 0, 0, 0, 0, 2261, 0, 0, 0,
6544 0, 0, 0, 0, 0, 0, 0, 0,
6545 0, 0, 0, 0, 0, 0, 0, 0,
6546 0, 0, 0, 0, 0, 0, 0, 0,
6547 0, 0, 0, 0, 0, 0, 0, 0,
6548 0, 0, 0, 0, 0, 0, 0, 0,
6549 0, 0, 0, 0, 0, 0, 0, 0,
6550 0, 0, 0, 2265, 0, 0, 0, 0,
6551 0, 0, 0, 0, 0, 2270, 0, 0,
6552 0, 0, 2275, 0, 0, 0, 0, 2280,
6553 0, 0, 0, 0, 2285, 0, 0, 0,
6554 0, 0, 0, 0, 0, 0, 0, 0,
6555 0, 2290, 0, 0, 0, 0, 0, 0,
6556 0, 0, 0, 2295, 0, 2300, 2305, 2310,
6557 2315, 2320, 0, 0, 0, 0, 0, 0,
6558 0, 2325, 0, 0, 0, 0, 0, 0,
6559 0, 0, 0, 0, 0, 0, 0, 0,
6560 0, 0, 0, 2330, 0, 0, 0, 0,
6561 0, 0, 0, 0, 0, 2335, 0, 0,
6562 0, 0, 2340, 0, 0, 0, 0, 2345,
6563 0, 0, 0, 0, 2350, 0, 0, 0,
6564 0, 0, 0, 0, 0, 0, 0, 0,
6565 0, 2355, 0, 0, 0, 0, 0, 0,
6566 0, 0, 0, 0, 0, 0, 0, 0,
6567 0, 0, 0, 0, 0, 0, 0, 0,
6568 0, 0, 0, 0, 0, 0, 0, 0,
6569 0, 0, 0, 0, 0, 0, 0, 0,
6570 0, 0, 0, 0, 0, 0, 0, 0,
6571 0, 0, 0, 0, 0, 0, 0, 0,
6572 0, 0, 0, 0, 0, 0, 0, 0,
6573 0, 0, 0, 0, 0, 0, 0, 0,
6574};
6575
6576static const Q_UINT16 di_10[] = {
6577 0, 0, 0, 0, 0, 0, 0, 0,
6578 0, 0, 0, 0, 0, 0, 0, 0,
6579 0, 0, 0, 0, 0, 0, 0, 0,
6580 0, 0, 0, 0, 0, 0, 0, 0,
6581 0, 0, 0, 0, 0, 0, 2360, 0,
6582 0, 0, 0, 0, 0, 0, 0, 0,
6583 0, 0, 0, 0, 0, 0, 0, 0,
6584 0, 0, 0, 0, 0, 0, 0, 0,
6585 0, 0, 0, 0, 0, 0, 0, 0,
6586 0, 0, 0, 0, 0, 0, 0, 0,
6587 0, 0, 0, 0, 0, 0, 0, 0,
6588 0, 0, 0, 0, 0, 0, 0, 0,
6589 0, 0, 0, 0, 0, 0, 0, 0,
6590 0, 0, 0, 0, 0, 0, 0, 0,
6591 0, 0, 0, 0, 0, 0, 0, 0,
6592 0, 0, 0, 0, 0, 0, 0, 0,
6593 0, 0, 0, 0, 0, 0, 0, 0,
6594 0, 0, 0, 0, 0, 0, 0, 0,
6595 0, 0, 0, 0, 0, 0, 0, 0,
6596 0, 0, 0, 0, 0, 0, 0, 0,
6597 0, 0, 0, 0, 0, 0, 0, 0,
6598 0, 0, 0, 0, 0, 0, 0, 0,
6599 0, 0, 0, 0, 0, 0, 0, 0,
6600 0, 0, 0, 0, 0, 0, 0, 0,
6601 0, 0, 0, 0, 0, 0, 0, 0,
6602 0, 0, 0, 0, 0, 0, 0, 0,
6603 0, 0, 0, 0, 0, 0, 0, 0,
6604 0, 0, 0, 0, 0, 0, 0, 0,
6605 0, 0, 0, 0, 0, 0, 0, 0,
6606 0, 0, 0, 0, 0, 0, 0, 0,
6607 0, 0, 0, 0, 0, 0, 0, 0,
6608 0, 0, 0, 0, 0, 0, 0, 0,
6609};
6610
6611static const Q_UINT16 di_1E[] = {
6612 2365, 2370, 2375, 2380, 2385, 2390, 2395, 2400,
6613 2405, 2410, 2415, 2420, 2425, 2430, 2435, 2440,
6614 2445, 2450, 2455, 2460, 2465, 2470, 2475, 2480,
6615 2485, 2490, 2495, 2500, 2505, 2510, 2515, 2520,
6616 2525, 2530, 2535, 2540, 2545, 2550, 2555, 2560,
6617 2565, 2570, 2575, 2580, 2585, 2590, 2595, 2600,
6618 2605, 2610, 2615, 2620, 2625, 2630, 2635, 2640,
6619 2645, 2650, 2655, 2660, 2665, 2670, 2675, 2680,
6620 2685, 2690, 2695, 2700, 2705, 2710, 2715, 2720,
6621 2725, 2730, 2735, 2740, 2745, 2750, 2755, 2760,
6622 2765, 2770, 2775, 2780, 2785, 2790, 2795, 2800,
6623 2805, 2810, 2815, 2820, 2825, 2830, 2835, 2840,
6624 2845, 2850, 2855, 2860, 2865, 2870, 2875, 2880,
6625 2885, 2890, 2895, 2900, 2905, 2910, 2915, 2920,
6626 2925, 2930, 2935, 2940, 2945, 2950, 2955, 2960,
6627 2965, 2970, 2975, 2980, 2985, 2990, 2995, 3000,
6628 3005, 3010, 3015, 3020, 3025, 3030, 3035, 3040,
6629 3045, 3050, 3055, 3060, 3065, 3070, 3075, 3080,
6630 3085, 3090, 3095, 3100, 3105, 3110, 3115, 3120,
6631 3125, 3130, 3135, 3140, 0, 0, 0, 0,
6632 3145, 3150, 3155, 3160, 3165, 3170, 3175, 3180,
6633 3185, 3190, 3195, 3200, 3205, 3210, 3215, 3220,
6634 3225, 3230, 3235, 3240, 3245, 3250, 3255, 3260,
6635 3265, 3270, 3275, 3280, 3285, 3290, 3295, 3300,
6636 3305, 3310, 3315, 3320, 3325, 3330, 3335, 3340,
6637 3345, 3350, 3355, 3360, 3365, 3370, 3375, 3380,
6638 3385, 3390, 3395, 3400, 3405, 3410, 3415, 3420,
6639 3425, 3430, 3435, 3440, 3445, 3450, 3455, 3460,
6640 3465, 3470, 3475, 3480, 3485, 3490, 3495, 3500,
6641 3505, 3510, 3515, 3520, 3525, 3530, 3535, 3540,
6642 3545, 3550, 3555, 3560, 3565, 3570, 3575, 3580,
6643 3585, 3590, 0, 0, 0, 0, 0, 0,
6644};
6645
6646static const Q_UINT16 di_1F[] = {
6647 3595, 3600, 3605, 3610, 3615, 3620, 3625, 3630,
6648 3635, 3640, 3645, 3650, 3655, 3660, 3665, 3670,
6649 3675, 3680, 3685, 3690, 3695, 3700, 0, 0,
6650 3705, 3710, 3715, 3720, 3725, 3730, 0, 0,
6651 3735, 3740, 3745, 3750, 3755, 3760, 3765, 3770,
6652 3775, 3780, 3785, 3790, 3795, 3800, 3805, 3810,
6653 3815, 3820, 3825, 3830, 3835, 3840, 3845, 3850,
6654 3855, 3860, 3865, 3870, 3875, 3880, 3885, 3890,
6655 3895, 3900, 3905, 3910, 3915, 3920, 0, 0,
6656 3925, 3930, 3935, 3940, 3945, 3950, 0, 0,
6657 3955, 3960, 3965, 3970, 3975, 3980, 3985, 3990,
6658 0, 3995, 0, 4000, 0, 4005, 0, 4010,
6659 4015, 4020, 4025, 4030, 4035, 4040, 4045, 4050,
6660 4055, 4060, 4065, 4070, 4075, 4080, 4085, 4090,
6661 4095, 4100, 4104, 4109, 4113, 4118, 4122, 4127,
6662 4131, 4136, 4140, 4145, 4149, 4154, 0, 0,
6663 4158, 4163, 4168, 4173, 4178, 4183, 4188, 4193,
6664 4198, 4203, 4208, 4213, 4218, 4223, 4228, 4233,
6665 4238, 4243, 4248, 4253, 4258, 4263, 4268, 4273,
6666 4278, 4283, 4288, 4293, 4298, 4303, 4308, 4313,
6667 4318, 4323, 4328, 4333, 4338, 4343, 4348, 4353,
6668 4358, 4363, 4368, 4373, 4378, 4383, 4388, 4393,
6669 4398, 4403, 4408, 4413, 4418, 0, 4423, 4428,
6670 4433, 4438, 4443, 4448, 4452, 4457, 4462, 4466,
6671 4471, 4476, 4481, 4486, 4491, 0, 4496, 4501,
6672 4506, 4511, 4515, 4520, 4524, 4529, 4534, 4539,
6673 4544, 4549, 4554, 4559, 0, 0, 4563, 4568,
6674 4573, 4578, 4583, 4588, 0, 4592, 4597, 4602,
6675 4607, 4612, 4617, 4622, 4626, 4631, 4636, 4641,
6676 4646, 4651, 4656, 4661, 4665, 4670, 4675, 4679,
6677 0, 0, 4683, 4688, 4693, 0, 4698, 4703,
6678 4708, 4713, 4717, 4722, 4726, 4731, 4735, 0,
6679};
6680
6681static const Q_UINT16 di_20[] = {
6682 4740, 4744, 4748, 4752, 4756, 4760, 4764, 4768,
6683 4772, 4776, 4780, 0, 0, 0, 0, 0,
6684 0, 4784, 0, 0, 0, 0, 0, 4788,
6685 0, 0, 0, 0, 0, 0, 0, 0,
6686 0, 0, 0, 0, 4793, 4797, 4802, 0,
6687 0, 0, 0, 0, 0, 0, 0, 4808,
6688 0, 0, 0, 4812, 4817, 0, 4823, 4828,
6689 0, 0, 0, 0, 4834, 0, 4839, 0,
6690 0, 0, 0, 0, 0, 0, 0, 4844,
6691 4849, 4854, 0, 0, 0, 0, 0, 0,
6692 0, 0, 0, 0, 0, 0, 0, 4859,
6693 0, 0, 0, 0, 0, 0, 0, 4866,
6694 0, 0, 0, 0, 0, 0, 0, 0,
6695 0, 0, 0, 0, 0, 0, 0, 0,
6696 4870, 4874, 0, 0, 4878, 4882, 4886, 4890,
6697 4894, 4898, 4902, 4906, 4910, 4914, 4918, 4922,
6698 4926, 4930, 4934, 4938, 4942, 4946, 4950, 4954,
6699 4958, 4962, 4966, 4970, 4974, 4978, 4982, 0,
6700 0, 0, 0, 0, 0, 0, 0, 0,
6701 0, 0, 0, 0, 0, 0, 0, 0,
6702 0, 0, 0, 0, 0, 0, 0, 0,
6703 4986, 0, 0, 0, 0, 0, 0, 0,
6704 0, 0, 0, 0, 0, 0, 0, 0,
6705 0, 0, 0, 0, 0, 0, 0, 0,
6706 0, 0, 0, 0, 0, 0, 0, 0,
6707 0, 0, 0, 0, 0, 0, 0, 0,
6708 0, 0, 0, 0, 0, 0, 0, 0,
6709 0, 0, 0, 0, 0, 0, 0, 0,
6710 0, 0, 0, 0, 0, 0, 0, 0,
6711 0, 0, 0, 0, 0, 0, 0, 0,
6712 0, 0, 0, 0, 0, 0, 0, 0,
6713 0, 0, 0, 0, 0, 0, 0, 0,
6714};
6715
6716static const Q_UINT16 di_21[] = {
6717 4991, 4997, 5003, 5007, 0, 5012, 5018, 5024,
6718 0, 5028, 5033, 5037, 5041, 5045, 5049, 5053,
6719 5057, 5061, 5065, 5069, 0, 5073, 5077, 0,
6720 0, 5082, 5086, 5090, 5094, 5098, 0, 0,
6721 5102, 5107, 5113, 0, 5118, 0, 5122, 0,
6722 5126, 0, 5130, 5134, 5138, 5142, 0, 5146,
6723 5150, 5154, 0, 5158, 5162, 5166, 5170, 5174,
6724 5178, 5182, 0, 0, 0, 5186, 5190, 5194,
6725 5198, 0, 0, 0, 0, 5202, 5206, 5210,
6726 5214, 5218, 0, 0, 0, 0, 0, 0,
6727 0, 0, 0, 5222, 5228, 5234, 5240, 5246,
6728 5252, 5258, 5264, 5270, 5276, 5282, 5288, 5294,
6729 5299, 5303, 5308, 5314, 5319, 5323, 5328, 5334,
6730 5341, 5346, 5350, 5355, 5361, 5365, 5369, 5373,
6731 5377, 5381, 5386, 5392, 5397, 5401, 5406, 5412,
6732 5419, 5424, 5428, 5433, 5439, 5443, 5447, 5451,
6733 0, 0, 0, 0, 0, 0, 0, 0,
6734 0, 0, 0, 0, 0, 0, 0, 0,
6735 0, 0, 0, 0, 0, 0, 0, 0,
6736 0, 0, 5455, 5460, 0, 0, 0, 0,
6737 0, 0, 0, 0, 0, 0, 0, 0,
6738 0, 0, 0, 0, 0, 0, 5465, 0,
6739 0, 0, 0, 0, 0, 0, 0, 0,
6740 0, 0, 0, 0, 0, 0, 0, 0,
6741 0, 0, 0, 0, 0, 0, 0, 0,
6742 0, 0, 0, 0, 0, 5470, 5475, 5480,
6743 0, 0, 0, 0, 0, 0, 0, 0,
6744 0, 0, 0, 0, 0, 0, 0, 0,
6745 0, 0, 0, 0, 0, 0, 0, 0,
6746 0, 0, 0, 0, 0, 0, 0, 0,
6747 0, 0, 0, 0, 0, 0, 0, 0,
6748 0, 0, 0, 0, 0, 0, 0, 0,
6749};
6750
6751static const Q_UINT16 di_22[] = {
6752 0, 0, 0, 0, 5485, 0, 0, 0,
6753 0, 5490, 0, 0, 5495, 0, 0, 0,
6754 0, 0, 0, 0, 0, 0, 0, 0,
6755 0, 0, 0, 0, 0, 0, 0, 0,
6756 0, 0, 0, 0, 5500, 0, 5505, 0,
6757 0, 0, 0, 0, 5510, 5515, 0, 5521,
6758 5526, 0, 0, 0, 0, 0, 0, 0,
6759 0, 0, 0, 0, 0, 0, 0, 0,
6760 0, 5532, 0, 0, 5537, 0, 0, 5542,
6761 0, 5547, 0, 0, 0, 0, 0, 0,
6762 0, 0, 0, 0, 0, 0, 0, 0,
6763 0, 0, 0, 0, 0, 0, 0, 0,
6764 5552, 0, 5557, 0, 0, 0, 0, 0,
6765 0, 0, 0, 0, 0, 5562, 5567, 5572,
6766 5577, 5582, 0, 0, 5587, 5592, 0, 0,
6767 5597, 5602, 0, 0, 0, 0, 0, 0,
6768 5607, 5612, 0, 0, 5617, 5622, 0, 0,
6769 5627, 5632, 0, 0, 0, 0, 0, 0,
6770 0, 0, 0, 0, 0, 0, 0, 0,
6771 0, 0, 0, 0, 0, 0, 0, 0,
6772 0, 0, 0, 0, 0, 0, 0, 0,
6773 0, 0, 0, 0, 5637, 5642, 5647, 5652,
6774 0, 0, 0, 0, 0, 0, 0, 0,
6775 0, 0, 0, 0, 0, 0, 0, 0,
6776 0, 0, 0, 0, 0, 0, 0, 0,
6777 0, 0, 0, 0, 0, 0, 0, 0,
6778 0, 0, 0, 0, 0, 0, 0, 0,
6779 0, 0, 0, 0, 0, 0, 0, 0,
6780 5657, 5662, 5667, 5672, 0, 0, 0, 0,
6781 0, 0, 5677, 5682, 5687, 5692, 0, 0,
6782 0, 0, 0, 0, 0, 0, 0, 0,
6783 0, 0, 0, 0, 0, 0, 0, 0,
6784};
6785
6786static const Q_UINT16 di_23[] = {
6787 0, 0, 0, 0, 0, 0, 0, 0,
6788 0, 0, 0, 0, 0, 0, 0, 0,
6789 0, 0, 0, 0, 0, 0, 0, 0,
6790 0, 0, 0, 0, 0, 0, 0, 0,
6791 0, 0, 0, 0, 0, 0, 0, 0,
6792 0, 5697, 5701, 0, 0, 0, 0, 0,
6793 0, 0, 0, 0, 0, 0, 0, 0,
6794 0, 0, 0, 0, 0, 0, 0, 0,
6795 0, 0, 0, 0, 0, 0, 0, 0,
6796 0, 0, 0, 0, 0, 0, 0, 0,
6797 0, 0, 0, 0, 0, 0, 0, 0,
6798 0, 0, 0, 0, 0, 0, 0, 0,
6799 0, 0, 0, 0, 0, 0, 0, 0,
6800 0, 0, 0, 0, 0, 0, 0, 0,
6801 0, 0, 0, 0, 0, 0, 0, 0,
6802 0, 0, 0, 0, 0, 0, 0, 0,
6803 0, 0, 0, 0, 0, 0, 0, 0,
6804 0, 0, 0, 0, 0, 0, 0, 0,
6805 0, 0, 0, 0, 0, 0, 0, 0,
6806 0, 0, 0, 0, 0, 0, 0, 0,
6807 0, 0, 0, 0, 0, 0, 0, 0,
6808 0, 0, 0, 0, 0, 0, 0, 0,
6809 0, 0, 0, 0, 0, 0, 0, 0,
6810 0, 0, 0, 0, 0, 0, 0, 0,
6811 0, 0, 0, 0, 0, 0, 0, 0,
6812 0, 0, 0, 0, 0, 0, 0, 0,
6813 0, 0, 0, 0, 0, 0, 0, 0,
6814 0, 0, 0, 0, 0, 0, 0, 0,
6815 0, 0, 0, 0, 0, 0, 0, 0,
6816 0, 0, 0, 0, 0, 0, 0, 0,
6817 0, 0, 0, 0, 0, 0, 0, 0,
6818 0, 0, 0, 0, 0, 0, 0, 0,
6819};
6820
6821static const Q_UINT16 di_24[] = {
6822 0, 0, 0, 0, 0, 0, 0, 0,
6823 0, 0, 0, 0, 0, 0, 0, 0,
6824 0, 0, 0, 0, 0, 0, 0, 0,
6825 0, 0, 0, 0, 0, 0, 0, 0,
6826 0, 0, 0, 0, 0, 0, 0, 0,
6827 0, 0, 0, 0, 0, 0, 0, 0,
6828 0, 0, 0, 0, 0, 0, 0, 0,
6829 0, 0, 0, 0, 0, 0, 0, 0,
6830 0, 0, 0, 0, 0, 0, 0, 0,
6831 0, 0, 0, 0, 0, 0, 0, 0,
6832 0, 0, 0, 0, 0, 0, 0, 0,
6833 0, 0, 0, 0, 0, 0, 0, 0,
6834 5705, 5709, 5713, 5717, 5721, 5725, 5729, 5733,
6835 5737, 5741, 5746, 5751, 5756, 5761, 5766, 5771,
6836 5776, 5781, 5786, 5791, 5796, 5802, 5808, 5814,
6837 5820, 5826, 5832, 5838, 5844, 5850, 5857, 5864,
6838 5871, 5878, 5885, 5892, 5899, 5906, 5913, 5920,
6839 5927, 5932, 5937, 5942, 5947, 5952, 5957, 5962,
6840 5967, 5972, 5978, 5984, 5990, 5996, 6002, 6008,
6841 6014, 6020, 6026, 6032, 6038, 6044, 6050, 6056,
6842 6062, 6068, 6074, 6080, 6086, 6092, 6098, 6104,
6843 6110, 6116, 6122, 6128, 6134, 6140, 6146, 6152,
6844 6158, 6164, 6170, 6176, 6182, 6188, 6194, 6198,
6845 6202, 6206, 6210, 6214, 6218, 6222, 6226, 6230,
6846 6234, 6238, 6242, 6246, 6250, 6254, 6258, 6262,
6847 6266, 6270, 6274, 6278, 6282, 6286, 6290, 6294,
6848 6298, 6302, 6306, 6310, 6314, 6318, 6322, 6326,
6849 6330, 6334, 6338, 6342, 6346, 6350, 6354, 6358,
6850 6362, 6366, 6370, 6374, 6378, 6382, 6386, 6390,
6851 6394, 6398, 6402, 0, 0, 0, 0, 0,
6852 0, 0, 0, 0, 0, 0, 0, 0,
6853 0, 0, 0, 0, 0, 0, 0, 0,
6854};
6855
6856static const Q_UINT16 di_2A[] = {
6857 0, 0, 0, 0, 0, 0, 0, 0,
6858 0, 0, 0, 0, 6406, 0, 0, 0,
6859 0, 0, 0, 0, 0, 0, 0, 0,
6860 0, 0, 0, 0, 0, 0, 0, 0,
6861 0, 0, 0, 0, 0, 0, 0, 0,
6862 0, 0, 0, 0, 0, 0, 0, 0,
6863 0, 0, 0, 0, 0, 0, 0, 0,
6864 0, 0, 0, 0, 0, 0, 0, 0,
6865 0, 0, 0, 0, 0, 0, 0, 0,
6866 0, 0, 0, 0, 0, 0, 0, 0,
6867 0, 0, 0, 0, 0, 0, 0, 0,
6868 0, 0, 0, 0, 0, 0, 0, 0,
6869 0, 0, 0, 0, 0, 0, 0, 0,
6870 0, 0, 0, 0, 0, 0, 0, 0,
6871 0, 0, 0, 0, 6413, 6419, 6424, 0,
6872 0, 0, 0, 0, 0, 0, 0, 0,
6873 0, 0, 0, 0, 0, 0, 0, 0,
6874 0, 0, 0, 0, 0, 0, 0, 0,
6875 0, 0, 0, 0, 0, 0, 0, 0,
6876 0, 0, 0, 0, 0, 0, 0, 0,
6877 0, 0, 0, 0, 0, 0, 0, 0,
6878 0, 0, 0, 0, 0, 0, 0, 0,
6879 0, 0, 0, 0, 0, 0, 0, 0,
6880 0, 0, 0, 0, 0, 0, 0, 0,
6881 0, 0, 0, 0, 0, 0, 0, 0,
6882 0, 0, 0, 0, 0, 0, 0, 0,
6883 0, 0, 0, 0, 0, 0, 0, 0,
6884 0, 0, 0, 0, 6430, 0, 0, 0,
6885 0, 0, 0, 0, 0, 0, 0, 0,
6886 0, 0, 0, 0, 0, 0, 0, 0,
6887 0, 0, 0, 0, 0, 0, 0, 0,
6888 0, 0, 0, 0, 0, 0, 0, 0,
6889};
6890
6891static const Q_UINT16 di_2E[] = {
6892 0, 0, 0, 0, 0, 0, 0, 0,
6893 0, 0, 0, 0, 0, 0, 0, 0,
6894 0, 0, 0, 0, 0, 0, 0, 0,
6895 0, 0, 0, 0, 0, 0, 0, 0,
6896 0, 0, 0, 0, 0, 0, 0, 0,
6897 0, 0, 0, 0, 0, 0, 0, 0,
6898 0, 0, 0, 0, 0, 0, 0, 0,
6899 0, 0, 0, 0, 0, 0, 0, 0,
6900 0, 0, 0, 0, 0, 0, 0, 0,
6901 0, 0, 0, 0, 0, 0, 0, 0,
6902 0, 0, 0, 0, 0, 0, 0, 0,
6903 0, 0, 0, 0, 0, 0, 0, 0,
6904 0, 0, 0, 0, 0, 0, 0, 0,
6905 0, 0, 0, 0, 0, 0, 0, 0,
6906 0, 0, 0, 0, 0, 0, 0, 0,
6907 0, 0, 0, 0, 0, 0, 0, 0,
6908 0, 0, 0, 0, 0, 0, 0, 0,
6909 0, 0, 0, 0, 0, 0, 0, 0,
6910 0, 0, 0, 0, 0, 0, 0, 0,
6911 0, 0, 0, 0, 0, 0, 0, 6435,
6912 0, 0, 0, 0, 0, 0, 0, 0,
6913 0, 0, 0, 0, 0, 0, 0, 0,
6914 0, 0, 0, 0, 0, 0, 0, 0,
6915 0, 0, 0, 0, 0, 0, 0, 0,
6916 0, 0, 0, 0, 0, 0, 0, 0,
6917 0, 0, 0, 0, 0, 0, 0, 0,
6918 0, 0, 0, 0, 0, 0, 0, 0,
6919 0, 0, 0, 0, 0, 0, 0, 0,
6920 0, 0, 0, 0, 0, 0, 0, 0,
6921 0, 0, 0, 0, 0, 0, 0, 0,
6922 0, 0, 0, 6439, 0, 0, 0, 0,
6923 0, 0, 0, 0, 0, 0, 0, 0,
6924};
6925
6926static const Q_UINT16 di_2F[] = {
6927 6443, 6447, 6451, 6455, 6459, 6463, 6467, 6471,
6928 6475, 6479, 6483, 6487, 6491, 6495, 6499, 6503,
6929 6507, 6511, 6515, 6519, 6523, 6527, 6531, 6535,
6930 6539, 6543, 6547, 6551, 6555, 6559, 6563, 6567,
6931 6571, 6575, 6579, 6583, 6587, 6591, 6595, 6599,
6932 6603, 6607, 6611, 6615, 6619, 6623, 6627, 6631,
6933 6635, 6639, 6643, 6647, 6651, 6655, 6659, 6663,
6934 6667, 6671, 6675, 6679, 6683, 6687, 6691, 6695,
6935 6699, 6703, 6707, 6711, 6715, 6719, 6723, 6727,
6936 6731, 6735, 6739, 6743, 6747, 6751, 6755, 6759,
6937 6763, 6767, 6771, 6775, 6779, 6783, 6787, 6791,
6938 6795, 6799, 6803, 6807, 6811, 6815, 6819, 6823,
6939 6827, 6831, 6835, 6839, 6843, 6847, 6851, 6855,
6940 6859, 6863, 6867, 6871, 6875, 6879, 6883, 6887,
6941 6891, 6895, 6899, 6903, 6907, 6911, 6915, 6919,
6942 6923, 6927, 6931, 6935, 6939, 6943, 6947, 6951,
6943 6955, 6959, 6963, 6967, 6971, 6975, 6979, 6983,
6944 6987, 6991, 6995, 6999, 7003, 7007, 7011, 7015,
6945 7019, 7023, 7027, 7031, 7035, 7039, 7043, 7047,
6946 7051, 7055, 7059, 7063, 7067, 7071, 7075, 7079,
6947 7083, 7087, 7091, 7095, 7099, 7103, 7107, 7111,
6948 7115, 7119, 7123, 7127, 7131, 7135, 7139, 7143,
6949 7147, 7151, 7155, 7159, 7163, 7167, 7171, 7175,
6950 7179, 7183, 7187, 7191, 7195, 7199, 7203, 7207,
6951 7211, 7215, 7219, 7223, 7227, 7231, 7235, 7239,
6952 7243, 7247, 7251, 7255, 7259, 7263, 7267, 7271,
6953 7275, 7279, 7283, 7287, 7291, 7295, 0, 0,
6954 0, 0, 0, 0, 0, 0, 0, 0,
6955 0, 0, 0, 0, 0, 0, 0, 0,
6956 0, 0, 0, 0, 0, 0, 0, 0,
6957 0, 0, 0, 0, 0, 0, 0, 0,
6958 0, 0, 0, 0, 0, 0, 0, 0,
6959};
6960
6961static const Q_UINT16 di_30[] = {
6962 7299, 0, 0, 0, 0, 0, 0, 0,
6963 0, 0, 0, 0, 0, 0, 0, 0,
6964 0, 0, 0, 0, 0, 0, 0, 0,
6965 0, 0, 0, 0, 0, 0, 0, 0,
6966 0, 0, 0, 0, 0, 0, 0, 0,
6967 0, 0, 0, 0, 0, 0, 0, 0,
6968 0, 0, 0, 0, 0, 0, 7303, 0,
6969 7307, 7311, 7315, 0, 0, 0, 0, 0,
6970 0, 0, 0, 0, 0, 0, 0, 0,
6971 0, 0, 0, 0, 7319, 0, 7324, 0,
6972 7329, 0, 7334, 0, 7339, 0, 7344, 0,
6973 7349, 0, 7354, 0, 7359, 0, 7364, 0,
6974 7369, 0, 7374, 0, 0, 7379, 0, 7384,
6975 0, 7389, 0, 0, 0, 0, 0, 0,
6976 7394, 7399, 0, 7404, 7409, 0, 7414, 7419,
6977 0, 7424, 7429, 0, 7434, 7439, 0, 0,
6978 0, 0, 0, 0, 0, 0, 0, 0,
6979 0, 0, 0, 0, 0, 0, 0, 0,
6980 0, 0, 0, 0, 7444, 0, 0, 0,
6981 0, 0, 0, 7449, 7454, 0, 7459, 7464,
6982 0, 0, 0, 0, 0, 0, 0, 0,
6983 0, 0, 0, 0, 7469, 0, 7474, 0,
6984 7479, 0, 7484, 0, 7489, 0, 7494, 0,
6985 7499, 0, 7504, 0, 7509, 0, 7514, 0,
6986 7519, 0, 7524, 0, 0, 7529, 0, 7534,
6987 0, 7539, 0, 0, 0, 0, 0, 0,
6988 7544, 7549, 0, 7554, 7559, 0, 7564, 7569,
6989 0, 7574, 7579, 0, 7584, 7589, 0, 0,
6990 0, 0, 0, 0, 0, 0, 0, 0,
6991 0, 0, 0, 0, 0, 0, 0, 0,
6992 0, 0, 0, 0, 7594, 0, 0, 7599,
6993 7604, 7609, 7614, 0, 0, 0, 7619, 7624,
6994};
6995
6996static const Q_UINT16 di_31[] = {
6997 0, 0, 0, 0, 0, 0, 0, 0,
6998 0, 0, 0, 0, 0, 0, 0, 0,
6999 0, 0, 0, 0, 0, 0, 0, 0,
7000 0, 0, 0, 0, 0, 0, 0, 0,
7001 0, 0, 0, 0, 0, 0, 0, 0,
7002 0, 0, 0, 0, 0, 0, 0, 0,
7003 0, 7629, 7633, 7637, 7641, 7645, 7649, 7653,
7004 7657, 7661, 7665, 7669, 7673, 7677, 7681, 7685,
7005 7689, 7693, 7697, 7701, 7705, 7709, 7713, 7717,
7006 7721, 7725, 7729, 7733, 7737, 7741, 7745, 7749,
7007 7753, 7757, 7761, 7765, 7769, 7773, 7777, 7781,
7008 7785, 7789, 7793, 7797, 7801, 7805, 7809, 7813,
7009 7817, 7821, 7825, 7829, 7833, 7837, 7841, 7845,
7010 7849, 7853, 7857, 7861, 7865, 7869, 7873, 7877,
7011 7881, 7885, 7889, 7893, 7897, 7901, 7905, 7909,
7012 7913, 7917, 7921, 7925, 7929, 7933, 7937, 7941,
7013 7945, 7949, 7953, 7957, 7961, 7965, 7969, 7973,
7014 7977, 7981, 7985, 7989, 7993, 7997, 8001, 0,
7015 0, 0, 8005, 8009, 8013, 8017, 8021, 8025,
7016 8029, 8033, 8037, 8041, 8045, 8049, 8053, 8057,
7017 0, 0, 0, 0, 0, 0, 0, 0,
7018 0, 0, 0, 0, 0, 0, 0, 0,
7019 0, 0, 0, 0, 0, 0, 0, 0,
7020 0, 0, 0, 0, 0, 0, 0, 0,
7021 0, 0, 0, 0, 0, 0, 0, 0,
7022 0, 0, 0, 0, 0, 0, 0, 0,
7023 0, 0, 0, 0, 0, 0, 0, 0,
7024 0, 0, 0, 0, 0, 0, 0, 0,
7025 0, 0, 0, 0, 0, 0, 0, 0,
7026 0, 0, 0, 0, 0, 0, 0, 0,
7027 0, 0, 0, 0, 0, 0, 0, 0,
7028 0, 0, 0, 0, 0, 0, 0, 0,
7029};
7030
7031static const Q_UINT16 di_32[] = {
7032 8061, 8067, 8073, 8079, 8085, 8091, 8097, 8103,
7033 8109, 8115, 8121, 8127, 8133, 8139, 8145, 8152,
7034 8159, 8166, 8173, 8180, 8187, 8194, 8201, 8208,
7035 8215, 8222, 8229, 8236, 8243, 0, 0, 0,
7036 8250, 8256, 8262, 8268, 8274, 8280, 8286, 8292,
7037 8298, 8304, 8310, 8316, 8322, 8328, 8334, 8340,
7038 8346, 8352, 8358, 8364, 8370, 8376, 8382, 8388,
7039 8394, 8400, 8406, 8412, 8418, 8424, 8430, 8436,
7040 8442, 8448, 8454, 8460, 0, 0, 0, 0,
7041 0, 0, 0, 0, 0, 0, 0, 0,
7042 0, 8466, 8471, 8476, 8481, 8486, 8491, 8496,
7043 8501, 8506, 8511, 8516, 8521, 8526, 8531, 8536,
7044 8541, 8545, 8549, 8553, 8557, 8561, 8565, 8569,
7045 8573, 8577, 8581, 8585, 8589, 8593, 8597, 8602,
7046 8607, 8612, 8617, 8622, 8627, 8632, 8637, 8642,
7047 8647, 8652, 8657, 8662, 0, 0, 0, 0,
7048 8667, 8671, 8675, 8679, 8683, 8687, 8691, 8695,
7049 8699, 8703, 8707, 8711, 8715, 8719, 8723, 8727,
7050 8731, 8735, 8739, 8743, 8747, 8751, 8755, 8759,
7051 8763, 8767, 8771, 8775, 8779, 8783, 8787, 8791,
7052 8795, 8799, 8803, 8807, 8811, 8815, 8819, 8823,
7053 8827, 8831, 8835, 8839, 8843, 8847, 8851, 8855,
7054 8859, 8863, 8868, 8873, 8878, 8883, 8888, 8893,
7055 8898, 8903, 8908, 8913, 8918, 8923, 8928, 8933,
7056 8938, 8943, 8948, 8953, 8958, 8963, 8968, 8973,
7057 8978, 8983, 8989, 8995, 0, 0, 0, 0,
7058 9001, 9005, 9009, 9013, 9017, 9021, 9025, 9029,
7059 9033, 9037, 9041, 9045, 9049, 9053, 9057, 9061,
7060 9065, 9069, 9073, 9077, 9081, 9085, 9089, 9093,
7061 9097, 9101, 9105, 9109, 9113, 9117, 9121, 9125,
7062 9129, 9133, 9137, 9141, 9145, 9149, 9153, 9157,
7063 9161, 9165, 9169, 9173, 9177, 9181, 9185, 0,
7064};
7065
7066static const Q_UINT16 di_33[] = {
7067 9189, 9196, 9203, 9210, 9216, 9223, 9229, 9235,
7068 9243, 9250, 9256, 9262, 9268, 9275, 9282, 9288,
7069 9294, 9299, 9305, 9312, 9319, 9324, 9332, 9341,
7070 9349, 9355, 9363, 9371, 9378, 9384, 9390, 9396,
7071 9403, 9411, 9418, 9424, 9430, 9436, 9441, 9446,
7072 9451, 9456, 9462, 9468, 9476, 9482, 9489, 9497,
7073 9503, 9508, 9513, 9521, 9528, 9536, 9542, 9550,
7074 9555, 9561, 9567, 9573, 9579, 9585, 9592, 9598,
7075 9603, 9609, 9615, 9621, 9628, 9634, 9640, 9646,
7076 9654, 9661, 9666, 9674, 9679, 9686, 9693, 9699,
7077 9705, 9711, 9718, 9723, 9729, 9736, 9741, 9749,
7078 9755, 9760, 9765, 9770, 9775, 9780, 9785, 9790,
7079 9795, 9800, 9805, 9811, 9817, 9823, 9829, 9835,
7080 9841, 9847, 9853, 9859, 9865, 9871, 9877, 9883,
7081 9889, 9895, 9901, 9906, 9911, 9917, 9922, 0,
7082 0, 0, 0, 9927, 9932, 9937, 9942, 9947,
7083 9954, 9959, 9964, 9969, 9974, 9979, 9984, 9989,
7084 9994, 10000, 10007, 10012, 10017, 10022, 10027, 10032,
7085 10037, 10042, 10048, 10054, 10060, 10066, 10071, 10076,
7086 10081, 10086, 10091, 10096, 10101, 10106, 10111, 10116,
7087 10122, 10128, 10133, 10139, 10145, 10151, 10156, 10162,
7088 10168, 10175, 10180, 10186, 10192, 10198, 10204, 10212,
7089 10221, 10226, 10231, 10236, 10241, 10246, 10251, 10256,
7090 10261, 10266, 10271, 10276, 10281, 10286, 10291, 10296,
7091 10301, 10306, 10311, 10318, 10323, 10328, 10333, 10340,
7092 10346, 10351, 10356, 10361, 10366, 10371, 10376, 10381,
7093 10386, 10391, 10396, 10402, 10407, 10412, 10418, 10424,
7094 10429, 10436, 10442, 10447, 10452, 10457, 0, 0,
7095 10462, 10467, 10472, 10477, 10482, 10487, 10492, 10497,
7096 10502, 10507, 10513, 10519, 10525, 10531, 10537, 10543,
7097 10549, 10555, 10561, 10567, 10573, 10579, 10585, 10591,
7098 10597, 10603, 10609, 10615, 10621, 10627, 10633, 0,
7099};
7100
7101static const Q_UINT16 di_F9[] = {
7102 10639, 10643, 10647, 10651, 10655, 10659, 10663, 10667,
7103 10671, 10675, 10679, 10683, 10687, 10691, 10695, 10699,
7104 10703, 10707, 10711, 10715, 10719, 10723, 10727, 10731,
7105 10735, 10739, 10743, 10747, 10751, 10755, 10759, 10763,
7106 10767, 10771, 10775, 10779, 10783, 10787, 10791, 10795,
7107 10799, 10803, 10807, 10811, 10815, 10819, 10823, 10827,
7108 10831, 10835, 10839, 10843, 10847, 10851, 10855, 10859,
7109 10863, 10867, 10871, 10875, 10879, 10883, 10887, 10891,
7110 10895, 10899, 10903, 10907, 10911, 10915, 10919, 10923,
7111 10927, 10931, 10935, 10939, 10943, 10947, 10951, 10955,
7112 10959, 10963, 10967, 10971, 10975, 10979, 10983, 10987,
7113 10991, 10995, 10999, 11003, 11007, 11011, 11015, 11019,
7114 11023, 11027, 11031, 11035, 11039, 11043, 11047, 11051,
7115 11055, 11059, 11063, 11067, 11071, 11075, 11079, 11083,
7116 11087, 11091, 11095, 11099, 11103, 11107, 11111, 11115,
7117 11119, 11123, 11127, 11131, 11135, 11139, 11143, 11147,
7118 11151, 11155, 11159, 11163, 11167, 11171, 11175, 11179,
7119 11183, 11187, 11191, 11195, 11199, 11203, 11207, 11211,
7120 11215, 11219, 11223, 11227, 11231, 11235, 11239, 11243,
7121 11247, 11251, 11255, 11259, 11263, 11267, 11271, 11275,
7122 11279, 11283, 11287, 11291, 11295, 11299, 11303, 11307,
7123 11311, 11315, 11319, 11323, 11327, 11331, 11335, 11339,
7124 11343, 11347, 11351, 11355, 11359, 11363, 11367, 11371,
7125 11375, 11379, 11383, 11387, 11391, 11395, 11399, 11403,
7126 11407, 11411, 11415, 11419, 11423, 11427, 11431, 11435,
7127 11439, 11443, 11447, 11451, 11455, 11459, 11463, 11467,
7128 11471, 11475, 11479, 11483, 11487, 11491, 11495, 11499,
7129 11503, 11507, 11511, 11515, 11519, 11523, 11527, 11531,
7130 11535, 11539, 11543, 11547, 11551, 11555, 11559, 11563,
7131 11567, 11571, 11575, 11579, 11583, 11587, 11591, 11595,
7132 11599, 11603, 11607, 11611, 11615, 11619, 11623, 11627,
7133 11631, 11635, 11639, 11643, 11647, 11651, 11655, 11659,
7134};
7135
7136static const Q_UINT16 di_FA[] = {
7137 11663, 11667, 11671, 11675, 11679, 11683, 11687, 11691,
7138 11695, 11699, 11703, 11707, 11711, 11715, 0, 0,
7139 11719, 0, 11723, 0, 0, 11727, 11731, 11735,
7140 11739, 11743, 11747, 11751, 11755, 11759, 11763, 0,
7141 11767, 0, 11771, 0, 0, 11775, 11779, 0,
7142 0, 0, 11783, 11787, 11791, 11795, 0, 0,
7143 11799, 11803, 11807, 11811, 11815, 11819, 11823, 11827,
7144 11831, 11835, 11839, 11843, 11847, 11851, 11855, 11859,
7145 11863, 11867, 11871, 11875, 11879, 11883, 11887, 11891,
7146 11895, 11899, 11903, 11907, 11911, 11915, 11919, 11923,
7147 11927, 11931, 11935, 11939, 11943, 11947, 11951, 11955,
7148 11959, 11963, 11967, 11971, 11975, 11979, 11983, 11987,
7149 11991, 11995, 11999, 12003, 12007, 12011, 12015, 12019,
7150 12023, 12027, 12031, 0, 0, 0, 0, 0,
7151 0, 0, 0, 0, 0, 0, 0, 0,
7152 0, 0, 0, 0, 0, 0, 0, 0,
7153 0, 0, 0, 0, 0, 0, 0, 0,
7154 0, 0, 0, 0, 0, 0, 0, 0,
7155 0, 0, 0, 0, 0, 0, 0, 0,
7156 0, 0, 0, 0, 0, 0, 0, 0,
7157 0, 0, 0, 0, 0, 0, 0, 0,
7158 0, 0, 0, 0, 0, 0, 0, 0,
7159 0, 0, 0, 0, 0, 0, 0, 0,
7160 0, 0, 0, 0, 0, 0, 0, 0,
7161 0, 0, 0, 0, 0, 0, 0, 0,
7162 0, 0, 0, 0, 0, 0, 0, 0,
7163 0, 0, 0, 0, 0, 0, 0, 0,
7164 0, 0, 0, 0, 0, 0, 0, 0,
7165 0, 0, 0, 0, 0, 0, 0, 0,
7166 0, 0, 0, 0, 0, 0, 0, 0,
7167 0, 0, 0, 0, 0, 0, 0, 0,
7168 0, 0, 0, 0, 0, 0, 0, 0,
7169};
7170
7171static const Q_UINT16 di_FB[] = {
7172 12035, 12040, 12045, 12050, 12056, 12062, 12067, 0,
7173 0, 0, 0, 0, 0, 0, 0, 0,
7174 0, 0, 0, 12072, 12077, 12082, 12087, 12092,
7175 0, 0, 0, 0, 0, 12097, 0, 12102,
7176 12107, 12111, 12115, 12119, 12123, 12127, 12131, 12135,
7177 12139, 12143, 12147, 12152, 12157, 12162, 12167, 12172,
7178 12177, 12182, 12187, 12192, 12197, 12202, 12207, 0,
7179 12212, 12217, 12222, 12227, 12232, 0, 12237, 0,
7180 12242, 12247, 0, 12252, 12257, 0, 12262, 12267,
7181 12272, 12277, 12282, 12287, 12292, 12297, 12302, 12307,
7182 12312, 12316, 12320, 12324, 12328, 12332, 12336, 12340,
7183 12344, 12348, 12352, 12356, 12360, 12364, 12368, 12372,
7184 12376, 12380, 12384, 12388, 12392, 12396, 12400, 12404,
7185 12408, 12412, 12416, 12420, 12424, 12428, 12432, 12436,
7186 12440, 12444, 12448, 12452, 12456, 12460, 12464, 12468,
7187 12472, 12476, 12480, 12484, 12488, 12492, 12496, 12500,
7188 12504, 12508, 12512, 12516, 12520, 12524, 12528, 12532,
7189 12536, 12540, 12544, 12548, 12552, 12556, 12560, 12564,
7190 12568, 12572, 12576, 12580, 12584, 12588, 12592, 12596,
7191 12600, 12604, 12608, 12612, 12616, 12620, 12624, 12628,
7192 12632, 12636, 12640, 12644, 12648, 12652, 12656, 12660,
7193 12664, 12668, 12672, 12676, 12680, 12684, 12688, 12692,
7194 12696, 12700, 0, 0, 0, 0, 0, 0,
7195 0, 0, 0, 0, 0, 0, 0, 0,
7196 0, 0, 0, 0, 0, 0, 0, 0,
7197 0, 0, 0, 0, 0, 0, 0, 0,
7198 0, 0, 0, 12704, 12708, 12712, 12716, 12720,
7199 12724, 12728, 12732, 12736, 12740, 12744, 12748, 12752,
7200 12756, 12760, 12764, 12768, 12772, 12776, 12780, 12784,
7201 12788, 12792, 12796, 12801, 12806, 12811, 12816, 12821,
7202 12826, 12831, 12836, 12841, 12846, 12851, 12856, 12861,
7203 12866, 12871, 12876, 12881, 12886, 12890, 12894, 12898,
7204};
7205
7206static const Q_UINT16 di_FC[] = {
7207 12902, 12907, 12912, 12917, 12922, 12927, 12932, 12937,
7208 12942, 12947, 12952, 12957, 12962, 12967, 12972, 12977,
7209 12982, 12987, 12992, 12997, 13002, 13007, 13012, 13017,
7210 13022, 13027, 13032, 13037, 13042, 13047, 13052, 13057,
7211 13062, 13067, 13072, 13077, 13082, 13087, 13092, 13097,
7212 13102, 13107, 13112, 13117, 13122, 13127, 13132, 13137,
7213 13142, 13147, 13152, 13157, 13162, 13167, 13172, 13177,
7214 13182, 13187, 13192, 13197, 13202, 13207, 13212, 13217,
7215 13222, 13227, 13232, 13237, 13242, 13247, 13252, 13257,
7216 13262, 13267, 13272, 13277, 13282, 13287, 13292, 13297,
7217 13302, 13307, 13312, 13317, 13322, 13327, 13332, 13337,
7218 13342, 13347, 13352, 13357, 13362, 13367, 13372, 13378,
7219 13384, 13390, 13396, 13402, 13408, 13413, 13418, 13423,
7220 13428, 13433, 13438, 13443, 13448, 13453, 13458, 13463,
7221 13468, 13473, 13478, 13483, 13488, 13493, 13498, 13503,
7222 13508, 13513, 13518, 13523, 13528, 13533, 13538, 13543,
7223 13548, 13553, 13558, 13563, 13568, 13573, 13578, 13583,
7224 13588, 13593, 13598, 13603, 13608, 13613, 13618, 13623,
7225 13628, 13633, 13638, 13643, 13648, 13653, 13658, 13663,
7226 13668, 13673, 13678, 13683, 13688, 13693, 13698, 13703,
7227 13708, 13713, 13718, 13723, 13728, 13733, 13738, 13743,
7228 13748, 13753, 13758, 13763, 13768, 13773, 13778, 13783,
7229 13788, 13793, 13798, 13803, 13808, 13813, 13818, 13823,
7230 13828, 13833, 13838, 13843, 13848, 13853, 13858, 13863,
7231 13868, 13873, 13878, 13883, 13888, 13893, 13898, 13903,
7232 13908, 13913, 13918, 13923, 13928, 13933, 13938, 13943,
7233 13948, 13953, 13958, 13963, 13968, 13973, 13978, 13983,
7234 13988, 13993, 13998, 14003, 14008, 14013, 14018, 14023,
7235 14028, 14033, 14038, 14043, 14048, 14053, 14058, 14063,
7236 14068, 14073, 14078, 14083, 14088, 14093, 14098, 14103,
7237 14108, 14113, 14118, 14124, 14130, 14136, 14141, 14146,
7238 14151, 14156, 14161, 14166, 14171, 14176, 14181, 14186,
7239};
7240
7241static const Q_UINT16 di_FD[] = {
7242 14191, 14196, 14201, 14206, 14211, 14216, 14221, 14226,
7243 14231, 14236, 14241, 14246, 14251, 14256, 14261, 14266,
7244 14271, 14276, 14281, 14286, 14291, 14296, 14301, 14306,
7245 14311, 14316, 14321, 14326, 14331, 14336, 14341, 14346,
7246 14351, 14356, 14361, 14366, 14371, 14376, 14381, 14386,
7247 14391, 14396, 14401, 14406, 14411, 14416, 14421, 14426,
7248 14431, 14436, 14441, 14446, 14451, 14456, 14461, 14466,
7249 14471, 14476, 14481, 14486, 14491, 14496, 0, 0,
7250 0, 0, 0, 0, 0, 0, 0, 0,
7251 0, 0, 0, 0, 0, 0, 0, 0,
7252 14501, 14507, 14513, 14519, 14525, 14531, 14537, 14543,
7253 14549, 14555, 14561, 14567, 14573, 14579, 14585, 14591,
7254 14597, 14603, 14609, 14615, 14621, 14627, 14633, 14639,
7255 14645, 14651, 14657, 14663, 14669, 14675, 14681, 14687,
7256 14693, 14699, 14705, 14711, 14717, 14723, 14729, 14735,
7257 14741, 14747, 14753, 14759, 14765, 14771, 14777, 14783,
7258 14789, 14795, 14801, 14807, 14813, 14819, 14825, 14831,
7259 14837, 14843, 14849, 14855, 14861, 14867, 14873, 14879,
7260 0, 0, 14885, 14891, 14897, 14903, 14909, 14915,
7261 14921, 14927, 14933, 14939, 14945, 14951, 14957, 14963,
7262 14969, 14975, 14981, 14987, 14993, 14999, 15005, 15011,
7263 15017, 15023, 15029, 15035, 15041, 15047, 15053, 15059,
7264 15065, 15071, 15077, 15083, 15089, 15095, 15101, 15107,
7265 15113, 15119, 15125, 15131, 15137, 15143, 15149, 15155,
7266 15161, 15167, 15173, 15179, 15185, 15191, 15197, 15203,
7267 0, 0, 0, 0, 0, 0, 0, 0,
7268 0, 0, 0, 0, 0, 0, 0, 0,
7269 0, 0, 0, 0, 0, 0, 0, 0,
7270 0, 0, 0, 0, 0, 0, 0, 0,
7271 0, 0, 0, 0, 0, 0, 0, 0,
7272 15209, 15215, 15221, 15228, 15235, 15242, 15249, 15256,
7273 15263, 15270, 15276, 15297, 15308, 0, 0, 0,
7274};
7275
7276static const Q_UINT16 di_FE[] = {
7277 0, 0, 0, 0, 0, 0, 0, 0,
7278 0, 0, 0, 0, 0, 0, 0, 0,
7279 0, 0, 0, 0, 0, 0, 0, 0,
7280 0, 0, 0, 0, 0, 0, 0, 0,
7281 0, 0, 0, 0, 0, 0, 0, 0,
7282 0, 0, 0, 0, 0, 0, 0, 0,
7283 15315, 15319, 15323, 15327, 15331, 15335, 15339, 15343,
7284 15347, 15351, 15355, 15359, 15363, 15367, 15371, 15375,
7285 15379, 15383, 15387, 15391, 15395, 0, 0, 0,
7286 0, 15399, 15403, 15407, 15411, 15415, 15419, 15423,
7287 15427, 15431, 15435, 0, 15439, 15443, 15447, 15451,
7288 15455, 15459, 15463, 15467, 15471, 15475, 15479, 15483,
7289 15487, 15491, 15495, 15499, 15503, 15507, 15511, 0,
7290 15515, 15519, 15523, 15527, 0, 0, 0, 0,
7291 15531, 15536, 15541, 0, 15546, 0, 15551, 15556,
7292 15561, 15566, 15571, 15576, 15581, 15586, 15591, 15596,
7293 15601, 15605, 15609, 15613, 15617, 15621, 15625, 15629,
7294 15633, 15637, 15641, 15645, 15649, 15653, 15657, 15661,
7295 15665, 15669, 15673, 15677, 15681, 15685, 15689, 15693,
7296 15697, 15701, 15705, 15709, 15713, 15717, 15721, 15725,
7297 15729, 15733, 15737, 15741, 15745, 15749, 15753, 15757,
7298 15761, 15765, 15769, 15773, 15777, 15781, 15785, 15789,
7299 15793, 15797, 15801, 15805, 15809, 15813, 15817, 15821,
7300 15825, 15829, 15833, 15837, 15841, 15845, 15849, 15853,
7301 15857, 15861, 15865, 15869, 15873, 15877, 15881, 15885,
7302 15889, 15893, 15897, 15901, 15905, 15909, 15913, 15917,
7303 15921, 15925, 15929, 15933, 15937, 15941, 15945, 15949,
7304 15953, 15957, 15961, 15965, 15969, 15973, 15977, 15981,
7305 15985, 15989, 15993, 15997, 16001, 16005, 16009, 16013,
7306 16017, 16021, 16025, 16029, 16033, 16037, 16041, 16045,
7307 16049, 16053, 16057, 16061, 16065, 16069, 16074, 16079,
7308 16084, 16089, 16094, 16099, 16104, 0, 0, 0,
7309};
7310
7311static const Q_UINT16 di_FF[] = {
7312 0, 16109, 16113, 16117, 16121, 16125, 16129, 16133,
7313 16137, 16141, 16145, 16149, 16153, 16157, 16161, 16165,
7314 16169, 16173, 16177, 16181, 16185, 16189, 16193, 16197,
7315 16201, 16205, 16209, 16213, 16217, 16221, 16225, 16229,
7316 16233, 16237, 16241, 16245, 16249, 16253, 16257, 16261,
7317 16265, 16269, 16273, 16277, 16281, 16285, 16289, 16293,
7318 16297, 16301, 16305, 16309, 16313, 16317, 16321, 16325,
7319 16329, 16333, 16337, 16341, 16345, 16349, 16353, 16357,
7320 16361, 16365, 16369, 16373, 16377, 16381, 16385, 16389,
7321 16393, 16397, 16401, 16405, 16409, 16413, 16417, 16421,
7322 16425, 16429, 16433, 16437, 16441, 16445, 16449, 16453,
7323 16457, 16461, 16465, 16469, 16473, 16477, 16481, 16485,
7324 16489, 16493, 16497, 16501, 16505, 16509, 16513, 16517,
7325 16521, 16525, 16529, 16533, 16537, 16541, 16545, 16549,
7326 16553, 16557, 16561, 16565, 16569, 16573, 16577, 16581,
7327 16585, 16589, 16593, 16597, 16601, 16605, 16609, 16613,
7328 16617, 16621, 16625, 16629, 16633, 16637, 16641, 16645,
7329 16649, 16653, 16657, 16661, 16665, 16669, 16673, 16677,
7330 16681, 16685, 16689, 16693, 16697, 16701, 16705, 16709,
7331 16713, 16717, 16721, 16725, 16729, 16733, 16737, 16741,
7332 16745, 16749, 16753, 16757, 16761, 16765, 16769, 16773,
7333 16777, 16781, 16785, 16789, 16793, 16797, 16801, 16805,
7334 16809, 16813, 16817, 16821, 16825, 16829, 16833, 16837,
7335 16841, 16845, 16849, 16853, 16857, 16861, 16865, 0,
7336 0, 0, 16869, 16873, 16877, 16881, 16885, 16889,
7337 0, 0, 16893, 16897, 16901, 16905, 16909, 16913,
7338 0, 0, 16917, 16921, 16925, 16929, 16933, 16937,
7339 0, 0, 16941, 16945, 16949, 0, 0, 0,
7340 16953, 16957, 16961, 16965, 16969, 16973, 16977, 0,
7341 16981, 16985, 16989, 16993, 16997, 17001, 17005, 0,
7342 0, 0, 0, 0, 0, 0, 0, 0,
7343 0, 0, 0, 0, 0, 0, 0, 0,
7344};
7345
7346static const Q_UINT16 * const decomposition_info[256] = {
7347 di_00, di_01, di_02, di_03, di_04, di_05, di_06, di_07,
7348 di_07, di_09, di_0A, di_0B, di_0C, di_0D, di_0E, di_0F,
7349 di_10, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7350 di_07, di_07, di_07, di_07, di_07, di_07, di_1E, di_1F,
7351 di_20, di_21, di_22, di_23, di_24, di_07, di_07, di_07,
7352 di_07, di_07, di_2A, di_07, di_07, di_07, di_2E, di_2F,
7353 di_30, di_31, di_32, di_33, di_07, di_07, di_07, di_07,
7354 di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7355 di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7356 di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7357 di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7358 di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7359 di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7360 di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7361 di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7362 di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7363 di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7364 di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7365 di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7366 di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7367 di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7368 di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7369 di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7370 di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7371 di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7372 di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7373 di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7374 di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7375 di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7376 di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7377 di_07, di_07, di_07, di_07, di_07, di_07, di_07, di_07,
7378 di_07, di_F9, di_FA, di_FB, di_FC, di_FD, di_FE, di_FF,
7379};
7380// 68832 bytes
7381
7382static const Q_UINT16 ligature_map[] = {
7383 0,
7384 5567, 0,
7385 5552, 0,
7386 5572, 0,
7387 67, 72, 77, 82, 87, 92, 332, 342, 352, 966, 1196, 1206, 1346, 2365, 3145, 3155, 0,
7388 2375, 2385, 2395, 0,
7389 97, 362, 372, 382, 392, 0,
7390 402, 2415, 2425, 2435, 2445, 2455, 0,
7391 102, 107, 112, 117, 412, 422, 432, 442, 452, 1216, 1226, 1356, 2485, 2495, 3265, 3275, 3285, 0,
7392 2515, 0,
7393 462, 472, 482, 492, 1076, 1146, 2525, 0,
7394 502, 1336, 2535, 2545, 2555, 2565, 2575, 0,
7395 122, 127, 132, 137, 512, 522, 532, 542, 552, 976, 1236, 1246, 2585, 3345, 3355, 0,
7396 567, 0,
7397 577, 1086, 2605, 2615, 2625, 0,
7398 587, 597, 607, 2635, 2655, 2665, 0,
7399 2675, 2685, 2695, 0,
7400 142, 627, 637, 647, 1156, 2705, 2715, 2725, 2735, 0,
7401 147, 152, 157, 162, 167, 662, 672, 682, 901, 986, 1096, 1256, 1266, 1386, 3365, 3375, 0,
7402 2785, 2795, 0,
7403 692, 702, 712, 1276, 1286, 2805, 2815, 2835, 0,
7404 722, 732, 742, 752, 1316, 2845, 2855, 0,
7405 762, 772, 1326, 2895, 2905, 2915, 2925, 0,
7406 172, 177, 182, 187, 782, 792, 802, 812, 822, 832, 911, 996, 1296, 1306, 2935, 2945, 2955, 3485, 3495, 0,
7407 2985, 2995, 0,
7408 842, 3005, 3015, 3025, 3035, 3045, 0,
7409 3055, 3065, 0,
7410 192, 852, 862, 1406, 3075, 3555, 3565, 3575, 3585, 0,
7411 867, 877, 887, 3085, 3095, 3105, 0,
7412 197, 202, 207, 212, 217, 222, 337, 347, 357, 971, 1201, 1211, 1351, 2370, 3150, 3160, 0,
7413 2380, 2390, 2400, 0,
7414 227, 367, 377, 387, 397, 0,
7415 407, 2420, 2430, 2440, 2450, 2460, 0,
7416 232, 237, 242, 247, 417, 427, 437, 447, 457, 1221, 1231, 1361, 2490, 2500, 3270, 3280, 3290, 0,
7417 2520, 0,
7418 467, 477, 487, 497, 1081, 1151, 2530, 0,
7419 507, 1341, 2540, 2550, 2560, 2570, 2580, 3115, 0,
7420 252, 257, 262, 267, 517, 527, 537, 547, 981, 1241, 1251, 2590, 3350, 3360, 0,
7421 572, 1126, 0,
7422 582, 1091, 2610, 2620, 2630, 0,
7423 592, 602, 612, 2640, 2660, 2670, 0,
7424 2680, 2690, 2700, 0,
7425 272, 632, 642, 652, 1161, 2710, 2720, 2730, 2740, 0,
7426 277, 282, 287, 292, 297, 667, 677, 687, 906, 991, 1101, 1261, 1271, 1391, 3370, 3380, 0,
7427 2790, 2800, 0,
7428 697, 707, 717, 1281, 1291, 2810, 2820, 2840, 0,
7429 727, 737, 747, 757, 1321, 2850, 2860, 0,
7430 767, 777, 1331, 2900, 2910, 2920, 2930, 3120, 0,
7431 302, 307, 312, 317, 787, 797, 807, 817, 827, 837, 916, 1001, 1301, 1311, 2940, 2950, 2960, 3490, 3500, 0,
7432 2990, 3000, 0,
7433 847, 3010, 3020, 3030, 3040, 3050, 3125, 0,
7434 3060, 3070, 0,
7435 322, 327, 857, 1411, 3080, 3130, 3560, 3570, 3580, 3590, 0,
7436 872, 882, 892, 3090, 3100, 3110, 0,
7437 1537, 4476, 4670, 0,
7438 3165, 3175, 3185, 3195, 0,
7439 1046, 0,
7440 1166, 0,
7441 1066, 1176, 0,
7442 2405, 0,
7443 3295, 3305, 3315, 3325, 0,
7444 2595, 0,
7445 3385, 3395, 3405, 3415, 0,
7446 1376, 2745, 2755, 0,
7447 1366, 0,
7448 1186, 0,
7449 1006, 1016, 1026, 1036, 0,
7450 3170, 3180, 3190, 3200, 0,
7451 1051, 0,
7452 1171, 0,
7453 1071, 1181, 0,
7454 2410, 0,
7455 3300, 3310, 3320, 3330, 0,
7456 2600, 0,
7457 3390, 3400, 3410, 3420, 0,
7458 1381, 2750, 2760, 0,
7459 1371, 0,
7460 1191, 0,
7461 1011, 1021, 1031, 1041, 0,
7462 3215, 3225, 3235, 3245, 0,
7463 3220, 3230, 3240, 3250, 0,
7464 2465, 2475, 0,
7465 2470, 2480, 0,
7466 2765, 2775, 0,
7467 2770, 2780, 0,
7468 2865, 0,
7469 2870, 0,
7470 2875, 0,
7471 2880, 0,
7472 2965, 0,
7473 2970, 0,
7474 2975, 0,
7475 2980, 0,
7476 3140, 0,
7477 3435, 3445, 3455, 3465, 3475, 0,
7478 3440, 3450, 3460, 3470, 3480, 0,
7479 3505, 3515, 3525, 3535, 3545, 0,
7480 3510, 3520, 3530, 3540, 3550, 0,
7481 1116, 0,
7482 1106, 0,
7483 1111, 0,
7484 1056, 0,
7485 1061, 0,
7486 2505, 0,
7487 2510, 0,
7488 1396, 0,
7489 1401, 0,
7490 1121, 0,
7491 1514, 0,
7492 1542, 3635, 3640, 4433, 4438, 4443, 4452, 0,
7493 1551, 3705, 3710, 4506, 0,
7494 1556, 3775, 3780, 4515, 4524, 0,
7495 1561, 1586, 3855, 3860, 4573, 4578, 4583, 0,
7496 1566, 3925, 3930, 4708, 0,
7497 4665, 0,
7498 1571, 1591, 3995, 4646, 4651, 4656, 0,
7499 1576, 4055, 4060, 4717, 4726, 0,
7500 4418, 0,
7501 4491, 0,
7502 1596, 3595, 3600, 4095, 4398, 4403, 4413, 4423, 0,
7503 1601, 3675, 3680, 4104, 0,
7504 1606, 3735, 3740, 4113, 4486, 4496, 0,
7505 1611, 1621, 3815, 3820, 4122, 4544, 4549, 4563, 0,
7506 1631, 3895, 3900, 4131, 0,
7507 4626, 4631, 0,
7508 1626, 1636, 3955, 3960, 4140, 4607, 4612, 4636, 0,
7509 1641, 4015, 4020, 4149, 4688, 4698, 0,
7510 1581, 4554, 4568, 0,
7511 1616, 4617, 4641, 0,
7512 4693, 0,
7513 1658, 1663, 0,
7514 1711, 0,
7515 1796, 1806, 0,
7516 1706, 0,
7517 1696, 1701, 1816, 0,
7518 1786, 1836, 0,
7519 1846, 0,
7520 1721, 1731, 1856, 1866, 0,
7521 1716, 0,
7522 1876, 0,
7523 1726, 1906, 1916, 1926, 0,
7524 1936, 0,
7525 1946, 0,
7526 1896, 0,
7527 1801, 1811, 0,
7528 1751, 0,
7529 1741, 1746, 1821, 0,
7530 1791, 1841, 0,
7531 1851, 0,
7532 1736, 1766, 1861, 1871, 0,
7533 1761, 0,
7534 1881, 0,
7535 1771, 1911, 1921, 1931, 0,
7536 1941, 0,
7537 1951, 0,
7538 1901, 0,
7539 1756, 0,
7540 1776, 0,
7541 1781, 0,
7542 1826, 0,
7543 1831, 0,
7544 1886, 0,
7545 1891, 0,
7546 12167, 12172, 12177, 0,
7547 12182, 12292, 0,
7548 12187, 0,
7549 12192, 0,
7550 12197, 0,
7551 12202, 12287, 0,
7552 12207, 0,
7553 12212, 0,
7554 12097, 12217, 0,
7555 12222, 0,
7556 12227, 12297, 0,
7557 12232, 0,
7558 12237, 0,
7559 12242, 0,
7560 12247, 0,
7561 12252, 0,
7562 12257, 12302, 0,
7563 12262, 0,
7564 12267, 0,
7565 12272, 0,
7566 12147, 12152, 12277, 0,
7567 12282, 0,
7568 12102, 0,
7569 1961, 1966, 1976, 0,
7570 1971, 0,
7571 1981, 0,
7572 2011, 0,
7573 2016, 0,
7574 2006, 0,
7575 2036, 0,
7576 2041, 0,
7577 2046, 0,
7578 2051, 0,
7579 2056, 0,
7580 2061, 0,
7581 2021, 0,
7582 2066, 0,
7583 2071, 0,
7584 2026, 0,
7585 2031, 0,
7586 2086, 0,
7587 2091, 0,
7588 2096, 0,
7589 2076, 2081, 0,
7590 2111, 0,
7591 2116, 0,
7592 2121, 0,
7593 2126, 0,
7594 2101, 0,
7595 2106, 0,
7596 2146, 0,
7597 2151, 0,
7598 2131, 2136, 2141, 0,
7599 2156, 0,
7600 2161, 2171, 0,
7601 2166, 0,
7602 2176, 0,
7603 2181, 0,
7604 2186, 2191, 2196, 0,
7605 2201, 0,
7606 2206, 2216, 0,
7607 2211, 0,
7608 2221, 2226, 2236, 0,
7609 2231, 0,
7610 2290, 0,
7611 2265, 0,
7612 2270, 0,
7613 2275, 0,
7614 2280, 0,
7615 2285, 0,
7616 2295, 2300, 2325, 0,
7617 2355, 0,
7618 2330, 0,
7619 2335, 0,
7620 2340, 0,
7621 2345, 0,
7622 2350, 0,
7623 2305, 0,
7624 2315, 0,
7625 2360, 0,
7626 2645, 0,
7627 2650, 0,
7628 2825, 0,
7629 2830, 0,
7630 2885, 0,
7631 2890, 0,
7632 3205, 3255, 0,
7633 3210, 3260, 0,
7634 3335, 0,
7635 3340, 0,
7636 3425, 0,
7637 3430, 0,
7638 3605, 3615, 3625, 4158, 0,
7639 3610, 3620, 3630, 4163, 0,
7640 4168, 0,
7641 4173, 0,
7642 4178, 0,
7643 4183, 0,
7644 4188, 0,
7645 4193, 0,
7646 3645, 3655, 3665, 4198, 0,
7647 3650, 3660, 3670, 4203, 0,
7648 4208, 0,
7649 4213, 0,
7650 4218, 0,
7651 4223, 0,
7652 4228, 0,
7653 4233, 0,
7654 3685, 3695, 0,
7655 3690, 3700, 0,
7656 3715, 3725, 0,
7657 3720, 3730, 0,
7658 3745, 3755, 3765, 4238, 0,
7659 3750, 3760, 3770, 4243, 0,
7660 4248, 0,
7661 4253, 0,
7662 4258, 0,
7663 4263, 0,
7664 4268, 0,
7665 4273, 0,
7666 3785, 3795, 3805, 4278, 0,
7667 3790, 3800, 3810, 4283, 0,
7668 4288, 0,
7669 4293, 0,
7670 4298, 0,
7671 4303, 0,
7672 4308, 0,
7673 4313, 0,
7674 3825, 3835, 3845, 0,
7675 3830, 3840, 3850, 0,
7676 3865, 3875, 3885, 0,
7677 3870, 3880, 3890, 0,
7678 3905, 3915, 0,
7679 3910, 3920, 0,
7680 3935, 3945, 0,
7681 3940, 3950, 0,
7682 3965, 3975, 3985, 0,
7683 3970, 3980, 3990, 0,
7684 4000, 4005, 4010, 0,
7685 4025, 4035, 4045, 4318, 0,
7686 4030, 4040, 4050, 4323, 0,
7687 4328, 0,
7688 4333, 0,
7689 4338, 0,
7690 4343, 0,
7691 4348, 0,
7692 4353, 0,
7693 4065, 4075, 4085, 4358, 0,
7694 4070, 4080, 4090, 4363, 0,
7695 4368, 0,
7696 4373, 0,
7697 4378, 0,
7698 4383, 0,
7699 4388, 0,
7700 4393, 0,
7701 4408, 0,
7702 4481, 0,
7703 4683, 0,
7704 4428, 0,
7705 4529, 4534, 4539, 0,
7706 4501, 0,
7707 4703, 0,
7708 4592, 4597, 4602, 0,
7709 5455, 0,
7710 5460, 0,
7711 5465, 0,
7712 5470, 0,
7713 5480, 0,
7714 5475, 0,
7715 5485, 0,
7716 5490, 0,
7717 5495, 0,
7718 5500, 0,
7719 5505, 0,
7720 5532, 0,
7721 5537, 0,
7722 5542, 0,
7723 5547, 0,
7724 5562, 0,
7725 5557, 0,
7726 5577, 0,
7727 5582, 0,
7728 5587, 0,
7729 5592, 0,
7730 5597, 0,
7731 5602, 0,
7732 5607, 0,
7733 5612, 0,
7734 5657, 0,
7735 5662, 0,
7736 5617, 0,
7737 5622, 0,
7738 5627, 0,
7739 5632, 0,
7740 5667, 0,
7741 5672, 0,
7742 5637, 0,
7743 5642, 0,
7744 5647, 0,
7745 5652, 0,
7746 5677, 0,
7747 5682, 0,
7748 5687, 0,
7749 5692, 0,
7750 6430, 0,
7751 7444, 0,
7752 7319, 0,
7753 7324, 0,
7754 7329, 0,
7755 7334, 0,
7756 7339, 0,
7757 7344, 0,
7758 7349, 0,
7759 7354, 0,
7760 7359, 0,
7761 7364, 0,
7762 7369, 0,
7763 7374, 0,
7764 7379, 0,
7765 7384, 0,
7766 7389, 0,
7767 7394, 7399, 0,
7768 7404, 7409, 0,
7769 7414, 7419, 0,
7770 7424, 7429, 0,
7771 7434, 7439, 0,
7772 7459, 0,
7773 7594, 0,
7774 7469, 0,
7775 7474, 0,
7776 7479, 0,
7777 7484, 0,
7778 7489, 0,
7779 7494, 0,
7780 7499, 0,
7781 7504, 0,
7782 7509, 0,
7783 7514, 0,
7784 7519, 0,
7785 7524, 0,
7786 7529, 0,
7787 7534, 0,
7788 7539, 0,
7789 7544, 7549, 0,
7790 7554, 7559, 0,
7791 7564, 7569, 0,
7792 7574, 7579, 0,
7793 7584, 7589, 0,
7794 7599, 0,
7795 7604, 0,
7796 7609, 0,
7797 7614, 0,
7798 7619, 0,
7799 12157, 12162, 0,
7800
7801};
7802
7803static const Q_UINT16 li_00[] = {
7804 0, 0, 0, 0, 0, 0, 0, 0,
7805 0, 0, 0, 0, 0, 0, 0, 0,
7806 0, 0, 0, 0, 0, 0, 0, 0,
7807 0, 0, 0, 0, 0, 0, 0, 0,
7808 0, 0, 0, 0, 0, 0, 0, 0,
7809 0, 0, 0, 0, 0, 0, 0, 0,
7810 0, 0, 0, 0, 0, 0, 0, 0,
7811 0, 0, 0, 0, 1, 3, 5, 0,
7812 0, 7, 24, 28, 34, 41, 59, 61,
7813 69, 77, 93, 95, 101, 108, 112, 122,
7814 139, 0, 142, 151, 159, 167, 187, 190,
7815 197, 200, 210, 0, 0, 0, 0, 0,
7816 0, 217, 234, 238, 244, 251, 269, 271,
7817 279, 288, 303, 306, 312, 319, 323, 333,
7818 350, 0, 353, 362, 370, 379, 399, 402,
7819 410, 413, 424, 0, 0, 0, 0, 0,
7820 0, 0, 0, 0, 0, 0, 0, 0,
7821 0, 0, 0, 0, 0, 0, 0, 0,
7822 0, 0, 0, 0, 0, 0, 0, 0,
7823 0, 0, 0, 0, 0, 0, 0, 0,
7824 0, 0, 0, 0, 0, 0, 0, 0,
7825 431, 0, 0, 0, 0, 0, 0, 0,
7826 0, 0, 0, 0, 0, 0, 0, 0,
7827 0, 0, 0, 0, 0, 0, 0, 0,
7828 0, 0, 435, 0, 440, 442, 444, 447,
7829 0, 0, 449, 0, 0, 0, 0, 454,
7830 0, 0, 0, 0, 456, 461, 465, 0,
7831 467, 0, 0, 0, 469, 0, 0, 0,
7832 0, 0, 474, 0, 479, 481, 483, 486,
7833 0, 0, 488, 0, 0, 0, 0, 493,
7834 0, 0, 0, 0, 495, 500, 504, 0,
7835 506, 0, 0, 0, 508, 0, 0, 0,
7836};
7837
7838static const Q_UINT16 li_01[] = {
7839 0, 0, 513, 518, 0, 0, 0, 0,
7840 0, 0, 0, 0, 0, 0, 0, 0,
7841 0, 0, 523, 526, 0, 0, 0, 0,
7842 0, 0, 0, 0, 0, 0, 0, 0,
7843 0, 0, 0, 0, 0, 0, 0, 0,
7844 0, 0, 0, 0, 0, 0, 0, 0,
7845 0, 0, 0, 0, 0, 0, 0, 0,
7846 0, 0, 0, 0, 0, 0, 0, 0,
7847 0, 0, 0, 0, 0, 0, 0, 0,
7848 0, 0, 0, 0, 529, 532, 0, 0,
7849 0, 0, 0, 0, 0, 0, 0, 0,
7850 0, 0, 535, 537, 0, 0, 0, 0,
7851 539, 541, 0, 0, 0, 0, 0, 0,
7852 543, 545, 547, 549, 0, 0, 0, 0,
7853 0, 0, 0, 0, 0, 0, 0, 0,
7854 0, 0, 0, 0, 0, 0, 0, 551,
7855 0, 0, 0, 0, 0, 0, 0, 0,
7856 0, 0, 0, 0, 0, 0, 0, 0,
7857 0, 0, 0, 0, 0, 0, 0, 0,
7858 0, 0, 0, 0, 0, 0, 0, 0,
7859 553, 559, 0, 0, 0, 0, 0, 0,
7860 0, 0, 0, 0, 0, 0, 0, 565,
7861 571, 0, 0, 0, 0, 0, 0, 577,
7862 0, 0, 0, 0, 0, 0, 0, 0,
7863 0, 0, 0, 0, 0, 0, 0, 0,
7864 0, 0, 0, 0, 0, 0, 0, 0,
7865 0, 0, 0, 0, 0, 0, 0, 0,
7866 0, 0, 0, 0, 0, 0, 0, 0,
7867 0, 0, 0, 0, 0, 0, 0, 0,
7868 0, 0, 579, 581, 0, 0, 0, 0,
7869 0, 0, 0, 0, 0, 0, 0, 0,
7870 0, 0, 0, 0, 0, 0, 0, 0,
7871};
7872
7873static const Q_UINT16 li_02[] = {
7874 0, 0, 0, 0, 0, 0, 0, 0,
7875 0, 0, 0, 0, 0, 0, 0, 0,
7876 0, 0, 0, 0, 0, 0, 0, 0,
7877 0, 0, 0, 0, 0, 0, 0, 0,
7878 0, 0, 0, 0, 0, 0, 583, 585,
7879 587, 589, 0, 0, 0, 0, 591, 593,
7880 0, 0, 0, 0, 0, 0, 0, 0,
7881 0, 0, 0, 0, 0, 0, 0, 0,
7882 0, 0, 0, 0, 0, 0, 0, 0,
7883 0, 0, 0, 0, 0, 0, 0, 0,
7884 0, 0, 0, 0, 0, 0, 0, 0,
7885 0, 0, 0, 0, 0, 0, 0, 0,
7886 0, 0, 0, 0, 0, 0, 0, 0,
7887 0, 0, 0, 0, 0, 0, 0, 0,
7888 0, 0, 0, 0, 0, 0, 0, 0,
7889 0, 0, 0, 0, 0, 0, 0, 0,
7890 0, 0, 0, 0, 0, 0, 0, 0,
7891 0, 0, 0, 0, 0, 0, 0, 0,
7892 0, 0, 595, 0, 0, 0, 0, 0,
7893 0, 0, 0, 0, 0, 0, 0, 0,
7894 0, 0, 0, 0, 0, 0, 0, 0,
7895 0, 0, 0, 0, 0, 0, 0, 0,
7896 0, 0, 0, 0, 0, 0, 0, 0,
7897 0, 0, 0, 0, 0, 0, 0, 0,
7898 0, 0, 0, 0, 0, 0, 0, 0,
7899 0, 0, 0, 0, 0, 0, 0, 0,
7900 0, 0, 0, 0, 0, 0, 0, 0,
7901 0, 0, 0, 0, 0, 0, 0, 0,
7902 0, 0, 0, 0, 0, 0, 0, 0,
7903 0, 0, 0, 0, 0, 0, 0, 0,
7904 0, 0, 0, 0, 0, 0, 0, 0,
7905 0, 0, 0, 0, 0, 0, 0, 0,
7906};
7907
7908static const Q_UINT16 li_03[] = {
7909 0, 0, 0, 0, 0, 0, 0, 0,
7910 597, 0, 0, 0, 0, 0, 0, 0,
7911 0, 0, 0, 0, 0, 0, 0, 0,
7912 0, 0, 0, 0, 0, 0, 0, 0,
7913 0, 0, 0, 0, 0, 0, 0, 0,
7914 0, 0, 0, 0, 0, 0, 0, 0,
7915 0, 0, 0, 0, 0, 0, 0, 0,
7916 0, 0, 0, 0, 0, 0, 0, 0,
7917 0, 0, 0, 0, 0, 0, 0, 0,
7918 0, 0, 0, 0, 0, 0, 0, 0,
7919 0, 0, 0, 0, 0, 0, 0, 0,
7920 0, 0, 0, 0, 0, 0, 0, 0,
7921 0, 0, 0, 0, 0, 0, 0, 0,
7922 0, 0, 0, 0, 0, 0, 0, 0,
7923 0, 0, 0, 0, 0, 0, 0, 0,
7924 0, 0, 0, 0, 0, 0, 0, 0,
7925 0, 0, 0, 0, 0, 0, 0, 0,
7926 0, 0, 0, 0, 0, 0, 0, 0,
7927 0, 599, 0, 0, 0, 607, 0, 612,
7928 0, 618, 0, 0, 0, 0, 0, 626,
7929 0, 631, 0, 0, 0, 633, 0, 0,
7930 0, 640, 0, 0, 646, 0, 648, 0,
7931 0, 650, 0, 0, 0, 659, 0, 664,
7932 0, 671, 0, 0, 0, 0, 0, 680,
7933 0, 685, 0, 0, 0, 688, 0, 0,
7934 0, 697, 704, 708, 0, 0, 712, 0,
7935 0, 0, 714, 0, 0, 0, 0, 0,
7936 0, 0, 0, 0, 0, 0, 0, 0,
7937 0, 0, 0, 0, 0, 0, 0, 0,
7938 0, 0, 0, 0, 0, 0, 0, 0,
7939 0, 0, 0, 0, 0, 0, 0, 0,
7940 0, 0, 0, 0, 0, 0, 0, 0,
7941};
7942
7943static const Q_UINT16 li_04[] = {
7944 0, 0, 0, 0, 0, 0, 717, 0,
7945 0, 0, 0, 0, 0, 0, 0, 0,
7946 719, 0, 0, 722, 0, 724, 728, 731,
7947 733, 0, 738, 0, 0, 0, 740, 0,
7948 0, 0, 0, 742, 0, 0, 0, 747,
7949 0, 0, 0, 749, 0, 751, 0, 0,
7950 753, 0, 0, 756, 0, 758, 762, 765,
7951 767, 0, 772, 0, 0, 0, 774, 0,
7952 0, 0, 0, 776, 0, 0, 0, 781,
7953 0, 0, 0, 783, 0, 785, 0, 0,
7954 0, 0, 0, 0, 0, 0, 787, 0,
7955 0, 0, 0, 0, 0, 0, 0, 0,
7956 0, 0, 0, 0, 0, 0, 0, 0,
7957 0, 0, 0, 0, 0, 0, 0, 0,
7958 0, 0, 0, 0, 789, 791, 0, 0,
7959 0, 0, 0, 0, 0, 0, 0, 0,
7960 0, 0, 0, 0, 0, 0, 0, 0,
7961 0, 0, 0, 0, 0, 0, 0, 0,
7962 0, 0, 0, 0, 0, 0, 0, 0,
7963 0, 0, 0, 0, 0, 0, 0, 0,
7964 0, 0, 0, 0, 0, 0, 0, 0,
7965 0, 0, 0, 0, 0, 0, 0, 0,
7966 0, 0, 0, 0, 0, 0, 0, 0,
7967 0, 0, 0, 0, 0, 0, 0, 0,
7968 0, 0, 0, 0, 0, 0, 0, 0,
7969 0, 0, 0, 0, 0, 0, 0, 0,
7970 0, 0, 0, 0, 0, 0, 0, 0,
7971 793, 795, 0, 0, 0, 0, 0, 0,
7972 0, 0, 0, 0, 0, 0, 0, 0,
7973 797, 799, 0, 0, 0, 0, 0, 0,
7974 0, 0, 0, 0, 0, 0, 0, 0,
7975 0, 0, 0, 0, 0, 0, 0, 0,
7976};
7977
7978static const Q_UINT16 li_05[] = {
7979 0, 0, 0, 0, 0, 0, 0, 0,
7980 0, 0, 0, 0, 0, 0, 0, 0,
7981 0, 0, 0, 0, 0, 0, 0, 0,
7982 0, 0, 0, 0, 0, 0, 0, 0,
7983 0, 0, 0, 0, 0, 0, 0, 0,
7984 0, 0, 0, 0, 0, 0, 0, 0,
7985 0, 0, 0, 0, 0, 0, 0, 0,
7986 0, 0, 0, 0, 0, 0, 0, 0,
7987 0, 0, 0, 0, 0, 0, 0, 0,
7988 0, 0, 0, 0, 0, 0, 0, 0,
7989 0, 0, 0, 0, 0, 0, 0, 0,
7990 0, 0, 0, 0, 0, 0, 0, 0,
7991 0, 0, 0, 0, 0, 0, 0, 0,
7992 0, 0, 0, 0, 0, 0, 0, 0,
7993 0, 0, 0, 0, 0, 0, 0, 0,
7994 0, 0, 0, 0, 0, 0, 0, 0,
7995 0, 0, 0, 0, 0, 0, 0, 0,
7996 0, 0, 0, 0, 0, 0, 0, 0,
7997 0, 0, 0, 0, 0, 0, 0, 0,
7998 0, 0, 0, 0, 0, 0, 0, 0,
7999 0, 0, 0, 0, 0, 0, 0, 0,
8000 0, 0, 0, 0, 0, 0, 0, 0,
8001 0, 0, 0, 0, 0, 0, 0, 0,
8002 0, 0, 0, 0, 0, 0, 0, 0,
8003 0, 0, 0, 0, 0, 0, 0, 0,
8004 0, 0, 0, 0, 0, 0, 0, 0,
8005 801, 805, 808, 810, 812, 814, 817, 0,
8006 819, 821, 824, 826, 829, 0, 831, 0,
8007 833, 835, 0, 837, 839, 0, 842, 844,
8008 846, 848, 852, 0, 0, 0, 0, 0,
8009 0, 0, 854, 0, 0, 0, 0, 0,
8010 0, 0, 0, 0, 0, 0, 0, 0,
8011};
8012
8013static const Q_UINT16 li_06[] = {
8014 0, 0, 0, 0, 0, 0, 0, 0,
8015 0, 0, 0, 0, 0, 0, 0, 0,
8016 0, 0, 0, 0, 0, 0, 0, 0,
8017 0, 0, 0, 0, 0, 0, 0, 0,
8018 0, 0, 0, 0, 0, 0, 0, 856,
8019 0, 0, 0, 0, 0, 0, 0, 0,
8020 0, 0, 0, 0, 0, 0, 0, 0,
8021 0, 0, 0, 0, 0, 0, 0, 0,
8022 0, 0, 0, 0, 0, 0, 0, 0,
8023 860, 0, 862, 0, 0, 0, 0, 0,
8024 0, 0, 0, 0, 0, 0, 0, 0,
8025 0, 0, 0, 0, 0, 0, 0, 0,
8026 0, 0, 0, 0, 0, 0, 0, 0,
8027 0, 0, 0, 0, 0, 0, 0, 0,
8028 0, 0, 0, 0, 0, 0, 0, 0,
8029 0, 0, 0, 0, 0, 0, 0, 0,
8030 0, 0, 0, 0, 0, 0, 0, 0,
8031 0, 0, 0, 0, 0, 0, 0, 0,
8032 0, 0, 0, 0, 0, 0, 0, 0,
8033 0, 0, 0, 0, 0, 0, 0, 0,
8034 0, 0, 0, 0, 0, 0, 0, 0,
8035 0, 0, 0, 0, 0, 0, 0, 0,
8036 0, 0, 0, 0, 0, 0, 0, 0,
8037 0, 0, 0, 0, 0, 0, 0, 0,
8038 0, 864, 0, 0, 0, 0, 0, 0,
8039 0, 0, 0, 0, 0, 0, 0, 0,
8040 0, 0, 866, 0, 0, 868, 0, 0,
8041 0, 0, 0, 0, 0, 0, 0, 0,
8042 0, 0, 0, 0, 0, 0, 0, 0,
8043 0, 0, 0, 0, 0, 0, 0, 0,
8044 0, 0, 0, 0, 0, 0, 0, 0,
8045 0, 0, 0, 0, 0, 0, 0, 0,
8046};
8047
8048static const Q_UINT16 li_07[] = {
8049 0, 0, 0, 0, 0, 0, 0, 0,
8050 0, 0, 0, 0, 0, 0, 0, 0,
8051 0, 0, 0, 0, 0, 0, 0, 0,
8052 0, 0, 0, 0, 0, 0, 0, 0,
8053 0, 0, 0, 0, 0, 0, 0, 0,
8054 0, 0, 0, 0, 0, 0, 0, 0,
8055 0, 0, 0, 0, 0, 0, 0, 0,
8056 0, 0, 0, 0, 0, 0, 0, 0,
8057 0, 0, 0, 0, 0, 0, 0, 0,
8058 0, 0, 0, 0, 0, 0, 0, 0,
8059 0, 0, 0, 0, 0, 0, 0, 0,
8060 0, 0, 0, 0, 0, 0, 0, 0,
8061 0, 0, 0, 0, 0, 0, 0, 0,
8062 0, 0, 0, 0, 0, 0, 0, 0,
8063 0, 0, 0, 0, 0, 0, 0, 0,
8064 0, 0, 0, 0, 0, 0, 0, 0,
8065 0, 0, 0, 0, 0, 0, 0, 0,
8066 0, 0, 0, 0, 0, 0, 0, 0,
8067 0, 0, 0, 0, 0, 0, 0, 0,
8068 0, 0, 0, 0, 0, 0, 0, 0,
8069 0, 0, 0, 0, 0, 0, 0, 0,
8070 0, 0, 0, 0, 0, 0, 0, 0,
8071 0, 0, 0, 0, 0, 0, 0, 0,
8072 0, 0, 0, 0, 0, 0, 0, 0,
8073 0, 0, 0, 0, 0, 0, 0, 0,
8074 0, 0, 0, 0, 0, 0, 0, 0,
8075 0, 0, 0, 0, 0, 0, 0, 0,
8076 0, 0, 0, 0, 0, 0, 0, 0,
8077 0, 0, 0, 0, 0, 0, 0, 0,
8078 0, 0, 0, 0, 0, 0, 0, 0,
8079 0, 0, 0, 0, 0, 0, 0, 0,
8080 0, 0, 0, 0, 0, 0, 0, 0,
8081};
8082
8083static const Q_UINT16 li_09[] = {
8084 0, 0, 0, 0, 0, 0, 0, 0,
8085 0, 0, 0, 0, 0, 0, 0, 0,
8086 0, 0, 0, 0, 0, 870, 872, 874,
8087 0, 0, 0, 0, 876, 0, 0, 0,
8088 0, 878, 880, 0, 0, 0, 0, 0,
8089 882, 0, 0, 884, 0, 0, 0, 886,
8090 888, 0, 0, 890, 0, 0, 0, 0,
8091 0, 0, 0, 0, 0, 0, 0, 0,
8092 0, 0, 0, 0, 0, 0, 0, 0,
8093 0, 0, 0, 0, 0, 0, 0, 0,
8094 0, 0, 0, 0, 0, 0, 0, 0,
8095 0, 0, 0, 0, 0, 0, 0, 0,
8096 0, 0, 0, 0, 0, 0, 0, 0,
8097 0, 0, 0, 0, 0, 0, 0, 0,
8098 0, 0, 0, 0, 0, 0, 0, 0,
8099 0, 0, 0, 0, 0, 0, 0, 0,
8100 0, 0, 0, 0, 0, 0, 0, 0,
8101 0, 0, 0, 0, 0, 0, 0, 0,
8102 0, 0, 0, 0, 0, 0, 0, 0,
8103 0, 0, 0, 0, 0, 0, 0, 0,
8104 0, 892, 894, 0, 0, 0, 0, 0,
8105 0, 0, 0, 0, 0, 0, 0, 896,
8106 0, 0, 0, 0, 0, 0, 0, 0,
8107 0, 0, 0, 0, 0, 0, 0, 0,
8108 0, 0, 0, 0, 0, 0, 0, 898,
8109 0, 0, 0, 0, 0, 0, 0, 0,
8110 0, 0, 0, 0, 0, 0, 0, 0,
8111 0, 0, 0, 0, 0, 0, 0, 0,
8112 0, 0, 0, 0, 0, 0, 0, 0,
8113 0, 0, 0, 0, 0, 0, 0, 0,
8114 0, 0, 0, 0, 0, 0, 0, 0,
8115 0, 0, 0, 0, 0, 0, 0, 0,
8116};
8117
8118static const Q_UINT16 li_0A[] = {
8119 0, 0, 0, 0, 0, 0, 0, 0,
8120 0, 0, 0, 0, 0, 0, 0, 0,
8121 0, 0, 0, 0, 0, 0, 901, 903,
8122 0, 0, 0, 0, 905, 0, 0, 0,
8123 0, 0, 0, 0, 0, 0, 0, 0,
8124 0, 0, 0, 907, 0, 0, 0, 0,
8125 0, 0, 909, 0, 0, 0, 0, 0,
8126 911, 0, 0, 0, 0, 0, 0, 0,
8127 0, 0, 0, 0, 0, 0, 0, 0,
8128 0, 0, 0, 0, 0, 0, 0, 0,
8129 0, 0, 0, 0, 0, 0, 0, 0,
8130 0, 0, 0, 0, 0, 0, 0, 0,
8131 0, 0, 0, 0, 0, 0, 0, 0,
8132 0, 0, 0, 0, 0, 0, 0, 0,
8133 0, 0, 0, 0, 0, 0, 0, 0,
8134 0, 0, 0, 0, 0, 0, 0, 0,
8135 0, 0, 0, 0, 0, 0, 0, 0,
8136 0, 0, 0, 0, 0, 0, 0, 0,
8137 0, 0, 0, 0, 0, 0, 0, 0,
8138 0, 0, 0, 0, 0, 0, 0, 0,
8139 0, 0, 0, 0, 0, 0, 0, 0,
8140 0, 0, 0, 0, 0, 0, 0, 0,
8141 0, 0, 0, 0, 0, 0, 0, 0,
8142 0, 0, 0, 0, 0, 0, 0, 0,
8143 0, 0, 0, 0, 0, 0, 0, 0,
8144 0, 0, 0, 0, 0, 0, 0, 0,
8145 0, 0, 0, 0, 0, 0, 0, 0,
8146 0, 0, 0, 0, 0, 0, 0, 0,
8147 0, 0, 0, 0, 0, 0, 0, 0,
8148 0, 0, 0, 0, 0, 0, 0, 0,
8149 0, 0, 0, 0, 0, 0, 0, 0,
8150 0, 0, 0, 0, 0, 0, 0, 0,
8151};
8152
8153static const Q_UINT16 li_0B[] = {
8154 0, 0, 0, 0, 0, 0, 0, 0,
8155 0, 0, 0, 0, 0, 0, 0, 0,
8156 0, 0, 0, 0, 0, 0, 0, 0,
8157 0, 0, 0, 0, 0, 0, 0, 0,
8158 0, 913, 915, 0, 0, 0, 0, 0,
8159 0, 0, 0, 0, 0, 0, 0, 0,
8160 0, 0, 0, 0, 0, 0, 0, 0,
8161 0, 0, 0, 0, 0, 0, 0, 0,
8162 0, 0, 0, 0, 0, 0, 0, 917,
8163 0, 0, 0, 0, 0, 0, 0, 0,
8164 0, 0, 0, 0, 0, 0, 0, 0,
8165 0, 0, 0, 0, 0, 0, 0, 0,
8166 0, 0, 0, 0, 0, 0, 0, 0,
8167 0, 0, 0, 0, 0, 0, 0, 0,
8168 0, 0, 0, 0, 0, 0, 0, 0,
8169 0, 0, 0, 0, 0, 0, 0, 0,
8170 0, 0, 0, 0, 0, 0, 0, 0,
8171 0, 0, 0, 0, 0, 0, 0, 0,
8172 0, 0, 921, 0, 0, 0, 0, 0,
8173 0, 0, 0, 0, 0, 0, 0, 0,
8174 0, 0, 0, 0, 0, 0, 0, 0,
8175 0, 0, 0, 0, 0, 0, 0, 0,
8176 0, 0, 0, 0, 0, 0, 0, 0,
8177 0, 0, 0, 0, 0, 0, 0, 0,
8178 0, 0, 0, 0, 0, 0, 923, 926,
8179 0, 0, 0, 0, 0, 0, 0, 0,
8180 0, 0, 0, 0, 0, 0, 0, 0,
8181 0, 0, 0, 0, 0, 0, 0, 0,
8182 0, 0, 0, 0, 0, 0, 0, 0,
8183 0, 0, 0, 0, 0, 0, 0, 0,
8184 0, 0, 0, 0, 0, 0, 0, 0,
8185 0, 0, 0, 0, 0, 0, 0, 0,
8186};
8187
8188static const Q_UINT16 li_0C[] = {
8189 0, 0, 0, 0, 0, 0, 0, 0,
8190 0, 0, 0, 0, 0, 0, 0, 0,
8191 0, 0, 0, 0, 0, 0, 0, 0,
8192 0, 0, 0, 0, 0, 0, 0, 0,
8193 0, 0, 0, 0, 0, 0, 0, 0,
8194 0, 0, 0, 0, 0, 0, 0, 0,
8195 0, 0, 0, 0, 0, 0, 0, 0,
8196 0, 0, 0, 0, 0, 0, 0, 0,
8197 0, 0, 0, 0, 0, 0, 928, 0,
8198 0, 0, 0, 0, 0, 0, 0, 0,
8199 0, 0, 0, 0, 0, 0, 0, 0,
8200 0, 0, 0, 0, 0, 0, 0, 0,
8201 0, 0, 0, 0, 0, 0, 0, 0,
8202 0, 0, 0, 0, 0, 0, 0, 0,
8203 0, 0, 0, 0, 0, 0, 0, 0,
8204 0, 0, 0, 0, 0, 0, 0, 0,
8205 0, 0, 0, 0, 0, 0, 0, 0,
8206 0, 0, 0, 0, 0, 0, 0, 0,
8207 0, 0, 0, 0, 0, 0, 0, 0,
8208 0, 0, 0, 0, 0, 0, 0, 0,
8209 0, 0, 0, 0, 0, 0, 0, 0,
8210 0, 0, 0, 0, 0, 0, 0, 0,
8211 0, 0, 0, 0, 0, 0, 0, 0,
8212 0, 0, 0, 0, 0, 0, 0, 930,
8213 0, 0, 0, 0, 0, 0, 932, 0,
8214 0, 0, 936, 0, 0, 0, 0, 0,
8215 0, 0, 0, 0, 0, 0, 0, 0,
8216 0, 0, 0, 0, 0, 0, 0, 0,
8217 0, 0, 0, 0, 0, 0, 0, 0,
8218 0, 0, 0, 0, 0, 0, 0, 0,
8219 0, 0, 0, 0, 0, 0, 0, 0,
8220 0, 0, 0, 0, 0, 0, 0, 0,
8221};
8222
8223static const Q_UINT16 li_0D[] = {
8224 0, 0, 0, 0, 0, 0, 0, 0,
8225 0, 0, 0, 0, 0, 0, 0, 0,
8226 0, 0, 0, 0, 0, 0, 0, 0,
8227 0, 0, 0, 0, 0, 0, 0, 0,
8228 0, 0, 0, 0, 0, 0, 0, 0,
8229 0, 0, 0, 0, 0, 0, 0, 0,
8230 0, 0, 0, 0, 0, 0, 0, 0,
8231 0, 0, 0, 0, 0, 0, 0, 0,
8232 0, 0, 0, 0, 0, 0, 938, 941,
8233 0, 0, 0, 0, 0, 0, 0, 0,
8234 0, 0, 0, 0, 0, 0, 0, 0,
8235 0, 0, 0, 0, 0, 0, 0, 0,
8236 0, 0, 0, 0, 0, 0, 0, 0,
8237 0, 0, 0, 0, 0, 0, 0, 0,
8238 0, 0, 0, 0, 0, 0, 0, 0,
8239 0, 0, 0, 0, 0, 0, 0, 0,
8240 0, 0, 0, 0, 0, 0, 0, 0,
8241 0, 0, 0, 0, 0, 0, 0, 0,
8242 0, 0, 0, 0, 0, 0, 0, 0,
8243 0, 0, 0, 0, 0, 0, 0, 0,
8244 0, 0, 0, 0, 0, 0, 0, 0,
8245 0, 0, 0, 0, 0, 0, 0, 0,
8246 0, 0, 0, 0, 0, 0, 0, 0,
8247 0, 0, 0, 0, 0, 0, 0, 0,
8248 0, 0, 0, 0, 0, 0, 0, 0,
8249 0, 0, 0, 0, 0, 0, 0, 0,
8250 0, 0, 0, 0, 0, 0, 0, 0,
8251 0, 943, 0, 0, 947, 0, 0, 0,
8252 0, 0, 0, 0, 0, 0, 0, 0,
8253 0, 0, 0, 0, 0, 0, 0, 0,
8254 0, 0, 0, 0, 0, 0, 0, 0,
8255 0, 0, 0, 0, 0, 0, 0, 0,
8256};
8257
8258static const Q_UINT16 li_0F[] = {
8259 0, 0, 0, 0, 0, 0, 0, 0,
8260 0, 0, 0, 0, 0, 0, 0, 0,
8261 0, 0, 0, 0, 0, 0, 0, 0,
8262 0, 0, 0, 0, 0, 0, 0, 0,
8263 0, 0, 0, 0, 0, 0, 0, 0,
8264 0, 0, 0, 0, 0, 0, 0, 0,
8265 0, 0, 0, 0, 0, 0, 0, 0,
8266 0, 0, 0, 0, 0, 0, 0, 0,
8267 949, 0, 951, 0, 0, 0, 0, 0,
8268 0, 0, 0, 0, 953, 0, 0, 0,
8269 0, 955, 0, 0, 0, 0, 957, 0,
8270 0, 0, 0, 959, 0, 0, 0, 0,
8271 0, 0, 0, 0, 0, 0, 0, 0,
8272 0, 0, 0, 0, 0, 0, 0, 0,
8273 0, 961, 0, 0, 0, 0, 0, 0,
8274 0, 0, 0, 0, 0, 0, 0, 0,
8275 0, 0, 0, 0, 0, 0, 0, 0,
8276 0, 0, 0, 0, 0, 0, 0, 0,
8277 965, 0, 967, 0, 0, 0, 0, 0,
8278 0, 0, 0, 0, 969, 0, 0, 0,
8279 0, 971, 0, 0, 0, 0, 973, 0,
8280 0, 0, 0, 975, 0, 0, 0, 0,
8281 0, 0, 977, 979, 0, 0, 0, 0,
8282 0, 0, 0, 0, 0, 0, 0, 0,
8283 0, 0, 0, 0, 0, 0, 0, 0,
8284 0, 0, 0, 0, 0, 0, 0, 0,
8285 0, 0, 0, 0, 0, 0, 0, 0,
8286 0, 0, 0, 0, 0, 0, 0, 0,
8287 0, 0, 0, 0, 0, 0, 0, 0,
8288 0, 0, 0, 0, 0, 0, 0, 0,
8289 0, 0, 0, 0, 0, 0, 0, 0,
8290 0, 0, 0, 0, 0, 0, 0, 0,
8291};
8292
8293static const Q_UINT16 li_10[] = {
8294 0, 0, 0, 0, 0, 0, 0, 0,
8295 0, 0, 0, 0, 0, 0, 0, 0,
8296 0, 0, 0, 0, 0, 0, 0, 0,
8297 0, 0, 0, 0, 0, 0, 0, 0,
8298 0, 0, 0, 0, 0, 981, 0, 0,
8299 0, 0, 0, 0, 0, 0, 0, 0,
8300 0, 0, 0, 0, 0, 0, 0, 0,
8301 0, 0, 0, 0, 0, 0, 0, 0,
8302 0, 0, 0, 0, 0, 0, 0, 0,
8303 0, 0, 0, 0, 0, 0, 0, 0,
8304 0, 0, 0, 0, 0, 0, 0, 0,
8305 0, 0, 0, 0, 0, 0, 0, 0,
8306 0, 0, 0, 0, 0, 0, 0, 0,
8307 0, 0, 0, 0, 0, 0, 0, 0,
8308 0, 0, 0, 0, 0, 0, 0, 0,
8309 0, 0, 0, 0, 0, 0, 0, 0,
8310 0, 0, 0, 0, 0, 0, 0, 0,
8311 0, 0, 0, 0, 0, 0, 0, 0,
8312 0, 0, 0, 0, 0, 0, 0, 0,
8313 0, 0, 0, 0, 0, 0, 0, 0,
8314 0, 0, 0, 0, 0, 0, 0, 0,
8315 0, 0, 0, 0, 0, 0, 0, 0,
8316 0, 0, 0, 0, 0, 0, 0, 0,
8317 0, 0, 0, 0, 0, 0, 0, 0,
8318 0, 0, 0, 0, 0, 0, 0, 0,
8319 0, 0, 0, 0, 0, 0, 0, 0,
8320 0, 0, 0, 0, 0, 0, 0, 0,
8321 0, 0, 0, 0, 0, 0, 0, 0,
8322 0, 0, 0, 0, 0, 0, 0, 0,
8323 0, 0, 0, 0, 0, 0, 0, 0,
8324 0, 0, 0, 0, 0, 0, 0, 0,
8325 0, 0, 0, 0, 0, 0, 0, 0,
8326};
8327
8328static const Q_UINT16 li_1E[] = {
8329 0, 0, 0, 0, 0, 0, 0, 0,
8330 0, 0, 0, 0, 0, 0, 0, 0,
8331 0, 0, 0, 0, 0, 0, 0, 0,
8332 0, 0, 0, 0, 0, 0, 0, 0,
8333 0, 0, 0, 0, 0, 0, 0, 0,
8334 0, 0, 0, 0, 0, 0, 0, 0,
8335 0, 0, 0, 0, 0, 0, 983, 985,
8336 0, 0, 0, 0, 0, 0, 0, 0,
8337 0, 0, 0, 0, 0, 0, 0, 0,
8338 0, 0, 0, 0, 0, 0, 0, 0,
8339 0, 0, 0, 0, 0, 0, 0, 0,
8340 0, 0, 987, 989, 0, 0, 0, 0,
8341 0, 0, 991, 993, 0, 0, 0, 0,
8342 0, 0, 0, 0, 0, 0, 0, 0,
8343 0, 0, 0, 0, 0, 0, 0, 0,
8344 0, 0, 0, 0, 0, 0, 0, 0,
8345 0, 0, 0, 0, 0, 0, 0, 0,
8346 0, 0, 0, 0, 0, 0, 0, 0,
8347 0, 0, 0, 0, 0, 0, 0, 0,
8348 0, 0, 0, 0, 0, 0, 0, 0,
8349 995, 998, 0, 0, 0, 0, 0, 0,
8350 0, 0, 0, 0, 0, 0, 0, 0,
8351 0, 0, 0, 0, 0, 0, 0, 0,
8352 1001, 1003, 0, 0, 0, 0, 0, 0,
8353 0, 0, 0, 0, 0, 0, 0, 0,
8354 0, 0, 0, 0, 1005, 1007, 0, 0,
8355 0, 0, 0, 0, 0, 0, 0, 0,
8356 0, 0, 0, 0, 0, 0, 0, 0,
8357 0, 0, 0, 0, 0, 0, 0, 0,
8358 0, 0, 0, 0, 0, 0, 0, 0,
8359 0, 0, 0, 0, 0, 0, 0, 0,
8360 0, 0, 0, 0, 0, 0, 0, 0,
8361};
8362
8363static const Q_UINT16 li_1F[] = {
8364 1009, 1014, 1019, 1021, 1023, 1025, 1027, 1029,
8365 1031, 1036, 1041, 1043, 1045, 1047, 1049, 1051,
8366 1053, 1056, 0, 0, 0, 0, 0, 0,
8367 1059, 1062, 0, 0, 0, 0, 0, 0,
8368 1065, 1070, 1075, 1077, 1079, 1081, 1083, 1085,
8369 1087, 1092, 1097, 1099, 1101, 1103, 1105, 1107,
8370 1109, 1113, 0, 0, 0, 0, 0, 0,
8371 1117, 1121, 0, 0, 0, 0, 0, 0,
8372 1125, 1128, 0, 0, 0, 0, 0, 0,
8373 1131, 1134, 0, 0, 0, 0, 0, 0,
8374 1137, 1141, 0, 0, 0, 0, 0, 0,
8375 0, 1145, 0, 0, 0, 0, 0, 0,
8376 1149, 1154, 1159, 1161, 1163, 1165, 1167, 1169,
8377 1171, 1176, 1181, 1183, 1185, 1187, 1189, 1191,
8378 1193, 0, 0, 0, 1195, 0, 0, 0,
8379 0, 0, 0, 0, 1197, 0, 0, 0,
8380 0, 0, 0, 0, 0, 0, 0, 0,
8381 0, 0, 0, 0, 0, 0, 0, 0,
8382 0, 0, 0, 0, 0, 0, 0, 0,
8383 0, 0, 0, 0, 0, 0, 0, 0,
8384 0, 0, 0, 0, 0, 0, 0, 0,
8385 0, 0, 0, 0, 0, 0, 0, 0,
8386 0, 0, 0, 0, 0, 0, 1199, 0,
8387 0, 0, 0, 0, 0, 0, 0, 1201,
8388 0, 0, 0, 0, 0, 0, 1205, 0,
8389 0, 0, 0, 0, 0, 0, 0, 0,
8390 0, 0, 0, 0, 0, 0, 0, 0,
8391 0, 0, 0, 0, 0, 0, 0, 0,
8392 0, 0, 0, 0, 0, 0, 0, 0,
8393 0, 0, 0, 0, 0, 0, 0, 0,
8394 0, 0, 0, 0, 0, 0, 1207, 0,
8395 0, 0, 0, 0, 0, 0, 1209, 0,
8396};
8397
8398static const Q_UINT16 li_21[] = {
8399 0, 0, 0, 0, 0, 0, 0, 0,
8400 0, 0, 0, 0, 0, 0, 0, 0,
8401 0, 0, 0, 0, 0, 0, 0, 0,
8402 0, 0, 0, 0, 0, 0, 0, 0,
8403 0, 0, 0, 0, 0, 0, 0, 0,
8404 0, 0, 0, 0, 0, 0, 0, 0,
8405 0, 0, 0, 0, 0, 0, 0, 0,
8406 0, 0, 0, 0, 0, 0, 0, 0,
8407 0, 0, 0, 0, 0, 0, 0, 0,
8408 0, 0, 0, 0, 0, 0, 0, 0,
8409 0, 0, 0, 0, 0, 0, 0, 0,
8410 0, 0, 0, 0, 0, 0, 0, 0,
8411 0, 0, 0, 0, 0, 0, 0, 0,
8412 0, 0, 0, 0, 0, 0, 0, 0,
8413 0, 0, 0, 0, 0, 0, 0, 0,
8414 0, 0, 0, 0, 0, 0, 0, 0,
8415 0, 0, 0, 0, 0, 0, 0, 0,
8416 0, 0, 0, 0, 0, 0, 0, 0,
8417 1213, 0, 1215, 0, 1217, 0, 0, 0,
8418 0, 0, 0, 0, 0, 0, 0, 0,
8419 0, 0, 0, 0, 0, 0, 0, 0,
8420 0, 0, 0, 0, 0, 0, 0, 0,
8421 0, 0, 0, 0, 0, 0, 0, 0,
8422 0, 0, 0, 0, 0, 0, 0, 0,
8423 0, 0, 0, 0, 0, 0, 0, 0,
8424 0, 0, 0, 0, 0, 0, 0, 0,
8425 1219, 0, 1221, 0, 1223, 0, 0, 0,
8426 0, 0, 0, 0, 0, 0, 0, 0,
8427 0, 0, 0, 0, 0, 0, 0, 0,
8428 0, 0, 0, 0, 0, 0, 0, 0,
8429 0, 0, 0, 0, 0, 0, 0, 0,
8430 0, 0, 0, 0, 0, 0, 0, 0,
8431};
8432
8433static const Q_UINT16 li_22[] = {
8434 0, 0, 0, 1225, 0, 0, 0, 0,
8435 1227, 0, 0, 1229, 0, 0, 0, 0,
8436 0, 0, 0, 0, 0, 0, 0, 0,
8437 0, 0, 0, 0, 0, 0, 0, 0,
8438 0, 0, 0, 1231, 0, 1233, 0, 0,
8439 0, 0, 0, 0, 0, 0, 0, 0,
8440 0, 0, 0, 0, 0, 0, 0, 0,
8441 0, 0, 0, 0, 1235, 0, 0, 0,
8442 0, 0, 0, 1237, 0, 1239, 0, 0,
8443 1241, 0, 0, 0, 0, 1243, 0, 0,
8444 0, 0, 0, 0, 0, 0, 0, 0,
8445 0, 0, 0, 0, 0, 0, 0, 0,
8446 0, 1245, 0, 0, 1247, 1249, 0, 0,
8447 0, 0, 0, 0, 0, 0, 0, 0,
8448 0, 0, 1251, 1253, 0, 0, 1255, 1257,
8449 0, 0, 1259, 1261, 1263, 1265, 0, 0,
8450 0, 0, 1267, 1269, 0, 0, 1271, 1273,
8451 0, 0, 0, 0, 0, 0, 0, 0,
8452 0, 1275, 1277, 0, 0, 0, 0, 0,
8453 0, 0, 0, 0, 0, 0, 0, 0,
8454 0, 0, 1279, 0, 0, 0, 0, 0,
8455 1281, 1283, 0, 1285, 0, 0, 0, 0,
8456 0, 0, 1287, 1289, 1291, 1293, 0, 0,
8457 0, 0, 0, 0, 0, 0, 0, 0,
8458 0, 0, 0, 0, 0, 0, 0, 0,
8459 0, 0, 0, 0, 0, 0, 0, 0,
8460 0, 0, 0, 0, 0, 0, 0, 0,
8461 0, 0, 0, 0, 0, 0, 0, 0,
8462 0, 0, 0, 0, 0, 0, 0, 0,
8463 0, 0, 0, 0, 0, 0, 0, 0,
8464 0, 0, 0, 0, 0, 0, 0, 0,
8465 0, 0, 0, 0, 0, 0, 0, 0,
8466};
8467
8468static const Q_UINT16 li_2A[] = {
8469 0, 0, 0, 0, 0, 0, 0, 0,
8470 0, 0, 0, 0, 0, 0, 0, 0,
8471 0, 0, 0, 0, 0, 0, 0, 0,
8472 0, 0, 0, 0, 0, 0, 0, 0,
8473 0, 0, 0, 0, 0, 0, 0, 0,
8474 0, 0, 0, 0, 0, 0, 0, 0,
8475 0, 0, 0, 0, 0, 0, 0, 0,
8476 0, 0, 0, 0, 0, 0, 0, 0,
8477 0, 0, 0, 0, 0, 0, 0, 0,
8478 0, 0, 0, 0, 0, 0, 0, 0,
8479 0, 0, 0, 0, 0, 0, 0, 0,
8480 0, 0, 0, 0, 0, 0, 0, 0,
8481 0, 0, 0, 0, 0, 0, 0, 0,
8482 0, 0, 0, 0, 0, 0, 0, 0,
8483 0, 0, 0, 0, 0, 0, 0, 0,
8484 0, 0, 0, 0, 0, 0, 0, 0,
8485 0, 0, 0, 0, 0, 0, 0, 0,
8486 0, 0, 0, 0, 0, 0, 0, 0,
8487 0, 0, 0, 0, 0, 0, 0, 0,
8488 0, 0, 0, 0, 0, 0, 0, 0,
8489 0, 0, 0, 0, 0, 0, 0, 0,
8490 0, 0, 0, 0, 0, 0, 0, 0,
8491 0, 0, 0, 0, 0, 0, 0, 0,
8492 0, 0, 0, 0, 0, 0, 0, 0,
8493 0, 0, 0, 0, 0, 0, 0, 0,
8494 0, 0, 0, 0, 0, 0, 0, 0,
8495 0, 0, 0, 0, 0, 0, 0, 0,
8496 0, 0, 0, 0, 0, 1295, 0, 0,
8497 0, 0, 0, 0, 0, 0, 0, 0,
8498 0, 0, 0, 0, 0, 0, 0, 0,
8499 0, 0, 0, 0, 0, 0, 0, 0,
8500 0, 0, 0, 0, 0, 0, 0, 0,
8501};
8502
8503static const Q_UINT16 li_30[] = {
8504 0, 0, 0, 0, 0, 0, 0, 0,
8505 0, 0, 0, 0, 0, 0, 0, 0,
8506 0, 0, 0, 0, 0, 0, 0, 0,
8507 0, 0, 0, 0, 0, 0, 0, 0,
8508 0, 0, 0, 0, 0, 0, 0, 0,
8509 0, 0, 0, 0, 0, 0, 0, 0,
8510 0, 0, 0, 0, 0, 0, 0, 0,
8511 0, 0, 0, 0, 0, 0, 0, 0,
8512 0, 0, 0, 0, 0, 0, 1297, 0,
8513 0, 0, 0, 1299, 0, 1301, 0, 1303,
8514 0, 1305, 0, 1307, 0, 1309, 0, 1311,
8515 0, 1313, 0, 1315, 0, 1317, 0, 1319,
8516 0, 1321, 0, 0, 1323, 0, 1325, 0,
8517 1327, 0, 0, 0, 0, 0, 0, 1329,
8518 0, 0, 1332, 0, 0, 1335, 0, 0,
8519 1338, 0, 0, 1341, 0, 0, 0, 0,
8520 0, 0, 0, 0, 0, 0, 0, 0,
8521 0, 0, 0, 0, 0, 0, 0, 0,
8522 0, 0, 0, 0, 0, 0, 0, 0,
8523 0, 0, 0, 0, 0, 1344, 0, 0,
8524 0, 0, 0, 0, 0, 0, 1346, 0,
8525 0, 0, 0, 1348, 0, 1350, 0, 1352,
8526 0, 1354, 0, 1356, 0, 1358, 0, 1360,
8527 0, 1362, 0, 1364, 0, 1366, 0, 1368,
8528 0, 1370, 0, 0, 1372, 0, 1374, 0,
8529 1376, 0, 0, 0, 0, 0, 0, 1378,
8530 0, 0, 1381, 0, 0, 1384, 0, 0,
8531 1387, 0, 0, 1390, 0, 0, 0, 0,
8532 0, 0, 0, 0, 0, 0, 0, 0,
8533 0, 0, 0, 0, 0, 0, 0, 1393,
8534 1395, 1397, 1399, 0, 0, 0, 0, 0,
8535 0, 0, 0, 0, 0, 1401, 0, 0,
8536};
8537
8538static const Q_UINT16 li_FB[] = {
8539 0, 0, 0, 0, 0, 0, 0, 0,
8540 0, 0, 0, 0, 0, 0, 0, 0,
8541 0, 0, 0, 0, 0, 0, 0, 0,
8542 0, 0, 0, 0, 0, 0, 0, 0,
8543 0, 0, 0, 0, 0, 0, 0, 0,
8544 0, 0, 0, 0, 0, 0, 0, 0,
8545 0, 0, 0, 0, 0, 0, 0, 0,
8546 0, 0, 0, 0, 0, 0, 0, 0,
8547 0, 0, 0, 0, 0, 0, 0, 0,
8548 0, 1403, 0, 0, 0, 0, 0, 0,
8549 0, 0, 0, 0, 0, 0, 0, 0,
8550 0, 0, 0, 0, 0, 0, 0, 0,
8551 0, 0, 0, 0, 0, 0, 0, 0,
8552 0, 0, 0, 0, 0, 0, 0, 0,
8553 0, 0, 0, 0, 0, 0, 0, 0,
8554 0, 0, 0, 0, 0, 0, 0, 0,
8555 0, 0, 0, 0, 0, 0, 0, 0,
8556 0, 0, 0, 0, 0, 0, 0, 0,
8557 0, 0, 0, 0, 0, 0, 0, 0,
8558 0, 0, 0, 0, 0, 0, 0, 0,
8559 0, 0, 0, 0, 0, 0, 0, 0,
8560 0, 0, 0, 0, 0, 0, 0, 0,
8561 0, 0, 0, 0, 0, 0, 0, 0,
8562 0, 0, 0, 0, 0, 0, 0, 0,
8563 0, 0, 0, 0, 0, 0, 0, 0,
8564 0, 0, 0, 0, 0, 0, 0, 0,
8565 0, 0, 0, 0, 0, 0, 0, 0,
8566 0, 0, 0, 0, 0, 0, 0, 0,
8567 0, 0, 0, 0, 0, 0, 0, 0,
8568 0, 0, 0, 0, 0, 0, 0, 0,
8569 0, 0, 0, 0, 0, 0, 0, 0,
8570 0, 0, 0, 0, 0, 0, 0, 0,
8571};
8572
8573static const Q_UINT16 * const ligature_info[256] = {
8574 li_00, li_01, li_02, li_03, li_04, li_05, li_06, li_07,
8575 li_07, li_09, li_0A, li_0B, li_0C, li_0D, li_07, li_0F,
8576 li_10, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8577 li_07, li_07, li_07, li_07, li_07, li_07, li_1E, li_1F,
8578 li_07, li_21, li_22, li_07, li_07, li_07, li_07, li_07,
8579 li_07, li_07, li_2A, li_07, li_07, li_07, li_07, li_07,
8580 li_30, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8581 li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8582 li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8583 li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8584 li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8585 li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8586 li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8587 li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8588 li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8589 li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8590 li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8591 li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8592 li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8593 li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8594 li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8595 li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8596 li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8597 li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8598 li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8599 li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8600 li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8601 li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8602 li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8603 li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8604 li_07, li_07, li_07, li_07, li_07, li_07, li_07, li_07,
8605 li_07, li_07, li_07, li_FB, li_07, li_07, li_07, li_07,
8606};
8607// 15098 bytes
8608
8609static const Q_UINT8 dir_00[] = {
8610 18, 18, 18, 18, 18, 18, 18, 18,
8611 18, 8, 7, 8, 9, 7, 18, 18,
8612 18, 18, 18, 18, 18, 18, 18, 18,
8613 18, 18, 18, 18, 7, 7, 7, 8,
8614 9, 10, 10, 4, 4, 4, 10, 10,
8615 138, 138, 10, 4, 6, 4, 6, 3,
8616 2, 2, 2, 2, 2, 2, 2, 2,
8617 2, 2, 6, 10, 138, 10, 138, 10,
8618 10, 0, 0, 0, 0, 0, 0, 0,
8619 0, 0, 0, 0, 0, 0, 0, 0,
8620 0, 0, 0, 0, 0, 0, 0, 0,
8621 0, 0, 0, 138, 10, 138, 10, 10,
8622 10, 0, 0, 0, 0, 0, 0, 0,
8623 0, 0, 0, 0, 0, 0, 0, 0,
8624 0, 0, 0, 0, 0, 0, 0, 0,
8625 0, 0, 0, 138, 10, 138, 10, 18,
8626 18, 18, 18, 18, 18, 7, 18, 18,
8627 18, 18, 18, 18, 18, 18, 18, 18,
8628 18, 18, 18, 18, 18, 18, 18, 18,
8629 18, 18, 18, 18, 18, 18, 18, 18,
8630 6, 10, 4, 4, 4, 4, 10, 10,
8631 10, 10, 0, 138, 10, 10, 10, 10,
8632 4, 4, 2, 2, 10, 0, 10, 10,
8633 10, 2, 0, 138, 10, 10, 10, 10,
8634 0, 0, 0, 0, 0, 0, 0, 0,
8635 0, 0, 0, 0, 0, 0, 0, 0,
8636 0, 0, 0, 0, 0, 0, 0, 10,
8637 0, 0, 0, 0, 0, 0, 0, 0,
8638 0, 0, 0, 0, 0, 0, 0, 0,
8639 0, 0, 0, 0, 0, 0, 0, 0,
8640 0, 0, 0, 0, 0, 0, 0, 10,
8641 0, 0, 0, 0, 0, 0, 0, 0,
8642};
8643
8644static const Q_UINT8 dir_01[] = {
8645 0, 0, 0, 0, 0, 0, 0, 0,
8646 0, 0, 0, 0, 0, 0, 0, 0,
8647 0, 0, 0, 0, 0, 0, 0, 0,
8648 0, 0, 0, 0, 0, 0, 0, 0,
8649 0, 0, 0, 0, 0, 0, 0, 0,
8650 0, 0, 0, 0, 0, 0, 0, 0,
8651 0, 0, 0, 0, 0, 0, 0, 0,
8652 0, 0, 0, 0, 0, 0, 0, 0,
8653 0, 0, 0, 0, 0, 0, 0, 0,
8654 0, 0, 0, 0, 0, 0, 0, 0,
8655 0, 0, 0, 0, 0, 0, 0, 0,
8656 0, 0, 0, 0, 0, 0, 0, 0,
8657 0, 0, 0, 0, 0, 0, 0, 0,
8658 0, 0, 0, 0, 0, 0, 0, 0,
8659 0, 0, 0, 0, 0, 0, 0, 0,
8660 0, 0, 0, 0, 0, 0, 0, 0,
8661 0, 0, 0, 0, 0, 0, 0, 0,
8662 0, 0, 0, 0, 0, 0, 0, 0,
8663 0, 0, 0, 0, 0, 0, 0, 0,
8664 0, 0, 0, 0, 0, 0, 0, 0,
8665 0, 0, 0, 0, 0, 0, 0, 0,
8666 0, 0, 0, 0, 0, 0, 0, 0,
8667 0, 0, 0, 0, 0, 0, 0, 0,
8668 0, 0, 0, 0, 0, 0, 0, 0,
8669 0, 0, 0, 0, 0, 0, 0, 0,
8670 0, 0, 0, 0, 0, 0, 0, 0,
8671 0, 0, 0, 0, 0, 0, 0, 0,
8672 0, 0, 0, 0, 0, 0, 0, 0,
8673 0, 0, 0, 0, 0, 0, 0, 0,
8674 0, 0, 0, 0, 0, 0, 0, 0,
8675 0, 0, 0, 0, 0, 0, 0, 0,
8676 0, 0, 0, 0, 0, 0, 0, 0,
8677};
8678
8679static const Q_UINT8 dir_02[] = {
8680 0, 0, 0, 0, 0, 0, 0, 0,
8681 0, 0, 0, 0, 0, 0, 0, 0,
8682 0, 0, 0, 0, 0, 0, 0, 0,
8683 0, 0, 0, 0, 0, 0, 0, 0,
8684 0, 0, 0, 0, 0, 0, 0, 0,
8685 0, 0, 0, 0, 0, 0, 0, 0,
8686 0, 0, 0, 0, 0, 0, 0, 0,
8687 0, 0, 0, 0, 0, 0, 0, 0,
8688 0, 0, 0, 0, 0, 0, 0, 0,
8689 0, 0, 0, 0, 0, 0, 0, 0,
8690 0, 0, 0, 0, 0, 0, 0, 0,
8691 0, 0, 0, 0, 0, 0, 0, 0,
8692 0, 0, 0, 0, 0, 0, 0, 0,
8693 0, 0, 0, 0, 0, 0, 0, 0,
8694 0, 0, 0, 0, 0, 0, 0, 0,
8695 0, 0, 0, 0, 0, 0, 0, 0,
8696 0, 0, 0, 0, 0, 0, 0, 0,
8697 0, 0, 0, 0, 0, 0, 0, 0,
8698 0, 0, 0, 0, 0, 0, 0, 0,
8699 0, 0, 0, 0, 0, 0, 0, 0,
8700 0, 0, 0, 0, 0, 0, 0, 0,
8701 0, 0, 0, 0, 0, 0, 0, 0,
8702 0, 0, 0, 0, 0, 0, 0, 0,
8703 0, 10, 10, 0, 0, 0, 0, 0,
8704 0, 0, 10, 10, 10, 10, 10, 10,
8705 10, 10, 10, 10, 10, 10, 10, 10,
8706 0, 0, 10, 10, 10, 10, 10, 10,
8707 10, 10, 10, 10, 10, 10, 10, 10,
8708 0, 0, 0, 0, 0, 10, 10, 10,
8709 10, 10, 10, 10, 10, 10, 0, 0,
8710 0, 0, 0, 0, 0, 0, 0, 0,
8711 0, 0, 0, 0, 0, 0, 0, 0,
8712};
8713
8714static const Q_UINT8 dir_03[] = {
8715 17, 17, 17, 17, 17, 17, 17, 17,
8716 17, 17, 17, 17, 17, 17, 17, 17,
8717 17, 17, 17, 17, 17, 17, 17, 17,
8718 17, 17, 17, 17, 17, 17, 17, 17,
8719 17, 17, 17, 17, 17, 17, 17, 17,
8720 17, 17, 17, 17, 17, 17, 17, 17,
8721 17, 17, 17, 17, 17, 17, 17, 17,
8722 17, 17, 17, 17, 17, 17, 17, 17,
8723 17, 17, 17, 17, 17, 17, 17, 17,
8724 17, 17, 17, 17, 17, 17, 17, 17,
8725 0, 0, 0, 0, 0, 0, 0, 0,
8726 0, 0, 0, 0, 0, 0, 0, 0,
8727 17, 17, 17, 17, 17, 17, 17, 17,
8728 17, 17, 17, 17, 17, 17, 17, 17,
8729 0, 0, 0, 0, 10, 10, 0, 0,
8730 0, 0, 0, 0, 0, 0, 10, 0,
8731 0, 0, 0, 0, 10, 10, 0, 10,
8732 0, 0, 0, 0, 0, 0, 0, 0,
8733 0, 0, 0, 0, 0, 0, 0, 0,
8734 0, 0, 0, 0, 0, 0, 0, 0,
8735 0, 0, 0, 0, 0, 0, 0, 0,
8736 0, 0, 0, 0, 0, 0, 0, 0,
8737 0, 0, 0, 0, 0, 0, 0, 0,
8738 0, 0, 0, 0, 0, 0, 0, 0,
8739 0, 0, 0, 0, 0, 0, 0, 0,
8740 0, 0, 0, 0, 0, 0, 0, 0,
8741 0, 0, 0, 0, 0, 0, 0, 0,
8742 0, 0, 0, 0, 0, 0, 0, 0,
8743 0, 0, 0, 0, 0, 0, 0, 0,
8744 0, 0, 0, 0, 0, 0, 0, 0,
8745 0, 0, 0, 0, 0, 0, 10, 0,
8746 0, 0, 0, 0, 0, 0, 0, 0,
8747};
8748
8749static const Q_UINT8 dir_04[] = {
8750 0, 0, 0, 0, 0, 0, 0, 0,
8751 0, 0, 0, 0, 0, 0, 0, 0,
8752 0, 0, 0, 0, 0, 0, 0, 0,
8753 0, 0, 0, 0, 0, 0, 0, 0,
8754 0, 0, 0, 0, 0, 0, 0, 0,
8755 0, 0, 0, 0, 0, 0, 0, 0,
8756 0, 0, 0, 0, 0, 0, 0, 0,
8757 0, 0, 0, 0, 0, 0, 0, 0,
8758 0, 0, 0, 0, 0, 0, 0, 0,
8759 0, 0, 0, 0, 0, 0, 0, 0,
8760 0, 0, 0, 0, 0, 0, 0, 0,
8761 0, 0, 0, 0, 0, 0, 0, 0,
8762 0, 0, 0, 0, 0, 0, 0, 0,
8763 0, 0, 0, 0, 0, 0, 0, 0,
8764 0, 0, 0, 0, 0, 0, 0, 0,
8765 0, 0, 0, 0, 0, 0, 0, 0,
8766 0, 0, 0, 17, 17, 17, 17, 0,
8767 17, 17, 0, 0, 0, 0, 0, 0,
8768 0, 0, 0, 0, 0, 0, 0, 0,
8769 0, 0, 0, 0, 0, 0, 0, 0,
8770 0, 0, 0, 0, 0, 0, 0, 0,
8771 0, 0, 0, 0, 0, 0, 0, 0,
8772 0, 0, 0, 0, 0, 0, 0, 0,
8773 0, 0, 0, 0, 0, 0, 0, 0,
8774 0, 0, 0, 0, 0, 0, 0, 0,
8775 0, 0, 0, 0, 0, 0, 0, 0,
8776 0, 0, 0, 0, 0, 0, 0, 0,
8777 0, 0, 0, 0, 0, 0, 0, 0,
8778 0, 0, 0, 0, 0, 0, 0, 0,
8779 0, 0, 0, 0, 0, 0, 0, 0,
8780 0, 0, 0, 0, 0, 0, 0, 0,
8781 0, 0, 0, 0, 0, 0, 0, 0,
8782};
8783
8784static const Q_UINT8 dir_05[] = {
8785 0, 0, 0, 0, 0, 0, 0, 0,
8786 0, 0, 0, 0, 0, 0, 0, 0,
8787 0, 0, 0, 0, 0, 0, 0, 0,
8788 0, 0, 0, 0, 0, 0, 0, 0,
8789 0, 0, 0, 0, 0, 0, 0, 0,
8790 0, 0, 0, 0, 0, 0, 0, 0,
8791 0, 0, 0, 0, 0, 0, 0, 0,
8792 0, 0, 0, 0, 0, 0, 0, 0,
8793 0, 0, 0, 0, 0, 0, 0, 0,
8794 0, 0, 0, 0, 0, 0, 0, 0,
8795 0, 0, 0, 0, 0, 0, 0, 0,
8796 0, 0, 0, 0, 0, 0, 0, 0,
8797 0, 0, 0, 0, 0, 0, 0, 0,
8798 0, 0, 0, 0, 0, 0, 0, 0,
8799 0, 0, 0, 0, 0, 0, 0, 0,
8800 0, 0, 0, 0, 0, 0, 0, 0,
8801 0, 0, 0, 0, 0, 0, 0, 0,
8802 0, 0, 10, 0, 0, 0, 0, 0,
8803 0, 17, 17, 17, 17, 17, 17, 17,
8804 17, 17, 17, 17, 17, 17, 17, 17,
8805 17, 17, 0, 17, 17, 17, 17, 17,
8806 17, 17, 17, 17, 17, 17, 17, 17,
8807 17, 17, 17, 17, 17, 17, 17, 17,
8808 17, 17, 0, 17, 17, 17, 1, 17,
8809 1, 17, 17, 1, 17, 0, 0, 0,
8810 0, 0, 0, 0, 0, 0, 0, 0,
8811 1, 1, 1, 1, 1, 1, 1, 1,
8812 1, 1, 1, 1, 1, 1, 1, 1,
8813 1, 1, 1, 1, 1, 1, 1, 1,
8814 1, 1, 1, 0, 0, 0, 0, 0,
8815 1, 1, 1, 1, 1, 0, 0, 0,
8816 0, 0, 0, 0, 0, 0, 0, 0,
8817};
8818
8819static const Q_UINT8 dir_06[] = {
8820 0, 0, 0, 0, 0, 0, 0, 0,
8821 0, 0, 0, 0, 6, 0, 0, 0,
8822 0, 0, 0, 0, 0, 0, 0, 0,
8823 0, 0, 0, 13, 0, 0, 0, 13,
8824 0, 13, 77, 77, 77, 77, 45, 77,
8825 45, 77, 45, 45, 45, 45, 45, 77,
8826 77, 77, 77, 45, 45, 45, 45, 45,
8827 45, 45, 45, 0, 0, 0, 0, 0,
8828 109, 45, 45, 45, 45, 45, 45, 45,
8829 77, 45, 45, 17, 17, 17, 17, 17,
8830 17, 17, 17, 17, 17, 17, 0, 0,
8831 0, 0, 0, 0, 0, 0, 0, 0,
8832 5, 5, 5, 5, 5, 5, 5, 5,
8833 5, 5, 4, 5, 5, 13, 45, 45,
8834 17, 77, 77, 77, 13, 77, 77, 77,
8835 45, 45, 45, 45, 45, 45, 45, 45,
8836 45, 45, 45, 45, 45, 45, 45, 45,
8837 77, 77, 77, 77, 77, 77, 77, 77,
8838 77, 77, 77, 77, 77, 77, 77, 77,
8839 77, 77, 45, 45, 45, 45, 45, 45,
8840 45, 45, 45, 45, 45, 45, 45, 45,
8841 45, 45, 45, 45, 45, 45, 45, 45,
8842 45, 45, 45, 45, 45, 45, 45, 45,
8843 45, 45, 45, 45, 45, 45, 45, 45,
8844 77, 45, 77, 77, 77, 77, 77, 77,
8845 77, 77, 77, 77, 45, 77, 45, 77,
8846 45, 45, 77, 77, 13, 77, 17, 17,
8847 17, 17, 17, 17, 17, 13, 17, 17,
8848 17, 17, 17, 17, 17, 13, 13, 17,
8849 17, 10, 17, 17, 17, 17, 0, 0,
8850 2, 2, 2, 2, 2, 2, 2, 2,
8851 2, 2, 45, 45, 45, 13, 13, 0,
8852};
8853
8854static const Q_UINT8 dir_07[] = {
8855 13, 13, 13, 13, 13, 13, 13, 13,
8856 13, 13, 13, 13, 13, 13, 0, 18,
8857 77, 17, 45, 45, 45, 77, 77, 77,
8858 77, 77, 45, 45, 45, 45, 77, 45,
8859 45, 45, 45, 45, 45, 45, 45, 45,
8860 77, 45, 77, 45, 77, 0, 0, 0,
8861 17, 17, 17, 17, 17, 17, 17, 17,
8862 17, 17, 17, 17, 17, 17, 17, 17,
8863 17, 17, 17, 17, 17, 17, 17, 17,
8864 17, 17, 17, 0, 0, 0, 0, 0,
8865 0, 0, 0, 0, 0, 0, 0, 0,
8866 0, 0, 0, 0, 0, 0, 0, 0,
8867 0, 0, 0, 0, 0, 0, 0, 0,
8868 0, 0, 0, 0, 0, 0, 0, 0,
8869 0, 0, 0, 0, 0, 0, 0, 0,
8870 0, 0, 0, 0, 0, 0, 0, 0,
8871 13, 13, 13, 13, 13, 13, 13, 13,
8872 13, 13, 13, 13, 13, 13, 13, 13,
8873 13, 13, 13, 13, 13, 13, 13, 13,
8874 13, 13, 13, 13, 13, 13, 13, 13,
8875 13, 13, 13, 13, 13, 13, 17, 17,
8876 17, 17, 17, 17, 17, 17, 17, 17,
8877 17, 13, 0, 0, 0, 0, 0, 0,
8878 0, 0, 0, 0, 0, 0, 0, 0,
8879 0, 0, 0, 0, 0, 0, 0, 0,
8880 0, 0, 0, 0, 0, 0, 0, 0,
8881 0, 0, 0, 0, 0, 0, 0, 0,
8882 0, 0, 0, 0, 0, 0, 0, 0,
8883 0, 0, 0, 0, 0, 0, 0, 0,
8884 0, 0, 0, 0, 0, 0, 0, 0,
8885 0, 0, 0, 0, 0, 0, 0, 0,
8886 0, 0, 0, 0, 0, 0, 0, 0,
8887};
8888
8889static const Q_UINT8 dir_09[] = {
8890 0, 17, 17, 0, 0, 0, 0, 0,
8891 0, 0, 0, 0, 0, 0, 0, 0,
8892 0, 0, 0, 0, 0, 0, 0, 0,
8893 0, 0, 0, 0, 0, 0, 0, 0,
8894 0, 0, 0, 0, 0, 0, 0, 0,
8895 0, 0, 0, 0, 0, 0, 0, 0,
8896 0, 0, 0, 0, 0, 0, 0, 0,
8897 0, 0, 0, 0, 17, 0, 0, 0,
8898 0, 17, 17, 17, 17, 17, 17, 17,
8899 17, 0, 0, 0, 0, 17, 0, 0,
8900 0, 17, 17, 17, 17, 0, 0, 0,
8901 0, 0, 0, 0, 0, 0, 0, 0,
8902 0, 0, 17, 17, 0, 0, 0, 0,
8903 0, 0, 0, 0, 0, 0, 0, 0,
8904 0, 0, 0, 0, 0, 0, 0, 0,
8905 0, 0, 0, 0, 0, 0, 0, 0,
8906 0, 17, 0, 0, 0, 0, 0, 0,
8907 0, 0, 0, 0, 0, 0, 0, 0,
8908 0, 0, 0, 0, 0, 0, 0, 0,
8909 0, 0, 0, 0, 0, 0, 0, 0,
8910 0, 0, 0, 0, 0, 0, 0, 0,
8911 0, 0, 0, 0, 0, 0, 0, 0,
8912 0, 0, 0, 0, 0, 0, 0, 0,
8913 0, 0, 0, 0, 17, 0, 0, 0,
8914 0, 17, 17, 17, 17, 0, 0, 0,
8915 0, 0, 0, 0, 0, 17, 0, 0,
8916 0, 0, 0, 0, 0, 0, 0, 0,
8917 0, 0, 0, 0, 0, 0, 0, 0,
8918 0, 0, 17, 17, 0, 0, 0, 0,
8919 0, 0, 0, 0, 0, 0, 0, 0,
8920 0, 0, 4, 4, 0, 0, 0, 0,
8921 0, 0, 0, 0, 0, 0, 0, 0,
8922};
8923
8924static const Q_UINT8 dir_0A[] = {
8925 0, 0, 17, 0, 0, 0, 0, 0,
8926 0, 0, 0, 0, 0, 0, 0, 0,
8927 0, 0, 0, 0, 0, 0, 0, 0,
8928 0, 0, 0, 0, 0, 0, 0, 0,
8929 0, 0, 0, 0, 0, 0, 0, 0,
8930 0, 0, 0, 0, 0, 0, 0, 0,
8931 0, 0, 0, 0, 0, 0, 0, 0,
8932 0, 0, 0, 0, 17, 0, 0, 0,
8933 0, 17, 17, 0, 0, 0, 0, 17,
8934 17, 0, 0, 17, 17, 17, 0, 0,
8935 0, 0, 0, 0, 0, 0, 0, 0,
8936 0, 0, 0, 0, 0, 0, 0, 0,
8937 0, 0, 0, 0, 0, 0, 0, 0,
8938 0, 0, 0, 0, 0, 0, 0, 0,
8939 17, 17, 0, 0, 0, 0, 0, 0,
8940 0, 0, 0, 0, 0, 0, 0, 0,
8941 0, 17, 17, 0, 0, 0, 0, 0,
8942 0, 0, 0, 0, 0, 0, 0, 0,
8943 0, 0, 0, 0, 0, 0, 0, 0,
8944 0, 0, 0, 0, 0, 0, 0, 0,
8945 0, 0, 0, 0, 0, 0, 0, 0,
8946 0, 0, 0, 0, 0, 0, 0, 0,
8947 0, 0, 0, 0, 0, 0, 0, 0,
8948 0, 0, 0, 0, 17, 0, 0, 0,
8949 0, 17, 17, 17, 17, 17, 0, 17,
8950 17, 0, 0, 0, 0, 17, 0, 0,
8951 0, 0, 0, 0, 0, 0, 0, 0,
8952 0, 0, 0, 0, 0, 0, 0, 0,
8953 0, 0, 0, 0, 0, 0, 0, 0,
8954 0, 0, 0, 0, 0, 0, 0, 0,
8955 0, 0, 0, 0, 0, 0, 0, 0,
8956 0, 0, 0, 0, 0, 0, 0, 0,
8957};
8958
8959static const Q_UINT8 dir_0B[] = {
8960 0, 17, 0, 0, 0, 0, 0, 0,
8961 0, 0, 0, 0, 0, 0, 0, 0,
8962 0, 0, 0, 0, 0, 0, 0, 0,
8963 0, 0, 0, 0, 0, 0, 0, 0,
8964 0, 0, 0, 0, 0, 0, 0, 0,
8965 0, 0, 0, 0, 0, 0, 0, 0,
8966 0, 0, 0, 0, 0, 0, 0, 0,
8967 0, 0, 0, 0, 17, 0, 0, 17,
8968 0, 17, 17, 17, 0, 0, 0, 0,
8969 0, 0, 0, 0, 0, 17, 0, 0,
8970 0, 0, 0, 0, 0, 0, 17, 0,
8971 0, 0, 0, 0, 0, 0, 0, 0,
8972 0, 0, 0, 0, 0, 0, 0, 0,
8973 0, 0, 0, 0, 0, 0, 0, 0,
8974 0, 0, 0, 0, 0, 0, 0, 0,
8975 0, 0, 0, 0, 0, 0, 0, 0,
8976 0, 0, 17, 0, 0, 0, 0, 0,
8977 0, 0, 0, 0, 0, 0, 0, 0,
8978 0, 0, 0, 0, 0, 0, 0, 0,
8979 0, 0, 0, 0, 0, 0, 0, 0,
8980 0, 0, 0, 0, 0, 0, 0, 0,
8981 0, 0, 0, 0, 0, 0, 0, 0,
8982 0, 0, 0, 0, 0, 0, 0, 0,
8983 0, 0, 0, 0, 0, 0, 0, 0,
8984 17, 0, 0, 0, 0, 0, 0, 0,
8985 0, 0, 0, 0, 0, 17, 0, 0,
8986 0, 0, 0, 0, 0, 0, 0, 0,
8987 0, 0, 0, 0, 0, 0, 0, 0,
8988 0, 0, 0, 0, 0, 0, 0, 0,
8989 0, 0, 0, 0, 0, 0, 0, 0,
8990 0, 0, 0, 0, 0, 0, 0, 0,
8991 0, 0, 0, 0, 0, 0, 0, 0,
8992};
8993
8994static const Q_UINT8 dir_0C[] = {
8995 0, 0, 0, 0, 0, 0, 0, 0,
8996 0, 0, 0, 0, 0, 0, 0, 0,
8997 0, 0, 0, 0, 0, 0, 0, 0,
8998 0, 0, 0, 0, 0, 0, 0, 0,
8999 0, 0, 0, 0, 0, 0, 0, 0,
9000 0, 0, 0, 0, 0, 0, 0, 0,
9001 0, 0, 0, 0, 0, 0, 0, 0,
9002 0, 0, 0, 0, 0, 0, 17, 17,
9003 17, 0, 0, 0, 0, 0, 17, 17,
9004 17, 0, 17, 17, 17, 17, 0, 0,
9005 0, 0, 0, 0, 0, 17, 17, 0,
9006 0, 0, 0, 0, 0, 0, 0, 0,
9007 0, 0, 0, 0, 0, 0, 0, 0,
9008 0, 0, 0, 0, 0, 0, 0, 0,
9009 0, 0, 0, 0, 0, 0, 0, 0,
9010 0, 0, 0, 0, 0, 0, 0, 0,
9011 0, 0, 0, 0, 0, 0, 0, 0,
9012 0, 0, 0, 0, 0, 0, 0, 0,
9013 0, 0, 0, 0, 0, 0, 0, 0,
9014 0, 0, 0, 0, 0, 0, 0, 0,
9015 0, 0, 0, 0, 0, 0, 0, 0,
9016 0, 0, 0, 0, 0, 0, 0, 0,
9017 0, 0, 0, 0, 0, 0, 0, 0,
9018 0, 0, 0, 0, 0, 0, 0, 17,
9019 0, 0, 0, 0, 0, 0, 17, 0,
9020 0, 0, 0, 0, 17, 17, 0, 0,
9021 0, 0, 0, 0, 0, 0, 0, 0,
9022 0, 0, 0, 0, 0, 0, 0, 0,
9023 0, 0, 0, 0, 0, 0, 0, 0,
9024 0, 0, 0, 0, 0, 0, 0, 0,
9025 0, 0, 0, 0, 0, 0, 0, 0,
9026 0, 0, 0, 0, 0, 0, 0, 0,
9027};
9028
9029static const Q_UINT8 dir_0D[] = {
9030 0, 0, 0, 0, 0, 0, 0, 0,
9031 0, 0, 0, 0, 0, 0, 0, 0,
9032 0, 0, 0, 0, 0, 0, 0, 0,
9033 0, 0, 0, 0, 0, 0, 0, 0,
9034 0, 0, 0, 0, 0, 0, 0, 0,
9035 0, 0, 0, 0, 0, 0, 0, 0,
9036 0, 0, 0, 0, 0, 0, 0, 0,
9037 0, 0, 0, 0, 0, 0, 0, 0,
9038 0, 17, 17, 17, 0, 0, 0, 0,
9039 0, 0, 0, 0, 0, 17, 0, 0,
9040 0, 0, 0, 0, 0, 0, 0, 0,
9041 0, 0, 0, 0, 0, 0, 0, 0,
9042 0, 0, 0, 0, 0, 0, 0, 0,
9043 0, 0, 0, 0, 0, 0, 0, 0,
9044 0, 0, 0, 0, 0, 0, 0, 0,
9045 0, 0, 0, 0, 0, 0, 0, 0,
9046 0, 0, 0, 0, 0, 0, 0, 0,
9047 0, 0, 0, 0, 0, 0, 0, 0,
9048 0, 0, 0, 0, 0, 0, 0, 0,
9049 0, 0, 0, 0, 0, 0, 0, 0,
9050 0, 0, 0, 0, 0, 0, 0, 0,
9051 0, 0, 0, 0, 0, 0, 0, 0,
9052 0, 0, 0, 0, 0, 0, 0, 0,
9053 0, 0, 0, 0, 0, 0, 0, 0,
9054 0, 0, 0, 0, 0, 0, 0, 0,
9055 0, 0, 17, 0, 0, 0, 0, 0,
9056 0, 0, 17, 17, 17, 0, 17, 0,
9057 0, 0, 0, 0, 0, 0, 0, 0,
9058 0, 0, 0, 0, 0, 0, 0, 0,
9059 0, 0, 0, 0, 0, 0, 0, 0,
9060 0, 0, 0, 0, 0, 0, 0, 0,
9061 0, 0, 0, 0, 0, 0, 0, 0,
9062};
9063
9064static const Q_UINT8 dir_0E[] = {
9065 0, 0, 0, 0, 0, 0, 0, 0,
9066 0, 0, 0, 0, 0, 0, 0, 0,
9067 0, 0, 0, 0, 0, 0, 0, 0,
9068 0, 0, 0, 0, 0, 0, 0, 0,
9069 0, 0, 0, 0, 0, 0, 0, 0,
9070 0, 0, 0, 0, 0, 0, 0, 0,
9071 0, 17, 0, 0, 17, 17, 17, 17,
9072 17, 17, 17, 0, 0, 0, 0, 4,
9073 0, 0, 0, 0, 0, 0, 0, 17,
9074 17, 17, 17, 17, 17, 17, 17, 0,
9075 0, 0, 0, 0, 0, 0, 0, 0,
9076 0, 0, 0, 0, 0, 0, 0, 0,
9077 0, 0, 0, 0, 0, 0, 0, 0,
9078 0, 0, 0, 0, 0, 0, 0, 0,
9079 0, 0, 0, 0, 0, 0, 0, 0,
9080 0, 0, 0, 0, 0, 0, 0, 0,
9081 0, 0, 0, 0, 0, 0, 0, 0,
9082 0, 0, 0, 0, 0, 0, 0, 0,
9083 0, 0, 0, 0, 0, 0, 0, 0,
9084 0, 0, 0, 0, 0, 0, 0, 0,
9085 0, 0, 0, 0, 0, 0, 0, 0,
9086 0, 0, 0, 0, 0, 0, 0, 0,
9087 0, 17, 0, 0, 17, 17, 17, 17,
9088 17, 17, 0, 17, 17, 0, 0, 0,
9089 0, 0, 0, 0, 0, 0, 0, 0,
9090 17, 17, 17, 17, 17, 17, 0, 0,
9091 0, 0, 0, 0, 0, 0, 0, 0,
9092 0, 0, 0, 0, 0, 0, 0, 0,
9093 0, 0, 0, 0, 0, 0, 0, 0,
9094 0, 0, 0, 0, 0, 0, 0, 0,
9095 0, 0, 0, 0, 0, 0, 0, 0,
9096 0, 0, 0, 0, 0, 0, 0, 0,
9097};
9098
9099static const Q_UINT8 dir_0F[] = {
9100 0, 0, 0, 0, 0, 0, 0, 0,
9101 0, 0, 0, 0, 0, 0, 0, 0,
9102 0, 0, 0, 0, 0, 0, 0, 0,
9103 17, 17, 0, 0, 0, 0, 0, 0,
9104 0, 0, 0, 0, 0, 0, 0, 0,
9105 0, 0, 0, 0, 0, 0, 0, 0,
9106 0, 0, 0, 0, 0, 17, 0, 17,
9107 0, 17, 10, 10, 10, 10, 0, 0,
9108 0, 0, 0, 0, 0, 0, 0, 0,
9109 0, 0, 0, 0, 0, 0, 0, 0,
9110 0, 0, 0, 0, 0, 0, 0, 0,
9111 0, 0, 0, 0, 0, 0, 0, 0,
9112 0, 0, 0, 0, 0, 0, 0, 0,
9113 0, 0, 0, 0, 0, 0, 0, 0,
9114 0, 17, 17, 17, 17, 17, 17, 17,
9115 17, 17, 17, 17, 17, 17, 17, 0,
9116 17, 17, 17, 17, 17, 0, 17, 17,
9117 0, 0, 0, 0, 0, 0, 0, 0,
9118 17, 17, 17, 17, 17, 17, 17, 17,
9119 0, 17, 17, 17, 17, 17, 17, 17,
9120 17, 17, 17, 17, 17, 17, 17, 17,
9121 17, 17, 17, 17, 17, 17, 17, 17,
9122 17, 17, 17, 17, 17, 17, 17, 17,
9123 17, 17, 17, 17, 17, 0, 0, 0,
9124 0, 0, 0, 0, 0, 0, 17, 0,
9125 0, 0, 0, 0, 0, 0, 0, 0,
9126 0, 0, 0, 0, 0, 0, 0, 0,
9127 0, 0, 0, 0, 0, 0, 0, 0,
9128 0, 0, 0, 0, 0, 0, 0, 0,
9129 0, 0, 0, 0, 0, 0, 0, 0,
9130 0, 0, 0, 0, 0, 0, 0, 0,
9131 0, 0, 0, 0, 0, 0, 0, 0,
9132};
9133
9134static const Q_UINT8 dir_10[] = {
9135 0, 0, 0, 0, 0, 0, 0, 0,
9136 0, 0, 0, 0, 0, 0, 0, 0,
9137 0, 0, 0, 0, 0, 0, 0, 0,
9138 0, 0, 0, 0, 0, 0, 0, 0,
9139 0, 0, 0, 0, 0, 0, 0, 0,
9140 0, 0, 0, 0, 0, 17, 17, 17,
9141 17, 0, 17, 0, 0, 0, 17, 17,
9142 0, 17, 0, 0, 0, 0, 0, 0,
9143 0, 0, 0, 0, 0, 0, 0, 0,
9144 0, 0, 0, 0, 0, 0, 0, 0,
9145 0, 0, 0, 0, 0, 0, 0, 0,
9146 17, 17, 0, 0, 0, 0, 0, 0,
9147 0, 0, 0, 0, 0, 0, 0, 0,
9148 0, 0, 0, 0, 0, 0, 0, 0,
9149 0, 0, 0, 0, 0, 0, 0, 0,
9150 0, 0, 0, 0, 0, 0, 0, 0,
9151 0, 0, 0, 0, 0, 0, 0, 0,
9152 0, 0, 0, 0, 0, 0, 0, 0,
9153 0, 0, 0, 0, 0, 0, 0, 0,
9154 0, 0, 0, 0, 0, 0, 0, 0,
9155 0, 0, 0, 0, 0, 0, 0, 0,
9156 0, 0, 0, 0, 0, 0, 0, 0,
9157 0, 0, 0, 0, 0, 0, 0, 0,
9158 0, 0, 0, 0, 0, 0, 0, 0,
9159 0, 0, 0, 0, 0, 0, 0, 0,
9160 0, 0, 0, 0, 0, 0, 0, 0,
9161 0, 0, 0, 0, 0, 0, 0, 0,
9162 0, 0, 0, 0, 0, 0, 0, 0,
9163 0, 0, 0, 0, 0, 0, 0, 0,
9164 0, 0, 0, 0, 0, 0, 0, 0,
9165 0, 0, 0, 0, 0, 0, 0, 0,
9166 0, 0, 0, 0, 0, 0, 0, 0,
9167};
9168
9169static const Q_UINT8 dir_16[] = {
9170 0, 0, 0, 0, 0, 0, 0, 0,
9171 0, 0, 0, 0, 0, 0, 0, 0,
9172 0, 0, 0, 0, 0, 0, 0, 0,
9173 0, 0, 0, 0, 0, 0, 0, 0,
9174 0, 0, 0, 0, 0, 0, 0, 0,
9175 0, 0, 0, 0, 0, 0, 0, 0,
9176 0, 0, 0, 0, 0, 0, 0, 0,
9177 0, 0, 0, 0, 0, 0, 0, 0,
9178 0, 0, 0, 0, 0, 0, 0, 0,
9179 0, 0, 0, 0, 0, 0, 0, 0,
9180 0, 0, 0, 0, 0, 0, 0, 0,
9181 0, 0, 0, 0, 0, 0, 0, 0,
9182 0, 0, 0, 0, 0, 0, 0, 0,
9183 0, 0, 0, 0, 0, 0, 0, 0,
9184 0, 0, 0, 0, 0, 0, 0, 0,
9185 0, 0, 0, 0, 0, 0, 0, 0,
9186 9, 0, 0, 0, 0, 0, 0, 0,
9187 0, 0, 0, 0, 0, 0, 0, 0,
9188 0, 0, 0, 0, 0, 0, 0, 0,
9189 0, 0, 0, 10, 10, 0, 0, 0,
9190 0, 0, 0, 0, 0, 0, 0, 0,
9191 0, 0, 0, 0, 0, 0, 0, 0,
9192 0, 0, 0, 0, 0, 0, 0, 0,
9193 0, 0, 0, 0, 0, 0, 0, 0,
9194 0, 0, 0, 0, 0, 0, 0, 0,
9195 0, 0, 0, 0, 0, 0, 0, 0,
9196 0, 0, 0, 0, 0, 0, 0, 0,
9197 0, 0, 0, 0, 0, 0, 0, 0,
9198 0, 0, 0, 0, 0, 0, 0, 0,
9199 0, 0, 0, 0, 0, 0, 0, 0,
9200 0, 0, 0, 0, 0, 0, 0, 0,
9201 0, 0, 0, 0, 0, 0, 0, 0,
9202};
9203
9204static const Q_UINT8 dir_17[] = {
9205 0, 0, 0, 0, 0, 0, 0, 0,
9206 0, 0, 0, 0, 0, 0, 0, 0,
9207 0, 0, 17, 17, 17, 0, 0, 0,
9208 0, 0, 0, 0, 0, 0, 0, 0,
9209 0, 0, 0, 0, 0, 0, 0, 0,
9210 0, 0, 0, 0, 0, 0, 0, 0,
9211 0, 0, 17, 17, 17, 0, 0, 0,
9212 0, 0, 0, 0, 0, 0, 0, 0,
9213 0, 0, 0, 0, 0, 0, 0, 0,
9214 0, 0, 0, 0, 0, 0, 0, 0,
9215 0, 0, 17, 17, 0, 0, 0, 0,
9216 0, 0, 0, 0, 0, 0, 0, 0,
9217 0, 0, 0, 0, 0, 0, 0, 0,
9218 0, 0, 0, 0, 0, 0, 0, 0,
9219 0, 0, 17, 17, 0, 0, 0, 0,
9220 0, 0, 0, 0, 0, 0, 0, 0,
9221 0, 0, 0, 0, 0, 0, 0, 0,
9222 0, 0, 0, 0, 0, 0, 0, 0,
9223 0, 0, 0, 0, 0, 0, 0, 0,
9224 0, 0, 0, 0, 0, 0, 0, 0,
9225 0, 0, 0, 0, 0, 0, 0, 0,
9226 0, 0, 0, 0, 0, 0, 0, 0,
9227 0, 0, 0, 0, 0, 0, 0, 17,
9228 17, 17, 17, 17, 17, 17, 0, 0,
9229 0, 0, 0, 0, 0, 0, 17, 0,
9230 0, 17, 17, 17, 17, 17, 17, 17,
9231 17, 17, 17, 17, 0, 0, 0, 0,
9232 0, 0, 0, 4, 0, 0, 0, 0,
9233 0, 0, 0, 0, 0, 0, 0, 0,
9234 0, 0, 0, 0, 0, 0, 0, 0,
9235 0, 0, 0, 0, 0, 0, 0, 0,
9236 0, 0, 0, 0, 0, 0, 0, 0,
9237};
9238
9239static const Q_UINT8 dir_18[] = {
9240 10, 10, 10, 10, 10, 10, 10, 10,
9241 10, 10, 10, 17, 17, 17, 18, 0,
9242 0, 0, 0, 0, 0, 0, 0, 0,
9243 0, 0, 0, 0, 0, 0, 0, 0,
9244 0, 0, 0, 0, 0, 0, 0, 0,
9245 0, 0, 0, 0, 0, 0, 0, 0,
9246 0, 0, 0, 0, 0, 0, 0, 0,
9247 0, 0, 0, 0, 0, 0, 0, 0,
9248 0, 0, 0, 0, 0, 0, 0, 0,
9249 0, 0, 0, 0, 0, 0, 0, 0,
9250 0, 0, 0, 0, 0, 0, 0, 0,
9251 0, 0, 0, 0, 0, 0, 0, 0,
9252 0, 0, 0, 0, 0, 0, 0, 0,
9253 0, 0, 0, 0, 0, 0, 0, 0,
9254 0, 0, 0, 0, 0, 0, 0, 0,
9255 0, 0, 0, 0, 0, 0, 0, 0,
9256 0, 0, 0, 0, 0, 0, 0, 0,
9257 0, 0, 0, 0, 0, 0, 0, 0,
9258 0, 0, 0, 0, 0, 0, 0, 0,
9259 0, 0, 0, 0, 0, 0, 0, 0,
9260 0, 0, 0, 0, 0, 0, 0, 0,
9261 0, 17, 0, 0, 0, 0, 0, 0,
9262 0, 0, 0, 0, 0, 0, 0, 0,
9263 0, 0, 0, 0, 0, 0, 0, 0,
9264 0, 0, 0, 0, 0, 0, 0, 0,
9265 0, 0, 0, 0, 0, 0, 0, 0,
9266 0, 0, 0, 0, 0, 0, 0, 0,
9267 0, 0, 0, 0, 0, 0, 0, 0,
9268 0, 0, 0, 0, 0, 0, 0, 0,
9269 0, 0, 0, 0, 0, 0, 0, 0,
9270 0, 0, 0, 0, 0, 0, 0, 0,
9271 0, 0, 0, 0, 0, 0, 0, 0,
9272};
9273
9274static const Q_UINT8 dir_1F[] = {
9275 0, 0, 0, 0, 0, 0, 0, 0,
9276 0, 0, 0, 0, 0, 0, 0, 0,
9277 0, 0, 0, 0, 0, 0, 0, 0,
9278 0, 0, 0, 0, 0, 0, 0, 0,
9279 0, 0, 0, 0, 0, 0, 0, 0,
9280 0, 0, 0, 0, 0, 0, 0, 0,
9281 0, 0, 0, 0, 0, 0, 0, 0,
9282 0, 0, 0, 0, 0, 0, 0, 0,
9283 0, 0, 0, 0, 0, 0, 0, 0,
9284 0, 0, 0, 0, 0, 0, 0, 0,
9285 0, 0, 0, 0, 0, 0, 0, 0,
9286 0, 0, 0, 0, 0, 0, 0, 0,
9287 0, 0, 0, 0, 0, 0, 0, 0,
9288 0, 0, 0, 0, 0, 0, 0, 0,
9289 0, 0, 0, 0, 0, 0, 0, 0,
9290 0, 0, 0, 0, 0, 0, 0, 0,
9291 0, 0, 0, 0, 0, 0, 0, 0,
9292 0, 0, 0, 0, 0, 0, 0, 0,
9293 0, 0, 0, 0, 0, 0, 0, 0,
9294 0, 0, 0, 0, 0, 0, 0, 0,
9295 0, 0, 0, 0, 0, 0, 0, 0,
9296 0, 0, 0, 0, 0, 0, 0, 0,
9297 0, 0, 0, 0, 0, 0, 0, 0,
9298 0, 0, 0, 0, 0, 10, 0, 10,
9299 10, 10, 0, 0, 0, 0, 0, 0,
9300 0, 0, 0, 0, 0, 10, 10, 10,
9301 0, 0, 0, 0, 0, 0, 0, 0,
9302 0, 0, 0, 0, 0, 10, 10, 10,
9303 0, 0, 0, 0, 0, 0, 0, 0,
9304 0, 0, 0, 0, 0, 10, 10, 10,
9305 0, 0, 0, 0, 0, 0, 0, 0,
9306 0, 0, 0, 0, 0, 10, 10, 0,
9307};
9308
9309static const Q_UINT8 dir_20[] = {
9310 9, 9, 9, 9, 9, 9, 9, 9,
9311 9, 9, 9, 18, 18, 114, 0, 1,
9312 10, 10, 10, 10, 10, 10, 10, 10,
9313 10, 10, 10, 10, 10, 10, 10, 10,
9314 10, 10, 10, 10, 10, 10, 10, 10,
9315 9, 7, 11, 14, 16, 12, 15, 9,
9316 4, 4, 4, 4, 4, 10, 10, 10,
9317 10, 138, 138, 10, 10, 10, 10, 10,
9318 10, 10, 10, 10, 10, 138, 138, 10,
9319 10, 10, 10, 10, 10, 10, 10, 10,
9320 10, 10, 10, 0, 0, 0, 0, 10,
9321 0, 0, 0, 0, 0, 0, 0, 9,
9322 18, 18, 18, 18, 0, 0, 0, 0,
9323 0, 0, 18, 18, 18, 18, 18, 18,
9324 2, 0, 0, 0, 2, 2, 2, 2,
9325 2, 2, 4, 4, 10, 138, 138, 0,
9326 2, 2, 2, 2, 2, 2, 2, 2,
9327 2, 2, 4, 4, 10, 138, 138, 0,
9328 0, 0, 0, 0, 0, 0, 0, 0,
9329 0, 0, 0, 0, 0, 0, 0, 0,
9330 4, 4, 4, 4, 4, 4, 4, 4,
9331 4, 4, 4, 4, 4, 4, 4, 4,
9332 4, 4, 0, 0, 0, 0, 0, 0,
9333 0, 0, 0, 0, 0, 0, 0, 0,
9334 0, 0, 0, 0, 0, 0, 0, 0,
9335 0, 0, 0, 0, 0, 0, 0, 0,
9336 17, 17, 17, 17, 17, 17, 17, 17,
9337 17, 17, 17, 17, 17, 17, 17, 17,
9338 17, 17, 17, 17, 17, 17, 17, 17,
9339 17, 17, 17, 0, 0, 0, 0, 0,
9340 0, 0, 0, 0, 0, 0, 0, 0,
9341 0, 0, 0, 0, 0, 0, 0, 0,
9342};
9343
9344static const Q_UINT8 dir_21[] = {
9345 10, 10, 0, 10, 10, 10, 10, 0,
9346 10, 10, 0, 0, 0, 0, 0, 0,
9347 0, 0, 0, 0, 10, 0, 10, 10,
9348 10, 0, 0, 0, 0, 0, 10, 10,
9349 10, 10, 10, 10, 0, 10, 0, 10,
9350 0, 10, 0, 0, 0, 0, 4, 0,
9351 0, 0, 10, 0, 0, 0, 0, 0,
9352 0, 0, 10, 0, 0, 0, 0, 0,
9353 138, 10, 10, 10, 10, 0, 0, 0,
9354 0, 0, 10, 10, 0, 0, 0, 0,
9355 0, 0, 0, 10, 10, 10, 10, 10,
9356 10, 10, 10, 10, 10, 10, 10, 10,
9357 0, 0, 0, 0, 0, 0, 0, 0,
9358 0, 0, 0, 0, 0, 0, 0, 0,
9359 0, 0, 0, 0, 0, 0, 0, 0,
9360 0, 0, 0, 0, 0, 0, 0, 0,
9361 0, 0, 0, 0, 0, 0, 0, 0,
9362 0, 0, 0, 0, 0, 0, 0, 0,
9363 10, 10, 10, 10, 10, 10, 10, 10,
9364 10, 10, 10, 10, 10, 10, 10, 10,
9365 10, 10, 10, 10, 10, 10, 10, 10,
9366 10, 10, 10, 10, 10, 10, 10, 10,
9367 10, 10, 10, 10, 10, 10, 10, 10,
9368 10, 10, 10, 10, 10, 10, 10, 10,
9369 10, 10, 10, 10, 10, 10, 10, 10,
9370 10, 10, 10, 10, 10, 10, 10, 10,
9371 10, 10, 10, 10, 10, 10, 10, 10,
9372 10, 10, 10, 10, 10, 10, 10, 10,
9373 10, 10, 10, 10, 10, 10, 10, 10,
9374 10, 10, 10, 10, 10, 10, 10, 10,
9375 10, 10, 10, 10, 10, 10, 10, 10,
9376 10, 10, 10, 10, 10, 10, 10, 10,
9377};
9378
9379static const Q_UINT8 dir_22[] = {
9380 10, 138, 138, 138, 138, 10, 10, 10,
9381 138, 138, 138, 138, 138, 138, 10, 10,
9382 10, 138, 4, 4, 10, 138, 138, 10,
9383 10, 10, 138, 138, 138, 138, 10, 138,
9384 138, 138, 138, 10, 138, 10, 138, 10,
9385 10, 10, 10, 138, 138, 138, 138, 138,
9386 138, 138, 138, 138, 10, 10, 10, 10,
9387 10, 138, 10, 138, 138, 138, 138, 138,
9388 138, 138, 138, 138, 138, 138, 138, 138,
9389 138, 138, 138, 138, 138, 10, 10, 10,
9390 10, 10, 138, 138, 138, 138, 10, 10,
9391 10, 10, 10, 10, 10, 10, 10, 138,
9392 138, 10, 138, 10, 138, 138, 138, 138,
9393 138, 138, 138, 138, 10, 10, 138, 138,
9394 138, 138, 138, 138, 138, 138, 138, 138,
9395 138, 138, 138, 138, 138, 138, 138, 138,
9396 138, 138, 138, 138, 138, 138, 138, 138,
9397 138, 138, 138, 138, 138, 10, 10, 138,
9398 138, 138, 138, 10, 10, 10, 10, 10,
9399 138, 10, 10, 10, 10, 10, 10, 10,
9400 10, 10, 138, 138, 10, 10, 138, 138,
9401 138, 138, 138, 138, 138, 138, 138, 138,
9402 138, 138, 138, 138, 138, 138, 138, 138,
9403 138, 10, 10, 10, 10, 10, 138, 138,
9404 10, 10, 10, 10, 10, 10, 10, 10,
9405 10, 138, 138, 138, 138, 138, 10, 10,
9406 138, 138, 10, 10, 10, 10, 138, 138,
9407 138, 138, 138, 138, 138, 138, 138, 138,
9408 138, 138, 138, 138, 138, 138, 138, 138,
9409 138, 138, 138, 138, 138, 138, 10, 10,
9410 138, 138, 138, 138, 138, 138, 138, 138,
9411 138, 138, 138, 138, 138, 138, 138, 138,
9412};
9413
9414static const Q_UINT8 dir_23[] = {
9415 10, 10, 10, 10, 10, 10, 10, 10,
9416 138, 138, 138, 138, 10, 10, 10, 10,
9417 10, 10, 10, 10, 10, 10, 10, 10,
9418 10, 10, 10, 10, 10, 10, 10, 10,
9419 138, 138, 10, 10, 10, 10, 10, 10,
9420 10, 138, 138, 10, 10, 10, 10, 10,
9421 10, 10, 10, 10, 10, 10, 0, 0,
9422 0, 0, 0, 0, 0, 0, 0, 0,
9423 0, 0, 0, 0, 0, 0, 0, 0,
9424 0, 0, 0, 0, 0, 0, 0, 0,
9425 0, 0, 0, 0, 0, 0, 0, 0,
9426 0, 0, 0, 0, 0, 0, 0, 0,
9427 0, 0, 0, 0, 0, 0, 0, 0,
9428 0, 0, 0, 0, 0, 0, 0, 0,
9429 0, 0, 0, 0, 0, 0, 0, 0,
9430 0, 0, 0, 10, 10, 10, 10, 10,
9431 10, 10, 10, 10, 10, 10, 10, 10,
9432 10, 10, 10, 10, 10, 10, 10, 10,
9433 10, 10, 10, 10, 10, 0, 10, 10,
9434 10, 10, 10, 10, 10, 10, 10, 10,
9435 10, 10, 10, 10, 10, 10, 10, 10,
9436 10, 10, 10, 10, 10, 10, 10, 10,
9437 10, 10, 10, 10, 10, 10, 10, 10,
9438 10, 10, 10, 10, 10, 10, 10, 10,
9439 10, 10, 10, 10, 10, 10, 10, 10,
9440 10, 10, 10, 10, 10, 10, 10, 0,
9441 0, 0, 0, 0, 0, 0, 0, 0,
9442 0, 0, 0, 0, 0, 0, 0, 0,
9443 0, 0, 0, 0, 0, 0, 0, 0,
9444 0, 0, 0, 0, 0, 0, 0, 0,
9445 0, 0, 0, 0, 0, 0, 0, 0,
9446 0, 0, 0, 0, 0, 0, 0, 0,
9447};
9448
9449static const Q_UINT8 dir_24[] = {
9450 10, 10, 10, 10, 10, 10, 10, 10,
9451 10, 10, 10, 10, 10, 10, 10, 10,
9452 10, 10, 10, 10, 10, 10, 10, 10,
9453 10, 10, 10, 10, 10, 10, 10, 10,
9454 10, 10, 10, 10, 10, 10, 10, 0,
9455 0, 0, 0, 0, 0, 0, 0, 0,
9456 0, 0, 0, 0, 0, 0, 0, 0,
9457 0, 0, 0, 0, 0, 0, 0, 0,
9458 10, 10, 10, 10, 10, 10, 10, 10,
9459 10, 10, 10, 0, 0, 0, 0, 0,
9460 0, 0, 0, 0, 0, 0, 0, 0,
9461 0, 0, 0, 0, 0, 0, 0, 0,
9462 2, 2, 2, 2, 2, 2, 2, 2,
9463 2, 2, 2, 2, 2, 2, 2, 2,
9464 2, 2, 2, 2, 2, 2, 2, 2,
9465 2, 2, 2, 2, 2, 2, 2, 2,
9466 2, 2, 2, 2, 2, 2, 2, 2,
9467 2, 2, 2, 2, 2, 2, 2, 2,
9468 2, 2, 2, 2, 2, 2, 2, 2,
9469 2, 2, 2, 2, 0, 0, 0, 0,
9470 0, 0, 0, 0, 0, 0, 0, 0,
9471 0, 0, 0, 0, 0, 0, 0, 0,
9472 0, 0, 0, 0, 0, 0, 0, 0,
9473 0, 0, 0, 0, 0, 0, 0, 0,
9474 0, 0, 0, 0, 0, 0, 0, 0,
9475 0, 0, 0, 0, 0, 0, 0, 0,
9476 0, 0, 0, 0, 0, 0, 0, 0,
9477 0, 0, 0, 0, 0, 0, 0, 0,
9478 0, 0, 0, 0, 0, 0, 0, 0,
9479 0, 0, 2, 10, 10, 10, 10, 10,
9480 10, 10, 10, 10, 10, 10, 10, 10,
9481 10, 10, 10, 10, 10, 10, 10, 0,
9482};
9483
9484static const Q_UINT8 dir_25[] = {
9485 10, 10, 10, 10, 10, 10, 10, 10,
9486 10, 10, 10, 10, 10, 10, 10, 10,
9487 10, 10, 10, 10, 10, 10, 10, 10,
9488 10, 10, 10, 10, 10, 10, 10, 10,
9489 10, 10, 10, 10, 10, 10, 10, 10,
9490 10, 10, 10, 10, 10, 10, 10, 10,
9491 10, 10, 10, 10, 10, 10, 10, 10,
9492 10, 10, 10, 10, 10, 10, 10, 10,
9493 10, 10, 10, 10, 10, 10, 10, 10,
9494 10, 10, 10, 10, 10, 10, 10, 10,
9495 10, 10, 10, 10, 10, 10, 10, 10,
9496 10, 10, 10, 10, 10, 10, 10, 10,
9497 10, 10, 10, 10, 10, 10, 10, 10,
9498 10, 10, 10, 10, 10, 10, 10, 10,
9499 10, 10, 10, 10, 10, 10, 10, 10,
9500 10, 10, 10, 10, 10, 10, 10, 10,
9501 10, 10, 10, 10, 10, 10, 10, 10,
9502 10, 10, 10, 10, 10, 10, 10, 10,
9503 10, 10, 10, 10, 10, 10, 10, 10,
9504 10, 10, 10, 10, 10, 10, 10, 10,
9505 10, 10, 10, 10, 10, 10, 10, 10,
9506 10, 10, 10, 10, 10, 10, 10, 10,
9507 10, 10, 10, 10, 10, 10, 10, 10,
9508 10, 10, 10, 10, 10, 10, 10, 10,
9509 10, 10, 10, 10, 10, 10, 10, 10,
9510 10, 10, 10, 10, 10, 10, 10, 10,
9511 10, 10, 10, 10, 10, 10, 10, 10,
9512 10, 10, 10, 10, 10, 10, 10, 10,
9513 10, 10, 10, 10, 10, 10, 10, 10,
9514 10, 10, 10, 10, 10, 10, 10, 10,
9515 10, 10, 10, 10, 10, 10, 10, 10,
9516 10, 10, 10, 10, 10, 10, 10, 10,
9517};
9518
9519static const Q_UINT8 dir_26[] = {
9520 10, 10, 10, 10, 10, 10, 10, 10,
9521 10, 10, 10, 10, 10, 10, 10, 10,
9522 10, 10, 10, 10, 0, 0, 10, 10,
9523 0, 10, 10, 10, 10, 10, 10, 10,
9524 10, 10, 10, 10, 10, 10, 10, 10,
9525 10, 10, 10, 10, 10, 10, 10, 10,
9526 10, 10, 10, 10, 10, 10, 10, 10,
9527 10, 10, 10, 10, 10, 10, 10, 10,
9528 10, 10, 10, 10, 10, 10, 10, 10,
9529 10, 10, 10, 10, 10, 10, 10, 10,
9530 10, 10, 10, 10, 10, 10, 10, 10,
9531 10, 10, 10, 10, 10, 10, 10, 10,
9532 10, 10, 10, 10, 10, 10, 10, 10,
9533 10, 10, 10, 10, 10, 10, 10, 10,
9534 10, 10, 10, 10, 10, 10, 10, 10,
9535 10, 10, 10, 10, 10, 10, 0, 0,
9536 10, 10, 10, 10, 10, 10, 10, 10,
9537 10, 10, 0, 0, 0, 0, 0, 0,
9538 0, 0, 0, 0, 0, 0, 0, 0,
9539 0, 0, 0, 0, 0, 0, 0, 0,
9540 0, 0, 0, 0, 0, 0, 0, 0,
9541 0, 0, 0, 0, 0, 0, 0, 0,
9542 0, 0, 0, 0, 0, 0, 0, 0,
9543 0, 0, 0, 0, 0, 0, 0, 0,
9544 0, 0, 0, 0, 0, 0, 0, 0,
9545 0, 0, 0, 0, 0, 0, 0, 0,
9546 0, 0, 0, 0, 0, 0, 0, 0,
9547 0, 0, 0, 0, 0, 0, 0, 0,
9548 0, 0, 0, 0, 0, 0, 0, 0,
9549 0, 0, 0, 0, 0, 0, 0, 0,
9550 0, 0, 0, 0, 0, 0, 0, 0,
9551 0, 0, 0, 0, 0, 0, 0, 0,
9552};
9553
9554static const Q_UINT8 dir_27[] = {
9555 0, 10, 10, 10, 10, 0, 10, 10,
9556 10, 10, 0, 0, 10, 10, 10, 10,
9557 10, 10, 10, 10, 10, 10, 10, 10,
9558 10, 10, 10, 10, 10, 10, 10, 10,
9559 10, 10, 10, 10, 10, 10, 10, 10,
9560 0, 10, 10, 10, 10, 10, 10, 10,
9561 10, 10, 10, 10, 10, 10, 10, 10,
9562 10, 10, 10, 10, 10, 10, 10, 10,
9563 10, 10, 10, 10, 10, 10, 10, 10,
9564 10, 10, 10, 10, 0, 10, 0, 10,
9565 10, 10, 10, 0, 0, 0, 10, 0,
9566 10, 10, 10, 10, 10, 10, 10, 0,
9567 0, 10, 10, 10, 10, 10, 10, 10,
9568 138, 138, 138, 138, 138, 138, 138, 138,
9569 138, 138, 138, 138, 138, 138, 10, 10,
9570 10, 10, 10, 10, 10, 10, 10, 10,
9571 10, 10, 10, 10, 10, 10, 10, 10,
9572 10, 10, 10, 10, 10, 10, 10, 10,
9573 10, 10, 10, 10, 10, 0, 0, 0,
9574 10, 10, 10, 10, 10, 10, 10, 10,
9575 10, 10, 10, 10, 10, 10, 10, 10,
9576 10, 10, 10, 10, 10, 10, 10, 10,
9577 0, 10, 10, 10, 10, 10, 10, 10,
9578 10, 10, 10, 10, 10, 10, 10, 0,
9579 0, 0, 0, 0, 0, 0, 0, 0,
9580 0, 0, 0, 0, 0, 0, 0, 0,
9581 10, 10, 10, 138, 138, 138, 138, 10,
9582 10, 10, 10, 10, 138, 138, 138, 10,
9583 10, 10, 138, 138, 138, 138, 138, 138,
9584 138, 138, 138, 138, 0, 0, 0, 0,
9585 10, 10, 10, 10, 10, 10, 10, 10,
9586 10, 10, 10, 10, 10, 10, 10, 10,
9587};
9588
9589static const Q_UINT8 dir_29[] = {
9590 10, 10, 10, 10, 10, 10, 10, 10,
9591 10, 10, 10, 10, 10, 10, 10, 10,
9592 10, 10, 10, 10, 10, 10, 10, 10,
9593 10, 10, 10, 10, 10, 10, 10, 10,
9594 10, 10, 10, 10, 10, 10, 10, 10,
9595 10, 10, 10, 10, 10, 10, 10, 10,
9596 10, 10, 10, 10, 10, 10, 10, 10,
9597 10, 10, 10, 10, 10, 10, 10, 10,
9598 10, 10, 10, 10, 10, 10, 10, 10,
9599 10, 10, 10, 10, 10, 10, 10, 10,
9600 10, 10, 10, 10, 10, 10, 10, 10,
9601 10, 10, 10, 10, 10, 10, 10, 10,
9602 10, 10, 10, 10, 10, 10, 10, 10,
9603 10, 10, 10, 10, 10, 10, 10, 10,
9604 10, 10, 10, 10, 10, 10, 10, 10,
9605 10, 10, 10, 10, 10, 10, 10, 10,
9606 10, 10, 10, 138, 138, 138, 138, 138,
9607 138, 138, 138, 138, 138, 138, 138, 138,
9608 138, 138, 138, 138, 138, 138, 138, 138,
9609 138, 10, 10, 138, 138, 138, 138, 138,
9610 138, 138, 138, 138, 138, 138, 138, 138,
9611 138, 138, 138, 138, 138, 138, 138, 138,
9612 10, 10, 10, 10, 10, 10, 10, 10,
9613 138, 10, 10, 10, 10, 10, 10, 10,
9614 138, 138, 138, 138, 138, 138, 10, 10,
9615 10, 138, 10, 10, 10, 10, 138, 138,
9616 138, 138, 138, 10, 138, 138, 10, 10,
9617 138, 138, 138, 138, 138, 10, 10, 10,
9618 10, 138, 10, 138, 138, 138, 10, 10,
9619 138, 138, 10, 10, 10, 10, 10, 10,
9620 10, 10, 10, 10, 138, 138, 138, 138,
9621 138, 138, 10, 10, 138, 138, 10, 10,
9622};
9623
9624static const Q_UINT8 dir_2A[] = {
9625 10, 10, 10, 10, 10, 10, 10, 10,
9626 10, 10, 138, 138, 138, 138, 138, 138,
9627 138, 138, 138, 138, 138, 138, 138, 138,
9628 138, 138, 138, 138, 138, 10, 138, 138,
9629 138, 138, 10, 10, 138, 10, 138, 10,
9630 10, 138, 10, 138, 138, 138, 138, 10,
9631 10, 10, 10, 10, 138, 138, 10, 10,
9632 10, 10, 10, 10, 138, 138, 138, 10,
9633 10, 10, 10, 10, 10, 10, 10, 10,
9634 10, 10, 10, 10, 10, 10, 10, 10,
9635 10, 10, 10, 10, 10, 10, 10, 138,
9636 138, 10, 10, 10, 10, 10, 10, 10,
9637 10, 10, 10, 10, 138, 138, 10, 10,
9638 10, 10, 138, 138, 138, 138, 10, 138,
9639 138, 10, 10, 138, 138, 10, 10, 10,
9640 10, 138, 138, 138, 138, 138, 138, 138,
9641 138, 138, 138, 138, 138, 138, 138, 138,
9642 138, 138, 138, 138, 138, 138, 138, 138,
9643 138, 138, 138, 138, 138, 138, 138, 138,
9644 138, 138, 138, 138, 138, 138, 138, 138,
9645 138, 138, 138, 138, 10, 10, 138, 138,
9646 138, 138, 138, 138, 138, 138, 10, 138,
9647 138, 138, 138, 138, 138, 138, 138, 138,
9648 138, 138, 138, 138, 138, 138, 138, 138,
9649 138, 138, 138, 138, 138, 138, 138, 138,
9650 138, 138, 138, 138, 138, 138, 138, 138,
9651 138, 138, 138, 138, 138, 138, 138, 10,
9652 10, 10, 10, 10, 138, 10, 138, 10,
9653 10, 10, 138, 138, 138, 138, 138, 10,
9654 10, 10, 10, 10, 138, 138, 138, 10,
9655 10, 10, 10, 138, 10, 10, 10, 138,
9656 138, 138, 138, 138, 10, 138, 10, 10,
9657};
9658
9659static const Q_UINT8 dir_2E[] = {
9660 0, 0, 0, 0, 0, 0, 0, 0,
9661 0, 0, 0, 0, 0, 0, 0, 0,
9662 0, 0, 0, 0, 0, 0, 0, 0,
9663 0, 0, 0, 0, 0, 0, 0, 0,
9664 0, 0, 0, 0, 0, 0, 0, 0,
9665 0, 0, 0, 0, 0, 0, 0, 0,
9666 0, 0, 0, 0, 0, 0, 0, 0,
9667 0, 0, 0, 0, 0, 0, 0, 0,
9668 0, 0, 0, 0, 0, 0, 0, 0,
9669 0, 0, 0, 0, 0, 0, 0, 0,
9670 0, 0, 0, 0, 0, 0, 0, 0,
9671 0, 0, 0, 0, 0, 0, 0, 0,
9672 0, 0, 0, 0, 0, 0, 0, 0,
9673 0, 0, 0, 0, 0, 0, 0, 0,
9674 0, 0, 0, 0, 0, 0, 0, 0,
9675 0, 0, 0, 0, 0, 0, 0, 0,
9676 10, 10, 10, 10, 10, 10, 10, 10,
9677 10, 10, 10, 10, 10, 10, 10, 10,
9678 10, 10, 10, 10, 10, 10, 10, 10,
9679 10, 10, 0, 10, 10, 10, 10, 10,
9680 10, 10, 10, 10, 10, 10, 10, 10,
9681 10, 10, 10, 10, 10, 10, 10, 10,
9682 10, 10, 10, 10, 10, 10, 10, 10,
9683 10, 10, 10, 10, 10, 10, 10, 10,
9684 10, 10, 10, 10, 10, 10, 10, 10,
9685 10, 10, 10, 10, 10, 10, 10, 10,
9686 10, 10, 10, 10, 10, 10, 10, 10,
9687 10, 10, 10, 10, 10, 10, 10, 10,
9688 10, 10, 10, 10, 10, 10, 10, 10,
9689 10, 10, 10, 10, 10, 10, 10, 10,
9690 10, 10, 10, 10, 0, 0, 0, 0,
9691 0, 0, 0, 0, 0, 0, 0, 0,
9692};
9693
9694static const Q_UINT8 dir_2F[] = {
9695 10, 10, 10, 10, 10, 10, 10, 10,
9696 10, 10, 10, 10, 10, 10, 10, 10,
9697 10, 10, 10, 10, 10, 10, 10, 10,
9698 10, 10, 10, 10, 10, 10, 10, 10,
9699 10, 10, 10, 10, 10, 10, 10, 10,
9700 10, 10, 10, 10, 10, 10, 10, 10,
9701 10, 10, 10, 10, 10, 10, 10, 10,
9702 10, 10, 10, 10, 10, 10, 10, 10,
9703 10, 10, 10, 10, 10, 10, 10, 10,
9704 10, 10, 10, 10, 10, 10, 10, 10,
9705 10, 10, 10, 10, 10, 10, 10, 10,
9706 10, 10, 10, 10, 10, 10, 10, 10,
9707 10, 10, 10, 10, 10, 10, 10, 10,
9708 10, 10, 10, 10, 10, 10, 10, 10,
9709 10, 10, 10, 10, 10, 10, 10, 10,
9710 10, 10, 10, 10, 10, 10, 10, 10,
9711 10, 10, 10, 10, 10, 10, 10, 10,
9712 10, 10, 10, 10, 10, 10, 10, 10,
9713 10, 10, 10, 10, 10, 10, 10, 10,
9714 10, 10, 10, 10, 10, 10, 10, 10,
9715 10, 10, 10, 10, 10, 10, 10, 10,
9716 10, 10, 10, 10, 10, 10, 10, 10,
9717 10, 10, 10, 10, 10, 10, 10, 10,
9718 10, 10, 10, 10, 10, 10, 10, 10,
9719 10, 10, 10, 10, 10, 10, 10, 10,
9720 10, 10, 10, 10, 10, 10, 10, 10,
9721 10, 10, 10, 10, 10, 10, 0, 0,
9722 0, 0, 0, 0, 0, 0, 0, 0,
9723 0, 0, 0, 0, 0, 0, 0, 0,
9724 0, 0, 0, 0, 0, 0, 0, 0,
9725 10, 10, 10, 10, 10, 10, 10, 10,
9726 10, 10, 10, 10, 0, 0, 0, 0,
9727};
9728
9729static const Q_UINT8 dir_30[] = {
9730 9, 10, 10, 10, 10, 0, 0, 0,
9731 138, 138, 138, 138, 138, 138, 138, 138,
9732 138, 138, 10, 10, 138, 138, 138, 138,
9733 138, 138, 138, 138, 10, 10, 10, 10,
9734 10, 0, 0, 0, 0, 0, 0, 0,
9735 0, 0, 17, 17, 17, 17, 17, 17,
9736 10, 0, 0, 0, 0, 0, 10, 10,
9737 0, 0, 0, 0, 0, 10, 10, 10,
9738 0, 0, 0, 0, 0, 0, 0, 0,
9739 0, 0, 0, 0, 0, 0, 0, 0,
9740 0, 0, 0, 0, 0, 0, 0, 0,
9741 0, 0, 0, 0, 0, 0, 0, 0,
9742 0, 0, 0, 0, 0, 0, 0, 0,
9743 0, 0, 0, 0, 0, 0, 0, 0,
9744 0, 0, 0, 0, 0, 0, 0, 0,
9745 0, 0, 0, 0, 0, 0, 0, 0,
9746 0, 0, 0, 0, 0, 0, 0, 0,
9747 0, 0, 0, 0, 0, 0, 0, 0,
9748 0, 0, 0, 0, 0, 0, 0, 0,
9749 0, 17, 17, 10, 10, 0, 0, 0,
9750 10, 0, 0, 0, 0, 0, 0, 0,
9751 0, 0, 0, 0, 0, 0, 0, 0,
9752 0, 0, 0, 0, 0, 0, 0, 0,
9753 0, 0, 0, 0, 0, 0, 0, 0,
9754 0, 0, 0, 0, 0, 0, 0, 0,
9755 0, 0, 0, 0, 0, 0, 0, 0,
9756 0, 0, 0, 0, 0, 0, 0, 0,
9757 0, 0, 0, 0, 0, 0, 0, 0,
9758 0, 0, 0, 0, 0, 0, 0, 0,
9759 0, 0, 0, 0, 0, 0, 0, 0,
9760 0, 0, 0, 0, 0, 0, 0, 0,
9761 0, 0, 0, 10, 0, 0, 0, 0,
9762};
9763
9764static const Q_UINT8 dir_32[] = {
9765 0, 0, 0, 0, 0, 0, 0, 0,
9766 0, 0, 0, 0, 0, 0, 0, 0,
9767 0, 0, 0, 0, 0, 0, 0, 0,
9768 0, 0, 0, 0, 0, 0, 0, 0,
9769 0, 0, 0, 0, 0, 0, 0, 0,
9770 0, 0, 0, 0, 0, 0, 0, 0,
9771 0, 0, 0, 0, 0, 0, 0, 0,
9772 0, 0, 0, 0, 0, 0, 0, 0,
9773 0, 0, 0, 0, 0, 0, 0, 0,
9774 0, 0, 0, 0, 0, 0, 0, 0,
9775 0, 10, 10, 10, 10, 10, 10, 10,
9776 10, 10, 10, 10, 10, 10, 10, 10,
9777 0, 0, 0, 0, 0, 0, 0, 0,
9778 0, 0, 0, 0, 0, 0, 0, 0,
9779 0, 0, 0, 0, 0, 0, 0, 0,
9780 0, 0, 0, 0, 0, 0, 0, 0,
9781 0, 0, 0, 0, 0, 0, 0, 0,
9782 0, 0, 0, 0, 0, 0, 0, 0,
9783 0, 0, 0, 0, 0, 0, 0, 0,
9784 0, 0, 0, 0, 0, 0, 0, 0,
9785 0, 0, 0, 0, 0, 0, 0, 0,
9786 0, 0, 0, 0, 0, 0, 0, 0,
9787 0, 10, 10, 10, 10, 10, 10, 10,
9788 10, 10, 10, 10, 10, 10, 10, 10,
9789 0, 0, 0, 0, 0, 0, 0, 0,
9790 0, 0, 0, 0, 0, 0, 0, 0,
9791 0, 0, 0, 0, 0, 0, 0, 0,
9792 0, 0, 0, 0, 0, 0, 0, 0,
9793 0, 0, 0, 0, 0, 0, 0, 0,
9794 0, 0, 0, 0, 0, 0, 0, 0,
9795 0, 0, 0, 0, 0, 0, 0, 0,
9796 0, 0, 0, 0, 0, 0, 0, 0,
9797};
9798
9799static const Q_UINT8 dir_A4[] = {
9800 0, 0, 0, 0, 0, 0, 0, 0,
9801 0, 0, 0, 0, 0, 0, 0, 0,
9802 0, 0, 0, 0, 0, 0, 0, 0,
9803 0, 0, 0, 0, 0, 0, 0, 0,
9804 0, 0, 0, 0, 0, 0, 0, 0,
9805 0, 0, 0, 0, 0, 0, 0, 0,
9806 0, 0, 0, 0, 0, 0, 0, 0,
9807 0, 0, 0, 0, 0, 0, 0, 0,
9808 0, 0, 0, 0, 0, 0, 0, 0,
9809 0, 0, 0, 0, 0, 0, 0, 0,
9810 0, 0, 0, 0, 0, 0, 0, 0,
9811 0, 0, 0, 0, 0, 0, 0, 0,
9812 0, 0, 0, 0, 0, 0, 0, 0,
9813 0, 0, 0, 0, 0, 0, 0, 0,
9814 0, 0, 0, 0, 0, 0, 0, 0,
9815 0, 0, 0, 0, 0, 0, 0, 0,
9816 0, 0, 0, 0, 0, 0, 0, 0,
9817 0, 0, 0, 0, 0, 0, 0, 0,
9818 10, 10, 10, 10, 10, 10, 10, 10,
9819 10, 10, 10, 10, 10, 10, 10, 10,
9820 10, 10, 10, 10, 10, 10, 10, 10,
9821 10, 10, 10, 10, 10, 10, 10, 10,
9822 10, 10, 10, 10, 10, 10, 10, 10,
9823 10, 10, 10, 10, 10, 10, 10, 10,
9824 10, 10, 10, 10, 10, 10, 10, 0,
9825 0, 0, 0, 0, 0, 0, 0, 0,
9826 0, 0, 0, 0, 0, 0, 0, 0,
9827 0, 0, 0, 0, 0, 0, 0, 0,
9828 0, 0, 0, 0, 0, 0, 0, 0,
9829 0, 0, 0, 0, 0, 0, 0, 0,
9830 0, 0, 0, 0, 0, 0, 0, 0,
9831 0, 0, 0, 0, 0, 0, 0, 0,
9832};
9833
9834static const Q_UINT8 dir_FB[] = {
9835 0, 0, 0, 0, 0, 0, 0, 0,
9836 0, 0, 0, 0, 0, 0, 0, 0,
9837 0, 0, 0, 0, 0, 0, 0, 0,
9838 0, 0, 0, 0, 0, 1, 17, 1,
9839 1, 1, 1, 1, 1, 1, 1, 1,
9840 1, 4, 1, 1, 1, 1, 1, 1,
9841 1, 1, 1, 1, 1, 1, 1, 0,
9842 1, 1, 1, 1, 1, 0, 1, 0,
9843 1, 1, 0, 1, 1, 0, 1, 1,
9844 1, 1, 1, 1, 1, 1, 1, 1,
9845 13, 13, 13, 13, 13, 13, 13, 13,
9846 13, 13, 13, 13, 13, 13, 13, 13,
9847 13, 13, 13, 13, 13, 13, 13, 13,
9848 13, 13, 13, 13, 13, 13, 13, 13,
9849 13, 13, 13, 13, 13, 13, 13, 13,
9850 13, 13, 13, 13, 13, 13, 13, 13,
9851 13, 13, 13, 13, 13, 13, 13, 13,
9852 13, 13, 13, 13, 13, 13, 13, 13,
9853 13, 13, 13, 13, 13, 13, 13, 13,
9854 13, 13, 13, 13, 13, 13, 13, 13,
9855 13, 13, 13, 13, 13, 13, 13, 13,
9856 13, 13, 13, 13, 13, 13, 13, 13,
9857 13, 13, 0, 0, 0, 0, 0, 0,
9858 0, 0, 0, 0, 0, 0, 0, 0,
9859 0, 0, 0, 0, 0, 0, 0, 0,
9860 0, 0, 0, 0, 0, 0, 0, 0,
9861 0, 0, 0, 13, 13, 13, 13, 13,
9862 13, 13, 13, 13, 13, 13, 13, 13,
9863 13, 13, 13, 13, 13, 13, 13, 13,
9864 13, 13, 13, 13, 13, 13, 13, 13,
9865 13, 13, 13, 13, 13, 13, 13, 13,
9866 13, 13, 13, 13, 13, 13, 13, 13,
9867};
9868
9869static const Q_UINT8 dir_FC[] = {
9870 13, 13, 13, 13, 13, 13, 13, 13,
9871 13, 13, 13, 13, 13, 13, 13, 13,
9872 13, 13, 13, 13, 13, 13, 13, 13,
9873 13, 13, 13, 13, 13, 13, 13, 13,
9874 13, 13, 13, 13, 13, 13, 13, 13,
9875 13, 13, 13, 13, 13, 13, 13, 13,
9876 13, 13, 13, 13, 13, 13, 13, 13,
9877 13, 13, 13, 13, 13, 13, 13, 13,
9878 13, 13, 13, 13, 13, 13, 13, 13,
9879 13, 13, 13, 13, 13, 13, 13, 13,
9880 13, 13, 13, 13, 13, 13, 13, 13,
9881 13, 13, 13, 13, 13, 13, 13, 13,
9882 13, 13, 13, 13, 13, 13, 13, 13,
9883 13, 13, 13, 13, 13, 13, 13, 13,
9884 13, 13, 13, 13, 13, 13, 13, 13,
9885 13, 13, 13, 13, 13, 13, 13, 13,
9886 13, 13, 13, 13, 13, 13, 13, 13,
9887 13, 13, 13, 13, 13, 13, 13, 13,
9888 13, 13, 13, 13, 13, 13, 13, 13,
9889 13, 13, 13, 13, 13, 13, 13, 13,
9890 13, 13, 13, 13, 13, 13, 13, 13,
9891 13, 13, 13, 13, 13, 13, 13, 13,
9892 13, 13, 13, 13, 13, 13, 13, 13,
9893 13, 13, 13, 13, 13, 13, 13, 13,
9894 13, 13, 13, 13, 13, 13, 13, 13,
9895 13, 13, 13, 13, 13, 13, 13, 13,
9896 13, 13, 13, 13, 13, 13, 13, 13,
9897 13, 13, 13, 13, 13, 13, 13, 13,
9898 13, 13, 13, 13, 13, 13, 13, 13,
9899 13, 13, 13, 13, 13, 13, 13, 13,
9900 13, 13, 13, 13, 13, 13, 13, 13,
9901 13, 13, 13, 13, 13, 13, 13, 13,
9902};
9903
9904static const Q_UINT8 dir_FD[] = {
9905 13, 13, 13, 13, 13, 13, 13, 13,
9906 13, 13, 13, 13, 13, 13, 13, 13,
9907 13, 13, 13, 13, 13, 13, 13, 13,
9908 13, 13, 13, 13, 13, 13, 13, 13,
9909 13, 13, 13, 13, 13, 13, 13, 13,
9910 13, 13, 13, 13, 13, 13, 13, 13,
9911 13, 13, 13, 13, 13, 13, 13, 13,
9912 13, 13, 13, 13, 13, 13, 10, 10,
9913 0, 0, 0, 0, 0, 0, 0, 0,
9914 0, 0, 0, 0, 0, 0, 0, 0,
9915 13, 13, 13, 13, 13, 13, 13, 13,
9916 13, 13, 13, 13, 13, 13, 13, 13,
9917 13, 13, 13, 13, 13, 13, 13, 13,
9918 13, 13, 13, 13, 13, 13, 13, 13,
9919 13, 13, 13, 13, 13, 13, 13, 13,
9920 13, 13, 13, 13, 13, 13, 13, 13,
9921 13, 13, 13, 13, 13, 13, 13, 13,
9922 13, 13, 13, 13, 13, 13, 13, 13,
9923 0, 0, 13, 13, 13, 13, 13, 13,
9924 13, 13, 13, 13, 13, 13, 13, 13,
9925 13, 13, 13, 13, 13, 13, 13, 13,
9926 13, 13, 13, 13, 13, 13, 13, 13,
9927 13, 13, 13, 13, 13, 13, 13, 13,
9928 13, 13, 13, 13, 13, 13, 13, 13,
9929 13, 13, 13, 13, 13, 13, 13, 13,
9930 0, 0, 0, 0, 0, 0, 0, 0,
9931 0, 0, 0, 0, 0, 0, 0, 0,
9932 0, 0, 0, 0, 0, 0, 0, 0,
9933 0, 0, 0, 0, 0, 0, 0, 0,
9934 0, 0, 0, 0, 0, 0, 0, 0,
9935 13, 13, 13, 13, 13, 13, 13, 13,
9936 13, 13, 13, 13, 13, 0, 0, 0,
9937};
9938
9939static const Q_UINT8 dir_FE[] = {
9940 17, 17, 17, 17, 17, 17, 17, 17,
9941 17, 17, 17, 17, 17, 17, 17, 17,
9942 0, 0, 0, 0, 0, 0, 0, 0,
9943 0, 0, 0, 0, 0, 0, 0, 0,
9944 17, 17, 17, 17, 0, 0, 0, 0,
9945 0, 0, 0, 0, 0, 0, 0, 0,
9946 10, 10, 10, 10, 10, 10, 10, 10,
9947 10, 10, 10, 10, 10, 10, 10, 10,
9948 10, 10, 10, 10, 10, 10, 10, 0,
9949 0, 10, 10, 10, 10, 10, 10, 10,
9950 6, 10, 6, 0, 10, 6, 10, 10,
9951 10, 10, 10, 10, 10, 10, 10, 4,
9952 10, 10, 4, 4, 10, 10, 10, 0,
9953 10, 4, 4, 10, 0, 0, 0, 0,
9954 13, 13, 13, 13, 13, 0, 13, 13,
9955 13, 13, 13, 13, 13, 13, 13, 13,
9956 13, 13, 13, 13, 13, 13, 13, 13,
9957 13, 13, 13, 13, 13, 13, 13, 13,
9958 13, 13, 13, 13, 13, 13, 13, 13,
9959 13, 13, 13, 13, 13, 13, 13, 13,
9960 13, 13, 13, 13, 13, 13, 13, 13,
9961 13, 13, 13, 13, 13, 13, 13, 13,
9962 13, 13, 13, 13, 13, 13, 13, 13,
9963 13, 13, 13, 13, 13, 13, 13, 13,
9964 13, 13, 13, 13, 13, 13, 13, 13,
9965 13, 13, 13, 13, 13, 13, 13, 13,
9966 13, 13, 13, 13, 13, 13, 13, 13,
9967 13, 13, 13, 13, 13, 13, 13, 13,
9968 13, 13, 13, 13, 13, 13, 13, 13,
9969 13, 13, 13, 13, 13, 13, 13, 13,
9970 13, 13, 13, 13, 13, 13, 13, 13,
9971 13, 13, 13, 13, 13, 0, 0, 18,
9972};
9973
9974static const Q_UINT8 dir_FF[] = {
9975 0, 10, 10, 4, 4, 4, 10, 10,
9976 138, 138, 10, 4, 6, 4, 6, 3,
9977 2, 2, 2, 2, 2, 2, 2, 2,
9978 2, 2, 6, 10, 138, 10, 138, 10,
9979 10, 0, 0, 0, 0, 0, 0, 0,
9980 0, 0, 0, 0, 0, 0, 0, 0,
9981 0, 0, 0, 0, 0, 0, 0, 0,
9982 0, 0, 0, 138, 10, 138, 10, 10,
9983 10, 0, 0, 0, 0, 0, 0, 0,
9984 0, 0, 0, 0, 0, 0, 0, 0,
9985 0, 0, 0, 0, 0, 0, 0, 0,
9986 0, 0, 0, 138, 10, 138, 10, 138,
9987 138, 10, 138, 138, 10, 10, 0, 0,
9988 0, 0, 0, 0, 0, 0, 0, 0,
9989 0, 0, 0, 0, 0, 0, 0, 0,
9990 0, 0, 0, 0, 0, 0, 0, 0,
9991 0, 0, 0, 0, 0, 0, 0, 0,
9992 0, 0, 0, 0, 0, 0, 0, 0,
9993 0, 0, 0, 0, 0, 0, 0, 0,
9994 0, 0, 0, 0, 0, 0, 0, 0,
9995 0, 0, 0, 0, 0, 0, 0, 0,
9996 0, 0, 0, 0, 0, 0, 0, 0,
9997 0, 0, 0, 0, 0, 0, 0, 0,
9998 0, 0, 0, 0, 0, 0, 0, 0,
9999 0, 0, 0, 0, 0, 0, 0, 0,
10000 0, 0, 0, 0, 0, 0, 0, 0,
10001 0, 0, 0, 0, 0, 0, 0, 0,
10002 0, 0, 0, 0, 0, 0, 0, 0,
10003 4, 4, 10, 10, 10, 4, 4, 0,
10004 10, 10, 10, 10, 10, 10, 10, 0,
10005 0, 0, 0, 0, 0, 0, 0, 0,
10006 0, 18, 18, 18, 10, 10, 0, 0,
10007};
10008
10009static const Q_UINT8 * const direction_info[256] = {
10010 dir_00, dir_01, dir_02, dir_03, dir_04, dir_05, dir_06, dir_07,
10011 dir_01, dir_09, dir_0A, dir_0B, dir_0C, dir_0D, dir_0E, dir_0F,
10012 dir_10, dir_01, dir_01, dir_01, dir_01, dir_01, dir_16, dir_17,
10013 dir_18, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_1F,
10014 dir_20, dir_21, dir_22, dir_23, dir_24, dir_25, dir_26, dir_27,
10015 dir_25, dir_29, dir_2A, dir_01, dir_01, dir_01, dir_2E, dir_2F,
10016 dir_30, dir_01, dir_32, dir_01, dir_01, dir_01, dir_01, dir_01,
10017 dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
10018 dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
10019 dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
10020 dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
10021 dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
10022 dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
10023 dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
10024 dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
10025 dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
10026 dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
10027 dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
10028 dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
10029 dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
10030 dir_01, dir_01, dir_01, dir_01, dir_A4, dir_01, dir_01, dir_01,
10031 dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
10032 dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
10033 dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
10034 dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
10035 dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
10036 dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
10037 dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
10038 dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
10039 dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
10040 dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01, dir_01,
10041 dir_01, dir_01, dir_01, dir_FB, dir_FC, dir_FD, dir_FE, dir_FF,
10042};
10043// 26362 bytes
10044
10045static const Q_UINT8 cmb_00[] = {
10046 0, 0, 0, 0, 0, 0, 0, 0,
10047 0, 0, 0, 0, 0, 0, 0, 0,
10048 0, 0, 0, 0, 0, 0, 0, 0,
10049 0, 0, 0, 0, 0, 0, 0, 0,
10050 0, 0, 0, 0, 0, 0, 0, 0,
10051 0, 0, 0, 0, 0, 0, 0, 0,
10052 0, 0, 0, 0, 0, 0, 0, 0,
10053 0, 0, 0, 0, 0, 0, 0, 0,
10054 0, 0, 0, 0, 0, 0, 0, 0,
10055 0, 0, 0, 0, 0, 0, 0, 0,
10056 0, 0, 0, 0, 0, 0, 0, 0,
10057 0, 0, 0, 0, 0, 0, 0, 0,
10058 0, 0, 0, 0, 0, 0, 0, 0,
10059 0, 0, 0, 0, 0, 0, 0, 0,
10060 0, 0, 0, 0, 0, 0, 0, 0,
10061 0, 0, 0, 0, 0, 0, 0, 0,
10062 0, 0, 0, 0, 0, 0, 0, 0,
10063 0, 0, 0, 0, 0, 0, 0, 0,
10064 0, 0, 0, 0, 0, 0, 0, 0,
10065 0, 0, 0, 0, 0, 0, 0, 0,
10066 0, 0, 0, 0, 0, 0, 0, 0,
10067 0, 0, 0, 0, 0, 0, 0, 0,
10068 0, 0, 0, 0, 0, 0, 0, 0,
10069 0, 0, 0, 0, 0, 0, 0, 0,
10070 0, 0, 0, 0, 0, 0, 0, 0,
10071 0, 0, 0, 0, 0, 0, 0, 0,
10072 0, 0, 0, 0, 0, 0, 0, 0,
10073 0, 0, 0, 0, 0, 0, 0, 0,
10074 0, 0, 0, 0, 0, 0, 0, 0,
10075 0, 0, 0, 0, 0, 0, 0, 0,
10076 0, 0, 0, 0, 0, 0, 0, 0,
10077 0, 0, 0, 0, 0, 0, 0, 0,
10078};
10079
10080static const Q_UINT8 cmb_03[] = {
10081 230, 230, 230, 230, 230, 230, 230, 230,
10082 230, 230, 230, 230, 230, 230, 230, 230,
10083 230, 230, 230, 230, 230, 232, 220, 220,
10084 220, 220, 232, 216, 220, 220, 220, 220,
10085 220, 202, 202, 220, 220, 220, 220, 202,
10086 202, 220, 220, 220, 220, 220, 220, 220,
10087 220, 220, 220, 220, 1, 1, 1, 1,
10088 1, 220, 220, 220, 220, 230, 230, 230,
10089 230, 230, 230, 230, 230, 240, 230, 220,
10090 220, 220, 230, 230, 230, 220, 220, 0,
10091 0, 0, 0, 0, 0, 0, 0, 0,
10092 0, 0, 0, 0, 0, 0, 0, 0,
10093 234, 234, 233, 230, 230, 230, 230, 230,
10094 230, 230, 230, 230, 230, 230, 230, 230,
10095 0, 0, 0, 0, 0, 0, 0, 0,
10096 0, 0, 0, 0, 0, 0, 0, 0,
10097 0, 0, 0, 0, 0, 0, 0, 0,
10098 0, 0, 0, 0, 0, 0, 0, 0,
10099 0, 0, 0, 0, 0, 0, 0, 0,
10100 0, 0, 0, 0, 0, 0, 0, 0,
10101 0, 0, 0, 0, 0, 0, 0, 0,
10102 0, 0, 0, 0, 0, 0, 0, 0,
10103 0, 0, 0, 0, 0, 0, 0, 0,
10104 0, 0, 0, 0, 0, 0, 0, 0,
10105 0, 0, 0, 0, 0, 0, 0, 0,
10106 0, 0, 0, 0, 0, 0, 0, 0,
10107 0, 0, 0, 0, 0, 0, 0, 0,
10108 0, 0, 0, 0, 0, 0, 0, 0,
10109 0, 0, 0, 0, 0, 0, 0, 0,
10110 0, 0, 0, 0, 0, 0, 0, 0,
10111 0, 0, 0, 0, 0, 0, 0, 0,
10112 0, 0, 0, 0, 0, 0, 0, 0,
10113};
10114
10115static const Q_UINT8 cmb_04[] = {
10116 0, 0, 0, 0, 0, 0, 0, 0,
10117 0, 0, 0, 0, 0, 0, 0, 0,
10118 0, 0, 0, 0, 0, 0, 0, 0,
10119 0, 0, 0, 0, 0, 0, 0, 0,
10120 0, 0, 0, 0, 0, 0, 0, 0,
10121 0, 0, 0, 0, 0, 0, 0, 0,
10122 0, 0, 0, 0, 0, 0, 0, 0,
10123 0, 0, 0, 0, 0, 0, 0, 0,
10124 0, 0, 0, 0, 0, 0, 0, 0,
10125 0, 0, 0, 0, 0, 0, 0, 0,
10126 0, 0, 0, 0, 0, 0, 0, 0,
10127 0, 0, 0, 0, 0, 0, 0, 0,
10128 0, 0, 0, 0, 0, 0, 0, 0,
10129 0, 0, 0, 0, 0, 0, 0, 0,
10130 0, 0, 0, 0, 0, 0, 0, 0,
10131 0, 0, 0, 0, 0, 0, 0, 0,
10132 0, 0, 0, 230, 230, 230, 230, 0,
10133 0, 0, 0, 0, 0, 0, 0, 0,
10134 0, 0, 0, 0, 0, 0, 0, 0,
10135 0, 0, 0, 0, 0, 0, 0, 0,
10136 0, 0, 0, 0, 0, 0, 0, 0,
10137 0, 0, 0, 0, 0, 0, 0, 0,
10138 0, 0, 0, 0, 0, 0, 0, 0,
10139 0, 0, 0, 0, 0, 0, 0, 0,
10140 0, 0, 0, 0, 0, 0, 0, 0,
10141 0, 0, 0, 0, 0, 0, 0, 0,
10142 0, 0, 0, 0, 0, 0, 0, 0,
10143 0, 0, 0, 0, 0, 0, 0, 0,
10144 0, 0, 0, 0, 0, 0, 0, 0,
10145 0, 0, 0, 0, 0, 0, 0, 0,
10146 0, 0, 0, 0, 0, 0, 0, 0,
10147 0, 0, 0, 0, 0, 0, 0, 0,
10148};
10149
10150static const Q_UINT8 cmb_05[] = {
10151 0, 0, 0, 0, 0, 0, 0, 0,
10152 0, 0, 0, 0, 0, 0, 0, 0,
10153 0, 0, 0, 0, 0, 0, 0, 0,
10154 0, 0, 0, 0, 0, 0, 0, 0,
10155 0, 0, 0, 0, 0, 0, 0, 0,
10156 0, 0, 0, 0, 0, 0, 0, 0,
10157 0, 0, 0, 0, 0, 0, 0, 0,
10158 0, 0, 0, 0, 0, 0, 0, 0,
10159 0, 0, 0, 0, 0, 0, 0, 0,
10160 0, 0, 0, 0, 0, 0, 0, 0,
10161 0, 0, 0, 0, 0, 0, 0, 0,
10162 0, 0, 0, 0, 0, 0, 0, 0,
10163 0, 0, 0, 0, 0, 0, 0, 0,
10164 0, 0, 0, 0, 0, 0, 0, 0,
10165 0, 0, 0, 0, 0, 0, 0, 0,
10166 0, 0, 0, 0, 0, 0, 0, 0,
10167 0, 0, 0, 0, 0, 0, 0, 0,
10168 0, 0, 0, 0, 0, 0, 0, 0,
10169 0, 220, 230, 230, 230, 230, 220, 230,
10170 230, 230, 222, 220, 230, 230, 230, 230,
10171 230, 230, 0, 220, 220, 220, 220, 220,
10172 230, 230, 220, 230, 230, 222, 228, 230,
10173 10, 11, 12, 13, 14, 15, 16, 17,
10174 18, 19, 0, 20, 21, 22, 0, 23,
10175 0, 24, 25, 0, 230, 0, 0, 0,
10176 0, 0, 0, 0, 0, 0, 0, 0,
10177 0, 0, 0, 0, 0, 0, 0, 0,
10178 0, 0, 0, 0, 0, 0, 0, 0,
10179 0, 0, 0, 0, 0, 0, 0, 0,
10180 0, 0, 0, 0, 0, 0, 0, 0,
10181 0, 0, 0, 0, 0, 0, 0, 0,
10182 0, 0, 0, 0, 0, 0, 0, 0,
10183};
10184
10185static const Q_UINT8 cmb_06[] = {
10186 0, 0, 0, 0, 0, 0, 0, 0,
10187 0, 0, 0, 0, 0, 0, 0, 0,
10188 0, 0, 0, 0, 0, 0, 0, 0,
10189 0, 0, 0, 0, 0, 0, 0, 0,
10190 0, 0, 0, 0, 0, 0, 0, 0,
10191 0, 0, 0, 0, 0, 0, 0, 0,
10192 0, 0, 0, 0, 0, 0, 0, 0,
10193 0, 0, 0, 0, 0, 0, 0, 0,
10194 0, 0, 0, 0, 0, 0, 0, 0,
10195 0, 0, 0, 27, 28, 29, 30, 31,
10196 32, 33, 34, 230, 230, 220, 0, 0,
10197 0, 0, 0, 0, 0, 0, 0, 0,
10198 0, 0, 0, 0, 0, 0, 0, 0,
10199 0, 0, 0, 0, 0, 0, 0, 0,
10200 35, 0, 0, 0, 0, 0, 0, 0,
10201 0, 0, 0, 0, 0, 0, 0, 0,
10202 0, 0, 0, 0, 0, 0, 0, 0,
10203 0, 0, 0, 0, 0, 0, 0, 0,
10204 0, 0, 0, 0, 0, 0, 0, 0,
10205 0, 0, 0, 0, 0, 0, 0, 0,
10206 0, 0, 0, 0, 0, 0, 0, 0,
10207 0, 0, 0, 0, 0, 0, 0, 0,
10208 0, 0, 0, 0, 0, 0, 0, 0,
10209 0, 0, 0, 0, 0, 0, 0, 0,
10210 0, 0, 0, 0, 0, 0, 0, 0,
10211 0, 0, 0, 0, 0, 0, 0, 0,
10212 0, 0, 0, 0, 0, 0, 230, 230,
10213 230, 230, 230, 230, 230, 0, 0, 230,
10214 230, 230, 230, 220, 230, 0, 0, 230,
10215 230, 0, 220, 230, 230, 220, 0, 0,
10216 0, 0, 0, 0, 0, 0, 0, 0,
10217 0, 0, 0, 0, 0, 0, 0, 0,
10218};
10219
10220static const Q_UINT8 cmb_07[] = {
10221 0, 0, 0, 0, 0, 0, 0, 0,
10222 0, 0, 0, 0, 0, 0, 0, 0,
10223 0, 36, 0, 0, 0, 0, 0, 0,
10224 0, 0, 0, 0, 0, 0, 0, 0,
10225 0, 0, 0, 0, 0, 0, 0, 0,
10226 0, 0, 0, 0, 0, 0, 0, 0,
10227 230, 220, 230, 230, 220, 230, 230, 220,
10228 220, 220, 230, 220, 220, 230, 220, 230,
10229 230, 230, 220, 230, 220, 230, 220, 230,
10230 220, 230, 230, 0, 0, 0, 0, 0,
10231 0, 0, 0, 0, 0, 0, 0, 0,
10232 0, 0, 0, 0, 0, 0, 0, 0,
10233 0, 0, 0, 0, 0, 0, 0, 0,
10234 0, 0, 0, 0, 0, 0, 0, 0,
10235 0, 0, 0, 0, 0, 0, 0, 0,
10236 0, 0, 0, 0, 0, 0, 0, 0,
10237 0, 0, 0, 0, 0, 0, 0, 0,
10238 0, 0, 0, 0, 0, 0, 0, 0,
10239 0, 0, 0, 0, 0, 0, 0, 0,
10240 0, 0, 0, 0, 0, 0, 0, 0,
10241 0, 0, 0, 0, 0, 0, 0, 0,
10242 0, 0, 0, 0, 0, 0, 0, 0,
10243 0, 0, 0, 0, 0, 0, 0, 0,
10244 0, 0, 0, 0, 0, 0, 0, 0,
10245 0, 0, 0, 0, 0, 0, 0, 0,
10246 0, 0, 0, 0, 0, 0, 0, 0,
10247 0, 0, 0, 0, 0, 0, 0, 0,
10248 0, 0, 0, 0, 0, 0, 0, 0,
10249 0, 0, 0, 0, 0, 0, 0, 0,
10250 0, 0, 0, 0, 0, 0, 0, 0,
10251 0, 0, 0, 0, 0, 0, 0, 0,
10252 0, 0, 0, 0, 0, 0, 0, 0,
10253};
10254
10255static const Q_UINT8 cmb_09[] = {
10256 0, 0, 0, 0, 0, 0, 0, 0,
10257 0, 0, 0, 0, 0, 0, 0, 0,
10258 0, 0, 0, 0, 0, 0, 0, 0,
10259 0, 0, 0, 0, 0, 0, 0, 0,
10260 0, 0, 0, 0, 0, 0, 0, 0,
10261 0, 0, 0, 0, 0, 0, 0, 0,
10262 0, 0, 0, 0, 0, 0, 0, 0,
10263 0, 0, 0, 0, 7, 0, 0, 0,
10264 0, 0, 0, 0, 0, 0, 0, 0,
10265 0, 0, 0, 0, 0, 9, 0, 0,
10266 0, 230, 220, 230, 230, 0, 0, 0,
10267 0, 0, 0, 0, 0, 0, 0, 0,
10268 0, 0, 0, 0, 0, 0, 0, 0,
10269 0, 0, 0, 0, 0, 0, 0, 0,
10270 0, 0, 0, 0, 0, 0, 0, 0,
10271 0, 0, 0, 0, 0, 0, 0, 0,
10272 0, 0, 0, 0, 0, 0, 0, 0,
10273 0, 0, 0, 0, 0, 0, 0, 0,
10274 0, 0, 0, 0, 0, 0, 0, 0,
10275 0, 0, 0, 0, 0, 0, 0, 0,
10276 0, 0, 0, 0, 0, 0, 0, 0,
10277 0, 0, 0, 0, 0, 0, 0, 0,
10278 0, 0, 0, 0, 0, 0, 0, 0,
10279 0, 0, 0, 0, 7, 0, 0, 0,
10280 0, 0, 0, 0, 0, 0, 0, 0,
10281 0, 0, 0, 0, 0, 9, 0, 0,
10282 0, 0, 0, 0, 0, 0, 0, 0,
10283 0, 0, 0, 0, 0, 0, 0, 0,
10284 0, 0, 0, 0, 0, 0, 0, 0,
10285 0, 0, 0, 0, 0, 0, 0, 0,
10286 0, 0, 0, 0, 0, 0, 0, 0,
10287 0, 0, 0, 0, 0, 0, 0, 0,
10288};
10289
10290static const Q_UINT8 cmb_0A[] = {
10291 0, 0, 0, 0, 0, 0, 0, 0,
10292 0, 0, 0, 0, 0, 0, 0, 0,
10293 0, 0, 0, 0, 0, 0, 0, 0,
10294 0, 0, 0, 0, 0, 0, 0, 0,
10295 0, 0, 0, 0, 0, 0, 0, 0,
10296 0, 0, 0, 0, 0, 0, 0, 0,
10297 0, 0, 0, 0, 0, 0, 0, 0,
10298 0, 0, 0, 0, 7, 0, 0, 0,
10299 0, 0, 0, 0, 0, 0, 0, 0,
10300 0, 0, 0, 0, 0, 9, 0, 0,
10301 0, 0, 0, 0, 0, 0, 0, 0,
10302 0, 0, 0, 0, 0, 0, 0, 0,
10303 0, 0, 0, 0, 0, 0, 0, 0,
10304 0, 0, 0, 0, 0, 0, 0, 0,
10305 0, 0, 0, 0, 0, 0, 0, 0,
10306 0, 0, 0, 0, 0, 0, 0, 0,
10307 0, 0, 0, 0, 0, 0, 0, 0,
10308 0, 0, 0, 0, 0, 0, 0, 0,
10309 0, 0, 0, 0, 0, 0, 0, 0,
10310 0, 0, 0, 0, 0, 0, 0, 0,
10311 0, 0, 0, 0, 0, 0, 0, 0,
10312 0, 0, 0, 0, 0, 0, 0, 0,
10313 0, 0, 0, 0, 0, 0, 0, 0,
10314 0, 0, 0, 0, 7, 0, 0, 0,
10315 0, 0, 0, 0, 0, 0, 0, 0,
10316 0, 0, 0, 0, 0, 9, 0, 0,
10317 0, 0, 0, 0, 0, 0, 0, 0,
10318 0, 0, 0, 0, 0, 0, 0, 0,
10319 0, 0, 0, 0, 0, 0, 0, 0,
10320 0, 0, 0, 0, 0, 0, 0, 0,
10321 0, 0, 0, 0, 0, 0, 0, 0,
10322 0, 0, 0, 0, 0, 0, 0, 0,
10323};
10324
10325static const Q_UINT8 cmb_0B[] = {
10326 0, 0, 0, 0, 0, 0, 0, 0,
10327 0, 0, 0, 0, 0, 0, 0, 0,
10328 0, 0, 0, 0, 0, 0, 0, 0,
10329 0, 0, 0, 0, 0, 0, 0, 0,
10330 0, 0, 0, 0, 0, 0, 0, 0,
10331 0, 0, 0, 0, 0, 0, 0, 0,
10332 0, 0, 0, 0, 0, 0, 0, 0,
10333 0, 0, 0, 0, 7, 0, 0, 0,
10334 0, 0, 0, 0, 0, 0, 0, 0,
10335 0, 0, 0, 0, 0, 9, 0, 0,
10336 0, 0, 0, 0, 0, 0, 0, 0,
10337 0, 0, 0, 0, 0, 0, 0, 0,
10338 0, 0, 0, 0, 0, 0, 0, 0,
10339 0, 0, 0, 0, 0, 0, 0, 0,
10340 0, 0, 0, 0, 0, 0, 0, 0,
10341 0, 0, 0, 0, 0, 0, 0, 0,
10342 0, 0, 0, 0, 0, 0, 0, 0,
10343 0, 0, 0, 0, 0, 0, 0, 0,
10344 0, 0, 0, 0, 0, 0, 0, 0,
10345 0, 0, 0, 0, 0, 0, 0, 0,
10346 0, 0, 0, 0, 0, 0, 0, 0,
10347 0, 0, 0, 0, 0, 0, 0, 0,
10348 0, 0, 0, 0, 0, 0, 0, 0,
10349 0, 0, 0, 0, 0, 0, 0, 0,
10350 0, 0, 0, 0, 0, 0, 0, 0,
10351 0, 0, 0, 0, 0, 9, 0, 0,
10352 0, 0, 0, 0, 0, 0, 0, 0,
10353 0, 0, 0, 0, 0, 0, 0, 0,
10354 0, 0, 0, 0, 0, 0, 0, 0,
10355 0, 0, 0, 0, 0, 0, 0, 0,
10356 0, 0, 0, 0, 0, 0, 0, 0,
10357 0, 0, 0, 0, 0, 0, 0, 0,
10358};
10359
10360static const Q_UINT8 cmb_0C[] = {
10361 0, 0, 0, 0, 0, 0, 0, 0,
10362 0, 0, 0, 0, 0, 0, 0, 0,
10363 0, 0, 0, 0, 0, 0, 0, 0,
10364 0, 0, 0, 0, 0, 0, 0, 0,
10365 0, 0, 0, 0, 0, 0, 0, 0,
10366 0, 0, 0, 0, 0, 0, 0, 0,
10367 0, 0, 0, 0, 0, 0, 0, 0,
10368 0, 0, 0, 0, 0, 0, 0, 0,
10369 0, 0, 0, 0, 0, 0, 0, 0,
10370 0, 0, 0, 0, 0, 9, 0, 0,
10371 0, 0, 0, 0, 0, 84, 91, 0,
10372 0, 0, 0, 0, 0, 0, 0, 0,
10373 0, 0, 0, 0, 0, 0, 0, 0,
10374 0, 0, 0, 0, 0, 0, 0, 0,
10375 0, 0, 0, 0, 0, 0, 0, 0,
10376 0, 0, 0, 0, 0, 0, 0, 0,
10377 0, 0, 0, 0, 0, 0, 0, 0,
10378 0, 0, 0, 0, 0, 0, 0, 0,
10379 0, 0, 0, 0, 0, 0, 0, 0,
10380 0, 0, 0, 0, 0, 0, 0, 0,
10381 0, 0, 0, 0, 0, 0, 0, 0,
10382 0, 0, 0, 0, 0, 0, 0, 0,
10383 0, 0, 0, 0, 0, 0, 0, 0,
10384 0, 0, 0, 0, 0, 0, 0, 0,
10385 0, 0, 0, 0, 0, 0, 0, 0,
10386 0, 0, 0, 0, 0, 9, 0, 0,
10387 0, 0, 0, 0, 0, 0, 0, 0,
10388 0, 0, 0, 0, 0, 0, 0, 0,
10389 0, 0, 0, 0, 0, 0, 0, 0,
10390 0, 0, 0, 0, 0, 0, 0, 0,
10391 0, 0, 0, 0, 0, 0, 0, 0,
10392 0, 0, 0, 0, 0, 0, 0, 0,
10393};
10394
10395static const Q_UINT8 cmb_0D[] = {
10396 0, 0, 0, 0, 0, 0, 0, 0,
10397 0, 0, 0, 0, 0, 0, 0, 0,
10398 0, 0, 0, 0, 0, 0, 0, 0,
10399 0, 0, 0, 0, 0, 0, 0, 0,
10400 0, 0, 0, 0, 0, 0, 0, 0,
10401 0, 0, 0, 0, 0, 0, 0, 0,
10402 0, 0, 0, 0, 0, 0, 0, 0,
10403 0, 0, 0, 0, 0, 0, 0, 0,
10404 0, 0, 0, 0, 0, 0, 0, 0,
10405 0, 0, 0, 0, 0, 9, 0, 0,
10406 0, 0, 0, 0, 0, 0, 0, 0,
10407 0, 0, 0, 0, 0, 0, 0, 0,
10408 0, 0, 0, 0, 0, 0, 0, 0,
10409 0, 0, 0, 0, 0, 0, 0, 0,
10410 0, 0, 0, 0, 0, 0, 0, 0,
10411 0, 0, 0, 0, 0, 0, 0, 0,
10412 0, 0, 0, 0, 0, 0, 0, 0,
10413 0, 0, 0, 0, 0, 0, 0, 0,
10414 0, 0, 0, 0, 0, 0, 0, 0,
10415 0, 0, 0, 0, 0, 0, 0, 0,
10416 0, 0, 0, 0, 0, 0, 0, 0,
10417 0, 0, 0, 0, 0, 0, 0, 0,
10418 0, 0, 0, 0, 0, 0, 0, 0,
10419 0, 0, 0, 0, 0, 0, 0, 0,
10420 0, 0, 0, 0, 0, 0, 0, 0,
10421 0, 0, 9, 0, 0, 0, 0, 0,
10422 0, 0, 0, 0, 0, 0, 0, 0,
10423 0, 0, 0, 0, 0, 0, 0, 0,
10424 0, 0, 0, 0, 0, 0, 0, 0,
10425 0, 0, 0, 0, 0, 0, 0, 0,
10426 0, 0, 0, 0, 0, 0, 0, 0,
10427 0, 0, 0, 0, 0, 0, 0, 0,
10428};
10429
10430static const Q_UINT8 cmb_0E[] = {
10431 0, 0, 0, 0, 0, 0, 0, 0,
10432 0, 0, 0, 0, 0, 0, 0, 0,
10433 0, 0, 0, 0, 0, 0, 0, 0,
10434 0, 0, 0, 0, 0, 0, 0, 0,
10435 0, 0, 0, 0, 0, 0, 0, 0,
10436 0, 0, 0, 0, 0, 0, 0, 0,
10437 0, 0, 0, 0, 0, 0, 0, 0,
10438 103, 103, 9, 0, 0, 0, 0, 0,
10439 0, 0, 0, 0, 0, 0, 0, 0,
10440 107, 107, 107, 107, 0, 0, 0, 0,
10441 0, 0, 0, 0, 0, 0, 0, 0,
10442 0, 0, 0, 0, 0, 0, 0, 0,
10443 0, 0, 0, 0, 0, 0, 0, 0,
10444 0, 0, 0, 0, 0, 0, 0, 0,
10445 0, 0, 0, 0, 0, 0, 0, 0,
10446 0, 0, 0, 0, 0, 0, 0, 0,
10447 0, 0, 0, 0, 0, 0, 0, 0,
10448 0, 0, 0, 0, 0, 0, 0, 0,
10449 0, 0, 0, 0, 0, 0, 0, 0,
10450 0, 0, 0, 0, 0, 0, 0, 0,
10451 0, 0, 0, 0, 0, 0, 0, 0,
10452 0, 0, 0, 0, 0, 0, 0, 0,
10453 0, 0, 0, 0, 0, 0, 0, 0,
10454 118, 118, 0, 0, 0, 0, 0, 0,
10455 0, 0, 0, 0, 0, 0, 0, 0,
10456 122, 122, 122, 122, 0, 0, 0, 0,
10457 0, 0, 0, 0, 0, 0, 0, 0,
10458 0, 0, 0, 0, 0, 0, 0, 0,
10459 0, 0, 0, 0, 0, 0, 0, 0,
10460 0, 0, 0, 0, 0, 0, 0, 0,
10461 0, 0, 0, 0, 0, 0, 0, 0,
10462 0, 0, 0, 0, 0, 0, 0, 0,
10463};
10464
10465static const Q_UINT8 cmb_0F[] = {
10466 0, 0, 0, 0, 0, 0, 0, 0,
10467 0, 0, 0, 0, 0, 0, 0, 0,
10468 0, 0, 0, 0, 0, 0, 0, 0,
10469 220, 220, 0, 0, 0, 0, 0, 0,
10470 0, 0, 0, 0, 0, 0, 0, 0,
10471 0, 0, 0, 0, 0, 0, 0, 0,
10472 0, 0, 0, 0, 0, 220, 0, 220,
10473 0, 216, 0, 0, 0, 0, 0, 0,
10474 0, 0, 0, 0, 0, 0, 0, 0,
10475 0, 0, 0, 0, 0, 0, 0, 0,
10476 0, 0, 0, 0, 0, 0, 0, 0,
10477 0, 0, 0, 0, 0, 0, 0, 0,
10478 0, 0, 0, 0, 0, 0, 0, 0,
10479 0, 0, 0, 0, 0, 0, 0, 0,
10480 0, 129, 130, 0, 132, 0, 0, 0,
10481 0, 0, 130, 130, 130, 130, 0, 0,
10482 130, 0, 230, 230, 9, 0, 230, 230,
10483 0, 0, 0, 0, 0, 0, 0, 0,
10484 0, 0, 0, 0, 0, 0, 0, 0,
10485 0, 0, 0, 0, 0, 0, 0, 0,
10486 0, 0, 0, 0, 0, 0, 0, 0,
10487 0, 0, 0, 0, 0, 0, 0, 0,
10488 0, 0, 0, 0, 0, 0, 0, 0,
10489 0, 0, 0, 0, 0, 0, 0, 0,
10490 0, 0, 0, 0, 0, 0, 220, 0,
10491 0, 0, 0, 0, 0, 0, 0, 0,
10492 0, 0, 0, 0, 0, 0, 0, 0,
10493 0, 0, 0, 0, 0, 0, 0, 0,
10494 0, 0, 0, 0, 0, 0, 0, 0,
10495 0, 0, 0, 0, 0, 0, 0, 0,
10496 0, 0, 0, 0, 0, 0, 0, 0,
10497 0, 0, 0, 0, 0, 0, 0, 0,
10498};
10499
10500static const Q_UINT8 cmb_10[] = {
10501 0, 0, 0, 0, 0, 0, 0, 0,
10502 0, 0, 0, 0, 0, 0, 0, 0,
10503 0, 0, 0, 0, 0, 0, 0, 0,
10504 0, 0, 0, 0, 0, 0, 0, 0,
10505 0, 0, 0, 0, 0, 0, 0, 0,
10506 0, 0, 0, 0, 0, 0, 0, 0,
10507 0, 0, 0, 0, 0, 0, 0, 7,
10508 0, 9, 0, 0, 0, 0, 0, 0,
10509 0, 0, 0, 0, 0, 0, 0, 0,
10510 0, 0, 0, 0, 0, 0, 0, 0,
10511 0, 0, 0, 0, 0, 0, 0, 0,
10512 0, 0, 0, 0, 0, 0, 0, 0,
10513 0, 0, 0, 0, 0, 0, 0, 0,
10514 0, 0, 0, 0, 0, 0, 0, 0,
10515 0, 0, 0, 0, 0, 0, 0, 0,
10516 0, 0, 0, 0, 0, 0, 0, 0,
10517 0, 0, 0, 0, 0, 0, 0, 0,
10518 0, 0, 0, 0, 0, 0, 0, 0,
10519 0, 0, 0, 0, 0, 0, 0, 0,
10520 0, 0, 0, 0, 0, 0, 0, 0,
10521 0, 0, 0, 0, 0, 0, 0, 0,
10522 0, 0, 0, 0, 0, 0, 0, 0,
10523 0, 0, 0, 0, 0, 0, 0, 0,
10524 0, 0, 0, 0, 0, 0, 0, 0,
10525 0, 0, 0, 0, 0, 0, 0, 0,
10526 0, 0, 0, 0, 0, 0, 0, 0,
10527 0, 0, 0, 0, 0, 0, 0, 0,
10528 0, 0, 0, 0, 0, 0, 0, 0,
10529 0, 0, 0, 0, 0, 0, 0, 0,
10530 0, 0, 0, 0, 0, 0, 0, 0,
10531 0, 0, 0, 0, 0, 0, 0, 0,
10532 0, 0, 0, 0, 0, 0, 0, 0,
10533};
10534
10535static const Q_UINT8 cmb_17[] = {
10536 0, 0, 0, 0, 0, 0, 0, 0,
10537 0, 0, 0, 0, 0, 0, 0, 0,
10538 0, 0, 0, 0, 9, 0, 0, 0,
10539 0, 0, 0, 0, 0, 0, 0, 0,
10540 0, 0, 0, 0, 0, 0, 0, 0,
10541 0, 0, 0, 0, 0, 0, 0, 0,
10542 0, 0, 0, 0, 9, 0, 0, 0,
10543 0, 0, 0, 0, 0, 0, 0, 0,
10544 0, 0, 0, 0, 0, 0, 0, 0,
10545 0, 0, 0, 0, 0, 0, 0, 0,
10546 0, 0, 0, 0, 0, 0, 0, 0,
10547 0, 0, 0, 0, 0, 0, 0, 0,
10548 0, 0, 0, 0, 0, 0, 0, 0,
10549 0, 0, 0, 0, 0, 0, 0, 0,
10550 0, 0, 0, 0, 0, 0, 0, 0,
10551 0, 0, 0, 0, 0, 0, 0, 0,
10552 0, 0, 0, 0, 0, 0, 0, 0,
10553 0, 0, 0, 0, 0, 0, 0, 0,
10554 0, 0, 0, 0, 0, 0, 0, 0,
10555 0, 0, 0, 0, 0, 0, 0, 0,
10556 0, 0, 0, 0, 0, 0, 0, 0,
10557 0, 0, 0, 0, 0, 0, 0, 0,
10558 0, 0, 0, 0, 0, 0, 0, 0,
10559 0, 0, 0, 0, 0, 0, 0, 0,
10560 0, 0, 0, 0, 0, 0, 0, 0,
10561 0, 0, 0, 0, 0, 0, 0, 0,
10562 0, 0, 9, 0, 0, 0, 0, 0,
10563 0, 0, 0, 0, 0, 0, 0, 0,
10564 0, 0, 0, 0, 0, 0, 0, 0,
10565 0, 0, 0, 0, 0, 0, 0, 0,
10566 0, 0, 0, 0, 0, 0, 0, 0,
10567 0, 0, 0, 0, 0, 0, 0, 0,
10568};
10569
10570static const Q_UINT8 cmb_18[] = {
10571 0, 0, 0, 0, 0, 0, 0, 0,
10572 0, 0, 0, 0, 0, 0, 0, 0,
10573 0, 0, 0, 0, 0, 0, 0, 0,
10574 0, 0, 0, 0, 0, 0, 0, 0,
10575 0, 0, 0, 0, 0, 0, 0, 0,
10576 0, 0, 0, 0, 0, 0, 0, 0,
10577 0, 0, 0, 0, 0, 0, 0, 0,
10578 0, 0, 0, 0, 0, 0, 0, 0,
10579 0, 0, 0, 0, 0, 0, 0, 0,
10580 0, 0, 0, 0, 0, 0, 0, 0,
10581 0, 0, 0, 0, 0, 0, 0, 0,
10582 0, 0, 0, 0, 0, 0, 0, 0,
10583 0, 0, 0, 0, 0, 0, 0, 0,
10584 0, 0, 0, 0, 0, 0, 0, 0,
10585 0, 0, 0, 0, 0, 0, 0, 0,
10586 0, 0, 0, 0, 0, 0, 0, 0,
10587 0, 0, 0, 0, 0, 0, 0, 0,
10588 0, 0, 0, 0, 0, 0, 0, 0,
10589 0, 0, 0, 0, 0, 0, 0, 0,
10590 0, 0, 0, 0, 0, 0, 0, 0,
10591 0, 0, 0, 0, 0, 0, 0, 0,
10592 0, 228, 0, 0, 0, 0, 0, 0,
10593 0, 0, 0, 0, 0, 0, 0, 0,
10594 0, 0, 0, 0, 0, 0, 0, 0,
10595 0, 0, 0, 0, 0, 0, 0, 0,
10596 0, 0, 0, 0, 0, 0, 0, 0,
10597 0, 0, 0, 0, 0, 0, 0, 0,
10598 0, 0, 0, 0, 0, 0, 0, 0,
10599 0, 0, 0, 0, 0, 0, 0, 0,
10600 0, 0, 0, 0, 0, 0, 0, 0,
10601 0, 0, 0, 0, 0, 0, 0, 0,
10602 0, 0, 0, 0, 0, 0, 0, 0,
10603};
10604
10605static const Q_UINT8 cmb_20[] = {
10606 0, 0, 0, 0, 0, 0, 0, 0,
10607 0, 0, 0, 0, 0, 0, 0, 0,
10608 0, 0, 0, 0, 0, 0, 0, 0,
10609 0, 0, 0, 0, 0, 0, 0, 0,
10610 0, 0, 0, 0, 0, 0, 0, 0,
10611 0, 0, 0, 0, 0, 0, 0, 0,
10612 0, 0, 0, 0, 0, 0, 0, 0,
10613 0, 0, 0, 0, 0, 0, 0, 0,
10614 0, 0, 0, 0, 0, 0, 0, 0,
10615 0, 0, 0, 0, 0, 0, 0, 0,
10616 0, 0, 0, 0, 0, 0, 0, 0,
10617 0, 0, 0, 0, 0, 0, 0, 0,
10618 0, 0, 0, 0, 0, 0, 0, 0,
10619 0, 0, 0, 0, 0, 0, 0, 0,
10620 0, 0, 0, 0, 0, 0, 0, 0,
10621 0, 0, 0, 0, 0, 0, 0, 0,
10622 0, 0, 0, 0, 0, 0, 0, 0,
10623 0, 0, 0, 0, 0, 0, 0, 0,
10624 0, 0, 0, 0, 0, 0, 0, 0,
10625 0, 0, 0, 0, 0, 0, 0, 0,
10626 0, 0, 0, 0, 0, 0, 0, 0,
10627 0, 0, 0, 0, 0, 0, 0, 0,
10628 0, 0, 0, 0, 0, 0, 0, 0,
10629 0, 0, 0, 0, 0, 0, 0, 0,
10630 0, 0, 0, 0, 0, 0, 0, 0,
10631 0, 0, 0, 0, 0, 0, 0, 0,
10632 230, 230, 1, 1, 230, 230, 230, 230,
10633 1, 1, 1, 230, 230, 0, 0, 0,
10634 0, 230, 0, 0, 0, 1, 1, 230,
10635 220, 230, 1, 0, 0, 0, 0, 0,
10636 0, 0, 0, 0, 0, 0, 0, 0,
10637 0, 0, 0, 0, 0, 0, 0, 0,
10638};
10639
10640static const Q_UINT8 cmb_30[] = {
10641 0, 0, 0, 0, 0, 0, 0, 0,
10642 0, 0, 0, 0, 0, 0, 0, 0,
10643 0, 0, 0, 0, 0, 0, 0, 0,
10644 0, 0, 0, 0, 0, 0, 0, 0,
10645 0, 0, 0, 0, 0, 0, 0, 0,
10646 0, 0, 218, 228, 232, 222, 224, 224,
10647 0, 0, 0, 0, 0, 0, 0, 0,
10648 0, 0, 0, 0, 0, 0, 0, 0,
10649 0, 0, 0, 0, 0, 0, 0, 0,
10650 0, 0, 0, 0, 0, 0, 0, 0,
10651 0, 0, 0, 0, 0, 0, 0, 0,
10652 0, 0, 0, 0, 0, 0, 0, 0,
10653 0, 0, 0, 0, 0, 0, 0, 0,
10654 0, 0, 0, 0, 0, 0, 0, 0,
10655 0, 0, 0, 0, 0, 0, 0, 0,
10656 0, 0, 0, 0, 0, 0, 0, 0,
10657 0, 0, 0, 0, 0, 0, 0, 0,
10658 0, 0, 0, 0, 0, 0, 0, 0,
10659 0, 0, 0, 0, 0, 0, 0, 0,
10660 0, 8, 8, 0, 0, 0, 0, 0,
10661 0, 0, 0, 0, 0, 0, 0, 0,
10662 0, 0, 0, 0, 0, 0, 0, 0,
10663 0, 0, 0, 0, 0, 0, 0, 0,
10664 0, 0, 0, 0, 0, 0, 0, 0,
10665 0, 0, 0, 0, 0, 0, 0, 0,
10666 0, 0, 0, 0, 0, 0, 0, 0,
10667 0, 0, 0, 0, 0, 0, 0, 0,
10668 0, 0, 0, 0, 0, 0, 0, 0,
10669 0, 0, 0, 0, 0, 0, 0, 0,
10670 0, 0, 0, 0, 0, 0, 0, 0,
10671 0, 0, 0, 0, 0, 0, 0, 0,
10672 0, 0, 0, 0, 0, 0, 0, 0,
10673};
10674
10675static const Q_UINT8 cmb_FB[] = {
10676 0, 0, 0, 0, 0, 0, 0, 0,
10677 0, 0, 0, 0, 0, 0, 0, 0,
10678 0, 0, 0, 0, 0, 0, 0, 0,
10679 0, 0, 0, 0, 0, 0, 26, 0,
10680 0, 0, 0, 0, 0, 0, 0, 0,
10681 0, 0, 0, 0, 0, 0, 0, 0,
10682 0, 0, 0, 0, 0, 0, 0, 0,
10683 0, 0, 0, 0, 0, 0, 0, 0,
10684 0, 0, 0, 0, 0, 0, 0, 0,
10685 0, 0, 0, 0, 0, 0, 0, 0,
10686 0, 0, 0, 0, 0, 0, 0, 0,
10687 0, 0, 0, 0, 0, 0, 0, 0,
10688 0, 0, 0, 0, 0, 0, 0, 0,
10689 0, 0, 0, 0, 0, 0, 0, 0,
10690 0, 0, 0, 0, 0, 0, 0, 0,
10691 0, 0, 0, 0, 0, 0, 0, 0,
10692 0, 0, 0, 0, 0, 0, 0, 0,
10693 0, 0, 0, 0, 0, 0, 0, 0,
10694 0, 0, 0, 0, 0, 0, 0, 0,
10695 0, 0, 0, 0, 0, 0, 0, 0,
10696 0, 0, 0, 0, 0, 0, 0, 0,
10697 0, 0, 0, 0, 0, 0, 0, 0,
10698 0, 0, 0, 0, 0, 0, 0, 0,
10699 0, 0, 0, 0, 0, 0, 0, 0,
10700 0, 0, 0, 0, 0, 0, 0, 0,
10701 0, 0, 0, 0, 0, 0, 0, 0,
10702 0, 0, 0, 0, 0, 0, 0, 0,
10703 0, 0, 0, 0, 0, 0, 0, 0,
10704 0, 0, 0, 0, 0, 0, 0, 0,
10705 0, 0, 0, 0, 0, 0, 0, 0,
10706 0, 0, 0, 0, 0, 0, 0, 0,
10707 0, 0, 0, 0, 0, 0, 0, 0,
10708};
10709
10710static const Q_UINT8 cmb_FE[] = {
10711 0, 0, 0, 0, 0, 0, 0, 0,
10712 0, 0, 0, 0, 0, 0, 0, 0,
10713 0, 0, 0, 0, 0, 0, 0, 0,
10714 0, 0, 0, 0, 0, 0, 0, 0,
10715 230, 230, 230, 230, 0, 0, 0, 0,
10716 0, 0, 0, 0, 0, 0, 0, 0,
10717 0, 0, 0, 0, 0, 0, 0, 0,
10718 0, 0, 0, 0, 0, 0, 0, 0,
10719 0, 0, 0, 0, 0, 0, 0, 0,
10720 0, 0, 0, 0, 0, 0, 0, 0,
10721 0, 0, 0, 0, 0, 0, 0, 0,
10722 0, 0, 0, 0, 0, 0, 0, 0,
10723 0, 0, 0, 0, 0, 0, 0, 0,
10724 0, 0, 0, 0, 0, 0, 0, 0,
10725 0, 0, 0, 0, 0, 0, 0, 0,
10726 0, 0, 0, 0, 0, 0, 0, 0,
10727 0, 0, 0, 0, 0, 0, 0, 0,
10728 0, 0, 0, 0, 0, 0, 0, 0,
10729 0, 0, 0, 0, 0, 0, 0, 0,
10730 0, 0, 0, 0, 0, 0, 0, 0,
10731 0, 0, 0, 0, 0, 0, 0, 0,
10732 0, 0, 0, 0, 0, 0, 0, 0,
10733 0, 0, 0, 0, 0, 0, 0, 0,
10734 0, 0, 0, 0, 0, 0, 0, 0,
10735 0, 0, 0, 0, 0, 0, 0, 0,
10736 0, 0, 0, 0, 0, 0, 0, 0,
10737 0, 0, 0, 0, 0, 0, 0, 0,
10738 0, 0, 0, 0, 0, 0, 0, 0,
10739 0, 0, 0, 0, 0, 0, 0, 0,
10740 0, 0, 0, 0, 0, 0, 0, 0,
10741 0, 0, 0, 0, 0, 0, 0, 0,
10742 0, 0, 0, 0, 0, 0, 0, 0,
10743};
10744
10745static const Q_UINT8 * const combining_info[256] = {
10746 cmb_00, cmb_00, cmb_00, cmb_03, cmb_04, cmb_05, cmb_06, cmb_07,
10747 cmb_00, cmb_09, cmb_0A, cmb_0B, cmb_0C, cmb_0D, cmb_0E, cmb_0F,
10748 cmb_10, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_17,
10749 cmb_18, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10750 cmb_20, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10751 cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10752 cmb_30, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10753 cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10754 cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10755 cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10756 cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10757 cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10758 cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10759 cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10760 cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10761 cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10762 cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10763 cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10764 cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10765 cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10766 cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10767 cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10768 cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10769 cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10770 cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10771 cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10772 cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10773 cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10774 cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10775 cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10776 cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00, cmb_00,
10777 cmb_00, cmb_00, cmb_00, cmb_FB, cmb_00, cmb_00, cmb_FE, cmb_00,
10778};
10779// 32506 bytes
10780
10781static const Q_UINT16 case_00[] = {
10782 0, 0, 0, 0, 0, 0, 0, 0,
10783 0, 0, 0, 0, 0, 0, 0, 0,
10784 0, 0, 0, 0, 0, 0, 0, 0,
10785 0, 0, 0, 0, 0, 0, 0, 0,
10786 0, 0, 0, 0, 0, 0, 0, 0,
10787 0, 0, 0, 0, 0, 0, 0, 0,
10788 0, 0, 0, 0, 0, 0, 0, 0,
10789 0, 0, 0, 0, 0, 0, 0, 0,
10790 0, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
10791 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
10792 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
10793 0x78, 0x79, 0x7a, 0, 0, 0, 0, 0,
10794 0, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
10795 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
10796 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
10797 0x58, 0x59, 0x5a, 0, 0, 0, 0, 0,
10798 0, 0, 0, 0, 0, 0, 0, 0,
10799 0, 0, 0, 0, 0, 0, 0, 0,
10800 0, 0, 0, 0, 0, 0, 0, 0,
10801 0, 0, 0, 0, 0, 0, 0, 0,
10802 0, 0, 0, 0, 0, 0, 0, 0,
10803 0, 0, 0, 0, 0, 0, 0, 0,
10804 0, 0, 0, 0, 0, 0x39c, 0, 0,
10805 0, 0, 0, 0, 0, 0, 0, 0,
10806 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
10807 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
10808 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0,
10809 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0,
10810 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
10811 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
10812 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0,
10813 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0x178,
10814};
10815
10816static const Q_UINT16 case_01[] = {
10817 0x101, 0x100, 0x103, 0x102, 0x105, 0x104, 0x107, 0x106,
10818 0x109, 0x108, 0x10b, 0x10a, 0x10d, 0x10c, 0x10f, 0x10e,
10819 0x111, 0x110, 0x113, 0x112, 0x115, 0x114, 0x117, 0x116,
10820 0x119, 0x118, 0x11b, 0x11a, 0x11d, 0x11c, 0x11f, 0x11e,
10821 0x121, 0x120, 0x123, 0x122, 0x125, 0x124, 0x127, 0x126,
10822 0x129, 0x128, 0x12b, 0x12a, 0x12d, 0x12c, 0x12f, 0x12e,
10823 0x69, 0x49, 0x133, 0x132, 0x135, 0x134, 0x137, 0x136,
10824 0, 0x13a, 0x139, 0x13c, 0x13b, 0x13e, 0x13d, 0x140,
10825 0x13f, 0x142, 0x141, 0x144, 0x143, 0x146, 0x145, 0x148,
10826 0x147, 0, 0x14b, 0x14a, 0x14d, 0x14c, 0x14f, 0x14e,
10827 0x151, 0x150, 0x153, 0x152, 0x155, 0x154, 0x157, 0x156,
10828 0x159, 0x158, 0x15b, 0x15a, 0x15d, 0x15c, 0x15f, 0x15e,
10829 0x161, 0x160, 0x163, 0x162, 0x165, 0x164, 0x167, 0x166,
10830 0x169, 0x168, 0x16b, 0x16a, 0x16d, 0x16c, 0x16f, 0x16e,
10831 0x171, 0x170, 0x173, 0x172, 0x175, 0x174, 0x177, 0x176,
10832 0xff, 0x17a, 0x179, 0x17c, 0x17b, 0x17e, 0x17d, 0x53,
10833 0, 0x253, 0x183, 0x182, 0x185, 0x184, 0x254, 0x188,
10834 0x187, 0x256, 0x257, 0x18c, 0x18b, 0, 0x1dd, 0x259,
10835 0x25b, 0x192, 0x191, 0x260, 0x263, 0x1f6, 0x269, 0x268,
10836 0x199, 0x198, 0, 0, 0x26f, 0x272, 0x220, 0x275,
10837 0x1a1, 0x1a0, 0x1a3, 0x1a2, 0x1a5, 0x1a4, 0x280, 0x1a8,
10838 0x1a7, 0x283, 0, 0, 0x1ad, 0x1ac, 0x288, 0x1b0,
10839 0x1af, 0x28a, 0x28b, 0x1b4, 0x1b3, 0x1b6, 0x1b5, 0x292,
10840 0x1b9, 0x1b8, 0, 0, 0x1bd, 0x1bc, 0, 0x1f7,
10841 0, 0, 0, 0, 0x1c6, 0x1c4, 0x1c4, 0x1c9,
10842 0x1c7, 0x1c7, 0x1cc, 0x1ca, 0x1ca, 0x1ce, 0x1cd, 0x1d0,
10843 0x1cf, 0x1d2, 0x1d1, 0x1d4, 0x1d3, 0x1d6, 0x1d5, 0x1d8,
10844 0x1d7, 0x1da, 0x1d9, 0x1dc, 0x1db, 0x18e, 0x1df, 0x1de,
10845 0x1e1, 0x1e0, 0x1e3, 0x1e2, 0x1e5, 0x1e4, 0x1e7, 0x1e6,
10846 0x1e9, 0x1e8, 0x1eb, 0x1ea, 0x1ed, 0x1ec, 0x1ef, 0x1ee,
10847 0, 0x1f3, 0x1f1, 0x1f1, 0x1f5, 0x1f4, 0x195, 0x1bf,
10848 0x1f9, 0x1f8, 0x1fb, 0x1fa, 0x1fd, 0x1fc, 0x1ff, 0x1fe,
10849};
10850
10851static const Q_UINT16 case_02[] = {
10852 0x201, 0x200, 0x203, 0x202, 0x205, 0x204, 0x207, 0x206,
10853 0x209, 0x208, 0x20b, 0x20a, 0x20d, 0x20c, 0x20f, 0x20e,
10854 0x211, 0x210, 0x213, 0x212, 0x215, 0x214, 0x217, 0x216,
10855 0x219, 0x218, 0x21b, 0x21a, 0x21d, 0x21c, 0x21f, 0x21e,
10856 0x19e, 0, 0x223, 0x222, 0x225, 0x224, 0x227, 0x226,
10857 0x229, 0x228, 0x22b, 0x22a, 0x22d, 0x22c, 0x22f, 0x22e,
10858 0x231, 0x230, 0x233, 0x232, 0, 0, 0, 0,
10859 0, 0, 0, 0, 0, 0, 0, 0,
10860 0, 0, 0, 0, 0, 0, 0, 0,
10861 0, 0, 0, 0, 0, 0, 0, 0,
10862 0, 0, 0, 0x181, 0x186, 0, 0x189, 0x18a,
10863 0, 0x18f, 0, 0x190, 0, 0, 0, 0,
10864 0x193, 0, 0, 0x194, 0, 0, 0, 0,
10865 0x197, 0x196, 0, 0, 0, 0, 0, 0x19c,
10866 0, 0, 0x19d, 0, 0, 0x19f, 0, 0,
10867 0, 0, 0, 0, 0, 0, 0, 0,
10868 0x1a6, 0, 0, 0x1a9, 0, 0, 0, 0,
10869 0x1ae, 0, 0x1b1, 0x1b2, 0, 0, 0, 0,
10870 0, 0, 0x1b7, 0, 0, 0, 0, 0,
10871 0, 0, 0, 0, 0, 0, 0, 0,
10872 0, 0, 0, 0, 0, 0, 0, 0,
10873 0, 0, 0, 0, 0, 0, 0, 0,
10874 0, 0, 0, 0, 0, 0, 0, 0,
10875 0, 0, 0, 0, 0, 0, 0, 0,
10876 0, 0, 0, 0, 0, 0, 0, 0,
10877 0, 0, 0, 0, 0, 0, 0, 0,
10878 0, 0, 0, 0, 0, 0, 0, 0,
10879 0, 0, 0, 0, 0, 0, 0, 0,
10880 0, 0, 0, 0, 0, 0, 0, 0,
10881 0, 0, 0, 0, 0, 0, 0, 0,
10882 0, 0, 0, 0, 0, 0, 0, 0,
10883 0, 0, 0, 0, 0, 0, 0, 0,
10884};
10885
10886static const Q_UINT16 case_03[] = {
10887 0, 0, 0, 0, 0, 0, 0, 0,
10888 0, 0, 0, 0, 0, 0, 0, 0,
10889 0, 0, 0, 0, 0, 0, 0, 0,
10890 0, 0, 0, 0, 0, 0, 0, 0,
10891 0, 0, 0, 0, 0, 0, 0, 0,
10892 0, 0, 0, 0, 0, 0, 0, 0,
10893 0, 0, 0, 0, 0, 0, 0, 0,
10894 0, 0, 0, 0, 0, 0, 0, 0,
10895 0, 0, 0, 0, 0, 0x399, 0, 0,
10896 0, 0, 0, 0, 0, 0, 0, 0,
10897 0, 0, 0, 0, 0, 0, 0, 0,
10898 0, 0, 0, 0, 0, 0, 0, 0,
10899 0, 0, 0, 0, 0, 0, 0, 0,
10900 0, 0, 0, 0, 0, 0, 0, 0,
10901 0, 0, 0, 0, 0, 0, 0, 0,
10902 0, 0, 0, 0, 0, 0, 0, 0,
10903 0, 0, 0, 0, 0, 0, 0x3ac, 0,
10904 0x3ad, 0x3ae, 0x3af, 0, 0x3cc, 0, 0x3cd, 0x3ce,
10905 0, 0x3b1, 0x3b2, 0x3b3, 0x3b4, 0x3b5, 0x3b6, 0x3b7,
10906 0x3b8, 0x3b9, 0x3ba, 0x3bb, 0x3bc, 0x3bd, 0x3be, 0x3bf,
10907 0x3c0, 0x3c1, 0, 0x3c3, 0x3c4, 0x3c5, 0x3c6, 0x3c7,
10908 0x3c8, 0x3c9, 0x3ca, 0x3cb, 0x386, 0x388, 0x389, 0x38a,
10909 0, 0x391, 0x392, 0x393, 0x394, 0x395, 0x396, 0x397,
10910 0x398, 0x399, 0x39a, 0x39b, 0x39c, 0x39d, 0x39e, 0x39f,
10911 0x3a0, 0x3a1, 0x3a3, 0x3a3, 0x3a4, 0x3a5, 0x3a6, 0x3a7,
10912 0x3a8, 0x3a9, 0x3aa, 0x3ab, 0x38c, 0x38e, 0x38f, 0,
10913 0x392, 0x398, 0, 0, 0, 0x3a6, 0x3a0, 0,
10914 0x3d9, 0x3d8, 0x3db, 0x3da, 0x3dd, 0x3dc, 0x3df, 0x3de,
10915 0x3e1, 0x3e0, 0x3e3, 0x3e2, 0x3e5, 0x3e4, 0x3e7, 0x3e6,
10916 0x3e9, 0x3e8, 0x3eb, 0x3ea, 0x3ed, 0x3ec, 0x3ef, 0x3ee,
10917 0x39a, 0x3a1, 0x3a3, 0, 0x3b8, 0x395, 0, 0,
10918 0, 0, 0, 0, 0, 0, 0, 0,
10919};
10920
10921static const Q_UINT16 case_04[] = {
10922 0x450, 0x451, 0x452, 0x453, 0x454, 0x455, 0x456, 0x457,
10923 0x458, 0x459, 0x45a, 0x45b, 0x45c, 0x45d, 0x45e, 0x45f,
10924 0x430, 0x431, 0x432, 0x433, 0x434, 0x435, 0x436, 0x437,
10925 0x438, 0x439, 0x43a, 0x43b, 0x43c, 0x43d, 0x43e, 0x43f,
10926 0x440, 0x441, 0x442, 0x443, 0x444, 0x445, 0x446, 0x447,
10927 0x448, 0x449, 0x44a, 0x44b, 0x44c, 0x44d, 0x44e, 0x44f,
10928 0x410, 0x411, 0x412, 0x413, 0x414, 0x415, 0x416, 0x417,
10929 0x418, 0x419, 0x41a, 0x41b, 0x41c, 0x41d, 0x41e, 0x41f,
10930 0x420, 0x421, 0x422, 0x423, 0x424, 0x425, 0x426, 0x427,
10931 0x428, 0x429, 0x42a, 0x42b, 0x42c, 0x42d, 0x42e, 0x42f,
10932 0x400, 0x401, 0x402, 0x403, 0x404, 0x405, 0x406, 0x407,
10933 0x408, 0x409, 0x40a, 0x40b, 0x40c, 0x40d, 0x40e, 0x40f,
10934 0x461, 0x460, 0x463, 0x462, 0x465, 0x464, 0x467, 0x466,
10935 0x469, 0x468, 0x46b, 0x46a, 0x46d, 0x46c, 0x46f, 0x46e,
10936 0x471, 0x470, 0x473, 0x472, 0x475, 0x474, 0x477, 0x476,
10937 0x479, 0x478, 0x47b, 0x47a, 0x47d, 0x47c, 0x47f, 0x47e,
10938 0x481, 0x480, 0, 0, 0, 0, 0, 0,
10939 0, 0, 0x48b, 0x48a, 0x48d, 0x48c, 0x48f, 0x48e,
10940 0x491, 0x490, 0x493, 0x492, 0x495, 0x494, 0x497, 0x496,
10941 0x499, 0x498, 0x49b, 0x49a, 0x49d, 0x49c, 0x49f, 0x49e,
10942 0x4a1, 0x4a0, 0x4a3, 0x4a2, 0x4a5, 0x4a4, 0x4a7, 0x4a6,
10943 0x4a9, 0x4a8, 0x4ab, 0x4aa, 0x4ad, 0x4ac, 0x4af, 0x4ae,
10944 0x4b1, 0x4b0, 0x4b3, 0x4b2, 0x4b5, 0x4b4, 0x4b7, 0x4b6,
10945 0x4b9, 0x4b8, 0x4bb, 0x4ba, 0x4bd, 0x4bc, 0x4bf, 0x4be,
10946 0, 0x4c2, 0x4c1, 0x4c4, 0x4c3, 0x4c6, 0x4c5, 0x4c8,
10947 0x4c7, 0x4ca, 0x4c9, 0x4cc, 0x4cb, 0x4ce, 0x4cd, 0,
10948 0x4d1, 0x4d0, 0x4d3, 0x4d2, 0x4d5, 0x4d4, 0x4d7, 0x4d6,
10949 0x4d9, 0x4d8, 0x4db, 0x4da, 0x4dd, 0x4dc, 0x4df, 0x4de,
10950 0x4e1, 0x4e0, 0x4e3, 0x4e2, 0x4e5, 0x4e4, 0x4e7, 0x4e6,
10951 0x4e9, 0x4e8, 0x4eb, 0x4ea, 0x4ed, 0x4ec, 0x4ef, 0x4ee,
10952 0x4f1, 0x4f0, 0x4f3, 0x4f2, 0x4f5, 0x4f4, 0, 0,
10953 0x4f9, 0x4f8, 0, 0, 0, 0, 0, 0,
10954};
10955
10956static const Q_UINT16 case_05[] = {
10957 0x501, 0x500, 0x503, 0x502, 0x505, 0x504, 0x507, 0x506,
10958 0x509, 0x508, 0x50b, 0x50a, 0x50d, 0x50c, 0x50f, 0x50e,
10959 0, 0, 0, 0, 0, 0, 0, 0,
10960 0, 0, 0, 0, 0, 0, 0, 0,
10961 0, 0, 0, 0, 0, 0, 0, 0,
10962 0, 0, 0, 0, 0, 0, 0, 0,
10963 0, 0x561, 0x562, 0x563, 0x564, 0x565, 0x566, 0x567,
10964 0x568, 0x569, 0x56a, 0x56b, 0x56c, 0x56d, 0x56e, 0x56f,
10965 0x570, 0x571, 0x572, 0x573, 0x574, 0x575, 0x576, 0x577,
10966 0x578, 0x579, 0x57a, 0x57b, 0x57c, 0x57d, 0x57e, 0x57f,
10967 0x580, 0x581, 0x582, 0x583, 0x584, 0x585, 0x586, 0,
10968 0, 0, 0, 0, 0, 0, 0, 0,
10969 0, 0x531, 0x532, 0x533, 0x534, 0x535, 0x536, 0x537,
10970 0x538, 0x539, 0x53a, 0x53b, 0x53c, 0x53d, 0x53e, 0x53f,
10971 0x540, 0x541, 0x542, 0x543, 0x544, 0x545, 0x546, 0x547,
10972 0x548, 0x549, 0x54a, 0x54b, 0x54c, 0x54d, 0x54e, 0x54f,
10973 0x550, 0x551, 0x552, 0x553, 0x554, 0x555, 0x556, 0,
10974 0, 0, 0, 0, 0, 0, 0, 0,
10975 0, 0, 0, 0, 0, 0, 0, 0,
10976 0, 0, 0, 0, 0, 0, 0, 0,
10977 0, 0, 0, 0, 0, 0, 0, 0,
10978 0, 0, 0, 0, 0, 0, 0, 0,
10979 0, 0, 0, 0, 0, 0, 0, 0,
10980 0, 0, 0, 0, 0, 0, 0, 0,
10981 0, 0, 0, 0, 0, 0, 0, 0,
10982 0, 0, 0, 0, 0, 0, 0, 0,
10983 0, 0, 0, 0, 0, 0, 0, 0,
10984 0, 0, 0, 0, 0, 0, 0, 0,
10985 0, 0, 0, 0, 0, 0, 0, 0,
10986 0, 0, 0, 0, 0, 0, 0, 0,
10987 0, 0, 0, 0, 0, 0, 0, 0,
10988 0, 0, 0, 0, 0, 0, 0, 0,
10989};
10990
10991static const Q_UINT16 case_1E[] = {
10992 0x1e01, 0x1e00, 0x1e03, 0x1e02, 0x1e05, 0x1e04, 0x1e07, 0x1e06,
10993 0x1e09, 0x1e08, 0x1e0b, 0x1e0a, 0x1e0d, 0x1e0c, 0x1e0f, 0x1e0e,
10994 0x1e11, 0x1e10, 0x1e13, 0x1e12, 0x1e15, 0x1e14, 0x1e17, 0x1e16,
10995 0x1e19, 0x1e18, 0x1e1b, 0x1e1a, 0x1e1d, 0x1e1c, 0x1e1f, 0x1e1e,
10996 0x1e21, 0x1e20, 0x1e23, 0x1e22, 0x1e25, 0x1e24, 0x1e27, 0x1e26,
10997 0x1e29, 0x1e28, 0x1e2b, 0x1e2a, 0x1e2d, 0x1e2c, 0x1e2f, 0x1e2e,
10998 0x1e31, 0x1e30, 0x1e33, 0x1e32, 0x1e35, 0x1e34, 0x1e37, 0x1e36,
10999 0x1e39, 0x1e38, 0x1e3b, 0x1e3a, 0x1e3d, 0x1e3c, 0x1e3f, 0x1e3e,
11000 0x1e41, 0x1e40, 0x1e43, 0x1e42, 0x1e45, 0x1e44, 0x1e47, 0x1e46,
11001 0x1e49, 0x1e48, 0x1e4b, 0x1e4a, 0x1e4d, 0x1e4c, 0x1e4f, 0x1e4e,
11002 0x1e51, 0x1e50, 0x1e53, 0x1e52, 0x1e55, 0x1e54, 0x1e57, 0x1e56,
11003 0x1e59, 0x1e58, 0x1e5b, 0x1e5a, 0x1e5d, 0x1e5c, 0x1e5f, 0x1e5e,
11004 0x1e61, 0x1e60, 0x1e63, 0x1e62, 0x1e65, 0x1e64, 0x1e67, 0x1e66,
11005 0x1e69, 0x1e68, 0x1e6b, 0x1e6a, 0x1e6d, 0x1e6c, 0x1e6f, 0x1e6e,
11006 0x1e71, 0x1e70, 0x1e73, 0x1e72, 0x1e75, 0x1e74, 0x1e77, 0x1e76,
11007 0x1e79, 0x1e78, 0x1e7b, 0x1e7a, 0x1e7d, 0x1e7c, 0x1e7f, 0x1e7e,
11008 0x1e81, 0x1e80, 0x1e83, 0x1e82, 0x1e85, 0x1e84, 0x1e87, 0x1e86,
11009 0x1e89, 0x1e88, 0x1e8b, 0x1e8a, 0x1e8d, 0x1e8c, 0x1e8f, 0x1e8e,
11010 0x1e91, 0x1e90, 0x1e93, 0x1e92, 0x1e95, 0x1e94, 0, 0,
11011 0, 0, 0, 0x1e60, 0, 0, 0, 0,
11012 0x1ea1, 0x1ea0, 0x1ea3, 0x1ea2, 0x1ea5, 0x1ea4, 0x1ea7, 0x1ea6,
11013 0x1ea9, 0x1ea8, 0x1eab, 0x1eaa, 0x1ead, 0x1eac, 0x1eaf, 0x1eae,
11014 0x1eb1, 0x1eb0, 0x1eb3, 0x1eb2, 0x1eb5, 0x1eb4, 0x1eb7, 0x1eb6,
11015 0x1eb9, 0x1eb8, 0x1ebb, 0x1eba, 0x1ebd, 0x1ebc, 0x1ebf, 0x1ebe,
11016 0x1ec1, 0x1ec0, 0x1ec3, 0x1ec2, 0x1ec5, 0x1ec4, 0x1ec7, 0x1ec6,
11017 0x1ec9, 0x1ec8, 0x1ecb, 0x1eca, 0x1ecd, 0x1ecc, 0x1ecf, 0x1ece,
11018 0x1ed1, 0x1ed0, 0x1ed3, 0x1ed2, 0x1ed5, 0x1ed4, 0x1ed7, 0x1ed6,
11019 0x1ed9, 0x1ed8, 0x1edb, 0x1eda, 0x1edd, 0x1edc, 0x1edf, 0x1ede,
11020 0x1ee1, 0x1ee0, 0x1ee3, 0x1ee2, 0x1ee5, 0x1ee4, 0x1ee7, 0x1ee6,
11021 0x1ee9, 0x1ee8, 0x1eeb, 0x1eea, 0x1eed, 0x1eec, 0x1eef, 0x1eee,
11022 0x1ef1, 0x1ef0, 0x1ef3, 0x1ef2, 0x1ef5, 0x1ef4, 0x1ef7, 0x1ef6,
11023 0x1ef9, 0x1ef8, 0, 0, 0, 0, 0, 0,
11024};
11025
11026static const Q_UINT16 case_1F[] = {
11027 0x1f08, 0x1f09, 0x1f0a, 0x1f0b, 0x1f0c, 0x1f0d, 0x1f0e, 0x1f0f,
11028 0x1f00, 0x1f01, 0x1f02, 0x1f03, 0x1f04, 0x1f05, 0x1f06, 0x1f07,
11029 0x1f18, 0x1f19, 0x1f1a, 0x1f1b, 0x1f1c, 0x1f1d, 0, 0,
11030 0x1f10, 0x1f11, 0x1f12, 0x1f13, 0x1f14, 0x1f15, 0, 0,
11031 0x1f28, 0x1f29, 0x1f2a, 0x1f2b, 0x1f2c, 0x1f2d, 0x1f2e, 0x1f2f,
11032 0x1f20, 0x1f21, 0x1f22, 0x1f23, 0x1f24, 0x1f25, 0x1f26, 0x1f27,
11033 0x1f38, 0x1f39, 0x1f3a, 0x1f3b, 0x1f3c, 0x1f3d, 0x1f3e, 0x1f3f,
11034 0x1f30, 0x1f31, 0x1f32, 0x1f33, 0x1f34, 0x1f35, 0x1f36, 0x1f37,
11035 0x1f48, 0x1f49, 0x1f4a, 0x1f4b, 0x1f4c, 0x1f4d, 0, 0,
11036 0x1f40, 0x1f41, 0x1f42, 0x1f43, 0x1f44, 0x1f45, 0, 0,
11037 0, 0x1f59, 0, 0x1f5b, 0, 0x1f5d, 0, 0x1f5f,
11038 0, 0x1f51, 0, 0x1f53, 0, 0x1f55, 0, 0x1f57,
11039 0x1f68, 0x1f69, 0x1f6a, 0x1f6b, 0x1f6c, 0x1f6d, 0x1f6e, 0x1f6f,
11040 0x1f60, 0x1f61, 0x1f62, 0x1f63, 0x1f64, 0x1f65, 0x1f66, 0x1f67,
11041 0x1fba, 0x1fbb, 0x1fc8, 0x1fc9, 0x1fca, 0x1fcb, 0x1fda, 0x1fdb,
11042 0x1ff8, 0x1ff9, 0x1fea, 0x1feb, 0x1ffa, 0x1ffb, 0, 0,
11043 0x1f88, 0x1f89, 0x1f8a, 0x1f8b, 0x1f8c, 0x1f8d, 0x1f8e, 0x1f8f,
11044 0x1f80, 0x1f81, 0x1f82, 0x1f83, 0x1f84, 0x1f85, 0x1f86, 0x1f87,
11045 0x1f98, 0x1f99, 0x1f9a, 0x1f9b, 0x1f9c, 0x1f9d, 0x1f9e, 0x1f9f,
11046 0x1f90, 0x1f91, 0x1f92, 0x1f93, 0x1f94, 0x1f95, 0x1f96, 0x1f97,
11047 0x1fa8, 0x1fa9, 0x1faa, 0x1fab, 0x1fac, 0x1fad, 0x1fae, 0x1faf,
11048 0x1fa0, 0x1fa1, 0x1fa2, 0x1fa3, 0x1fa4, 0x1fa5, 0x1fa6, 0x1fa7,
11049 0x1fb8, 0x1fb9, 0, 0x1fbc, 0, 0, 0, 0,
11050 0x1fb0, 0x1fb1, 0x1f70, 0x1f71, 0x1fb3, 0, 0x399, 0,
11051 0, 0, 0, 0x1fcc, 0, 0, 0, 0,
11052 0x1f72, 0x1f73, 0x1f74, 0x1f75, 0x1fc3, 0, 0, 0,
11053 0x1fd8, 0x1fd9, 0, 0, 0, 0, 0, 0,
11054 0x1fd0, 0x1fd1, 0x1f76, 0x1f77, 0, 0, 0, 0,
11055 0x1fe8, 0x1fe9, 0, 0, 0, 0x1fec, 0, 0,
11056 0x1fe0, 0x1fe1, 0x1f7a, 0x1f7b, 0x1fe5, 0, 0, 0,
11057 0, 0, 0, 0x1ffc, 0, 0, 0, 0,
11058 0x1f78, 0x1f79, 0x1f7c, 0x1f7d, 0x1ff3, 0, 0, 0,
11059};
11060
11061static const Q_UINT16 case_21[] = {
11062 0, 0, 0, 0, 0, 0, 0, 0,
11063 0, 0, 0, 0, 0, 0, 0, 0,
11064 0, 0, 0, 0, 0, 0, 0, 0,
11065 0, 0, 0, 0, 0, 0, 0, 0,
11066 0, 0, 0, 0, 0, 0, 0x3c9, 0,
11067 0, 0, 0x6b, 0xe5, 0, 0, 0, 0,
11068 0, 0, 0, 0, 0, 0, 0, 0,
11069 0, 0, 0, 0, 0, 0, 0, 0,
11070 0, 0, 0, 0, 0, 0, 0, 0,
11071 0, 0, 0, 0, 0, 0, 0, 0,
11072 0, 0, 0, 0, 0, 0, 0, 0,
11073 0, 0, 0, 0, 0, 0, 0, 0,
11074 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177,
11075 0x2178, 0x2179, 0x217a, 0x217b, 0x217c, 0x217d, 0x217e, 0x217f,
11076 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167,
11077 0x2168, 0x2169, 0x216a, 0x216b, 0x216c, 0x216d, 0x216e, 0x216f,
11078 0, 0, 0, 0, 0, 0, 0, 0,
11079 0, 0, 0, 0, 0, 0, 0, 0,
11080 0, 0, 0, 0, 0, 0, 0, 0,
11081 0, 0, 0, 0, 0, 0, 0, 0,
11082 0, 0, 0, 0, 0, 0, 0, 0,
11083 0, 0, 0, 0, 0, 0, 0, 0,
11084 0, 0, 0, 0, 0, 0, 0, 0,
11085 0, 0, 0, 0, 0, 0, 0, 0,
11086 0, 0, 0, 0, 0, 0, 0, 0,
11087 0, 0, 0, 0, 0, 0, 0, 0,
11088 0, 0, 0, 0, 0, 0, 0, 0,
11089 0, 0, 0, 0, 0, 0, 0, 0,
11090 0, 0, 0, 0, 0, 0, 0, 0,
11091 0, 0, 0, 0, 0, 0, 0, 0,
11092 0, 0, 0, 0, 0, 0, 0, 0,
11093 0, 0, 0, 0, 0, 0, 0, 0,
11094};
11095
11096static const Q_UINT16 case_24[] = {
11097 0, 0, 0, 0, 0, 0, 0, 0,
11098 0, 0, 0, 0, 0, 0, 0, 0,
11099 0, 0, 0, 0, 0, 0, 0, 0,
11100 0, 0, 0, 0, 0, 0, 0, 0,
11101 0, 0, 0, 0, 0, 0, 0, 0,
11102 0, 0, 0, 0, 0, 0, 0, 0,
11103 0, 0, 0, 0, 0, 0, 0, 0,
11104 0, 0, 0, 0, 0, 0, 0, 0,
11105 0, 0, 0, 0, 0, 0, 0, 0,
11106 0, 0, 0, 0, 0, 0, 0, 0,
11107 0, 0, 0, 0, 0, 0, 0, 0,
11108 0, 0, 0, 0, 0, 0, 0, 0,
11109 0, 0, 0, 0, 0, 0, 0, 0,
11110 0, 0, 0, 0, 0, 0, 0, 0,
11111 0, 0, 0, 0, 0, 0, 0, 0,
11112 0, 0, 0, 0, 0, 0, 0, 0,
11113 0, 0, 0, 0, 0, 0, 0, 0,
11114 0, 0, 0, 0, 0, 0, 0, 0,
11115 0, 0, 0, 0, 0, 0, 0, 0,
11116 0, 0, 0, 0, 0, 0, 0, 0,
11117 0, 0, 0, 0, 0, 0, 0, 0,
11118 0, 0, 0, 0, 0, 0, 0, 0,
11119 0, 0, 0, 0, 0, 0, 0x24d0, 0x24d1,
11120 0x24d2, 0x24d3, 0x24d4, 0x24d5, 0x24d6, 0x24d7, 0x24d8, 0x24d9,
11121 0x24da, 0x24db, 0x24dc, 0x24dd, 0x24de, 0x24df, 0x24e0, 0x24e1,
11122 0x24e2, 0x24e3, 0x24e4, 0x24e5, 0x24e6, 0x24e7, 0x24e8, 0x24e9,
11123 0x24b6, 0x24b7, 0x24b8, 0x24b9, 0x24ba, 0x24bb, 0x24bc, 0x24bd,
11124 0x24be, 0x24bf, 0x24c0, 0x24c1, 0x24c2, 0x24c3, 0x24c4, 0x24c5,
11125 0x24c6, 0x24c7, 0x24c8, 0x24c9, 0x24ca, 0x24cb, 0x24cc, 0x24cd,
11126 0x24ce, 0x24cf, 0, 0, 0, 0, 0, 0,
11127 0, 0, 0, 0, 0, 0, 0, 0,
11128 0, 0, 0, 0, 0, 0, 0, 0,
11129};
11130
11131static const Q_UINT16 case_FF[] = {
11132 0, 0, 0, 0, 0, 0, 0, 0,
11133 0, 0, 0, 0, 0, 0, 0, 0,
11134 0, 0, 0, 0, 0, 0, 0, 0,
11135 0, 0, 0, 0, 0, 0, 0, 0,
11136 0, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47,
11137 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f,
11138 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57,
11139 0xff58, 0xff59, 0xff5a, 0, 0, 0, 0, 0,
11140 0, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27,
11141 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f,
11142 0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37,
11143 0xff38, 0xff39, 0xff3a, 0, 0, 0, 0, 0,
11144 0, 0, 0, 0, 0, 0, 0, 0,
11145 0, 0, 0, 0, 0, 0, 0, 0,
11146 0, 0, 0, 0, 0, 0, 0, 0,
11147 0, 0, 0, 0, 0, 0, 0, 0,
11148 0, 0, 0, 0, 0, 0, 0, 0,
11149 0, 0, 0, 0, 0, 0, 0, 0,
11150 0, 0, 0, 0, 0, 0, 0, 0,
11151 0, 0, 0, 0, 0, 0, 0, 0,
11152 0, 0, 0, 0, 0, 0, 0, 0,
11153 0, 0, 0, 0, 0, 0, 0, 0,
11154 0, 0, 0, 0, 0, 0, 0, 0,
11155 0, 0, 0, 0, 0, 0, 0, 0,
11156 0, 0, 0, 0, 0, 0, 0, 0,
11157 0, 0, 0, 0, 0, 0, 0, 0,
11158 0, 0, 0, 0, 0, 0, 0, 0,
11159 0, 0, 0, 0, 0, 0, 0, 0,
11160 0, 0, 0, 0, 0, 0, 0, 0,
11161 0, 0, 0, 0, 0, 0, 0, 0,
11162 0, 0, 0, 0, 0, 0, 0, 0,
11163 0, 0, 0, 0, 0, 0, 0, 0,
11164};
11165
11166static const Q_UINT16 * const case_info[256] = {
11167 case_00, case_01, case_02, case_03, case_04, case_05, 0, 0,
11168 0, 0, 0, 0, 0, 0, 0, 0,
11169 0, 0, 0, 0, 0, 0, 0, 0,
11170 0, 0, 0, 0, 0, 0, case_1E, case_1F,
11171 0, case_21, 0, 0, case_24, 0, 0, 0,
11172 0, 0, 0, 0, 0, 0, 0, 0,
11173 0, 0, 0, 0, 0, 0, 0, 0,
11174 0, 0, 0, 0, 0, 0, 0, 0,
11175 0, 0, 0, 0, 0, 0, 0, 0,
11176 0, 0, 0, 0, 0, 0, 0, 0,
11177 0, 0, 0, 0, 0, 0, 0, 0,
11178 0, 0, 0, 0, 0, 0, 0, 0,
11179 0, 0, 0, 0, 0, 0, 0, 0,
11180 0, 0, 0, 0, 0, 0, 0, 0,
11181 0, 0, 0, 0, 0, 0, 0, 0,
11182 0, 0, 0, 0, 0, 0, 0, 0,
11183 0, 0, 0, 0, 0, 0, 0, 0,
11184 0, 0, 0, 0, 0, 0, 0, 0,
11185 0, 0, 0, 0, 0, 0, 0, 0,
11186 0, 0, 0, 0, 0, 0, 0, 0,
11187 0, 0, 0, 0, 0, 0, 0, 0,
11188 0, 0, 0, 0, 0, 0, 0, 0,
11189 0, 0, 0, 0, 0, 0, 0, 0,
11190 0, 0, 0, 0, 0, 0, 0, 0,
11191 0, 0, 0, 0, 0, 0, 0, 0,
11192 0, 0, 0, 0, 0, 0, 0, 0,
11193 0, 0, 0, 0, 0, 0, 0, 0,
11194 0, 0, 0, 0, 0, 0, 0, 0,
11195 0, 0, 0, 0, 0, 0, 0, 0,
11196 0, 0, 0, 0, 0, 0, 0, 0,
11197 0, 0, 0, 0, 0, 0, 0, 0,
11198 0, 0, 0, 0, 0, 0, 0, case_FF,
11199};
11200// 39162 bytes
11201
11202static const Q_INT8 num_00[] = {
11203 -1, -1, -1, -1, -1, -1, -1, -1,
11204 -1, -1, -1, -1, -1, -1, -1, -1,
11205 -1, -1, -1, -1, -1, -1, -1, -1,
11206 -1, -1, -1, -1, -1, -1, -1, -1,
11207 -1, -1, -1, -1, -1, -1, -1, -1,
11208 -1, -1, -1, -1, -1, -1, -1, -1,
11209 0, 1, 2, 3, 4, 5, 6, 7,
11210 8, 9, -1, -1, -1, -1, -1, -1,
11211 -1, -1, -1, -1, -1, -1, -1, -1,
11212 -1, -1, -1, -1, -1, -1, -1, -1,
11213 -1, -1, -1, -1, -1, -1, -1, -1,
11214 -1, -1, -1, -1, -1, -1, -1, -1,
11215 -1, -1, -1, -1, -1, -1, -1, -1,
11216 -1, -1, -1, -1, -1, -1, -1, -1,
11217 -1, -1, -1, -1, -1, -1, -1, -1,
11218 -1, -1, -1, -1, -1, -1, -1, -1,
11219 -1, -1, -1, -1, -1, -1, -1, -1,
11220 -1, -1, -1, -1, -1, -1, -1, -1,
11221 -1, -1, -1, -1, -1, -1, -1, -1,
11222 -1, -1, -1, -1, -1, -1, -1, -1,
11223 -1, -1, -1, -1, -1, -1, -1, -1,
11224 -1, -1, -1, -1, -1, -1, -1, -1,
11225 -1, -1, 2, 3, -1, -1, -1, -1,
11226 -1, 1, -1, -1, -1, -1, -1, -1,
11227 -1, -1, -1, -1, -1, -1, -1, -1,
11228 -1, -1, -1, -1, -1, -1, -1, -1,
11229 -1, -1, -1, -1, -1, -1, -1, -1,
11230 -1, -1, -1, -1, -1, -1, -1, -1,
11231 -1, -1, -1, -1, -1, -1, -1, -1,
11232 -1, -1, -1, -1, -1, -1, -1, -1,
11233 -1, -1, -1, -1, -1, -1, -1, -1,
11234 -1, -1, -1, -1, -1, -1, -1, -1,
11235};
11236
11237static const Q_INT8 num_06[] = {
11238 -1, -1, -1, -1, -1, -1, -1, -1,
11239 -1, -1, -1, -1, -1, -1, -1, -1,
11240 -1, -1, -1, -1, -1, -1, -1, -1,
11241 -1, -1, -1, -1, -1, -1, -1, -1,
11242 -1, -1, -1, -1, -1, -1, -1, -1,
11243 -1, -1, -1, -1, -1, -1, -1, -1,
11244 -1, -1, -1, -1, -1, -1, -1, -1,
11245 -1, -1, -1, -1, -1, -1, -1, -1,
11246 -1, -1, -1, -1, -1, -1, -1, -1,
11247 -1, -1, -1, -1, -1, -1, -1, -1,
11248 -1, -1, -1, -1, -1, -1, -1, -1,
11249 -1, -1, -1, -1, -1, -1, -1, -1,
11250 0, 1, 2, 3, 4, 5, 6, 7,
11251 8, 9, -1, -1, -1, -1, -1, -1,
11252 -1, -1, -1, -1, -1, -1, -1, -1,
11253 -1, -1, -1, -1, -1, -1, -1, -1,
11254 -1, -1, -1, -1, -1, -1, -1, -1,
11255 -1, -1, -1, -1, -1, -1, -1, -1,
11256 -1, -1, -1, -1, -1, -1, -1, -1,
11257 -1, -1, -1, -1, -1, -1, -1, -1,
11258 -1, -1, -1, -1, -1, -1, -1, -1,
11259 -1, -1, -1, -1, -1, -1, -1, -1,
11260 -1, -1, -1, -1, -1, -1, -1, -1,
11261 -1, -1, -1, -1, -1, -1, -1, -1,
11262 -1, -1, -1, -1, -1, -1, -1, -1,
11263 -1, -1, -1, -1, -1, -1, -1, -1,
11264 -1, -1, -1, -1, -1, -1, -1, -1,
11265 -1, -1, -1, -1, -1, -1, -1, -1,
11266 -1, -1, -1, -1, -1, -1, -1, -1,
11267 -1, -1, -1, -1, -1, -1, -1, -1,
11268 0, 1, 2, 3, 4, 5, 6, 7,
11269 8, 9, -1, -1, -1, -1, -1, -1,
11270};
11271
11272static const Q_INT8 num_09[] = {
11273 -1, -1, -1, -1, -1, -1, -1, -1,
11274 -1, -1, -1, -1, -1, -1, -1, -1,
11275 -1, -1, -1, -1, -1, -1, -1, -1,
11276 -1, -1, -1, -1, -1, -1, -1, -1,
11277 -1, -1, -1, -1, -1, -1, -1, -1,
11278 -1, -1, -1, -1, -1, -1, -1, -1,
11279 -1, -1, -1, -1, -1, -1, -1, -1,
11280 -1, -1, -1, -1, -1, -1, -1, -1,
11281 -1, -1, -1, -1, -1, -1, -1, -1,
11282 -1, -1, -1, -1, -1, -1, -1, -1,
11283 -1, -1, -1, -1, -1, -1, -1, -1,
11284 -1, -1, -1, -1, -1, -1, -1, -1,
11285 -1, -1, -1, -1, -1, -1, 0, 1,
11286 2, 3, 4, 5, 6, 7, 8, 9,
11287 -1, -1, -1, -1, -1, -1, -1, -1,
11288 -1, -1, -1, -1, -1, -1, -1, -1,
11289 -1, -1, -1, -1, -1, -1, -1, -1,
11290 -1, -1, -1, -1, -1, -1, -1, -1,
11291 -1, -1, -1, -1, -1, -1, -1, -1,
11292 -1, -1, -1, -1, -1, -1, -1, -1,
11293 -1, -1, -1, -1, -1, -1, -1, -1,
11294 -1, -1, -1, -1, -1, -1, -1, -1,
11295 -1, -1, -1, -1, -1, -1, -1, -1,
11296 -1, -1, -1, -1, -1, -1, -1, -1,
11297 -1, -1, -1, -1, -1, -1, -1, -1,
11298 -1, -1, -1, -1, -1, -1, -1, -1,
11299 -1, -1, -1, -1, -1, -1, -1, -1,
11300 -1, -1, -1, -1, -1, -1, -1, -1,
11301 -1, -1, -1, -1, -1, -1, 0, 1,
11302 2, 3, 4, 5, 6, 7, 8, 9,
11303 -1, -1, -1, -1, -1, -1, -1, -1,
11304 -1, -1, -1, -1, -1, -1, -1, -1,
11305};
11306
11307static const Q_INT8 num_0B[] = {
11308 -1, -1, -1, -1, -1, -1, -1, -1,
11309 -1, -1, -1, -1, -1, -1, -1, -1,
11310 -1, -1, -1, -1, -1, -1, -1, -1,
11311 -1, -1, -1, -1, -1, -1, -1, -1,
11312 -1, -1, -1, -1, -1, -1, -1, -1,
11313 -1, -1, -1, -1, -1, -1, -1, -1,
11314 -1, -1, -1, -1, -1, -1, -1, -1,
11315 -1, -1, -1, -1, -1, -1, -1, -1,
11316 -1, -1, -1, -1, -1, -1, -1, -1,
11317 -1, -1, -1, -1, -1, -1, -1, -1,
11318 -1, -1, -1, -1, -1, -1, -1, -1,
11319 -1, -1, -1, -1, -1, -1, -1, -1,
11320 -1, -1, -1, -1, -1, -1, 0, 1,
11321 2, 3, 4, 5, 6, 7, 8, 9,
11322 -1, -1, -1, -1, -1, -1, -1, -1,
11323 -1, -1, -1, -1, -1, -1, -1, -1,
11324 -1, -1, -1, -1, -1, -1, -1, -1,
11325 -1, -1, -1, -1, -1, -1, -1, -1,
11326 -1, -1, -1, -1, -1, -1, -1, -1,
11327 -1, -1, -1, -1, -1, -1, -1, -1,
11328 -1, -1, -1, -1, -1, -1, -1, -1,
11329 -1, -1, -1, -1, -1, -1, -1, -1,
11330 -1, -1, -1, -1, -1, -1, -1, -1,
11331 -1, -1, -1, -1, -1, -1, -1, -1,
11332 -1, -1, -1, -1, -1, -1, -1, -1,
11333 -1, -1, -1, -1, -1, -1, -1, -1,
11334 -1, -1, -1, -1, -1, -1, -1, -1,
11335 -1, -1, -1, -1, -1, -1, -1, -1,
11336 -1, -1, -1, -1, -1, -1, -1, 1,
11337 2, 3, 4, 5, 6, 7, 8, 9,
11338 -1, -1, -1, -1, -1, -1, -1, -1,
11339 -1, -1, -1, -1, -1, -1, -1, -1,
11340};
11341
11342static const Q_INT8 num_0D[] = {
11343 -1, -1, -1, -1, -1, -1, -1, -1,
11344 -1, -1, -1, -1, -1, -1, -1, -1,
11345 -1, -1, -1, -1, -1, -1, -1, -1,
11346 -1, -1, -1, -1, -1, -1, -1, -1,
11347 -1, -1, -1, -1, -1, -1, -1, -1,
11348 -1, -1, -1, -1, -1, -1, -1, -1,
11349 -1, -1, -1, -1, -1, -1, -1, -1,
11350 -1, -1, -1, -1, -1, -1, -1, -1,
11351 -1, -1, -1, -1, -1, -1, -1, -1,
11352 -1, -1, -1, -1, -1, -1, -1, -1,
11353 -1, -1, -1, -1, -1, -1, -1, -1,
11354 -1, -1, -1, -1, -1, -1, -1, -1,
11355 -1, -1, -1, -1, -1, -1, 0, 1,
11356 2, 3, 4, 5, 6, 7, 8, 9,
11357 -1, -1, -1, -1, -1, -1, -1, -1,
11358 -1, -1, -1, -1, -1, -1, -1, -1,
11359 -1, -1, -1, -1, -1, -1, -1, -1,
11360 -1, -1, -1, -1, -1, -1, -1, -1,
11361 -1, -1, -1, -1, -1, -1, -1, -1,
11362 -1, -1, -1, -1, -1, -1, -1, -1,
11363 -1, -1, -1, -1, -1, -1, -1, -1,
11364 -1, -1, -1, -1, -1, -1, -1, -1,
11365 -1, -1, -1, -1, -1, -1, -1, -1,
11366 -1, -1, -1, -1, -1, -1, -1, -1,
11367 -1, -1, -1, -1, -1, -1, -1, -1,
11368 -1, -1, -1, -1, -1, -1, -1, -1,
11369 -1, -1, -1, -1, -1, -1, -1, -1,
11370 -1, -1, -1, -1, -1, -1, -1, -1,
11371 -1, -1, -1, -1, -1, -1, -1, -1,
11372 -1, -1, -1, -1, -1, -1, -1, -1,
11373 -1, -1, -1, -1, -1, -1, -1, -1,
11374 -1, -1, -1, -1, -1, -1, -1, -1,
11375};
11376
11377static const Q_INT8 num_0E[] = {
11378 -1, -1, -1, -1, -1, -1, -1, -1,
11379 -1, -1, -1, -1, -1, -1, -1, -1,
11380 -1, -1, -1, -1, -1, -1, -1, -1,
11381 -1, -1, -1, -1, -1, -1, -1, -1,
11382 -1, -1, -1, -1, -1, -1, -1, -1,
11383 -1, -1, -1, -1, -1, -1, -1, -1,
11384 -1, -1, -1, -1, -1, -1, -1, -1,
11385 -1, -1, -1, -1, -1, -1, -1, -1,
11386 -1, -1, -1, -1, -1, -1, -1, -1,
11387 -1, -1, -1, -1, -1, -1, -1, -1,
11388 0, 1, 2, 3, 4, 5, 6, 7,
11389 8, 9, -1, -1, -1, -1, -1, -1,
11390 -1, -1, -1, -1, -1, -1, -1, -1,
11391 -1, -1, -1, -1, -1, -1, -1, -1,
11392 -1, -1, -1, -1, -1, -1, -1, -1,
11393 -1, -1, -1, -1, -1, -1, -1, -1,
11394 -1, -1, -1, -1, -1, -1, -1, -1,
11395 -1, -1, -1, -1, -1, -1, -1, -1,
11396 -1, -1, -1, -1, -1, -1, -1, -1,
11397 -1, -1, -1, -1, -1, -1, -1, -1,
11398 -1, -1, -1, -1, -1, -1, -1, -1,
11399 -1, -1, -1, -1, -1, -1, -1, -1,
11400 -1, -1, -1, -1, -1, -1, -1, -1,
11401 -1, -1, -1, -1, -1, -1, -1, -1,
11402 -1, -1, -1, -1, -1, -1, -1, -1,
11403 -1, -1, -1, -1, -1, -1, -1, -1,
11404 0, 1, 2, 3, 4, 5, 6, 7,
11405 8, 9, -1, -1, -1, -1, -1, -1,
11406 -1, -1, -1, -1, -1, -1, -1, -1,
11407 -1, -1, -1, -1, -1, -1, -1, -1,
11408 -1, -1, -1, -1, -1, -1, -1, -1,
11409 -1, -1, -1, -1, -1, -1, -1, -1,
11410};
11411
11412static const Q_INT8 num_0F[] = {
11413 -1, -1, -1, -1, -1, -1, -1, -1,
11414 -1, -1, -1, -1, -1, -1, -1, -1,
11415 -1, -1, -1, -1, -1, -1, -1, -1,
11416 -1, -1, -1, -1, -1, -1, -1, -1,
11417 0, 1, 2, 3, 4, 5, 6, 7,
11418 8, 9, -1, -1, -1, -1, -1, -1,
11419 -1, -1, -1, -1, -1, -1, -1, -1,
11420 -1, -1, -1, -1, -1, -1, -1, -1,
11421 -1, -1, -1, -1, -1, -1, -1, -1,
11422 -1, -1, -1, -1, -1, -1, -1, -1,
11423 -1, -1, -1, -1, -1, -1, -1, -1,
11424 -1, -1, -1, -1, -1, -1, -1, -1,
11425 -1, -1, -1, -1, -1, -1, -1, -1,
11426 -1, -1, -1, -1, -1, -1, -1, -1,
11427 -1, -1, -1, -1, -1, -1, -1, -1,
11428 -1, -1, -1, -1, -1, -1, -1, -1,
11429 -1, -1, -1, -1, -1, -1, -1, -1,
11430 -1, -1, -1, -1, -1, -1, -1, -1,
11431 -1, -1, -1, -1, -1, -1, -1, -1,
11432 -1, -1, -1, -1, -1, -1, -1, -1,
11433 -1, -1, -1, -1, -1, -1, -1, -1,
11434 -1, -1, -1, -1, -1, -1, -1, -1,
11435 -1, -1, -1, -1, -1, -1, -1, -1,
11436 -1, -1, -1, -1, -1, -1, -1, -1,
11437 -1, -1, -1, -1, -1, -1, -1, -1,
11438 -1, -1, -1, -1, -1, -1, -1, -1,
11439 -1, -1, -1, -1, -1, -1, -1, -1,
11440 -1, -1, -1, -1, -1, -1, -1, -1,
11441 -1, -1, -1, -1, -1, -1, -1, -1,
11442 -1, -1, -1, -1, -1, -1, -1, -1,
11443 -1, -1, -1, -1, -1, -1, -1, -1,
11444 -1, -1, -1, -1, -1, -1, -1, -1,
11445};
11446
11447static const Q_INT8 num_10[] = {
11448 -1, -1, -1, -1, -1, -1, -1, -1,
11449 -1, -1, -1, -1, -1, -1, -1, -1,
11450 -1, -1, -1, -1, -1, -1, -1, -1,
11451 -1, -1, -1, -1, -1, -1, -1, -1,
11452 -1, -1, -1, -1, -1, -1, -1, -1,
11453 -1, -1, -1, -1, -1, -1, -1, -1,
11454 -1, -1, -1, -1, -1, -1, -1, -1,
11455 -1, -1, -1, -1, -1, -1, -1, -1,
11456 0, 1, 2, 3, 4, 5, 6, 7,
11457 8, 9, -1, -1, -1, -1, -1, -1,
11458 -1, -1, -1, -1, -1, -1, -1, -1,
11459 -1, -1, -1, -1, -1, -1, -1, -1,
11460 -1, -1, -1, -1, -1, -1, -1, -1,
11461 -1, -1, -1, -1, -1, -1, -1, -1,
11462 -1, -1, -1, -1, -1, -1, -1, -1,
11463 -1, -1, -1, -1, -1, -1, -1, -1,
11464 -1, -1, -1, -1, -1, -1, -1, -1,
11465 -1, -1, -1, -1, -1, -1, -1, -1,
11466 -1, -1, -1, -1, -1, -1, -1, -1,
11467 -1, -1, -1, -1, -1, -1, -1, -1,
11468 -1, -1, -1, -1, -1, -1, -1, -1,
11469 -1, -1, -1, -1, -1, -1, -1, -1,
11470 -1, -1, -1, -1, -1, -1, -1, -1,
11471 -1, -1, -1, -1, -1, -1, -1, -1,
11472 -1, -1, -1, -1, -1, -1, -1, -1,
11473 -1, -1, -1, -1, -1, -1, -1, -1,
11474 -1, -1, -1, -1, -1, -1, -1, -1,
11475 -1, -1, -1, -1, -1, -1, -1, -1,
11476 -1, -1, -1, -1, -1, -1, -1, -1,
11477 -1, -1, -1, -1, -1, -1, -1, -1,
11478 -1, -1, -1, -1, -1, -1, -1, -1,
11479 -1, -1, -1, -1, -1, -1, -1, -1,
11480};
11481
11482static const Q_INT8 num_13[] = {
11483 -1, -1, -1, -1, -1, -1, -1, -1,
11484 -1, -1, -1, -1, -1, -1, -1, -1,
11485 -1, -1, -1, -1, -1, -1, -1, -1,
11486 -1, -1, -1, -1, -1, -1, -1, -1,
11487 -1, -1, -1, -1, -1, -1, -1, -1,
11488 -1, -1, -1, -1, -1, -1, -1, -1,
11489 -1, -1, -1, -1, -1, -1, -1, -1,
11490 -1, -1, -1, -1, -1, -1, -1, -1,
11491 -1, -1, -1, -1, -1, -1, -1, -1,
11492 -1, -1, -1, -1, -1, -1, -1, -1,
11493 -1, -1, -1, -1, -1, -1, -1, -1,
11494 -1, -1, -1, -1, -1, -1, -1, -1,
11495 -1, -1, -1, -1, -1, -1, -1, -1,
11496 -1, 1, 2, 3, 4, 5, 6, 7,
11497 8, 9, -1, -1, -1, -1, -1, -1,
11498 -1, -1, -1, -1, -1, -1, -1, -1,
11499 -1, -1, -1, -1, -1, -1, -1, -1,
11500 -1, -1, -1, -1, -1, -1, -1, -1,
11501 -1, -1, -1, -1, -1, -1, -1, -1,
11502 -1, -1, -1, -1, -1, -1, -1, -1,
11503 -1, -1, -1, -1, -1, -1, -1, -1,
11504 -1, -1, -1, -1, -1, -1, -1, -1,
11505 -1, -1, -1, -1, -1, -1, -1, -1,
11506 -1, -1, -1, -1, -1, -1, -1, -1,
11507 -1, -1, -1, -1, -1, -1, -1, -1,
11508 -1, -1, -1, -1, -1, -1, -1, -1,
11509 -1, -1, -1, -1, -1, -1, -1, -1,
11510 -1, -1, -1, -1, -1, -1, -1, -1,
11511 -1, -1, -1, -1, -1, -1, -1, -1,
11512 -1, -1, -1, -1, -1, -1, -1, -1,
11513 -1, -1, -1, -1, -1, -1, -1, -1,
11514 -1, -1, -1, -1, -1, -1, -1, -1,
11515};
11516
11517static const Q_INT8 num_17[] = {
11518 -1, -1, -1, -1, -1, -1, -1, -1,
11519 -1, -1, -1, -1, -1, -1, -1, -1,
11520 -1, -1, -1, -1, -1, -1, -1, -1,
11521 -1, -1, -1, -1, -1, -1, -1, -1,
11522 -1, -1, -1, -1, -1, -1, -1, -1,
11523 -1, -1, -1, -1, -1, -1, -1, -1,
11524 -1, -1, -1, -1, -1, -1, -1, -1,
11525 -1, -1, -1, -1, -1, -1, -1, -1,
11526 -1, -1, -1, -1, -1, -1, -1, -1,
11527 -1, -1, -1, -1, -1, -1, -1, -1,
11528 -1, -1, -1, -1, -1, -1, -1, -1,
11529 -1, -1, -1, -1, -1, -1, -1, -1,
11530 -1, -1, -1, -1, -1, -1, -1, -1,
11531 -1, -1, -1, -1, -1, -1, -1, -1,
11532 -1, -1, -1, -1, -1, -1, -1, -1,
11533 -1, -1, -1, -1, -1, -1, -1, -1,
11534 -1, -1, -1, -1, -1, -1, -1, -1,
11535 -1, -1, -1, -1, -1, -1, -1, -1,
11536 -1, -1, -1, -1, -1, -1, -1, -1,
11537 -1, -1, -1, -1, -1, -1, -1, -1,
11538 -1, -1, -1, -1, -1, -1, -1, -1,
11539 -1, -1, -1, -1, -1, -1, -1, -1,
11540 -1, -1, -1, -1, -1, -1, -1, -1,
11541 -1, -1, -1, -1, -1, -1, -1, -1,
11542 -1, -1, -1, -1, -1, -1, -1, -1,
11543 -1, -1, -1, -1, -1, -1, -1, -1,
11544 -1, -1, -1, -1, -1, -1, -1, -1,
11545 -1, -1, -1, -1, -1, -1, -1, -1,
11546 0, 1, 2, 3, 4, 5, 6, 7,
11547 8, 9, -1, -1, -1, -1, -1, -1,
11548 -1, -1, -1, -1, -1, -1, -1, -1,
11549 -1, -1, -1, -1, -1, -1, -1, -1,
11550};
11551
11552static const Q_INT8 num_18[] = {
11553 -1, -1, -1, -1, -1, -1, -1, -1,
11554 -1, -1, -1, -1, -1, -1, -1, -1,
11555 0, 1, 2, 3, 4, 5, 6, 7,
11556 8, 9, -1, -1, -1, -1, -1, -1,
11557 -1, -1, -1, -1, -1, -1, -1, -1,
11558 -1, -1, -1, -1, -1, -1, -1, -1,
11559 -1, -1, -1, -1, -1, -1, -1, -1,
11560 -1, -1, -1, -1, -1, -1, -1, -1,
11561 -1, -1, -1, -1, -1, -1, -1, -1,
11562 -1, -1, -1, -1, -1, -1, -1, -1,
11563 -1, -1, -1, -1, -1, -1, -1, -1,
11564 -1, -1, -1, -1, -1, -1, -1, -1,
11565 -1, -1, -1, -1, -1, -1, -1, -1,
11566 -1, -1, -1, -1, -1, -1, -1, -1,
11567 -1, -1, -1, -1, -1, -1, -1, -1,
11568 -1, -1, -1, -1, -1, -1, -1, -1,
11569 -1, -1, -1, -1, -1, -1, -1, -1,
11570 -1, -1, -1, -1, -1, -1, -1, -1,
11571 -1, -1, -1, -1, -1, -1, -1, -1,
11572 -1, -1, -1, -1, -1, -1, -1, -1,
11573 -1, -1, -1, -1, -1, -1, -1, -1,
11574 -1, -1, -1, -1, -1, -1, -1, -1,
11575 -1, -1, -1, -1, -1, -1, -1, -1,
11576 -1, -1, -1, -1, -1, -1, -1, -1,
11577 -1, -1, -1, -1, -1, -1, -1, -1,
11578 -1, -1, -1, -1, -1, -1, -1, -1,
11579 -1, -1, -1, -1, -1, -1, -1, -1,
11580 -1, -1, -1, -1, -1, -1, -1, -1,
11581 -1, -1, -1, -1, -1, -1, -1, -1,
11582 -1, -1, -1, -1, -1, -1, -1, -1,
11583 -1, -1, -1, -1, -1, -1, -1, -1,
11584 -1, -1, -1, -1, -1, -1, -1, -1,
11585};
11586
11587static const Q_INT8 num_20[] = {
11588 -1, -1, -1, -1, -1, -1, -1, -1,
11589 -1, -1, -1, -1, -1, -1, -1, -1,
11590 -1, -1, -1, -1, -1, -1, -1, -1,
11591 -1, -1, -1, -1, -1, -1, -1, -1,
11592 -1, -1, -1, -1, -1, -1, -1, -1,
11593 -1, -1, -1, -1, -1, -1, -1, -1,
11594 -1, -1, -1, -1, -1, -1, -1, -1,
11595 -1, -1, -1, -1, -1, -1, -1, -1,
11596 -1, -1, -1, -1, -1, -1, -1, -1,
11597 -1, -1, -1, -1, -1, -1, -1, -1,
11598 -1, -1, -1, -1, -1, -1, -1, -1,
11599 -1, -1, -1, -1, -1, -1, -1, -1,
11600 -1, -1, -1, -1, -1, -1, -1, -1,
11601 -1, -1, -1, -1, -1, -1, -1, -1,
11602 0, -1, -1, -1, 4, 5, 6, 7,
11603 8, 9, -1, -1, -1, -1, -1, -1,
11604 0, 1, 2, 3, 4, 5, 6, 7,
11605 8, 9, -1, -1, -1, -1, -1, -1,
11606 -1, -1, -1, -1, -1, -1, -1, -1,
11607 -1, -1, -1, -1, -1, -1, -1, -1,
11608 -1, -1, -1, -1, -1, -1, -1, -1,
11609 -1, -1, -1, -1, -1, -1, -1, -1,
11610 -1, -1, -1, -1, -1, -1, -1, -1,
11611 -1, -1, -1, -1, -1, -1, -1, -1,
11612 -1, -1, -1, -1, -1, -1, -1, -1,
11613 -1, -1, -1, -1, -1, -1, -1, -1,
11614 -1, -1, -1, -1, -1, -1, -1, -1,
11615 -1, -1, -1, -1, -1, -1, -1, -1,
11616 -1, -1, -1, -1, -1, -1, -1, -1,
11617 -1, -1, -1, -1, -1, -1, -1, -1,
11618 -1, -1, -1, -1, -1, -1, -1, -1,
11619 -1, -1, -1, -1, -1, -1, -1, -1,
11620};
11621
11622static const Q_INT8 num_24[] = {
11623 -1, -1, -1, -1, -1, -1, -1, -1,
11624 -1, -1, -1, -1, -1, -1, -1, -1,
11625 -1, -1, -1, -1, -1, -1, -1, -1,
11626 -1, -1, -1, -1, -1, -1, -1, -1,
11627 -1, -1, -1, -1, -1, -1, -1, -1,
11628 -1, -1, -1, -1, -1, -1, -1, -1,
11629 -1, -1, -1, -1, -1, -1, -1, -1,
11630 -1, -1, -1, -1, -1, -1, -1, -1,
11631 -1, -1, -1, -1, -1, -1, -1, -1,
11632 -1, -1, -1, -1, -1, -1, -1, -1,
11633 -1, -1, -1, -1, -1, -1, -1, -1,
11634 -1, -1, -1, -1, -1, -1, -1, -1,
11635 1, 2, 3, 4, 5, 6, 7, 8,
11636 9, -1, -1, -1, -1, -1, -1, -1,
11637 -1, -1, -1, -1, 1, 2, 3, 4,
11638 5, 6, 7, 8, 9, -1, -1, -1,
11639 -1, -1, -1, -1, -1, -1, -1, -1,
11640 1, 2, 3, 4, 5, 6, 7, 8,
11641 9, -1, -1, -1, -1, -1, -1, -1,
11642 -1, -1, -1, -1, -1, -1, -1, -1,
11643 -1, -1, -1, -1, -1, -1, -1, -1,
11644 -1, -1, -1, -1, -1, -1, -1, -1,
11645 -1, -1, -1, -1, -1, -1, -1, -1,
11646 -1, -1, -1, -1, -1, -1, -1, -1,
11647 -1, -1, -1, -1, -1, -1, -1, -1,
11648 -1, -1, -1, -1, -1, -1, -1, -1,
11649 -1, -1, -1, -1, -1, -1, -1, -1,
11650 -1, -1, -1, -1, -1, -1, -1, -1,
11651 -1, -1, -1, -1, -1, -1, -1, -1,
11652 -1, -1, 0, -1, -1, -1, -1, -1,
11653 -1, -1, -1, -1, -1, 1, 2, 3,
11654 4, 5, 6, 7, 8, 9, -1, -1,
11655};
11656
11657static const Q_INT8 num_27[] = {
11658 -1, -1, -1, -1, -1, -1, -1, -1,
11659 -1, -1, -1, -1, -1, -1, -1, -1,
11660 -1, -1, -1, -1, -1, -1, -1, -1,
11661 -1, -1, -1, -1, -1, -1, -1, -1,
11662 -1, -1, -1, -1, -1, -1, -1, -1,
11663 -1, -1, -1, -1, -1, -1, -1, -1,
11664 -1, -1, -1, -1, -1, -1, -1, -1,
11665 -1, -1, -1, -1, -1, -1, -1, -1,
11666 -1, -1, -1, -1, -1, -1, -1, -1,
11667 -1, -1, -1, -1, -1, -1, -1, -1,
11668 -1, -1, -1, -1, -1, -1, -1, -1,
11669 -1, -1, -1, -1, -1, -1, -1, -1,
11670 -1, -1, -1, -1, -1, -1, -1, -1,
11671 -1, -1, -1, -1, -1, -1, -1, -1,
11672 -1, -1, -1, -1, -1, -1, 1, 2,
11673 3, 4, 5, 6, 7, 8, 9, -1,
11674 1, 2, 3, 4, 5, 6, 7, 8,
11675 9, -1, 1, 2, 3, 4, 5, 6,
11676 7, 8, 9, -1, -1, -1, -1, -1,
11677 -1, -1, -1, -1, -1, -1, -1, -1,
11678 -1, -1, -1, -1, -1, -1, -1, -1,
11679 -1, -1, -1, -1, -1, -1, -1, -1,
11680 -1, -1, -1, -1, -1, -1, -1, -1,
11681 -1, -1, -1, -1, -1, -1, -1, -1,
11682 -1, -1, -1, -1, -1, -1, -1, -1,
11683 -1, -1, -1, -1, -1, -1, -1, -1,
11684 -1, -1, -1, -1, -1, -1, -1, -1,
11685 -1, -1, -1, -1, -1, -1, -1, -1,
11686 -1, -1, -1, -1, -1, -1, -1, -1,
11687 -1, -1, -1, -1, -1, -1, -1, -1,
11688 -1, -1, -1, -1, -1, -1, -1, -1,
11689 -1, -1, -1, -1, -1, -1, -1, -1,
11690};
11691
11692static const Q_INT8 * const decimal_info[256] = {
11693 num_00, 0, 0, 0, 0, 0, num_06, 0,
11694 0, num_09, num_09, num_0B, num_09, num_0D, num_0E, num_0F,
11695 num_10, 0, 0, num_13, 0, 0, 0, num_17,
11696 num_18, 0, 0, 0, 0, 0, 0, 0,
11697 num_20, 0, 0, 0, num_24, 0, 0, num_27,
11698 0, 0, 0, 0, 0, 0, 0, 0,
11699 0, 0, 0, 0, 0, 0, 0, 0,
11700 0, 0, 0, 0, 0, 0, 0, 0,
11701 0, 0, 0, 0, 0, 0, 0, 0,
11702 0, 0, 0, 0, 0, 0, 0, 0,
11703 0, 0, 0, 0, 0, 0, 0, 0,
11704 0, 0, 0, 0, 0, 0, 0, 0,
11705 0, 0, 0, 0, 0, 0, 0, 0,
11706 0, 0, 0, 0, 0, 0, 0, 0,
11707 0, 0, 0, 0, 0, 0, 0, 0,
11708 0, 0, 0, 0, 0, 0, 0, 0,
11709 0, 0, 0, 0, 0, 0, 0, 0,
11710 0, 0, 0, 0, 0, 0, 0, 0,
11711 0, 0, 0, 0, 0, 0, 0, 0,
11712 0, 0, 0, 0, 0, 0, 0, 0,
11713 0, 0, 0, 0, 0, 0, 0, 0,
11714 0, 0, 0, 0, 0, 0, 0, 0,
11715 0, 0, 0, 0, 0, 0, 0, 0,
11716 0, 0, 0, 0, 0, 0, 0, 0,
11717 0, 0, 0, 0, 0, 0, 0, 0,
11718 0, 0, 0, 0, 0, 0, 0, 0,
11719 0, 0, 0, 0, 0, 0, 0, 0,
11720 0, 0, 0, 0, 0, 0, 0, 0,
11721 0, 0, 0, 0, 0, 0, 0, 0,
11722 0, 0, 0, 0, 0, 0, 0, 0,
11723 0, 0, 0, 0, 0, 0, 0, 0,
11724 0, 0, 0, 0, 0, 0, 0, num_18,
11725};
11726// 47354 bytes
11727
11728// END OF GENERATED DATA
11729
11730#endif
11731
11732static inline QChar::Category category( const QChar &c )
11733{
11734#ifndef QT_NO_UNICODETABLES
11735 return (QChar::Category)(unicode_info[c.row()][c.cell()]);
11736#else
11737// ### just ASCII
11738 if ( c.unicode() < 0x100 ) {
11739 return (QChar::Category)(ui_00[c.unicode()]);
11740 }
11741 return QChar::Letter_Uppercase; //#######
11742#endif
11743}
11744
11745static inline QChar lower( const QChar &c )
11746{
11747#ifndef QT_NO_UNICODETABLES
11748 uchar row = c.row();
11749 uchar cell = c.cell();
11750 if ( unicode_info[row][cell] != QChar::Letter_Uppercase )
11751 return c;
11752 Q_UINT16 lower = *( case_info[row] + cell );
11753 if ( lower == 0 )
11754 return c;
11755 return lower;
11756#else
11757 if ( c.row() )
11758 return c;
11759 else
11760 return QChar( tolower((uchar) c.latin1()) );
11761#endif
11762}
11763
11764static inline QChar upper( const QChar &c )
11765{
11766#ifndef QT_NO_UNICODETABLES
11767 uchar row = c.row();
11768 uchar cell = c.cell();
11769 if ( unicode_info[row][cell] != QChar::Letter_Lowercase )
11770 return c;
11771 Q_UINT16 upper = *(case_info[row]+cell);
11772 if ( upper == 0 )
11773 return c;
11774 return upper;
11775#else
11776 if ( c.row() )
11777 return c;
11778 else
11779 return QChar( toupper((uchar) c.latin1()) );
11780#endif
11781}
11782
11783static inline QChar::Direction direction( const QChar &c )
11784{
11785#ifndef QT_NO_UNICODETABLES
11786 const Q_UINT8 *rowp = direction_info[c.row()];
11787 if(!rowp) return QChar::DirL;
11788 return (QChar::Direction) ( *(rowp+c.cell()) & 0x1f );
11789#else
11790 return QChar::DirL;
11791#endif
11792}
11793
11794static inline bool mirrored( const QChar &c )
11795{
11796#ifndef QT_NO_UNICODETABLES
11797 const Q_UINT8 *rowp = direction_info[c.row()];
11798 if ( !rowp )
11799 return FALSE;
11800 return *(rowp+c.cell())>128;
11801#else
11802 return FALSE;
11803#endif
11804}
11805
11806#ifndef QT_NO_UNICODETABLES
11807static const Q_UINT16 symmetricPairs[] = {
11808 0x0028, 0x0029, 0x003C, 0x003E, 0x005B, 0x005D, 0x007B, 0x007D,
11809 0x00AB, 0x00BB, 0x2039, 0x203A, 0x2045, 0x2046, 0x207D, 0x207E,
11810 0x208D, 0x208E, 0x2208, 0x220B, 0x2209, 0x220C, 0x220A, 0x220D,
11811 0x2215, 0x29F5, 0x223C, 0x223D, 0x2243, 0x22CD, 0x2252, 0x2253,
11812 0x2254, 0x2255, 0x2264, 0x2265, 0x2266, 0x2267, 0x2268, 0x2269,
11813 0x226A, 0x226B, 0x226E, 0x226F, 0x2270, 0x2271, 0x2272, 0x2273,
11814 0x2274, 0x2275, 0x2276, 0x2277, 0x2278, 0x2279, 0x227A, 0x227B,
11815 0x227C, 0x227D, 0x227E, 0x227F, 0x2280, 0x2281, 0x2282, 0x2283,
11816 0x2284, 0x2285, 0x2286, 0x2287, 0x2288, 0x2289, 0x228A, 0x228B,
11817 0x228F, 0x2290, 0x2291, 0x2292, 0x2298, 0x29B8, 0x22A2, 0x22A3,
11818 0x22A6, 0x2ADE, 0x22A8, 0x2AE4, 0x22A9, 0x2AE3, 0x22AB, 0x2AE5,
11819 0x22B0, 0x22B1, 0x22B2, 0x22B3, 0x22B4, 0x22B5, 0x22B6, 0x22B7,
11820 0x22C9, 0x22CA, 0x22CB, 0x22CC, 0x22D0, 0x22D1, 0x22D6, 0x22D7,
11821 0x22D8, 0x22D9, 0x22DA, 0x22DB, 0x22DC, 0x22DD, 0x22DE, 0x22DF,
11822 0x22E0, 0x22E1, 0x22E2, 0x22E3, 0x22E4, 0x22E5, 0x22E6, 0x22E7,
11823 0x22E8, 0x22E9, 0x22EA, 0x22EB, 0x22EC, 0x22ED, 0x22F0, 0x22F1,
11824 0x22F2, 0x22FA, 0x22F3, 0x22FB, 0x22F4, 0x22FC, 0x22F6, 0x22FD,
11825 0x22F7, 0x22FE, 0x2308, 0x2309, 0x230A, 0x230B, 0x2329, 0x232A,
11826 0x2768, 0x2769, 0x276A, 0x276B, 0x276C, 0x276D, 0x276E, 0x276F,
11827 0x2770, 0x2771, 0x2772, 0x2773, 0x2774, 0x2775, 0x27D5, 0x27D6,
11828 0x27DD, 0x27DE, 0x27E2, 0x27E3, 0x27E4, 0x27E5, 0x27E6, 0x27E7,
11829 0x27E8, 0x27E9, 0x27EA, 0x27EB, 0x2983, 0x2984, 0x2985, 0x2986,
11830 0x2987, 0x2988, 0x2989, 0x298A, 0x298B, 0x298C, 0x298D, 0x2990,
11831 0x298E, 0x298F, 0x2991, 0x2992, 0x2993, 0x2994, 0x2995, 0x2996,
11832 0x2997, 0x2998, 0x29C0, 0x29C1, 0x29C4, 0x29C5, 0x29CF, 0x29D0,
11833 0x29D1, 0x29D2, 0x29D4, 0x29D5, 0x29D8, 0x29D9, 0x29DA, 0x29DB,
11834 0x29F8, 0x29F9, 0x29FC, 0x29FD, 0x2A2B, 0x2A2C, 0x2A34, 0x2A35,
11835 0x2A3C, 0x2A3D, 0x2A64, 0x2A65, 0x2A79, 0x2A7A, 0x2A7D, 0x2A7E,
11836 0x2A7F, 0x2A80, 0x2A81, 0x2A82, 0x2A83, 0x2A84, 0x2A8B, 0x2A8C,
11837 0x2A91, 0x2A92, 0x2A93, 0x2A94, 0x2A95, 0x2A96, 0x2A97, 0x2A98,
11838 0x2A99, 0x2A9A, 0x2A9B, 0x2A9C, 0x2AA1, 0x2AA2, 0x2AA6, 0x2AA7,
11839 0x2AA8, 0x2AA9, 0x2AAA, 0x2AAB, 0x2AAC, 0x2AAD, 0x2AAF, 0x2AB0,
11840 0x2AB3, 0x2AB4, 0x2ABB, 0x2ABC, 0x2ABD, 0x2ABE, 0x2ABF, 0x2AC0,
11841 0x2AC1, 0x2AC2, 0x2AC3, 0x2AC4, 0x2AC5, 0x2AC6, 0x2ACD, 0x2ACE,
11842 0x2ACF, 0x2AD0, 0x2AD1, 0x2AD2, 0x2AD3, 0x2AD4, 0x2AD5, 0x2AD6,
11843 0x2AEC, 0x2AED, 0x2AF7, 0x2AF8, 0x2AF9, 0x2AFA, 0x3008, 0x3009,
11844 0x300A, 0x300B, 0x300C, 0x300D, 0x300E, 0x300F, 0x3010, 0x3011,
11845 0x3014, 0x3015, 0x3016, 0x3017, 0x3018, 0x3019, 0x301A, 0x301B,
11846 0xFF08, 0xFF09, 0xFF1C, 0xFF1E, 0xFF3B, 0xFF3D, 0xFF5B, 0xFF5D,
11847 0xFF5F, 0xFF60, 0xFF62, 0xFF63,
11848};
11849
11850// ### shouldn't this be const?
11851static const int symmetricPairsSize =
11852 sizeof(symmetricPairs)/sizeof(symmetricPairs[0]);
11853
11854/*
11855 * ----------------------------------------------------------------------
11856 * End of unicode tables
11857 * ----------------------------------------------------------------------
11858 */
11859
11860#endif
11861
11862static int ucstrcmp( const QString &as, const QString &bs )
11863{
11864 const QChar *a = as.unicode();
11865 const QChar *b = bs.unicode();
11866 if ( a == b )
11867 return 0;
11868 if ( a == 0 )
11869 return 1;
11870 if ( b == 0 )
11871 return -1;
11872 int l=QMIN(as.length(),bs.length());
11873 while ( l-- && *a == *b )
11874 a++,b++;
11875 if ( l==-1 )
11876 return ( as.length()-bs.length() );
11877 return a->unicode() - b->unicode();
11878}
11879
11880static int ucstrncmp( const QChar *a, const QChar *b, int l )
11881{
11882 while ( l-- && *a == *b )
11883 a++,b++;
11884 if ( l==-1 )
11885 return 0;
11886 return a->unicode() - b->unicode();
11887}
11888
11889static int ucstrnicmp( const QChar *a, const QChar *b, int l )
11890{
11891 while ( l-- && ::lower( *a ) == ::lower( *b ) )
11892 a++,b++;
11893 if ( l==-1 )
11894 return 0;
11895 return ::lower( *a ).unicode() - ::lower( *b ).unicode();
11896}
11897
11898static uint computeNewMax( uint len )
11899{
11900 uint newMax = 4;
11901 while ( newMax < len )
11902 newMax *= 2;
11903 // try to spare some memory
11904 if ( newMax >= 1024 * 1024 && len <= newMax - (newMax >> 2) )
11905 newMax -= newMax >> 2;
11906 return newMax;
11907}
11908
11909/*!
11910 \class QCharRef qstring.h
11911 \reentrant
11912 \brief The QCharRef class is a helper class for QString.
11913
11914 \ingroup text
11915
11916 When you get an object of type QCharRef, if you can assign to it,
11917 the assignment will apply to the character in the string from
11918 which you got the reference. That is its whole purpose in life.
11919 The QCharRef becomes invalid once modifications are made to the
11920 string: if you want to keep the character, copy it into a QChar.
11921
11922 Most of the QChar member functions also exist in QCharRef.
11923 However, they are not explicitly documented here.
11924
11925 \sa QString::operator[]() QString::at() QChar
11926*/
11927
11928/*!
11929 \class QChar qstring.h
11930 \reentrant
11931 \brief The QChar class provides a lightweight Unicode character.
11932
11933 \ingroup text
11934
11935 Unicode characters are (so far) 16-bit entities without any markup
11936 or structure. This class represents such an entity. It is
11937 lightweight, so it can be used everywhere. Most compilers treat it
11938 like a "short int". (In a few years it may be necessary to make
11939 QChar 32-bit when more than 65536 Unicode code points have been
11940 defined and come into use.)
11941
11942 QChar provides a full complement of testing/classification
11943 functions, converting to and from other formats, converting from
11944 composed to decomposed Unicode, and trying to compare and
11945 case-convert if you ask it to.
11946
11947 The classification functions include functions like those in
11948 ctype.h, but operating on the full range of Unicode characters.
11949 They all return TRUE if the character is a certain type of
11950 character; otherwise they return FALSE. These classification
11951 functions are isNull() (returns TRUE if the character is U+0000),
11952 isPrint() (TRUE if the character is any sort of printable
11953 character, including whitespace), isPunct() (any sort of
11954 punctation), isMark() (Unicode Mark), isLetter (a letter),
11955 isNumber() (any sort of numeric character), isLetterOrNumber(),
11956 and isDigit() (decimal digits). All of these are wrappers around
11957 category() which return the Unicode-defined category of each
11958 character.
11959
11960 QChar further provides direction(), which indicates the "natural"
11961 writing direction of this character. The joining() function
11962 indicates how the character joins with its neighbors (needed
11963 mostly for Arabic) and finally mirrored(), which indicates whether
11964 the character needs to be mirrored when it is printed in its
11965 "unnatural" writing direction.
11966
11967 Composed Unicode characters (like &aring;) can be converted to
11968 decomposed Unicode ("a" followed by "ring above") by using
11969 decomposition().
11970
11971 In Unicode, comparison is not necessarily possible and case
11972 conversion is very difficult at best. Unicode, covering the
11973 "entire" world, also includes most of the world's case and sorting
11974 problems. Qt tries, but not very hard: operator==() and friends
11975 will do comparison based purely on the numeric Unicode value (code
11976 point) of the characters, and upper() and lower() will do case
11977 changes when the character has a well-defined upper/lower-case
11978 equivalent. There is no provision for locale-dependent case
11979 folding rules or comparison; these functions are meant to be fast
11980 so they can be used unambiguously in data structures. (See
11981 QString::localeAwareCompare() though.)
11982
11983 The conversion functions include unicode() (to a scalar), latin1()
11984 (to scalar, but converts all non-Latin1 characters to 0), row()
11985 (gives the Unicode row), cell() (gives the Unicode cell),
11986 digitValue() (gives the integer value of any of the numerous digit
11987 characters), and a host of constructors.
11988
11989 More information can be found in the document \link unicode.html
11990 About Unicode. \endlink
11991
11992 \sa QString QCharRef
11993*/
11994
11995/*!
11996 \enum QChar::Category
11997
11998 This enum maps the Unicode character categories.
11999
12000 The following characters are normative in Unicode:
12001
12002 \value Mark_NonSpacing Unicode class name Mn
12003
12004 \value Mark_SpacingCombining Unicode class name Mc
12005
12006 \value Mark_Enclosing Unicode class name Me
12007
12008 \value Number_DecimalDigit Unicode class name Nd
12009
12010 \value Number_Letter Unicode class name Nl
12011
12012 \value Number_Other Unicode class name No
12013
12014 \value Separator_Space Unicode class name Zs
12015
12016 \value Separator_Line Unicode class name Zl
12017
12018 \value Separator_Paragraph Unicode class name Zp
12019
12020 \value Other_Control Unicode class name Cc
12021
12022 \value Other_Format Unicode class name Cf
12023
12024 \value Other_Surrogate Unicode class name Cs
12025
12026 \value Other_PrivateUse Unicode class name Co
12027
12028 \value Other_NotAssigned Unicode class name Cn
12029
12030
12031 The following categories are informative in Unicode:
12032
12033 \value Letter_Uppercase Unicode class name Lu
12034
12035 \value Letter_Lowercase Unicode class name Ll
12036
12037 \value Letter_Titlecase Unicode class name Lt
12038
12039 \value Letter_Modifier Unicode class name Lm
12040
12041 \value Letter_Other Unicode class name Lo
12042
12043 \value Punctuation_Connector Unicode class name Pc
12044
12045 \value Punctuation_Dash Unicode class name Pd
12046
12047 \value Punctuation_Open Unicode class name Ps
12048
12049 \value Punctuation_Close Unicode class name Pe
12050
12051 \value Punctuation_InitialQuote Unicode class name Pi
12052
12053 \value Punctuation_FinalQuote Unicode class name Pf
12054
12055 \value Punctuation_Other Unicode class name Po
12056
12057 \value Symbol_Math Unicode class name Sm
12058
12059 \value Symbol_Currency Unicode class name Sc
12060
12061 \value Symbol_Modifier Unicode class name Sk
12062
12063 \value Symbol_Other Unicode class name So
12064
12065
12066 There are two categories that are specific to Qt:
12067
12068 \value NoCategory used when Qt is dazed and confused and cannot
12069 make sense of anything.
12070
12071 \value Punctuation_Dask old typo alias for Punctuation_Dash
12072
12073*/
12074
12075/*!
12076 \enum QChar::Direction
12077
12078 This enum type defines the Unicode direction attributes. See \link
12079 http://www.unicode.org/ the Unicode Standard\endlink for a
12080 description of the values.
12081
12082 In order to conform to C/C++ naming conventions "Dir" is prepended
12083 to the codes used in the Unicode Standard.
12084*/
12085
12086/*!
12087 \enum QChar::Decomposition
12088
12089 This enum type defines the Unicode decomposition attributes. See
12090 \link http://www.unicode.org/ the Unicode Standard\endlink for a
12091 description of the values.
12092*/
12093
12094/*!
12095 \enum QChar::Joining
12096
12097 This enum type defines the Unicode joining attributes. See \link
12098 http://www.unicode.org/ the Unicode Standard\endlink for a
12099 description of the values.
12100*/
12101
12102/*!
12103 \enum QChar::CombiningClass
12104
12105 This enum type defines names for some of the Unicode combining
12106 classes. See \link http://www.unicode.org/ the Unicode
12107 Standard\endlink for a description of the values.
12108*/
12109
12110/*!
12111 \fn void QChar::setCell( uchar cell )
12112 \internal
12113*/
12114
12115/*!
12116 \fn void QChar::setRow( uchar row )
12117 \internal
12118*/
12119
12120
12121/*!
12122 \fn QChar::QChar()
12123
12124 Constructs a null QChar (one that isNull()).
12125*/
12126
12127
12128/*!
12129 \fn QChar::QChar( char c )
12130
12131 Constructs a QChar corresponding to ASCII/Latin1 character \a c.
12132*/
12133
12134
12135/*!
12136 \fn QChar::QChar( uchar c )
12137
12138 Constructs a QChar corresponding to ASCII/Latin1 character \a c.
12139*/
12140
12141
12142/*!
12143 \fn QChar::QChar( uchar c, uchar r )
12144
12145 Constructs a QChar for Unicode cell \a c in row \a r.
12146*/
12147
12148
12149/*!
12150 \fn QChar::QChar( const QChar& c )
12151
12152 Constructs a copy of \a c. This is a deep copy, if such a
12153 lightweight object can be said to have deep copies.
12154*/
12155
12156
12157/*!
12158 \fn QChar::QChar( ushort rc )
12159
12160 Constructs a QChar for the character with Unicode code point \a rc.
12161*/
12162
12163
12164/*!
12165 \fn QChar::QChar( short rc )
12166
12167 Constructs a QChar for the character with Unicode code point \a rc.
12168*/
12169
12170
12171/*!
12172 \fn QChar::QChar( uint rc )
12173
12174 Constructs a QChar for the character with Unicode code point \a rc.
12175*/
12176
12177
12178/*!
12179 \fn QChar::QChar( int rc )
12180
12181 Constructs a QChar for the character with Unicode code point \a rc.
12182*/
12183
12184
12185/*!
12186 \fn bool QChar::networkOrdered ()
12187
12188 \obsolete
12189
12190 Returns TRUE if this character is in network byte order (MSB
12191 first); otherwise returns FALSE. This is platform dependent.
12192*/
12193
12194
12195/*!
12196 \fn bool QChar::isNull() const
12197
12198 Returns TRUE if the character is the Unicode character 0x0000,
12199 i.e. ASCII NUL; otherwise returns FALSE.
12200*/
12201
12202/*!
12203 \fn uchar QChar::cell () const
12204
12205 Returns the cell (least significant byte) of the Unicode
12206 character.
12207*/
12208
12209/*!
12210 \fn uchar QChar::row () const
12211
12212 Returns the row (most significant byte) of the Unicode character.
12213*/
12214
12215/*!
12216 Returns TRUE if the character is a printable character; otherwise
12217 returns FALSE. This is any character not of category Cc or Cn.
12218
12219 Note that this gives no indication of whether the character is
12220 available in a particular \link QFont font\endlink.
12221*/
12222bool QChar::isPrint() const
12223{
12224 Category c = ::category( *this );
12225 return !(c == Other_Control || c == Other_NotAssigned);
12226}
12227
12228/*!
12229 Returns TRUE if the character is a separator character
12230 (Separator_* categories); otherwise returns FALSE.
12231*/
12232bool QChar::isSpace() const
12233{
12234 if( ucs >= 9 && ucs <=13 ) return TRUE;
12235 Category c = ::category( *this );
12236 return c >= Separator_Space && c <= Separator_Paragraph;
12237}
12238
12239/*!
12240 Returns TRUE if the character is a mark (Mark_* categories);
12241 otherwise returns FALSE.
12242*/
12243bool QChar::isMark() const
12244{
12245 Category c = ::category( *this );
12246 return c >= Mark_NonSpacing && c <= Mark_Enclosing;
12247}
12248
12249/*!
12250 Returns TRUE if the character is a punctuation mark (Punctuation_*
12251 categories); otherwise returns FALSE.
12252*/
12253bool QChar::isPunct() const
12254{
12255 Category c = ::category( *this );
12256 return (c >= Punctuation_Connector && c <= Punctuation_Other);
12257}
12258
12259/*!
12260 Returns TRUE if the character is a letter (Letter_* categories);
12261 otherwise returns FALSE.
12262*/
12263bool QChar::isLetter() const
12264{
12265 Category c = ::category( *this );
12266 return (c >= Letter_Uppercase && c <= Letter_Other);
12267}
12268
12269/*!
12270 Returns TRUE if the character is a number (of any sort - Number_*
12271 categories); otherwise returns FALSE.
12272
12273 \sa isDigit()
12274*/
12275bool QChar::isNumber() const
12276{
12277 Category c = ::category( *this );
12278 return c >= Number_DecimalDigit && c <= Number_Other;
12279}
12280
12281/*!
12282 Returns TRUE if the character is a letter or number (Letter_* or
12283 Number_* categories); otherwise returns FALSE.
12284*/
12285bool QChar::isLetterOrNumber() const
12286{
12287 Category c = ::category( *this );
12288 return (c >= Letter_Uppercase && c <= Letter_Other)
12289 || (c >= Number_DecimalDigit && c <= Number_Other);
12290}
12291
12292
12293/*!
12294 Returns TRUE if the character is a decimal digit
12295 (Number_DecimalDigit); otherwise returns FALSE.
12296*/
12297bool QChar::isDigit() const
12298{
12299 return (::category( *this ) == Number_DecimalDigit);
12300}
12301
12302
12303/*!
12304 Returns TRUE if the character is a symbol (Symbol_* categories);
12305 otherwise returns FALSE.
12306*/
12307bool QChar::isSymbol() const
12308{
12309 Category c = ::category( *this );
12310 return c >= Symbol_Math && c <= Symbol_Other;
12311}
12312
12313/*!
12314 Returns the numeric value of the digit, or -1 if the character is
12315 not a digit.
12316*/
12317int QChar::digitValue() const
12318{
12319#ifndef QT_NO_UNICODETABLES
12320 const Q_INT8 *dec_row = decimal_info[row()];
12321 if( !dec_row )
12322 return -1;
12323 return dec_row[cell()];
12324#else
12325 // ##### just latin1
12326 if ( ucs < '0' || ucs > '9' )
12327 return -1;
12328 else
12329 return ucs - '0';
12330#endif
12331}
12332
12333/*!
12334 Returns the character category.
12335
12336 \sa Category
12337*/
12338QChar::Category QChar::category() const
12339{
12340 return ::category( *this );
12341}
12342
12343/*!
12344 Returns the character's direction.
12345
12346 \sa Direction
12347*/
12348QChar::Direction QChar::direction() const
12349{
12350 return ::direction( *this );
12351}
12352
12353/*!
12354 \warning This function is not supported (it may change to use
12355 Unicode character classes).
12356
12357 Returns information about the joining properties of the character
12358 (needed for example, for Arabic).
12359*/
12360QChar::Joining QChar::joining() const
12361{
12362#ifndef QT_NO_UNICODETABLES
12363 const Q_UINT8 *rowp = direction_info[row()];
12364 if ( !rowp )
12365 return QChar::OtherJoining;
12366 return (Joining) ((*(rowp+cell()) >> 5) &0x3);
12367#else
12368 return OtherJoining;
12369#endif
12370}
12371
12372
12373/*!
12374 Returns TRUE if the character is a mirrored character (one that
12375 should be reversed if the text direction is reversed); otherwise
12376 returns FALSE.
12377*/
12378bool QChar::mirrored() const
12379{
12380 return ::mirrored( *this );
12381}
12382
12383/*!
12384 Returns the mirrored character if this character is a mirrored
12385 character, otherwise returns the character itself.
12386*/
12387QChar QChar::mirroredChar() const
12388{
12389#ifndef QT_NO_UNICODETABLES
12390 if(!::mirrored( *this ))
12391 return *this;
12392
12393 int i;
12394 int c = unicode();
12395 for (i = 0; i < symmetricPairsSize; i ++) {
12396 if (symmetricPairs[i] == c)
12397 return symmetricPairs[(i%2) ? (i-1) : (i+1)];
12398 }
12399#endif
12400 return *this;
12401}
12402
12403#ifndef QT_NO_UNICODETABLES
12404// ### REMOVE ME 4.0
12405static QString shared_decomp;
12406#endif
12407/*!
12408 \nonreentrant
12409
12410 Decomposes a character into its parts. Returns QString::null if no
12411 decomposition exists.
12412*/
12413const QString &QChar::decomposition() const
12414{
12415#ifndef QT_NO_UNICODETABLES
12416 const Q_UINT16 *r = decomposition_info[row()];
12417 if(!r) return QString::null;
12418
12419 Q_UINT16 pos = r[cell()];
12420 if(!pos) return QString::null;
12421 pos+=2;
12422
12423 QString s;
12424 Q_UINT16 c;
12425 while((c = decomposition_map[pos++]) != 0) s += QChar(c);
12426 // ### In 4.0, return s, and not shared_decomp. shared_decomp
12427 // prevents this function from being reentrant.
12428 shared_decomp = s;
12429 return shared_decomp;
12430#else
12431 return QString::null;
12432#endif
12433}
12434
12435/*!
12436 Returns the tag defining the composition of the character. Returns
12437 QChar::Single if no decomposition exists.
12438*/
12439QChar::Decomposition QChar::decompositionTag() const
12440{
12441#ifndef QT_NO_UNICODETABLES
12442 const Q_UINT16 *r = decomposition_info[row()];
12443 if(!r) return QChar::Single;
12444
12445 Q_UINT16 pos = r[cell()];
12446 if(!pos) return QChar::Single;
12447
12448 return (QChar::Decomposition) decomposition_map[pos];
12449#else
12450 return Single; // ########### FIX eg. just latin1
12451#endif
12452}
12453
12454/*!
12455 Returns the combining class for the character as defined in the
12456 Unicode standard. This is mainly useful as a positioning hint for
12457 marks attached to a base character.
12458
12459 The Qt text rendering engine uses this information to correctly
12460 position non spacing marks around a base character.
12461*/
12462unsigned char QChar::combiningClass() const
12463{
12464#ifndef QT_NO_UNICODETABLES
12465 const Q_UINT8 *rowp = combining_info[row()];
12466 if ( !rowp )
12467 return 0;
12468 return *(rowp+cell());
12469#else
12470 return 0;
12471#endif
12472}
12473
12474
12475/*!
12476 Returns the lowercase equivalent if the character is uppercase;
12477 otherwise returns the character itself.
12478*/
12479QChar QChar::lower() const
12480{
12481 return ::lower( *this );
12482}
12483
12484/*!
12485 Returns the uppercase equivalent if the character is lowercase;
12486 otherwise returns the character itself.
12487*/
12488QChar QChar::upper() const
12489{
12490 return ::upper( *this );
12491}
12492
12493/*!
12494 \fn QChar::operator char() const
12495
12496 Returns the Latin1 character equivalent to the QChar, or 0. This
12497 is mainly useful for non-internationalized software.
12498
12499 \sa unicode()
12500*/
12501
12502/*!
12503 \fn ushort QChar::unicode() const
12504
12505 Returns the numeric Unicode value equal to the QChar. Normally,
12506 you should use QChar objects as they are equivalent, but for some
12507 low-level tasks (e.g. indexing into an array of Unicode
12508 information), this function is useful.
12509*/
12510
12511/*!
12512 \fn ushort & QChar::unicode()
12513
12514 \overload
12515
12516 Returns a reference to the numeric Unicode value equal to the
12517 QChar.
12518*/
12519
12520/*****************************************************************************
12521 Documentation of QChar related functions
12522 *****************************************************************************/
12523
12524/*!
12525 \fn bool operator==( QChar c1, QChar c2 )
12526
12527 \relates QChar
12528
12529 Returns TRUE if \a c1 and \a c2 are the same Unicode character;
12530 otherwise returns FALSE.
12531*/
12532
12533/*!
12534 \fn bool operator==( char ch, QChar c )
12535
12536 \overload
12537 \relates QChar
12538
12539 Returns TRUE if \a c is the ASCII/Latin1 character \a ch;
12540 otherwise returns FALSE.
12541*/
12542
12543/*!
12544 \fn bool operator==( QChar c, char ch )
12545
12546 \overload
12547 \relates QChar
12548
12549 Returns TRUE if \a c is the ASCII/Latin1 character \a ch;
12550 otherwise returns FALSE.
12551*/
12552
12553/*!
12554 \fn int operator!=( QChar c1, QChar c2 )
12555
12556 \relates QChar
12557
12558 Returns TRUE if \a c1 and \a c2 are not the same Unicode
12559 character; otherwise returns FALSE.
12560*/
12561
12562/*!
12563 \fn int operator!=( char ch, QChar c )
12564
12565 \overload
12566 \relates QChar
12567
12568 Returns TRUE if \a c is not the ASCII/Latin1 character \a ch;
12569 otherwise returns FALSE.
12570*/
12571
12572/*!
12573 \fn int operator!=( QChar c, char ch )
12574
12575 \overload
12576 \relates QChar
12577
12578 Returns TRUE if \a c is not the ASCII/Latin1 character \a ch;
12579 otherwise returns FALSE.
12580*/
12581
12582/*!
12583 \fn int operator<=( QChar c1, QChar c2 )
12584
12585 \relates QChar
12586
12587 Returns TRUE if the numeric Unicode value of \a c1 is less than
12588 that of \a c2, or they are the same Unicode character; otherwise
12589 returns FALSE.
12590*/
12591
12592/*!
12593 \fn int operator<=( QChar c, char ch )
12594
12595 \overload
12596 \relates QChar
12597
12598 Returns TRUE if the numeric Unicode value of \a c is less than or
12599 equal to that of the ASCII/Latin1 character \a ch; otherwise
12600 returns FALSE.
12601*/
12602
12603/*!
12604 \fn int operator<=( char ch, QChar c )
12605
12606 \overload
12607 \relates QChar
12608
12609 Returns TRUE if the numeric Unicode value of the ASCII/Latin1
12610 character \a ch is less than or equal to that of \a c; otherwise
12611 returns FALSE.
12612*/
12613
12614/*!
12615 \fn int operator>=( QChar c1, QChar c2 )
12616
12617 \relates QChar
12618
12619 Returns TRUE if the numeric Unicode value of \a c1 is greater than
12620 that of \a c2, or they are the same Unicode character; otherwise
12621 returns FALSE.
12622*/
12623
12624/*!
12625 \fn int operator>=( QChar c, char ch )
12626
12627 \overload
12628 \relates QChar
12629
12630 Returns TRUE if the numeric Unicode value of \a c is greater than
12631 or equal to that of the ASCII/Latin1 character \a ch; otherwise
12632 returns FALSE.
12633*/
12634
12635/*!
12636 \fn int operator>=( char ch, QChar c )
12637
12638 \overload
12639 \relates QChar
12640
12641 Returns TRUE if the numeric Unicode value of the ASCII/Latin1
12642 character \a ch is greater than or equal to that of \a c;
12643 otherwise returns FALSE.
12644*/
12645
12646/*!
12647 \fn int operator<( QChar c1, QChar c2 )
12648
12649 \relates QChar
12650
12651 Returns TRUE if the numeric Unicode value of \a c1 is less than
12652 that of \a c2; otherwise returns FALSE.
12653*/
12654
12655/*!
12656 \fn int operator<( QChar c, char ch )
12657
12658 \overload
12659 \relates QChar
12660
12661 Returns TRUE if the numeric Unicode value of \a c is less than that
12662 of the ASCII/Latin1 character \a ch; otherwise returns FALSE.
12663*/
12664
12665/*!
12666 \fn int operator<( char ch, QChar c )
12667
12668 \overload
12669 \relates QChar
12670
12671 Returns TRUE if the numeric Unicode value of the ASCII/Latin1
12672 character \a ch is less than that of \a c; otherwise returns
12673 FALSE.
12674*/
12675
12676/*!
12677 \fn int operator>( QChar c1, QChar c2 )
12678
12679 \relates QChar
12680
12681 Returns TRUE if the numeric Unicode value of \a c1 is greater than
12682 that of \a c2; otherwise returns FALSE.
12683*/
12684
12685/*!
12686 \fn int operator>( QChar c, char ch )
12687
12688 \overload
12689 \relates QChar
12690
12691 Returns TRUE if the numeric Unicode value of \a c is greater than
12692 that of the ASCII/Latin1 character \a ch; otherwise returns FALSE.
12693*/
12694
12695/*!
12696 \fn int operator>( char ch, QChar c )
12697
12698 \overload
12699 \relates QChar
12700
12701 Returns TRUE if the numeric Unicode value of the ASCII/Latin1
12702 character \a ch is greater than that of \a c; otherwise returns
12703 FALSE.
12704*/
12705
12706#ifndef QT_NO_UNICODETABLES
12707
12708// small class used internally in QString::Compose()
12709class QLigature
12710{
12711public:
12712 QLigature( QChar c );
12713
12714 Q_UINT16 first() { cur = ligatures; return cur ? *cur : 0; }
12715 Q_UINT16 next() { return cur && *cur ? *(cur++) : 0; }
12716 Q_UINT16 current() { return cur ? *cur : 0; }
12717
12718 int match(QString & str, unsigned int index);
12719 QChar head();
12720 QChar::Decomposition tag();
12721
12722private:
12723 Q_UINT16 *ligatures;
12724 Q_UINT16 *cur;
12725};
12726
12727QLigature::QLigature( QChar c )
12728{
12729 const Q_UINT16 *r = ligature_info[c.row()];
12730 if( !r )
12731 ligatures = 0;
12732 else
12733 {
12734 const Q_UINT16 pos = r[c.cell()];
12735 ligatures = (Q_UINT16 *)&(ligature_map[pos]);
12736 }
12737 cur = ligatures;
12738}
12739
12740QChar QLigature::head()
12741{
12742 if(current())
12743 return QChar(decomposition_map[current()+1]);
12744
12745 return QChar::null;
12746}
12747
12748QChar::Decomposition QLigature::tag()
12749{
12750 if(current())
12751 return (QChar::Decomposition) decomposition_map[current()];
12752
12753 return QChar::Canonical;
12754}
12755
12756int QLigature::match(QString & str, unsigned int index)
12757{
12758 unsigned int i=index;
12759
12760 if(!current()) return 0;
12761
12762 Q_UINT16 lig = current() + 2;
12763 Q_UINT16 ch;
12764
12765 while ((i < str.length()) && (ch = decomposition_map[lig])) {
12766 if (str[(int)i] != QChar(ch))
12767 return 0;
12768 i++;
12769 lig++;
12770 }
12771
12772 if (!decomposition_map[lig])
12773 {
12774 return i-index;
12775 }
12776 return 0;
12777}
12778
12779
12780// this function is just used in QString::compose()
12781static inline bool format(QChar::Decomposition tag, QString & str,
12782 int index, int len)
12783{
12784 unsigned int l = index + len;
12785 unsigned int r = index;
12786
12787 bool left = FALSE, right = FALSE;
12788
12789 left = ((l < str.length()) &&
12790 ((str[(int)l].joining() == QChar::Dual) ||
12791 (str[(int)l].joining() == QChar::Right)));
12792 if (r > 0) {
12793 r--;
12794 //printf("joining(right) = %d\n", str[(int)r].joining());
12795 right = (str[(int)r].joining() == QChar::Dual);
12796 }
12797
12798
12799 switch (tag) {
12800 case QChar::Medial:
12801 return (left & right);
12802 case QChar::Initial:
12803 return (left && !right);
12804 case QChar::Final:
12805 return (right);// && !left);
12806 case QChar::Isolated:
12807 default:
12808 return (!right && !left);
12809 }
12810} // format()
12811#endif
12812
12813/*
12814 QString::compose() and visual() were developed by Gordon Tisher
12815 <tisher@uniserve.ca>, with input from Lars Knoll <knoll@mpi-hd.mpg.de>,
12816 who developed the unicode data tables.
12817*/
12818/*!
12819 \warning This function is not supported in Qt 3.x. It is provided
12820 for experimental and illustrative purposes only. It is mainly of
12821 interest to those experimenting with Arabic and other
12822 composition-rich texts.
12823
12824 Applies possible ligatures to a QString. Useful when
12825 composition-rich text requires rendering with glyph-poor fonts,
12826 but it also makes compositions such as QChar(0x0041) ('A') and
12827 QChar(0x0308) (Unicode accent diaresis), giving QChar(0x00c4)
12828 (German A Umlaut).
12829*/
12830void QString::compose()
12831{
12832#ifndef QT_NO_UNICODETABLES
12833 unsigned int index=0, len;
12834 unsigned int cindex = 0;
12835
12836 QChar code, head;
12837
12838 QMemArray<QChar> dia;
12839
12840 QString composed = *this;
12841
12842 while (index < length()) {
12843 code = at(index);
12844 //printf("\n\nligature for 0x%x:\n", code.unicode());
12845 QLigature ligature(code);
12846 ligature.first();
12847 while(ligature.current()) {
12848 if ((len = ligature.match(*this, index)) != 0) {
12849 head = ligature.head();
12850 unsigned short code = head.unicode();
12851 // we exclude Arabic presentation forms A and a few
12852 // other ligatures, which are undefined in most fonts
12853 if(!(code > 0xfb50 && code < 0xfe80) &&
12854 !(code > 0xfb00 && code < 0xfb2a)) {
12855 // joining info is only needed for Arabic
12856 if (format(ligature.tag(), *this, index, len)) {
12857 //printf("using ligature 0x%x, len=%d\n",code,len);
12858 // replace letter
12859 composed.replace(cindex, len, QChar(head));
12860 index += len-1;
12861 // we continue searching in case we have a final
12862 // form because medial ones are preferred.
12863 if ( len != 1 || ligature.tag() !=QChar::Final )
12864 break;
12865 }
12866 }
12867 }
12868 ligature.next();
12869 }
12870 cindex++;
12871 index++;
12872 }
12873 *this = composed;
12874#endif
12875}
12876
12877
12878// These macros are used for efficient allocation of QChar strings.
12879// IMPORTANT! If you change these, make sure you also change the
12880// "delete unicode" statement in ~QStringData() in qstring.h correspondingly!
12881
12882#define QT_ALLOC_QCHAR_VEC( N ) (QChar*) new char[ sizeof(QChar)*( N ) ]
12883#define QT_DELETE_QCHAR_VEC( P ) delete[] ((char*)( P ))
12884
12885
12886/*!
12887 This utility function converts the 8-bit string \a ba to Unicode,
12888 returning the result.
12889
12890 The caller is responsible for deleting the return value with
12891 delete[].
12892*/
12893
12894QChar* QString::asciiToUnicode( const QByteArray& ba, uint* len )
12895{
12896 if ( ba.isNull() ) {
12897 *len = 0;
12898 return 0;
12899 }
12900 int l = 0;
12901 while ( l < (int)ba.size() && ba[l] )
12902 l++;
12903 char* str = ba.data();
12904 QChar *uc = new QChar[ l ]; // Can't use macro, since function is public
12905 QChar *result = uc;
12906 if ( len )
12907 *len = l;
12908 while (l--)
12909 *uc++ = *str++;
12910 return result;
12911}
12912
12913static QChar* internalAsciiToUnicode( const QByteArray& ba, uint* len )
12914{
12915 if ( ba.isNull() ) {
12916 *len = 0;
12917 return 0;
12918 }
12919 int l = 0;
12920 while ( l < (int)ba.size() && ba[l] )
12921 l++;
12922 char* str = ba.data();
12923 QChar *uc = QT_ALLOC_QCHAR_VEC( l );
12924 QChar *result = uc;
12925 if ( len )
12926 *len = l;
12927 while (l--)
12928 *uc++ = *str++;
12929 return result;
12930}
12931
12932/*!
12933 \overload
12934
12935 This utility function converts the '\0'-terminated 8-bit string \a
12936 str to Unicode, returning the result and setting \a *len to the
12937 length of the Unicode string.
12938
12939 The caller is responsible for deleting the return value with
12940 delete[].
12941*/
12942
12943QChar* QString::asciiToUnicode( const char *str, uint* len, uint maxlen )
12944{
12945 QChar* result = 0;
12946 uint l = 0;
12947 if ( str ) {
12948 if ( maxlen != (uint)-1 ) {
12949 while ( l < maxlen && str[l] )
12950 l++;
12951 } else {
12952 // Faster?
12953 l = qstrlen(str);
12954 }
12955 QChar *uc = new QChar[ l ]; // Can't use macro since function is public
12956 result = uc;
12957 uint i = l;
12958 while ( i-- )
12959 *uc++ = *str++;
12960 }
12961 if ( len )
12962 *len = l;
12963 return result;
12964}
12965
12966static QChar* internalAsciiToUnicode( const char *str, uint* len,
12967 uint maxlen = (uint)-1 )
12968{
12969 QChar* result = 0;
12970 uint l = 0;
12971 if ( str ) {
12972 if ( maxlen != (uint)-1 ) {
12973 while ( l < maxlen && str[l] )
12974 l++;
12975 } else {
12976 // Faster?
12977 l = qstrlen(str);
12978 }
12979 QChar *uc = QT_ALLOC_QCHAR_VEC( l );
12980 result = uc;
12981 uint i = l;
12982 while ( i-- )
12983 *uc++ = *str++;
12984 }
12985 if ( len )
12986 *len = l;
12987 return result;
12988}
12989
12990/*!
12991 This utility function converts \a l 16-bit characters from \a uc
12992 to ASCII, returning a '\0'-terminated string.
12993
12994 The caller is responsible for deleting the resultant string with
12995 delete[].
12996*/
12997char* QString::unicodeToAscii(const QChar *uc, uint l)
12998{
12999 if (!uc) {
13000 return 0;
13001 }
13002 char *a = new char[l+1];
13003 char *result = a;
13004 while (l--) {
13005 *a++ = (uc->unicode() > 0xff) ? '?' : (char)uc->unicode();
13006 uc++;
13007 }
13008 *a = '\0';
13009 return result;
13010}
13011
13012/*****************************************************************************
13013 QString member functions
13014 *****************************************************************************/
13015
13016/*!
13017 \class QString qstring.h
13018 \reentrant
13019
13020 \brief The QString class provides an abstraction of Unicode text
13021 and the classic C '\0'-terminated char array.
13022
13023 \ingroup tools
13024 \ingroup shared
13025 \ingroup text
13026 \mainclass
13027
13028 QString uses \link shclass.html implicit sharing\endlink, which
13029 makes it very efficient and easy to use.
13030
13031 In all of the QString methods that take \c {const char *}
13032 parameters, the \c {const char *} is interpreted as a classic
13033 C-style '\0'-terminated ASCII string. It is legal for the \c
13034 {const char *} parameter to be 0. If the \c {const char *} is not
13035 '\0'-terminated, the results are undefined. Functions that copy
13036 classic C strings into a QString will not copy the terminating
13037 '\0' character. The QChar array of the QString (as returned by
13038 unicode()) is generally not terminated by a '\0'. If you need to
13039 pass a QString to a function that requires a C '\0'-terminated
13040 string use latin1().
13041
13042 \keyword QString::null
13043 A QString that has not been assigned to anything is \e null, i.e.
13044 both the length and data pointer is 0. A QString that references
13045 the empty string ("", a single '\0' char) is \e empty. Both null
13046 and empty QStrings are legal parameters to the methods. Assigning
13047 \c{(const char *) 0} to QString gives a null QString. For
13048 convenience, \c QString::null is a null QString. When sorting,
13049 empty strings come first, followed by non-empty strings, followed
13050 by null strings. We recommend using \c{if ( !str.isNull() )} to
13051 check for a non-null string rather than \c{if ( !str )}; see \l
13052 operator!() for an explanation.
13053
13054 Note that if you find that you are mixing usage of \l QCString,
13055 QString, and \l QByteArray, this causes lots of unnecessary
13056 copying and might indicate that the true nature of the data you
13057 are dealing with is uncertain. If the data is '\0'-terminated 8-bit
13058 data, use \l QCString; if it is unterminated (i.e. contains '\0's)
13059 8-bit data, use \l QByteArray; if it is text, use QString.
13060
13061 Lists of strings are handled by the QStringList class. You can
13062 split a string into a list of strings using QStringList::split(),
13063 and join a list of strings into a single string with an optional
13064 separator using QStringList::join(). You can obtain a list of
13065 strings from a string list that contain a particular substring or
13066 that match a particular \link qregexp.html regex\endlink using
13067 QStringList::grep().
13068
13069 <b>Note for C programmers</b>
13070
13071 Due to C++'s type system and the fact that QString is implicitly
13072 shared, QStrings may be treated like ints or other simple base
13073 types. For example:
13074
13075 \code
13076 QString boolToString( bool b )
13077 {
13078 QString result;
13079 if ( b )
13080 result = "True";
13081 else
13082 result = "False";
13083 return result;
13084 }
13085 \endcode
13086
13087 The variable, result, is an auto variable allocated on the stack.
13088 When return is called, because we're returning by value, The copy
13089 constructor is called and a copy of the string is returned. (No
13090 actual copying takes place thanks to the implicit sharing, see
13091 below.)
13092
13093 Throughout Qt's source code you will encounter QString usages like
13094 this:
13095 \code
13096 QString func( const QString& input )
13097 {
13098 QString output = input;
13099 // process output
13100 return output;
13101 }
13102 \endcode
13103
13104 The 'copying' of input to output is almost as fast as copying a
13105 pointer because behind the scenes copying is achieved by
13106 incrementing a reference count. QString (like all Qt's implicitly
13107 shared classes) operates on a copy-on-write basis, only copying if
13108 an instance is actually changed.
13109
13110 If you wish to create a deep copy of a QString without losing any
13111 Unicode information then you should use QDeepCopy.
13112
13113 \sa QChar QCString QByteArray QConstString
13114*/
13115
13116/*! \enum Qt::ComparisonFlags
13117\internal
13118*/
13119/*!
13120 \enum Qt::StringComparisonMode
13121
13122 This enum type is used to set the string comparison mode when
13123 searching for an item. It is used by QListBox, QListView and
13124 QIconView, for example. We'll refer to the string being searched
13125 as the 'target' string.
13126
13127 \value CaseSensitive The strings must match case sensitively.
13128 \value ExactMatch The target and search strings must match exactly.
13129 \value BeginsWith The target string begins with the search string.
13130 \value EndsWith The target string ends with the search string.
13131 \value Contains The target string contains the search string.
13132
13133 If you OR these flags together (excluding \c CaseSensitive), the
13134 search criteria be applied in the following order: \c ExactMatch,
13135 \c BeginsWith, \c EndsWith, \c Contains.
13136
13137 Matching is case-insensitive unless \c CaseSensitive is set. \c
13138 CaseSensitive may be OR-ed with any combination of the other
13139 flags.
13140
13141*/
13142Q_EXPORT QStringData *QString::shared_null = 0;
13143QT_STATIC_CONST_IMPL QString QString::null;
13144QT_STATIC_CONST_IMPL QChar QChar::null;
13145QT_STATIC_CONST_IMPL QChar QChar::replacement((ushort)0xfffd);
13146QT_STATIC_CONST_IMPL QChar QChar::byteOrderMark((ushort)0xfeff);
13147QT_STATIC_CONST_IMPL QChar QChar::byteOrderSwapped((ushort)0xfffe);
13148QT_STATIC_CONST_IMPL QChar QChar::nbsp((ushort)0x00a0);
13149
13150QStringData* QString::makeSharedNull()
13151{
13152 QString::shared_null = new QStringData;
13153#if defined( Q_OS_MAC )
13154 QString *that = const_cast<QString *>(&QString::null);
13155 that->d = QString::shared_null;
13156#endif
13157 return QString::shared_null;
13158}
13159
13160// Uncomment this to get some useful statistics.
13161// #define Q2HELPER(x) x
13162
13163#ifdef Q2HELPER
13164static int stat_construct_charstar=0;
13165static int stat_construct_charstar_size=0;
13166static int stat_construct_null=0;
13167static int stat_construct_int=0;
13168static int stat_construct_int_size=0;
13169static int stat_construct_ba=0;
13170static int stat_get_ascii=0;
13171static int stat_get_ascii_size=0;
13172static int stat_copy_on_write=0;
13173static int stat_copy_on_write_size=0;
13174static int stat_fast_copy=0;
13175Q_EXPORT void qt_qstring_stats()
13176{
13177 qDebug("construct_charstar = %d (%d chars)", stat_construct_charstar, stat_construct_charstar_size);
13178 qDebug("construct_null = %d", stat_construct_null);
13179 qDebug("construct_int = %d (%d chars)", stat_construct_int, stat_construct_int_size);
13180 qDebug("construct_ba = %d", stat_construct_ba);
13181 qDebug("get_ascii = %d (%d chars)", stat_get_ascii, stat_get_ascii_size);
13182 qDebug("copy_on_write = %d (%d chars)", stat_copy_on_write, stat_copy_on_write_size);
13183 qDebug("fast_copy = %d", stat_fast_copy);
13184}
13185#else
13186#define Q2HELPER(x)
13187#endif
13188
13189/*!
13190 \fn QString::QString()
13191
13192 Constructs a null string, i.e. both the length and data pointer
13193 are 0.
13194
13195 \sa isNull()
13196*/
13197
13198/*!
13199 Constructs a string of length one, containing the character \a ch.
13200*/
13201QString::QString( QChar ch )
13202{
13203 d = new QStringData( QT_ALLOC_QCHAR_VEC( 1 ), 1, 1 );
13204 d->unicode[0] = ch;
13205}
13206
13207/*!
13208 Constructs an implicitly shared copy of \a s. This is very fast
13209 since it only involves incrementing a reference count.
13210*/
13211QString::QString( const QString &s ) :
13212 d(s.d)
13213{
13214 Q2HELPER(stat_fast_copy++)
13215 d->ref();
13216}
13217
13218/*!
13219 \internal
13220
13221 Private function.
13222
13223 Constructs a string with preallocated space for \a size characters.
13224
13225 The string is empty.
13226
13227 \sa isNull()
13228*/
13229
13230QString::QString( int size, bool /*dummy*/ )
13231{
13232 if ( size ) {
13233 Q2HELPER(stat_construct_int++)
13234 int l = size;
13235 Q2HELPER(stat_construct_int_size+=l)
13236 QChar* uc = QT_ALLOC_QCHAR_VEC( l );
13237 d = new QStringData( uc, 0, l );
13238 } else {
13239 Q2HELPER(stat_construct_null++)
13240 d = shared_null ? shared_null : (shared_null=new QStringData);
13241 d->ref();
13242 }
13243}
13244
13245/*!
13246 Constructs a string that is a deep copy of \a ba interpreted as a
13247 classic C string.
13248*/
13249
13250QString::QString( const QByteArray& ba )
13251{
13252 Q2HELPER(stat_construct_ba++)
13253 uint l;
13254 QChar *uc = internalAsciiToUnicode(ba,&l);
13255 d = new QStringData(uc,l,l);
13256}
13257
13258/*!
13259 Constructs a string that is a deep copy of the first \a length
13260 characters in the QChar array.
13261
13262 If \a unicode and \a length are 0, then a null string is created.
13263
13264 If only \a unicode is 0, the string is empty but has \a length
13265 characters of space preallocated: QString expands automatically
13266 anyway, but this may speed up some cases a little. We recommend
13267 using the plain constructor and setLength() for this purpose since
13268 it will result in more readable code.
13269
13270 \sa isNull() setLength()
13271*/
13272
13273QString::QString( const QChar* unicode, uint length )
13274{
13275 if ( !unicode && !length ) {
13276 d = shared_null ? shared_null : makeSharedNull();
13277 d->ref();
13278 } else {
13279 QChar* uc = QT_ALLOC_QCHAR_VEC( length );
13280 if ( unicode )
13281 memcpy(uc, unicode, length*sizeof(QChar));
13282 d = new QStringData(uc,unicode ? length : 0,length);
13283 }
13284}
13285
13286/*!
13287 Constructs a string that is a deep copy of \a str, interpreted as
13288 a classic C string.
13289
13290 If \a str is 0, then a null string is created.
13291
13292 This is a cast constructor, but it is perfectly safe: converting a
13293 Latin1 const char* to QString preserves all the information. You
13294 can disable this constructor by defining \c QT_NO_CAST_ASCII when
13295 you compile your applications. You can also make QString objects
13296 by using setLatin1(), fromLatin1(), fromLocal8Bit(), and
13297 fromUtf8(). Or whatever encoding is appropriate for the 8-bit data
13298 you have.
13299
13300 \sa isNull()
13301*/
13302
13303QString::QString( const char *str )
13304{
13305 Q2HELPER(stat_construct_charstar++)
13306 uint l;
13307 QChar *uc = internalAsciiToUnicode(str,&l);
13308 Q2HELPER(stat_construct_charstar_size+=l)
13309 d = new QStringData(uc,l,l);
13310}
13311
13312/*!
13313 \fn QString::~QString()
13314
13315 Destroys the string and frees the string's data if this is the
13316 last reference to the string.
13317*/
13318
13319
13320/*!
13321 Deallocates any space reserved solely by this QString.
13322
13323 If the string does not share its data with another QString
13324 instance, nothing happens; otherwise the function creates a new,
13325 unique copy of this string. This function is called whenever the
13326 string is modified.
13327*/
13328
13329void QString::real_detach()
13330{
13331 setLength( length() );
13332}
13333
13334void QString::deref()
13335{
13336 if ( d->deref() ) {
13337 if ( d != shared_null )
13338 delete d;
13339 d = 0; // helps debugging
13340 }
13341}
13342
13343void QStringData::deleteSelf()
13344{
13345 delete this;
13346}
13347
13348/*!
13349 \fn QString& QString::operator=( QChar c )
13350
13351 Sets the string to contain just the single character \a c.
13352*/
13353
13354/*!
13355 \fn QString& QString::operator=( char c )
13356
13357 \overload
13358
13359 Sets the string to contain just the single character \a c.
13360*/
13361
13362/*!
13363 \overload
13364
13365 Assigns a shallow copy of \a s to this string and returns a
13366 reference to this string. This is very fast because the string
13367 isn't actually copied.
13368*/
13369QString &QString::operator=( const QString &s )
13370{
13371 Q2HELPER(stat_fast_copy++)
13372 s.d->ref();
13373 deref();
13374 d = s.d;
13375 return *this;
13376}
13377
13378/*!
13379 \overload
13380
13381 Assigns a deep copy of \a cs, interpreted as a classic C string,
13382 to this string and returns a reference to this string.
13383*/
13384QString &QString::operator=( const QCString& cs )
13385{
13386 return setLatin1(cs);
13387}
13388
13389
13390/*!
13391 \overload
13392
13393 Assigns a deep copy of \a str, interpreted as a classic C string
13394 to this string and returns a reference to this string.
13395
13396 If \a str is 0, then a null string is created.
13397
13398 \sa isNull()
13399*/
13400QString &QString::operator=( const char *str )
13401{
13402 return setLatin1(str);
13403}
13404
13405
13406/*!
13407 \fn bool QString::isNull() const
13408
13409 Returns TRUE if the string is null; otherwise returns FALSE. A
13410 null string is always empty.
13411
13412 \code
13413 QString a; // a.unicode() == 0, a.length() == 0
13414 a.isNull(); // TRUE, because a.unicode() == 0
13415 a.isEmpty(); // TRUE
13416 \endcode
13417
13418 \sa isEmpty(), length()
13419*/
13420
13421/*!
13422 \fn bool QString::isEmpty() const
13423
13424 Returns TRUE if the string is empty, i.e. if length() == 0;
13425 otherwise returns FALSE. Null strings are also empty.
13426
13427 \code
13428 QString a( "" );
13429 a.isEmpty(); // TRUE
13430 a.isNull(); // FALSE
13431
13432 QString b;
13433 b.isEmpty(); // TRUE
13434 b.isNull(); // TRUE
13435 \endcode
13436
13437 \sa isNull(), length()
13438*/
13439
13440/*!
13441 \fn uint QString::length() const
13442
13443 Returns the length of the string.
13444
13445 Null strings and empty strings have zero length.
13446
13447 \sa isNull(), isEmpty()
13448*/
13449
13450/*!
13451 If \a newLen is less than the length of the string, then the
13452 string is truncated at position \a newLen. Otherwise nothing
13453 happens.
13454
13455 \code
13456 QString s = "truncate me";
13457 s.truncate( 5 ); // s == "trunc"
13458 \endcode
13459
13460 \sa setLength()
13461*/
13462
13463void QString::truncate( uint newLen )
13464{
13465 if ( newLen < d->len )
13466 setLength( newLen );
13467}
13468
13469/*!
13470 Ensures that at least \a newLen characters are allocated to the
13471 string, and sets the length of the string to \a newLen. Any new
13472 space allocated contains arbitrary data.
13473
13474 If \a newLen is 0, then the string becomes empty, unless the
13475 string is null, in which case it remains null.
13476
13477 If it is not possible to allocate enough memory, the string
13478 remains unchanged.
13479
13480 This function always detaches the string from other references to
13481 the same data.
13482
13483 This function is useful for code that needs to build up a long
13484 string and wants to avoid repeated reallocation. In this example,
13485 we want to add to the string until some condition is true, and
13486 we're fairly sure that size is big enough:
13487 \code
13488 QString result;
13489 int resultLength = 0;
13490 result.setLength( newLen ) // allocate some space
13491 while ( ... ) {
13492 result[resultLength++] = ... // fill (part of) the space with data
13493 }
13494 result.truncate[resultLength]; // and get rid of the undefined junk
13495 \endcode
13496
13497 If \a newLen is an underestimate, the worst that will happen is
13498 that the loop will slow down.
13499
13500 \sa truncate(), isNull(), isEmpty(), length()
13501*/
13502
13503void QString::setLength( uint newLen )
13504{
13505 if ( d->count != 1 || newLen > d->maxl ||
13506 ( newLen * 4 < d->maxl && d->maxl > 4 ) ) {
13507 // detach, grow or shrink
13508 Q2HELPER(stat_copy_on_write++)
13509 Q2HELPER(stat_copy_on_write_size+=d->len)
13510 uint newMax = computeNewMax( newLen );
13511 QChar* nd = QT_ALLOC_QCHAR_VEC( newMax );
13512 if ( nd ) {
13513 uint len = QMIN( d->len, newLen );
13514 if ( d->unicode )
13515 memcpy( nd, d->unicode, sizeof(QChar)*len );
13516 deref();
13517 d = new QStringData( nd, newLen, newMax );
13518 }
13519 } else {
13520 d->len = newLen;
13521 d->setDirty();
13522 }
13523}
13524
13525/*!
13526 This function will return a string that replaces the lowest
13527 numbered occurrence of \c %1, \c %2, ..., \c %9 with \a a.
13528
13529 The \a fieldwidth value specifies the minimum amount of space that
13530 \a a is padded to. A positive value will produce right-aligned
13531 text, whereas a negative value will produce left-aligned text.
13532
13533 \code
13534 QString firstName( "Joe" );
13535 QString lastName( "Bloggs" );
13536 QString fullName;
13537 fullName = QString( "First name is '%1', last name is '%2'" )
13538 .arg( firstName )
13539 .arg( lastName );
13540
13541 // fullName == First name is 'Joe', last name is 'Bloggs'
13542 \endcode
13543
13544 Note that using arg() to construct sentences as we've done in the
13545 example above does not usually translate well into other languages
13546 because sentence structure and word order often differ between
13547 languages.
13548
13549 If there is no place marker (\c %1 or \c %2, etc.), a warning
13550 message (qWarning()) is output and the text is appended at the
13551 end of the string. We recommend that the correct number of place
13552 markers is always used in production code.
13553*/
13554QString QString::arg( const QString& a, int fieldwidth ) const
13555{
13556 int pos, len;
13557 QString r = *this;
13558
13559 if ( !findArg( pos, len ) ) {
13560 qWarning( "QString::arg(): Argument missing: %s, %s",
13561 latin1(), a.latin1() );
13562 // Make sure the text at least appears SOMEWHERE
13563 r += ' ';
13564 pos = r.length();
13565 len = 0;
13566 }
13567
13568 r.replace( pos, len, a );
13569 if ( fieldwidth < 0 ) {
13570 QString s;
13571 while ( (uint)-fieldwidth > a.length() ) {
13572 s += ' ';
13573 fieldwidth++;
13574 }
13575 r.insert( pos + a.length(), s );
13576 } else if ( fieldwidth ) {
13577 QString s;
13578 while ( (uint)fieldwidth > a.length() ) {
13579 s += ' ';
13580 fieldwidth--;
13581 }
13582 r.insert( pos, s );
13583 }
13584
13585 return r;
13586}
13587
13588
13589/*!
13590 \overload
13591
13592 The \a fieldwidth value specifies the minimum amount of space that
13593 \a a is padded to. A positive value will produce a right-aligned
13594 number, whereas a negative value will produce a left-aligned
13595 number.
13596
13597 \a a is expressed in base \a base, which is 10 by default and must
13598 be between 2 and 36.
13599
13600 \code
13601 QString str;
13602 str = QString( "Decimal 63 is %1 in hexadecimal" )
13603 .arg( 63, 0, 16 );
13604 // str == "Decimal 63 is 3f in hexadecimal"
13605 \endcode
13606*/
13607QString QString::arg( long a, int fieldwidth, int base ) const
13608{
13609 return arg( QString::number(a, base), fieldwidth );
13610}
13611
13612/*!
13613 \overload
13614
13615 \a a is expressed in base \a base, which is 10 by default and must
13616 be between 2 and 36.
13617*/
13618QString QString::arg( ulong a, int fieldwidth, int base ) const
13619{
13620 return arg( QString::number(a, base), fieldwidth );
13621}
13622
13623/*!
13624 \fn QString QString::arg( int a, int fieldwidth, int base ) const
13625
13626 \overload
13627
13628 \a a is expressed in base \a base, which is 10 by default and must
13629 be between 2 and 36.
13630*/
13631
13632/*!
13633 \fn QString QString::arg( uint a, int fieldwidth, int base ) const
13634
13635 \overload
13636
13637 \a a is expressed in base \a base, which is 10 by default and must
13638 be between 2 and 36.
13639*/
13640
13641/*!
13642 \fn QString QString::arg( short a, int fieldwidth, int base ) const
13643
13644 \overload
13645
13646 \a a is expressed in base \a base, which is 10 by default and must
13647 be between 2 and 36.
13648*/
13649
13650/*!
13651 \fn QString QString::arg( ushort a, int fieldwidth, int base ) const
13652
13653 \overload
13654
13655 \a a is expressed in base \a base, which is 10 by default and must
13656 be between 2 and 36.
13657*/
13658
13659
13660/*!
13661 \overload
13662
13663 \a a is assumed to be in the Latin1 character set.
13664*/
13665QString QString::arg( char a, int fieldwidth ) const
13666{
13667 QString c;
13668 c += a;
13669 return arg( c, fieldwidth );
13670}
13671
13672/*!
13673 \overload
13674*/
13675QString QString::arg( QChar a, int fieldwidth ) const
13676{
13677 QString c;
13678 c += a;
13679 return arg( c, fieldwidth );
13680}
13681
13682/*!
13683 \overload
13684
13685 \target arg-formats
13686
13687 Argument \a a is formatted according to the \a fmt format specified,
13688 which is 'g' by default and can be any of the following:
13689
13690 \table
13691 \header \i Format \i Meaning
13692 \row \i \c e \i format as [-]9.9e[+|-]999
13693 \row \i \c E \i format as [-]9.9E[+|-]999
13694 \row \i \c f \i format as [-]9.9
13695 \row \i \c g \i use \c e or \c f format, whichever is the most concise
13696 \row \i \c G \i use \c E or \c f format, whichever is the most concise
13697 \endtable
13698
13699 With 'e', 'E', and 'f', \a prec is the number of digits after the
13700 decimal point. With 'g' and 'G', \a prec is the maximum number of
13701 significant digits (trailing zeroes are omitted).
13702
13703 \code
13704 double d = 12.34;
13705 QString ds = QString( "'E' format, precision 3, gives %1" )
13706 .arg( d, 0, 'E', 3 );
13707 // ds == "1.234E+001"
13708 \endcode
13709*/
13710QString QString::arg( double a, int fieldwidth, char fmt, int prec ) const
13711{
13712 return arg( QString::number( a, fmt, prec ), fieldwidth );
13713}
13714
13715
13716/*
13717 Just 1-digit arguments.
13718*/
13719bool QString::findArg( int& pos, int& len ) const
13720{
13721 char lowest=0;
13722 register const QChar *uc = d->unicode;
13723 const uint l = length();
13724 for (uint i = 0; i < l; i++) {
13725 if ( uc[i] == '%' && i+1<l ) {
13726 QChar dig = uc[i+1];
13727 if ( dig >= '0' && dig <= '9' ) {
13728 if ( !lowest || dig < lowest ) {
13729 lowest = dig;
13730 pos = i;
13731 len = 2;
13732 }
13733 }
13734 }
13735 }
13736 return lowest != 0;
13737}
13738
13739/*!
13740 Safely builds a formatted string from the format string \a cformat
13741 and an arbitrary list of arguments. The format string supports all
13742 the escape sequences of printf() in the standard C library.
13743
13744 The %s escape sequence expects a utf8() encoded string. The format
13745 string \e cformat is expected to be in latin1. If you need a
13746 Unicode format string, use arg() instead. For typesafe string
13747 building, with full Unicode support, you can use QTextOStream like
13748 this:
13749
13750 \code
13751 QString str;
13752 QString s = ...;
13753 int x = ...;
13754 QTextOStream( &str ) << s << " : " << x;
13755 \endcode
13756
13757 For \link QObject::tr() translations,\endlink especially if the
13758 strings contains more than one escape sequence, you should
13759 consider using the arg() function instead. This allows the order
13760 of the replacements to be controlled by the translator, and has
13761 Unicode support.
13762
13763 \sa arg()
13764*/
13765
13766#ifndef QT_NO_SPRINTF
13767QString &QString::sprintf( const char* cformat, ... )
13768{
13769 va_list ap;
13770 va_start( ap, cformat );
13771
13772 if ( !cformat || !*cformat ) {
13773 // Qt 1.x compat
13774 *this = fromLatin1( "" );
13775 return *this;
13776 }
13777 QString format = fromLatin1( cformat );
13778
13779 QRegExp escape( "%#?0?-? ?\\+?'?[0-9*]*\\.?[0-9*]*h?l?L?q?Z?" );
13780 QString result;
13781 uint last = 0;
13782 int pos;
13783 int len = 0;
13784
13785 for (;;) {
13786 pos = escape.search( format, last );
13787 len = escape.matchedLength();
13788 // Non-escaped text
13789 if ( pos > (int)last )
13790 result += format.mid( last, pos - last );
13791 if ( pos < 0 ) {
13792 // The rest
13793 if ( last < format.length() )
13794 result += format.mid( last );
13795 break;
13796 }
13797 last = pos + len + 1;
13798
13799 // Escape
13800 QString f = format.mid( pos, len );
13801 uint width, decimals;
13802 int params = 0;
13803 int wpos = f.find('*');
13804 if ( wpos >= 0 ) {
13805 params++;
13806 width = va_arg( ap, int );
13807 if ( f.find('*', wpos + 1) >= 0 ) {
13808 decimals = va_arg( ap, int );
13809 params++;
13810 } else {
13811 decimals = 0;
13812 }
13813 } else {
13814 decimals = width = 0;
13815 }
13816 QString replacement;
13817 if ( format[pos + len] == 's' || format[pos + len] == 'S' ||
13818 format[pos + len] == 'c' )
13819 {
13820 bool rightjust = ( f.find('-') < 0 );
13821 // %-5s really means left adjust in sprintf
13822
13823 if ( wpos < 0 ) {
13824 QRegExp num( fromLatin1("[0-9]+") );
13825 int p = num.search( f );
13826 int nlen = num.matchedLength();
13827 int q = f.find( '.' );
13828 if ( q < 0 || (p < q && p >= 0) )
13829 width = f.mid( p, nlen ).toInt();
13830 if ( q >= 0 ) {
13831 p = num.search( f, q );
13832 // "decimals" is used to specify string truncation
13833 if ( p >= 0 )
13834 decimals = f.mid( p, nlen ).toInt();
13835 }
13836 }
13837
13838 if ( format[pos + len] == 's' ) {
13839 QString s = QString::fromUtf8( va_arg(ap, char*) );
13840 replacement = ( decimals <= 0 ) ? s : s.left( decimals );
13841 } else {
13842 int ch = va_arg(ap, int);
13843 replacement = QChar((ushort)ch);
13844 }
13845 if ( replacement.length() < width ) {
13846 replacement = rightjust
13847 ? replacement.rightJustify(width)
13848 : replacement.leftJustify(width);
13849 }
13850 } else if ( format[pos+len] == '%' ) {
13851 replacement = '%';
13852 } else if ( format[pos+len] == 'n' ) {
13853 int* n = va_arg(ap, int*);
13854 *n = result.length();
13855 } else {
13856 char in[64], out[330];
13857 strncpy(in,f.latin1(),63);
13858 out[0] = '\0';
13859 char fch = format[pos+len].latin1();
13860 in[f.length()] = fch;
13861 switch ( fch ) {
13862 case 'd':
13863 case 'i':
13864 case 'o':
13865 case 'u':
13866 case 'x':
13867 case 'X':
13868 {
13869 int value = va_arg( ap, int );
13870 switch ( params ) {
13871 case 0:
13872 ::sprintf( out, in, value );
13873 break;
13874 case 1:
13875 ::sprintf( out, in, width, value );
13876 break;
13877 case 2:
13878 ::sprintf( out, in, width, decimals, value );
13879 }
13880 }
13881 break;
13882 case 'e':
13883 case 'E':
13884 case 'f':
13885 case 'g':
13886 case 'G':
13887 {
13888 double value = va_arg( ap, double );
13889 switch ( params ) {
13890 case 0:
13891 ::sprintf( out, in, value );
13892 break;
13893 case 1:
13894 ::sprintf( out, in, width, value );
13895 break;
13896 case 2:
13897 ::sprintf( out, in, width, decimals, value );
13898 }
13899 }
13900 break;
13901 case 'p':
13902 {
13903 void* value = va_arg( ap, void * );
13904 switch ( params ) {
13905 case 0:
13906 ::sprintf( out, in, value );
13907 break;
13908 case 1:
13909 ::sprintf( out, in, width, value );
13910 break;
13911 case 2:
13912 ::sprintf( out, in, width, decimals, value );
13913 }
13914 }
13915 }
13916 replacement = fromLatin1( out );
13917 }
13918 result += replacement;
13919 }
13920 *this = result;
13921
13922 va_end( ap );
13923 return *this;
13924}
13925#endif
13926
13927/*!
13928 Fills the string with \a len characters of value \a c, and returns
13929 a reference to the string.
13930
13931 If \a len is negative (the default), the current string length is
13932 used.
13933
13934 \code
13935 QString str;
13936 str.fill( 'g', 5 ); // string == "ggggg"
13937 \endcode
13938*/
13939
13940QString& QString::fill( QChar c, int len )
13941{
13942 if ( len < 0 )
13943 len = length();
13944 if ( len == 0 ) {
13945 *this = "";
13946 } else {
13947 deref();
13948 QChar * nd = QT_ALLOC_QCHAR_VEC( len );
13949 d = new QStringData(nd,len,len);
13950 while (len--) *nd++ = c;
13951 }
13952 return *this;
13953}
13954
13955
13956/*!
13957 \fn QString QString::copy() const
13958
13959 \obsolete
13960
13961 In Qt 2.0 and later, all calls to this function are needless. Just
13962 remove them.
13963*/
13964
13965/*!
13966 \overload
13967
13968 Finds the first occurrence of the character \a c, starting at
13969 position \a index. If \a index is -1, the search starts at the
13970 last character; if -2, at the next to last character and so on.
13971 (See findRev() for searching backwards.)
13972
13973 If \a cs is TRUE, the search is case sensitive; otherwise the
13974 search is case insensitive.
13975
13976 Returns the position of \a c or -1 if \a c could not be found.
13977*/
13978
13979int QString::find( QChar c, int index, bool cs ) const
13980{
13981 const uint l = length();
13982 if ( index < 0 )
13983 index += l;
13984 if ( (uint)index >= l )
13985 return -1;
13986 register const QChar *uc = unicode()+index;
13987 const QChar *end = unicode() + l;
13988 if ( cs ) {
13989 while ( uc < end && *uc != c )
13990 uc++;
13991 } else {
13992 c = ::lower( c );
13993 while ( uc < end && ::lower( *uc ) != c )
13994 uc++;
13995 }
13996 if ( uint(uc - unicode()) >= l )
13997 return -1;
13998 return (int)(uc - unicode());
13999}
14000
14001/* an implementation of the Boyer-Moore search algorithm
14002*/
14003
14004/* initializes the skiptable to know haw far ahead we can skip on a wrong match
14005*/
14006static void bm_init_skiptable( const QString &pattern, uint *skiptable, bool cs )
14007{
14008 int i = 0;
14009 register uint *st = skiptable;
14010 int l = pattern.length();
14011 while ( i++ < 0x100/8 ) {
14012 *(st++) = l;
14013 *(st++) = l;
14014 *(st++) = l;
14015 *(st++) = l;
14016 *(st++) = l;
14017 *(st++) = l;
14018 *(st++) = l;
14019 *(st++) = l;
14020 }
14021 const QChar *uc = pattern.unicode();
14022 if ( cs ) {
14023 while( l-- ) {
14024 skiptable[ uc->cell() ] = l;
14025 uc++;
14026 }
14027 } else {
14028 while( l-- ) {
14029 skiptable[ ::lower( *uc ).cell() ] = l;
14030 uc++;
14031 }
14032 }
14033}
14034
14035static int bm_find( const QString &str, int index, const QString &pattern, uint *skiptable, bool cs )
14036{
14037 const uint l = str.length();
14038 if ( pattern.isEmpty() )
14039 return index > (int)l ? -1 : index;
14040
14041 const QChar *uc = str.unicode();
14042 const QChar *puc = pattern.unicode();
14043 const uint pl = pattern.length();
14044 const uint pl_minus_one = pl - 1;
14045
14046 register const QChar *current = uc + index + pl_minus_one;
14047 const QChar *end = uc + l;
14048 if ( cs ) {
14049 while( current < end ) {
14050 uint skip = skiptable[ current->cell() ];
14051 if ( !skip ) {
14052 // possible match
14053 while( skip < pl ) {
14054 if ( *(current - skip ) != puc[pl_minus_one-skip] )
14055 break;
14056 skip++;
14057 }
14058 if ( skip > pl_minus_one ) { // we have a match
14059 return (current - uc) - skip + 1;
14060 }
14061 // in case we don't have a match we are a bit inefficient as we only skip by one
14062 // when we have the non matching char in the string.
14063 if ( skiptable[ (current-skip)->cell() ] == pl )
14064 skip = pl - skip;
14065 else
14066 skip = 1;
14067 }
14068 current += skip;
14069 }
14070 } else {
14071 while( current < end ) {
14072 uint skip = skiptable[ ::lower( *current ).cell() ];
14073 if ( !skip ) {
14074 // possible match
14075 while( skip < pl ) {
14076 if ( ::lower( *(current - skip) ) != ::lower( puc[pl_minus_one-skip] ) )
14077 break;
14078 skip++;
14079 }
14080 if ( skip > pl_minus_one ) // we have a match
14081 return (current - uc) - skip + 1;
14082 // in case we don't have a match we are a bit inefficient as we only skip by one
14083 // when we have the non matching char in the string.
14084 if ( skiptable[ ::lower( (current - skip)->cell() ) ] == pl )
14085 skip = pl - skip;
14086 else
14087 skip = 1;
14088 }
14089 current += skip;
14090 }
14091 }
14092 // not found
14093 return -1;
14094}
14095
14096
14097#define REHASH( a ) \
14098 if ( sl_minus_1 < sizeof(uint) * CHAR_BIT ) \
14099 hashHaystack -= (a) << sl_minus_1; \
14100 hashHaystack <<= 1
14101
14102/*!
14103 \overload
14104
14105 Finds the first occurrence of the string \a str, starting at
14106 position \a index. If \a index is -1, the search starts at the
14107 last character, if it is -2, at the next to last character and so
14108 on. (See findRev() for searching backwards.)
14109
14110 If \a cs is TRUE, the search is case sensitive; otherwise the
14111 search is case insensitive.
14112
14113 Returns the position of \a str or -1 if \a str could not be found.
14114*/
14115
14116int QString::find( const QString& str, int index, bool cs ) const
14117{
14118 const uint l = length();
14119 const uint sl = str.length();
14120 if ( index < 0 )
14121 index += l;
14122 if ( sl + index > l )
14123 return -1;
14124 if ( !sl )
14125 return index;
14126
14127 if ( sl == 1 )
14128 return find( *str.unicode(), index, cs );
14129
14130 // we use the Boyer-Moore algorithm in cases where the overhead
14131 // for the hash table should pay off, otherwise we use a simple
14132 // hash function
14133 if ( l > 500 && sl > 5 ) {
14134 uint skiptable[0x100];
14135 bm_init_skiptable( str, skiptable, cs );
14136 return bm_find( *this, index, str, skiptable, cs );
14137 }
14138
14139 /*
14140 We use some hashing for efficiency's sake. Instead of
14141 comparing strings, we compare the hash value of str with that of
14142 a part of this QString. Only if that matches, we call ucstrncmp
14143 or ucstrnicmp.
14144 */
14145 const QChar* needle = str.unicode();
14146 const QChar* haystack = unicode() + index;
14147 const QChar* end = unicode() + (l-sl);
14148 const uint sl_minus_1 = sl-1;
14149 uint hashNeedle = 0, hashHaystack = 0, i;
14150
14151 if ( cs ) {
14152 for ( i = 0; i < sl; ++i ) {
14153 hashNeedle = ((hashNeedle<<1) + needle[i].unicode() );
14154 hashHaystack = ((hashHaystack<<1) + haystack[i].unicode() );
14155 }
14156 hashHaystack -= (haystack+sl_minus_1)->unicode();
14157
14158 while ( haystack <= end ) {
14159 hashHaystack += (haystack+sl_minus_1)->unicode();
14160 if ( hashHaystack == hashNeedle
14161 && ucstrncmp( needle, haystack, sl ) == 0 )
14162 return haystack-unicode();
14163
14164 REHASH( haystack->unicode() );
14165 ++haystack;
14166 }
14167 } else {
14168 for ( i = 0; i < sl; ++i ) {
14169 hashNeedle = ((hashNeedle<<1) +
14170 ::lower( needle[i].unicode() ).unicode() );
14171 hashHaystack = ((hashHaystack<<1) +
14172 ::lower( haystack[i].unicode() ).unicode() );
14173 }
14174
14175 hashHaystack -= ::lower(*(haystack+sl_minus_1)).unicode();
14176 while ( haystack <= end ) {
14177 hashHaystack += ::lower(*(haystack+sl_minus_1)).unicode();
14178 if ( hashHaystack == hashNeedle
14179 && ucstrnicmp( needle, haystack, sl ) == 0 )
14180 return haystack-unicode();
14181
14182 REHASH( ::lower(*haystack).unicode() );
14183 ++haystack;
14184 }
14185 }
14186 return -1;
14187}
14188
14189/*!
14190 \fn int QString::findRev( const char* str, int index ) const
14191
14192 Equivalent to findRev(QString(\a str), \a index).
14193*/
14194
14195/*!
14196 \fn int QString::find( const char* str, int index ) const
14197
14198 \overload
14199
14200 Equivalent to find(QString(\a str), \a index).
14201*/
14202
14203/*!
14204 \overload
14205
14206 Finds the first occurrence of the character \a c, starting at
14207 position \a index and searching backwards. If the index is -1, the
14208 search starts at the last character, if it is -2, at the next to
14209 last character and so on.
14210
14211 Returns the position of \a c or -1 if \a c could not be found.
14212
14213 If \a cs is TRUE, the search is case sensitive; otherwise the
14214 search is case insensitive.
14215
14216 \code
14217 QString string( "bananas" );
14218 int i = string.findRev( 'a' ); // i == 5
14219 \endcode
14220*/
14221
14222int QString::findRev( QChar c, int index, bool cs ) const
14223{
14224 const uint l = length();
14225 if ( index < 0 )
14226 index += l;
14227 if ( (uint)index >= l )
14228 return -1;
14229 const QChar *end = unicode();
14230 register const QChar *uc = end + index;
14231 if ( cs ) {
14232 while ( uc >= end && *uc != c )
14233 uc--;
14234 } else {
14235 c = ::lower( c );
14236 while ( uc >= end && ::lower( *uc ) != c )
14237 uc--;
14238 }
14239 return uc - end;
14240}
14241
14242/*!
14243 \overload
14244
14245 Finds the first occurrence of the string \a str, starting at
14246 position \a index and searching backwards. If the index is -1, the
14247 search starts at the last character, if it is -2, at the next to
14248 last character and so on.
14249
14250 Returns the position of \a str or -1 if \a str could not be found.
14251
14252 If \a cs is TRUE, the search is case sensitive; otherwise the
14253 search is case insensitive.
14254
14255 \code
14256 QString string("bananas");
14257 int i = string.findRev( "ana" ); // i == 3
14258 \endcode
14259*/
14260
14261int QString::findRev( const QString& str, int index, bool cs ) const
14262{
14263 /*
14264 See QString::find() for explanations.
14265 */
14266 const uint l = length();
14267 if ( index < 0 )
14268 index += l;
14269 const uint sl = str.length();
14270 int delta = l-sl;
14271 if ( index < 0 || index > (int)l || delta < 0 )
14272 return -1;
14273 if ( index > delta )
14274 index = delta;
14275
14276 if ( sl == 1 )
14277 return findRev( *str.unicode(), index, cs );
14278
14279 const QChar* needle = str.unicode();
14280 const QChar* haystack = unicode() + index;
14281 const QChar* end = unicode();
14282 const uint sl_minus_1 = sl-1;
14283 const QChar* n = needle+sl_minus_1;
14284 const QChar* h = haystack+sl_minus_1;
14285 uint hashNeedle = 0, hashHaystack = 0, i;
14286
14287 if ( cs ) {
14288 for ( i = 0; i < sl; ++i ) {
14289 hashNeedle = ((hashNeedle<<1) + (n-i)->unicode() );
14290 hashHaystack = ((hashHaystack<<1) + (h-i)->unicode() );
14291 }
14292 hashHaystack -= haystack->unicode();
14293
14294 while ( haystack >= end ) {
14295 hashHaystack += haystack->unicode();
14296 if ( hashHaystack == hashNeedle
14297 && ucstrncmp( needle, haystack, sl ) == 0 )
14298 return haystack-unicode();
14299 --haystack;
14300 REHASH( (haystack+sl)->unicode() );
14301 }
14302 } else {
14303 for ( i = 0; i < sl; ++i ) {
14304 hashNeedle = ((hashNeedle<<1)
14305 + ::lower( (n-i)->unicode() ).unicode() );
14306 hashHaystack = ((hashHaystack<<1)
14307 + ::lower( (h-i)->unicode() ).unicode() );
14308 }
14309 hashHaystack -= ::lower(*haystack).unicode();
14310
14311 while ( haystack >= end ) {
14312 hashHaystack += ::lower(*haystack).unicode();
14313 if ( hashHaystack == hashNeedle
14314 && ucstrnicmp( needle, haystack, sl ) == 0 )
14315 return haystack-unicode();
14316 --haystack;
14317 REHASH( ::lower(*(haystack+sl)).unicode() );
14318 }
14319 }
14320 return -1;
14321}
14322
14323#undef REHASH
14324
14325/*!
14326 \enum QString::SectionFlags
14327
14328 \value SectionDefault Empty fields are counted, leading and
14329 trailing separators are not included, and the separator is
14330 compared case sensitively.
14331
14332 \value SectionSkipEmpty Treat empty fields as if they don't exist,
14333 i.e. they are not considered as far as \e start and \e end are
14334 concerned.
14335
14336 \value SectionIncludeLeadingSep Include the leading separator (if
14337 any) in the result string.
14338
14339 \value SectionIncludeTrailingSep Include the trailing separator
14340 (if any) in the result string.
14341
14342 \value SectionCaseInsensitiveSeps Compare the separator
14343 case-insensitively.
14344
14345 Any of the last four values can be OR-ed together to form a flag.
14346
14347 \sa section()
14348*/
14349
14350/*!
14351 \fn QString QString::section( QChar sep, int start, int end = 0xffffffff, int flags = SectionDefault ) const
14352
14353 This function returns a section of the string.
14354
14355 This string is treated as a sequence of fields separated by the
14356 character, \a sep. The returned string consists of the fields from
14357 position \a start to position \a end inclusive. If \a end is not
14358 specified, all fields from position \a start to the end of the
14359 string are included. Fields are numbered 0, 1, 2, etc., counting
14360 from the left, and -1, -2, etc., counting from right to left.
14361
14362 The \a flags argument can be used to affect some aspects of the
14363 function's behaviour, e.g. whether to be case sensitive, whether
14364 to skip empty fields and how to deal with leading and trailing
14365 separators; see \l{SectionFlags}.
14366
14367 \code
14368 QString csv( "forename,middlename,surname,phone" );
14369 QString s = csv.section( ',', 2, 2 ); // s == "surname"
14370
14371 QString path( "/usr/local/bin/myapp" ); // First field is empty
14372 QString s = path.section( '/', 3, 4 ); // s == "bin/myapp"
14373 QString s = path.section( '/', 3, 3, SectionSkipEmpty ); // s == "myapp"
14374 \endcode
14375
14376 If \a start or \a end is negative, we count fields from the right
14377 of the string, the right-most field being -1, the one from
14378 right-most field being -2, and so on.
14379
14380 \code
14381 QString csv( "forename,middlename,surname,phone" );
14382 QString s = csv.section( ',', -3, -2 ); // s == "middlename,surname"
14383
14384 QString path( "/usr/local/bin/myapp" ); // First field is empty
14385 QString s = path.section( '/', -1 ); // s == "myapp"
14386 \endcode
14387
14388 \sa QStringList::split()
14389*/
14390
14391/*!
14392 \overload
14393
14394 This function returns a section of the string.
14395
14396 This string is treated as a sequence of fields separated by the
14397 string, \a sep. The returned string consists of the fields from
14398 position \a start to position \a end inclusive. If \a end is not
14399 specified, all fields from position \a start to the end of the
14400 string are included. Fields are numbered 0, 1, 2, etc., counting
14401 from the left, and -1, -2, etc., counting from right to left.
14402
14403 The \a flags argument can be used to affect some aspects of the
14404 function's behaviour, e.g. whether to be case sensitive, whether
14405 to skip empty fields and how to deal with leading and trailing
14406 separators; see \l{SectionFlags}.
14407
14408 \code
14409 QString data( "forename**middlename**surname**phone" );
14410 QString s = data.section( "**", 2, 2 ); // s == "surname"
14411 \endcode
14412
14413 If \a start or \a end is negative, we count fields from the right
14414 of the string, the right-most field being -1, the one from
14415 right-most field being -2, and so on.
14416
14417 \code
14418 QString data( "forename**middlename**surname**phone" );
14419 QString s = data.section( "**", -3, -2 ); // s == "middlename**surname"
14420 \endcode
14421
14422 \sa QStringList::split()
14423*/
14424
14425QString QString::section( const QString &sep, int start, int end, int flags ) const
14426{
14427 const QChar *uc = unicode();
14428 if ( !uc )
14429 return QString();
14430 QString _sep = (flags & SectionCaseInsensitiveSeps) ? sep.lower() : sep;
14431 const QChar *uc_sep = _sep.unicode();
14432 if(!uc_sep)
14433 return QString();
14434 bool match = FALSE, last_match = TRUE;
14435
14436 //find start
14437 int n = length(), sep_len = _sep.length();
14438 const QChar *begin = start < 0 ? uc + n : uc;
14439 while(start) {
14440 match = FALSE;
14441 int c = 0;
14442 for(const QChar *tmp = start < 0 ? begin - sep_len : begin;
14443 c < sep_len && tmp < uc + n && tmp >= uc; tmp++, c++) {
14444 if(flags & SectionCaseInsensitiveSeps) {
14445 if( ::lower( *tmp ) != *(uc_sep + c))
14446 break;
14447 } else {
14448 if( *tmp != *(uc_sep + c) )
14449 break;
14450 }
14451 if(c == sep_len - 1) {
14452 match = TRUE;
14453 break;
14454 }
14455 }
14456 if(start > 0 && (flags & SectionSkipEmpty) && match && last_match)
14457 match = FALSE;
14458 last_match = match;
14459
14460 if(start < 0) {
14461 if(match) {
14462 begin -= sep_len;
14463 if(!++start)
14464 break;
14465 } else {
14466 if(start == -1 && begin == uc)
14467 break;
14468 begin--;
14469 }
14470 } else {
14471 if(match) {
14472 if(!--start)
14473 break;
14474 begin += sep_len;
14475 } else {
14476 if(start == 1 && begin == uc + n)
14477 break;
14478 begin++;
14479 }
14480 }
14481 if(begin > uc + n || begin < uc)
14482 return QString();
14483 }
14484 if(match && !(flags & SectionIncludeLeadingSep))
14485 begin+=sep_len;
14486 if(begin > uc + n || begin < uc)
14487 return QString();
14488
14489 //now find last
14490 match = FALSE;
14491 const QChar *last = end < 0 ? uc + n : uc;
14492 if(end == -1) {
14493 int c = 0;
14494 for(const QChar *tmp = end < 0 ? last - sep_len : last;
14495 c < sep_len && tmp < uc + n && tmp >= uc; tmp++, c++) {
14496 if(flags & SectionCaseInsensitiveSeps) {
14497 if( ::lower( *tmp ) != *(uc_sep + c))
14498 break;
14499 } else {
14500 if( *tmp != *(uc_sep + c) )
14501 break;
14502 }
14503 if(c == sep_len - 1) {
14504 match = TRUE;
14505 break;
14506 }
14507 }
14508 } else {
14509 end++;
14510 last_match = TRUE;
14511 while(end) {
14512 match = FALSE;
14513 int c = 0;
14514 for(const QChar *tmp = end < 0 ? last - sep_len : last;
14515 c < sep_len && tmp < uc + n && tmp >= uc; tmp++, c++) {
14516 if(flags & SectionCaseInsensitiveSeps) {
14517 if( ::lower( *tmp ) != *(uc_sep + c))
14518 break;
14519 } else {
14520 if( *tmp != *(uc_sep + c) )
14521 break;
14522 }
14523 if(c == sep_len - 1) {
14524 match = TRUE;
14525 break;
14526 }
14527 }
14528 if(end > 0 && (flags & SectionSkipEmpty) && match && last_match)
14529 match = FALSE;
14530 last_match = match;
14531
14532 if(end < 0) {
14533 if(match) {
14534 if(!++end)
14535 break;
14536 last -= sep_len;
14537 } else {
14538 last--;
14539 }
14540 } else {
14541 if(match) {
14542 last += sep_len;
14543 if(!--end)
14544 break;
14545 } else {
14546 last++;
14547 }
14548 }
14549 if(last >= uc + n) {
14550 last = uc + n;
14551 break;
14552 } else if(last < uc) {
14553 return QString();
14554 }
14555 }
14556 }
14557 if(match && !(flags & SectionIncludeTrailingSep))
14558 last -= sep_len;
14559 if(last < uc || last > uc + n || begin >= last)
14560 return QString();
14561
14562 //done
14563 return QString(begin, last - begin);
14564}
14565
14566#ifndef QT_NO_REGEXP
14567class section_chunk {
14568public:
14569 section_chunk(int l, QString s) { length = l; string = s; }
14570 int length;
14571 QString string;
14572};
14573/*!
14574 \overload
14575
14576 This function returns a section of the string.
14577
14578 This string is treated as a sequence of fields separated by the
14579 regular expression, \a reg. The returned string consists of the
14580 fields from position \a start to position \a end inclusive. If \a
14581 end is not specified, all fields from position \a start to the end
14582 of the string are included. Fields are numbered 0, 1, 2, etc., counting
14583 from the left, and -1, -2, etc., counting from right to left.
14584
14585 The \a flags argument can be used to affect some aspects of the
14586 function's behaviour, e.g. whether to be case sensitive, whether
14587 to skip empty fields and how to deal with leading and trailing
14588 separators; see \l{SectionFlags}.
14589
14590 \code
14591 QString line( "forename\tmiddlename surname \t \t phone" );
14592 QRegExp sep( "\s+" );
14593 QString s = line.section( sep, 2, 2 ); // s == "surname"
14594 \endcode
14595
14596 If \a start or \a end is negative, we count fields from the right
14597 of the string, the right-most field being -1, the one from
14598 right-most field being -2, and so on.
14599
14600 \code
14601 QString line( "forename\tmiddlename surname \t \t phone" );
14602 QRegExp sep( "\\s+" );
14603 QString s = line.section( sep, -3, -2 ); // s == "middlename surname"
14604 \endcode
14605
14606 \warning Using this QRegExp version is much more expensive than
14607 the overloaded string and character versions.
14608
14609 \sa QStringList::split() simplifyWhiteSpace()
14610*/
14611
14612QString QString::section( const QRegExp &reg, int start, int end, int flags ) const
14613{
14614 const QChar *uc = unicode();
14615 if(!uc)
14616 return QString();
14617
14618 QRegExp sep(reg);
14619 sep.setCaseSensitive(!(flags & SectionCaseInsensitiveSeps));
14620
14621 QPtrList<section_chunk> l;
14622 l.setAutoDelete(TRUE);
14623 int n = length(), m = 0, last_m = 0, last = 0, last_len = 0;
14624
14625 while( ( m = sep.search( *this, m ) ) != -1 ) {
14626 l.append(new section_chunk(last_len, QString(uc + last_m, m - last_m)));
14627 last_m = m;
14628 last_len = sep.matchedLength();
14629 if((m += sep.matchedLength()) >= n) {
14630 last = 1;
14631 break;
14632 }
14633 }
14634 if(!last)
14635 l.append(new section_chunk(last_len, QString(uc + last_m, n - last_m)));
14636
14637 if(start < 0)
14638 start = l.count() + start;
14639 if(end == -1)
14640 end = l.count();
14641 else if(end < 0)
14642 end = l.count() + end;
14643
14644 int i = 0;
14645 QString ret;
14646 for ( section_chunk *chk=l.first(); chk; chk=l.next(), i++ ) {
14647 if((flags & SectionSkipEmpty) && chk->length == (int)chk->string.length()) {
14648 if(i <= start)
14649 start++;
14650 end++;
14651 }
14652 if(i == start) {
14653 ret = (flags & SectionIncludeLeadingSep) ? chk->string : chk->string.mid(chk->length);
14654 } else if(i > start) {
14655 ret += chk->string;
14656 }
14657 if(i == end) {
14658 if((chk=l.next()) && flags & SectionIncludeTrailingSep)
14659 ret += chk->string.left(chk->length);
14660 break;
14661 }
14662 }
14663 return ret;
14664}
14665#endif
14666
14667/*!
14668 \fn QString QString::section( char sep, int start, int end = 0xffffffff, int flags = SectionDefault ) const
14669
14670 \overload
14671*/
14672
14673/*!
14674 \fn QString QString::section( const char *sep, int start, int end = 0xffffffff, int flags = SectionDefault ) const
14675
14676 \overload
14677*/
14678
14679
14680/*!
14681 Returns the number of times the character \a c occurs in the
14682 string.
14683
14684 If \a cs is TRUE, the search is case sensitive; otherwise the
14685 search is case insensitive.
14686
14687 \code
14688 QString string( "Trolltech and Qt" );
14689 int i = string.contains( 't', FALSE ); // i == 3
14690 \endcode
14691*/
14692
14693int QString::contains( QChar c, bool cs ) const
14694{
14695 int count = 0;
14696 const QChar *uc = unicode();
14697 if ( !uc )
14698 return 0;
14699 int n = length();
14700 if ( cs ) {
14701 while ( n-- )
14702 if ( *uc++ == c )
14703 count++;
14704 } else {
14705 c = ::lower( c );
14706 while ( n-- ) {
14707 if ( ::lower( *uc ) == c )
14708 count++;
14709 uc++;
14710 }
14711 }
14712 return count;
14713}
14714
14715/*!
14716 \overload
14717
14718 Returns the number of times the string \a str occurs in the string.
14719
14720 If \a cs is TRUE, the search is case sensitive; otherwise the
14721 search is case insensitive.
14722*/
14723int QString::contains( const char* str, bool cs ) const
14724{
14725 return contains( QString(str), cs );
14726}
14727
14728/*!
14729 \fn int QString::contains( char c, bool cs ) const
14730
14731 \overload
14732*/
14733
14734/*!
14735 \fn int QString::find( char c, int index, bool cs ) const
14736
14737 \overload
14738
14739 Find character \a c starting from position \a index.
14740
14741 If \a cs is TRUE, the search is case sensitive; otherwise the
14742 search is case insensitive.
14743*/
14744
14745/*!
14746 \fn int QString::findRev( char c, int index, bool cs ) const
14747
14748 \overload
14749
14750 Find character \a c starting from position \a index and working
14751 backwards.
14752
14753 If \a cs is TRUE, the search is case sensitive; otherwise the
14754 search is case insensitive.
14755*/
14756
14757/*!
14758 \overload
14759
14760 Returns the number of times \a str occurs in the string.
14761
14762 If \a cs is TRUE, the search is case sensitive; otherwise the
14763 search is case insensitive.
14764
14765 This function counts overlapping strings, so in the example below,
14766 there are two instances of "ana" in "bananas".
14767
14768 \code
14769 QString str( "bananas" );
14770 int i = str.contains( "ana" ); // i == 2
14771 \endcode
14772
14773 \sa findRev()
14774*/
14775
14776int QString::contains( const QString &str, bool cs ) const
14777{
14778 if ( isNull() )
14779 return 0;
14780 int count = 0;
14781 uint skiptable[0x100];
14782 bm_init_skiptable( str, skiptable, cs );
14783 int i = -1;
14784 // use boyer-moore for the ultimate speed experience
14785 while ( ( i = bm_find( *this, i+1, str, skiptable, cs ) ) != -1 )
14786 count++;
14787 return count;
14788}
14789
14790/*!
14791 Returns a substring that contains the \a len leftmost characters
14792 of the string.
14793
14794 The whole string is returned if \a len exceeds the length of the
14795 string.
14796
14797 \code
14798 QString s = "Pineapple";
14799 QString t = s.left( 4 ); // t == "Pine"
14800 \endcode
14801
14802 \sa right(), mid(), isEmpty()
14803*/
14804
14805QString QString::left( uint len ) const
14806{
14807 if ( isEmpty() ) {
14808 return QString();
14809 } else if ( len == 0 ) { // ## just for 1.x compat:
14810 return fromLatin1( "" );
14811 } else if ( len >= length() ) {
14812 return *this;
14813 } else {
14814 QString s( len, TRUE );
14815 memcpy( s.d->unicode, d->unicode, len * sizeof(QChar) );
14816 s.d->len = len;
14817 return s;
14818 }
14819}
14820
14821/*!
14822 Returns a string that contains the \a len rightmost characters of
14823 the string.
14824
14825 If \a len is greater than the length of the string then the whole
14826 string is returned.
14827
14828 \code
14829 QString string( "Pineapple" );
14830 QString t = string.right( 5 ); // t == "apple"
14831 \endcode
14832
14833 \sa left(), mid(), isEmpty()
14834*/
14835
14836QString QString::right( uint len ) const
14837{
14838 if ( isEmpty() ) {
14839 return QString();
14840 } else if ( len == 0 ) { // ## just for 1.x compat:
14841 return fromLatin1( "" );
14842 } else {
14843 uint l = length();
14844 if ( len >= l )
14845 return *this;
14846 QString s( len, TRUE );
14847 memcpy( s.d->unicode, d->unicode+(l-len), len*sizeof(QChar) );
14848 s.d->len = len;
14849 return s;
14850 }
14851}
14852
14853/*!
14854 Returns a string that contains the \a len characters of this
14855 string, starting at position \a index.
14856
14857 Returns a null string if the string is empty or \a index is out of
14858 range. Returns the whole string from \a index if \a index + \a len
14859 exceeds the length of the string.
14860
14861 \code
14862 QString s( "Five pineapples" );
14863 QString t = s.mid( 5, 4 ); // t == "pine"
14864 \endcode
14865
14866 \sa left(), right()
14867*/
14868
14869QString QString::mid( uint index, uint len ) const
14870{
14871 uint slen = length();
14872 if ( isEmpty() || index >= slen ) {
14873 return QString();
14874 } else if ( len == 0 ) { // ## just for 1.x compat:
14875 return fromLatin1( "" );
14876 } else {
14877 if ( len > slen-index )
14878 len = slen - index;
14879 if ( index == 0 && len == slen )
14880 return *this;
14881 register const QChar *p = unicode()+index;
14882 QString s( len, TRUE );
14883 memcpy( s.d->unicode, p, len * sizeof(QChar) );
14884 s.d->len = len;
14885 return s;
14886 }
14887}
14888
14889/*!
14890 Returns a string of length \a width that contains this string
14891 padded by the \a fill character.
14892
14893 If \a truncate is FALSE and the length of the string is more than
14894 \a width, then the returned string is a copy of the string.
14895
14896 If \a truncate is TRUE and the length of the string is more than
14897 \a width, then any characters in a copy of the string after length
14898 \a width are removed, and the copy is returned.
14899
14900 \code
14901 QString s( "apple" );
14902 QString t = s.leftJustify( 8, '.' ); // t == "apple..."
14903 \endcode
14904
14905 \sa rightJustify()
14906*/
14907
14908QString QString::leftJustify( uint width, QChar fill, bool truncate ) const
14909{
14910 QString result;
14911 int len = length();
14912 int padlen = width - len;
14913 if ( padlen > 0 ) {
14914 result.setLength(len+padlen);
14915 if ( len )
14916 memcpy( result.d->unicode, unicode(), sizeof(QChar)*len );
14917 QChar* uc = result.d->unicode + len;
14918 while (padlen--)
14919 *uc++ = fill;
14920 } else {
14921 if ( truncate )
14922 result = left( width );
14923 else
14924 result = *this;
14925 }
14926 return result;
14927}
14928
14929/*!
14930 Returns a string of length \a width that contains the \a fill
14931 character followed by the string.
14932
14933 If \a truncate is FALSE and the length of the string is more than
14934 \a width, then the returned string is a copy of the string.
14935
14936 If \a truncate is TRUE and the length of the string is more than
14937 \a width, then the resulting string is truncated at position \a
14938 width.
14939
14940 \code
14941 QString string( "apple" );
14942 QString t = string.rightJustify( 8, '.' ); // t == "...apple"
14943 \endcode
14944
14945 \sa leftJustify()
14946*/
14947
14948QString QString::rightJustify( uint width, QChar fill, bool truncate ) const
14949{
14950 QString result;
14951 int len = length();
14952 int padlen = width - len;
14953 if ( padlen > 0 ) {
14954 result.setLength( len+padlen );
14955 QChar* uc = result.d->unicode;
14956 while (padlen--)
14957 *uc++ = fill;
14958 if ( len )
14959 memcpy( uc, unicode(), sizeof(QChar)*len );
14960 } else {
14961 if ( truncate )
14962 result = left( width );
14963 else
14964 result = *this;
14965 }
14966 return result;
14967}
14968
14969/*!
14970 Returns a lowercase copy of the string.
14971
14972 \code
14973 QString string( "TROlltECH" );
14974 str = string.lower(); // str == "trolltech"
14975 \endcode
14976
14977 \sa upper()
14978*/
14979
14980QString QString::lower() const
14981{
14982 QString s(*this);
14983 int l=length();
14984 if ( l ) {
14985 s.real_detach(); // could do this only when we find a change
14986 register QChar *p=s.d->unicode;
14987 if ( p ) {
14988 while ( l-- ) {
14989 *p = ::lower( *p );
14990 p++;
14991 }
14992 }
14993 }
14994 return s;
14995}
14996
14997/*!
14998 Returns an uppercase copy of the string.
14999
15000 \code
15001 QString string( "TeXt" );
15002 str = string.upper(); // t == "TEXT"
15003 \endcode
15004
15005 \sa lower()
15006*/
15007
15008QString QString::upper() const
15009{
15010 QString s(*this);
15011 int l=length();
15012 if ( l ) {
15013 s.real_detach(); // could do this only when we find a change
15014 register QChar *p=s.d->unicode;
15015 if ( p ) {
15016 while ( l-- ) {
15017 *p = ::upper( *p );
15018 p++;
15019 }
15020 }
15021 }
15022 return s;
15023}
15024
15025
15026/*!
15027 Returns a string that has whitespace removed from the start and
15028 the end.
15029
15030 Whitespace means any character for which QChar::isSpace() returns
15031 TRUE. This includes Unicode characters with decimal values 9
15032 (TAB), 10 (LF), 11 (VT), 12 (FF), 13 (CR) and 32 (Space), and may
15033 also include other Unicode characters.
15034
15035 \code
15036 QString string = " white space ";
15037 QString s = string.stripWhiteSpace(); // s == "white space"
15038 \endcode
15039
15040 \sa simplifyWhiteSpace()
15041*/
15042
15043QString QString::stripWhiteSpace() const
15044{
15045 if ( isEmpty() ) // nothing to do
15046 return *this;
15047 register const QChar *s = unicode();
15048 if ( !s->isSpace() && !s[length()-1].isSpace() )
15049 return *this;
15050
15051 int start = 0;
15052 int end = length() - 1;
15053 while ( start<=end && s[start].isSpace() ) // skip white space from start
15054 start++;
15055 if ( start <= end ) { // only white space
15056 while ( end && s[end].isSpace() ) // skip white space from end
15057 end--;
15058 }
15059 int l = end - start + 1;
15060 if ( l <= 0 )
15061 return QString::fromLatin1("");
15062
15063 QString result( l, TRUE );
15064 memcpy( result.d->unicode, &s[start], sizeof(QChar)*l );
15065 result.d->len = l;
15066 return result;
15067}
15068
15069
15070/*!
15071 Returns a string that has whitespace removed from the start and
15072 the end, and which has each sequence of internal whitespace
15073 replaced with a single space.
15074
15075 Whitespace means any character for which QChar::isSpace() returns
15076 TRUE. This includes Unicode characters with decimal values 9
15077 (TAB), 10 (LF), 11 (VT), 12 (FF), 13 (CR), and 32 (Space).
15078
15079 \code
15080 QString string = " lots\t of\nwhite space ";
15081 QString t = string.simplifyWhiteSpace();
15082 // t == "lots of white space"
15083 \endcode
15084
15085 \sa stripWhiteSpace()
15086*/
15087
15088QString QString::simplifyWhiteSpace() const
15089{
15090 if ( isEmpty() )
15091 return *this;
15092 QString result;
15093 result.setLength( length() );
15094 const QChar *from = unicode();
15095 const QChar *fromend = from+length();
15096 int outc=0;
15097 QChar *to = result.d->unicode;
15098 for (;;) {
15099 while ( from!=fromend && from->isSpace() )
15100 from++;
15101 while ( from!=fromend && !from->isSpace() )
15102 to[outc++] = *from++;
15103 if ( from!=fromend )
15104 to[outc++] = ' ';
15105 else
15106 break;
15107 }
15108 if ( outc > 0 && to[outc-1] == ' ' )
15109 outc--;
15110 result.truncate( outc );
15111 return result;
15112}
15113
15114
15115/*!
15116 Inserts \a s into the string at position \a index.
15117
15118 If \a index is beyond the end of the string, the string is
15119 extended with spaces to length \a index and \a s is then appended
15120 and returns a reference to the string.
15121
15122 \code
15123 QString string( "I like fish" );
15124 str = string.insert( 2, "don't " );
15125 // str == "I don't like fish"
15126 \endcode
15127
15128 \sa remove(), replace()
15129*/
15130
15131QString &QString::insert( uint index, const QString &s )
15132{
15133 // the sub function takes care of &s == this case.
15134 return insert( index, s.unicode(), s.length() );
15135}
15136
15137/*!
15138 \overload
15139
15140 Inserts the character in \a s into the string at position \a index
15141 \a len number of times and returns a reference to the string.
15142*/
15143
15144QString &QString::insert( uint index, const QChar* s, uint len )
15145{
15146 if ( len == 0 )
15147 return *this;
15148 uint olen = length();
15149 int nlen = olen + len;
15150
15151 if ( s >= d->unicode && (uint)(s - d->unicode) < d->maxl ) {
15152 // Part of me - take a copy.
15153 QChar *tmp = QT_ALLOC_QCHAR_VEC( len );
15154 memcpy(tmp,s,len*sizeof(QChar));
15155 insert(index,tmp,len);
15156 QT_DELETE_QCHAR_VEC( tmp );
15157 return *this;
15158 }
15159
15160 if ( index >= olen ) { // insert after end of string
15161 setLength( len + index );
15162 int n = index - olen;
15163 QChar* uc = d->unicode+olen;
15164 while (n--)
15165 *uc++ = ' ';
15166 memcpy( d->unicode+index, s, sizeof(QChar)*len );
15167 } else { // normal insert
15168 setLength( nlen );
15169 memmove( d->unicode + index + len, unicode() + index,
15170 sizeof(QChar) * (olen - index) );
15171 memcpy( d->unicode + index, s, sizeof(QChar) * len );
15172 }
15173 return *this;
15174}
15175
15176/*!
15177 \overload
15178
15179 Insert \a c into the string at position \a index and returns a
15180 reference to the string.
15181
15182 If \a index is beyond the end of the string, the string is
15183 extended with spaces (ASCII 32) to length \a index and \a c is
15184 then appended.
15185*/
15186
15187QString &QString::insert( uint index, QChar c ) // insert char
15188{
15189 QString s( c );
15190 return insert( index, s );
15191}
15192
15193/*!
15194 \fn QString& QString::insert( uint index, char c )
15195
15196 \overload
15197
15198 Insert character \a c at position \a index.
15199*/
15200
15201/*!
15202 \fn QString &QString::prepend( const QString &s )
15203
15204 Inserts \a s at the beginning of the string and returns a
15205 reference to the string.
15206
15207 Equivalent to insert(0, \a s).
15208
15209 \code
15210 QString string = "42";
15211 string.prepend( "The answer is " );
15212 // string == "The answer is 42"
15213 \endcode
15214
15215 \sa insert()
15216*/
15217
15218/*!
15219 \fn QString& QString::prepend( char ch )
15220
15221 \overload
15222
15223 Inserts \a ch at the beginning of the string and returns a
15224 reference to the string.
15225
15226 Equivalent to insert(0, \a ch).
15227
15228 \sa insert()
15229*/
15230
15231/*!
15232 \fn QString& QString::prepend( QChar ch )
15233
15234 \overload
15235
15236 Inserts \a ch at the beginning of the string and returns a
15237 reference to the string.
15238
15239 Equivalent to insert(0, \a ch).
15240
15241 \sa insert()
15242*/
15243
15244/*! \fn QString& QString::prepend( const QByteArray &s )
15245 \overload
15246
15247 Inserts \a s at the beginning of the string and returns a reference to the string.
15248
15249 Equivalent to insert(0, \a s).
15250
15251 \sa insert()
15252 */
15253
15254/*!
15255 \overload
15256
15257 Inserts \a s at the beginning of the string and returns a reference to the string.
15258
15259 Equivalent to insert(0, \a s).
15260
15261 \sa insert()
15262 */
15263QString &QString::prepend( const char *s )
15264{
15265 return insert( 0, QString(s) );
15266}
15267
15268/*!
15269 Removes \a len characters from the string starting at position \a
15270 index, and returns a reference to the string.
15271
15272 If \a index is beyond the length of the string, nothing happens.
15273 If \a index is within the string, but \a index + \a len is beyond
15274 the end of the string, the string is truncated at position \a
15275 index.
15276
15277 \code
15278 QString string( "Montreal" );
15279 string.remove( 1, 4 ); // string == "Meal"
15280 \endcode
15281
15282 \sa insert(), replace()
15283*/
15284
15285QString &QString::remove( uint index, uint len )
15286{
15287 uint olen = length();
15288 if ( index >= olen ) {
15289 // range problems
15290 } else if ( index + len >= olen ) { // index ok
15291 setLength( index );
15292 } else if ( len != 0 ) {
15293 real_detach();
15294 memmove( d->unicode+index, d->unicode+index+len,
15295 sizeof(QChar)*(olen-index-len) );
15296 setLength( olen-len );
15297 }
15298 return *this;
15299}
15300
15301/*! \overload
15302
15303 Removes every occurrence of the character \a c in the string.
15304 Returns a reference to the string.
15305
15306 This is the same as replace(\a c, "").
15307*/
15308QString &QString::remove( QChar c )
15309{
15310 int i = 0;
15311 while ( i < (int) length() ) {
15312 if ( constref(i) == c ) {
15313 remove( i, 1 );
15314 } else {
15315 i++;
15316 }
15317 }
15318 return *this;
15319}
15320
15321/*! \overload
15322
15323 \fn QString &QString::remove( char c )
15324
15325 Removes every occurrence of the character \a c in the string.
15326 Returns a reference to the string.
15327
15328 This is the same as replace(\a c, "").
15329*/
15330
15331/*! \overload
15332
15333 Removes every occurrence of \a str in the string. Returns a
15334 reference to the string.
15335
15336 This is the same as replace(\a str, "").
15337*/
15338QString &QString::remove( const QString & str )
15339{
15340 int index = 0;
15341 if ( !str.isEmpty() ) {
15342 while ( (index = find(str, index)) != -1 )
15343 remove( index, str.length() );
15344 }
15345 return *this;
15346}
15347
15348/*! \overload
15349
15350 Replaces every occurrence of \a c1 with the char \a c2.
15351 Returns a reference to the string.
15352*/
15353QString &QString::replace( QChar c1, QChar c2 )
15354{
15355 real_detach();
15356 uint i = 0;
15357 while ( i < d->len ) {
15358 if ( d->unicode[i] == c1 )
15359 d->unicode[i] = c2;
15360 i++;
15361 }
15362 return *this;
15363}
15364
15365
15366#ifndef QT_NO_REGEXP_CAPTURE
15367
15368/*! \overload
15369
15370 Removes every occurrence of the regular expression \a rx in the
15371 string. Returns a reference to the string.
15372
15373 This is the same as replace(\a rx, "").
15374*/
15375
15376QString &QString::remove( const QRegExp & rx )
15377{
15378 return replace( rx, QString::null );
15379}
15380
15381#endif
15382
15383/*! \overload
15384
15385 Removes every occurrence of \a str in the string. Returns a
15386 reference to the string.
15387*/
15388QString &QString::remove( const char *str )
15389{
15390 return remove( QString::fromLatin1(str) );
15391}
15392
15393/*!
15394 Replaces \a len characters from the string with \a s, starting at
15395 position \a index, and returns a reference to the string.
15396
15397 If \a index is beyond the length of the string, nothing is deleted
15398 and \a s is appended at the end of the string. If \a index is
15399 valid, but \a index + \a len is beyond the end of the string,
15400 the string is truncated at position \a index, then \a s is
15401 appended at the end.
15402
15403 \code
15404 QString string( "Say yes!" );
15405 string = string.replace( 4, 3, "NO" );
15406 // string == "Say NO!"
15407 \endcode
15408
15409 \sa insert(), remove()
15410*/
15411
15412QString &QString::replace( uint index, uint len, const QString &s )
15413{
15414 return replace( index, len, s.unicode(), s.length() );
15415}
15416
15417/*! \overload
15418
15419 This is the same as replace(\a index, \a len, QString(\a c)).
15420*/
15421QString &QString::replace( uint index, uint len, QChar c )
15422{
15423 return replace( index, len, &c, 1 );
15424}
15425
15426/*! \overload
15427 \fn QString &QString::replace( uint index, uint len, char c )
15428
15429 This is the same as replace(\a index, \a len, QChar(\a c)).
15430*/
15431
15432/*!
15433 \overload
15434
15435 Replaces \a len characters with \a slen characters of QChar data
15436 from \a s, starting at position \a index, and returns a reference
15437 to the string.
15438
15439 \sa insert(), remove()
15440*/
15441
15442QString &QString::replace( uint index, uint len, const QChar* s, uint slen )
15443{
15444 real_detach();
15445 if ( len == slen && index + len <= length() ) {
15446 // Optimized common case: replace without size change
15447 memcpy( d->unicode+index, s, len * sizeof(QChar) );
15448 } else if ( s >= d->unicode && (uint)(s - d->unicode) < d->maxl ) {
15449 // Part of me - take a copy.
15450 QChar *tmp = QT_ALLOC_QCHAR_VEC( slen );
15451 memcpy( tmp, s, slen * sizeof(QChar) );
15452 replace( index, len, tmp, slen );
15453 QT_DELETE_QCHAR_VEC( tmp );
15454 } else {
15455 remove( index, len );
15456 insert( index, s, slen );
15457 }
15458 return *this;
15459}
15460
15461/*! \overload
15462
15463 Replaces every occurrence of the character \a c in the string
15464 with \a after. Returns a reference to the string.
15465
15466 Example:
15467 \code
15468 QString s = "a,b,c";
15469 s.replace( QChar(','), " or " );
15470 // s == "a or b or c"
15471 \endcode
15472*/
15473QString &QString::replace( QChar c, const QString & after )
15474{
15475 return replace( QString( c ), after );
15476}
15477
15478/*! \overload
15479 \fn QString &QString::replace( char c, const QString & after )
15480
15481 Replaces every occurrence of the character \a c in the string
15482 with \a after. Returns a reference to the string.
15483*/
15484
15485/*! \overload
15486
15487 Replaces every occurrence of the string \a before in the string
15488 with the string \a after. Returns a reference to the string.
15489
15490 Example:
15491 \code
15492 QString s = "Greek is Greek";
15493 s.replace( "Greek", "English" );
15494 // s == "English is English"
15495 \endcode
15496*/
15497QString &QString::replace( const QString & before, const QString & after )
15498{
15499 if ( before == after || isNull() )
15500 return *this;
15501
15502 real_detach();
15503
15504 int index = 0;
15505 uint skiptable[256];
15506 bm_init_skiptable( before, skiptable, TRUE );
15507 const int bl = before.length();
15508 const int al = after.length();
15509
15510 if ( bl == al ) {
15511 if ( bl ) {
15512 const QChar *auc = after.unicode();
15513 while( (index = bm_find(*this, index, before, skiptable, TRUE) ) != -1 ) {
15514 memcpy( d->unicode+index, auc, al*sizeof(QChar) );
15515 index += bl;
15516 }
15517 }
15518 } else if ( al < bl ) {
15519 const QChar *auc = after.unicode();
15520 uint to = 0;
15521 uint movestart = 0;
15522 uint num = 0;
15523 while( (index = bm_find(*this, index, before, skiptable, TRUE) ) != -1 ) {
15524 if ( num ) {
15525 int msize = index - movestart;
15526 if ( msize > 0 ) {
15527 memmove( d->unicode + to, d->unicode + movestart, msize*sizeof(QChar) );
15528 to += msize;
15529 }
15530 } else {
15531 to = index;
15532 }
15533 if ( al ) {
15534 memcpy( d->unicode+to, auc, al*sizeof(QChar) );
15535 to += al;
15536 }
15537 index += bl;
15538 movestart = index;
15539 num++;
15540 }
15541 if ( num ) {
15542 int msize = d->len - movestart;
15543 if ( msize > 0 )
15544 memmove( d->unicode + to, d->unicode + movestart, msize*sizeof(QChar) );
15545 setLength( d->len - num*(bl-al) );
15546 }
15547 } else {
15548 // the most complex case. We don't want to loose performance by doing repeated
15549 // copies and reallocs of the string.
15550 while( index != -1 ) {
15551 uint indices[4096];
15552 uint pos = 0;
15553 while( pos < 4095 ) {
15554 index = bm_find(*this, index, before, skiptable, TRUE);
15555 if ( index == -1 )
15556 break;
15557 indices[pos++] = index;
15558 index += bl;
15559 // avoid infinite loop
15560 if ( !bl )
15561 index++;
15562 }
15563 if ( !pos )
15564 break;
15565
15566 // we have a table of replacement positions, use them for fast replacing
15567 int adjust = pos*(al-bl);
15568 // index has to be adjusted in case we get back into the loop above.
15569 if ( index != -1 )
15570 index += adjust;
15571 uint newlen = d->len + adjust;
15572 int moveend = d->len;
15573 if ( newlen > d->len )
15574 setLength( newlen );
15575
15576 while( pos ) {
15577 pos--;
15578 int movestart = indices[pos] + bl;
15579 int insertstart = indices[pos] + pos*(al-bl);
15580 int moveto = insertstart + al;
15581 memmove( d->unicode + moveto, d->unicode + movestart, (moveend - movestart)*sizeof(QChar) );
15582 memcpy( d->unicode + insertstart, after.unicode(), al*sizeof(QChar) );
15583 moveend = movestart-bl;
15584 }
15585 }
15586 }
15587 return *this;
15588}
15589
15590#ifndef QT_NO_REGEXP_CAPTURE
15591/*! \overload
15592
15593 Replaces every occurrence of the regexp \a rx in the string with \a str.
15594 Returns a reference to the string. For example:
15595 \code
15596 QString s = "banana";
15597 s.replace( QRegExp("an"), "" );
15598 // s == "ba"
15599 \endcode
15600
15601 For regexps containing \link qregexp.html#capturing-text capturing
15602 parentheses \endlink, occurrences of <b>\\1</b>, <b>\\2</b>, ...,
15603 in \a str are replaced with \a{rx}.cap(1), cap(2), ...
15604
15605 \code
15606 QString t = "A <i>bon mot</i>.";
15607 t.replace( QRegExp("<i>([^<]*)</i>"), "\\emph{\\1}" );
15608 // t == "A \\emph{bon mot}."
15609 \endcode
15610
15611 \sa find(), findRev(), QRegExp::cap()
15612*/
15613
15614QString &QString::replace( const QRegExp &rx, const QString &str )
15615{
15616 if ( isNull() )
15617 return *this;
15618
15619 real_detach();
15620
15621 QRegExp rx2 = rx;
15622 int index = 0;
15623 int numCaptures = rx2.numCaptures();
15624 int al = str.length();
15625 QRegExp::CaretMode caretMode = QRegExp::CaretAtZero;
15626
15627 if ( numCaptures > 0 ) {
15628 if ( numCaptures > 9 )
15629 numCaptures = 9;
15630
15631 const QChar *uc = str.unicode();
15632 int numBackRefs = 0;
15633
15634 for ( int i = 0; i < al - 1; i++ ) {
15635 if ( uc[i] == '\\' ) {
15636 int no = uc[i + 1].digitValue();
15637 if ( no > 0 && no <= numCaptures )
15638 numBackRefs++;
15639 }
15640 }
15641
15642 /*
15643 This is the harder case where we have back-references. We
15644 don't try to optimize it.
15645 */
15646 if ( numBackRefs > 0 ) {
15647 int *capturePositions = new int[numBackRefs];
15648 int *captureNumbers = new int[numBackRefs];
15649 int j = 0;
15650
15651 for ( int i = 0; i < al - 1; i++ ) {
15652 if ( uc[i] == '\\' ) {
15653 int no = uc[i + 1].digitValue();
15654 if ( no > 0 && no <= numCaptures ) {
15655 capturePositions[j] = i;
15656 captureNumbers[j] = no;
15657 j++;
15658 }
15659 }
15660 }
15661
15662 while ( index <= (int)length() ) {
15663 index = rx2.search( *this, index, caretMode );
15664 if ( index == -1 )
15665 break;
15666
15667 QString str2 = str;
15668 for ( j = numBackRefs - 1; j >= 0; j-- )
15669 str2.replace( capturePositions[j], 2,
15670 rx2.cap(captureNumbers[j]) );
15671
15672 replace( index, rx2.matchedLength(), str2 );
15673 index += str2.length();
15674
15675 if ( rx2.matchedLength() == 0 ) {
15676 // avoid infinite loop on 0-length matches (e.g., [a-z]*)
15677 index++;
15678 } else if ( index == 0 ) {
15679 caretMode = QRegExp::CaretWontMatch;
15680 }
15681 }
15682 delete[] capturePositions;
15683 delete[] captureNumbers;
15684 return *this;
15685 }
15686 }
15687
15688 /*
15689 This is the simple and optimized case where we don't have
15690 back-references.
15691 */
15692 while ( index != -1 ) {
15693 struct {
15694 int pos;
15695 int length;
15696 } replacements[2048];
15697
15698 uint pos = 0;
15699 int adjust = 0;
15700 while( pos < 2047 ) {
15701 index = rx2.search( *this, index, caretMode );
15702 if ( index == -1 )
15703 break;
15704 int ml = rx2.matchedLength();
15705 replacements[pos].pos = index;
15706 replacements[pos++].length = ml;
15707 index += ml;
15708 adjust += al - ml;
15709 // avoid infinite loop
15710 if ( !ml )
15711 index++;
15712 }
15713 if ( !pos )
15714 break;
15715 replacements[pos].pos = d->len;
15716 uint newlen = d->len + adjust;
15717
15718 // to continue searching at the right position after we did
15719 // the first round of replacements
15720 if ( index != -1 )
15721 index += adjust;
15722 QChar *newuc = QT_ALLOC_QCHAR_VEC( newlen + 1 );
15723 QChar *uc = newuc;
15724 int copystart = 0;
15725 uint i = 0;
15726 while( i < pos ) {
15727 int copyend = replacements[i].pos;
15728 int size = copyend - copystart;
15729 memcpy( uc, d->unicode + copystart, size*sizeof(QChar) );
15730 uc += size;
15731 memcpy( uc, str.unicode(), al*sizeof( QChar ) );
15732 uc += al;
15733 copystart = copyend + replacements[i].length;
15734 i++;
15735 }
15736 memcpy( uc, d->unicode + copystart,
15737 (d->len - copystart) * sizeof(QChar) );
15738 QT_DELETE_QCHAR_VEC( d->unicode );
15739 d->unicode = newuc;
15740 d->len = newlen;
15741 d->maxl = newlen + 1;
15742 d->setDirty();
15743 caretMode = QRegExp::CaretWontMatch;
15744 }
15745 return *this;
15746}
15747#endif
15748
15749#ifndef QT_NO_REGEXP
15750/*!
15751 Finds the first match of the regular expression \a rx, starting
15752 from position \a index. If \a index is -1, the search starts at
15753 the last character; if -2, at the next to last character and so
15754 on. (See findRev() for searching backwards.)
15755
15756 Returns the position of the first match of \a rx or -1 if no match
15757 was found.
15758
15759 \code
15760 QString string( "bananas" );
15761 int i = string.find( QRegExp("an"), 0 ); // i == 1
15762 \endcode
15763
15764 \sa findRev() replace() contains()
15765*/
15766
15767int QString::find( const QRegExp &rx, int index ) const
15768{
15769 return rx.search( *this, index );
15770}
15771
15772/*!
15773 \overload
15774
15775 Finds the first match of the regexp \a rx, starting at position \a
15776 index and searching backwards. If the index is -1, the search
15777 starts at the last character, if it is -2, at the next to last
15778 character and so on. (See findRev() for searching backwards.)
15779
15780 Returns the position of the match or -1 if no match was found.
15781
15782 \code
15783 QString string( "bananas" );
15784 int i = string.findRev( QRegExp("an") ); // i == 3
15785 \endcode
15786
15787 \sa find()
15788*/
15789
15790int QString::findRev( const QRegExp &rx, int index ) const
15791{
15792 return rx.searchRev( *this, index );
15793}
15794
15795/*!
15796 \overload
15797
15798 Returns the number of times the regexp, \a rx, matches in the
15799 string.
15800
15801 This function counts overlapping matches, so in the example below,
15802 there are four instances of "ana" or "ama".
15803
15804 \code
15805 QString str = "banana and panama";
15806 QRegExp rxp = QRegExp( "a[nm]a", TRUE, FALSE );
15807 int i = str.contains( rxp ); // i == 4
15808 \endcode
15809
15810 \sa find() findRev()
15811*/
15812
15813int QString::contains( const QRegExp &rx ) const
15814{
15815 int count = 0;
15816 int index = -1;
15817 int len = length();
15818 while ( index < len - 1 ) { // count overlapping matches
15819 index = rx.search( *this, index + 1 );
15820 if ( index == -1 )
15821 break;
15822 count++;
15823 }
15824 return count;
15825}
15826
15827#endif //QT_NO_REGEXP
15828
15829static bool ok_in_base( QChar c, int base )
15830{
15831 if ( base <= 10 )
15832 return c.isDigit() && c.digitValue() < base;
15833 else
15834 return c.isDigit() || (c >= 'a' && c < char('a'+base-10))
15835 || (c >= 'A' && c < char('A'+base-10));
15836}
15837
15838/*!
15839 Returns the string converted to a \c long value to the base \a
15840 base, which is 10 by default and must be between 2 and 36.
15841
15842 If \a ok is not 0: if a conversion error occurs, \a *ok is set to
15843 FALSE; otherwise \a *ok is set to TRUE.
15844
15845 \sa number()
15846*/
15847
15848long QString::toLong( bool *ok, int base ) const
15849{
15850 const QChar *p = unicode();
15851 long val = 0;
15852 int l = length();
15853 const long max_mult = INT_MAX / base;
15854 bool is_ok = FALSE;
15855 int neg = 0;
15856 if ( !p )
15857 goto bye;
15858 while ( l && p->isSpace() ) // skip leading space
15859 l--,p++;
15860 if ( !l )
15861 goto bye;
15862 if ( *p == '-' ) {
15863 l--;
15864 p++;
15865 neg = 1;
15866 } else if ( *p == '+' ) {
15867 l--;
15868 p++;
15869 }
15870
15871 // NOTE: toULong() code is similar
15872 if ( !l || !ok_in_base(*p,base) )
15873 goto bye;
15874 while ( l && ok_in_base(*p,base) ) {
15875 l--;
15876 int dv;
15877 if ( p->isDigit() ) {
15878 dv = p->digitValue();
15879 } else {
15880 if ( *p >= 'a' && *p <= 'z' )
15881 dv = *p - 'a' + 10;
15882 else
15883 dv = *p - 'A' + 10;
15884 }
15885 if ( val > max_mult ||
15886 (val == max_mult && dv > (INT_MAX % base) + neg) )
15887 goto bye;
15888 val = base * val + dv;
15889 p++;
15890 }
15891 if ( neg )
15892 val = -val;
15893 while ( l && p->isSpace() ) // skip trailing space
15894 l--,p++;
15895 if ( !l )
15896 is_ok = TRUE;
15897bye:
15898 if ( ok )
15899 *ok = is_ok;
15900 return is_ok ? val : 0;
15901}
15902
15903/*!
15904 Returns the string converted to an \c {unsigned long} value to the
15905 base \a base, which is 10 by default and must be between 2 and 36.
15906
15907 If \a ok is not 0: if a conversion error occurs, \a *ok is set to
15908 FALSE; otherwise \a *ok is set to TRUE.
15909
15910 \sa number()
15911*/
15912
15913ulong QString::toULong( bool *ok, int base ) const
15914{
15915 const QChar *p = unicode();
15916 ulong val = 0;
15917 int l = length();
15918 const ulong max_mult = UINT_MAX / base;
15919 bool is_ok = FALSE;
15920 if ( !p )
15921 goto bye;
15922 while ( l && p->isSpace() ) // skip leading space
15923 l--,p++;
15924 if ( !l )
15925 goto bye;
15926 if ( *p == '+' )
15927 l--,p++;
15928
15929 // NOTE: toLong() code is similar
15930 if ( !l || !ok_in_base(*p,base) )
15931 goto bye;
15932 while ( l && ok_in_base(*p,base) ) {
15933 l--;
15934 uint dv;
15935 if ( p->isDigit() ) {
15936 dv = p->digitValue();
15937 } else {
15938 if ( *p >= 'a' && *p <= 'z' )
15939 dv = *p - 'a' + 10;
15940 else
15941 dv = *p - 'A' + 10;
15942 }
15943 if ( val > max_mult || (val == max_mult && dv > UINT_MAX % base) )
15944 goto bye;
15945 val = base * val + dv;
15946 p++;
15947 }
15948
15949 while ( l && p->isSpace() ) // skip trailing space
15950 l--,p++;
15951 if ( !l )
15952 is_ok = TRUE;
15953bye:
15954 if ( ok )
15955 *ok = is_ok;
15956 return is_ok ? val : 0;
15957}
15958
15959/*!
15960 Returns the string converted to a \c short value to the base \a
15961 base, which is 10 by default and must be between 2 and 36.
15962
15963 If \a ok is not 0: if a conversion error occurs, \a *ok is set to
15964 FALSE; otherwise \a *ok is set to TRUE.
15965*/
15966
15967short QString::toShort( bool *ok, int base ) const
15968{
15969 long v = toLong( ok, base );
15970 if ( ok && *ok && (v < -32768 || v > 32767) ) {
15971 *ok = FALSE;
15972 v = 0;
15973 }
15974 return (short)v;
15975}
15976
15977/*!
15978 Returns the string converted to an \c {unsigned short} value to
15979 the base \a base, which is 10 by default and must be between 2 and
15980 36.
15981
15982 If \a ok is not 0: if a conversion error occurs, \a *ok is set to
15983 FALSE; otherwise \a *ok is set to TRUE.
15984*/
15985
15986ushort QString::toUShort( bool *ok, int base ) const
15987{
15988 ulong v = toULong( ok, base );
15989 if ( ok && *ok && (v > 65535) ) {
15990 *ok = FALSE;
15991 v = 0;
15992 }
15993 return (ushort)v;
15994}
15995
15996
15997/*!
15998 Returns the string converted to an \c int value to the base \a
15999 base, which is 10 by default and must be between 2 and 36.
16000
16001 If \a ok is not 0: if a conversion error occurs, \a *ok is set to
16002 FALSE; otherwise \a *ok is set to TRUE.
16003
16004 \code
16005 QString str( "FF" );
16006 bool ok;
16007 int hex = str.toInt( &ok, 16 ); // hex == 255, ok == TRUE
16008 int dec = str.toInt( &ok, 10 ); // dec == 0, ok == FALSE
16009 \endcode
16010
16011 \sa number()
16012*/
16013
16014int QString::toInt( bool *ok, int base ) const
16015{
16016 return (int)toLong( ok, base );
16017}
16018
16019/*!
16020 Returns the string converted to an \c{unsigned int} value to the
16021 base \a base, which is 10 by default and must be between 2 and 36.
16022
16023 If \a ok is not 0: if a conversion error occurs, \a *ok is set to
16024 FALSE; otherwise \a *ok is set to TRUE.
16025
16026 \sa number()
16027*/
16028
16029uint QString::toUInt( bool *ok, int base ) const
16030{
16031 return (uint)toULong( ok, base );
16032}
16033
16034/*!
16035 Returns the string converted to a \c double value.
16036
16037 If \a ok is not 0: if a conversion error occurs, \a *ok is set to
16038 FALSE; otherwise \a *ok is set to TRUE.
16039
16040 \code
16041 QString string( "1234.56" );
16042 double a = string.toDouble(); // a == 1234.56
16043 \endcode
16044
16045 \sa number()
16046*/
16047
16048double QString::toDouble( bool *ok ) const
16049{
16050 char *end;
16051
16052 const char *a = latin1();
16053 double val = strtod( a ? a : "", &end );
16054 if ( ok )
16055 *ok = ( a && *a && (end == 0 || (end - a) == (int)length()) );
16056 return val;
16057}
16058
16059/*!
16060 Returns the string converted to a \c float value.
16061
16062 If \a ok is not 0: if a conversion error occurs, \a *ok is set to
16063 FALSE; otherwise \a *ok is set to TRUE.
16064
16065 \sa number()
16066*/
16067
16068float QString::toFloat( bool *ok ) const
16069{
16070 return (float)toDouble( ok );
16071}
16072
16073
16074/*!
16075 Sets the string to the printed value of \a n in base \a base and
16076 returns a reference to the string.
16077
16078 The base is 10 by default and must be between 2 and 36.
16079
16080 \code
16081 QString string;
16082 string = string.setNum( 1234 ); // string == "1234"
16083 \endcode
16084*/
16085
16086QString &QString::setNum( long n, int base )
16087{
16088#if defined(QT_CHECK_RANGE)
16089 if ( base < 2 || base > 36 ) {
16090 qWarning( "QString::setNum: Invalid base %d", base );
16091 base = 10;
16092 }
16093#endif
16094 char charbuf[65*sizeof(QChar)];
16095 QChar *buf = (QChar*)charbuf;
16096 QChar *p = &buf[64];
16097 int len = 0;
16098 bool neg;
16099 if ( n < 0 ) {
16100 neg = TRUE;
16101 if ( n == INT_MIN ) {
16102 // Cannot always negate this special case
16103 QString s1, s2;
16104 s1.setNum(n/base);
16105 s2.setNum((-(n+base))%base);
16106 *this = s1 + s2;
16107 return *this;
16108 }
16109 n = -n;
16110 } else {
16111 neg = FALSE;
16112 }
16113 do {
16114 *--p = "0123456789abcdefghijklmnopqrstuvwxyz"[((int)(n%base))];
16115 n /= base;
16116 ++len;
16117 } while ( n );
16118 if ( neg ) {
16119 *--p = '-';
16120 ++len;
16121 }
16122 return setUnicode( p, len );
16123}
16124
16125/*!
16126 \overload
16127
16128 Sets the string to the printed value of \a n in base \a base and
16129 returns a reference to the string.
16130
16131 The base is 10 by default and must be between 2 and 36.
16132*/
16133
16134QString &QString::setNum( ulong n, int base )
16135{
16136#if defined(QT_CHECK_RANGE)
16137 if ( base < 2 || base > 36 ) {
16138 qWarning( "QString::setNum: Invalid base %d", base );
16139 base = 10;
16140 }
16141#endif
16142 char charbuf[65*sizeof(QChar)];
16143 QChar *buf = (QChar*)charbuf;
16144 QChar *p = &buf[64];
16145 int len = 0;
16146 do {
16147 *--p = "0123456789abcdefghijklmnopqrstuvwxyz"[((int)(n%base))];
16148 n /= base;
16149 len++;
16150 } while ( n );
16151 return setUnicode(p,len);
16152}
16153
16154/*!
16155 \fn QString &QString::setNum( int n, int base )
16156
16157 \overload
16158
16159 Sets the string to the printed value of \a n in base \a base and
16160 returns a reference to the string.
16161
16162 The base is 10 by default and must be between 2 and 36.
16163*/
16164
16165/*!
16166 \fn QString &QString::setNum( uint n, int base )
16167
16168 \overload
16169
16170 Sets the string to the printed value of \a n in base \a base and
16171 returns a reference to the string.
16172
16173 The base is 10 by default and must be between 2 and 36.
16174*/
16175
16176/*!
16177 \fn QString &QString::setNum( short n, int base )
16178
16179 \overload
16180
16181 Sets the string to the printed value of \a n in base \a base and
16182 returns a reference to the string.
16183
16184 The base is 10 by default and must be between 2 and 36.
16185*/
16186
16187/*!
16188 \fn QString &QString::setNum( ushort n, int base )
16189
16190 \overload
16191
16192 Sets the string to the printed value of \a n in base \a base and
16193 returns a reference to the string.
16194
16195 The base is 10 by default and must be between 2 and 36.
16196*/
16197
16198/*!
16199 \overload
16200
16201 Sets the string to the printed value of \a n, formatted in format
16202 \a f with precision \a prec, and returns a reference to the
16203 string.
16204
16205 The format \a f can be 'f', 'F', 'e', 'E', 'g' or 'G'. See \link
16206 #arg-formats arg \endlink() for an explanation of the formats.
16207*/
16208
16209QString &QString::setNum( double n, char f, int prec )
16210{
16211#if defined(QT_CHECK_RANGE)
16212 if ( !(f=='f' || f=='F' || f=='e' || f=='E' || f=='g' || f=='G') ) {
16213 qWarning( "QString::setNum: Invalid format char '%c'", f );
16214 f = 'f';
16215 }
16216#endif
16217 char format[20];
16218 char *fs = format; // generate format string: %.<prec>l<f>
16219 *fs++ = '%';
16220 if ( prec >= 0 ) {
16221 if ( prec > 99 ) // rather than crash in sprintf()
16222 prec = 99;
16223 *fs++ = '.';
16224 if ( prec >= 10 ) {
16225 *fs++ = prec / 10 + '0';
16226 *fs++ = prec % 10 + '0';
16227 } else {
16228 *fs++ = prec + '0';
16229 }
16230 }
16231 *fs++ = 'l';
16232 *fs++ = f;
16233 *fs = '\0';
16234#ifndef QT_NO_SPRINTF
16235 sprintf( format, n );
16236 return *this;
16237#else
16238 char buf[512];
16239 ::sprintf( buf, format, n ); // snprintf is unfortunately not portable
16240 return setLatin1(buf);
16241#endif
16242}
16243
16244/*!
16245 \fn QString &QString::setNum( float n, char f, int prec )
16246
16247 \overload
16248
16249 Sets the string to the printed value of \a n, formatted in format
16250 \a f with precision \a prec, and returns a reference to the
16251 string.
16252
16253 The format \a f can be 'f', 'F', 'e', 'E', 'g' or 'G'. See \link
16254 #arg-formats arg \endlink() for an explanation of the formats.
16255*/
16256
16257
16258/*!
16259 A convenience function that returns a string equivalent of the
16260 number \a n to base \a base, which is 10 by default and must be
16261 between 2 and 36.
16262
16263 \code
16264 long a = 63;
16265 QString str = QString::number( a, 16 ); // str == "3f"
16266 QString str = QString::number( a, 16 ).upper(); // str == "3F"
16267 \endcode
16268
16269 \sa setNum()
16270*/
16271QString QString::number( long n, int base )
16272{
16273 QString s;
16274 s.setNum( n, base );
16275 return s;
16276}
16277
16278/*!
16279 \overload
16280
16281 \sa setNum()
16282*/
16283QString QString::number( ulong n, int base )
16284{
16285 QString s;
16286 s.setNum( n, base );
16287 return s;
16288}
16289
16290/*!
16291 \overload
16292
16293 \sa setNum()
16294*/
16295QString QString::number( int n, int base )
16296{
16297 QString s;
16298 s.setNum( n, base );
16299 return s;
16300}
16301
16302/*!
16303 \overload
16304
16305 A convenience factory function that returns a string
16306 representation of the number \a n to the base \a base, which is 10
16307 by default and must be between 2 and 36.
16308
16309 \sa setNum()
16310*/
16311QString QString::number( uint n, int base )
16312{
16313 QString s;
16314 s.setNum( n, base );
16315 return s;
16316}
16317
16318/*!
16319 \overload
16320
16321 Argument \a n is formatted according to the \a f format specified,
16322 which is \c g by default, and can be any of the following:
16323
16324 \table
16325 \header \i Format \i Meaning
16326 \row \i \c e \i format as [-]9.9e[+|-]999
16327 \row \i \c E \i format as [-]9.9E[+|-]999
16328 \row \i \c f \i format as [-]9.9
16329 \row \i \c g \i use \c e or \c f format, whichever is the most concise
16330 \row \i \c G \i use \c E or \c f format, whichever is the most concise
16331 \endtable
16332
16333 With 'e', 'E', and 'f', \a prec is the number of digits after the
16334 decimal point. With 'g' and 'G', \a prec is the maximum number of
16335 significant digits (trailing zeroes are omitted).
16336
16337 \code
16338 double d = 12.34;
16339 QString ds = QString( "'E' format, precision 3, gives %1" )
16340 .arg( d, 0, 'E', 3 );
16341 // ds == "1.234E+001"
16342 \endcode
16343
16344 \sa setNum()
16345 */
16346QString QString::number( double n, char f, int prec )
16347{
16348 QString s;
16349 s.setNum( n, f, prec );
16350 return s;
16351}
16352
16353
16354/*! \obsolete
16355
16356 Sets the character at position \a index to \a c and expands the
16357 string if necessary, filling with spaces.
16358
16359 This method is redundant in Qt 3.x, because operator[] will expand
16360 the string as necessary.
16361*/
16362
16363void QString::setExpand( uint index, QChar c )
16364{
16365 int spaces = index - d->len;
16366 at(index) = c;
16367 while (spaces-->0)
16368 d->unicode[--index]=' ';
16369}
16370
16371
16372/*!
16373 \fn const char* QString::data() const
16374
16375 \obsolete
16376
16377 Returns a pointer to a '\0'-terminated classic C string.
16378
16379 In Qt 1.x, this returned a char* allowing direct manipulation of the
16380 string as a sequence of bytes. In Qt 2.x where QString is a Unicode
16381 string, char* conversion constructs a temporary string, and hence
16382 direct character operations are meaningless.
16383*/
16384
16385/*!
16386 \fn bool QString::operator!() const
16387
16388 Returns TRUE if this is a null string; otherwise returns FALSE.
16389
16390 \code
16391 QString name = getName();
16392 if ( !name )
16393 name = "Rodney";
16394 \endcode
16395
16396 Note that if you say
16397
16398 \code
16399 QString name = getName();
16400 if ( name )
16401 doSomethingWith(name);
16402 \endcode
16403
16404 It will call "operator const char*()", which is inefficent; you
16405 may wish to define the macro \c QT_NO_ASCII_CAST when writing code
16406 which you wish to remain Unicode-clean.
16407
16408 When you want the above semantics, use:
16409
16410 \code
16411 QString name = getName();
16412 if ( !name.isNull() )
16413 doSomethingWith(name);
16414 \endcode
16415
16416 \sa isEmpty()
16417*/
16418
16419
16420/*!
16421 \fn QString& QString::append( const QString& str )
16422
16423 Appends \a str to the string and returns a reference to the
16424 result.
16425
16426 \code
16427 string = "Test";
16428 string.append( "ing" ); // string == "Testing"
16429 \endcode
16430
16431 Equivalent to operator+=().
16432*/
16433
16434/*!
16435 \fn QString& QString::append( char ch )
16436
16437 \overload
16438
16439 Appends character \a ch to the string and returns a reference to
16440 the result.
16441
16442 Equivalent to operator+=().
16443*/
16444
16445/*!
16446 \fn QString& QString::append( QChar ch )
16447
16448 \overload
16449
16450 Appends character \a ch to the string and returns a reference to
16451 the result.
16452
16453 Equivalent to operator+=().
16454*/
16455
16456/*! \fn QString& QString::append( const QByteArray &str )
16457 \overload
16458
16459 Appends \a str to the string and returns a reference to the result.
16460
16461 Equivalent to operator+=().
16462 */
16463
16464/*! \fn QString& QString::append( const char *str )
16465 \overload
16466
16467 Appends \a str to the string and returns a reference to the result.
16468
16469 Equivalent to operator+=().
16470 */
16471
16472/*!
16473 Appends \a str to the string and returns a reference to the string.
16474*/
16475QString& QString::operator+=( const QString &str )
16476{
16477 uint len1 = length();
16478 uint len2 = str.length();
16479 if ( len2 ) {
16480 setLength(len1+len2);
16481 memcpy( d->unicode+len1, str.unicode(), sizeof(QChar)*len2 );
16482 } else if ( isNull() && !str.isNull() ) { // ## just for 1.x compat:
16483 *this = fromLatin1( "" );
16484 }
16485 return *this;
16486}
16487
16488/*!
16489 \overload
16490
16491 Appends \a str to the string and returns a reference to the string.
16492*/
16493QString& QString::operator+=( const char *str )
16494{
16495 if ( str ) {
16496 uint len1 = length();
16497 uint len2 = strlen( str );
16498 if ( len2 ) {
16499 setLength(len1+len2);
16500 uint i = 0;
16501 while( i < len2 ) {
16502 d->unicode[len1+i] = str[i];
16503 i++;
16504 }
16505 } else if ( isNull() ) { // ## just for 1.x compat:
16506 *this = fromLatin1( "" );
16507 }
16508 }
16509 return *this;
16510}
16511
16512/*! \overload
16513
16514 Appends \a c to the string and returns a reference to the string.
16515*/
16516
16517QString &QString::operator+=( QChar c )
16518{
16519 setLength(length()+1);
16520 d->unicode[length()-1] = c;
16521 return *this;
16522}
16523
16524/*!
16525 \overload
16526
16527 Appends \a c to the string and returns a reference to the string.
16528*/
16529
16530QString &QString::operator+=( char c )
16531{
16532 setLength(length()+1);
16533 d->unicode[length()-1] = c;
16534 return *this;
16535}
16536
16537/*!
16538 \fn QString &QString::operator+=( const QByteArray &str )
16539 \overload
16540
16541 Appends \a str to the string and returns a reference to the string.
16542*/
16543
16544
16545
16546/*!
16547 \fn char QChar::latin1() const
16548
16549 Returns a latin-1 copy of this character, if this character is in
16550 the latin-1 character set. If not, this function returns 0.
16551*/
16552
16553
16554/*!
16555 Returns a Latin-1 representation of the string. Note that the
16556 returned value is undefined if the string contains non-Latin-1
16557 characters. If you want to convert strings into formats other than
16558 Unicode, see the QTextCodec classes.
16559
16560 This function is mainly useful for boot-strapping legacy code to
16561 use Unicode.
16562
16563 The result remains valid so long as one unmodified copy of the
16564 source string exists.
16565
16566 \sa utf8(), local8Bit()
16567*/
16568const char* QString::latin1() const
16569{
16570 if ( !d->ascii ) {
16571 Q2HELPER(stat_get_ascii++)
16572 Q2HELPER(stat_get_ascii_size+=d->len)
16573 d->ascii = unicodeToAscii( d->unicode, d->len );
16574 }
16575 return d->ascii;
16576}
16577
16578/*!
16579 \fn const char* QString::ascii() const
16580 \obsolete
16581
16582 This function simply calls latin1() and returns the result.
16583*/
16584
16585/*!
16586 Returns the string encoded in UTF8 format.
16587
16588 See QTextCodec for more diverse coding/decoding of Unicode strings.
16589
16590 \sa QString::fromUtf8(), local8Bit(), latin1()
16591*/
16592QCString QString::utf8() const
16593{
16594 int l = length();
16595 int rlen = l*3+1;
16596 QCString rstr(rlen);
16597 uchar* cursor = (uchar*)rstr.data();
16598 const QChar *ch = d->unicode;
16599 for (int i=0; i<l; i++) {
16600 ushort u = ch->unicode();
16601 if ( u < 0x80 ) {
16602 *cursor++ = (uchar)u;
16603 } else {
16604 if ( u < 0x0800 ) {
16605 *cursor++ = 0xc0 | ((uchar) (u >> 6));
16606 } else {
16607 *cursor++ = 0xe0 | ((uchar) (u >> 12));
16608 *cursor++ = 0x80 | ( ((uchar) (u >> 6)) & 0x3f);
16609 }
16610 *cursor++ = 0x80 | ((uchar) (u&0x3f));
16611 }
16612 ch++;
16613 }
16614 rstr.truncate( cursor - (uchar*)rstr.data() );
16615 return rstr;
16616}
16617
16618/*!
16619 Returns the Unicode string decoded from the first \a len
16620 characters of \a utf8, ignoring the rest of \a utf8. If \a len is
16621 -1 then the length of \a utf8 is used. If \a len is bigger than
16622 the length of \a utf8 then it will use the length of \a utf8.
16623
16624 \code
16625 QString str = QString::fromUtf8( "123456789", 5 );
16626 // str == "12345"
16627 \endcode
16628
16629 See QTextCodec for more diverse coding/decoding of Unicode strings.
16630*/
16631QString QString::fromUtf8( const char* utf8, int len )
16632{
16633 if ( !utf8 )
16634 return QString::null;
16635
16636 if ( len < 0 ) len = qstrlen( utf8 );
16637 QString result;
16638 result.setLength( len ); // worst case
16639 QChar *qch = (QChar *)result.unicode();
16640 ushort uc = 0;
16641 int need = 0;
16642 for (int i=0; i<len; i++) {
16643 uchar ch = utf8[i];
16644 if (need) {
16645 if ( (ch&0xc0) == 0x80 ) {
16646 uc = (uc << 6) | (ch & 0x3f);
16647 need--;
16648 if ( !need ) {
16649 *qch = uc;
16650 qch++;
16651 }
16652 } else {
16653 // error
16654 *qch = QChar::replacement;
16655 qch++;
16656 need = 0;
16657 }
16658 } else {
16659 if ( ch < 128 ) {
16660 *qch = ch;
16661 qch++;
16662 } else if ( (ch&0xe0) == 0xc0 ) {
16663 uc = ch &0x1f;
16664 need = 1;
16665 } else if ( (ch&0xf0) == 0xe0 ) {
16666 uc = ch &0x0f;
16667 need = 2;
16668 }
16669 }
16670 }
16671 result.truncate( qch - result.unicode() );
16672 return result;
16673}
16674
16675/*!
16676 Returns the Unicode string decoded from the first \a len
16677 characters of \a chars, ignoring the rest of \a chars. If \a len
16678 is -1 then the length of \a chars is used. If \a len is bigger
16679 than the length of \a chars then it will use the length of \a
16680 chars.
16681
16682 This is the same as the QString(const char*) constructor, but you
16683 can make that constructor invisible if you compile with the define
16684 \c QT_NO_CAST_ASCII, in which case you can explicitly create a
16685 QString from Latin-1 text using this function.
16686
16687 \code
16688 QString str = QString::fromLatin1( "123456789", 5 );
16689 // str == "12345"
16690 \endcode
16691*/
16692QString QString::fromLatin1( const char* chars, int len )
16693{
16694 uint l;
16695 QChar *uc;
16696 if ( len < 0 )
16697 len = -1;
16698 uc = internalAsciiToUnicode( chars, &l, len );
16699 return QString( new QStringData(uc, l, l), TRUE );
16700}
16701
16702/*!
16703 \fn const QChar* QString::unicode() const
16704
16705 Returns the Unicode representation of the string. The result
16706 remains valid until the string is modified.
16707*/
16708
16709/*!
16710 Returns the string encoded in a locale-specific format. On X11,
16711 this is the QTextCodec::codecForLocale(). On Windows, it is a
16712 system-defined encoding. On Mac OS X, this always uses utf8 as the
16713 encoding.
16714
16715 See QTextCodec for more diverse coding/decoding of Unicode
16716 strings.
16717
16718 \sa QString::fromLocal8Bit(), latin1(), utf8()
16719*/
16720
16721
16722QCString QString::local8Bit() const
16723{
16724#ifdef QT_NO_TEXTCODEC
16725 return latin1();
16726#else
16727#ifdef Q_WS_X11
16728 QTextCodec* codec = QTextCodec::codecForLocale();
16729 return codec
16730 ? codec->fromUnicode(*this)
16731 : QCString(latin1());
16732#endif
16733#if defined( Q_WS_MACX )
16734 return utf8();
16735#endif
16736#if defined( Q_WS_MAC9 )
16737 return QCString(latin1()); //I'm evil..
16738#endif
16739#ifdef Q_WS_WIN
16740 return qt_winQString2MB( *this );
16741#endif
16742#ifdef Q_WS_QWS
16743 return utf8(); // ##### if there is ANY 8 bit format supported?
16744#endif
16745#endif
16746}
16747
16748/*!
16749 Returns the Unicode string decoded from the first \a len
16750 characters of \a local8Bit, ignoring the rest of \a local8Bit. If
16751 \a len is -1 then the length of \a local8Bit is used. If \a len is
16752 bigger than the length of \a local8Bit then it will use the length
16753 of \a local8Bit.
16754
16755 \code
16756 QString str = QString::fromLocal8Bit( "123456789", 5 );
16757 // str == "12345"
16758 \endcode
16759
16760 \a local8Bit is assumed to be encoded in a locale-specific format.
16761
16762 See QTextCodec for more diverse coding/decoding of Unicode strings.
16763*/
16764QString QString::fromLocal8Bit( const char* local8Bit, int len )
16765{
16766#ifdef QT_NO_TEXTCODEC
16767 return fromLatin1( local8Bit, len );
16768#else
16769
16770 if ( !local8Bit )
16771 return QString::null;
16772#ifdef Q_WS_X11
16773 QTextCodec* codec = QTextCodec::codecForLocale();
16774 if ( len < 0 ) len = qstrlen(local8Bit);
16775 return codec
16776 ? codec->toUnicode( local8Bit, len )
16777 : fromLatin1( local8Bit, len );
16778#endif
16779#if defined( Q_WS_MAC )
16780 return fromUtf8(local8Bit,len);
16781#endif
16782// Should this be OS_WIN32?
16783#ifdef Q_WS_WIN
16784 if ( len >= 0 ) {
16785 QCString s(local8Bit,len+1);
16786 return qt_winMB2QString(s);
16787 }
16788 return qt_winMB2QString( local8Bit );
16789#endif
16790#ifdef Q_WS_QWS
16791 return fromUtf8(local8Bit,len);
16792#endif
16793#endif // QT_NO_TEXTCODEC
16794}
16795
16796/*!
16797 \fn QString::operator const char *() const
16798
16799 Returns latin1(). Be sure to see the warnings documented in the
16800 latin1() function. Note that for new code which you wish to be
16801 strictly Unicode-clean, you can define the macro \c
16802 QT_NO_ASCII_CAST when compiling your code to hide this function so
16803 that automatic casts are not done. This has the added advantage
16804 that you catch the programming error described in operator!().
16805*/
16806
16807
16808/*!
16809 Returns the QString as a zero terminated array of unsigned shorts
16810 if the string is not null; otherwise returns zero.
16811
16812 The result remains valid so long as one unmodified
16813 copy of the source string exists.
16814*/
16815const unsigned short *QString::ucs2() const
16816{
16817 if ( ! d->unicode )
16818 return 0;
16819 unsigned int len = d->len;
16820 if ( d->maxl < len + 1 ) {
16821 // detach, grow or shrink
16822 Q2HELPER(stat_copy_on_write++)
16823 Q2HELPER(stat_copy_on_write_size += len)
16824 uint newMax = computeNewMax( len + 1 );
16825 QChar* nd = QT_ALLOC_QCHAR_VEC( newMax );
16826 if ( nd ) {
16827 if ( d->unicode )
16828 memcpy( nd, d->unicode, sizeof(QChar)*len );
16829 ((QString *)this)->deref();
16830 ((QString *)this)->d = new QStringData( nd, len, newMax );
16831 }
16832 }
16833 d->unicode[len] = 0;
16834 return (unsigned short *) d->unicode;
16835}
16836
16837/*!
16838 Constructs a string that is a deep copy of \a str, interpreted as a
16839 UCS2 encoded, zero terminated, Unicode string.
16840
16841 If \a str is 0, then a null string is created.
16842
16843 \sa isNull()
16844*/
16845QString QString::fromUcs2( const unsigned short *str )
16846{
16847 if ( !str ) {
16848 return QString::null;
16849 } else {
16850 int length = 0;
16851 while( str[length] != 0 )
16852 length++;
16853 QChar* uc = QT_ALLOC_QCHAR_VEC( length );
16854 memcpy( uc, str, length*sizeof(QChar) );
16855 return QString( new QStringData( uc, length, length ), TRUE );
16856 }
16857}
16858
16859/*!
16860 \fn QChar QString::at( uint ) const
16861
16862 Returns the character at index \a i, or 0 if \a i is beyond the
16863 length of the string.
16864
16865 \code
16866 const QString string( "abcdefgh" );
16867 QChar ch = string.at( 4 );
16868 // ch == 'e'
16869 \endcode
16870
16871 If the QString is not const (i.e. const QString) or const& (i.e.
16872 const QString &), then the non-const overload of at() will be used
16873 instead.
16874*/
16875
16876/*!
16877 \fn QChar QString::constref(uint i) const
16878
16879 Returns the QChar at index \a i by value.
16880
16881 Equivalent to at(\a i).
16882
16883 \sa ref()
16884*/
16885
16886/*!
16887 \fn QChar& QString::ref(uint i)
16888
16889 Returns the QChar at index \a i by reference, expanding the string
16890 with QChar::null if necessary. The resulting reference can be
16891 assigned to, or otherwise used immediately, but becomes invalid
16892 once furher modifications are made to the string.
16893
16894 \code
16895 QString string("ABCDEF");
16896 QChar ch = string.ref( 3 ); // ch == 'D'
16897 \endcode
16898
16899 \sa constref()
16900*/
16901
16902/*!
16903 \fn QChar QString::operator[]( int ) const
16904
16905 Returns the character at index \a i, or QChar::null if \a i is
16906 beyond the length of the string.
16907
16908 If the QString is not const (i.e., const QString) or const\&
16909 (i.e., const QString\&), then the non-const overload of operator[]
16910 will be used instead.
16911*/
16912
16913/*!
16914 \fn QCharRef QString::operator[]( int )
16915
16916 \overload
16917
16918 The function returns a reference to the character at index \a i.
16919 The resulting reference can then be assigned to, or used
16920 immediately, but it will become invalid once further modifications
16921 are made to the original string.
16922
16923 If \a i is beyond the length of the string then the string is
16924 expanded with QChar::nulls, so that the QCharRef references a
16925 valid (null) character in the string.
16926
16927 The QCharRef internal class can be used much like a constant
16928 QChar, but if you assign to it, you change the original string
16929 (which will detach itself because of QString's copy-on-write
16930 semantics). You will get compilation errors if you try to use the
16931 result as anything but a QChar.
16932*/
16933
16934/*!
16935 \fn QCharRef QString::at( uint i )
16936
16937 \overload
16938
16939 The function returns a reference to the character at index \a i.
16940 The resulting reference can then be assigned to, or used
16941 immediately, but it will become invalid once further modifications
16942 are made to the original string.
16943
16944 If \a i is beyond the length of the string then the string is
16945 expanded with QChar::null.
16946*/
16947
16948/*
16949 Internal chunk of code to handle the
16950 uncommon cases of at() above.
16951*/
16952void QString::subat( uint i )
16953{
16954 uint olen = d->len;
16955 if ( i >= olen ) {
16956 setLength( i+1 ); // i is index; i+1 is needed length
16957 for ( uint j=olen; j<=i; j++ )
16958 d->unicode[j] = QChar::null;
16959 } else {
16960 // Just be sure to detach
16961 real_detach();
16962 }
16963}
16964
16965
16966/*!
16967 Resizes the string to \a len characters and copies \a unicode into
16968 the string. If \a unicode is 0, nothing is copied, but the
16969 string is still resized to \a len. If \a len is zero, then the
16970 string becomes a \link isNull() null\endlink string.
16971
16972 \sa setLatin1(), isNull()
16973*/
16974
16975QString& QString::setUnicode( const QChar *unicode, uint len )
16976{
16977 if ( len == 0 ) { // set to null string
16978 if ( d != shared_null ) { // beware of nullstring being set to nullstring
16979 deref();
16980 d = shared_null ? shared_null : makeSharedNull();
16981 d->ref();
16982 }
16983 } else if ( d->count != 1 || len > d->maxl ||
16984 ( len * 4 < d->maxl && d->maxl > 4 ) ) {
16985 // detach, grown or shrink
16986 Q2HELPER(stat_copy_on_write++)
16987 Q2HELPER(stat_copy_on_write_size+=d->len)
16988 uint newMax = computeNewMax( len );
16989 QChar* nd = QT_ALLOC_QCHAR_VEC( newMax );
16990 if ( unicode )
16991 memcpy( nd, unicode, sizeof(QChar)*len );
16992 deref();
16993 d = new QStringData( nd, len, newMax );
16994 } else {
16995 d->len = len;
16996 d->setDirty();
16997 if ( unicode )
16998 memcpy( d->unicode, unicode, sizeof(QChar)*len );
16999 }
17000 return *this;
17001}
17002
17003/*!
17004 Resizes the string to \a len characters and copies \a
17005 unicode_as_ushorts into the string (on some X11 client platforms
17006 this will involve a byte-swapping pass).
17007
17008 If \a unicode_as_ushorts is 0, nothing is copied, but the string
17009 is still resized to \a len. If \a len is zero, the string becomes
17010 a \link isNull() null\endlink string.
17011
17012 \sa setLatin1(), isNull()
17013*/
17014QString& QString::setUnicodeCodes( const ushort* unicode_as_ushorts, uint len )
17015{
17016 return setUnicode((const QChar*)unicode_as_ushorts, len);
17017}
17018
17019
17020/*!
17021 Sets this string to \a str, interpreted as a classic Latin1 C
17022 string. If \a len is -1 (the default), then it is set to
17023 strlen(str).
17024
17025 If \a str is 0 a null string is created. If \a str is "", an empty
17026 string is created.
17027
17028 \sa isNull(), isEmpty()
17029*/
17030
17031QString &QString::setLatin1( const char *str, int len )
17032{
17033 if ( str == 0 )
17034 return setUnicode(0,0);
17035 if ( len < 0 )
17036 len = qstrlen(str);
17037 if ( len == 0 ) { // won't make a null string
17038 *this = QString::fromLatin1( "" );
17039 } else {
17040 setUnicode( 0, len ); // resize but not copy
17041 QChar *p = d->unicode;
17042 while ( len-- )
17043 *p++ = *str++;
17044 }
17045 return *this;
17046}
17047
17048/*! \internal
17049 */
17050void QString::checkSimpleText() const
17051{
17052 QChar *p = d->unicode;
17053 QChar *end = p + d->len;
17054 d->simpletext = 1;
17055 while( p < end ) {
17056 ushort uc = p->unicode();
17057 // sort out regions of complex text formatting
17058 if ( uc > 0x058f && ( uc < 0x1100 || uc > 0xfb0f ) ) {
17059 d->simpletext = 0;
17060 return;
17061 }
17062 p++;
17063 }
17064}
17065
17066/*! \fn bool QString::simpleText() const
17067 \internal
17068*/
17069
17070/*! \internal
17071 */
17072bool QString::isRightToLeft() const
17073{
17074 int len = length();
17075 QChar *p = d->unicode;
17076 while( len-- ) {
17077 switch( ::direction( *p ) )
17078 {
17079 case QChar::DirL:
17080 case QChar::DirLRO:
17081 case QChar::DirLRE:
17082 return FALSE;
17083 case QChar::DirR:
17084 case QChar::DirAL:
17085 case QChar::DirRLO:
17086 case QChar::DirRLE:
17087 return TRUE;
17088 default:
17089 break;
17090 }
17091 ++p;
17092 }
17093 return FALSE;
17094}
17095
17096
17097/*!
17098 \fn int QString::compare( const QString & s1, const QString & s2 )
17099
17100 Lexically compares \a s1 with \a s2 and returns an integer less
17101 than, equal to, or greater than zero if \a s1 is less than, equal
17102 to, or greater than \a s2.
17103
17104 The comparison is based exclusively on the numeric Unicode values
17105 of the characters and is very fast, but is not what a human would
17106 expect. Consider sorting user-interface strings with
17107 QString::localeAwareCompare().
17108
17109 \code
17110 int a = QString::compare( "def", "abc" ); // a > 0
17111 int b = QString::compare( "abc", "def" ); // b < 0
17112 int c = QString::compare(" abc", "abc" ); // c == 0
17113 \endcode
17114*/
17115
17116/*!
17117 \overload
17118
17119 Lexically compares this string with \a s and returns an integer
17120 less than, equal to, or greater than zero if it is less than, equal
17121 to, or greater than \a s.
17122*/
17123int QString::compare( const QString& s ) const
17124{
17125 return ucstrcmp( *this, s );
17126}
17127
17128/*!
17129 \fn int QString::localeAwareCompare( const QString & s1, const QString & s2 )
17130
17131 Compares \a s1 with \a s2 and returns an integer less than, equal
17132 to, or greater than zero if \a s1 is less than, equal to, or
17133 greater than \a s2.
17134
17135 The comparison is performed in a locale- and also
17136 platform-dependent manner. Use this function to present sorted
17137 lists of strings to the user.
17138
17139 \sa QString::compare() QTextCodec::locale()
17140*/
17141
17142/*!
17143 \overload
17144
17145 Compares this string with \a s.
17146*/
17147
17148#if !defined(CSTR_LESS_THAN)
17149#define CSTR_LESS_THAN 1
17150#define CSTR_EQUAL 2
17151#define CSTR_GREATER_THAN 3
17152#endif
17153
17154int QString::localeAwareCompare( const QString& s ) const
17155{
17156 // do the right thing for null and empty
17157 if ( isEmpty() || s.isEmpty() )
17158 return compare( s );
17159
17160#if defined(Q_WS_WIN)
17161 int res;
17162 QT_WA( {
17163 const TCHAR* s1 = (TCHAR*)ucs2();
17164 const TCHAR* s2 = (TCHAR*)s.ucs2();
17165 res = CompareStringW( LOCALE_USER_DEFAULT, 0, s1, length(), s2, s.length() );
17166 } , {
17167 QCString s1 = local8Bit();
17168 QCString s2 = s.local8Bit();
17169 res = CompareStringA( LOCALE_USER_DEFAULT, 0, s1.data(), s1.length(), s2.data(), s2.length() );
17170 } );
17171
17172 switch ( res ) {
17173 case CSTR_LESS_THAN:
17174 return -1;
17175 case CSTR_GREATER_THAN:
17176 return 1;
17177 default:
17178 return 0;
17179 }
17180#elif defined(Q_WS_X11)
17181 // declared in <string.h>
17182 int delta = strcoll( local8Bit(), s.local8Bit() );
17183 if ( delta == 0 )
17184 delta = ucstrcmp( *this, s );
17185 return delta;
17186#else
17187 return ucstrcmp( *this, s );
17188#endif
17189}
17190
17191bool operator==( const QString &s1, const QString &s2 )
17192{
17193 if ( s1.unicode() == s2.unicode() )
17194 return TRUE;
17195 return (s1.length() == s2.length()) && s1.isNull() == s2.isNull() &&
17196 (memcmp((char*)s1.unicode(),(char*)s2.unicode(),
17197 s1.length()*sizeof(QChar)) == 0 );
17198}
17199
17200bool operator!=( const QString &s1, const QString &s2 )
17201{ return !(s1==s2); }
17202
17203bool operator<( const QString &s1, const QString &s2 )
17204{ return ucstrcmp(s1,s2) < 0; }
17205
17206bool operator<=( const QString &s1, const QString &s2 )
17207{ return ucstrcmp(s1,s2) <= 0; }
17208
17209bool operator>( const QString &s1, const QString &s2 )
17210{ return ucstrcmp(s1,s2) > 0; }
17211
17212bool operator>=( const QString &s1, const QString &s2 )
17213{ return ucstrcmp(s1,s2) >= 0; }
17214
17215
17216bool operator==( const QString &s1, const char *s2 )
17217{
17218 if ( !s2 )
17219 return s1.isNull();
17220
17221 int len = s1.length();
17222 const QChar *uc = s1.unicode();
17223 while ( len ) {
17224 if ( !(*s2) || uc->unicode() != (uchar) *s2 )
17225 return FALSE;
17226 ++uc;
17227 ++s2;
17228 --len;
17229 }
17230 return !*s2;
17231}
17232
17233bool operator==( const char *s1, const QString &s2 )
17234{ return (s2 == s1); }
17235
17236bool operator!=( const QString &s1, const char *s2 )
17237{ return !(s1==s2); }
17238
17239bool operator!=( const char *s1, const QString &s2 )
17240{ return !(s1==s2); }
17241
17242bool operator<( const QString &s1, const char *s2 )
17243{ return ucstrcmp(s1,s2) < 0; }
17244
17245bool operator<( const char *s1, const QString &s2 )
17246{ return ucstrcmp(s1,s2) < 0; }
17247
17248bool operator<=( const QString &s1, const char *s2 )
17249{ return ucstrcmp(s1,s2) <= 0; }
17250
17251bool operator<=( const char *s1, const QString &s2 )
17252{ return ucstrcmp(s1,s2) <= 0; }
17253
17254bool operator>( const QString &s1, const char *s2 )
17255{ return ucstrcmp(s1,s2) > 0; }
17256
17257bool operator>( const char *s1, const QString &s2 )
17258{ return ucstrcmp(s1,s2) > 0; }
17259
17260bool operator>=( const QString &s1, const char *s2 )
17261{ return ucstrcmp(s1,s2) >= 0; }
17262
17263bool operator>=( const char *s1, const QString &s2 )
17264{ return ucstrcmp(s1,s2) >= 0; }
17265
17266
17267/*****************************************************************************
17268 Documentation for QString related functions
17269 *****************************************************************************/
17270
17271/*!
17272 \fn bool operator==( const QString &s1, const QString &s2 )
17273
17274 \relates QString
17275
17276 Returns TRUE if \a s1 is equal to \a s2; otherwise returns FALSE.
17277 Note that a null string is not equal to a not-null empty string.
17278
17279 Equivalent to compare(\a s1, \a s2) != 0.
17280
17281 \sa isNull(), isEmpty()
17282*/
17283
17284/*!
17285 \fn bool operator==( const QString &s1, const char *s2 )
17286
17287 \overload
17288 \relates QString
17289
17290 Returns TRUE if \a s1 is equal to \a s2; otherwise returns FALSE.
17291 Note that a null string is not equal to a not-null empty string.
17292
17293 Equivalent to compare(\a s1, \a s2) == 0.
17294
17295 \sa isNull(), isEmpty()
17296*/
17297
17298/*!
17299 \fn bool operator==( const char *s1, const QString &s2 )
17300
17301 \overload
17302 \relates QString
17303
17304 Returns TRUE if \a s1 is equal to \a s2; otherwise returns FALSE.
17305 Note that a null string is not equal to a not-null empty string.
17306
17307 Equivalent to compare(\a s1, \a s2) == 0.
17308
17309 \sa isNull(), isEmpty()
17310*/
17311
17312/*!
17313 \fn bool operator!=( const QString &s1, const QString &s2 )
17314
17315 \relates QString
17316
17317 Returns TRUE if \a s1 is not equal to \a s2; otherwise returns FALSE.
17318 Note that a null string is not equal to a not-null empty string.
17319
17320 Equivalent to compare(\a s1, \a s2) != 0.
17321
17322 \sa isNull(), isEmpty()
17323*/
17324
17325/*!
17326 \fn bool operator!=( const QString &s1, const char *s2 )
17327
17328 \overload
17329 \relates QString
17330
17331 Returns TRUE if \a s1 is not equal to \a s2; otherwise returns FALSE.
17332 Note that a null string is not equal to a not-null empty string.
17333
17334 Equivalent to compare(\a s1, \a s2) != 0.
17335
17336 \sa isNull(), isEmpty()
17337*/
17338
17339/*!
17340 \fn bool operator!=( const char *s1, const QString &s2 )
17341
17342 \overload
17343 \relates QString
17344
17345 Returns TRUE if \a s1 is not equal to \a s2; otherwise returns FALSE.
17346 Note that a null string is not equal to a not-null empty string.
17347
17348 Equivalent to compare(\a s1, \a s2) != 0.
17349
17350 \sa isNull(), isEmpty()
17351*/
17352
17353/*!
17354 \fn bool operator<( const QString &s1, const char *s2 )
17355
17356 \relates QString
17357
17358 Returns TRUE if \a s1 is lexically less than \a s2; otherwise returns FALSE.
17359 The comparison is case sensitive.
17360
17361 Equivalent to compare(\a s1, \a s2) \< 0.
17362*/
17363
17364/*!
17365 \fn bool operator<( const char *s1, const QString &s2 )
17366
17367 \overload
17368 \relates QString
17369
17370 Returns TRUE if \a s1 is lexically less than \a s2; otherwise returns FALSE.
17371 The comparison is case sensitive.
17372
17373 Equivalent to compare(\a s1, \a s2) \< 0.
17374*/
17375
17376/*!
17377 \fn bool operator<=( const QString &s1, const char *s2 )
17378
17379 \relates QString
17380
17381 Returns TRUE if \a s1 is lexically less than or equal to \a s2;
17382 otherwise returns FALSE.
17383 The comparison is case sensitive.
17384 Note that a null string is not equal to a not-null empty string.
17385
17386 Equivalent to compare(\a s1,\a s2) \<= 0.
17387
17388 \sa isNull(), isEmpty()
17389*/
17390
17391/*!
17392 \fn bool operator<=( const char *s1, const QString &s2 )
17393
17394 \overload
17395 \relates QString
17396
17397 Returns TRUE if \a s1 is lexically less than or equal to \a s2;
17398 otherwise returns FALSE.
17399 The comparison is case sensitive.
17400 Note that a null string is not equal to a not-null empty string.
17401
17402 Equivalent to compare(\a s1, \a s2) \<= 0.
17403
17404 \sa isNull(), isEmpty()
17405*/
17406
17407/*!
17408 \fn bool operator>( const QString &s1, const char *s2 )
17409
17410 \relates QString
17411
17412 Returns TRUE if \a s1 is lexically greater than \a s2; otherwise
17413 returns FALSE.
17414 The comparison is case sensitive.
17415
17416 Equivalent to compare(\a s1, \a s2) \> 0.
17417*/
17418
17419/*!
17420 \fn bool operator>( const char *s1, const QString &s2 )
17421
17422 \overload
17423 \relates QString
17424
17425 Returns TRUE if \a s1 is lexically greater than \a s2; otherwise
17426 returns FALSE.
17427 The comparison is case sensitive.
17428
17429 Equivalent to compare(\a s1, \a s2) \> 0.
17430*/
17431
17432/*!
17433 \fn bool operator>=( const QString &s1, const char *s2 )
17434
17435 \relates QString
17436
17437 Returns TRUE if \a s1 is lexically greater than or equal to \a s2;
17438 otherwise returns FALSE.
17439 The comparison is case sensitive.
17440 Note that a null string is not equal to a not-null empty string.
17441
17442 Equivalent to compare(\a s1, \a s2) \>= 0.
17443
17444 \sa isNull(), isEmpty()
17445*/
17446
17447/*!
17448 \fn bool operator>=( const char *s1, const QString &s2 )
17449
17450 \overload
17451 \relates QString
17452
17453 Returns TRUE if \a s1 is lexically greater than or equal to \a s2;
17454 otherwise returns FALSE.
17455 The comparison is case sensitive.
17456 Note that a null string is not equal to a not-null empty string.
17457
17458 Equivalent to compare(\a s1, \a s2) \>= 0.
17459
17460 \sa isNull(), isEmpty()
17461*/
17462
17463/*!
17464 \fn const QString operator+( const QString &s1, const QString &s2 )
17465
17466 \relates QString
17467
17468 Returns a string which is the result of concatenating the string
17469 \a s1 and the string \a s2.
17470
17471 Equivalent to \a {s1}.append(\a s2).
17472*/
17473
17474/*!
17475 \fn const QString operator+( const QString &s1, const char *s2 )
17476
17477 \overload
17478 \relates QString
17479
17480 Returns a string which is the result of concatenating the string
17481 \a s1 and character \a s2.
17482
17483 Equivalent to \a {s1}.append(\a s2).
17484*/
17485
17486/*!
17487 \fn const QString operator+( const char *s1, const QString &s2 )
17488
17489 \overload
17490 \relates QString
17491
17492 Returns a string which is the result of concatenating the
17493 character \a s1 and string \a s2.
17494*/
17495
17496/*!
17497 \fn const QString operator+( const QString &s, char c )
17498
17499 \overload
17500 \relates QString
17501
17502 Returns a string which is the result of concatenating the string
17503 \a s and character \a c.
17504
17505 Equivalent to \a {s}.append(\a c).
17506*/
17507
17508/*!
17509 \fn const QString operator+( char c, const QString &s )
17510
17511 \overload
17512 \relates QString
17513
17514 Returns a string which is the result of concatenating the
17515 character \a c and string \a s.
17516
17517 Equivalent to \a {s}.prepend(\a c).
17518*/
17519
17520
17521/*****************************************************************************
17522 QString stream functions
17523 *****************************************************************************/
17524#ifndef QT_NO_DATASTREAM
17525/*!
17526 \relates QString
17527
17528 Writes the string \a str to the stream \a s.
17529
17530 See also \link datastreamformat.html Format of the QDataStream operators \endlink
17531*/
17532
17533QDataStream &operator<<( QDataStream &s, const QString &str )
17534{
17535 if ( s.version() == 1 ) {
17536 QCString l( str.latin1() );
17537 s << l;
17538 }
17539 else {
17540 int byteOrder = s.byteOrder();
17541 const QChar* ub = str.unicode();
17542 if ( ub || s.version() < 3 ) {
17543 static const uint auto_size = 1024;
17544 char t[auto_size];
17545 char *b;
17546 if ( str.length()*sizeof(QChar) > auto_size ) {
17547 b = new char[str.length()*sizeof(QChar)];
17548 } else {
17549 b = t;
17550 }
17551 int l = str.length();
17552 char *c=b;
17553 while ( l-- ) {
17554 if ( byteOrder == QDataStream::BigEndian ) {
17555 *c++ = (char)ub->row();
17556 *c++ = (char)ub->cell();
17557 } else {
17558 *c++ = (char)ub->cell();
17559 *c++ = (char)ub->row();
17560 }
17561 ub++;
17562 }
17563 s.writeBytes( b, sizeof(QChar)*str.length() );
17564 if ( str.length()*sizeof(QChar) > auto_size )
17565 delete [] b;
17566 } else {
17567 // write null marker
17568 s << (Q_UINT32)0xffffffff;
17569 }
17570 }
17571 return s;
17572}
17573
17574/*!
17575 \relates QString
17576
17577 Reads a string from the stream \a s into string \a str.
17578
17579 See also \link datastreamformat.html Format of the QDataStream operators \endlink
17580*/
17581
17582QDataStream &operator>>( QDataStream &s, QString &str )
17583{
17584#ifdef QT_QSTRING_UCS_4
17585#if defined(Q_CC_GNU)
17586#warning "operator>> not working properly"
17587#endif
17588#endif
17589 if ( s.version() == 1 ) {
17590 QCString l;
17591 s >> l;
17592 str = QString( l );
17593 }
17594 else {
17595 Q_UINT32 bytes;
17596 s >> bytes; // read size of string
17597 if ( bytes == 0xffffffff ) { // null string
17598 str = QString::null;
17599 } else if ( bytes > 0 ) { // not empty
17600 int byteOrder = s.byteOrder();
17601 str.setLength( bytes/2 );
17602 QChar* ch = str.d->unicode;
17603 static const uint auto_size = 1024;
17604 char t[auto_size];
17605 char *b;
17606 if ( bytes > auto_size ) {
17607 b = new char[bytes];
17608 } else {
17609 b = t;
17610 }
17611 s.readRawBytes( b, bytes );
17612 int bt = bytes/2;
17613 char *oldb = b;
17614 while ( bt-- ) {
17615 if ( byteOrder == QDataStream::BigEndian )
17616 *ch++ = (ushort) (((ushort)b[0])<<8) | (uchar)b[1];
17617 else
17618 *ch++ = (ushort) (((ushort)b[1])<<8) | (uchar)b[0];
17619 b += 2;
17620 }
17621 if ( bytes > auto_size )
17622 delete [] oldb;
17623 } else {
17624 str = "";
17625 }
17626 }
17627 return s;
17628}
17629#endif // QT_NO_DATASTREAM
17630
17631/*****************************************************************************
17632 QConstString member functions
17633 *****************************************************************************/
17634
17635/*!
17636 \class QConstString qstring.h
17637 \reentrant
17638 \ingroup text
17639 \brief The QConstString class provides string objects using constant Unicode data.
17640
17641 In order to minimize copying, highly optimized applications can
17642 use QConstString to provide a QString-compatible object from
17643 existing Unicode data. It is then the programmer's responsibility
17644 to ensure that the Unicode data exists for the entire lifetime of
17645 the QConstString object.
17646
17647 A QConstString is created with the QConstString constructor. The
17648 string held by the object can be obtained by calling string().
17649*/
17650
17651/*!
17652 Constructs a QConstString that uses the first \a length Unicode
17653 characters in the array \a unicode. Any attempt to modify copies
17654 of the string will cause it to create a copy of the data, thus it
17655 remains forever unmodified.
17656
17657 The data in \a unicode is not copied. The caller must be able to
17658 guarantee that \a unicode will not be deleted or modified.
17659*/
17660QConstString::QConstString( const QChar* unicode, uint length ) :
17661 QString( new QStringData( (QChar*)unicode, length, length ), TRUE )
17662{
17663}
17664
17665/*!
17666 Destroys the QConstString, creating a copy of the data if other
17667 strings are still using it.
17668*/
17669QConstString::~QConstString()
17670{
17671 if ( d->count > 1 ) {
17672 QChar* cp = QT_ALLOC_QCHAR_VEC( d->len );
17673 memcpy( cp, d->unicode, d->len*sizeof(QChar) );
17674 d->unicode = cp;
17675 } else {
17676 d->unicode = 0;
17677 }
17678
17679 // The original d->unicode is now unlinked.
17680}
17681
17682/*!
17683 \fn const QString& QConstString::string() const
17684
17685 Returns a constant string referencing the data passed during
17686 construction.
17687*/
17688
17689/*!
17690 Returns TRUE if the string starts with \a s; otherwise returns
17691 FALSE.
17692
17693 \code
17694 QString string("Bananas");
17695 bool a = string.startsWith("Ban"); // a == TRUE
17696 \endcode
17697
17698 \sa endsWith()
17699*/
17700bool QString::startsWith( const QString& s ) const
17701{
17702 if ( isNull() )
17703 return s.isNull();
17704 if ( s.length() > length() )
17705 return FALSE;
17706 for ( int i =0; i < (int) s.length(); i++ ) {
17707 if ( d->unicode[i] != s[i] )
17708 return FALSE;
17709 }
17710 return TRUE;
17711}
17712
17713/*!
17714 Returns TRUE if the string ends with \a s; otherwise returns
17715 FALSE.
17716
17717 \sa startsWith()
17718*/
17719bool QString::endsWith( const QString& s ) const
17720{
17721 if ( isNull() )
17722 return s.isNull();
17723 int pos = length() - s.length();
17724 if ( pos < 0 )
17725 return FALSE;
17726 for ( uint i = 0; i < s.length(); i++ ) {
17727 if ( d->unicode[pos+i] != s[(int)i] )
17728 return FALSE;
17729 }
17730 return TRUE;
17731}
17732
17733/*! \fn void QString::detach()
17734 If the string does not share its data with another QString instance,
17735 nothing happens; otherwise the function creates a new, unique copy of
17736 this string. This function is called whenever the map is modified. The
17737 implicit sharing mechanism is implemented this way.
17738*/
17739
17740#if defined(Q_OS_WIN32)
17741
17742#include <windows.h>
17743
17744/*!
17745 \obsolete
17746
17747 Returns a static Windows TCHAR* from a QString, adding NUL if \a
17748 addnul is TRUE.
17749
17750 The lifetime of the return value is until the next call to this function,
17751 or until the last copy of str is deleted, whatever comes first.
17752
17753 Use ucs2() instead.
17754*/
17755const void* qt_winTchar(const QString& str, bool)
17756{
17757 // So that the return value lives long enough.
17758 static QString str_cache;
17759 str_cache = str;
17760#ifdef UNICODE
17761 return str_cache.ucs2();
17762#else
17763 return str_cache.latin1();
17764#endif
17765}
17766
17767/*!
17768 Makes a new '\0'-terminated Windows TCHAR* from a QString.
17769*/
17770void* qt_winTchar_new(const QString& str)
17771{
17772 if ( str.isNull() )
17773 return 0;
17774 int l = str.length()+1;
17775 TCHAR *tc = new TCHAR[ l ];
17776#ifdef UNICODE
17777 memcpy( tc, str.ucs2(), sizeof(TCHAR)*l );
17778#else
17779 memcpy( tc, str.latin1(), sizeof(TCHAR)*l );
17780#endif
17781 return tc;
17782}
17783
17784/*!
17785 Makes a QString from a Windows TCHAR*.
17786*/
17787QString qt_winQString(void* tc)
17788{
17789#ifdef UNICODE
17790 return QString::fromUcs2( (ushort*)tc );
17791#else
17792 return QString::fromLatin1( (TCHAR *)tc );
17793#endif
17794}
17795
17796QCString qt_winQString2MB( const QString& s, int uclen )
17797{
17798 if ( uclen < 0 )
17799 uclen = s.length();
17800 if ( s.isNull() )
17801 return QCString();
17802 if ( uclen == 0 )
17803 return QCString("");
17804 BOOL used_def;
17805 QCString mb(4096);
17806 int len;
17807 while ( !(len=WideCharToMultiByte(CP_ACP, 0, (const WCHAR*)s.unicode(), uclen,
17808 mb.data(), mb.size()-1, 0, &used_def)) )
17809 {
17810 int r = GetLastError();
17811 if ( r == ERROR_INSUFFICIENT_BUFFER ) {
17812 mb.resize(1+WideCharToMultiByte( CP_ACP, 0,
17813 (const WCHAR*)s.unicode(), uclen,
17814 0, 0, 0, &used_def));
17815 // and try again...
17816 } else {
17817#ifndef QT_NO_DEBUG
17818 // Fail.
17819 qWarning("WideCharToMultiByte cannot convert multibyte text (error %d): %s (UTF8)",
17820 r, s.utf8().data());
17821#endif
17822 break;
17823 }
17824 }
17825 mb[len]='\0';
17826 return mb;
17827}
17828
17829// WATCH OUT: mblen must include the NUL (or just use -1)
17830QString qt_winMB2QString( const char* mb, int mblen )
17831{
17832 if ( !mb || !mblen )
17833 return QString::null;
17834 const int wclen_auto = 4096;
17835 WCHAR wc_auto[wclen_auto];
17836 int wclen = wclen_auto;
17837 WCHAR *wc = wc_auto;
17838 int len;
17839 while ( !(len=MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED,
17840 mb, mblen, wc, wclen )) )
17841 {
17842 int r = GetLastError();
17843 if ( r == ERROR_INSUFFICIENT_BUFFER ) {
17844 if ( wc != wc_auto ) {
17845 qWarning("Size changed in MultiByteToWideChar");
17846 break;
17847 } else {
17848 wclen = MultiByteToWideChar( CP_ACP, MB_PRECOMPOSED,
17849 mb, mblen, 0, 0 );
17850 wc = new WCHAR[wclen];
17851 // and try again...
17852 }
17853 } else {
17854 // Fail.
17855 qWarning("MultiByteToWideChar cannot convert multibyte text");
17856 break;
17857 }
17858 }
17859 if ( len <= 0 )
17860 return QString::null;
17861 QString s( (QChar*)wc, len - 1 ); // len - 1: we don't want terminator
17862 if ( wc != wc_auto )
17863 delete [] wc;
17864 return s;
17865}
17866
17867#endif // Q_OS_WIN32