GnuCOBOL  2.0
A free COBOL compiler
pplex.c
Go to the documentation of this file.
1 #line 2 "pplex.c"
2 
3 #line 4 "pplex.c"
4 
5 #define YY_INT_ALIGNED short int
6 
7 /* A lexical scanner generated by flex */
8 
9 #define yy_create_buffer pp_create_buffer
10 #define yy_delete_buffer pp_delete_buffer
11 #define yy_flex_debug pp_flex_debug
12 #define yy_init_buffer pp_init_buffer
13 #define yy_flush_buffer pp_flush_buffer
14 #define yy_load_buffer_state pp_load_buffer_state
15 #define yy_switch_to_buffer pp_switch_to_buffer
16 #define yyin ppin
17 #define yyleng ppleng
18 #define yylex pplex
19 #define yylineno pplineno
20 #define yyout ppout
21 #define yyrestart pprestart
22 #define yytext pptext
23 #define yywrap ppwrap
24 #define yyalloc ppalloc
25 #define yyrealloc pprealloc
26 #define yyfree ppfree
27 
28 #define FLEX_SCANNER
29 #define YY_FLEX_MAJOR_VERSION 2
30 #define YY_FLEX_MINOR_VERSION 5
31 #define YY_FLEX_SUBMINOR_VERSION 39
32 #if YY_FLEX_SUBMINOR_VERSION > 0
33 #define FLEX_BETA
34 #endif
35 
36 /* First, we deal with platform-specific or compiler-specific issues. */
37 
38 /* begin standard C headers. */
39 #include <stdio.h>
40 #include <string.h>
41 #include <errno.h>
42 #include <stdlib.h>
43 
44 /* end standard C headers. */
45 
46 /* flex integer type definitions */
47 
48 #ifndef FLEXINT_H
49 #define FLEXINT_H
50 
51 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
52 
53 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L \
54 &&(!defined(_MSC_VER) || _MSC_VER >= 1800)
55 
56 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
57  * if you want the limit (max/min) macros for int types.
58  */
59 #ifndef __STDC_LIMIT_MACROS
60 #define __STDC_LIMIT_MACROS 1
61 #endif
62 
63 #include <inttypes.h>
64 typedef int8_t flex_int8_t;
65 typedef uint8_t flex_uint8_t;
66 typedef int16_t flex_int16_t;
67 typedef uint16_t flex_uint16_t;
68 typedef int32_t flex_int32_t;
69 typedef uint32_t flex_uint32_t;
70 #else
71 typedef signed char flex_int8_t;
72 typedef short int flex_int16_t;
73 typedef int flex_int32_t;
74 typedef unsigned char flex_uint8_t;
75 typedef unsigned short int flex_uint16_t;
76 typedef unsigned int flex_uint32_t;
77 
78 /* Limits of integral types. */
79 #ifndef INT8_MIN
80 #define INT8_MIN (-128)
81 #endif
82 #ifndef INT16_MIN
83 #define INT16_MIN (-32767-1)
84 #endif
85 #ifndef INT32_MIN
86 #define INT32_MIN (-2147483647-1)
87 #endif
88 #ifndef INT8_MAX
89 #define INT8_MAX (127)
90 #endif
91 #ifndef INT16_MAX
92 #define INT16_MAX (32767)
93 #endif
94 #ifndef INT32_MAX
95 #define INT32_MAX (2147483647)
96 #endif
97 #ifndef UINT8_MAX
98 #define UINT8_MAX (255U)
99 #endif
100 #ifndef UINT16_MAX
101 #define UINT16_MAX (65535U)
102 #endif
103 #ifndef UINT32_MAX
104 #define UINT32_MAX (4294967295U)
105 #endif
106 
107 #endif /* ! C99 */
108 
109 #endif /* ! FLEXINT_H */
110 
111 #ifdef __cplusplus
112 
113 /* The "const" storage-class-modifier is valid. */
114 #define YY_USE_CONST
115 
116 #else /* ! __cplusplus */
117 
118 /* C99 requires __STDC__ to be defined as 1. */
119 #if defined (__STDC__)
120 
121 #define YY_USE_CONST
122 
123 #endif /* defined (__STDC__) */
124 #endif /* ! __cplusplus */
125 
126 #ifdef YY_USE_CONST
127 #define yyconst const
128 #else
129 #define yyconst
130 #endif
131 
132 /* Returned upon end-of-file. */
133 #define YY_NULL 0
134 
135 /* Promotes a possibly negative, possibly signed char to an unsigned
136  * integer for use as an array index. If the signed char is negative,
137  * we want to instead treat it as an 8-bit unsigned char, hence the
138  * double cast.
139  */
140 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
141 
142 /* Enter a start condition. This macro really ought to take a parameter,
143  * but we do it the disgusting crufty way forced on us by the ()-less
144  * definition of BEGIN.
145  */
146 #define BEGIN (yy_start) = 1 + 2 *
147 
148 /* Translate the current start state into a value that can be later handed
149  * to BEGIN to return to the state. The YYSTATE alias is for lex
150  * compatibility.
151  */
152 #define YY_START (((yy_start) - 1) / 2)
153 #define YYSTATE YY_START
154 
155 /* Action number for EOF rule of a given start state. */
156 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
157 
158 /* Special action meaning "start processing a new file". */
159 #define YY_NEW_FILE pprestart(ppin )
160 
161 #define YY_END_OF_BUFFER_CHAR 0
162 
163 /* Size of default input buffer. */
164 #ifndef YY_BUF_SIZE
165 #ifdef __ia64__
166 /* On IA-64, the buffer size is 16k, not 8k.
167  * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
168  * Ditto for the __ia64__ case accordingly.
169  */
170 #define YY_BUF_SIZE 32768
171 #else
172 #define YY_BUF_SIZE 16384
173 #endif /* __ia64__ */
174 #endif
175 
176 /* The state buf must be large enough to hold one state per character in the main buffer.
177  */
178 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
179 
180 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
181 #define YY_TYPEDEF_YY_BUFFER_STATE
183 #endif
184 
185 #ifndef YY_TYPEDEF_YY_SIZE_T
186 #define YY_TYPEDEF_YY_SIZE_T
187 typedef size_t yy_size_t;
188 #endif
189 
190 extern yy_size_t ppleng;
191 
192 extern FILE *ppin, *ppout;
193 
194 #define EOB_ACT_CONTINUE_SCAN 0
195 #define EOB_ACT_END_OF_FILE 1
196 #define EOB_ACT_LAST_MATCH 2
197 
198  #define YY_LESS_LINENO(n)
199  #define YY_LINENO_REWIND_TO(ptr)
200 
201 /* Return all but the first "n" matched characters back to the input stream. */
202 #define yyless(n) \
203  do \
204  { \
205  /* Undo effects of setting up pptext. */ \
206  int yyless_macro_arg = (n); \
207  YY_LESS_LINENO(yyless_macro_arg);\
208  *yy_cp = (yy_hold_char); \
209  YY_RESTORE_YY_MORE_OFFSET \
210  (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
211  YY_DO_BEFORE_ACTION; /* set up pptext again */ \
212  } \
213  while ( 0 )
214 
215 #define unput(c) yyunput( c, (yytext_ptr) )
216 
217 #ifndef YY_STRUCT_YY_BUFFER_STATE
218 #define YY_STRUCT_YY_BUFFER_STATE
220  {
222 
223  char *yy_ch_buf; /* input buffer */
224  char *yy_buf_pos; /* current position in input buffer */
225 
226  /* Size of input buffer in bytes, not including room for EOB
227  * characters.
228  */
230 
231  /* Number of characters read into yy_ch_buf, not including EOB
232  * characters.
233  */
235 
236  /* Whether we "own" the buffer - i.e., we know we created it,
237  * and can realloc() it to grow it, and should free() it to
238  * delete it.
239  */
241 
242  /* Whether this is an "interactive" input source; if so, and
243  * if we're using stdio for input, then we want to use getc()
244  * instead of fread(), to make sure we stop fetching input after
245  * each newline.
246  */
248 
249  /* Whether we're considered to be at the beginning of a line.
250  * If so, '^' rules will be active on the next match, otherwise
251  * not.
252  */
254 
255  int yy_bs_lineno; /**< The line count. */
256  int yy_bs_column; /**< The column count. */
257 
258  /* Whether to try to fill the input buffer when we reach the
259  * end of it.
260  */
262 
264 
265 #define YY_BUFFER_NEW 0
266 #define YY_BUFFER_NORMAL 1
267  /* When an EOF's been seen but there's still some text to process
268  * then we mark the buffer as YY_EOF_PENDING, to indicate that we
269  * shouldn't try reading from the input source any more. We might
270  * still have a bunch of tokens to match, though, because of
271  * possible backing-up.
272  *
273  * When we actually see the EOF, we change the status to "new"
274  * (via pprestart()), so that the user can continue scanning by
275  * just pointing ppin at a new input file.
276  */
277 #define YY_BUFFER_EOF_PENDING 2
278 
279  };
280 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
281 
282 /* Stack of input buffers. */
283 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
284 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
285 static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
286 
287 /* We provide macros for accessing buffer states in case in the
288  * future we want to put the buffer states in a more general
289  * "scanner state".
290  *
291  * Returns the top of the stack, or NULL.
292  */
293 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
294  ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
295  : NULL)
296 
297 /* Same as previous macro, but useful when we know that the buffer stack is not
298  * NULL or when we need an lvalue. For internal use only.
299  */
300 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
301 
302 /* yy_hold_char holds the character lost when pptext is formed. */
303 static char yy_hold_char;
304 static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */
306 
307 /* Points to current character in buffer. */
308 static char *yy_c_buf_p = (char *) 0;
309 static int yy_init = 0; /* whether we need to initialize */
310 static int yy_start = 0; /* start state number */
311 
312 /* Flag which is used to allow ppwrap()'s to do buffer switches
313  * instead of setting up a fresh ppin. A bit of a hack ...
314  */
316 
317 void pprestart (FILE *input_file );
318 void pp_switch_to_buffer (YY_BUFFER_STATE new_buffer );
319 YY_BUFFER_STATE pp_create_buffer (FILE *file,int size );
320 void pp_delete_buffer (YY_BUFFER_STATE b );
321 void pp_flush_buffer (YY_BUFFER_STATE b );
322 void pppush_buffer_state (YY_BUFFER_STATE new_buffer );
323 void pppop_buffer_state (void );
324 
325 static void ppensure_buffer_stack (void );
326 static void pp_load_buffer_state (void );
327 static void pp_init_buffer (YY_BUFFER_STATE b,FILE *file );
328 
329 #define YY_FLUSH_BUFFER pp_flush_buffer(YY_CURRENT_BUFFER )
330 
331 YY_BUFFER_STATE pp_scan_buffer (char *base,yy_size_t size );
332 YY_BUFFER_STATE pp_scan_string (yyconst char *yy_str );
333 YY_BUFFER_STATE pp_scan_bytes (yyconst char *bytes,yy_size_t len );
334 
335 void *ppalloc (yy_size_t );
336 void *pprealloc (void *,yy_size_t );
337 void ppfree (void * );
338 
339 #define yy_new_buffer pp_create_buffer
340 
341 #define yy_set_interactive(is_interactive) \
342  { \
343  if ( ! YY_CURRENT_BUFFER ){ \
344  ppensure_buffer_stack (); \
345  YY_CURRENT_BUFFER_LVALUE = \
346  pp_create_buffer(ppin,YY_BUF_SIZE ); \
347  } \
348  YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
349  }
350 
351 #define yy_set_bol(at_bol) \
352  { \
353  if ( ! YY_CURRENT_BUFFER ){\
354  ppensure_buffer_stack (); \
355  YY_CURRENT_BUFFER_LVALUE = \
356  pp_create_buffer(ppin,YY_BUF_SIZE ); \
357  } \
358  YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
359  }
360 
361 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
362 
363 /* Begin user sect3 */
364 
365 typedef unsigned char YY_CHAR;
366 
367 FILE *ppin = (FILE *) 0, *ppout = (FILE *) 0;
368 
369 typedef int yy_state_type;
370 
371 extern int pplineno;
372 
373 int pplineno = 1;
374 
375 extern char *pptext;
376 #define yytext_ptr pptext
377 
378 static yy_state_type yy_get_previous_state (void );
379 static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
380 static int yy_get_next_buffer (void );
381 static void yy_fatal_error (yyconst char msg[] );
382 
383 /* Done after the current pattern has been matched and before the
384  * corresponding action - sets up pptext.
385  */
386 #define YY_DO_BEFORE_ACTION \
387  (yytext_ptr) = yy_bp; \
388  ppleng = (size_t) (yy_cp - yy_bp); \
389  (yy_hold_char) = *yy_cp; \
390  *yy_cp = '\0'; \
391  (yy_c_buf_p) = yy_cp;
392 
393 #define YY_NUM_RULES 156
394 #define YY_END_OF_BUFFER 157
395 /* This struct is not used in this scanner,
396  but its presence is necessary. */
398  {
401  };
403  { 0,
404  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
405  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
406  157, 57, 49, 50, 57, 57, 52, 53, 57, 57,
407  57, 54, 57, 54, 57, 54, 54, 54, 54, 54,
408  54, 54, 54, 54, 54, 57, 50, 57, 26, 57,
409  52, 53, 57, 57, 57, 54, 57, 54, 57, 57,
410  54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
411  148, 128, 129, 148, 148, 132, 133, 148, 148, 148,
412  145, 130, 145, 148, 148, 145, 145, 145, 145, 145,
413  145, 145, 145, 145, 145, 155, 149, 150, 155, 155,
414 
415  155, 155, 155, 152, 155, 152, 155, 155, 152, 64,
416  58, 63, 64, 64, 64, 75, 65, 74, 75, 75,
417  75, 75, 74, 73, 75, 71, 73, 73, 73, 73,
418  73, 89, 76, 88, 89, 89, 89, 89, 89, 87,
419  89, 84, 87, 87, 87, 87, 87, 87, 101, 90,
420  100, 101, 101, 101, 101, 101, 99, 101, 96, 99,
421  99, 99, 99, 99, 123, 102, 103, 123, 123, 123,
422  123, 103, 122, 123, 120, 118, 119, 115, 122, 122,
423  122, 122, 122, 122, 122, 122, 122, 122, 125, 124,
424  125, 127, 126, 127, 50, 0, 56, 0, 1, 0,
425 
426  55, 49, 51, 54, 54, 50, 54, 54, 54, 54,
427  54, 54, 54, 54, 54, 54, 54, 54, 54, 0,
428  50, 26, 0, 0, 56, 24, 24, 24, 24, 24,
429  0, 1, 0, 55, 51, 54, 54, 50, 16, 54,
430  54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
431  54, 54, 129, 0, 147, 0, 0, 146, 128, 145,
432  145, 131, 145, 134, 135, 145, 145, 136, 145, 145,
433  145, 145, 150, 0, 154, 0, 0, 153, 149, 152,
434  152, 151, 63, 0, 0, 0, 60, 74, 0, 72,
435  0, 0, 71, 74, 73, 71, 67, 73, 73, 73,
436 
437  73, 88, 0, 85, 0, 0, 86, 0, 84, 87,
438  84, 84, 83, 87, 87, 87, 87, 100, 0, 97,
439  0, 0, 98, 0, 96, 99, 96, 96, 99, 99,
440  99, 91, 99, 103, 0, 121, 0, 0, 120, 103,
441  122, 120, 116, 117, 114, 122, 122, 122, 104, 122,
442  122, 108, 122, 122, 107, 125, 1, 127, 1, 1,
443  54, 54, 54, 54, 54, 54, 0, 54, 54, 54,
444  54, 54, 54, 54, 54, 54, 0, 50, 26, 0,
445  24, 24, 24, 24, 24, 16, 0, 56, 24, 24,
446  24, 24, 24, 0, 1, 0, 55, 51, 54, 54,
447 
448  50, 14, 0, 15, 4, 15, 15, 15, 15, 15,
449  54, 54, 54, 54, 54, 54, 0, 54, 54, 54,
450  54, 54, 54, 54, 54, 54, 145, 145, 145, 137,
451  145, 145, 145, 145, 0, 0, 0, 73, 68, 73,
452  73, 87, 87, 87, 87, 99, 99, 92, 99, 122,
453  122, 122, 122, 105, 113, 122, 1, 1, 54, 28,
454  54, 54, 54, 54, 0, 54, 54, 54, 54, 54,
455  54, 54, 54, 54, 54, 54, 0, 50, 26, 0,
456  24, 24, 24, 24, 24, 16, 24, 24, 24, 24,
457  24, 0, 15, 4, 15, 15, 15, 15, 15, 0,
458 
459  56, 24, 24, 24, 23, 19, 24, 0, 1, 0,
460  55, 51, 54, 54, 50, 0, 15, 15, 15, 15,
461  15, 15, 15, 15, 15, 15, 54, 28, 54, 54,
462  54, 54, 0, 0, 54, 54, 54, 54, 54, 54,
463  54, 54, 54, 54, 54, 143, 144, 145, 145, 145,
464  145, 145, 0, 0, 62, 73, 73, 73, 87, 87,
465  87, 87, 99, 99, 93, 122, 122, 122, 110, 111,
466  54, 54, 54, 54, 43, 0, 54, 54, 54, 54,
467  54, 54, 54, 54, 54, 44, 45, 46, 0, 0,
468  50, 26, 0, 24, 24, 24, 24, 24, 16, 24,
469 
470  24, 24, 24, 24, 0, 15, 4, 15, 15, 15,
471  15, 15, 24, 24, 24, 23, 19, 24, 0, 15,
472  15, 15, 15, 15, 15, 15, 15, 15, 15, 0,
473  56, 24, 24, 22, 18, 0, 1, 0, 55, 51,
474  54, 54, 50, 15, 15, 15, 15, 15, 8, 15,
475  15, 15, 15, 54, 54, 54, 54, 43, 0, 0,
476  0, 54, 54, 54, 54, 54, 54, 54, 54, 54,
477  44, 45, 46, 0, 145, 145, 145, 145, 145, 61,
478  0, 73, 73, 73, 87, 87, 87, 87, 87, 99,
479  99, 122, 106, 122, 36, 54, 54, 54, 54, 54,
480 
481  43, 0, 54, 54, 54, 54, 54, 54, 54, 54,
482  54, 44, 45, 46, 0, 0, 50, 26, 0, 24,
483  24, 24, 24, 24, 16, 24, 24, 24, 24, 24,
484  0, 15, 4, 15, 15, 15, 15, 15, 24, 24,
485  24, 23, 19, 24, 0, 15, 15, 15, 15, 15,
486  15, 15, 15, 15, 15, 24, 24, 22, 18, 15,
487  15, 15, 15, 15, 8, 15, 15, 15, 15, 0,
488  56, 24, 20, 24, 0, 1, 0, 55, 51, 54,
489  54, 50, 15, 15, 15, 11, 15, 15, 6, 15,
490  15, 36, 54, 54, 54, 54, 54, 43, 0, 0,
491 
492  0, 0, 54, 54, 54, 54, 54, 54, 54, 54,
493  54, 44, 45, 46, 0, 0, 145, 145, 145, 145,
494  145, 59, 73, 73, 73, 87, 87, 87, 87, 87,
495  99, 99, 122, 122, 54, 54, 54, 54, 54, 0,
496  54, 29, 54, 27, 54, 41, 30, 35, 54, 0,
497  25, 50, 25, 0, 24, 24, 24, 24, 24, 16,
498  24, 24, 24, 24, 24, 0, 15, 4, 15, 15,
499  15, 15, 15, 24, 24, 24, 23, 19, 24, 0,
500  15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
501  24, 24, 22, 18, 15, 15, 15, 15, 15, 8,
502 
503  15, 15, 15, 15, 24, 20, 24, 15, 15, 15,
504  11, 15, 15, 6, 15, 15, 25, 24, 24, 25,
505  1, 15, 15, 9, 15, 15, 15, 15, 7, 141,
506  145, 145, 145, 145, 73, 73, 73, 87, 87, 87,
507  87, 87, 87, 99, 99, 112, 109, 54, 54, 54,
508  54, 34, 0, 54, 54, 54, 42, 0, 26, 24,
509  24, 15, 15, 15, 12, 15, 15, 139, 145, 138,
510  142, 66, 69, 73, 77, 87, 87, 87, 87, 87,
511  95, 94, 54, 54, 54, 54, 0, 54, 54, 54,
512  0, 17, 21, 2, 15, 15, 15, 5, 140, 70,
513 
514  87, 87, 87, 87, 87, 54, 54, 54, 0, 0,
515  54, 54, 33, 0, 3, 10, 15, 87, 87, 87,
516  87, 87, 54, 54, 54, 0, 31, 54, 54, 0,
517  15, 87, 87, 87, 87, 87, 54, 54, 37, 0,
518  54, 40, 0, 15, 87, 79, 87, 87, 78, 39,
519  38, 0, 54, 0, 13, 87, 87, 87, 48, 54,
520  0, 80, 87, 81, 0, 0, 87, 0, 0, 82,
521  0, 0, 0, 0, 0, 47, 0, 0, 0, 32,
522  0
523  } ;
524 
526  { 0,
527  1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
528  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
529  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
530  1, 3, 1, 4, 1, 5, 1, 1, 6, 7,
531  8, 9, 10, 11, 12, 13, 1, 14, 15, 16,
532  17, 14, 14, 14, 14, 14, 14, 1, 18, 19,
533  20, 21, 1, 1, 22, 23, 24, 25, 26, 27,
534  28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
535  38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
536  1, 1, 1, 1, 47, 1, 48, 49, 50, 51,
537 
538  52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
539  62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
540  72, 47, 1, 1, 1, 1, 1, 73, 73, 73,
541  73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
542  73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
543  73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
544  73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
545  73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
546  73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
547  73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
548 
549  73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
550  73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
551  73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
552  73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
553  73, 73, 73, 73, 73, 73, 73, 73, 73, 73,
554  73, 73, 73, 73, 73
555  } ;
556 
558  { 0,
559  1, 2, 3, 1, 4, 1, 5, 1, 1, 1,
560  6, 7, 8, 7, 7, 7, 7, 1, 1, 1,
561  1, 7, 7, 7, 7, 7, 7, 7, 7, 7,
562  7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
563  7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
564  7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
565  7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
566  7, 7, 9
567  } ;
568 
570  { 0,
571  0, 73, 146, 0, 219, 240, 260, 264, 320, 383,
572  446, 0, 519, 589, 659, 0, 263, 268, 272, 274,
573  2271, 5300, 5300, 2255, 2235, 2232, 5300, 5300, 2216, 282,
574  347, 289, 358, 395, 277, 543, 273, 722, 531, 555,
575  725, 549, 604, 729, 726, 0, 411, 2231, 787, 2227,
576  0, 0, 2195, 410, 426, 860, 534, 881, 286, 2162,
577  757, 559, 892, 944, 732, 901, 807, 916, 924, 964,
578  5300, 5300, 2177, 2173, 2167, 5300, 5300, 2151, 621, 834,
579  629, 815, 841, 305, 2150, 910, 900, 298, 740, 605,
580  751, 746, 938, 741, 934, 5300, 5300, 2137, 2135, 2125,
581 
582  2089, 972, 995, 1002, 1010, 1017, 312, 2070, 299, 5300,
583  5300, 348, 2057, 999, 252, 5300, 5300, 1033, 2073, 2069,
584  2012, 1026, 1054, 1062, 1069, 1076, 982, 332, 1045, 1083,
585  1084, 5300, 5300, 1042, 2016, 2013, 1998, 1942, 363, 988,
586  1085, 1098, 1090, 1947, 797, 1091, 1092, 1095, 5300, 5300,
587  1106, 1939, 1936, 1932, 1901, 1105, 1124, 1129, 1134, 1876,
588  1033, 1122, 1142, 528, 5300, 5300, 1156, 1883, 1871, 1849,
589  1149, 1165, 1174, 1183, 1191, 326, 5300, 1849, 341, 1160,
590  1198, 1202, 1203, 1206, 1209, 1210, 1213, 1217, 0, 5300,
591  1829, 0, 5300, 1828, 1844, 1834, 5300, 1780, 0, 1267,
592 
593  1274, 5300, 1730, 0, 1281, 1656, 314, 381, 580, 600,
594  581, 600, 1207, 1207, 592, 1200, 605, 711, 736, 0,
595  1235, 1298, 1635, 1650, 0, 1371, 784, 1209, 788, 790,
596  1620, 0, 1316, 1326, 1616, 1444, 1465, 1572, 1486, 1342,
597  1383, 1352, 1390, 1507, 1415, 1551, 1567, 1579, 1595, 1607,
598  1517, 1623, 1568, 1498, 5300, 1495, 1401, 1631, 5300, 0,
599  1652, 5300, 853, 0, 0, 882, 943, 1148, 1199, 1198,
600  1211, 1228, 1495, 1452, 5300, 1437, 1659, 1666, 5300, 0,
601  1678, 5300, 1333, 1206, 1247, 1274, 5300, 1384, 1438, 5300,
602  1421, 1685, 1692, 1701, 0, 1709, 0, 1285, 1294, 1296,
603 
604  1295, 1422, 1382, 5300, 1367, 1362, 5300, 1421, 1572, 0,
605  1584, 1407, 0, 1300, 1329, 1358, 1435, 1497, 1348, 5300,
606  1339, 1317, 5300, 1636, 1671, 0, 1714, 1444, 1483, 1486,
607  1486, 0, 1473, 1538, 1310, 5300, 1304, 1721, 1728, 1737,
608  0, 1745, 5300, 5300, 5300, 1490, 1483, 1503, 0, 1504,
609  1505, 0, 1507, 1557, 0, 0, 0, 0, 0, 0,
610  1573, 1558, 1609, 1629, 1691, 1722, 1746, 1728, 1732, 1725,
611  1745, 1745, 1735, 1733, 1733, 1747, 0, 1622, 1802, 1272,
612  1875, 1748, 1755, 1771, 1791, 1948, 1223, 0, 1778, 1789,
613  1800, 1190, 1785, 1186, 0, 1766, 1820, 1158, 2021, 2042,
614 
615  1131, 5300, 2063, 2135, 2201, 2267, 1813, 1838, 1865, 1869,
616  1892, 1846, 1918, 1969, 1979, 2084, 2091, 2110, 2133, 2140,
617  2182, 2198, 2261, 2248, 1899, 2269, 1794, 1798, 1816, 0,
618  1884, 1887, 1901, 1909, 1945, 1938, 1949, 1936, 0, 1938,
619  1957, 1947, 1966, 1974, 1973, 1994, 2032, 0, 2050, 2055,
620  2064, 2065, 2051, 0, 0, 2057, 0, 0, 2070, 0,
621  1121, 2079, 2101, 2102, 2122, 2117, 2117, 2140, 2137, 2125,
622  2135, 2157, 2152, 2178, 419, 2005, 0, 1657, 2334, 1108,
623  2407, 2188, 2186, 2195, 2197, 2480, 2184, 2200, 2200, 1113,
624  2187, 2553, 2625, 2691, 2757, 2268, 2323, 2335, 2330, 1070,
625 
626  0, 2192, 2246, 2253, 0, 0, 1063, 1057, 0, 2388,
627  2418, 1056, 2824, 2845, 981, 2435, 2410, 2414, 2413, 2474,
628  2271, 2489, 2417, 2482, 2483, 2542, 2574, 2443, 2618, 2626,
629  2646, 2656, 2370, 2257, 2685, 2693, 2600, 2723, 2752, 2856,
630  2763, 2863, 2870, 2788, 2885, 0, 0, 2258, 2250, 2288,
631  2286, 2298, 2325, 2344, 5300, 2326, 2341, 2349, 2410, 2556,
632  2469, 2479, 2476, 2470, 0, 2477, 2486, 2485, 0, 0,
633  2530, 2870, 2542, 2546, 958, 2539, 2562, 2572, 2565, 2559,
634  2599, 2606, 2625, 2616, 2623, 954, 950, 940, 2700, 0,
635  1920, 2940, 923, 3013, 2626, 2654, 2661, 2693, 3086, 2680,
636 
637  2754, 2697, 931, 2686, 3159, 3231, 3297, 3363, 2878, 2760,
638  2856, 2922, 2691, 2702, 2704, 0, 0, 922, 2966, 2941,
639  2951, 2995, 3006, 3012, 3005, 3020, 2944, 3015, 2877, 920,
640  0, 2711, 917, 898, 0, 898, 0, 2911, 3107, 880,
641  3430, 3451, 859, 3080, 3095, 3016, 3122, 3161, 0, 3153,
642  3168, 3158, 3169, 3224, 3462, 3231, 3238, 3262, 3263, 2732,
643  2738, 3290, 3318, 3357, 3344, 3302, 3365, 3474, 3494, 3486,
644  3504, 3512, 3520, 3374, 2754, 2766, 2776, 2788, 2867, 5300,
645  2865, 2885, 2926, 2936, 2941, 2948, 3008, 3027, 3032, 3029,
646  3052, 3077, 0, 3083, 0, 3078, 3081, 3086, 3119, 3114,
647 
648  5300, 3152, 3160, 3169, 3165, 3165, 3202, 3203, 3232, 3225,
649  3224, 5300, 5300, 5300, 3241, 839, 2836, 3533, 280, 830,
650  3265, 3508, 3275, 3349, 3598, 3346, 3509, 3362, 362, 3342,
651  3664, 562, 3542, 3548, 3552, 3585, 3590, 3575, 3357, 3400,
652  3395, 829, 814, 410, 1047, 3630, 3559, 3643, 3668, 3656,
653  1555, 3673, 3697, 3708, 3723, 3543, 577, 1002, 797, 3730,
654  3616, 3734, 3739, 3743, 775, 3764, 1611, 3751, 3682, 615,
655  774, 3304, 764, 3541, 760, 739, 3766, 3789, 1120, 729,
656  3804, 1167, 3790, 3805, 1708, 3821, 3809, 3829, 653, 3842,
657  1782, 636, 3615, 3657, 3565, 3650, 3667, 572, 3825, 3658,
658 
659  3753, 3717, 3555, 3746, 3824, 3808, 3835, 3830, 3832, 3561,
660  3569, 566, 554, 541, 3850, 3837, 3282, 3356, 3372, 3366,
661  3383, 5300, 3579, 3590, 3651, 3666, 3713, 3715, 3847, 3732,
662  3728, 3810, 3827, 3815, 3822, 3835, 3832, 3832, 3838, 3837,
663  3849, 0, 3859, 0, 426, 0, 0, 0, 3839, 3864,
664  5300, 3895, 3889, 409, 417, 3897, 3885, 3899, 3886, 3903,
665  3916, 3917, 3912, 1249, 3918, 412, 3204, 3946, 3929, 3964,
666  3975, 3984, 3990, 3905, 3931, 3945, 348, 5300, 1261, 3337,
667  4003, 4010, 4016, 4020, 4036, 3478, 4040, 4049, 4062, 4066,
668  3976, 1310, 1042, 5300, 4070, 4075, 4090, 4094, 4106, 5300,
669 
670  4119, 3490, 4130, 4137, 4009, 5300, 3970, 4142, 4146, 4150,
671  4155, 4159, 4163, 5300, 4168, 4178, 344, 3994, 4074, 313,
672  0, 4182, 4188, 5300, 4194, 4199, 4204, 4209, 5300, 0,
673  3881, 3904, 3930, 3976, 4003, 4022, 4055, 4043, 4052, 4056,
674  4079, 4101, 4114, 4146, 4159, 0, 0, 4176, 4186, 4176,
675  4191, 0, 4191, 4198, 4182, 4195, 0, 4185, 4232, 1405,
676  1558, 4226, 4261, 4266, 4271, 4275, 4284, 0, 4202, 0,
677  0, 0, 0, 4194, 0, 4195, 4220, 4229, 4242, 4243,
678  0, 0, 4255, 4263, 4251, 2117, 4258, 4273, 4266, 4272,
679  4271, 5300, 5300, 5300, 4301, 4307, 4312, 5300, 0, 0,
680 
681  256, 4278, 4265, 4267, 4290, 4296, 4300, 4305, 4329, 4299,
682  4294, 4302, 0, 4313, 5300, 5300, 4340, 4309, 4312, 4302,
683  4314, 4329, 4326, 4327, 4319, 4322, 5300, 4329, 4330, 4336,
684  4366, 4351, 4355, 252, 4360, 4342, 4361, 4362, 0, 4363,
685  4354, 0, 4358, 4392, 4362, 0, 4363, 4366, 0, 0,
686  0, 4377, 4369, 4377, 4418, 4380, 4388, 4385, 5300, 4080,
687  4422, 0, 4381, 0, 4431, 4435, 4392, 4398, 4399, 0,
688  4396, 4420, 4417, 4422, 4410, 5300, 4421, 4416, 4420, 5300,
689  5300, 4495, 4504, 4513, 4522, 4531, 4540, 4549, 4558, 4562,
690  4571, 4580, 4589, 4598, 4607, 4616, 4625, 4629, 4638, 4647,
691 
692  4651, 4660, 4669, 4673, 4682, 4691, 4700, 4703, 4712, 4721,
693  4730, 4733, 4742, 4751, 4755, 4764, 4773, 4782, 4791, 4800,
694  4803, 4812, 4821, 4830, 4839, 4848, 4857, 4866, 4875, 4884,
695  4887, 4896, 4905, 4908, 4917, 4926, 4929, 4938, 4947, 4956,
696  4959, 4968, 4977, 4986, 4989, 4998, 5007, 5010, 5019, 5028,
697  5037, 5046, 5055, 5058, 5067, 5076, 5085, 5094, 5103, 5112,
698  5121, 5124, 5127, 5136, 5145, 5154, 5163, 5172, 5181, 5190,
699  5199, 5208, 5217, 5226, 5235, 5244, 5253, 5259, 5265, 5272,
700  5281, 5290
701  } ;
702 
704  { 0,
705  1081, 1081, 1081, 3, 1082, 1082, 1083, 1083, 1084, 1084,
706  1081, 11, 1085, 1085, 1081, 15, 1086, 1086, 1087, 1087,
707  1081, 1081, 1081, 1081, 1088, 1089, 1081, 1081, 1081, 1081,
708  1081, 1090, 1081, 1090, 1081, 1090, 1090, 1090, 1090, 1090,
709  1090, 1090, 1090, 1090, 1090, 1091, 1091, 1092, 1093, 1094,
710  1091, 1091, 1091, 1091, 1091, 1095, 1091, 1095, 1091, 1091,
711  58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
712  1081, 1081, 1081, 1096, 1097, 1081, 1081, 1081, 1081, 1081,
713  1098, 1081, 1098, 1081, 1081, 1098, 1098, 1098, 1098, 1098,
714  1098, 1098, 1098, 1098, 1098, 1081, 1081, 1081, 1099, 1100,
715 
716  1081, 1081, 1081, 1101, 1081, 1101, 1081, 1081, 1101, 1081,
717  1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1102, 1103,
718  1081, 1081, 1081, 1104, 1081, 1104, 1104, 1104, 1104, 1104,
719  1104, 1081, 1081, 1081, 1105, 1106, 1107, 1081, 1081, 1108,
720  1081, 1108, 1108, 1108, 1108, 1108, 1108, 1108, 1081, 1081,
721  1081, 1109, 1110, 1111, 1081, 1081, 1112, 1081, 1112, 1112,
722  1112, 1112, 1112, 1112, 1081, 1081, 1081, 1113, 1114, 1081,
723  1081, 1081, 1115, 1081, 1115, 1081, 1081, 1081, 1115, 1115,
724  1115, 1115, 1115, 1115, 1115, 1115, 1115, 1115, 1116, 1081,
725  1116, 1117, 1081, 1117, 1081, 1118, 1081, 1119, 1120, 1081,
726 
727  1081, 1081, 1081, 1121, 1121, 1081, 1121, 1121, 1121, 1121,
728  1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1121, 1122,
729  1122, 1123, 1122, 1124, 1122, 1123, 226, 226, 226, 226,
730  1125, 1126, 1122, 1122, 1122, 1127, 1127, 1122, 1128, 237,
731  237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
732  237, 237, 1081, 1129, 1081, 1130, 1081, 1081, 1081, 1131,
733  1131, 1081, 1131, 1131, 1131, 1131, 1131, 1131, 1131, 1131,
734  1131, 1131, 1081, 1132, 1081, 1133, 1081, 1081, 1081, 1134,
735  1134, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1135, 1081,
736  1136, 1081, 1081, 1081, 1137, 1137, 1137, 1137, 1137, 1137,
737 
738  1137, 1081, 1138, 1081, 1139, 1140, 1081, 1081, 1081, 1141,
739  1141, 1081, 1141, 1141, 1141, 1141, 1141, 1081, 1142, 1081,
740  1143, 1144, 1081, 1081, 1081, 1145, 1145, 1081, 1145, 1145,
741  1145, 1145, 1145, 1081, 1146, 1081, 1147, 1081, 1081, 1081,
742  1148, 1148, 1081, 1081, 1081, 1148, 1148, 1148, 1148, 1148,
743  1148, 1148, 1148, 1148, 1148, 1149, 1150, 1151, 1152, 1153,
744  1154, 1154, 1154, 1154, 1154, 1154, 1081, 1154, 1154, 1154,
745  1154, 1154, 1154, 1154, 1154, 1154, 1155, 1155, 1156, 1155,
746  1156, 381, 381, 381, 381, 1157, 1158, 1155, 381, 381,
747  381, 381, 381, 1159, 1160, 1155, 1155, 1155, 1161, 1161,
748 
749  1155, 1081, 1157, 403, 403, 403, 406, 406, 406, 406,
750  400, 400, 400, 400, 400, 400, 1155, 400, 400, 400,
751  400, 400, 400, 400, 400, 400, 1162, 1162, 1162, 1162,
752  1162, 1162, 1162, 1162, 1081, 1081, 1081, 1163, 1163, 1163,
753  1163, 1141, 1141, 1141, 1141, 1145, 1145, 1145, 1145, 1148,
754  1148, 1148, 1148, 1148, 1148, 1148, 1150, 1152, 1154, 1154,
755  1154, 1154, 1154, 1154, 1081, 1154, 1154, 1154, 1154, 1154,
756  1154, 1154, 1154, 1154, 1154, 1154, 1164, 1164, 1165, 1164,
757  1165, 481, 481, 481, 481, 1166, 481, 481, 481, 481,
758  481, 1166, 492, 492, 492, 495, 495, 495, 495, 1167,
759 
760  1164, 481, 481, 481, 481, 1164, 481, 1168, 1169, 1164,
761  1164, 1164, 1170, 1170, 1164, 495, 495, 495, 495, 495,
762  495, 495, 495, 495, 495, 495, 514, 514, 514, 514,
763  514, 514, 1164, 1164, 514, 514, 514, 514, 514, 514,
764  514, 514, 514, 514, 514, 1162, 1162, 1162, 1162, 1162,
765  1162, 1162, 1081, 1081, 1081, 1163, 1163, 1163, 1141, 1141,
766  1141, 1141, 1145, 1145, 1145, 1148, 1148, 1148, 1148, 1148,
767  1154, 1154, 1154, 1154, 1154, 1081, 1154, 1154, 1154, 1154,
768  1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1081, 1171,
769  1171, 1172, 1171, 1172, 594, 594, 594, 594, 1173, 594,
770 
771  594, 594, 594, 594, 1173, 605, 605, 605, 608, 608,
772  608, 608, 594, 594, 594, 594, 1171, 594, 608, 608,
773  608, 608, 608, 608, 608, 608, 608, 608, 608, 1174,
774  1171, 594, 594, 594, 1171, 1175, 1176, 1171, 1171, 1171,
775  1177, 1177, 1171, 608, 608, 608, 608, 608, 1171, 608,
776  608, 608, 608, 642, 642, 642, 642, 642, 1171, 1171,
777  1171, 642, 642, 642, 642, 642, 642, 642, 642, 642,
778  642, 642, 642, 1171, 1162, 1162, 1162, 1162, 1162, 1081,
779  1081, 1163, 1163, 1163, 1141, 1141, 1141, 1141, 1141, 1145,
780  1145, 1148, 1148, 1148, 1154, 1154, 1154, 1154, 1154, 1154,
781 
782  1081, 1081, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154,
783  1154, 1081, 1081, 1081, 1081, 1081, 1081, 1178, 1081, 1178,
784  1178, 1178, 1178, 1178, 1179, 1178, 1178, 1178, 1178, 1178,
785  1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1178, 1178,
786  1178, 1178, 1081, 1178, 1179, 1179, 1179, 1179, 1179, 1179,
787  1179, 1179, 1179, 1179, 1179, 1178, 1178, 1178, 1081, 1179,
788  1179, 1179, 1179, 1179, 1081, 1179, 1179, 1179, 1179, 1180,
789  1081, 1178, 1081, 1178, 1181, 1182, 1081, 1081, 1081, 1154,
790  1154, 1081, 1179, 1179, 1179, 1179, 1179, 1179, 1081, 1179,
791  1179, 1154, 1154, 1154, 1154, 1154, 1154, 1081, 1081, 1081,
792 
793  1081, 1081, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154,
794  1154, 1081, 1081, 1081, 1081, 1081, 1162, 1162, 1162, 1162,
795  1162, 1081, 1163, 1163, 1163, 1141, 1141, 1141, 1141, 1141,
796  1145, 1145, 1148, 1148, 1154, 1154, 1154, 1154, 1154, 1081,
797  1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1154, 1081,
798  1081, 1081, 1178, 1081, 1178, 1178, 1178, 1178, 1178, 731,
799  1178, 1178, 1178, 1178, 1178, 731, 1179, 1179, 1179, 1179,
800  1179, 1179, 1179, 1178, 1178, 1178, 1178, 1081, 1178, 1179,
801  1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179, 1179,
802  1178, 1178, 1178, 1081, 1179, 1179, 1179, 1179, 1179, 1081,
803 
804  1179, 1179, 1179, 1179, 1178, 1081, 1178, 1179, 1179, 1179,
805  1179, 1179, 1179, 1081, 1179, 1179, 1180, 1178, 1178, 1181,
806  1182, 1179, 1179, 1081, 1179, 1179, 1179, 1179, 1081, 1162,
807  1162, 1162, 1162, 1162, 1163, 1163, 1163, 1141, 1141, 1141,
808  1141, 1141, 1141, 1145, 1145, 1148, 1148, 1154, 1154, 1154,
809  1154, 1154, 1081, 1154, 1154, 1154, 1154, 1081, 1178, 1178,
810  1178, 1179, 1179, 1179, 1179, 1179, 1179, 1162, 1162, 1162,
811  1162, 1163, 1163, 1163, 1141, 1141, 1141, 1141, 1141, 1141,
812  1145, 1145, 1154, 1154, 1154, 1154, 1081, 1154, 1154, 1154,
813  1081, 1081, 1081, 1081, 1179, 1179, 1179, 1081, 1162, 1163,
814 
815  1141, 1141, 1141, 1141, 1141, 1154, 1154, 1154, 1081, 1081,
816  1154, 1154, 1154, 1081, 1081, 1081, 1179, 1141, 1141, 1141,
817  1141, 1141, 1154, 1154, 1154, 1081, 1081, 1154, 1154, 1081,
818  1179, 1141, 1141, 1141, 1141, 1141, 1154, 1154, 1154, 1081,
819  1154, 1154, 1081, 1179, 1141, 1141, 1141, 1141, 1141, 1154,
820  1154, 1081, 1154, 1081, 1179, 1141, 1141, 1141, 1081, 1154,
821  1081, 1141, 1141, 1141, 1081, 1081, 1141, 1081, 1081, 1141,
822  1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
823  0, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
824  1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
825 
826  1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
827  1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
828  1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
829  1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
830  1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
831  1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
832  1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
833  1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
834  1081, 1081
835  } ;
836 
838  { 0,
839  22, 23, 24, 25, 22, 26, 27, 28, 29, 30,
840  31, 32, 33, 34, 34, 34, 34, 35, 22, 22,
841  22, 36, 37, 38, 39, 40, 37, 37, 37, 41,
842  37, 37, 37, 37, 37, 37, 42, 37, 43, 44,
843  37, 37, 37, 45, 37, 37, 37, 36, 37, 38,
844  39, 40, 37, 37, 37, 41, 37, 37, 37, 37,
845  37, 37, 42, 37, 43, 44, 37, 37, 37, 45,
846  37, 37, 37, 46, 23, 47, 48, 49, 50, 51,
847  52, 53, 54, 55, 56, 57, 58, 58, 58, 58,
848  59, 46, 46, 60, 61, 62, 63, 64, 65, 62,
849 
850  62, 62, 66, 62, 62, 62, 62, 62, 62, 67,
851  62, 68, 69, 62, 62, 62, 70, 62, 62, 62,
852  61, 62, 63, 64, 65, 62, 62, 62, 66, 62,
853  62, 62, 62, 62, 62, 67, 62, 68, 69, 62,
854  62, 62, 70, 62, 62, 62, 71, 72, 73, 74,
855  71, 75, 76, 77, 78, 79, 80, 81, 82, 83,
856  83, 83, 83, 84, 71, 85, 71, 86, 87, 88,
857  88, 88, 88, 88, 88, 89, 88, 88, 90, 88,
858  88, 91, 92, 88, 93, 94, 95, 88, 88, 88,
859  88, 88, 88, 86, 87, 88, 88, 88, 88, 88,
860 
861  88, 89, 88, 88, 90, 88, 88, 91, 92, 88,
862  93, 94, 95, 88, 88, 88, 88, 88, 88, 96,
863  97, 98, 99, 96, 100, 96, 96, 101, 102, 103,
864  104, 105, 106, 106, 106, 106, 107, 96, 108, 96,
865  96, 97, 98, 99, 96, 100, 96, 96, 101, 102,
866  103, 104, 105, 106, 106, 106, 106, 107, 96, 108,
867  96, 111, 112, 1047, 190, 111, 112, 1018, 113, 190,
868  112, 191, 113, 193, 112, 193, 191, 112, 202, 206,
869  194, 112, 194, 1081, 851, 1081, 114, 202, 238, 115,
870  114, 287, 200, 115, 200, 201, 201, 201, 201, 200,
871 
872  860, 200, 205, 205, 205, 205, 259, 253, 1081, 1081,
873  1081, 1081, 114, 279, 273, 115, 114, 287, 197, 115,
874  116, 117, 118, 119, 116, 120, 116, 116, 121, 122,
875  123, 124, 125, 126, 126, 126, 126, 118, 116, 116,
876  116, 127, 1081, 129, 1081, 343, 344, 197, 202, 203,
877  283, 1081, 1081, 1081, 361, 130, 131, 200, 283, 200,
878  201, 201, 201, 201, 878, 283, 851, 127, 200, 129,
879  200, 201, 201, 201, 201, 308, 309, 309, 309, 309,
880  361, 130, 131, 116, 117, 118, 119, 116, 120, 116,
881  116, 121, 122, 123, 124, 125, 126, 126, 126, 126,
882 
883  118, 116, 116, 116, 127, 200, 129, 200, 205, 205,
884  205, 205, 894, 221, 851, 222, 1081, 362, 130, 131,
885  233, 1081, 233, 234, 234, 234, 234, 202, 235, 860,
886  127, 223, 129, 586, 587, 588, 233, 956, 233, 234,
887  234, 234, 234, 362, 130, 131, 132, 133, 134, 135,
888  132, 136, 137, 132, 138, 139, 134, 140, 141, 142,
889  142, 142, 142, 134, 132, 132, 132, 143, 144, 145,
890  144, 144, 146, 144, 144, 144, 144, 144, 144, 144,
891  147, 144, 144, 144, 144, 148, 144, 144, 144, 144,
892  144, 144, 144, 143, 144, 145, 144, 144, 146, 144,
893 
894  144, 144, 144, 144, 144, 144, 147, 144, 144, 144,
895  144, 148, 144, 144, 144, 144, 144, 144, 144, 149,
896  150, 151, 152, 149, 153, 154, 149, 155, 156, 151,
897  157, 158, 159, 159, 159, 159, 151, 149, 149, 149,
898  1081, 1081, 161, 1081, 233, 851, 233, 234, 234, 234,
899  234, 162, 209, 1081, 163, 1081, 210, 333, 851, 1081,
900  211, 1081, 164, 1081, 1081, 1081, 851, 1081, 161, 220,
901  851, 220, 236, 236, 236, 236, 851, 162, 209, 906,
902  163, 851, 210, 333, 207, 212, 211, 215, 164, 149,
903  150, 151, 152, 149, 153, 154, 149, 155, 156, 151,
904 
905  157, 158, 159, 159, 159, 159, 151, 149, 149, 149,
906  207, 212, 161, 215, 1081, 1081, 1081, 1081, 197, 917,
907  363, 162, 364, 365, 163, 366, 266, 371, 374, 216,
908  267, 257, 164, 257, 258, 258, 258, 258, 161, 257,
909  851, 257, 261, 261, 261, 261, 363, 162, 364, 365,
910  163, 366, 266, 371, 374, 216, 267, 851, 164, 165,
911  166, 167, 168, 165, 169, 165, 165, 170, 171, 172,
912  173, 174, 175, 175, 175, 175, 167, 176, 177, 178,
913  179, 179, 179, 180, 181, 179, 182, 179, 183, 179,
914  179, 184, 179, 185, 186, 179, 179, 179, 187, 188,
915 
916  179, 179, 179, 179, 179, 179, 179, 179, 179, 180,
917  181, 179, 182, 179, 183, 179, 179, 184, 179, 185,
918  186, 179, 179, 179, 187, 188, 179, 179, 179, 179,
919  179, 179, 1081, 851, 1081, 1081, 1081, 1081, 1081, 1081,
920  375, 1081, 220, 921, 220, 236, 236, 236, 236, 213,
921  1081, 1081, 1081, 1081, 217, 219, 1081, 208, 1081, 214,
922  218, 1081, 245, 1081, 920, 197, 375, 220, 851, 220,
923  236, 236, 236, 236, 265, 213, 376, 268, 851, 851,
924  217, 219, 271, 208, 269, 214, 218, 220, 245, 220,
925  220, 220, 220, 220, 220, 220, 220, 220, 240, 220,
926 
927  265, 851, 376, 268, 220, 220, 220, 220, 271, 1081,
928  269, 227, 228, 389, 392, 393, 229, 220, 851, 220,
929  236, 236, 236, 236, 240, 257, 230, 257, 258, 258,
930  258, 258, 314, 851, 851, 259, 253, 227, 228, 389,
931  392, 393, 229, 851, 257, 248, 257, 258, 258, 258,
932  258, 257, 230, 257, 261, 261, 261, 261, 314, 220,
933  220, 782, 220, 220, 220, 220, 220, 220, 220, 220,
934  233, 248, 233, 237, 237, 237, 237, 220, 220, 220,
935  220, 220, 779, 220, 220, 220, 220, 220, 220, 220,
936  220, 233, 427, 233, 237, 237, 237, 237, 220, 220,
937 
938  220, 220, 220, 771, 220, 236, 236, 236, 236, 774,
939  1081, 220, 1081, 220, 236, 236, 236, 236, 427, 773,
940  1081, 428, 1081, 771, 759, 246, 220, 241, 220, 236,
941  236, 236, 236, 743, 220, 247, 220, 236, 236, 236,
942  236, 249, 263, 725, 1081, 264, 1081, 428, 1081, 250,
943  1081, 246, 714, 241, 220, 251, 220, 236, 236, 236,
944  236, 247, 713, 270, 429, 242, 712, 249, 263, 243,
945  701, 264, 272, 244, 220, 250, 220, 236, 236, 236,
946  236, 251, 277, 643, 277, 278, 278, 278, 278, 270,
947  429, 242, 1081, 252, 1081, 243, 279, 273, 272, 244,
948 
949  308, 311, 311, 311, 311, 277, 851, 277, 278, 278,
950  278, 278, 277, 907, 277, 281, 281, 281, 281, 252,
951  277, 297, 277, 278, 278, 278, 278, 277, 284, 277,
952  281, 281, 281, 281, 285, 288, 292, 286, 292, 293,
953  293, 293, 293, 288, 302, 1081, 1081, 297, 402, 880,
954  288, 851, 302, 907, 284, 1081, 288, 1081, 640, 302,
955  285, 329, 631, 286, 294, 635, 292, 293, 293, 293,
956  293, 288, 292, 631, 292, 296, 296, 296, 296, 292,
957  298, 292, 293, 293, 293, 293, 292, 329, 292, 296,
958  296, 296, 296, 1081, 1081, 1081, 1081, 308, 312, 312,
959 
960  312, 312, 1081, 1081, 1081, 301, 298, 1081, 318, 299,
961  308, 311, 311, 311, 311, 617, 318, 324, 325, 325,
962  325, 325, 203, 318, 851, 300, 315, 316, 599, 313,
963  317, 301, 572, 515, 1081, 299, 324, 327, 327, 327,
964  327, 324, 328, 328, 328, 328, 324, 327, 327, 327,
965  327, 300, 315, 316, 1081, 313, 317, 330, 334, 338,
966  512, 338, 339, 339, 339, 339, 334, 334, 331, 206,
967  1081, 851, 1081, 334, 430, 340, 332, 338, 339, 339,
968  339, 339, 334, 330, 338, 346, 338, 342, 342, 342,
969  342, 501, 506, 338, 331, 338, 339, 339, 339, 339,
970 
971  430, 338, 332, 338, 342, 342, 342, 342, 1081, 367,
972  1081, 346, 1081, 1081, 1081, 1081, 1081, 367, 1081, 1081,
973  1081, 1081, 1081, 1081, 367, 1081, 501, 1081, 431, 1081,
974  369, 350, 368, 372, 432, 347, 373, 378, 353, 379,
975  348, 390, 349, 391, 351, 354, 370, 433, 352, 434,
976  435, 878, 355, 1081, 431, 380, 369, 350, 368, 372,
977  432, 347, 373, 894, 353, 1081, 348, 390, 349, 391,
978  351, 354, 370, 433, 352, 434, 435, 200, 355, 200,
979  201, 201, 201, 201, 200, 436, 200, 201, 201, 201,
980  201, 200, 486, 200, 205, 205, 205, 205, 377, 437,
981 
982  377, 377, 377, 377, 377, 377, 377, 377, 377, 336,
983  377, 436, 906, 336, 1081, 377, 377, 377, 377, 438,
984  439, 440, 382, 383, 323, 437, 396, 384, 396, 397,
985  397, 397, 397, 441, 442, 283, 396, 385, 396, 397,
986  397, 397, 397, 283, 320, 438, 439, 440, 382, 383,
987  283, 320, 377, 384, 377, 399, 399, 399, 399, 441,
988  442, 443, 377, 385, 377, 399, 399, 399, 399, 307,
989  377, 377, 304, 377, 377, 377, 377, 377, 377, 377,
990  377, 377, 411, 377, 444, 304, 288, 443, 377, 377,
991  377, 377, 413, 377, 288, 377, 399, 399, 399, 399,
992 
993  377, 288, 377, 399, 399, 399, 399, 992, 411, 1081,
994  444, 257, 414, 257, 258, 258, 258, 258, 413, 412,
995  312, 312, 312, 312, 302, 377, 290, 377, 399, 399,
996  399, 399, 302, 308, 312, 312, 312, 312, 414, 302,
997  416, 290, 275, 377, 377, 412, 377, 377, 377, 377,
998  377, 377, 377, 377, 377, 275, 377, 328, 328, 328,
999  328, 377, 377, 377, 377, 377, 416, 377, 377, 377,
1000  377, 377, 377, 377, 377, 396, 445, 396, 400, 400,
1001  400, 400, 377, 377, 377, 377, 377, 402, 403, 377,
1002  377, 377, 377, 377, 377, 377, 377, 273, 377, 318,
1003 
1004  255, 255, 445, 377, 377, 377, 377, 318, 446, 447,
1005  405, 406, 448, 449, 318, 407, 450, 377, 408, 377,
1006  399, 399, 399, 399, 451, 409, 410, 377, 452, 377,
1007  399, 399, 399, 399, 446, 447, 405, 406, 448, 449,
1008  334, 407, 450, 453, 408, 454, 425, 455, 334, 415,
1009  451, 409, 410, 417, 452, 334, 1081, 900, 377, 851,
1010  993, 417, 1081, 377, 399, 399, 399, 399, 417, 453,
1011  253, 454, 425, 455, 401, 415, 418, 377, 456, 377,
1012  399, 399, 399, 399, 308, 309, 309, 309, 309, 377,
1013  419, 377, 399, 399, 399, 399, 308, 311, 311, 311,
1014 
1015  311, 459, 418, 460, 456, 377, 420, 377, 399, 399,
1016  399, 399, 1081, 914, 421, 851, 419, 377, 398, 377,
1017  399, 399, 399, 399, 478, 388, 479, 459, 422, 460,
1018  424, 423, 420, 377, 461, 377, 399, 399, 399, 399,
1019  421, 257, 480, 257, 258, 258, 258, 258, 324, 328,
1020  328, 328, 328, 388, 422, 386, 424, 423, 206, 591,
1021  461, 592, 257, 426, 257, 261, 261, 261, 261, 277,
1022  462, 277, 278, 278, 278, 278, 277, 593, 277, 278,
1023  278, 278, 278, 324, 325, 325, 325, 325, 277, 426,
1024  277, 281, 281, 281, 281, 292, 462, 292, 293, 293,
1025 
1026  293, 293, 292, 288, 292, 293, 293, 293, 293, 1081,
1027  924, 294, 851, 292, 293, 293, 293, 293, 288, 292,
1028  463, 292, 296, 296, 296, 296, 324, 327, 327, 327,
1029  327, 338, 203, 338, 339, 339, 339, 339, 338, 334,
1030  338, 339, 339, 339, 339, 464, 463, 340, 367, 338,
1031  339, 339, 339, 339, 334, 338, 367, 338, 342, 342,
1032  342, 342, 466, 367, 467, 468, 471, 472, 469, 475,
1033  465, 464, 470, 473, 474, 476, 510, 487, 510, 511,
1034  511, 511, 511, 1081, 929, 197, 851, 488, 466, 489,
1035  467, 468, 471, 472, 469, 475, 465, 490, 470, 473,
1036 
1037  474, 476, 477, 487, 477, 477, 477, 477, 477, 477,
1038  477, 477, 477, 488, 477, 489, 491, 502, 503, 477,
1039  477, 477, 477, 490, 505, 507, 482, 483, 504, 546,
1040  510, 484, 510, 511, 511, 511, 511, 197, 547, 522,
1041  548, 485, 491, 502, 503, 493, 195, 493, 359, 357,
1042  505, 507, 482, 483, 504, 546, 477, 484, 477, 513,
1043  513, 513, 513, 523, 547, 522, 548, 485, 345, 199,
1044  493, 493, 493, 493, 477, 477, 336, 477, 477, 477,
1045  477, 477, 477, 477, 477, 477, 336, 477, 1081, 523,
1046  524, 528, 477, 477, 477, 477, 493, 493, 493, 493,
1047 
1048  525, 493, 477, 493, 477, 513, 513, 513, 513, 477,
1049  526, 477, 513, 513, 513, 513, 524, 528, 549, 550,
1050  527, 199, 717, 493, 718, 493, 525, 493, 477, 493,
1051  477, 513, 513, 513, 513, 544, 526, 551, 552, 323,
1052  719, 320, 320, 529, 549, 550, 527, 477, 477, 402,
1053  492, 477, 477, 477, 477, 477, 477, 477, 477, 1081,
1054  477, 544, 199, 551, 552, 477, 477, 477, 477, 529,
1055  553, 554, 494, 495, 555, 556, 557, 496, 558, 477,
1056  497, 477, 513, 513, 513, 513, 559, 498, 499, 477,
1057  560, 477, 513, 513, 513, 513, 553, 554, 494, 495,
1058 
1059  555, 556, 557, 496, 558, 307, 497, 589, 531, 561,
1060  530, 562, 559, 498, 499, 589, 560, 563, 304, 304,
1061  477, 477, 589, 477, 477, 477, 477, 477, 477, 477,
1062  477, 477, 199, 477, 531, 561, 530, 562, 477, 477,
1063  477, 477, 477, 563, 477, 477, 477, 477, 477, 477,
1064  477, 477, 510, 564, 510, 514, 514, 514, 514, 477,
1065  477, 477, 477, 477, 402, 516, 477, 477, 477, 477,
1066  477, 477, 477, 477, 290, 477, 290, 199, 565, 564,
1067  477, 477, 477, 477, 566, 567, 568, 517, 495, 282,
1068  569, 570, 496, 533, 477, 497, 477, 513, 513, 513,
1069 
1070  513, 533, 498, 499, 565, 571, 573, 532, 533, 199,
1071  566, 567, 568, 517, 495, 534, 569, 570, 496, 1009,
1072  477, 497, 477, 513, 513, 513, 513, 1009, 498, 499,
1073  275, 571, 573, 532, 1009, 477, 1081, 477, 275, 273,
1074  574, 534, 575, 477, 535, 477, 513, 513, 513, 513,
1075  477, 576, 477, 513, 513, 513, 513, 577, 578, 493,
1076  493, 579, 580, 581, 493, 536, 574, 493, 575, 262,
1077  535, 199, 255, 582, 493, 493, 255, 576, 583, 253,
1078  537, 584, 239, 577, 578, 493, 493, 579, 580, 581,
1079  493, 536, 477, 493, 477, 513, 513, 513, 513, 582,
1080 
1081  493, 493, 1081, 477, 583, 538, 537, 584, 477, 539,
1082  477, 513, 513, 513, 513, 232, 585, 600, 601, 540,
1083  602, 603, 604, 613, 616, 493, 518, 618, 632, 614,
1084  519, 538, 225, 493, 225, 539, 199, 197, 197, 615,
1085  493, 493, 585, 600, 601, 540, 602, 603, 604, 613,
1086  616, 493, 518, 618, 632, 614, 519, 195, 477, 493,
1087  477, 513, 513, 513, 513, 615, 493, 493, 1081, 477,
1088  1081, 477, 633, 477, 513, 513, 513, 513, 634, 477,
1089  1081, 477, 513, 513, 513, 513, 661, 675, 542, 543,
1090  676, 493, 493, 541, 625, 648, 493, 545, 633, 520,
1091 
1092  606, 521, 606, 606, 634, 606, 493, 493, 1081, 677,
1093  1081, 1081, 661, 675, 542, 543, 676, 493, 493, 541,
1094  625, 648, 493, 545, 678, 520, 606, 521, 606, 606,
1095  679, 606, 493, 493, 590, 677, 590, 590, 590, 590,
1096  590, 590, 590, 590, 590, 1081, 590, 1081, 626, 680,
1097  678, 590, 590, 590, 590, 606, 679, 606, 595, 596,
1098  627, 1081, 606, 597, 606, 681, 682, 606, 1081, 606,
1099  628, 629, 659, 598, 626, 680, 1081, 1081, 1081, 683,
1100  659, 606, 684, 606, 595, 596, 627, 659, 606, 597,
1101  606, 681, 682, 606, 660, 606, 628, 629, 638, 598,
1102 
1103  638, 639, 639, 639, 639, 683, 590, 590, 684, 590,
1104  590, 590, 590, 590, 590, 590, 590, 590, 1081, 590,
1105  660, 1081, 1081, 1081, 590, 590, 590, 590, 638, 1081,
1106  638, 639, 639, 639, 639, 621, 402, 619, 650, 622,
1107  644, 1081, 606, 1081, 606, 606, 606, 606, 606, 606,
1108  685, 606, 645, 590, 1081, 590, 641, 641, 641, 641,
1109  1081, 621, 1081, 1081, 650, 622, 644, 606, 606, 606,
1110  606, 606, 606, 606, 606, 606, 685, 606, 645, 590,
1111  590, 402, 605, 590, 590, 590, 590, 590, 590, 590,
1112  590, 649, 590, 606, 1081, 606, 1081, 590, 590, 590,
1113 
1114  590, 688, 689, 646, 607, 608, 606, 690, 606, 609,
1115  691, 692, 610, 647, 606, 606, 606, 606, 693, 611,
1116  612, 606, 651, 606, 652, 694, 1081, 688, 689, 646,
1117  607, 608, 606, 690, 606, 609, 691, 692, 610, 647,
1118  606, 606, 606, 606, 693, 611, 612, 606, 651, 606,
1119  652, 694, 590, 590, 402, 619, 590, 590, 590, 590,
1120  590, 590, 590, 590, 1081, 590, 1081, 686, 695, 699,
1121  590, 590, 590, 590, 606, 700, 606, 620, 608, 687,
1122  653, 702, 609, 1081, 590, 610, 590, 641, 641, 641,
1123  641, 703, 611, 612, 695, 699, 704, 705, 706, 1081,
1124 
1125  606, 700, 606, 620, 608, 687, 653, 702, 609, 654,
1126  590, 610, 590, 641, 641, 641, 641, 703, 611, 612,
1127  707, 664, 704, 705, 706, 590, 1081, 590, 590, 655,
1128  590, 641, 641, 641, 641, 654, 590, 708, 590, 641,
1129  641, 641, 641, 1081, 1081, 1081, 707, 664, 709, 606,
1130  606, 710, 711, 656, 606, 726, 590, 606, 590, 641,
1131  641, 641, 641, 708, 606, 606, 590, 1081, 590, 641,
1132  641, 641, 641, 1081, 709, 606, 606, 710, 711, 656,
1133  606, 726, 1081, 606, 1081, 657, 727, 729, 728, 1081,
1134  606, 606, 1081, 590, 1081, 590, 658, 590, 641, 641,
1135 
1136  641, 641, 589, 590, 1081, 590, 641, 641, 641, 641,
1137  589, 657, 727, 729, 728, 606, 621, 589, 730, 739,
1138  622, 742, 658, 606, 715, 662, 744, 756, 757, 758,
1139  606, 606, 1081, 590, 663, 590, 641, 641, 641, 641,
1140  1081, 606, 621, 772, 730, 739, 622, 742, 665, 606,
1141  715, 662, 744, 756, 757, 758, 606, 606, 1081, 590,
1142  663, 801, 590, 1081, 590, 641, 641, 641, 641, 772,
1143  1081, 1081, 1081, 590, 665, 590, 641, 641, 641, 641,
1144  802, 606, 606, 740, 668, 752, 606, 801, 817, 623,
1145  666, 624, 732, 741, 732, 818, 606, 606, 590, 819,
1146 
1147  590, 641, 671, 672, 673, 1081, 802, 606, 606, 740,
1148  668, 752, 606, 820, 817, 623, 666, 624, 732, 741,
1149  732, 818, 606, 606, 590, 819, 590, 590, 590, 590,
1150  590, 590, 590, 590, 590, 1081, 590, 1081, 852, 820,
1151  853, 590, 590, 590, 590, 590, 1081, 590, 590, 590,
1152  590, 590, 590, 590, 590, 638, 854, 638, 642, 642,
1153  642, 642, 590, 590, 590, 590, 590, 1081, 590, 641,
1154  641, 641, 641, 590, 1081, 590, 641, 641, 641, 641,
1155  590, 753, 590, 641, 641, 641, 641, 674, 732, 1081,
1156  732, 754, 669, 696, 667, 674, 821, 590, 641, 641,
1157 
1158  641, 641, 674, 697, 751, 822, 823, 753, 670, 732,
1159  732, 732, 732, 698, 732, 769, 732, 754, 669, 696,
1160  667, 777, 821, 777, 778, 778, 778, 778, 1081, 697,
1161  751, 822, 823, 1081, 670, 732, 732, 732, 732, 698,
1162  716, 769, 716, 716, 716, 716, 716, 716, 716, 716,
1163  716, 1081, 716, 1081, 732, 824, 732, 716, 716, 716,
1164  716, 825, 826, 755, 721, 722, 747, 402, 745, 723,
1165  748, 827, 1081, 732, 1081, 732, 732, 760, 732, 724,
1166  732, 824, 732, 732, 767, 732, 1081, 825, 826, 755,
1167  721, 722, 747, 1081, 1081, 723, 748, 827, 732, 732,
1168 
1169  732, 732, 732, 760, 732, 724, 1081, 765, 1081, 732,
1170  767, 732, 716, 716, 1081, 716, 716, 716, 716, 716,
1171  716, 716, 716, 716, 732, 716, 732, 732, 1081, 732,
1172  716, 716, 716, 716, 761, 762, 764, 732, 732, 732,
1173  732, 766, 785, 828, 732, 763, 732, 732, 732, 732,
1174  732, 829, 732, 732, 732, 732, 768, 830, 831, 1081,
1175  761, 762, 764, 732, 732, 732, 732, 766, 785, 828,
1176  732, 763, 732, 732, 732, 732, 732, 829, 732, 1081,
1177  732, 832, 768, 830, 831, 716, 716, 402, 731, 716,
1178  716, 716, 716, 716, 716, 716, 716, 1081, 716, 1081,
1179 
1180  1081, 1081, 833, 716, 716, 716, 716, 832, 834, 783,
1181  733, 734, 732, 835, 732, 735, 836, 777, 736, 777,
1182  778, 778, 778, 778, 837, 737, 738, 732, 833, 732,
1183  1081, 784, 1081, 1081, 834, 783, 733, 734, 732, 835,
1184  732, 735, 836, 1081, 736, 1081, 1081, 786, 838, 839,
1185  837, 737, 738, 732, 732, 732, 732, 784, 716, 716,
1186  402, 745, 716, 716, 716, 716, 716, 716, 716, 716,
1187  789, 716, 787, 786, 838, 839, 716, 716, 716, 716,
1188  732, 840, 732, 746, 734, 732, 841, 732, 735, 788,
1189  732, 736, 732, 732, 842, 732, 790, 843, 737, 738,
1190 
1191  732, 732, 732, 791, 844, 1081, 1081, 840, 1081, 746,
1192  734, 732, 841, 732, 735, 788, 732, 736, 732, 732,
1193  842, 732, 790, 843, 737, 738, 732, 732, 732, 791,
1194  844, 716, 1081, 716, 716, 845, 716, 780, 780, 780,
1195  780, 716, 846, 716, 780, 780, 780, 780, 716, 1081,
1196  716, 780, 780, 780, 780, 732, 732, 847, 796, 848,
1197  732, 845, 792, 732, 849, 799, 850, 797, 846, 851,
1198  732, 732, 716, 799, 798, 780, 780, 780, 780, 851,
1199  799, 732, 732, 847, 796, 848, 732, 800, 792, 732,
1200  849, 1081, 850, 797, 861, 1081, 732, 732, 1081, 716,
1201 
1202  716, 864, 716, 780, 780, 780, 780, 1081, 851, 930,
1203  1081, 1081, 716, 800, 716, 780, 780, 780, 780, 803,
1204  861, 732, 747, 807, 1081, 918, 748, 864, 716, 732,
1205  716, 780, 780, 780, 780, 930, 732, 732, 402, 880,
1206  1081, 1081, 804, 1081, 1081, 803, 851, 732, 747, 807,
1207  851, 918, 748, 851, 716, 732, 716, 780, 780, 780,
1208  780, 851, 732, 732, 1081, 716, 851, 716, 804, 716,
1209  780, 780, 780, 780, 865, 716, 815, 716, 780, 780,
1210  780, 780, 879, 806, 815, 874, 877, 732, 732, 805,
1211  931, 815, 732, 891, 1081, 749, 808, 750, 816, 851,
1212 
1213  865, 932, 732, 732, 851, 933, 1081, 1081, 879, 806,
1214  1081, 874, 877, 732, 732, 805, 931, 934, 732, 891,
1215  893, 749, 808, 750, 816, 1081, 892, 932, 732, 732,
1216  716, 933, 716, 716, 716, 716, 716, 716, 716, 716,
1217  716, 1081, 716, 934, 1081, 1081, 893, 716, 716, 716,
1218  716, 716, 892, 716, 716, 716, 716, 716, 716, 716,
1219  716, 777, 1081, 777, 781, 781, 781, 781, 716, 716,
1220  716, 716, 716, 1081, 716, 780, 780, 780, 780, 1081,
1221  900, 1081, 1081, 1081, 716, 793, 716, 780, 780, 780,
1222  780, 1081, 914, 1081, 1081, 794, 716, 809, 716, 780,
1223 
1224  780, 780, 780, 1081, 716, 795, 716, 780, 780, 780,
1225  780, 793, 851, 851, 716, 811, 812, 780, 780, 780,
1226  780, 794, 716, 809, 813, 780, 780, 780, 780, 810,
1227  716, 795, 814, 780, 780, 780, 780, 851, 875, 1081,
1228  862, 811, 863, 1081, 1081, 851, 851, 851, 876, 1081,
1229  1081, 1081, 851, 1081, 1081, 810, 851, 856, 857, 851,
1230  1081, 1081, 858, 851, 875, 851, 862, 882, 863, 851,
1231  919, 883, 859, 851, 876, 905, 1081, 1081, 886, 851,
1232  884, 841, 885, 856, 857, 895, 1081, 1081, 858, 851,
1233  1081, 1081, 1081, 882, 851, 848, 919, 883, 859, 402,
1234 
1235  866, 905, 851, 837, 886, 1081, 884, 841, 885, 849,
1236  887, 895, 1081, 935, 936, 888, 890, 1081, 1081, 851,
1237  851, 848, 868, 869, 1081, 889, 1081, 870, 1081, 837,
1238  871, 1081, 1081, 1081, 851, 849, 887, 872, 873, 935,
1239  936, 888, 890, 1081, 1081, 1081, 1081, 851, 868, 869,
1240  835, 889, 909, 870, 851, 882, 871, 1081, 1081, 883,
1241  851, 851, 851, 872, 873, 402, 880, 1081, 851, 1081,
1242  1081, 851, 851, 1081, 1081, 1081, 835, 851, 909, 838,
1243  899, 882, 896, 1081, 1081, 883, 851, 576, 881, 869,
1244  1081, 937, 836, 870, 901, 1081, 871, 897, 1081, 1081,
1245 
1246  938, 851, 839, 872, 873, 838, 899, 898, 896, 1081,
1247  1081, 1081, 851, 576, 881, 869, 916, 937, 836, 870,
1248  901, 851, 871, 897, 1081, 1081, 938, 851, 839, 872,
1249  873, 1081, 1081, 898, 851, 1081, 1081, 902, 851, 1081,
1250  1081, 1081, 916, 851, 1081, 1081, 840, 851, 939, 903,
1251  851, 940, 1081, 1081, 912, 851, 1081, 851, 943, 908,
1252  910, 904, 944, 902, 911, 1081, 1081, 1081, 851, 1081,
1253  851, 842, 840, 1081, 939, 903, 200, 940, 200, 201,
1254  201, 201, 201, 1081, 943, 908, 910, 904, 944, 915,
1255  911, 1081, 1081, 851, 851, 702, 1081, 842, 1081, 200,
1256 
1257  913, 200, 201, 201, 201, 201, 1081, 1081, 851, 851,
1258  1081, 1081, 851, 851, 200, 915, 200, 205, 205, 205,
1259  205, 702, 1081, 1081, 922, 851, 913, 367, 851, 851,
1260  1081, 1081, 925, 851, 851, 367, 851, 923, 926, 851,
1261  927, 851, 367, 1081, 1081, 945, 851, 844, 1081, 465,
1262  922, 946, 589, 947, 851, 948, 843, 847, 941, 949,
1263  589, 950, 850, 923, 926, 928, 951, 589, 845, 846,
1264  942, 945, 952, 844, 715, 465, 953, 946, 954, 947,
1265  955, 948, 843, 847, 957, 949, 958, 950, 850, 1081,
1266  1081, 928, 951, 1081, 845, 846, 942, 852, 952, 959,
1267 
1268  715, 1081, 953, 1081, 954, 866, 955, 1081, 968, 1081,
1269  957, 865, 958, 856, 857, 854, 1081, 862, 858, 863,
1270  1081, 1081, 1081, 1081, 1081, 864, 861, 868, 859, 1081,
1271  1081, 1081, 1081, 1081, 968, 1081, 877, 865, 969, 856,
1272  857, 891, 1081, 862, 858, 863, 875, 1081, 1081, 1081,
1273  1081, 864, 861, 868, 859, 874, 876, 892, 879, 1081,
1274  1081, 884, 877, 885, 969, 1081, 1081, 891, 1081, 970,
1275  893, 882, 875, 1081, 1081, 883, 1081, 1081, 1081, 1081,
1276  1081, 874, 876, 892, 879, 1081, 1081, 884, 1081, 885,
1277  886, 1081, 1081, 1081, 1081, 970, 893, 882, 1081, 919,
1278 
1279  887, 883, 1081, 971, 1081, 1081, 1081, 1081, 905, 888,
1280  1081, 1081, 1081, 1081, 1081, 1081, 886, 1081, 1081, 889,
1281  1081, 1081, 1081, 1081, 1081, 919, 887, 1081, 882, 971,
1282  918, 890, 883, 1081, 905, 888, 895, 1081, 1081, 960,
1283  1081, 1081, 1081, 972, 1081, 889, 1081, 973, 1081, 897,
1284  1081, 1081, 1081, 1081, 882, 896, 918, 890, 883, 898,
1285  899, 901, 895, 1081, 1081, 960, 1081, 1081, 1081, 972,
1286  1081, 1081, 1081, 973, 1081, 897, 1081, 1081, 1081, 1081,
1287  974, 896, 1065, 975, 1081, 898, 899, 901, 976, 902,
1288  1065, 1081, 1081, 1081, 1081, 1081, 1081, 1065, 1081, 908,
1289 
1290  961, 977, 978, 903, 904, 1081, 974, 1081, 1081, 975,
1291  1081, 909, 1081, 1081, 976, 902, 910, 912, 1081, 911,
1292  1081, 1081, 1081, 1081, 1081, 908, 961, 977, 978, 903,
1293  904, 1081, 1081, 1081, 1081, 1081, 979, 909, 1081, 1081,
1294  1081, 1081, 910, 1081, 1081, 911, 1081, 1081, 1081, 980,
1295  1081, 1081, 924, 1081, 1081, 913, 1081, 1081, 1081, 1081,
1296  1081, 1081, 979, 1081, 1081, 1081, 925, 1081, 915, 1081,
1297  1081, 916, 1081, 981, 927, 980, 922, 1081, 923, 1081,
1298  929, 913, 1081, 1081, 1081, 1081, 1081, 1081, 926, 1081,
1299  1081, 928, 1081, 982, 915, 1081, 1081, 916, 1081, 981,
1300 
1301  1081, 1081, 922, 1081, 923, 1081, 1081, 962, 1081, 963,
1302  1081, 1081, 983, 1081, 926, 984, 985, 928, 986, 982,
1303  987, 988, 989, 964, 990, 965, 991, 1081, 994, 999,
1304  1081, 1081, 1000, 962, 967, 963, 1081, 1081, 983, 1081,
1305  1001, 984, 985, 966, 986, 1081, 987, 988, 989, 964,
1306  990, 965, 991, 1081, 1002, 999, 856, 857, 1000, 1081,
1307  967, 858, 1081, 1081, 1003, 1081, 1001, 1081, 1081, 966,
1308  1081, 859, 1081, 1081, 1081, 1081, 1081, 1081, 1004, 1081,
1309  1002, 1005, 856, 857, 1006, 1081, 998, 858, 1081, 1007,
1310  1003, 1008, 996, 1010, 1011, 1012, 1013, 859, 1014, 1019,
1311 
1312  997, 1020, 1081, 1015, 1004, 1081, 995, 1005, 1081, 1016,
1313  1006, 1081, 1021, 1081, 1081, 1007, 1081, 1008, 996, 1010,
1314  1011, 1012, 1013, 1022, 1014, 1019, 997, 1020, 1023, 1024,
1315  1025, 1009, 995, 1027, 1028, 1017, 1081, 1029, 1021, 1009,
1316  1030, 1081, 1081, 1032, 1081, 1033, 1009, 1034, 1035, 1022,
1317  1036, 1037, 1038, 1039, 1023, 1024, 1025, 1040, 1041, 1027,
1318  1028, 1017, 1026, 1029, 1042, 1043, 1030, 1081, 1081, 1032,
1319  1081, 1033, 1045, 1034, 1035, 1031, 1036, 1037, 1038, 1039,
1320  1046, 1048, 1049, 1040, 1041, 1050, 1051, 1052, 1026, 1053,
1321  1042, 1043, 1054, 1081, 1081, 1056, 1081, 1057, 1045, 1058,
1322 
1323  1044, 1031, 1059, 1060, 1061, 1062, 1046, 1048, 1049, 1063,
1324  1064, 1050, 1051, 1052, 1067, 1053, 1055, 1070, 1054, 1081,
1325  1081, 1056, 1081, 1057, 1066, 1058, 1044, 1071, 1059, 1060,
1326  1061, 1062, 1066, 1065, 1072, 1063, 1064, 1066, 1073, 1066,
1327  1067, 1065, 1055, 1070, 1074, 1066, 1075, 1076, 1065, 1077,
1328  1078, 1079, 1066, 1071, 1080, 1068, 1081, 1081, 1081, 1081,
1329  1072, 1081, 1081, 1081, 1073, 1081, 1081, 1081, 1069, 1081,
1330  1074, 1081, 1075, 1076, 1081, 1077, 1078, 1079, 1081, 1081,
1331  1080, 1068, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
1332  1081, 1081, 1081, 1081, 1069, 109, 109, 109, 109, 109,
1333 
1334  109, 109, 109, 109, 110, 110, 110, 110, 110, 110,
1335  110, 110, 110, 128, 128, 128, 128, 128, 128, 128,
1336  128, 128, 160, 160, 160, 160, 160, 160, 160, 160,
1337  160, 189, 189, 189, 189, 189, 189, 189, 189, 189,
1338  192, 192, 192, 192, 192, 192, 192, 192, 192, 196,
1339  1081, 196, 196, 196, 196, 196, 196, 196, 198, 1081,
1340  198, 198, 198, 198, 198, 198, 198, 204, 204, 204,
1341  204, 220, 1081, 220, 220, 220, 220, 220, 220, 220,
1342  224, 1081, 224, 224, 224, 224, 224, 224, 224, 226,
1343  1081, 226, 226, 226, 226, 226, 226, 226, 231, 1081,
1344 
1345  231, 231, 231, 231, 231, 231, 231, 236, 1081, 236,
1346  236, 236, 236, 236, 236, 236, 254, 1081, 254, 254,
1347  254, 254, 254, 254, 254, 256, 1081, 256, 256, 256,
1348  256, 256, 256, 256, 260, 260, 260, 260, 274, 1081,
1349  274, 274, 274, 274, 274, 274, 274, 276, 1081, 276,
1350  276, 276, 276, 276, 276, 276, 280, 280, 280, 280,
1351  289, 1081, 289, 289, 289, 289, 289, 289, 289, 291,
1352  1081, 291, 291, 291, 291, 291, 291, 291, 295, 295,
1353  295, 295, 303, 1081, 303, 303, 303, 303, 303, 303,
1354  303, 305, 1081, 305, 305, 305, 305, 305, 305, 305,
1355 
1356  306, 1081, 306, 306, 1081, 306, 306, 306, 306, 310,
1357  310, 310, 319, 1081, 319, 319, 319, 319, 319, 319,
1358  319, 321, 1081, 321, 321, 321, 321, 321, 321, 321,
1359  322, 1081, 322, 322, 1081, 322, 322, 322, 322, 326,
1360  326, 326, 335, 1081, 335, 335, 335, 335, 335, 335,
1361  335, 337, 1081, 337, 337, 337, 337, 337, 337, 337,
1362  341, 341, 341, 341, 356, 1081, 356, 356, 356, 356,
1363  356, 356, 356, 358, 1081, 358, 358, 358, 358, 358,
1364  358, 358, 196, 1081, 196, 196, 196, 196, 196, 196,
1365  196, 198, 1081, 198, 198, 198, 198, 198, 198, 198,
1366 
1367  360, 1081, 360, 360, 360, 360, 360, 360, 360, 204,
1368  1081, 204, 377, 1081, 377, 377, 377, 377, 377, 377,
1369  377, 381, 1081, 381, 381, 381, 381, 381, 381, 381,
1370  387, 1081, 387, 387, 387, 387, 387, 387, 387, 394,
1371  1081, 394, 394, 394, 394, 394, 394, 394, 395, 1081,
1372  395, 395, 395, 395, 395, 395, 395, 399, 1081, 399,
1373  399, 399, 399, 399, 399, 399, 404, 404, 404, 404,
1374  404, 404, 404, 404, 404, 254, 1081, 254, 254, 254,
1375  254, 254, 254, 254, 256, 1081, 256, 256, 256, 256,
1376  256, 256, 256, 260, 1081, 260, 274, 1081, 274, 274,
1377 
1378  274, 274, 274, 274, 274, 276, 1081, 276, 276, 276,
1379  276, 276, 276, 276, 280, 1081, 280, 289, 1081, 289,
1380  289, 289, 289, 289, 289, 289, 291, 1081, 291, 291,
1381  291, 291, 291, 291, 291, 295, 1081, 295, 303, 1081,
1382  303, 303, 303, 303, 303, 303, 303, 305, 1081, 305,
1383  305, 305, 305, 305, 305, 305, 306, 1081, 306, 306,
1384  1081, 306, 306, 306, 306, 310, 1081, 310, 319, 1081,
1385  319, 319, 319, 319, 319, 319, 319, 321, 1081, 321,
1386  321, 321, 321, 321, 321, 321, 322, 1081, 322, 322,
1387  1081, 322, 322, 322, 322, 326, 1081, 326, 335, 1081,
1388 
1389  335, 335, 335, 335, 335, 335, 335, 337, 1081, 337,
1390  337, 337, 337, 337, 337, 337, 341, 1081, 341, 356,
1391  1081, 356, 356, 356, 356, 356, 356, 356, 457, 1081,
1392  457, 457, 457, 457, 457, 457, 457, 358, 1081, 358,
1393  358, 358, 358, 358, 358, 358, 458, 1081, 458, 458,
1394  458, 458, 458, 458, 458, 360, 1081, 360, 360, 360,
1395  360, 360, 360, 360, 204, 1081, 204, 477, 1081, 477,
1396  477, 477, 477, 477, 477, 477, 481, 1081, 481, 481,
1397  481, 481, 481, 481, 481, 493, 493, 493, 493, 493,
1398  493, 493, 493, 493, 500, 1081, 500, 500, 500, 500,
1399 
1400  500, 500, 500, 508, 1081, 508, 508, 508, 508, 508,
1401  508, 508, 509, 1081, 509, 509, 509, 509, 509, 509,
1402  509, 513, 1081, 513, 513, 513, 513, 513, 513, 513,
1403  260, 1081, 260, 295, 1081, 295, 590, 1081, 590, 590,
1404  590, 590, 590, 590, 590, 594, 1081, 594, 594, 594,
1405  594, 594, 594, 594, 606, 606, 606, 606, 606, 606,
1406  606, 606, 606, 630, 1081, 630, 630, 630, 630, 630,
1407  630, 630, 636, 1081, 636, 636, 636, 636, 636, 636,
1408  636, 637, 1081, 637, 637, 637, 637, 637, 637, 637,
1409  641, 1081, 641, 641, 641, 641, 641, 641, 641, 716,
1410 
1411  1081, 716, 716, 716, 716, 716, 716, 716, 720, 1081,
1412  720, 720, 720, 720, 720, 720, 720, 732, 732, 732,
1413  732, 732, 732, 732, 732, 732, 770, 1081, 770, 770,
1414  770, 770, 770, 770, 770, 775, 1081, 775, 775, 775,
1415  775, 775, 775, 775, 776, 1081, 776, 776, 776, 776,
1416  776, 776, 776, 780, 1081, 780, 780, 780, 780, 780,
1417  780, 780, 855, 1081, 1081, 855, 867, 867, 867, 1081,
1418  1081, 867, 196, 1081, 196, 196, 196, 196, 196, 196,
1419  196, 198, 1081, 198, 198, 198, 198, 198, 198, 198,
1420  360, 1081, 360, 360, 360, 360, 360, 360, 360, 21,
1421 
1422  1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
1423  1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
1424  1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
1425  1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
1426  1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
1427  1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
1428  1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
1429  1081, 1081, 1081
1430  } ;
1431 
1433  { 0,
1434  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1435  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1436  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1437  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1438  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1439  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1440  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1441  1, 1, 1, 2, 2, 2, 2, 2, 2, 2,
1442  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1443  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1444 
1445  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1446  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1447  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1448  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1449  2, 2, 2, 2, 2, 2, 3, 3, 3, 3,
1450  3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1451  3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1452  3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1453  3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1454  3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1455 
1456  3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1457  3, 3, 3, 3, 3, 3, 3, 3, 3, 5,
1458  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1459  5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1460  6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
1461  6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
1462  6, 7, 7, 1034, 17, 8, 8, 1001, 7, 18,
1463  7, 17, 8, 19, 8, 20, 18, 7, 35, 35,
1464  19, 8, 20, 37, 719, 37, 7, 59, 59, 7,
1465  8, 115, 30, 8, 30, 30, 30, 30, 30, 32,
1466 
1467  719, 32, 32, 32, 32, 32, 84, 84, 88, 109,
1468  88, 109, 7, 107, 107, 7, 8, 115, 920, 8,
1469  9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1470  9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
1471  9, 9, 128, 9, 128, 176, 176, 917, 31, 31,
1472  112, 179, 877, 179, 207, 9, 9, 31, 112, 31,
1473  31, 31, 31, 31, 729, 112, 729, 9, 33, 9,
1474  33, 33, 33, 33, 33, 139, 139, 139, 139, 139,
1475  207, 9, 9, 10, 10, 10, 10, 10, 10, 10,
1476  10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
1477 
1478  10, 10, 10, 10, 10, 34, 10, 34, 34, 34,
1479  34, 34, 744, 47, 744, 47, 866, 208, 10, 10,
1480  54, 855, 54, 54, 54, 54, 54, 55, 55, 854,
1481  10, 47, 10, 475, 475, 475, 55, 845, 55, 55,
1482  55, 55, 55, 208, 10, 10, 11, 11, 11, 11,
1483  11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1484  11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1485  11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1486  11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1487  11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1488 
1489  11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
1490  11, 11, 11, 11, 11, 11, 11, 11, 11, 13,
1491  13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1492  13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
1493  164, 39, 13, 39, 57, 814, 57, 57, 57, 57,
1494  57, 13, 39, 36, 13, 36, 39, 164, 813, 42,
1495  39, 42, 13, 732, 732, 40, 732, 40, 13, 62,
1496  812, 62, 62, 62, 62, 62, 798, 13, 39, 757,
1497  13, 757, 39, 164, 36, 40, 39, 42, 13, 14,
1498  14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1499 
1500  14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
1501  36, 40, 14, 42, 43, 90, 43, 90, 770, 770,
1502  209, 14, 210, 211, 14, 212, 90, 215, 217, 43,
1503  90, 79, 14, 79, 79, 79, 79, 79, 14, 81,
1504  792, 81, 81, 81, 81, 81, 209, 14, 210, 211,
1505  14, 212, 90, 215, 217, 43, 90, 789, 14, 15,
1506  15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1507  15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1508  15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1509  15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1510 
1511  15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1512  15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1513  15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1514  15, 15, 38, 780, 38, 41, 45, 41, 45, 44,
1515  218, 44, 65, 776, 65, 65, 65, 65, 65, 41,
1516  89, 94, 89, 94, 44, 45, 92, 38, 92, 41,
1517  44, 91, 65, 91, 775, 775, 218, 61, 773, 61,
1518  61, 61, 61, 61, 89, 41, 219, 91, 771, 765,
1519  44, 45, 94, 38, 92, 41, 44, 49, 65, 49,
1520  49, 49, 49, 49, 49, 49, 49, 49, 61, 49,
1521 
1522  89, 759, 219, 91, 49, 49, 49, 49, 94, 145,
1523  92, 49, 49, 227, 229, 230, 49, 67, 743, 67,
1524  67, 67, 67, 67, 61, 82, 49, 82, 82, 82,
1525  82, 82, 145, 742, 720, 80, 80, 49, 49, 227,
1526  229, 230, 49, 716, 80, 67, 80, 80, 80, 80,
1527  80, 83, 49, 83, 83, 83, 83, 83, 145, 49,
1528  56, 643, 56, 56, 56, 56, 56, 56, 56, 56,
1529  56, 67, 56, 56, 56, 56, 56, 56, 56, 56,
1530  56, 58, 640, 58, 58, 58, 58, 58, 58, 58,
1531  58, 58, 263, 58, 58, 58, 58, 58, 58, 58,
1532 
1533  58, 58, 63, 636, 63, 63, 63, 63, 63, 634,
1534  87, 66, 87, 66, 66, 66, 66, 66, 263, 633,
1535  86, 266, 86, 630, 618, 66, 68, 63, 68, 68,
1536  68, 68, 68, 603, 69, 66, 69, 69, 69, 69,
1537  69, 68, 86, 593, 95, 87, 95, 266, 93, 69,
1538  93, 66, 588, 63, 64, 69, 64, 64, 64, 64,
1539  64, 66, 587, 93, 267, 64, 586, 68, 86, 64,
1540  575, 87, 95, 64, 70, 69, 70, 70, 70, 70,
1541  70, 69, 102, 515, 102, 102, 102, 102, 102, 93,
1542  267, 64, 127, 70, 127, 64, 103, 103, 95, 64,
1543 
1544  140, 140, 140, 140, 140, 103, 758, 103, 103, 103,
1545  103, 103, 104, 758, 104, 104, 104, 104, 104, 70,
1546  105, 127, 105, 105, 105, 105, 105, 106, 114, 106,
1547  106, 106, 106, 106, 114, 118, 122, 114, 122, 122,
1548  122, 122, 122, 118, 134, 161, 893, 127, 745, 745,
1549  118, 745, 134, 893, 114, 129, 123, 129, 512, 134,
1550  114, 161, 508, 114, 123, 507, 123, 123, 123, 123,
1551  123, 123, 124, 500, 124, 124, 124, 124, 124, 125,
1552  129, 125, 125, 125, 125, 125, 126, 161, 126, 126,
1553  126, 126, 126, 130, 131, 130, 131, 141, 141, 141,
1554 
1555  141, 141, 143, 146, 147, 131, 129, 148, 151, 130,
1556  142, 142, 142, 142, 142, 490, 151, 156, 156, 156,
1557  156, 156, 779, 151, 779, 130, 146, 147, 480, 143,
1558  148, 131, 461, 401, 162, 130, 157, 157, 157, 157,
1559  157, 158, 158, 158, 158, 158, 159, 159, 159, 159,
1560  159, 130, 146, 147, 163, 143, 148, 162, 167, 171,
1561  398, 171, 171, 171, 171, 171, 167, 172, 163, 782,
1562  180, 782, 180, 167, 268, 172, 163, 172, 172, 172,
1563  172, 172, 172, 162, 173, 180, 173, 173, 173, 173,
1564  173, 394, 392, 174, 163, 174, 174, 174, 174, 174,
1565 
1566  268, 175, 163, 175, 175, 175, 175, 175, 181, 213,
1567  181, 180, 182, 183, 182, 183, 184, 213, 184, 185,
1568  186, 185, 186, 187, 213, 187, 387, 188, 269, 188,
1569  214, 184, 213, 216, 270, 181, 216, 221, 187, 221,
1570  182, 228, 183, 228, 185, 188, 214, 271, 186, 272,
1571  284, 864, 188, 864, 269, 221, 214, 184, 213, 216,
1572  270, 181, 216, 879, 187, 879, 182, 228, 183, 228,
1573  185, 188, 214, 271, 186, 272, 284, 200, 188, 200,
1574  200, 200, 200, 200, 201, 285, 201, 201, 201, 201,
1575  201, 205, 380, 205, 205, 205, 205, 205, 222, 286,
1576 
1577  222, 222, 222, 222, 222, 222, 222, 222, 222, 337,
1578  222, 285, 892, 335, 892, 222, 222, 222, 222, 298,
1579  299, 300, 222, 222, 322, 286, 233, 222, 233, 233,
1580  233, 233, 233, 301, 314, 283, 234, 222, 234, 234,
1581  234, 234, 234, 283, 321, 298, 299, 300, 222, 222,
1582  283, 319, 240, 222, 240, 240, 240, 240, 240, 301,
1583  314, 315, 242, 222, 242, 242, 242, 242, 242, 306,
1584  222, 226, 305, 226, 226, 226, 226, 226, 226, 226,
1585  226, 226, 240, 226, 316, 303, 288, 315, 226, 226,
1586  226, 226, 242, 241, 288, 241, 241, 241, 241, 241,
1587 
1588  243, 288, 243, 243, 243, 243, 243, 960, 240, 960,
1589  316, 257, 243, 257, 257, 257, 257, 257, 242, 241,
1590  312, 312, 312, 312, 302, 245, 291, 245, 245, 245,
1591  245, 245, 302, 308, 308, 308, 308, 308, 243, 302,
1592  245, 289, 276, 226, 236, 241, 236, 236, 236, 236,
1593  236, 236, 236, 236, 236, 274, 236, 328, 328, 328,
1594  328, 236, 236, 236, 236, 237, 245, 237, 237, 237,
1595  237, 237, 237, 237, 237, 237, 317, 237, 237, 237,
1596  237, 237, 237, 237, 237, 237, 239, 239, 239, 239,
1597  239, 239, 239, 239, 239, 239, 239, 273, 239, 318,
1598 
1599  256, 254, 317, 239, 239, 239, 239, 318, 329, 330,
1600  239, 239, 331, 333, 318, 239, 346, 244, 239, 244,
1601  244, 244, 244, 244, 347, 239, 239, 251, 348, 251,
1602  251, 251, 251, 251, 329, 330, 239, 239, 331, 333,
1603  334, 239, 346, 350, 239, 351, 251, 353, 334, 244,
1604  347, 239, 239, 246, 348, 334, 751, 751, 239, 751,
1605  961, 246, 961, 246, 246, 246, 246, 246, 246, 350,
1606  253, 351, 251, 353, 238, 244, 246, 247, 354, 247,
1607  247, 247, 247, 247, 309, 309, 309, 309, 309, 248,
1608  247, 248, 248, 248, 248, 248, 311, 311, 311, 311,
1609 
1610  311, 361, 246, 362, 354, 249, 247, 249, 249, 249,
1611  249, 249, 767, 767, 248, 767, 247, 250, 235, 250,
1612  250, 250, 250, 250, 378, 231, 378, 361, 249, 362,
1613  250, 249, 247, 252, 363, 252, 252, 252, 252, 252,
1614  248, 258, 378, 258, 258, 258, 258, 258, 324, 324,
1615  324, 324, 324, 224, 249, 223, 250, 249, 206, 478,
1616  363, 478, 261, 252, 261, 261, 261, 261, 261, 277,
1617  364, 277, 277, 277, 277, 277, 278, 478, 278, 278,
1618  278, 278, 278, 325, 325, 325, 325, 325, 281, 252,
1619  281, 281, 281, 281, 281, 292, 364, 292, 292, 292,
1620 
1621  292, 292, 293, 294, 293, 293, 293, 293, 293, 785,
1622  785, 294, 785, 294, 294, 294, 294, 294, 294, 296,
1623  365, 296, 296, 296, 296, 296, 327, 327, 327, 327,
1624  327, 338, 203, 338, 338, 338, 338, 338, 339, 340,
1625  339, 339, 339, 339, 339, 366, 365, 340, 367, 340,
1626  340, 340, 340, 340, 340, 342, 367, 342, 342, 342,
1627  342, 342, 368, 367, 369, 370, 372, 373, 371, 375,
1628  367, 366, 371, 374, 374, 376, 396, 382, 396, 396,
1629  396, 396, 396, 791, 791, 198, 791, 383, 368, 383,
1630  369, 370, 372, 373, 371, 375, 367, 384, 371, 374,
1631 
1632  374, 376, 379, 382, 379, 379, 379, 379, 379, 379,
1633  379, 379, 379, 383, 379, 383, 385, 389, 390, 379,
1634  379, 379, 379, 384, 391, 393, 379, 379, 390, 427,
1635  397, 379, 397, 397, 397, 397, 397, 196, 428, 407,
1636  429, 379, 385, 389, 390, 407, 195, 407, 194, 191,
1637  391, 393, 379, 379, 390, 427, 412, 379, 412, 412,
1638  412, 412, 412, 408, 428, 407, 429, 379, 178, 170,
1639  408, 407, 408, 407, 379, 381, 169, 381, 381, 381,
1640  381, 381, 381, 381, 381, 381, 168, 381, 160, 408,
1641  409, 412, 381, 381, 381, 381, 408, 409, 408, 409,
1642 
1643  409, 410, 411, 410, 411, 411, 411, 411, 411, 425,
1644  410, 425, 425, 425, 425, 425, 409, 412, 431, 432,
1645  411, 155, 591, 409, 591, 409, 409, 410, 413, 410,
1646  413, 413, 413, 413, 413, 425, 410, 433, 434, 154,
1647  591, 153, 152, 413, 431, 432, 411, 381, 386, 386,
1648  386, 386, 386, 386, 386, 386, 386, 386, 386, 144,
1649  386, 425, 138, 433, 434, 386, 386, 386, 386, 413,
1650  435, 436, 386, 386, 437, 438, 440, 386, 441, 414,
1651  386, 414, 414, 414, 414, 414, 442, 386, 386, 415,
1652  443, 415, 415, 415, 415, 415, 435, 436, 386, 386,
1653 
1654  437, 438, 440, 386, 441, 137, 386, 476, 415, 444,
1655  414, 445, 442, 386, 386, 476, 443, 446, 136, 135,
1656  386, 399, 476, 399, 399, 399, 399, 399, 399, 399,
1657  399, 399, 121, 399, 415, 444, 414, 445, 399, 399,
1658  399, 399, 400, 446, 400, 400, 400, 400, 400, 400,
1659  400, 400, 400, 447, 400, 400, 400, 400, 400, 400,
1660  400, 400, 400, 403, 403, 403, 403, 403, 403, 403,
1661  403, 403, 403, 403, 120, 403, 119, 113, 449, 447,
1662  403, 403, 403, 403, 450, 451, 452, 403, 403, 108,
1663  453, 456, 403, 417, 416, 403, 416, 416, 416, 416,
1664 
1665  416, 417, 403, 403, 449, 459, 462, 416, 417, 101,
1666  450, 451, 452, 403, 403, 417, 453, 456, 403, 986,
1667  418, 403, 418, 418, 418, 418, 418, 986, 403, 403,
1668  100, 459, 462, 416, 986, 403, 404, 404, 99, 98,
1669  463, 417, 464, 419, 418, 419, 419, 419, 419, 419,
1670  420, 465, 420, 420, 420, 420, 420, 466, 467, 404,
1671  404, 468, 469, 470, 404, 419, 463, 404, 464, 85,
1672  418, 78, 75, 471, 404, 404, 74, 465, 472, 73,
1673  420, 473, 60, 466, 467, 404, 404, 468, 469, 470,
1674  404, 419, 421, 404, 421, 421, 421, 421, 421, 471,
1675 
1676  404, 404, 405, 405, 472, 421, 420, 473, 422, 421,
1677  422, 422, 422, 422, 422, 53, 474, 482, 483, 422,
1678  483, 484, 485, 487, 489, 405, 405, 491, 502, 488,
1679  405, 421, 50, 405, 48, 421, 29, 26, 25, 488,
1680  405, 405, 474, 482, 483, 422, 483, 484, 485, 487,
1681  489, 405, 405, 491, 502, 488, 405, 24, 424, 405,
1682  424, 424, 424, 424, 424, 488, 405, 405, 406, 406,
1683  21, 423, 503, 423, 423, 423, 423, 423, 504, 426,
1684  0, 426, 426, 426, 426, 426, 534, 548, 424, 424,
1685  549, 406, 406, 423, 496, 521, 406, 426, 503, 406,
1686 
1687  496, 406, 496, 521, 504, 521, 406, 406, 0, 550,
1688  0, 0, 534, 548, 424, 424, 549, 406, 406, 423,
1689  496, 521, 406, 426, 551, 406, 496, 406, 496, 521,
1690  552, 521, 406, 406, 479, 550, 479, 479, 479, 479,
1691  479, 479, 479, 479, 479, 0, 479, 0, 497, 553,
1692  551, 479, 479, 479, 479, 497, 552, 497, 479, 479,
1693  498, 0, 499, 479, 499, 554, 556, 498, 0, 498,
1694  498, 499, 533, 479, 497, 553, 0, 0, 0, 557,
1695  533, 497, 558, 497, 479, 479, 498, 533, 499, 479,
1696  499, 554, 556, 498, 533, 498, 498, 499, 510, 479,
1697 
1698  510, 510, 510, 510, 510, 557, 479, 481, 558, 481,
1699  481, 481, 481, 481, 481, 481, 481, 481, 0, 481,
1700  533, 0, 0, 0, 481, 481, 481, 481, 511, 0,
1701  511, 511, 511, 511, 511, 517, 516, 516, 523, 517,
1702  518, 0, 517, 0, 517, 519, 518, 519, 518, 523,
1703  559, 523, 519, 528, 0, 528, 528, 528, 528, 528,
1704  0, 517, 0, 0, 523, 517, 518, 516, 517, 516,
1705  517, 519, 518, 519, 518, 523, 559, 523, 519, 481,
1706  486, 486, 486, 486, 486, 486, 486, 486, 486, 486,
1707  486, 522, 486, 516, 0, 516, 0, 486, 486, 486,
1708 
1709  486, 561, 562, 520, 486, 486, 520, 563, 520, 486,
1710  564, 566, 486, 520, 524, 525, 524, 525, 567, 486,
1711  486, 522, 524, 522, 525, 568, 0, 561, 562, 520,
1712  486, 486, 520, 563, 520, 486, 564, 566, 486, 520,
1713  524, 525, 524, 525, 567, 486, 486, 522, 524, 522,
1714  525, 568, 486, 492, 492, 492, 492, 492, 492, 492,
1715  492, 492, 492, 492, 0, 492, 0, 560, 571, 573,
1716  492, 492, 492, 492, 526, 574, 526, 492, 492, 560,
1717  526, 576, 492, 0, 527, 492, 527, 527, 527, 527,
1718  527, 577, 492, 492, 571, 573, 578, 579, 580, 0,
1719 
1720  526, 574, 526, 492, 492, 560, 526, 576, 492, 527,
1721  537, 492, 537, 537, 537, 537, 537, 577, 492, 492,
1722  581, 537, 578, 579, 580, 492, 493, 493, 529, 529,
1723  529, 529, 529, 529, 529, 527, 530, 582, 530, 530,
1724  530, 530, 530, 0, 0, 0, 581, 537, 583, 493,
1725  493, 584, 585, 530, 493, 595, 531, 493, 531, 531,
1726  531, 531, 531, 582, 493, 493, 532, 0, 532, 532,
1727  532, 532, 532, 0, 583, 493, 493, 584, 585, 530,
1728  493, 595, 0, 493, 0, 531, 596, 597, 596, 0,
1729  493, 493, 494, 494, 0, 535, 532, 535, 535, 535,
1730 
1731  535, 535, 589, 536, 0, 536, 536, 536, 536, 536,
1732  589, 531, 596, 597, 596, 494, 494, 589, 598, 600,
1733  494, 602, 532, 494, 589, 535, 604, 613, 614, 615,
1734  494, 494, 0, 538, 536, 538, 538, 538, 538, 538,
1735  0, 494, 494, 632, 598, 600, 494, 602, 538, 494,
1736  589, 535, 604, 613, 614, 615, 494, 494, 495, 495,
1737  536, 660, 539, 0, 539, 539, 539, 539, 539, 632,
1738  0, 0, 0, 541, 538, 541, 541, 541, 541, 541,
1739  661, 495, 495, 601, 541, 610, 495, 660, 675, 495,
1740  539, 495, 610, 601, 610, 676, 495, 495, 544, 677,
1741 
1742  544, 544, 544, 544, 544, 0, 661, 495, 495, 601,
1743  541, 610, 495, 678, 675, 495, 539, 495, 610, 601,
1744  610, 676, 495, 495, 513, 677, 513, 513, 513, 513,
1745  513, 513, 513, 513, 513, 0, 513, 0, 717, 678,
1746  717, 513, 513, 513, 513, 514, 0, 514, 514, 514,
1747  514, 514, 514, 514, 514, 514, 717, 514, 514, 514,
1748  514, 514, 514, 514, 514, 514, 540, 0, 540, 540,
1749  540, 540, 540, 542, 0, 542, 542, 542, 542, 542,
1750  543, 611, 543, 543, 543, 543, 543, 545, 611, 0,
1751  611, 611, 542, 572, 540, 545, 679, 545, 545, 545,
1752 
1753  545, 545, 545, 572, 609, 681, 682, 611, 543, 629,
1754  609, 629, 609, 572, 611, 629, 611, 611, 542, 572,
1755  540, 638, 679, 638, 638, 638, 638, 638, 0, 572,
1756  609, 681, 682, 0, 543, 629, 609, 629, 609, 572,
1757  592, 629, 592, 592, 592, 592, 592, 592, 592, 592,
1758  592, 0, 592, 0, 612, 683, 612, 592, 592, 592,
1759  592, 684, 685, 612, 592, 592, 620, 619, 619, 592,
1760  620, 686, 0, 620, 0, 620, 627, 621, 627, 592,
1761  612, 683, 612, 621, 627, 621, 0, 684, 685, 612,
1762  592, 592, 620, 0, 0, 592, 620, 686, 619, 620,
1763 
1764  619, 620, 627, 621, 627, 592, 0, 625, 0, 621,
1765  627, 621, 592, 594, 0, 594, 594, 594, 594, 594,
1766  594, 594, 594, 594, 619, 594, 619, 622, 0, 622,
1767  594, 594, 594, 594, 622, 623, 624, 625, 623, 625,
1768  623, 626, 646, 687, 624, 623, 624, 628, 646, 628,
1769  646, 688, 626, 622, 626, 622, 628, 689, 690, 0,
1770  622, 623, 624, 625, 623, 625, 623, 626, 646, 687,
1771  624, 623, 624, 628, 646, 628, 646, 688, 626, 0,
1772  626, 691, 628, 689, 690, 594, 599, 599, 599, 599,
1773  599, 599, 599, 599, 599, 599, 599, 0, 599, 0,
1774 
1775  0, 0, 692, 599, 599, 599, 599, 691, 694, 644,
1776  599, 599, 644, 696, 644, 599, 697, 639, 599, 639,
1777  639, 639, 639, 639, 698, 599, 599, 645, 692, 645,
1778  0, 645, 0, 0, 694, 644, 599, 599, 644, 696,
1779  644, 599, 697, 0, 599, 0, 0, 647, 699, 700,
1780  698, 599, 599, 645, 647, 645, 647, 645, 599, 605,
1781  605, 605, 605, 605, 605, 605, 605, 605, 605, 605,
1782  651, 605, 648, 647, 699, 700, 605, 605, 605, 605,
1783  647, 702, 647, 605, 605, 650, 703, 650, 605, 650,
1784  652, 605, 652, 648, 704, 648, 652, 705, 605, 605,
1785 
1786  651, 653, 651, 653, 706, 867, 867, 702, 867, 605,
1787  605, 650, 703, 650, 605, 650, 652, 605, 652, 648,
1788  704, 648, 652, 705, 605, 605, 651, 653, 651, 653,
1789  706, 605, 606, 606, 654, 707, 654, 654, 654, 654,
1790  654, 656, 708, 656, 656, 656, 656, 656, 657, 0,
1791  657, 657, 657, 657, 657, 606, 606, 709, 656, 710,
1792  606, 707, 654, 606, 711, 659, 715, 657, 708, 721,
1793  606, 606, 658, 659, 658, 658, 658, 658, 658, 723,
1794  659, 606, 606, 709, 656, 710, 606, 659, 654, 606,
1795  711, 0, 715, 657, 721, 0, 606, 606, 607, 607,
1796 
1797  662, 723, 662, 662, 662, 662, 662, 0, 772, 817,
1798  0, 0, 666, 659, 666, 666, 666, 666, 666, 662,
1799  721, 607, 607, 666, 0, 772, 607, 723, 663, 607,
1800  663, 663, 663, 663, 663, 817, 607, 607, 880, 880,
1801  0, 880, 663, 0, 0, 662, 730, 607, 607, 666,
1802  726, 772, 607, 724, 665, 607, 665, 665, 665, 665,
1803  665, 739, 607, 607, 608, 608, 728, 664, 663, 664,
1804  664, 664, 664, 664, 724, 667, 674, 667, 667, 667,
1805  667, 667, 730, 665, 674, 726, 728, 608, 608, 664,
1806  818, 674, 608, 739, 0, 608, 667, 608, 674, 741,
1807 
1808  724, 819, 608, 608, 740, 820, 0, 0, 730, 665,
1809  0, 726, 728, 608, 608, 664, 818, 821, 608, 739,
1810  741, 608, 667, 608, 674, 0, 740, 819, 608, 608,
1811  641, 820, 641, 641, 641, 641, 641, 641, 641, 641,
1812  641, 0, 641, 821, 0, 0, 741, 641, 641, 641,
1813  641, 642, 740, 642, 642, 642, 642, 642, 642, 642,
1814  642, 642, 0, 642, 642, 642, 642, 642, 642, 642,
1815  642, 642, 655, 0, 655, 655, 655, 655, 655, 886,
1816  886, 0, 886, 0, 668, 655, 668, 668, 668, 668,
1817  668, 902, 902, 0, 902, 655, 670, 668, 670, 670,
1818 
1819  670, 670, 670, 0, 669, 655, 669, 669, 669, 669,
1820  669, 655, 722, 727, 671, 670, 671, 671, 671, 671,
1821  671, 655, 672, 668, 672, 672, 672, 672, 672, 669,
1822  673, 655, 673, 673, 673, 673, 673, 718, 727, 0,
1823  722, 670, 722, 733, 733, 774, 733, 756, 727, 734,
1824  734, 0, 734, 735, 735, 669, 735, 718, 718, 803,
1825  747, 747, 718, 747, 727, 810, 722, 733, 722, 795,
1826  774, 733, 718, 811, 727, 756, 738, 738, 735, 738,
1827  734, 803, 734, 718, 718, 747, 736, 736, 718, 736,
1828  0, 737, 737, 733, 737, 810, 774, 733, 718, 725,
1829 
1830  725, 756, 725, 795, 735, 0, 734, 803, 734, 811,
1831  736, 747, 0, 823, 824, 737, 738, 761, 761, 793,
1832  761, 810, 725, 725, 0, 737, 0, 725, 0, 795,
1833  725, 746, 746, 0, 746, 811, 736, 725, 725, 823,
1834  824, 737, 738, 0, 748, 748, 0, 748, 725, 725,
1835  793, 737, 761, 725, 796, 746, 725, 750, 750, 746,
1836  750, 794, 800, 725, 725, 731, 731, 0, 731, 749,
1837  749, 797, 749, 0, 752, 752, 793, 752, 761, 796,
1838  750, 746, 748, 769, 769, 746, 769, 800, 731, 731,
1839  0, 825, 794, 731, 752, 0, 731, 749, 753, 753,
1840 
1841  826, 753, 797, 731, 731, 796, 750, 749, 748, 754,
1842  754, 0, 754, 800, 731, 731, 769, 825, 794, 731,
1843  752, 802, 731, 749, 755, 755, 826, 755, 797, 731,
1844  731, 760, 760, 749, 760, 762, 762, 753, 762, 0,
1845  763, 763, 769, 763, 764, 764, 802, 764, 827, 754,
1846  804, 828, 768, 768, 764, 768, 0, 801, 830, 760,
1847  762, 755, 831, 753, 763, 766, 766, 0, 766, 0,
1848  777, 804, 802, 0, 827, 754, 777, 828, 777, 777,
1849  777, 777, 777, 0, 830, 760, 762, 755, 831, 768,
1850  763, 783, 783, 778, 783, 801, 0, 804, 0, 778,
1851 
1852  766, 778, 778, 778, 778, 778, 784, 784, 781, 784,
1853  787, 787, 806, 787, 781, 768, 781, 781, 781, 781,
1854  781, 801, 786, 786, 783, 786, 766, 799, 805, 799,
1855  788, 788, 786, 788, 808, 799, 809, 784, 787, 807,
1856  788, 816, 799, 790, 790, 832, 790, 806, 0, 799,
1857  783, 833, 815, 834, 815, 835, 805, 809, 829, 836,
1858  815, 837, 816, 784, 787, 790, 838, 815, 807, 808,
1859  829, 832, 839, 806, 815, 799, 840, 833, 841, 834,
1860  843, 835, 805, 809, 849, 836, 850, 837, 816, 857,
1861  859, 790, 838, 853, 807, 808, 829, 852, 839, 852,
1862 
1863  815, 856, 840, 858, 841, 860, 843, 860, 931, 874,
1864  849, 859, 850, 853, 853, 852, 863, 857, 853, 857,
1865  861, 862, 865, 0, 0, 858, 856, 860, 853, 0,
1866  869, 869, 0, 869, 931, 875, 863, 859, 932, 853,
1867  853, 874, 0, 857, 853, 857, 862, 868, 868, 876,
1868  868, 858, 856, 860, 853, 861, 862, 875, 865, 0,
1869  0, 869, 863, 869, 932, 870, 870, 874, 870, 933,
1870  876, 868, 862, 0, 907, 868, 871, 871, 0, 871,
1871  891, 861, 862, 875, 865, 872, 872, 869, 872, 869,
1872  870, 873, 873, 0, 873, 933, 876, 868, 918, 907,
1873 
1874  871, 868, 0, 934, 881, 881, 0, 881, 891, 872,
1875  0, 882, 882, 905, 882, 0, 870, 883, 883, 872,
1876  883, 884, 884, 0, 884, 907, 871, 0, 881, 934,
1877  905, 873, 881, 0, 891, 872, 882, 885, 885, 918,
1878  885, 887, 887, 935, 887, 872, 0, 936, 0, 884,
1879  888, 888, 0, 888, 881, 883, 905, 873, 881, 884,
1880  885, 887, 882, 889, 889, 918, 889, 890, 890, 935,
1881  890, 895, 895, 936, 895, 884, 896, 896, 919, 896,
1882  937, 883, 1060, 938, 0, 884, 885, 887, 939, 888,
1883  1060, 897, 897, 0, 897, 898, 898, 1060, 898, 895,
1884 
1885  919, 940, 941, 889, 890, 0, 937, 899, 899, 938,
1886  899, 896, 0, 0, 939, 888, 897, 899, 0, 898,
1887  901, 901, 0, 901, 0, 895, 919, 940, 941, 889,
1888  890, 903, 903, 0, 903, 0, 942, 896, 904, 904,
1889  0, 904, 897, 908, 908, 898, 908, 909, 909, 943,
1890  909, 910, 910, 0, 910, 901, 911, 911, 0, 911,
1891  912, 912, 942, 912, 913, 913, 911, 913, 903, 915,
1892  915, 904, 915, 944, 913, 943, 908, 0, 909, 916,
1893  916, 901, 916, 922, 922, 0, 922, 0, 912, 923,
1894  923, 915, 923, 945, 903, 925, 925, 904, 925, 944,
1895 
1896  926, 926, 908, 926, 909, 927, 927, 922, 927, 923,
1897  928, 928, 948, 928, 912, 949, 950, 915, 951, 945,
1898  953, 954, 955, 925, 956, 926, 958, 962, 962, 969,
1899  962, 0, 974, 922, 928, 923, 959, 0, 948, 0,
1900  976, 949, 950, 927, 951, 0, 953, 954, 955, 925,
1901  956, 926, 958, 0, 977, 969, 959, 959, 974, 0,
1902  928, 959, 963, 963, 978, 963, 976, 964, 964, 927,
1903  964, 959, 965, 965, 0, 965, 966, 966, 979, 966,
1904  977, 980, 959, 959, 983, 967, 967, 959, 967, 984,
1905  978, 985, 964, 987, 988, 989, 990, 959, 991, 1002,
1906 
1907  966, 1003, 995, 995, 979, 995, 963, 980, 996, 996,
1908  983, 996, 1004, 997, 997, 984, 997, 985, 964, 987,
1909  988, 989, 990, 1005, 991, 1002, 966, 1003, 1006, 1007,
1910  1008, 1009, 963, 1010, 1011, 997, 0, 1012, 1004, 1009,
1911  1014, 1017, 1017, 1018, 1017, 1019, 1009, 1020, 1021, 1005,
1912  1022, 1023, 1024, 1025, 1006, 1007, 1008, 1026, 1028, 1010,
1913  1011, 997, 1009, 1012, 1029, 1030, 1014, 1031, 1031, 1018,
1914  1031, 1019, 1032, 1020, 1021, 1017, 1022, 1023, 1024, 1025,
1915  1033, 1035, 1036, 1026, 1028, 1037, 1038, 1040, 1009, 1041,
1916  1029, 1030, 1043, 1044, 1044, 1045, 1044, 1047, 1032, 1048,
1917 
1918  1031, 1017, 1052, 1053, 1054, 1056, 1033, 1035, 1036, 1057,
1919  1058, 1037, 1038, 1040, 1063, 1041, 1044, 1067, 1043, 1055,
1920  1055, 1045, 1055, 1047, 1061, 1048, 1031, 1068, 1052, 1053,
1921  1054, 1056, 1061, 1065, 1069, 1057, 1058, 1066, 1071, 1061,
1922  1063, 1065, 1044, 1067, 1072, 1066, 1073, 1074, 1065, 1075,
1923  1077, 1078, 1066, 1068, 1079, 1065, 0, 0, 0, 0,
1924  1069, 0, 0, 0, 1071, 0, 0, 0, 1066, 0,
1925  1072, 0, 1073, 1074, 0, 1075, 1077, 1078, 0, 0,
1926  1079, 1065, 0, 0, 0, 0, 0, 0, 0, 0,
1927  0, 0, 0, 0, 1066, 1082, 1082, 1082, 1082, 1082,
1928 
1929  1082, 1082, 1082, 1082, 1083, 1083, 1083, 1083, 1083, 1083,
1930  1083, 1083, 1083, 1084, 1084, 1084, 1084, 1084, 1084, 1084,
1931  1084, 1084, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085,
1932  1085, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086,
1933  1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1088,
1934  0, 1088, 1088, 1088, 1088, 1088, 1088, 1088, 1089, 0,
1935  1089, 1089, 1089, 1089, 1089, 1089, 1089, 1090, 1090, 1090,
1936  1090, 1091, 0, 1091, 1091, 1091, 1091, 1091, 1091, 1091,
1937  1092, 0, 1092, 1092, 1092, 1092, 1092, 1092, 1092, 1093,
1938  0, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1094, 0,
1939 
1940  1094, 1094, 1094, 1094, 1094, 1094, 1094, 1095, 0, 1095,
1941  1095, 1095, 1095, 1095, 1095, 1095, 1096, 0, 1096, 1096,
1942  1096, 1096, 1096, 1096, 1096, 1097, 0, 1097, 1097, 1097,
1943  1097, 1097, 1097, 1097, 1098, 1098, 1098, 1098, 1099, 0,
1944  1099, 1099, 1099, 1099, 1099, 1099, 1099, 1100, 0, 1100,
1945  1100, 1100, 1100, 1100, 1100, 1100, 1101, 1101, 1101, 1101,
1946  1102, 0, 1102, 1102, 1102, 1102, 1102, 1102, 1102, 1103,
1947  0, 1103, 1103, 1103, 1103, 1103, 1103, 1103, 1104, 1104,
1948  1104, 1104, 1105, 0, 1105, 1105, 1105, 1105, 1105, 1105,
1949  1105, 1106, 0, 1106, 1106, 1106, 1106, 1106, 1106, 1106,
1950 
1951  1107, 0, 1107, 1107, 0, 1107, 1107, 1107, 1107, 1108,
1952  1108, 1108, 1109, 0, 1109, 1109, 1109, 1109, 1109, 1109,
1953  1109, 1110, 0, 1110, 1110, 1110, 1110, 1110, 1110, 1110,
1954  1111, 0, 1111, 1111, 0, 1111, 1111, 1111, 1111, 1112,
1955  1112, 1112, 1113, 0, 1113, 1113, 1113, 1113, 1113, 1113,
1956  1113, 1114, 0, 1114, 1114, 1114, 1114, 1114, 1114, 1114,
1957  1115, 1115, 1115, 1115, 1116, 0, 1116, 1116, 1116, 1116,
1958  1116, 1116, 1116, 1117, 0, 1117, 1117, 1117, 1117, 1117,
1959  1117, 1117, 1118, 0, 1118, 1118, 1118, 1118, 1118, 1118,
1960  1118, 1119, 0, 1119, 1119, 1119, 1119, 1119, 1119, 1119,
1961 
1962  1120, 0, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1121,
1963  0, 1121, 1122, 0, 1122, 1122, 1122, 1122, 1122, 1122,
1964  1122, 1123, 0, 1123, 1123, 1123, 1123, 1123, 1123, 1123,
1965  1124, 0, 1124, 1124, 1124, 1124, 1124, 1124, 1124, 1125,
1966  0, 1125, 1125, 1125, 1125, 1125, 1125, 1125, 1126, 0,
1967  1126, 1126, 1126, 1126, 1126, 1126, 1126, 1127, 0, 1127,
1968  1127, 1127, 1127, 1127, 1127, 1127, 1128, 1128, 1128, 1128,
1969  1128, 1128, 1128, 1128, 1128, 1129, 0, 1129, 1129, 1129,
1970  1129, 1129, 1129, 1129, 1130, 0, 1130, 1130, 1130, 1130,
1971  1130, 1130, 1130, 1131, 0, 1131, 1132, 0, 1132, 1132,
1972 
1973  1132, 1132, 1132, 1132, 1132, 1133, 0, 1133, 1133, 1133,
1974  1133, 1133, 1133, 1133, 1134, 0, 1134, 1135, 0, 1135,
1975  1135, 1135, 1135, 1135, 1135, 1135, 1136, 0, 1136, 1136,
1976  1136, 1136, 1136, 1136, 1136, 1137, 0, 1137, 1138, 0,
1977  1138, 1138, 1138, 1138, 1138, 1138, 1138, 1139, 0, 1139,
1978  1139, 1139, 1139, 1139, 1139, 1139, 1140, 0, 1140, 1140,
1979  0, 1140, 1140, 1140, 1140, 1141, 0, 1141, 1142, 0,
1980  1142, 1142, 1142, 1142, 1142, 1142, 1142, 1143, 0, 1143,
1981  1143, 1143, 1143, 1143, 1143, 1143, 1144, 0, 1144, 1144,
1982  0, 1144, 1144, 1144, 1144, 1145, 0, 1145, 1146, 0,
1983 
1984  1146, 1146, 1146, 1146, 1146, 1146, 1146, 1147, 0, 1147,
1985  1147, 1147, 1147, 1147, 1147, 1147, 1148, 0, 1148, 1149,
1986  0, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1150, 0,
1987  1150, 1150, 1150, 1150, 1150, 1150, 1150, 1151, 0, 1151,
1988  1151, 1151, 1151, 1151, 1151, 1151, 1152, 0, 1152, 1152,
1989  1152, 1152, 1152, 1152, 1152, 1153, 0, 1153, 1153, 1153,
1990  1153, 1153, 1153, 1153, 1154, 0, 1154, 1155, 0, 1155,
1991  1155, 1155, 1155, 1155, 1155, 1155, 1156, 0, 1156, 1156,
1992  1156, 1156, 1156, 1156, 1156, 1157, 1157, 1157, 1157, 1157,
1993  1157, 1157, 1157, 1157, 1158, 0, 1158, 1158, 1158, 1158,
1994 
1995  1158, 1158, 1158, 1159, 0, 1159, 1159, 1159, 1159, 1159,
1996  1159, 1159, 1160, 0, 1160, 1160, 1160, 1160, 1160, 1160,
1997  1160, 1161, 0, 1161, 1161, 1161, 1161, 1161, 1161, 1161,
1998  1162, 0, 1162, 1163, 0, 1163, 1164, 0, 1164, 1164,
1999  1164, 1164, 1164, 1164, 1164, 1165, 0, 1165, 1165, 1165,
2000  1165, 1165, 1165, 1165, 1166, 1166, 1166, 1166, 1166, 1166,
2001  1166, 1166, 1166, 1167, 0, 1167, 1167, 1167, 1167, 1167,
2002  1167, 1167, 1168, 0, 1168, 1168, 1168, 1168, 1168, 1168,
2003  1168, 1169, 0, 1169, 1169, 1169, 1169, 1169, 1169, 1169,
2004  1170, 0, 1170, 1170, 1170, 1170, 1170, 1170, 1170, 1171,
2005 
2006  0, 1171, 1171, 1171, 1171, 1171, 1171, 1171, 1172, 0,
2007  1172, 1172, 1172, 1172, 1172, 1172, 1172, 1173, 1173, 1173,
2008  1173, 1173, 1173, 1173, 1173, 1173, 1174, 0, 1174, 1174,
2009  1174, 1174, 1174, 1174, 1174, 1175, 0, 1175, 1175, 1175,
2010  1175, 1175, 1175, 1175, 1176, 0, 1176, 1176, 1176, 1176,
2011  1176, 1176, 1176, 1177, 0, 1177, 1177, 1177, 1177, 1177,
2012  1177, 1177, 1178, 0, 0, 1178, 1179, 1179, 1179, 0,
2013  0, 1179, 1180, 0, 1180, 1180, 1180, 1180, 1180, 1180,
2014  1180, 1181, 0, 1181, 1181, 1181, 1181, 1181, 1181, 1181,
2015  1182, 0, 1182, 1182, 1182, 1182, 1182, 1182, 1182, 1081,
2016 
2017  1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
2018  1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
2019  1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
2020  1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
2021  1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
2022  1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
2023  1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081, 1081,
2024  1081, 1081, 1081
2025  } ;
2026 
2027 static yy_state_type yy_last_accepting_state;
2029 
2030 extern int pp_flex_debug;
2031 int pp_flex_debug = 0;
2032 
2033 /* The intent behind this definition is that it'll catch
2034  * any uses of REJECT which flex missed.
2035  */
2036 #define REJECT reject_used_but_not_detected
2037 #define yymore() yymore_used_but_not_detected
2038 #define YY_MORE_ADJ 0
2039 #define YY_RESTORE_YY_MORE_OFFSET
2040 char *pptext;
2041 #line 1 "pplex.l"
2042 /*
2043  Copyright (C) 2001-2012, 2014-2016 Free Software Foundation, Inc.
2044  Written by Keisuke Nishida, Roger While, Simon Sobisch
2045 
2046  This file is part of GnuCOBOL.
2047 
2048  The GnuCOBOL compiler is free software: you can redistribute it
2049  and/or modify it under the terms of the GNU General Public License
2050  as published by the Free Software Foundation, either version 3 of the
2051  License, or (at your option) any later version.
2052 
2053  GnuCOBOL is distributed in the hope that it will be useful,
2054  but WITHOUT ANY WARRANTY; without even the implied warranty of
2055  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2056  GNU General Public License for more details.
2057 
2058  You should have received a copy of the GNU General Public License
2059  along with GnuCOBOL. If not, see <http://www.gnu.org/licenses/>.
2060 */
2061 #line 52 "pplex.l"
2062 #undef YY_READ_BUF_SIZE
2063 #define YY_READ_BUF_SIZE 32768
2064 #undef YY_BUF_SIZE
2065 #define YY_BUF_SIZE 32768
2066 
2067 #define YY_SKIP_YYWRAP
2068 static int ppwrap (void) {
2069  return 1;
2070 }
2071 
2072 #define PPLEX_BUFF_LEN 512
2073 #define YY_INPUT(buf,result,max_size) result = ppinput (buf, max_size);
2074 #define ECHO fputs (pptext, ppout)
2075 
2076 #define YY_USER_INIT \
2077  if (!plexbuff1) { \
2078  plexbuff1 = cobc_malloc ((size_t)COB_SMALL_BUFF); \
2079  } \
2080  if (!plexbuff2) { \
2081  plexbuff2 = cobc_malloc ((size_t)COB_SMALL_BUFF); \
2082  } \
2083  requires_listing_line = 1; \
2084  comment_allowed = 1;
2085 
2086 #include "config.h"
2087 
2088 #include <stdio.h>
2089 #include <stdlib.h>
2090 #include <string.h>
2091 #ifdef HAVE_UNISTD_H
2092 #include <unistd.h>
2093 #else
2094 #define YY_NO_UNISTD_H 1
2095 #endif
2096 #include <ctype.h>
2097 #include <errno.h>
2098 #include <sys/stat.h>
2099 #include <sys/types.h>
2100 
2101 #define COB_IN_PPLEX 1
2102 #include "cobc.h"
2103 #include "ppparse.h"
2104 
2105 #define PLEX_COND_DEPTH 16
2106 
2107 struct copy_info {
2108  struct copy_info *next;
2109  const char *file;
2110  char *dname;
2112  YY_BUFFER_STATE buffer;
2113  int line;
2116 };
2117 
2118 struct plex_stack {
2119  unsigned int cmd;
2120  unsigned int skip;
2121  unsigned int cond;
2122  int line;
2123 };
2124 
2125 /* Global variables */
2126 
2127 
2128 /* Local variables */
2129 static char *plexbuff1 = NULL;
2130 static char *plexbuff2 = NULL;
2131 static size_t newline_count = 0;
2132 static size_t within_comment = 0;
2133 static size_t inside_bracket = 0;
2134 static size_t consecutive_quotation = 0;
2135 static size_t need_continuation = 0;
2136 static size_t buffer_overflow = 0;
2137 static size_t comment_allowed;
2138 static unsigned int plex_skip_input = 0;
2139 static unsigned int plex_nest_depth = 0;
2140 static int quotation_mark = 0;
2141 static int listing_line = 0;
2143 static int requires_new_line = 0;
2144 
2148 
2149 static struct cb_text_list *text_queue = NULL;
2150 
2151 static struct copy_info *copy_stack = NULL;
2152 
2154 
2155 /* Function declarations */
2156 static int ppinput (char *, const size_t);
2157 static void ppecho (const char *, const cob_u32_t,
2158  const int);
2159 static void switch_to_buffer (const int, const char *,
2160  const YY_BUFFER_STATE);
2161 static void check_listing (const char *, const unsigned int);
2162 static void skip_to_eol (void);
2163 static void display_to_eol (void);
2164 static void check_comments (const char *, const char *);
2165 
2166 
2167 
2168 
2169 
2170 
2171 
2172 
2173 
2174 
2175 #line 2175 "pplex.c"
2176 
2177 #define INITIAL 0
2178 #define COPY_STATE 1
2179 #define PSEUDO_STATE 2
2180 #define SOURCE_DIRECTIVE_STATE 3
2181 #define DEFINE_DIRECTIVE_STATE 4
2182 #define SET_DIRECTIVE_STATE 5
2183 #define TURN_DIRECTIVE_STATE 6
2184 #define IF_DIRECTIVE_STATE 7
2185 #define ELSE_DIRECTIVE_STATE 8
2186 #define ENDIF_DIRECTIVE_STATE 9
2187 
2188 #ifndef YY_NO_UNISTD_H
2189 /* Special case for "unistd.h", since it is non-ANSI. We include it way
2190  * down here because we want the user's section 1 to have been scanned first.
2191  * The user has a chance to override it with an option.
2192  */
2193 #include <unistd.h>
2194 #endif
2195 
2196 #ifndef YY_EXTRA_TYPE
2197 #define YY_EXTRA_TYPE void *
2198 #endif
2199 
2200 static int yy_init_globals (void );
2201 
2202 /* Accessor methods to globals.
2203  These are made visible to non-reentrant scanners for convenience. */
2204 
2205 int pplex_destroy (void );
2206 
2207 /* Macros after this point can all be overridden by user definitions in
2208  * section 1.
2209  */
2210 
2211 #ifndef YY_SKIP_YYWRAP
2212 #ifdef __cplusplus
2213 extern "C" int ppwrap (void );
2214 #else
2215 extern int ppwrap (void );
2216 #endif
2217 #endif
2218 
2219  static void yyunput (int c,char *buf_ptr );
2220 
2221 #ifndef yytext_ptr
2222 static void yy_flex_strncpy (char *,yyconst char *,int );
2223 #endif
2224 
2225 #ifdef YY_NEED_STRLEN
2226 static int yy_flex_strlen (yyconst char * );
2227 #endif
2228 
2229 #ifndef YY_NO_INPUT
2230 
2231 #ifdef __cplusplus
2232 static int yyinput (void );
2233 #else
2234 static int input (void );
2235 #endif
2236 
2237 #endif
2238 
2239  static int yy_start_stack_ptr = 0;
2240  static int yy_start_stack_depth = 0;
2241  static int *yy_start_stack = NULL;
2242 
2243  static void yy_push_state (int new_state );
2244 
2245  static void yy_pop_state (void );
2246 
2247 /* Amount of stuff to slurp up with each read. */
2248 #ifndef YY_READ_BUF_SIZE
2249 #ifdef __ia64__
2250 /* On IA-64, the buffer size is 16k, not 8k */
2251 #define YY_READ_BUF_SIZE 16384
2252 #else
2253 #define YY_READ_BUF_SIZE 8192
2254 #endif /* __ia64__ */
2255 #endif
2256 
2257 /* Copy whatever the last rule matched to the standard output. */
2258 #ifndef ECHO
2259 /* This used to be an fputs(), but since the string might contain NUL's,
2260  * we now use fwrite().
2261  */
2262 #define ECHO do { if (fwrite( pptext, ppleng, 1, ppout )) {} } while (0)
2263 #endif
2264 
2265 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
2266  * is returned in "result".
2267  */
2268 #ifndef YY_INPUT
2269 #define YY_INPUT(buf,result,max_size) \
2270  if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
2271  { \
2272  int c = '*'; \
2273  size_t n; \
2274  for ( n = 0; n < max_size && \
2275  (c = getc( ppin )) != EOF && c != '\n'; ++n ) \
2276  buf[n] = (char) c; \
2277  if ( c == '\n' ) \
2278  buf[n++] = (char) c; \
2279  if ( c == EOF && ferror( ppin ) ) \
2280  YY_FATAL_ERROR( "input in flex scanner failed" ); \
2281  result = n; \
2282  } \
2283  else \
2284  { \
2285  errno=0; \
2286  while ( (result = fread(buf, 1, max_size, ppin))==0 && ferror(ppin)) \
2287  { \
2288  if( errno != EINTR) \
2289  { \
2290  YY_FATAL_ERROR( "input in flex scanner failed" ); \
2291  break; \
2292  } \
2293  errno=0; \
2294  clearerr(ppin); \
2295  } \
2296  }\
2297 \
2298 
2299 #endif
2300 
2301 /* No semi-colon after return; correct usage is to write "yyterminate();" -
2302  * we don't want an extra ';' after the "return" because that will cause
2303  * some compilers to complain about unreachable statements.
2304  */
2305 #ifndef yyterminate
2306 #define yyterminate() return YY_NULL
2307 #endif
2308 
2309 /* Number of entries by which start-condition stack grows. */
2310 #ifndef YY_START_STACK_INCR
2311 #define YY_START_STACK_INCR 25
2312 #endif
2313 
2314 /* Report a fatal error. */
2315 #ifndef YY_FATAL_ERROR
2316 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
2317 #endif
2318 
2319 /* end tables serialization structures and prototypes */
2320 
2321 /* Default declaration of generated scanner - a define so the user can
2322  * easily add parameters.
2323  */
2324 #ifndef YY_DECL
2325 #define YY_DECL_IS_OURS 1
2326 
2327 extern int pplex (void);
2328 
2329 #define YY_DECL int pplex (void)
2330 #endif /* !YY_DECL */
2331 
2332 /* Code executed at the beginning of each rule, after pptext and ppleng
2333  * have been set up.
2334  */
2335 #ifndef YY_USER_ACTION
2336 #define YY_USER_ACTION
2337 #endif
2338 
2339 /* Code executed at the end of each rule. */
2340 #ifndef YY_BREAK
2341 #define YY_BREAK break;
2342 #endif
2343 
2344 #define YY_RULE_SETUP \
2345  if ( ppleng > 0 ) \
2346  YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
2347  (pptext[ppleng - 1] == '\n'); \
2348  YY_USER_ACTION
2349 
2350 /** The main scanner function which does all the work.
2351  */
2353 {
2354  register yy_state_type yy_current_state;
2355  register char *yy_cp, *yy_bp;
2356  register int yy_act;
2357 
2358  if ( !(yy_init) )
2359  {
2360  (yy_init) = 1;
2361 
2362 #ifdef YY_USER_INIT
2363  YY_USER_INIT;
2364 #endif
2365 
2366  if ( ! (yy_start) )
2367  (yy_start) = 1; /* first start state */
2368 
2369  if ( ! ppin )
2370  ppin = stdin;
2371 
2372  if ( ! ppout )
2373  ppout = stdout;
2374 
2375  if ( ! YY_CURRENT_BUFFER ) {
2379  }
2380 
2382  }
2383 
2384  {
2385 #line 174 "pplex.l"
2386 
2387 
2388 
2389 
2390 
2391 #line 2391 "pplex.c"
2392 
2393  while ( 1 ) /* loops until end-of-file is reached */
2394  {
2395  yy_cp = (yy_c_buf_p);
2396 
2397  /* Support of pptext. */
2398  *yy_cp = (yy_hold_char);
2399 
2400  /* yy_bp points to the position in yy_ch_buf of the start of
2401  * the current run.
2402  */
2403  yy_bp = yy_cp;
2404 
2405  yy_current_state = (yy_start);
2406  yy_current_state += YY_AT_BOL();
2407 yy_match:
2408  do
2409  {
2410  register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
2411  if ( yy_accept[yy_current_state] )
2412  {
2413  (yy_last_accepting_state) = yy_current_state;
2414  (yy_last_accepting_cpos) = yy_cp;
2415  }
2416  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2417  {
2418  yy_current_state = (int) yy_def[yy_current_state];
2419  if ( yy_current_state >= 1082 )
2420  yy_c = yy_meta[(unsigned int) yy_c];
2421  }
2422  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2423  ++yy_cp;
2424  }
2425  while ( yy_current_state != 1081 );
2426  yy_cp = (yy_last_accepting_cpos);
2427  yy_current_state = (yy_last_accepting_state);
2428 
2429 yy_find_action:
2430  yy_act = yy_accept[yy_current_state];
2431 
2433 
2434 do_action: /* This label is used only to access EOF actions. */
2435 
2436  switch ( yy_act )
2437  { /* beginning of action switch */
2438  case 0: /* must back up */
2439  /* undo the effects of YY_DO_BEFORE_ACTION */
2440  *yy_cp = (yy_hold_char);
2441  yy_cp = (yy_last_accepting_cpos);
2442  yy_current_state = (yy_last_accepting_state);
2443  goto yy_find_action;
2444 
2445 case 1:
2447 #line 179 "pplex.l"
2448 {
2449  #if 0 /* RXWRXW - Directive state */
2450  if (YY_START != DIRECTIVE_STATE && YY_START != SET_DIRECTIVE_STATE) {
2451  ppecho (" ", 0, 1);
2452  }
2453  #endif
2454 }
2455  YY_BREAK
2456 case 2:
2458 #line 187 "pplex.l"
2459 {
2460  /* Define here to preempt next debug rule below */
2462  return DEFINE_DIRECTIVE;
2463 }
2464  YY_BREAK
2465 case 3:
2467 #line 193 "pplex.l"
2468 {
2469  /* Define here to preempt next debug rule below */
2470  display_to_eol ();
2471 }
2472  YY_BREAK
2473 case 4:
2475 #line 198 "pplex.l"
2476 {
2477  /* OC extension for floating debug line */
2478  /* Remove line if debugging lines not activated */
2479  /* Otherwise ignore the directive part of the line */
2480  if (!cb_flag_debugging_line) {
2481  skip_to_eol ();
2482  }
2483 }
2484  YY_BREAK
2485 case 5:
2487 #line 207 "pplex.l"
2488 {
2490  return SOURCE_DIRECTIVE;
2491 }
2492  YY_BREAK
2493 case 6:
2495 #line 212 "pplex.l"
2496 {
2497  /* OC extension */
2499  return SET_DIRECTIVE;
2500 }
2501  YY_BREAK
2502 case 7:
2504 #line 218 "pplex.l"
2505 {
2507  return TURN_DIRECTIVE;
2508 }
2509  YY_BREAK
2510 case 8:
2512 #line 223 "pplex.l"
2513 {
2515  return IF_DIRECTIVE;
2516 }
2517  YY_BREAK
2518 case 9:
2519 #line 229 "pplex.l"
2520 case 10:
2522 #line 229 "pplex.l"
2523 {
2525  return ELIF_DIRECTIVE;
2526 }
2527  YY_BREAK
2528 case 11:
2530 #line 234 "pplex.l"
2531 {
2533  return ELSE_DIRECTIVE;
2534 }
2535  YY_BREAK
2536 case 12:
2538 #line 239 "pplex.l"
2539 {
2541  return ENDIF_DIRECTIVE;
2542 }
2543  YY_BREAK
2544 case 13:
2546 #line 244 "pplex.l"
2547 {
2548  if (warningopt) {
2549  cb_plex_warning (newline_count, _("Ignoring LEAP-SECOND directive"));
2550  }
2551  skip_to_eol ();
2552 }
2553  YY_BREAK
2554 case 14:
2555 /* rule 14 can match eol */
2557 #line 251 "pplex.l"
2558 {
2559  cb_plex_warning (newline_count, _("Ignoring empty directive"));
2560  unput ('\n');
2561 }
2562  YY_BREAK
2563 case 15:
2565 #line 256 "pplex.l"
2566 {
2567  char *s;
2568 
2569  s = strchr (pptext, '>');
2570  cb_plex_warning (newline_count, _("Ignoring invalid directive - '%s'"), s);
2571  skip_to_eol ();
2572 }
2573  YY_BREAK
2574 case 16:
2576 #line 264 "pplex.l"
2577 {
2578  cb_plex_warning (newline_count, _("Ignoring invalid directive"));
2579  skip_to_eol ();
2580 }
2581  YY_BREAK
2582 case 17:
2584 #line 269 "pplex.l"
2585 {
2586  display_to_eol ();
2587 }
2588  YY_BREAK
2589 case 18:
2591 #line 273 "pplex.l"
2592 {
2594  return SET_DIRECTIVE;
2595 }
2596  YY_BREAK
2597 case 19:
2599 #line 278 "pplex.l"
2600 {
2602  return IF_DIRECTIVE;
2603 }
2604  YY_BREAK
2605 case 20:
2606 #line 284 "pplex.l"
2607 case 21:
2609 #line 284 "pplex.l"
2610 {
2612  return ELIF_DIRECTIVE;
2613 }
2614  YY_BREAK
2615 case 22:
2617 #line 289 "pplex.l"
2618 {
2620  return ELSE_DIRECTIVE;
2621 }
2622  YY_BREAK
2623 case 23:
2625 #line 294 "pplex.l"
2626 {
2628  return ENDIF_DIRECTIVE;
2629 }
2630  YY_BREAK
2631 case 24:
2633 #line 299 "pplex.l"
2634 {
2635  char *s;
2636 
2637  s = strchr (pptext, '$');
2638  cb_plex_warning (newline_count, _("Ignoring invalid directive - '%s'"), s);
2639  skip_to_eol ();
2640 }
2641  YY_BREAK
2642 case 25:
2644 #line 307 "pplex.l"
2645 {
2646  /* Allow $ in column 7 for acucomment in fixed format */
2648  cb_plex_warning (newline_count, _("Spurious '$' detected - ignoring"));
2649  skip_to_eol ();
2650  }
2651 }
2652  YY_BREAK
2653 case 26:
2655 #line 315 "pplex.l"
2656 {
2657  cb_plex_warning (newline_count, _("Spurious '$' detected - ignoring"));
2658  skip_to_eol ();
2659 }
2660  YY_BREAK
2661 case 27:
2663 #line 320 "pplex.l"
2664 {
2665  cb_plex_warning (newline_count, _("PROCESS statement ignored"));
2666  skip_to_eol ();
2667 }
2668  YY_BREAK
2669 case 28:
2671 #line 325 "pplex.l"
2672 {
2674  return COPY;
2675 }
2676  YY_BREAK
2677 case 29:
2679 #line 330 "pplex.l"
2680 {
2682  return COPY;
2683 }
2684  YY_BREAK
2685 case 30:
2687 #line 335 "pplex.l"
2688 {
2690  return REPLACE;
2691 }
2692  YY_BREAK
2693 case 31:
2694 #line 341 "pplex.l"
2695 case 32:
2697 #line 341 "pplex.l"
2698 {
2699  /* Allow comment sentences/paragraphs */
2700  comment_allowed = 1;
2701  ppecho (pptext, 0, ppleng);
2702 }
2703  YY_BREAK
2704 case 33:
2706 #line 347 "pplex.l"
2707 {
2708  /* Allow comment sentences/paragraphs */
2709  comment_allowed = 1;
2710  ppecho (pptext, 0, ppleng);
2711 }
2712  YY_BREAK
2713 case 34:
2715 #line 353 "pplex.l"
2716 {
2717  /* Disallow comment sentences/paragraphs */
2718  comment_allowed = 0;
2719  ppecho (pptext, 0, ppleng);
2720 }
2721  YY_BREAK
2722 case 35:
2724 #line 359 "pplex.l"
2725 {
2726  /* Disallow comment sentences/paragraphs */
2727  comment_allowed = 0;
2728  ppecho (pptext, 0, ppleng);
2729 }
2730  YY_BREAK
2731 case 36:
2733 #line 365 "pplex.l"
2734 { check_comments ("AUTHOR", pptext); }
2735  YY_BREAK
2736 case 37:
2738 #line 366 "pplex.l"
2739 { check_comments ("DATE-WRITTEN", pptext); }
2740  YY_BREAK
2741 case 38:
2743 #line 367 "pplex.l"
2744 { check_comments ("DATE-MODIFIED", pptext); }
2745  YY_BREAK
2746 case 39:
2748 #line 368 "pplex.l"
2749 { check_comments ("DATE-COMPILED", pptext); }
2750  YY_BREAK
2751 case 40:
2753 #line 369 "pplex.l"
2754 { check_comments ("INSTALLATION", pptext); }
2755  YY_BREAK
2756 case 41:
2758 #line 370 "pplex.l"
2759 { check_comments ("REMARKS", pptext); }
2760  YY_BREAK
2761 case 42:
2763 #line 371 "pplex.l"
2764 { check_comments ("SECURITY", pptext); }
2765  YY_BREAK
2766 case 43:
2767 #line 374 "pplex.l"
2768 case 44:
2769 #line 375 "pplex.l"
2770 case 45:
2771 #line 376 "pplex.l"
2772 case 46:
2774 #line 376 "pplex.l"
2775 {
2776  /* These words are comments in various COBOL dialects */
2777  if (cb_verify (cb_eject_statement, pptext)) {
2778  /* Ignore */
2779  } else {
2780  ECHO;
2781  check_listing (pptext, 0);
2782  }
2783 }
2784  YY_BREAK
2785 case 47:
2786 #line 387 "pplex.l"
2787 case 48:
2789 #line 387 "pplex.l"
2790 {
2791  /* Pick up early - Also activates debugging lines */
2792  cb_flag_debugging_line = 1;
2793  ppecho (pptext, 0, ppleng);
2794 }
2795  YY_BREAK
2796 case 49:
2797 /* rule 49 can match eol */
2799 #line 393 "pplex.l"
2800 {
2801  ppecho ("\n", 0, 1);
2802  cb_source_line++;
2803 }
2804  YY_BREAK
2805 case 50:
2807 #line 398 "pplex.l"
2808 {
2809  ppecho (" ", 1U, 1);
2810 }
2811  YY_BREAK
2812 case 51:
2814 #line 402 "pplex.l"
2815 {
2816  if (inside_bracket) {
2817  ppecho (", ", 0, 2);
2818  } else {
2819  ppecho (" ", 1U, 1);
2820  }
2821 }
2822  YY_BREAK
2823 case 52:
2825 #line 410 "pplex.l"
2826 {
2827  inside_bracket++;
2828  ppecho ("(", 0, 1);
2829 }
2830  YY_BREAK
2831 case 53:
2833 #line 415 "pplex.l"
2834 {
2835  if (inside_bracket) {
2836  inside_bracket--;
2837  }
2838  ppecho (")", 0, 1);
2839 }
2840  YY_BREAK
2841 case 54:
2842 #line 423 "pplex.l"
2843 case 55:
2844 #line 424 "pplex.l"
2845 case 56:
2846 #line 425 "pplex.l"
2847 case 57:
2849 #line 425 "pplex.l"
2850 {
2851  ppecho (pptext, 0, ppleng);
2852 }
2853  YY_BREAK
2854 
2855 case 58:
2856 /* rule 58 can match eol */
2858 #line 430 "pplex.l"
2859 {
2860  BEGIN INITIAL;
2861  unput ('\n');
2862  return TERMINATOR;
2863  }
2864  YY_BREAK
2865 case 59:
2867 #line 435 "pplex.l"
2868 { return FORMAT; }
2869  YY_BREAK
2870 case 60:
2872 #line 436 "pplex.l"
2873 { return IS; }
2874  YY_BREAK
2875 case 61:
2877 #line 437 "pplex.l"
2878 { return FIXED; }
2879  YY_BREAK
2880 case 62:
2882 #line 438 "pplex.l"
2883 { return FREE; }
2884  YY_BREAK
2885 case 63:
2887 #line 439 "pplex.l"
2888 { /* ignore */ }
2889  YY_BREAK
2890 case 64:
2892 #line 440 "pplex.l"
2893 { }
2894  YY_BREAK
2895 
2896 
2897 case 65:
2898 /* rule 65 can match eol */
2900 #line 444 "pplex.l"
2901 {
2902  BEGIN INITIAL;
2903  unput ('\n');
2904  return TERMINATOR;
2905  }
2906  YY_BREAK
2907 case 66:
2909 #line 449 "pplex.l"
2910 {
2911  return CONSTANT;
2912  }
2913  YY_BREAK
2914 case 67:
2916 #line 452 "pplex.l"
2917 {
2918  return AS;
2919  }
2920  YY_BREAK
2921 case 68:
2923 #line 455 "pplex.l"
2924 {
2925  return OFF;
2926  }
2927  YY_BREAK
2928 case 69:
2930 #line 458 "pplex.l"
2931 {
2932  return OVERRIDE;
2933  }
2934  YY_BREAK
2935 case 70:
2937 #line 461 "pplex.l"
2938 {
2939  return PARAMETER;
2940  }
2941  YY_BREAK
2942 case 71:
2943 #line 465 "pplex.l"
2944 case 72:
2946 #line 465 "pplex.l"
2947 {
2948  pplval.s = cobc_plex_strdup (pptext);
2949  return LITERAL;
2950  }
2951  YY_BREAK
2952 case 73:
2954 #line 469 "pplex.l"
2955 {
2956  pplval.s = cobc_plex_strdup (pptext);
2957  return VARIABLE;
2958  }
2959  YY_BREAK
2960 case 74:
2962 #line 473 "pplex.l"
2963 { /* ignore */ }
2964  YY_BREAK
2965 case 75:
2967 #line 474 "pplex.l"
2968 { }
2969  YY_BREAK
2970 
2971 
2972 case 76:
2973 /* rule 76 can match eol */
2975 #line 478 "pplex.l"
2976 {
2977  BEGIN INITIAL;
2978  unput ('\n');
2979  return TERMINATOR;
2980  }
2981  YY_BREAK
2982 case 77:
2984 #line 483 "pplex.l"
2985 {
2986  return CONSTANT;
2987  }
2988  YY_BREAK
2989 case 78:
2991 #line 486 "pplex.l"
2992 {
2993  return SOURCEFORMAT;
2994  }
2995  YY_BREAK
2996 case 79:
2997 #line 490 "pplex.l"
2998 case 80:
3000 #line 490 "pplex.l"
3001 {
3002  return FOLDCOPYNAME;
3003  }
3004  YY_BREAK
3005 case 81:
3006 #line 494 "pplex.l"
3007 case 82:
3009 #line 494 "pplex.l"
3010 {
3011  return NOFOLDCOPYNAME;
3012  }
3013  YY_BREAK
3014 case 83:
3016 #line 497 "pplex.l"
3017 {
3018  return AS;
3019  }
3020  YY_BREAK
3021 case 84:
3022 #line 501 "pplex.l"
3023 case 85:
3025 #line 501 "pplex.l"
3026 {
3027  pplval.s = cobc_plex_strdup (pptext);
3028  return LITERAL;
3029  }
3030  YY_BREAK
3031 case 86:
3033 #line 505 "pplex.l"
3034 {
3035  pptext[strlen (pptext) - 1] = 0;
3036  pplval.s = cobc_plex_strdup (pptext + 1);
3037  return LITERAL;
3038  }
3039  YY_BREAK
3040 case 87:
3042 #line 510 "pplex.l"
3043 {
3044  pplval.s = cobc_plex_strdup (pptext);
3045  return VARIABLE;
3046  }
3047  YY_BREAK
3048 case 88:
3050 #line 514 "pplex.l"
3051 { /* ignore */ }
3052  YY_BREAK
3053 case 89:
3055 #line 515 "pplex.l"
3056 { }
3057  YY_BREAK
3058 
3059 
3060 case 90:
3061 /* rule 90 can match eol */
3063 #line 519 "pplex.l"
3064 {
3065  BEGIN INITIAL;
3066  unput ('\n');
3067  return TERMINATOR;
3068  }
3069  YY_BREAK
3070 case 91:
3072 #line 524 "pplex.l"
3073 {
3074  return ON;
3075  }
3076  YY_BREAK
3077 case 92:
3079 #line 527 "pplex.l"
3080 {
3081  return OFF;
3082  }
3083  YY_BREAK
3084 case 93:
3086 #line 530 "pplex.l"
3087 {
3088  return WITH;
3089  }
3090  YY_BREAK
3091 case 94:
3093 #line 533 "pplex.l"
3094 {
3095  return LOCATION;
3096  }
3097  YY_BREAK
3098 case 95:
3100 #line 536 "pplex.l"
3101 {
3102  return CHECKING;
3103  }
3104  YY_BREAK
3105 case 96:
3106 #line 540 "pplex.l"
3107 case 97:
3109 #line 540 "pplex.l"
3110 {
3111  pplval.s = cobc_plex_strdup (pptext);
3112  return LITERAL;
3113  }
3114  YY_BREAK
3115 case 98:
3117 #line 544 "pplex.l"
3118 {
3119  pptext[strlen (pptext) - 1] = 0;
3120  pplval.s = cobc_plex_strdup (pptext + 1);
3121  return LITERAL;
3122  }
3123  YY_BREAK
3124 case 99:
3126 #line 549 "pplex.l"
3127 {
3128  pplval.s = cobc_plex_strdup (pptext);
3129  return VARIABLE;
3130  }
3131  YY_BREAK
3132 case 100:
3134 #line 553 "pplex.l"
3135 { /* ignore */ }
3136  YY_BREAK
3137 case 101:
3139 #line 554 "pplex.l"
3140 { }
3141  YY_BREAK
3142 
3143 
3144 case 102:
3145 /* rule 102 can match eol */
3147 #line 558 "pplex.l"
3148 {
3149  BEGIN INITIAL;
3150  unput ('\n');
3151  return TERMINATOR;
3152  }
3153  YY_BREAK
3154 case 103:
3156 #line 563 "pplex.l"
3157 { /* ignore */ }
3158  YY_BREAK
3159 case 104:
3161 #line 564 "pplex.l"
3162 { return IS; }
3163  YY_BREAK
3164 case 105:
3166 #line 565 "pplex.l"
3167 { return NOT; }
3168  YY_BREAK
3169 case 106:
3171 #line 566 "pplex.l"
3172 { return EQUAL; }
3173  YY_BREAK
3174 case 107:
3176 #line 567 "pplex.l"
3177 { return TO; }
3178  YY_BREAK
3179 case 108:
3181 #line 568 "pplex.l"
3182 { return OR; }
3183  YY_BREAK
3184 case 109:
3186 #line 569 "pplex.l"
3187 { return GREATER; }
3188  YY_BREAK
3189 case 110:
3191 #line 570 "pplex.l"
3192 { return LESS; }
3193  YY_BREAK
3194 case 111:
3196 #line 571 "pplex.l"
3197 { return THAN; }
3198  YY_BREAK
3199 case 112:
3201 #line 572 "pplex.l"
3202 { return DEFINED; }
3203  YY_BREAK
3204 case 113:
3206 #line 573 "pplex.l"
3207 { return SET; }
3208  YY_BREAK
3209 case 114:
3211 #line 574 "pplex.l"
3212 { return GE; }
3213  YY_BREAK
3214 case 115:
3216 #line 575 "pplex.l"
3217 { return GT; }
3218  YY_BREAK
3219 case 116:
3221 #line 576 "pplex.l"
3222 { return LE; }
3223  YY_BREAK
3224 case 117:
3226 #line 577 "pplex.l"
3227 { return NE; }
3228  YY_BREAK
3229 case 118:
3231 #line 578 "pplex.l"
3232 { return LT; }
3233  YY_BREAK
3234 case 119:
3236 #line 579 "pplex.l"
3237 { return EQ; }
3238  YY_BREAK
3239 case 120:
3240 #line 581 "pplex.l"
3241 case 121:
3243 #line 581 "pplex.l"
3244 {
3245  pplval.s = cobc_plex_strdup (pptext);
3246  return LITERAL;
3247  }
3248  YY_BREAK
3249 case 122:
3251 #line 585 "pplex.l"
3252 {
3253  pplval.s = cobc_plex_strdup (pptext);
3254  return VARIABLE;
3255  }
3256  YY_BREAK
3257 case 123:
3259 #line 589 "pplex.l"
3260 { }
3261  YY_BREAK
3262 
3263 
3264 case 124:
3265 /* rule 124 can match eol */
3267 #line 593 "pplex.l"
3268 {
3269  BEGIN INITIAL;
3270  unput ('\n');
3271  return TERMINATOR;
3272  }
3273  YY_BREAK
3274 case 125:
3276 #line 598 "pplex.l"
3277 { /* ignore */ }
3278  YY_BREAK
3279 
3280 
3281 case 126:
3282 /* rule 126 can match eol */
3284 #line 602 "pplex.l"
3285 {
3286  BEGIN INITIAL;
3287  unput ('\n');
3288  return TERMINATOR;
3289  }
3290  YY_BREAK
3291 case 127:
3293 #line 607 "pplex.l"
3294 { /* ignore */ }
3295  YY_BREAK
3296 
3297 
3298 case 128:
3299 /* rule 128 can match eol */
3301 #line 611 "pplex.l"
3302 {
3303  ECHO;
3304  check_listing (pptext, 0);
3305  cb_source_line++;
3306  }
3307  YY_BREAK
3308 case 129:
3310 #line 616 "pplex.l"
3311 { /* ignore */ }
3312  YY_BREAK
3313 case 130:
3315 #line 617 "pplex.l"
3316 { yy_pop_state (); return DOT; }
3317  YY_BREAK
3318 case 131:
3320 #line 618 "pplex.l"
3321 { yy_push_state (PSEUDO_STATE); return EQEQ; }
3322  YY_BREAK
3323 case 132:
3325 #line 619 "pplex.l"
3326 { return '('; }
3327  YY_BREAK
3328 case 133:
3330 #line 620 "pplex.l"
3331 { return ')'; }
3332  YY_BREAK
3333 case 134:
3335 #line 621 "pplex.l"
3336 { return BY; }
3337  YY_BREAK
3338 case 135:
3340 #line 622 "pplex.l"
3341 { return IN; }
3342  YY_BREAK
3343 case 136:
3345 #line 623 "pplex.l"
3346 { return OF; }
3347  YY_BREAK
3348 case 137:
3350 #line 624 "pplex.l"
3351 { return OFF; }
3352  YY_BREAK
3353 case 138:
3355 #line 625 "pplex.l"
3356 { return SUPPRESS; }
3357  YY_BREAK
3358 case 139:
3360 #line 626 "pplex.l"
3361 { return PRINTING; }
3362  YY_BREAK
3363 case 140:
3365 #line 627 "pplex.l"
3366 { return REPLACING; }
3367  YY_BREAK
3368 case 141:
3370 #line 628 "pplex.l"
3371 { return LEADING; }
3372  YY_BREAK
3373 case 142:
3375 #line 629 "pplex.l"
3376 { return TRAILING; }
3377  YY_BREAK
3378 case 143:
3380 #line 630 "pplex.l"
3381 { return ALSO; }
3382  YY_BREAK
3383 case 144:
3385 #line 631 "pplex.l"
3386 { return LAST; }
3387  YY_BREAK
3388 case 145:
3389 #line 633 "pplex.l"
3390 case 146:
3391 #line 634 "pplex.l"
3392 case 147:
3393 #line 635 "pplex.l"
3394 case 148:
3396 #line 635 "pplex.l"
3397 { pplval.s = cobc_plex_strdup (pptext); return TOKEN; }
3398  YY_BREAK
3399 
3400 
3401 case 149:
3402 /* rule 149 can match eol */
3404 #line 639 "pplex.l"
3405 {
3406  ECHO;
3407  check_listing (pptext, 0);
3408  cb_source_line++;
3409  }
3410  YY_BREAK
3411 case 150:
3413 #line 645 "pplex.l"
3414 {
3415  pplval.s = cobc_plex_strdup (" ");
3416  return TOKEN;
3417  }
3418  YY_BREAK
3419 case 151:
3421 #line 650 "pplex.l"
3422 {
3423  yy_pop_state ();
3424  return EQEQ;
3425  }
3426  YY_BREAK
3427 case 152:
3428 #line 656 "pplex.l"
3429 case 153:
3430 #line 657 "pplex.l"
3431 case 154:
3432 #line 658 "pplex.l"
3433 case 155:
3435 #line 658 "pplex.l"
3436 {
3437  pplval.s = cobc_plex_strdup (pptext);
3438  return TOKEN;
3439  }
3440  YY_BREAK
3441 
3442 case YY_STATE_EOF(INITIAL):
3443 case YY_STATE_EOF(COPY_STATE):
3452 #line 665 "pplex.l"
3453 {
3454  struct copy_info *p;
3455 
3456  p = copy_stack;
3457 
3459 
3460  /* Terminate at the end of all input */
3461  if (p->next == NULL) {
3462  /* Check dangling IF/ELSE */
3463  for (; plex_nest_depth > 0; --plex_nest_depth) {
3465  cb_error (_("Dangling IF/ELSE directive"));
3466  }
3467  plex_nest_depth = 0;
3468  cobc_free (p->dname);
3469  cobc_free (p);
3470  listing_line = 0;
3471  requires_listing_line = 1;
3472  requires_new_line = 0;
3473  need_continuation = 0;
3474  buffer_overflow = 0;
3475  within_comment = 0;
3476  newline_count = 0;
3477  inside_bracket = 0;
3478  comment_allowed = 1;
3479  current_replace_list = NULL;
3480  base_replace_list = NULL;
3481  save_current_replace = NULL;
3482  text_queue = NULL;
3483  copy_stack = NULL;
3484  quotation_mark = 0;
3485  consecutive_quotation = 0;
3486  yyterminate ();
3487  }
3488 
3489  /* Close the current file */
3490  fclose (ppin);
3491 
3492  /* Switch to previous buffer */
3493  switch_to_buffer (p->line, p->file, p->buffer);
3494 
3495  /* Restore variables */
3496  current_replace_list = p->replacing;
3497  quotation_mark = p->quotation_mark;
3499 
3500  copy_stack = p->next;
3501  cobc_free (p->dname);
3502  cobc_free (p);
3503 }
3504  YY_BREAK
3505 case 156:
3507 #line 717 "pplex.l"
3508 YY_FATAL_ERROR( "flex scanner jammed" );
3509  YY_BREAK
3510 #line 3510 "pplex.c"
3511 
3512  case YY_END_OF_BUFFER:
3513  {
3514  /* Amount of text matched not including the EOB char. */
3515  int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
3516 
3517  /* Undo the effects of YY_DO_BEFORE_ACTION. */
3518  *yy_cp = (yy_hold_char);
3520 
3521  if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
3522  {
3523  /* We're scanning a new file or input source. It's
3524  * possible that this happened because the user
3525  * just pointed ppin at a new source and called
3526  * pplex(). If so, then we have to assure
3527  * consistency between YY_CURRENT_BUFFER and our
3528  * globals. Here is the right place to do so, because
3529  * this is the first action (other than possibly a
3530  * back-up) that will match for the new input source.
3531  */
3532  (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3533  YY_CURRENT_BUFFER_LVALUE->yy_input_file = ppin;
3534  YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
3535  }
3536 
3537  /* Note that here we test for yy_c_buf_p "<=" to the position
3538  * of the first EOB in the buffer, since yy_c_buf_p will
3539  * already have been incremented past the NUL character
3540  * (since all states make transitions on EOB to the
3541  * end-of-buffer state). Contrast this with the test
3542  * in input().
3543  */
3544  if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
3545  { /* This was really a NUL. */
3546  yy_state_type yy_next_state;
3547 
3548  (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
3549 
3550  yy_current_state = yy_get_previous_state( );
3551 
3552  /* Okay, we're now positioned to make the NUL
3553  * transition. We couldn't have
3554  * yy_get_previous_state() go ahead and do it
3555  * for us because it doesn't know how to deal
3556  * with the possibility of jamming (and we don't
3557  * want to build jamming into it because then it
3558  * will run more slowly).
3559  */
3560 
3561  yy_next_state = yy_try_NUL_trans( yy_current_state );
3562 
3563  yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3564 
3565  if ( yy_next_state )
3566  {
3567  /* Consume the NUL. */
3568  yy_cp = ++(yy_c_buf_p);
3569  yy_current_state = yy_next_state;
3570  goto yy_match;
3571  }
3572 
3573  else
3574  {
3575  yy_cp = (yy_last_accepting_cpos);
3576  yy_current_state = (yy_last_accepting_state);
3577  goto yy_find_action;
3578  }
3579  }
3580 
3581  else switch ( yy_get_next_buffer( ) )
3582  {
3583  case EOB_ACT_END_OF_FILE:
3584  {
3586 
3587  if ( ppwrap( ) )
3588  {
3589  /* Note: because we've taken care in
3590  * yy_get_next_buffer() to have set up
3591  * pptext, we can now set up
3592  * yy_c_buf_p so that if some total
3593  * hoser (like flex itself) wants to
3594  * call the scanner after we return the
3595  * YY_NULL, it'll still work - another
3596  * YY_NULL will get returned.
3597  */
3599 
3600  yy_act = YY_STATE_EOF(YY_START);
3601  goto do_action;
3602  }
3603 
3604  else
3605  {
3606  if ( ! (yy_did_buffer_switch_on_eof) )
3607  YY_NEW_FILE;
3608  }
3609  break;
3610  }
3611 
3612  case EOB_ACT_CONTINUE_SCAN:
3613  (yy_c_buf_p) =
3614  (yytext_ptr) + yy_amount_of_matched_text;
3615 
3616  yy_current_state = yy_get_previous_state( );
3617 
3618  yy_cp = (yy_c_buf_p);
3619  yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3620  goto yy_match;
3621 
3622  case EOB_ACT_LAST_MATCH:
3623  (yy_c_buf_p) =
3624  &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
3625 
3626  yy_current_state = yy_get_previous_state( );
3627 
3628  yy_cp = (yy_c_buf_p);
3629  yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3630  goto yy_find_action;
3631  }
3632  break;
3633  }
3634 
3635  default:
3637  "fatal flex scanner internal error--no action found" );
3638  } /* end of action switch */
3639  } /* end of scanning one token */
3640  } /* end of user's declarations */
3641 } /* end of pplex */
3642 
3643 /* yy_get_next_buffer - try to read in a new buffer
3644  *
3645  * Returns a code representing an action:
3646  * EOB_ACT_LAST_MATCH -
3647  * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
3648  * EOB_ACT_END_OF_FILE - end of file
3649  */
3650 static int yy_get_next_buffer (void)
3651 {
3652  register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
3653  register char *source = (yytext_ptr);
3654  register int number_to_move, i;
3655  int ret_val;
3656 
3657  if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
3659  "fatal flex scanner internal error--end of buffer missed" );
3660 
3661  if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
3662  { /* Don't try to fill the buffer, so this is an EOF. */
3663  if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
3664  {
3665  /* We matched a single character, the EOB, so
3666  * treat this as a final EOF.
3667  */
3668  return EOB_ACT_END_OF_FILE;
3669  }
3670 
3671  else
3672  {
3673  /* We matched some text prior to the EOB, first
3674  * process it.
3675  */
3676  return EOB_ACT_LAST_MATCH;
3677  }
3678  }
3679 
3680  /* Try to read more data. */
3681 
3682  /* First move last chars to start of buffer. */
3683  number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
3684 
3685  for ( i = 0; i < number_to_move; ++i )
3686  *(dest++) = *(source++);
3687 
3688  if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
3689  /* don't do the read, it's not guaranteed to return an EOF,
3690  * just force an EOF
3691  */
3692  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
3693 
3694  else
3695  {
3696  yy_size_t num_to_read =
3697  YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
3698 
3699  while ( num_to_read <= 0 )
3700  { /* Not enough room in the buffer - grow it. */
3701 
3702  /* just a shorter name for the current buffer */
3703  YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
3704 
3705  int yy_c_buf_p_offset =
3706  (int) ((yy_c_buf_p) - b->yy_ch_buf);
3707 
3708  if ( b->yy_is_our_buffer )
3709  {
3710  yy_size_t new_size = b->yy_buf_size * 2;
3711 
3712  if ( new_size <= 0 )
3713  b->yy_buf_size += b->yy_buf_size / 8;
3714  else
3715  b->yy_buf_size *= 2;
3716 
3717  b->yy_ch_buf = (char *)
3718  /* Include room in for 2 EOB chars. */
3719  pprealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
3720  }
3721  else
3722  /* Can't grow it, we don't own it. */
3723  b->yy_ch_buf = 0;
3724 
3725  if ( ! b->yy_ch_buf )
3727  "fatal error - scanner input buffer overflow" );
3728 
3729  (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
3730 
3731  num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
3732  number_to_move - 1;
3733 
3734  }
3735 
3736  if ( num_to_read > YY_READ_BUF_SIZE )
3737  num_to_read = YY_READ_BUF_SIZE;
3738 
3739  /* Read in more data. */
3740  YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
3741  (yy_n_chars), num_to_read );
3742 
3743  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3744  }
3745 
3746  if ( (yy_n_chars) == 0 )
3747  {
3748  if ( number_to_move == YY_MORE_ADJ )
3749  {
3750  ret_val = EOB_ACT_END_OF_FILE;
3751  pprestart(ppin );
3752  }
3753 
3754  else
3755  {
3756  ret_val = EOB_ACT_LAST_MATCH;
3757  YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
3759  }
3760  }
3761 
3762  else
3763  ret_val = EOB_ACT_CONTINUE_SCAN;
3764 
3765  if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
3766  /* Extend the array by 50%, plus the number we really need. */
3767  yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
3768  YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) pprealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
3769  if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
3770  YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
3771  }
3772 
3773  (yy_n_chars) += number_to_move;
3776 
3777  (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
3778 
3779  return ret_val;
3780 }
3781 
3782 /* yy_get_previous_state - get the state just before the EOB char was reached */
3783 
3784  static yy_state_type yy_get_previous_state (void)
3785 {
3786  register yy_state_type yy_current_state;
3787  register char *yy_cp;
3788 
3789  yy_current_state = (yy_start);
3790  yy_current_state += YY_AT_BOL();
3791 
3792  for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
3793  {
3794  register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
3795  if ( yy_accept[yy_current_state] )
3796  {
3797  (yy_last_accepting_state) = yy_current_state;
3798  (yy_last_accepting_cpos) = yy_cp;
3799  }
3800  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3801  {
3802  yy_current_state = (int) yy_def[yy_current_state];
3803  if ( yy_current_state >= 1082 )
3804  yy_c = yy_meta[(unsigned int) yy_c];
3805  }
3806  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3807  }
3808 
3809  return yy_current_state;
3810 }
3811 
3812 /* yy_try_NUL_trans - try to make a transition on the NUL character
3813  *
3814  * synopsis
3815  * next_state = yy_try_NUL_trans( current_state );
3816  */
3817  static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
3818 {
3819  register int yy_is_jam;
3820  register char *yy_cp = (yy_c_buf_p);
3821 
3822  register YY_CHAR yy_c = 1;
3823  if ( yy_accept[yy_current_state] )
3824  {
3825  (yy_last_accepting_state) = yy_current_state;
3826  (yy_last_accepting_cpos) = yy_cp;
3827  }
3828  while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3829  {
3830  yy_current_state = (int) yy_def[yy_current_state];
3831  if ( yy_current_state >= 1082 )
3832  yy_c = yy_meta[(unsigned int) yy_c];
3833  }
3834  yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3835  yy_is_jam = (yy_current_state == 1081);
3836 
3837  return yy_is_jam ? 0 : yy_current_state;
3838 }
3839 
3840  static void yyunput (int c, register char * yy_bp )
3841 {
3842  register char *yy_cp;
3843 
3844  yy_cp = (yy_c_buf_p);
3845 
3846  /* undo effects of setting up pptext */
3847  *yy_cp = (yy_hold_char);
3848 
3849  if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
3850  { /* need to shift things up to make room */
3851  /* +2 for EOB chars. */
3852  register yy_size_t number_to_move = (yy_n_chars) + 2;
3853  register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
3854  YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
3855  register char *source =
3856  &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
3857 
3858  while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
3859  *--dest = *--source;
3860 
3861  yy_cp += (int) (dest - source);
3862  yy_bp += (int) (dest - source);
3863  YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
3864  (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
3865 
3866  if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
3867  YY_FATAL_ERROR( "flex scanner push-back overflow" );
3868  }
3869 
3870  *--yy_cp = (char) c;
3871 
3872  (yytext_ptr) = yy_bp;
3873  (yy_hold_char) = *yy_cp;
3874  (yy_c_buf_p) = yy_cp;
3875 }
3876 
3877 #ifndef YY_NO_INPUT
3878 #ifdef __cplusplus
3879  static int yyinput (void)
3880 #else
3881  static int input (void)
3882 #endif
3883 
3884 {
3885  int c;
3886 
3887  *(yy_c_buf_p) = (yy_hold_char);
3888 
3889  if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
3890  {
3891  /* yy_c_buf_p now points to the character we want to return.
3892  * If this occurs *before* the EOB characters, then it's a
3893  * valid NUL; if not, then we've hit the end of the buffer.
3894  */
3895  if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
3896  /* This was really a NUL. */
3897  *(yy_c_buf_p) = '\0';
3898 
3899  else
3900  { /* need more input */
3901  yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
3902  ++(yy_c_buf_p);
3903 
3904  switch ( yy_get_next_buffer( ) )
3905  {
3906  case EOB_ACT_LAST_MATCH:
3907  /* This happens because yy_g_n_b()
3908  * sees that we've accumulated a
3909  * token and flags that we need to
3910  * try matching the token before
3911  * proceeding. But for input(),
3912  * there's no matching to consider.
3913  * So convert the EOB_ACT_LAST_MATCH
3914  * to EOB_ACT_END_OF_FILE.
3915  */
3916 
3917  /* Reset buffer status. */
3918  pprestart(ppin );
3919 
3920  /*FALLTHROUGH*/
3921 
3922  case EOB_ACT_END_OF_FILE:
3923  {
3924  if ( ppwrap( ) )
3925  return EOF;
3926 
3927  if ( ! (yy_did_buffer_switch_on_eof) )
3928  YY_NEW_FILE;
3929 #ifdef __cplusplus
3930  return yyinput();
3931 #else
3932  return input();
3933 #endif
3934  }
3935 
3936  case EOB_ACT_CONTINUE_SCAN:
3937  (yy_c_buf_p) = (yytext_ptr) + offset;
3938  break;
3939  }
3940  }
3941  }
3942 
3943  c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
3944  *(yy_c_buf_p) = '\0'; /* preserve pptext */
3945  (yy_hold_char) = *++(yy_c_buf_p);
3946 
3947  YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
3948 
3949  return c;
3950 }
3951 #endif /* ifndef YY_NO_INPUT */
3952 
3953 /** Immediately switch to a different input stream.
3954  * @param input_file A readable stream.
3955  *
3956  * @note This function does not reset the start condition to @c INITIAL .
3957  */
3958  void pprestart (FILE * input_file )
3959 {
3960 
3961  if ( ! YY_CURRENT_BUFFER ){
3965  }
3966 
3967  pp_init_buffer(YY_CURRENT_BUFFER,input_file );
3969 }
3970 
3971 /** Switch to a different input buffer.
3972  * @param new_buffer The new input buffer.
3973  *
3974  */
3975  void pp_switch_to_buffer (YY_BUFFER_STATE new_buffer )
3976 {
3977 
3978  /* TODO. We should be able to replace this entire function body
3979  * with
3980  * pppop_buffer_state();
3981  * pppush_buffer_state(new_buffer);
3982  */
3984  if ( YY_CURRENT_BUFFER == new_buffer )
3985  return;
3986 
3987  if ( YY_CURRENT_BUFFER )
3988  {
3989  /* Flush out information for old buffer. */
3990  *(yy_c_buf_p) = (yy_hold_char);
3991  YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
3992  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3993  }
3994 
3995  YY_CURRENT_BUFFER_LVALUE = new_buffer;
3997 
3998  /* We don't actually know whether we did this switch during
3999  * EOF (ppwrap()) processing, but the only time this flag
4000  * is looked at is after ppwrap() is called, so it's safe
4001  * to go ahead and always set it.
4002  */
4004 }
4005 
4006 static void pp_load_buffer_state (void)
4007 {
4008  (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
4009  (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
4010  ppin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
4011  (yy_hold_char) = *(yy_c_buf_p);
4012 }
4013 
4014 /** Allocate and initialize an input buffer state.
4015  * @param file A readable stream.
4016  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
4017  *
4018  * @return the allocated buffer state.
4019  */
4020  YY_BUFFER_STATE pp_create_buffer (FILE * file, int size )
4021 {
4022  YY_BUFFER_STATE b;
4023 
4024  b = (YY_BUFFER_STATE) ppalloc(sizeof( struct yy_buffer_state ) );
4025  if ( ! b )
4026  YY_FATAL_ERROR( "out of dynamic memory in pp_create_buffer()" );
4027 
4028  b->yy_buf_size = size;
4029 
4030  /* yy_ch_buf has to be 2 characters longer than the size given because
4031  * we need to put in 2 end-of-buffer characters.
4032  */
4033  b->yy_ch_buf = (char *) ppalloc(b->yy_buf_size + 2 );
4034  if ( ! b->yy_ch_buf )
4035  YY_FATAL_ERROR( "out of dynamic memory in pp_create_buffer()" );
4036 
4037  b->yy_is_our_buffer = 1;
4038 
4039  pp_init_buffer(b,file );
4040 
4041  return b;
4042 }
4043 
4044 /** Destroy the buffer.
4045  * @param b a buffer created with pp_create_buffer()
4046  *
4047  */
4048  void pp_delete_buffer (YY_BUFFER_STATE b )
4049 {
4050 
4051  if ( ! b )
4052  return;
4053 
4054  if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
4056 
4057  if ( b->yy_is_our_buffer )
4058  ppfree((void *) b->yy_ch_buf );
4059 
4060  ppfree((void *) b );
4061 }
4062 
4063 /* Initializes or reinitializes a buffer.
4064  * This function is sometimes called more than once on the same buffer,
4065  * such as during a pprestart() or at EOF.
4066  */
4067  static void pp_init_buffer (YY_BUFFER_STATE b, FILE * file )
4068 
4069 {
4070  int oerrno = errno;
4071 
4072  pp_flush_buffer(b );
4073 
4074  b->yy_input_file = file;
4075  b->yy_fill_buffer = 1;
4076 
4077  /* If b is the current buffer, then pp_init_buffer was _probably_
4078  * called from pprestart() or through yy_get_next_buffer.
4079  * In that case, we don't want to reset the lineno or column.
4080  */
4081  if (b != YY_CURRENT_BUFFER){
4082  b->yy_bs_lineno = 1;
4083  b->yy_bs_column = 0;
4084  }
4085 
4086  b->yy_is_interactive = 0;
4087 
4088  errno = oerrno;
4089 }
4090 
4091 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
4092  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
4093  *
4094  */
4095  void pp_flush_buffer (YY_BUFFER_STATE b )
4096 {
4097  if ( ! b )
4098  return;
4099 
4100  b->yy_n_chars = 0;
4101 
4102  /* We always need two end-of-buffer characters. The first causes
4103  * a transition to the end-of-buffer state. The second causes
4104  * a jam in that state.
4105  */
4108 
4109  b->yy_buf_pos = &b->yy_ch_buf[0];
4110 
4111  b->yy_at_bol = 1;
4113 
4114  if ( b == YY_CURRENT_BUFFER )
4116 }
4117 
4118 /** Pushes the new state onto the stack. The new state becomes
4119  * the current state. This function will allocate the stack
4120  * if necessary.
4121  * @param new_buffer The new state.
4122  *
4123  */
4124 void pppush_buffer_state (YY_BUFFER_STATE new_buffer )
4125 {
4126  if (new_buffer == NULL)
4127  return;
4128 
4130 
4131  /* This block is copied from pp_switch_to_buffer. */
4132  if ( YY_CURRENT_BUFFER )
4133  {
4134  /* Flush out information for old buffer. */
4135  *(yy_c_buf_p) = (yy_hold_char);
4136  YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
4137  YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
4138  }
4139 
4140  /* Only push if top exists. Otherwise, replace top. */
4141  if (YY_CURRENT_BUFFER)
4142  (yy_buffer_stack_top)++;
4143  YY_CURRENT_BUFFER_LVALUE = new_buffer;
4144 
4145  /* copied from pp_switch_to_buffer. */
4148 }
4149 
4150 /** Removes and deletes the top of the stack, if present.
4151  * The next element becomes the new top.
4152  *
4153  */
4155 {
4156  if (!YY_CURRENT_BUFFER)
4157  return;
4158 
4161  if ((yy_buffer_stack_top) > 0)
4162  --(yy_buffer_stack_top);
4163 
4164  if (YY_CURRENT_BUFFER) {
4167  }
4168 }
4169 
4170 /* Allocates the stack if it does not exist.
4171  * Guarantees space for at least one push.
4172  */
4173 static void ppensure_buffer_stack (void)
4174 {
4175  yy_size_t num_to_alloc;
4176 
4177  if (!(yy_buffer_stack)) {
4178 
4179  /* First allocation is just for 2 elements, since we don't know if this
4180  * scanner will even need a stack. We use 2 instead of 1 to avoid an
4181  * immediate realloc on the next call.
4182  */
4183  num_to_alloc = 1;
4185  (num_to_alloc * sizeof(struct yy_buffer_state*)
4186  );
4187  if ( ! (yy_buffer_stack) )
4188  YY_FATAL_ERROR( "out of dynamic memory in ppensure_buffer_stack()" );
4189 
4190  memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
4191 
4192  (yy_buffer_stack_max) = num_to_alloc;
4193  (yy_buffer_stack_top) = 0;
4194  return;
4195  }
4196 
4197  if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
4198 
4199  /* Increase the buffer to prepare for a possible push. */
4200  int grow_size = 8 /* arbitrary grow size */;
4201 
4202  num_to_alloc = (yy_buffer_stack_max) + grow_size;
4204  ((yy_buffer_stack),
4205  num_to_alloc * sizeof(struct yy_buffer_state*)
4206  );
4207  if ( ! (yy_buffer_stack) )
4208  YY_FATAL_ERROR( "out of dynamic memory in ppensure_buffer_stack()" );
4209 
4210  /* zero only the new slots.*/
4211  memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
4212  (yy_buffer_stack_max) = num_to_alloc;
4213  }
4214 }
4215 
4216  static void yy_push_state (int new_state )
4217 {
4218  if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
4219  {
4220  yy_size_t new_size;
4221 
4223  new_size = (yy_start_stack_depth) * sizeof( int );
4224 
4225  if ( ! (yy_start_stack) )
4226  (yy_start_stack) = (int *) ppalloc(new_size );
4227 
4228  else
4229  (yy_start_stack) = (int *) pprealloc((void *) (yy_start_stack),new_size );
4230 
4231  if ( ! (yy_start_stack) )
4232  YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
4233  }
4234 
4235  (yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
4236 
4237  BEGIN(new_state);
4238 }
4239 
4240  static void yy_pop_state (void)
4241 {
4242  if ( --(yy_start_stack_ptr) < 0 )
4243  YY_FATAL_ERROR( "start-condition stack underflow" );
4244 
4245  BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
4246 }
4247 
4248 #ifndef YY_EXIT_FAILURE
4249 #define YY_EXIT_FAILURE 2
4250 #endif
4251 
4252 static void yy_fatal_error (yyconst char* msg )
4253 {
4254  (void) fprintf( stderr, "%s\n", msg );
4255  exit( YY_EXIT_FAILURE );
4256 }
4257 
4258 /* Redefine yyless() so it works in section 3 code. */
4259 
4260 #undef yyless
4261 #define yyless(n) \
4262  do \
4263  { \
4264  /* Undo effects of setting up pptext. */ \
4265  int yyless_macro_arg = (n); \
4266  YY_LESS_LINENO(yyless_macro_arg);\
4267  pptext[ppleng] = (yy_hold_char); \
4268  (yy_c_buf_p) = pptext + yyless_macro_arg; \
4269  (yy_hold_char) = *(yy_c_buf_p); \
4270  *(yy_c_buf_p) = '\0'; \
4271  ppleng = yyless_macro_arg; \
4272  } \
4273  while ( 0 )
4274 
4275 /* Accessor methods (get/set functions) to struct members. */
4276 
4277 /** Get the current token.
4278  *
4279  */
4280 
4281 static int yy_init_globals (void)
4282 {
4283  /* Initialization is the same as for the non-reentrant scanner.
4284  * This function is called from pplex_destroy(), so don't allocate here.
4285  */
4286 
4287  (yy_buffer_stack) = 0;
4288  (yy_buffer_stack_top) = 0;
4289  (yy_buffer_stack_max) = 0;
4290  (yy_c_buf_p) = (char *) 0;
4291  (yy_init) = 0;
4292  (yy_start) = 0;
4293 
4294  (yy_start_stack_ptr) = 0;
4295  (yy_start_stack_depth) = 0;
4296  (yy_start_stack) = NULL;
4297 
4298 /* Defined in main.c */
4299 #ifdef YY_STDINIT
4300  ppin = stdin;
4301  ppout = stdout;
4302 #else
4303  ppin = (FILE *) 0;
4304  ppout = (FILE *) 0;
4305 #endif
4306 
4307  /* For future reference: Set errno on error, since we are called by
4308  * pplex_init()
4309  */
4310  return 0;
4311 }
4312 
4313 /* pplex_destroy is for both reentrant and non-reentrant scanners. */
4314 int pplex_destroy (void)
4315 {
4316 
4317  /* Pop the buffer stack, destroying each element. */
4318  while(YY_CURRENT_BUFFER){
4322  }
4323 
4324  /* Destroy the stack itself. */
4325  ppfree((yy_buffer_stack) );
4326  (yy_buffer_stack) = NULL;
4327 
4328  /* Destroy the start condition stack. */
4329  ppfree((yy_start_stack) );
4330  (yy_start_stack) = NULL;
4331 
4332  /* Reset the globals. This is important in a non-reentrant scanner so the next time
4333  * pplex() is called, initialization will occur. */
4334  yy_init_globals( );
4335 
4336  return 0;
4337 }
4338 
4339 /*
4340  * Internal utility routines.
4341  */
4342 
4343 #ifndef yytext_ptr
4344 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
4345 {
4346  register int i;
4347  for ( i = 0; i < n; ++i )
4348  s1[i] = s2[i];
4349 }
4350 #endif
4351 
4352 #ifdef YY_NEED_STRLEN
4353 static int yy_flex_strlen (yyconst char * s )
4354 {
4355  register int n;
4356  for ( n = 0; s[n]; ++n )
4357  ;
4358 
4359  return n;
4360 }
4361 #endif
4362 
4363 void *ppalloc (yy_size_t size )
4364 {
4365  return (void *) malloc( size );
4366 }
4367 
4368 void *pprealloc (void * ptr, yy_size_t size )
4369 {
4370  /* The cast to (char *) in the following accommodates both
4371  * implementations that use char* generic pointers, and those
4372  * that use void* generic pointers. It works with the latter
4373  * because both ANSI C and C++ allow castless assignment from
4374  * any pointer type to void*, and deal with argument conversions
4375  * as though doing an assignment.
4376  */
4377  return (void *) realloc( (char *) ptr, size );
4378 }
4379 
4380 void ppfree (void * ptr )
4381 {
4382  free( (char *) ptr ); /* see pprealloc() for (char *) cast */
4383 }
4384 
4385 #define YYTABLES_NAME "yytables"
4386 
4387 #line 716 "pplex.l"
4388 
4389 
4390 
4391 /* Global functions */
4392 
4393 void
4394 pp_set_replace_list (struct cb_replace_list *list, const cob_u32_t is_pushpop)
4395 {
4396  /* Handle REPLACE verb */
4397  if (!list) {
4398  /* REPLACE [LAST] OFF */
4399  if (!is_pushpop) {
4400  base_replace_list = NULL;
4401  return;
4402  }
4403  if (!base_replace_list) {
4404  return;
4405  }
4406  base_replace_list = base_replace_list->prev;
4407  return;
4408  }
4409  /* REPLACE [ALSO] ... */
4410  if (base_replace_list && is_pushpop) {
4411  list->last->next = base_replace_list;
4412  list->prev = base_replace_list;
4413  } else {
4414  list->prev = NULL;
4415  }
4416  base_replace_list = list;
4417 }
4418 
4419 int
4420 ppopen (const char *name, struct cb_replace_list *replacing_list)
4421 {
4422  struct copy_info *p;
4423  char *s;
4424  char *dname;
4425 
4426  unsigned char bom[4];
4427 
4428  if (ppin) {
4429  for (; newline_count > 0; newline_count--) {
4430  ungetc ('\n', ppin);
4431  }
4432  }
4433 
4434  /* Open copy/source file, or use stdin */
4435  if (strcmp(name, COB_DASH) == 0) {
4436  ppin = stdin;
4437  } else {
4438 #ifdef __OS400__
4439  ppin = fopen (name, "r");
4440 #else
4441  ppin = fopen (name, "rb");
4442 #endif
4443  }
4444 
4445  if (!ppin) {
4446  if (cb_source_file) {
4447  cb_error ("%s: %s", name,
4448  _("No such file or directory"));
4449  } else {
4450  fflush (stderr);
4451  fprintf (stderr, "%s: %s", name,
4452  _("No such file or directory"));
4453  fflush (stderr);
4454  errorcount++;
4455  }
4456  return -1;
4457  }
4458 
4459  /* Check for BOM - *not* for input from stdin as rewind() clears the input
4460  buffer if used on stdin and output in console has normally no BOM at all */
4461  if (strcmp(name, COB_DASH) != 0) {
4462  if (fread (bom, 3, 1, ppin) == 1) {
4463  if (bom[0] != 0xEF || bom[1] != 0xBB || bom[2] != 0xBF) {
4464  rewind (ppin);
4465  }
4466  } else {
4467  rewind (ppin);
4468  }
4469  }
4470 
4471  /* Preserve the current buffer */
4472  p = cobc_malloc (sizeof (struct copy_info));
4473  p->file = cb_source_file;
4475 
4476  /* Save variables */
4478  p->line = cb_source_line;
4481 
4482  p->next = copy_stack;
4483  copy_stack = p;
4484 
4485  /* Set replacing list */
4486  if (replacing_list) {
4487  if (current_replace_list) {
4488  replacing_list->last->next = current_replace_list;
4489  replacing_list->last = current_replace_list->last;
4490  }
4491  current_replace_list = replacing_list;
4492  }
4493 
4494  dname = cobc_strdup (name);
4495  p->dname = dname;
4496  for (s = dname; *s; ++s) {
4497  if (*s == '\\') {
4498  *s = '/';
4499  }
4500  }
4501 
4502  /* Switch to new buffer */
4504  return 0;
4505 }
4506 
4507 int
4508 ppcopy (const char *name, const char *lib, struct cb_replace_list *replace_list)
4509 {
4510  struct cb_text_list *il;
4511  struct cb_text_list *el;
4512  const char *s;
4513 
4514  /* Locate and open COPY file */
4515  if (lib) {
4516  snprintf (plexbuff1, (size_t)COB_SMALL_MAX, "%s/%s", lib, name);
4517  plexbuff1[COB_SMALL_MAX] = 0;
4518  s = plexbuff1;
4519  } else {
4520  s = name;
4521  }
4522 
4523  /* Find the file */
4524  if (access (s, R_OK) == 0) {
4525  return ppopen (s, replace_list);
4526  }
4527 
4528  for (el = cb_extension_list; el; el = el->next) {
4529  snprintf (plexbuff2, (size_t)COB_SMALL_MAX, "%s%s", s, el->text);
4530  plexbuff2[COB_SMALL_MAX] = 0;
4531  if (access (plexbuff2, R_OK) == 0) {
4532  return ppopen (plexbuff2, replace_list);
4533  }
4534  }
4535 
4536  if (*s != '/') {
4537  for (il = cb_include_list; il; il = il->next) {
4538  for (el = cb_extension_list; el; el = el->next) {
4539  snprintf (plexbuff2, (size_t)COB_SMALL_MAX,
4540  "%s/%s%s", il->text, name, el->text);
4541  plexbuff2[COB_SMALL_MAX] = 0;
4542  if (access (plexbuff2, R_OK) == 0) {
4543  return ppopen (plexbuff2, replace_list);
4544  }
4545  }
4546  }
4547  }
4548  cb_error ("%s: %s", name, _("No such file or directory"));
4549  return -1;
4550 }
4551 
4552 void
4553 ppparse_error (const char *msg)
4554 {
4555  cb_plex_error (newline_count, msg);
4556 }
4557 
4558 void
4560 {
4561  /* Reset variables */
4562  plex_skip_input = 0;
4563  plex_nest_depth = 0;
4564  memset (plex_cond_stack, 0, sizeof(plex_cond_stack));
4565  requires_listing_line = 1;
4566  comment_allowed = 1;
4567 }
4568 
4569 void
4571 {
4572  if (plexbuff1) {
4573  cobc_free (plexbuff1);
4574  plexbuff1 = NULL;
4575  }
4576  if (plexbuff2) {
4577  cobc_free (plexbuff2);
4578  plexbuff2 = NULL;
4579  }
4580 }
4581 
4582 void
4584 {
4585  (void)pplex_destroy ();
4586 }
4587 
4588 void
4589 plex_action_directive (const unsigned int cmdtype, const unsigned int is_true)
4590 {
4591  unsigned int n;
4592 
4593  /* Action IF/ELSE/END-IF/ELIF */
4594  switch (cmdtype) {
4595  case PLEX_ACT_IF:
4596  /* Push stack - First occurrence is dummy */
4597  if (++plex_nest_depth >= PLEX_COND_DEPTH) {
4598  cobc_abort_pr (_("Directive nest depth exceeded - %d"),
4599  PLEX_COND_DEPTH);
4600  COBC_ABORT ();
4601  }
4603  /* Intersection with previous - first is always 0 */
4604  n = plex_cond_stack[plex_nest_depth - 1].skip | !is_true;
4608  plex_skip_input = n;
4609  return;
4610  case PLEX_ACT_ELSE:
4611  /* Must have an associated IF/ELIF */
4612  if (!plex_nest_depth ||
4613  plex_cond_stack[plex_nest_depth].cmd != 1) {
4614  cb_plex_error (newline_count,
4615  _("ELSE directive without matching IF/ELIF"));
4616  return;
4617  }
4619  /* Reverse any IF/ELIF condition */
4623  /* Intersection with previous */
4624  plex_skip_input = plex_cond_stack[plex_nest_depth - 1].skip | n;
4625  return;
4626  case PLEX_ACT_END:
4627  /* Must have an associated IF/ELIF/ELSE */
4628  if (!plex_nest_depth ||
4629  !plex_cond_stack[plex_nest_depth].cmd) {
4630  cb_plex_error (newline_count,
4631  _("END-IF directive without matching IF/ELIF/ELSE"));
4632  return;
4633  }
4638  /* Pop stack - set skip to previous */
4639  plex_nest_depth--;
4640  plex_skip_input = plex_cond_stack[plex_nest_depth].skip;
4641  return;
4642  case PLEX_ACT_ELIF:
4643  /* Must have an associated IF/ELIF */
4644  if (!plex_nest_depth ||
4645  plex_cond_stack[plex_nest_depth].cmd != 1) {
4646  cb_plex_error (newline_count,
4647  _("ELIF directive without matching IF/ELIF"));
4648  return;
4649  }
4651  if (plex_cond_stack[plex_nest_depth].cond) {
4652  /* Previous IF or one of previous ELIF was true */
4653  /* Set to skip */
4654  n = 1U;
4655  } else if (is_true) {
4656  /* Condition is true */
4658  n = 0;
4659  } else {
4660  /* Set to skip */
4661  n = 1U;
4662  }
4664  /* Intersection with previous */
4665  plex_skip_input = plex_cond_stack[plex_nest_depth - 1].skip | n;
4666  return;
4667  default:
4668  cobc_abort_pr (_("Invalid internal case - %u"),
4669  cmdtype);
4670  COBC_ABORT ();
4671  }
4672 }
4673 
4674 /* Local functions */
4675 
4676 static void
4677 switch_to_buffer (const int line, const char *file, const YY_BUFFER_STATE buffer)
4678 {
4679  /* Reset file/line */
4680  cb_source_line = line;
4682  fprintf (ppout, "#line %d \"%s\"\n", line, file);
4683  /* Switch buffer */
4684  pp_switch_to_buffer (buffer);
4685 }
4686 
4687 static int
4688 ppinput (char *buff, const size_t max_size)
4689 {
4690  char *bp;
4691  size_t gotcr;
4692  size_t line_overflow;
4693  size_t continuation;
4694  int ipchar;
4695  int i;
4696  int n;
4697  int coln;
4698 
4699  /* Read line(s) */
4700 
4701  continuation = 0;
4702 start:
4703  if (unlikely(buffer_overflow ||
4704  (newline_count + PPLEX_BUFF_LEN) >= max_size)) {
4705  if (need_continuation || continuation) {
4706  cb_plex_error (newline_count,
4707  _("Buffer overrun - Too many continuation lines"));
4708  return YY_NULL;
4709  }
4710  if (newline_count < max_size) {
4711  memset (buff, '\n', newline_count);
4712  buff[newline_count] = 0;
4713  ipchar = (int)newline_count;
4714  newline_count = 0;
4715  buffer_overflow = 0;
4716  return ipchar;
4717  }
4718  buffer_overflow = 1;
4719  ipchar = max_size - 1;
4720  memset (buff, '\n', (size_t)ipchar);
4721  buff[ipchar] = 0;
4722  newline_count -= ipchar;
4723  return ipchar;
4724  }
4725  gotcr = 0;
4726  line_overflow = 0;
4727  ipchar = 0;
4728  for (n = 0; ipchar != '\n';) {
4729  if (unlikely(n == PPLEX_BUFF_LEN)) {
4730  if (line_overflow != 2) {
4731  line_overflow = 1;
4732  }
4733  }
4734  ipchar = getc (ppin);
4735  if (unlikely(ipchar == EOF)) {
4736  if (n > 0) {
4737  /* No end of line at end of file */
4738  break;
4739  }
4740  if (newline_count == 0) {
4741  return YY_NULL;
4742  }
4743  memset (buff, '\n', newline_count);
4744  buff[newline_count] = 0;
4745  ipchar = (int)newline_count;
4746  newline_count = 0;
4747  return ipchar;
4748  }
4749 #ifndef COB_EBCDIC_MACHINE
4750  if (unlikely(ipchar == 0x1A && !n)) {
4751  continue;
4752  }
4753 #endif
4754  if (unlikely(gotcr)) {
4755  gotcr = 0;
4756  if (ipchar != '\n') {
4757  if (likely(line_overflow == 0)) {
4758  buff[n++] = '\r';
4759  } else {
4760  line_overflow = 2;
4761  }
4762  }
4763  }
4764  if (unlikely(ipchar == '\r')) {
4765  gotcr = 1;
4766  continue;
4767  }
4768  if (unlikely(ipchar == '\t')) {
4769  if (likely(line_overflow == 0)) {
4770  buff[n++] = ' ';
4771  while (n % cb_tab_width != 0) {
4772  buff[n++] = ' ';
4773  }
4774  if (unlikely(n > PPLEX_BUFF_LEN)) {
4775  n = PPLEX_BUFF_LEN;
4776  }
4777  }
4778  continue;
4779  }
4780  if (likely(line_overflow == 0)) {
4781  buff[n++] = (char)ipchar;
4782  } else if ((char)ipchar != ' ' && (char)ipchar != '\n') {
4783  line_overflow = 2;
4784  }
4785  }
4786 
4787  if (buff[n - 1] != '\n') {
4788  /* FIXME: cb_source_line is one too low when CB_FORMAT_FREE is used
4789  [but only during ppinput() in pplex.l ?] - Workaround for now:
4790  Temporary newline_count + 1
4791  */
4793  if (line_overflow == 0) {
4794  cb_plex_warning (newline_count + 1,
4795  _("Line not terminated by a newline"));
4796  } else if (line_overflow == 2) {
4797  cb_plex_warning (newline_count + 1,
4798  _("Source text exceeds %d bytes, will be truncated"), PPLEX_BUFF_LEN);
4799  }
4800  } else {
4801  if (line_overflow == 0) {
4802  cb_plex_warning (newline_count,
4803  _("Line not terminated by a newline"));
4804  } else if (line_overflow == 2) {
4805  cb_plex_warning (newline_count,
4806  _("Source text exceeds %d bytes, will be truncated"), PPLEX_BUFF_LEN);
4807  }
4808  }
4809  buff[n++] = '\n';
4810  }
4811  buff[n] = 0;
4812 
4814  if (n < 8) {
4815  /* Line too short */
4816  newline_count++;
4817  goto start;
4818  }
4819 
4820  if (cb_flag_mfcomment) {
4821  if (buff[0] == '*' || buff[0] == '/') {
4822  newline_count++;
4823  goto start;
4824  }
4825  }
4826 
4827  /* Check if text is longer than cb_text_column */
4828  if (n > cb_text_column + 1) {
4829  /* Show warning if it is not whitespace
4830  (postponed after checking for comments by setting
4831  line_overflow to first column that leads to
4832  "source text too long")
4833  */
4834  if (cb_warn_column_overflow && line_overflow == 0) {
4835  for (coln = cb_text_column; coln < n; ++coln) {
4836  if (buff[coln] != ' ' && buff[coln] != '\n') {
4837  line_overflow = coln;
4838  break;
4839  }
4840  }
4841  } else {
4842  line_overflow = 0;
4843  }
4844  /* Remove it */
4845  buff[cb_text_column] = '\n';
4846  buff[cb_text_column + 1] = 0;
4847  n = cb_text_column + 1;
4848  } else {
4849  line_overflow = 0;
4850  }
4851 
4852  memset (buff, ' ', (size_t)6);
4853  /* Note we allow directive lines to start at column 7 */
4854  bp = &buff[6];
4855  } else {
4856  bp = buff;
4857  }
4858 
4859  /* Check for directives/floating comment at first non-space of line */
4860  ipchar = 0;
4861  i = 0;
4862  for (; *bp; bp++) {
4863  if (*bp != ' ') {
4864  if ((*bp == '$' && !(cb_source_format == CB_FORMAT_FIXED && i == 0)) ||
4865  (*bp == '>' && bp[1] == '>' ) ) {
4866  /* Directive */
4867  ipchar = 1;
4868  } else if ((*bp == '*' && bp[1] == '>' ) ||
4869  (cb_flag_acucomment && *bp == '|') ) {
4870  /* Float comment */
4871  newline_count++;
4872  goto start;
4873  }
4874  break;
4875  }
4876  i = 1;
4877  }
4878  if (ipchar) {
4879  /* Directive - pass complete line with NL to ppparse */
4880  if (newline_count) {
4881  /* Move including NL and NULL byte */
4882  memmove (buff + newline_count, buff, (size_t)(n + 1));
4883  memset (buff, '\n', newline_count);
4884  n += newline_count;
4885  newline_count = 0;
4886  }
4887  return n;
4888  }
4889 
4890  if (plex_skip_input) {
4891  /* Skipping input */
4892  newline_count++;
4893  goto start;
4894  }
4895 
4896  /* Return when free format (no floating comments removed!) */
4898  within_comment = 0;
4899  if (newline_count) {
4900  memmove (buff + newline_count, buff, (size_t)(n + 1));
4901  memset (buff, '\n', newline_count);
4902  n += newline_count;
4903  newline_count = 0;
4904  }
4905  return n;
4906  }
4907 
4908  /* Fixed format */
4909 
4910  /* Check the indicator (column 7) */
4911  if (cb_flag_acucomment && buff[6] == '$') {
4912  buff[6] = '*';
4913  }
4914  switch (buff[6]) {
4915  case ' ':
4916  break;
4917  case '-':
4918  if (unlikely(within_comment)) {
4919  cb_plex_error (newline_count,
4920  _("Invalid continuation in comment entry"));
4921  newline_count++;
4922  goto start;
4923  } else if (!need_continuation) {
4924  cb_verify (cb_word_continuation, _("Continuation of COBOL words"));
4925  }
4926  continuation = 1;
4927  break;
4928  case 'd':
4929  case 'D':
4930  /* Debugging line */
4931  if (cb_flag_debugging_line) {
4932  break;
4933  }
4934  newline_count++;
4935  goto start;
4936  case '*':
4937  case '/':
4938  /* Comment line */
4939  newline_count++;
4940  goto start;
4941  default:
4942  /* Invalid indicator */
4943  cb_plex_error (newline_count,
4944  _("Invalid indicator '%c' at column 7"), buff[6]);
4945  newline_count++;
4946  return YY_NULL;
4947  }
4948 
4949  /* Skip comments that follow after AUTHORS, etc. */
4950  if (unlikely(within_comment)) {
4951  /* Check all of "Area A" */
4952  for (ipchar = 7; ipchar < (n - 1) && ipchar < 11; ++ipchar) {
4953  if (buff[ipchar] != ' ') {
4954  ipchar = 0;
4955  break;
4956  }
4957  }
4958  if (ipchar) {
4959  newline_count++;
4960  goto start;
4961  }
4962  within_comment = 0;
4963  }
4964 
4965  /* Skip blank lines */
4966  for (i = 7; buff[i] == ' '; ++i) {
4967  ;
4968  }
4969 
4970  if (buff[i] == '\n') {
4971  newline_count++;
4972  goto start;
4973  }
4974 
4975  buff[6] = ' ';
4976  bp = buff + 7;
4977 
4978  if (unlikely(continuation)) {
4979  /* Line continuation */
4980  need_continuation = 0;
4981  for (; *bp == ' '; ++bp) {
4982  ;
4983  }
4984  /* Validate concatenation */
4985  if (consecutive_quotation) {
4986  if (bp[0] == quotation_mark && bp[1] == quotation_mark) {
4987  bp++;
4988  } else {
4989  cb_plex_error (newline_count,
4990  _("Invalid line continuation"));
4991  return YY_NULL;
4992  }
4993  quotation_mark = 0;
4994  consecutive_quotation = 0;
4995  } else if (quotation_mark) {
4996  /* Literal concatenation */
4997  if (*bp == quotation_mark) {
4998  bp++;
4999  } else {
5000  cb_plex_error (newline_count,
5001  _("Invalid line continuation"));
5002  return YY_NULL;
5003  }
5004  }
5005  } else {
5006  /* Normal line */
5007  if (need_continuation) {
5008  cb_plex_error (newline_count,
5009  _("Continuation character expected"));
5010  need_continuation = 0;
5011  }
5012  quotation_mark = 0;
5013  consecutive_quotation = 0;
5014  }
5015 
5016  /* Check if string literal is to be continued */
5017  for (i = bp - buff; buff[i] != '\n'; ++i) {
5018  /* Pick up floating comment and force loop exit */
5019  if (!quotation_mark && ((buff[i] == '*' && buff[i + 1] == '>') ||
5020  (cb_flag_acucomment && buff[i] == '|') ) ) {
5021  /* remove indicator "source text too long" if the column
5022  leading to the indicator comes after the floating comment
5023  */
5024  if (i < cb_text_column) {
5025  line_overflow = 0;
5026  }
5027  /* Set to null, 'i' is predecremented further below */
5028  buff[i] = 0;
5029  break;
5030  } else if (buff[i] == '\'' || buff[i] == '"') {
5031  if (quotation_mark == 0) {
5032  /* Literal start */
5033  quotation_mark = buff[i];
5034  } else if (quotation_mark == buff[i]) {
5035  if (i == cb_text_column - 1) {
5036  /* Consecutive quotation */
5037  consecutive_quotation = 1;
5038  } else {
5039  /* Literal end */
5040  quotation_mark = 0;
5041  }
5042  }
5043  }
5044  }
5045 
5046  if (unlikely(quotation_mark)) {
5047  /* Expecting continuation */
5048  if (!consecutive_quotation) {
5049  need_continuation = 1;
5050  }
5051  for (; i < cb_text_column;) {
5052  buff[i++] = ' ';
5053  }
5054  buff[i] = 0;
5055  } else {
5056  /* Truncate trailing spaces, including the newline */
5057  for (i--; i >= 0 && buff[i] == ' '; i--) {
5058  ;
5059  }
5060  if (i < 0) {
5061  /* Empty line after removing floating comment */
5062  newline_count++;
5063  goto start;
5064  }
5065  if (buff[i] == '\'' || buff[i] == '\"') {
5066  buff[++i] = ' ';
5067  }
5068  buff[i + 1] = 0;
5069  }
5070 
5071  /* Show warning if text is longer than cb_text_column
5072  and not whitespace (postponed here) */
5073  if (line_overflow != 0) {
5074  cb_plex_warning (newline_count,
5075  _("Source text after program-text area (column %d)"),
5076  cb_text_column);
5077  }
5078 
5079  if (unlikely(continuation)) {
5080  gotcr = strlen (bp);
5081  memmove (buff, bp, gotcr + 1);
5082  newline_count++;
5083  } else {
5084  /* Insert newlines at the start of the buffer */
5085  gotcr = strlen (buff);
5086  if (newline_count != 0) {
5087  memmove (buff + newline_count, buff, gotcr + 1);
5088  memset (buff, '\n', newline_count);
5089  gotcr += newline_count;
5090  }
5091  newline_count = 1;
5092  }
5093  return (int)gotcr;
5094 }
5095 
5096 static struct cb_text_list *
5097 pp_text_list_add (struct cb_text_list *list, const char *text,
5098  const size_t size)
5099 {
5100  struct cb_text_list *p;
5101  void *tp;
5102 
5103  p = cobc_plex_malloc (sizeof (struct cb_text_list));
5104  tp = cobc_plex_malloc (size + 1);
5105  memcpy (tp, text, size);
5106  p->text = tp;
5107  if (!list) {
5108  p->last = p;
5109  return p;
5110  }
5111  list->last->next = p;
5112  list->last = p;
5113  return list;
5114 }
5115 
5116 static void
5117 ppecho (const char *text, const cob_u32_t alt_space, const int textlen)
5118 {
5119  struct cb_replace_list *r;
5120  struct cb_replace_list *save_ptr;
5121  const struct cb_text_list *lno;
5122  struct cb_text_list *queue;
5123  struct cb_text_list *save_queue;
5124  const char *s;
5125  char *temp_ptr;
5126  size_t size;
5127  size_t size2;
5128 
5129  /* Check for replacement text before outputting */
5130  if (alt_space) {
5131  s = pptext;
5132  } else {
5133  s = text;
5134  }
5135 
5136  if (text_queue == NULL && (text[0] == ' ' || text[0] == '\n')) {
5137  /* No replacement */
5138  fwrite (text, (size_t)textlen, (size_t)1, ppout);
5139  if (cb_listing_file) {
5140  check_listing (s, 0);
5141  }
5142  return;
5143  }
5144  if (!current_replace_list && !base_replace_list) {
5145  /* Ouput queue */
5146  for (; text_queue; text_queue = text_queue->next) {
5147  fputs (text_queue->text, ppout);
5148  }
5149  fwrite (text, (size_t)textlen, (size_t)1, ppout);
5150  if (cb_listing_file) {
5151  check_listing (s, 0);
5152  }
5153  return;
5154  }
5155  if (!current_replace_list) {
5156  current_replace_list = base_replace_list;
5157  save_ptr = NULL;
5158  } else {
5159  current_replace_list->last->next = base_replace_list;
5160  save_ptr = current_replace_list->last;
5161  }
5162 
5163  /* Do replacement */
5164  text_queue = pp_text_list_add (text_queue, text, (size_t)textlen);
5165 
5166  save_queue = NULL;
5167  size = 0;
5168  size2 = 0;
5169  for (r = current_replace_list; r; r = r->next) {
5170  queue = text_queue;
5171  /* The LEADING/TRAILING code looks peculiar as we use */
5172  /* variables after breaking out of the loop BUT */
5173  /* ppparse.y guarantees that we have only one token */
5174  /* and therefore only one iteration of this loop */
5175  for (lno = r->old_text; lno; lno = lno->next) {
5176  if (lno->text[0] == ' ' || lno->text[0] == '\n') {
5177  continue;
5178  }
5179  while (queue && (queue->text[0] == ' ' ||
5180  queue->text[0] == '\n')) {
5181  queue = queue->next;
5182  }
5183  if (queue == NULL) {
5184  /* Partial match */
5185  if (!save_ptr) {
5186  current_replace_list = NULL;
5187  } else {
5188  save_ptr->next = NULL;
5189  }
5190  return;
5191  }
5192  if (r->lead_trail == CB_REPLACE_LEADING) {
5193  /* Check leading text */
5194  size = strlen (lno->text);
5195  if (strncasecmp (lno->text, queue->text, size)) {
5196  /* No match */
5197  break;
5198  }
5199  save_queue = queue;
5200  } else if (r->lead_trail == CB_REPLACE_TRAILING) {
5201  /* Check trailing text */
5202  size = strlen (lno->text);
5203  size2 = strlen (queue->text);
5204  if (size2 < size) {
5205  /* No match */
5206  break;
5207  }
5208  size2 -= size;
5209  if (strncasecmp (lno->text, queue->text + size2, size)) {
5210  /* No match */
5211  break;
5212  }
5213  save_queue = queue;
5214  } else if (strcasecmp (lno->text, queue->text)) {
5215  /* No match */
5216  break;
5217  }
5218  queue = queue->next;
5219  }
5220  if (lno == NULL) {
5221  /* Match */
5223  && save_queue /* <- silence warnings */) {
5224  /* Non-matched part of original text */
5225  fprintf (ppout, "%*.*s", (int)size2, (int)size2,
5226  save_queue->text);
5227  if (cb_listing_file) {
5228  temp_ptr = cobc_strdup (save_queue->text);
5229  *(temp_ptr + size2) = 0;
5230  check_listing (temp_ptr, 0);
5231  cobc_free (temp_ptr);
5232  }
5233  }
5234  for (lno = r->new_text; lno; lno = lno->next) {
5235  fputs (lno->text, ppout);
5236  if (cb_listing_file) {
5237  check_listing (lno->text, 0);
5238  }
5239  }
5240  if (r->lead_trail == CB_REPLACE_LEADING
5241  && save_queue /* <- silence warnings */) {
5242  /* Non-matched part of original text */
5243  fputs (save_queue->text + size, ppout);
5244  if (cb_listing_file) {
5245  check_listing (save_queue->text + size, 0);
5246  }
5247  }
5248  text_queue = queue;
5249  continue;
5250  }
5251  }
5252 
5253  /* No match */
5254  for (; text_queue; text_queue = text_queue->next) {
5255  fputs (text_queue->text, ppout);
5256  if (cb_listing_file) {
5257  check_listing (text_queue->text, 0);
5258  }
5259  }
5260  if (!save_ptr) {
5261  current_replace_list = NULL;
5262  } else {
5263  save_ptr->next = NULL;
5264  }
5265 }
5266 
5267 static void
5269 {
5270  int c;
5271 
5272  /* Skip bytes to end of line */
5273  while ((c = input ()) != EOF) {
5274  if (c == '\n') {
5275  break;
5276  }
5277  }
5278  if (c != EOF) {
5279  unput (c);
5280  }
5281 }
5282 
5283 static void
5285 {
5286  int c;
5287 
5288  while ((c = input ()) != EOF) {
5289  if (c == '\n') {
5290  break;
5291  }
5292  if (!plex_skip_input) {
5293  putchar (c);
5294  }
5295  }
5296  if (!plex_skip_input) {
5297  putchar ('\n');
5298  }
5299  if (c != EOF) {
5300  unput (c);
5301  }
5302 }
5303 
5304 static void
5305 check_comments (const char *keyword, const char *text)
5306 {
5307  /* Treated as comments when in Identification Division */
5308  if (comment_allowed) {
5309  cb_verify (cb_comment_paragraphs, keyword);
5310  /* Skip comments until the end of line. */
5311  within_comment = 1;
5312  skip_to_eol ();
5313  } else {
5314  ppecho (text, 0, ppleng);
5315  }
5316 }
5317 
5318 static void
5319 check_listing (const char *text, const unsigned int comment)
5320 {
5321  const char *s;
5322  char c;
5323 
5324  /* Check for listing */
5325  if (!cb_listing_file) {
5326  /* Nothing to do */
5327  return;
5328  }
5329  if (!text) {
5330  return;
5331  }
5332  if (cobc_gen_listing > 1) {
5333  /* Passed to cobxref */
5334  fputs (text, cb_listing_file);
5335  return;
5336  }
5337  if (comment) {
5338  c = '*';
5339  } else {
5340  c = ' ';
5341  }
5342 
5343  if (requires_listing_line) {
5344  if (requires_new_line) {
5345  requires_new_line = 0;
5346  putc ('\n', cb_listing_file);
5347  }
5348  fprintf (cb_listing_file, "%6d%c", ++listing_line, c);
5349  }
5350 
5351  if (requires_listing_line && cb_source_format == CB_FORMAT_FIXED &&
5352  strlen (text) > 6) {
5353  s = &text[6];
5354  } else {
5355  s = text;
5356  }
5357  fputs (s, cb_listing_file);
5358  if (strchr (text, '\n')) {
5359  requires_listing_line = 1;
5360  } else {
5361  requires_listing_line = 0;
5362  }
5363 }
5364 
Definition: parser.c:1852
unsigned short int flex_uint16_t
Definition: pplex.c:75
#define YY_DECL
Definition: pplex.c:2329
struct cb_text_list * next
Definition: cobc.h:160
#define YY_INPUT(buf, result, max_size)
Definition: pplex.c:2073
#define INITIAL
Definition: pplex.c:2177
#define YY_BREAK
Definition: pplex.c:2341
Definition: parser.c:1437
static int ppinput(char *, const size_t)
Definition: pplex.c:4688
#define YY_END_OF_BUFFER
Definition: pplex.c:394
void pprestart(FILE *input_file)
Immediately switch to a different input stream.
Definition: pplex.c:3958
char * yy_buf_pos
Definition: pplex.c:224
#define SET_DIRECTIVE_STATE
Definition: pplex.c:2182
FILE * yy_input_file
Definition: pplex.c:221
static unsigned int plex_nest_depth
Definition: pplex.c:2139
Definition: ppparse.c:615
void cobc_abort_pr(const char *fmt,...)
Definition: cobc.c:587
Definition: ppparse.c:616
#define ENDIF_DIRECTIVE_STATE
Definition: pplex.c:2186
#define cob_u32_t
Definition: common.h:31
#define YY_DO_BEFORE_ACTION
Definition: pplex.c:386
const char * cb_source_file
Definition: cobc.c:145
struct cb_text_list * cb_extension_list
Definition: cobc.c:151
#define YY_STATE_EOF(state)
Definition: pplex.c:156
static int input(void)
Definition: pplex.c:3881
struct cb_text_list * cb_include_list
Definition: cobc.c:149
static char * yy_last_accepting_cpos
Definition: pplex.c:2028
static int ppwrap(void)
Definition: pplex.c:2068
#define PPLEX_BUFF_LEN
Definition: pplex.c:2072
static flex_int16_t yy_base[1183]
Definition: pplex.c:569
const char * text
Definition: cobc.h:162
int pp_flex_debug
Definition: pplex.c:2031
Definition: parser.c:1653
int flex_int32_t
Definition: pplex.c:73
int yy_fill_buffer
Definition: pplex.c:261
#define ECHO
Definition: pplex.c:2074
Definition: ppparse.c:617
Definition: parser.c:1562
Definition: parser.c:1392
Definition: ppparse.c:600
YYSTYPE pplval
Definition: ppparse.c:1646
void cb_plex_warning(const size_t, const char *,...) COB_A_FORMAT23
Definition: error.c:119
static void ppecho(const char *, const cob_u32_t, const int)
Definition: pplex.c:5117
#define COPY_STATE
Definition: pplex.c:2178
FILE * ppout
Definition: pplex.c:367
Definition: ppparse.c:618
int warningopt
Definition: cobc.c:176
unsigned int cb_verify(const enum cb_support, const char *)
Definition: error.c:246
unsigned char YY_CHAR
Definition: pplex.c:365
void pp_switch_to_buffer(YY_BUFFER_STATE new_buffer)
Switch to a different input buffer.
Definition: pplex.c:3975
void cobc_free(void *mptr)
Definition: cobc.c:657
struct yy_buffer_state * YY_BUFFER_STATE
Definition: pplex.c:182
void * cobc_plex_strdup(const char *dupstr)
Definition: cobc.c:933
static char yy_hold_char
Definition: pplex.c:303
Definition: ppparse.c:620
FILE * cb_listing_file
Definition: cobc.c:157
static int quotation_mark
Definition: pplex.c:2140
static int yy_init
Definition: pplex.c:309
#define PLEX_ACT_ELIF
Definition: cobc.h:94
int yy_bs_lineno
The line count.
Definition: pplex.c:255
#define YY_START
Definition: pplex.c:152
int ppcopy(const char *name, const char *lib, struct cb_replace_list *replace_list)
Definition: pplex.c:4508
unsigned int skip
Definition: pplex.c:2120
static int yy_start_stack_ptr
Definition: pplex.c:2239
int cb_source_format
Definition: cobc.c:162
int quotation_mark
Definition: pplex.c:2114
Definition: parser.c:1659
void * ppalloc(yy_size_t)
Definition: pplex.c:4363
static int requires_listing_line
Definition: pplex.c:2142
#define PSEUDO_STATE
Definition: pplex.c:2179
#define YY_START_STACK_INCR
Definition: pplex.c:2311
Definition: parser.c:1655
static char * plexbuff2
Definition: pplex.c:2130
#define YY_END_OF_BUFFER_CHAR
Definition: pplex.c:161
#define YY_BUFFER_NEW
Definition: pplex.c:265
#define COB_SMALL_MAX
Definition: common.h:546
Definition: parser.c:1796
static flex_int16_t yy_accept[1082]
Definition: pplex.c:402
static YY_BUFFER_STATE * yy_buffer_stack
Stack as an array.
Definition: pplex.c:285
yy_size_t yy_buf_size
Definition: pplex.c:229
if fold fold static computed alternate extra correct stack on syntax debugging source implicit stack syntax write single recursive relax optional file
Definition: flag.def:129
static struct copy_info * copy_stack
Definition: pplex.c:2151
#define YY_BUFFER_NORMAL
Definition: pplex.c:266
yy_size_t yy_n_chars
Definition: pplex.c:234
void plex_action_directive(const unsigned int cmdtype, const unsigned int is_true)
Definition: pplex.c:4589
static int yy_get_next_buffer(void)
Definition: pplex.c:3650
#define EOB_ACT_END_OF_FILE
Definition: pplex.c:195
#define TOKEN(offset)
Definition: typeck.c:70
#define yyconst
Definition: pplex.c:129
static void switch_to_buffer(const int, const char *, const YY_BUFFER_STATE)
Definition: pplex.c:4677
static int listing_line
Definition: pplex.c:2141
static void pp_init_buffer(YY_BUFFER_STATE b, FILE *file)
Definition: pplex.c:4067
struct copy_info * next
Definition: pplex.c:2108
short int flex_int16_t
Definition: pplex.c:72
unsigned int cobc_gen_listing
Definition: cobc.c:180
#define EOB_ACT_CONTINUE_SCAN
Definition: pplex.c:194
static int yy_start
Definition: pplex.c:310
void ppparse_error(const char *msg)
Definition: pplex.c:4553
int pplex(void)
The main scanner function which does all the work.
Definition: pplex.c:2352
unsigned char flex_uint8_t
Definition: pplex.c:74
#define yyterminate()
Definition: pplex.c:2306
static size_t buffer_overflow
Definition: pplex.c:2136
#define IF_DIRECTIVE_STATE
Definition: pplex.c:2184
#define PLEX_ACT_END
Definition: cobc.h:93
int yy_at_bol
Definition: pplex.c:253
signed char flex_int8_t
Definition: pplex.c:71
static void yy_push_state(int new_state)
Definition: pplex.c:4216
#define YY_CURRENT_BUFFER_LVALUE
Definition: pplex.c:300
unsigned int flex_uint32_t
Definition: pplex.c:76
static int * yy_start_stack
Definition: pplex.c:2241
static flex_int32_t yy_meta[74]
Definition: pplex.c:557
char * s
Definition: ppparse.c:649
int yy_bs_column
The column count.
Definition: pplex.c:256
static flex_int16_t yy_nxt[5374]
Definition: pplex.c:837
static size_t newline_count
Definition: pplex.c:2131
Definition: parser.c:1584
#define SOURCE_DIRECTIVE_STATE
Definition: pplex.c:2180
#define CB_REPLACE_TRAILING
Definition: cobc.h:70
#define _(s)
Definition: cobcrun.c:59
#define YY_BUFFER_EOF_PENDING
Definition: pplex.c:277
#define COB_DASH
Definition: cobc.h:121
#define YY_READ_BUF_SIZE
Definition: pplex.c:2063
yy_size_t ppleng
Definition: pplex.c:305
#define unlikely(x)
Definition: common.h:437
#define ELSE_DIRECTIVE_STATE
Definition: pplex.c:2185
#define YY_AT_BOL()
Definition: pplex.c:361
#define CB_REPLACE_LEADING
Definition: cobc.h:69
struct cb_replace_list * replacing
Definition: pplex.c:2111
int line
Definition: pplex.c:2113
static size_t need_continuation
Definition: pplex.c:2135
struct cb_replace_list * last
Definition: cobc.h:168
static yy_size_t yy_n_chars
Definition: pplex.c:304
int source_format
Definition: pplex.c:2115
EC ARGUMENT EC EC BOUND EC BOUND EC BOUND EC BOUND TABLE EC DATA EC DATA EC DATA PTR NULL
Definition: exception.def:95
static void display_to_eol(void)
Definition: pplex.c:5284
void plex_clear_all(void)
Definition: pplex.c:4570
static yy_state_type yy_get_previous_state(void)
Definition: pplex.c:3784
static size_t yy_buffer_stack_top
index of top of stack.
Definition: pplex.c:283
Definition: parser.c:1590
#define COBC_ABORT()
Definition: cobc.h:61
static size_t yy_buffer_stack_max
capacity of stack.
Definition: pplex.c:284
Definition: parser.c:1652
YY_BUFFER_STATE pp_create_buffer(FILE *file, int size)
Allocate and initialize an input buffer state.
Definition: pplex.c:4020
#define YY_USER_INIT
Definition: pplex.c:2076
int yy_state_type
Definition: pplex.c:369
void ppfree(void *)
Definition: pplex.c:4380
void pp_flush_buffer(YY_BUFFER_STATE b)
Discard all buffered characters.
Definition: pplex.c:4095
static size_t consecutive_quotation
Definition: pplex.c:2134
Definition: parser.c:1751
struct cb_text_list * last
Definition: cobc.h:161
char * pptext
Definition: pplex.c:2040
static struct cb_text_list * text_queue
Definition: pplex.c:2149
#define BEGIN
Definition: pplex.c:146
#define YY_CURRENT_BUFFER
Definition: pplex.c:293
static size_t within_comment
Definition: pplex.c:2132
char * yy_ch_buf
Definition: pplex.c:223
static void pp_load_buffer_state(void)
Definition: pplex.c:4006
#define YY_SC_TO_UI(c)
Definition: pplex.c:140
static void yy_fatal_error(char msg[])
#define CB_FORMAT_FIXED
Definition: cobc.h:65
void pppush_buffer_state(YY_BUFFER_STATE new_buffer)
Pushes the new state onto the stack.
Definition: pplex.c:4124
#define yytext_ptr
Definition: pplex.c:376
static struct cb_replace_list * save_current_replace
Definition: pplex.c:2146
unsigned int cmd
Definition: pplex.c:2119
#define TURN_DIRECTIVE_STATE
Definition: pplex.c:2183
void pppop_buffer_state(void)
Removes and deletes the top of the stack, if present.
Definition: pplex.c:4154
int yy_is_our_buffer
Definition: pplex.c:240
int pplex_destroy(void)
Definition: pplex.c:4314
unsigned int lead_trail
Definition: cobc.h:172
Definition: parser.c:1503
static struct cb_replace_list * current_replace_list
Definition: pplex.c:2145
void * cobc_strdup(const char *dupstr)
Definition: cobc.c:669
YY_BUFFER_STATE pp_scan_string(char *yy_str)
#define YY_EXIT_FAILURE
Definition: pplex.c:4249
void plex_clear_vars(void)
Definition: pplex.c:4559
void cb_error(const char *,...) COB_A_FORMAT12
Definition: error.c:98
static int yy_init_globals(void)
Get the current token.
Definition: pplex.c:4281
struct cb_replace_list * next
Definition: cobc.h:167
static flex_int16_t yy_chk[5374]
Definition: pplex.c:1432
YY_BUFFER_STATE pp_scan_bytes(char *bytes, yy_size_t len)
YY_BUFFER_STATE pp_scan_buffer(char *base, yy_size_t size)
if fold fold static computed alternate extra correct stack on syntax debugging line
Definition: flag.def:90
#define PLEX_COND_DEPTH
Definition: pplex.c:2105
int ppopen(const char *name, struct cb_replace_list *replacing_list)
Definition: pplex.c:4420
#define YY_RULE_SETUP
Definition: pplex.c:2344
Definition: ppparse.c:584
static char * yy_c_buf_p
Definition: pplex.c:308
static yy_state_type yy_last_accepting_state
Definition: pplex.c:2027
FILE * ppin
Definition: pplex.c:367
static size_t inside_bracket
Definition: pplex.c:2133
flex_int32_t yy_verify
Definition: pplex.c:399
#define YY_NULL
Definition: pplex.c:133
YY_BUFFER_STATE buffer
Definition: pplex.c:2112
Definition: parser.c:1538
#define unput(c)
Definition: pplex.c:215
unsigned int cond
Definition: pplex.c:2121
#define YY_FATAL_ERROR(msg)
Definition: pplex.c:2316
Definition: parser.c:1790
static int yy_start_stack_depth
Definition: pplex.c:2240
static char * plexbuff1
Definition: pplex.c:2129
static int requires_new_line
Definition: pplex.c:2143
int line
Definition: pplex.c:2122
Definition: parser.c:1634
static void check_comments(const char *, const char *)
Definition: pplex.c:5305
void * cobc_plex_malloc(const size_t size)
Definition: cobc.c:916
void * cobc_malloc(const size_t size)
Definition: cobc.c:643
#define CB_FORMAT_FREE
Definition: cobc.h:66
#define YY_MORE_ADJ
Definition: pplex.c:2038
int cb_source_line
Definition: cobc.c:178
void * pprealloc(void *, yy_size_t)
Definition: pplex.c:4368
Definition: ppparse.c:619
flex_int32_t yy_nxt
Definition: pplex.c:400
Definition: parser.c:1360
int pplineno
Definition: pplex.c:373
#define PLEX_ACT_IF
Definition: cobc.h:91
int yy_is_interactive
Definition: pplex.c:247
#define R_OK
Definition: cobc.h:58
static void yy_pop_state(void)
Definition: pplex.c:4240
#define EOB_ACT_LAST_MATCH
Definition: pplex.c:196
static struct cb_replace_list * base_replace_list
Definition: pplex.c:2147
const struct cb_text_list * old_text
Definition: cobc.h:170
static flex_int16_t yy_def[1183]
Definition: pplex.c:703
#define YY_NEW_FILE
Definition: pplex.c:159
static void yyunput(int c, char *buf_ptr)
const struct cb_text_list * new_text
Definition: cobc.h:171
#define YY_BUF_SIZE
Definition: pplex.c:2065
Definition: parser.c:1369
Definition: ppparse.c:595
static void check_listing(const char *, const unsigned int)
Definition: pplex.c:5319
static void ppensure_buffer_stack(void)
Definition: pplex.c:4173
#define DEFINE_DIRECTIVE_STATE
Definition: pplex.c:2181
static struct cb_text_list * pp_text_list_add(struct cb_text_list *list, const char *text, const size_t size)
Definition: pplex.c:5097
static int yy_did_buffer_switch_on_eof
Definition: pplex.c:315
void cb_plex_error(const size_t, const char *,...) COB_A_FORMAT23
Definition: error.c:130
const char * file
Definition: pplex.c:2109
int yy_buffer_status
Definition: pplex.c:263
#define YY_RESTORE_YY_MORE_OFFSET
Definition: pplex.c:2039
static yy_state_type yy_try_NUL_trans(yy_state_type current_state)
Definition: pplex.c:3817
char * dname
Definition: pplex.c:2110
#define likely(x)
Definition: common.h:436
static struct plex_stack plex_cond_stack[16]
Definition: pplex.c:2153
void pp_delete_buffer(YY_BUFFER_STATE b)
Destroy the buffer.
Definition: pplex.c:4048
Definition: parser.c:1576
static flex_int32_t yy_ec[256]
Definition: pplex.c:525
struct cb_replace_list * prev
Definition: cobc.h:169
static void skip_to_eol(void)
Definition: pplex.c:5268
#define PLEX_ACT_ELSE
Definition: cobc.h:92
int errorcount
Definition: cobc.c:173
size_t yy_size_t
Definition: pplex.c:187
void plex_call_destroy(void)
Definition: pplex.c:4583
static unsigned int plex_skip_input
Definition: pplex.c:2138
void pp_set_replace_list(struct cb_replace_list *list, const cob_u32_t is_pushpop)
Definition: pplex.c:4394
static size_t comment_allowed
Definition: pplex.c:2137