-
Notifications
You must be signed in to change notification settings - Fork 3
/
smScan.c
1326 lines (1246 loc) · 58 KB
/
smScan.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/*----------------------------------------------------------------------*\
smScan.c
ScannerMaker generated scanner
\*----------------------------------------------------------------------*/
/* %%IMPORT */
/* For open, read & close */
#include <fcntl.h>
/* For iconv conversion */
#include <errno.h>
#include "converter.h"
#include "charset.h"
#include "sysdep.h"
#include "types.h"
#include "alan.h"
#include "lmlog.h"
#include "encode.h"
#include "util.h"
/* END %%IMPORT */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "smScan.h"
/* Local imports */
extern int smScReader( smScContext smThis, unsigned char *smBuffer, unsigned int smLength );
extern int smScAction( smScContext smThis, int smInternalCode, Token *smToken );
extern int smScPostHook( smScContext smThis, Token *smToken );
/* System dependencies */
/* These datatypes should be defined to be unsigned integers of length 1, 2
* and 4 bytes respectively.
*/
typedef unsigned char UByte1;
typedef unsigned short UByte2;
typedef unsigned int UByte4;
/* START of scanning tables */
/*
* MAP
*
* [character] -> character
*
*/
static UByte1 smMap[256]={
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31
,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47
,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63
,64,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111
,112,113,114,115,116,117,118,119,120,121,122,91,92,93,94,95
,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111
,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127
,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143
,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159
,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175
,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191
,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239
,240,241,242,243,244,245,246,215,248,249,250,251,252,253,254,223
,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239
,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
}
;
/*
* SCANNER
*
* [scanner] -> state
*/
static UByte1 smScanner[2]={
0,1
}
;
/*
* ACCEPT (internal token code)
*
* [state] -> icode
*/
static UByte1 smAccept[493]={
0,0,153,10,7,8,9,11,1,12,2,13,147,6,15,5
,14,148,3,4,160,150,149,154,33,30,31,19,32,23,20,24
,27,25,21,18,22,16,29,26,28,17,157,39,37,40,42,35
,45,41,38,48,49,36,47,43,44,50,34,46,155,57,74,55
,52,58,69,64,73,71,66,76,70,56,59,65,79,68,54,77
,67,62,75,61,78,51,63,53,60,72,95,86,83,85,93,89
,81,80,91,94,82,90,88,87,84,92,112,108,109,105,99,104
,107,106,102,98,100,111,97,96,110,103,101,115,121,124,116,120
,118,119,114,113,117,123,122,156,133,132,126,129,128,131,134,127
,130,125,137,136,138,135,139,143,140,142,141,144,145,146,0,148
,149,0,148,0,148,0,148,0,148,0,148,0,148,0,148,0
,148,0,148,0,148,0,148,148,148,148,148,148,148,148,148,148
,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148,148
,148,148,148,148,148,148,148,148,148,148,148,148,148
}
;
/*
* EXTERNAL TOKEN CODE
*
* [icode] -> ecode
*/
static UByte1 smTokenCode[160]={
5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36
,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52
,53,54,55,56,57,58,60,61,62,63,64,65,66,67,68,69
,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85
,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101
,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117
,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133
,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149
,150,151,4,3,3,59,1,2,0,0,0,0,3,1,2,0
}
;
/*
* EOT and Unknown
*
* [scanner] -> icode
*
*/
static UByte1 smEOTCode[2]={
151,158
}
;
static UByte1 smUnknownCode[2]={
150,157
}
;
/*
* DFA
*/
static UByte1 smDFAdetRow[493]={
1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1
,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0
,1,0,1,1,0,1,1,1,0,0,0,0,0,0,1,0
,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0
,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0
,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0
,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0
,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1
,0,0,1,1,1,1,1,0,1,0,1,0,1,0,1,0
,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1
}
;
static UByte1 smDFAdetCol[256]={
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
}
;
static UByte2 smDFArowVal[493]={
141,188,2,493,493,493,493,493,493,23,493,169,12,493,220,188
,28,573,493,493,20,158,493,23,493,493,493,493,493,654,708,284
,188,284,220,249,284,276,303,330,284,284,165,284,284,284,357,284
,384,284,284,284,284,284,284,284,284,284,411,284,493,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,438,284,284,284,284
,284,284,284,284,284,284,284,284,284,465,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,492,284,284,284
,284,284,284,519,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,493,284,284,284,284,284,284,284,284
,284,284,546,284,284,284,284,284,284,284,284,284,284,284,0,600
,163,167,627,47,681,94,735,171,762,173,789,175,816,60,843,177
,870,179,897,181,924,135,951,978,1005,1032,1059,1086,1113,1140,1167,1194
,1221,1248,1275,1302,1329,1356,1383,1410,1437,1464,1491,1518,1545,1572,1599,1626
,1653,1680,1707,1734,1761,1788,1815,1842,1869,1896,1923,1950,1977,2004,2031,2058
,2085,2112,2139,2166,2193,2220,2247,2274,2301,2328,2355,2382,2409,2436,2463,2490
,2517,2544,2571,2598,2625,2652,2679,2706,2733,2760,2787,2814,2841,2868,2895,2922
,2949,2976,3003,3030,3057,3084,3111,3138,3165,3192,3219,3246,3273,3300,3327,3354
,3381,3408,3435,3462,3489,3516,3543,3570,3597,3624,3651,3678,284,3705,3732,3759
,3786,3813,3840,3867,3894,3921,3948,3975,4002,4029,4056,4083,4110,4137,4164,4191
,4218,4245,4272,4299,4326,4353,4380,4407,4434,4461,4488,4515,4542,4569,4596,4623
,4650,4677,4704,4731,4758,4785,4812,4839,4866,4893,4920,4947,4974,5001,5028,5055
,5082,5109,5136,5163,5190,5217,5244,5271,5298,5325,5352,5379,5406,5433,5460,5487
,5514,5541,5568,5595,5622,5649,5676,5703,5730,5757,5784,5811,5838,5865,5892,5919
,5946,5973,6000,6027,6054,6081,6108,6135,6162,6189,6216,6243,6270,6297,6324,6351
,6378,6405,6432,6459,6486,6513,6540,6567,6594,6621,6648,6675,6702,6729,6756,6783
,6810,6837,6864,6891,6918,6945,6972,6999,7026,7053,7080,7107,7134,7161,7188,7215
,7242,7269,7296,7323,7350,7377,7404,7431,7458,7485,7512,7539,7566,7593,7620,7647
,7674,7701,7728,7755,7782,7809,7836,7863,7890,7917,7944,7971,7998,8025,8052,8079
,8106,8133,8160,8187,8214,8241,8268,8295,8322,8349,8376,8403,8430,8457,8484,8511
,8538,8565,8592,8619,8646,8673,8700,8727,8754,8781,8808,8835,8862,8889,8916,8943
,8970,8997,9024,9051,9078,9105,9132,9159,9186,9213,9240,9267,9294
}
;
static UByte1 smDFAcolVal[256]={
0,0,0,0,0,0,0,0,0,29,31,0,0,29,0,0
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
,29,38,39,0,40,0,0,30,41,42,43,44,45,46,36,37
,0,0,0,0,0,0,0,0,0,0,32,0,35,27,28,0
,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
,16,17,18,19,20,21,22,23,24,25,26,0,0,0,0,0
,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
,16,17,18,19,20,21,22,23,24,25,26,33,0,34,0,0
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10
,10,10,10,10,10,10,10,0,10,10,10,10,10,10,10,10
,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10
,10,10,10,10,10,10,10,0,10,10,10,10,10,10,10,0
}
;
static UByte1 smDFAerr[(22*21+7)/8]={
0x80,0x00,0x0C,0xEF,0xFF,0xE3,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xBF,0xFF,
0xFE,0xFF,0xFF,0xF9,0xFF,0xFF,0xDF,0xFF,0xFD,0x80,0x27,0xFF,0xFF,0xF7,0xFF,0xF3,
0x00,0x00,0x7E,0xFF,0xFC,0x00,0x00,0x1F,0xFF,0xEF,0xFF,0xFF,0xDF,0xFF,0xDF,0xFF,
0xFF,0xEF,0xFF,0xFF,0xDF,0xFF,0xDF,0xFF,0xFF,0x7C
};
static UByte1 smDFAerrRow[493]={
0,1,2,3,3,3,3,3,3,4,3,5,6,3,7,7
,8,9,3,3,10,11,3,12,3,3,3,3,3,9,9,9
,9,9,9,9,9,9,9,9,9,9,13,9,9,9,9,9
,9,9,9,9,9,9,9,9,9,9,9,9,3,9,9,9
,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
,9,9,9,9,9,9,9,3,9,9,9,9,9,9,9,9
,9,9,9,9,9,9,9,9,9,9,9,9,9,9,14,9
,13,15,9,14,9,14,9,16,9,5,9,17,9,5,9,18
,9,19,9,20,9,21,9,9,9,9,9,9,9,9,9,9
,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9
,9,9,9,9,9,9,9,9,9,9,9,9,9
}
;
static UByte1 smDFAerrCol[256]={
0,0,0,0,0,0,0,0,0,1,2,0,0,3,0,0
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
,1,4,5,0,4,0,0,6,4,4,4,4,4,7,4,8
,9,9,9,9,9,9,9,9,9,9,4,0,4,10,11,0
,0,12,12,13,14,15,12,12,12,16,12,12,17,12,18,12
,12,12,12,12,12,19,12,12,12,12,12,0,0,0,0,20
,0,12,12,13,14,15,12,12,12,16,12,12,17,12,18,12
,12,12,12,12,12,19,12,12,12,12,12,4,0,4,0,0
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12
,12,12,12,12,12,12,12,0,12,12,12,12,12,12,12,12
,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12
,12,12,12,12,12,12,12,0,12,12,12,12,12,12,12,0
}
;
static UByte2 smDFAval[9321]={
158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158
,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158
,158,158,158,158,158,158,158,21,158,158,158,158,158,158,158,163
,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163,163
,163,163,163,163,163,163,163,163,163,163,163,163,163,160,22,163
,163,163,163,163,163,163,163,163,163,163,163,163,163,163,165,165
,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165
,165,165,165,165,165,165,165,165,165,165,165,165,42,165,165,165
,165,165,165,165,165,165,165,165,165,165,165,165,165,12,17,159
,162,164,282,283,284,285,166,284,284,368,286,168,170,369,370,461
,287,172,288,371,372,284,284,284,15,16,2,163,2,13,18,19
,14,10,11,3,158,161,4,5,6,7,8,9,284,284,284,284
,284,191,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,26,27,20,165,20,284,284,284,440
,489,284,284,284,284,490,284,284,284,284,284,284,284,284,284,284
,197,284,284,284,284,284,284,24,25,284,50,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,53,284,284,284,284,284,284,284
,284,284,284,284,284,54,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,205,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,322,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,65,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,83,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,240,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,105,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,359,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,131,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,151,284,284,284,284,284,284,284,284,284,284
,373,174,284,374,284,284,284,284,284,284,284,29,284,284,284,176
,284,30,284,284,284,284,284,284,284,284,284,284,284,425,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,31,284,284,178,284,284,284,284,284,284,375,284,284,284,284
,284,284,376,284,284,284,284,284,462,284,284,284,284,284,284,284
,284,284,44,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,426,284
,284,284,479,284,284,284,284,284,32,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,488,284,284,284,284,284,284,284
,284,284,284,284,284,33,284,284,284,284,284,284,427,34,284,284
,284,284,35,36,284,284,284,284,284,284,284,298,284,284,284,299
,284,284,284,284,284,284,284,284,284,37,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,38,284,284,284,284
,284,284,284,39,284,428,284,40,284,284,284,284,284,284,284,284
,284,432,284,284,284,284,284,284,189,284,284,284,284,284,284,41
,284,284,492,284,284,284,284,284,284,284,284,284,284,284,284,43
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,45,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,434,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,46
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,47,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,437,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,48,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,49,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,201,284,284,284,284,284,284,284
,284,284,284,284,284,51,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,52,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,208,284,284,55,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,56,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,57,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,58,284,284,284,212,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,59,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,61,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,62,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,63,284,284,284,222,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,64
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,66,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,67,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,68,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,69,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,70,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,71,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,72,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,73,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,74,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,75,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,76,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,77,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,78,284
,284,284,284,284,284,284,284,284,284,284,79,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,80,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,81,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,82,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,84,284,284,284,284,284,284,284,284,284,85,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,86,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,87,284,284,284,232,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,88,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,89,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,90,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,91,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,92,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,93,284,284,284,284,284,284,284
,284,284,284,284,284,94,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,95,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,96,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,97,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,98
,284,284,284,284,284,284,284,284,284,284,284,99,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,100,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,101,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,102,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,103,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,104,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,106,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,107
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,108,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,109,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,110,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,111,284,284,284,284,284,284,284,284,284,284,284,284,112
,284,284,284,354,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,113,284
,284,284,284,284,284,114,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,115,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,116,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,117,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,118,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,119
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,120
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,121,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,122,284,284,284,284
,284,284,284,284,284,284,284,284,123,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,124,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,125,284,284
,284,284,284,284,284,284,284,284,126,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,127,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,128,284
,284,284,284,284,284,284,284,284,284,284,129,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,130,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,132,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,133,284,284,284,284,284
,284,284,284,284,284,284,134,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,272,284,284,284,284,284,284,284,284,284,284,284,284,284,136
,284,284,284,284,284,284,284,284,284,284,284,284,137,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,138,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,139,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,140,284,284,284,284,284,284,141,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,142,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,143,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,144,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,145,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,146,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,147,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,148,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,149
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,150,284,284,284,284,284,284
,284,284,284,284,284,284,152,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,153,284,284,284,284,284,284,154,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,155,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,156,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,157,284,284,289,284,284,284,284,284,284,284,284,284,284,290
,377,180,284,284,284,284,284,284,284,378,284,291,284,284,284,284
,284,284,284,284,284,284,284,379,284,284,284,284,284,182,284,284
,292,284,284,284,284,284,284,284,284,284,183,284,284,284,293,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,184,284,284,284,297,284,284,284,185,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,186,284,380,284,187,284,284,302,284,284,284,284,284,284,284,284
,284,284,284,303,188,284,284,284,431,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,381,284,284,284,284,190,284,284
,284,284,284,284,284,284,284,284,192,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,193,284,284,284,284,284,284,284,284,284,284,438,284
,284,284,284,284,194,284,284,284,284,284,284,284,284,284,284,439
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,195,284,284,284,284,284,284,284,284,284,284
,284,284,384,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,196,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,198
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,386,284,284,284,284,284,199,284,284,284,284,284
,284,284,284,284,284,387,284,284,284,284,284,284,284,284,284,284
,284,200,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,481,284,284,284,284
,441,202,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,203,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,204,284,284,284,284,284,469,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,206
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,207,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,209,284,284,284,284,284,284,284,284,284,284,284,284
,317,284,284,284,210,284,284,284,284,284,284,284,284,284,211,284
,284,318,284,284,284,284,284,284,319,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,213,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,214,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,215,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,216
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,217,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,218,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,219,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,220,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,221,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,223,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,224,284,284,284,225,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,226,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,227,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,228,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,229,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,230,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,231,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,233,284,284,284,284,284,284,284,284
,284,284,284,284,284,234,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,235,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,236,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,237,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,238,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,239,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,241,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,242,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,243,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,244,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,245,284
,284,284,284,284,284,284,284,284,284,284,246,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,247,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,248,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,249,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,250,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,251,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,252,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,253,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,254,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,255
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,256,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,257,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,258,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,259,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,260,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,261,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,262,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,263,284,284,284,284,284,284,284
,284,264,284,284,284,284,284,284,284,284,284,284,284,284,284,459
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,265,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,266,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,267
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,268,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,269,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,270,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,271,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,273,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,274,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,275,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,276,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,277
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,278,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,279,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,280,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,281,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,294,284,284,284,284
,284,284,284,295,284,284,284,284,284,296,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,300,284,284,284,284,284,429,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,301,284,284,284,284,284,284,284,284,284,284
,304,284,284,284,433,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,305,284,284,284,284,284,284,306,307
,284,284,284,284,284,308,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,309,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,310,284,284,284,284,284,284,284,480,284,284,284,311,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,464,284,284,284,284,284,284,312,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,313,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,314,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,315,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,470,284,284,284,284,284,284,316,284,284
,392,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,320,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,321,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,323,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,324,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,325,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,326,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,327,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,328,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,329,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,330,405,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,331,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,332,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,451,284,284,284
,284,333,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,334,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,335,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,336,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,337,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,338,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,339,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,340,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,341,284,284,284,284,284
,284,342,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,343,284,284,284,284,284,284,344,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,345,284,284,284,284,284,284,284,284,284,284,284,284,346,284,284
,284,284,284,284,284,284,284,284,284,284,284,347,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,348,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,349,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,350,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,351,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,352,284,284,284,284,284,284,284,353
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,355,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,356,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,357,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,358,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,360,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,361,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,362,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,363,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,364,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,365,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,366,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,367,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,382,284,284,284,284,284,284,284,284,284,284,284,284
,284,435,284,284,284,284,284,284,284,284,284,465,284,284,466,284
,284,284,284,284,284,284,284,284,383,284,284,467,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,385,284,284,284,284,284,284,284,284,284,284,284,388
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,389,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,390,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,391,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,393,284,284
,284,284,394,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,395,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,396,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,397,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,398,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,399,284,284,284,284,284,284,284
,284,284,284,284,284,284,400,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,401,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,402,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,403,284
,284,284,284,284,448,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,404,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,406,284,284,284
,284,284,284,284,407,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,408,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,409,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,410,284,284,284,284,284,284,284,284,284
,284,284,411,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,412
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,413,284,284,284,284,284,284
,284,284,284,284,414,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,415,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,416,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,417,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,418,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,419,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,420,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,421,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,422,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,423,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,424,284,284,284,284,284,430,284,284,284,463,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,436,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,442,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,443,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,444,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,445,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,446,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,447,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,449,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,450,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,452,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,453,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,454
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,455,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,456,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,457
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,458,284,284,284
,284,284,487,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,460,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,468,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,471,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,472,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,473,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,474,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,475,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,476,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,477
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,478,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,482,284,284,284,284,284,284,284,284,284,284,284
,284,284,483,284,284,284,484,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,485,284,284,284
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,486,284,284,284,284,284,284,284,284,284,284,284,284,284,491
,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284,284
,284,284,284,284,284,284,284,284,284
}
;
/* END of scanning tables */
/*
* Source position calculation
*/
static void smSourcePosition(
smScContext smThis,
unsigned char *smAt,
unsigned char *smEnd)
{
if(smThis->smPosContinue<smEnd) {
if(smThis->smPosContinue>smAt) smAt=smThis->smPosContinue;
smThis->smNextPosition+=smEnd-smAt;
for(;smAt<smEnd;smAt++)
if(*smAt==10) {
smThis->smPosLine=smAt;
smThis->smNextLine++;
}
smThis->smNextColumn=smEnd-smThis->smPosLine;
smThis->smPosContinue=smEnd;
}
}
static void smRewindSourcePosition(
smScContext smThis,
unsigned char *smAt,
unsigned char *smEnd)
{
if(smThis->smPosContinue>smEnd) return;
smThis->smNextPosition-=smEnd-smAt;
while(smAt<smEnd--) if(*smEnd==10) smThis->smNextLine--;
while(smThis->smBegining<smEnd)
if(*smEnd==10) {
smThis->smPosLine=smEnd;
break;
}
else smEnd--;
if(smAt<smThis->smPosLine) smThis->smPosLine=smThis->smPosPrevLine;
smThis->smNextColumn=smAt-smThis->smPosLine;
smThis->smPosContinue=smAt;
}
/*
* int smReadBuffer(SMContext smThis)
*
* SmThis function reads charcters using the reader into the buffer in a
* context. The buffer is enlarged if the current buffer is full
* (smEnd-smText==smSize) or reduced if current buffer is larger than
* the standard buffer size and the token may fit the standard buffer
* (smEnd-smText<smTokenSize AND smSize>smTokenSize). The function
* returns the number of characters read into the buffer.
*
*/
static int smReadBuffer(smScContext smThis)
{
long length;
int size;
long mod;
if(smThis->smBegining!=smThis->smText) {