Line data Source code
1 : #line 2 "psqlscan.c"
2 : #line 2 "psqlscan.l"
3 : /*-------------------------------------------------------------------------
4 : *
5 : * psqlscan.l
6 : * lexical scanner for SQL commands
7 : *
8 : * This lexer used to be part of psql, and that heritage is reflected in
9 : * the file name as well as function and typedef names, though it can now
10 : * be used by other frontend programs as well. It's also possible to extend
11 : * this lexer with a compatible add-on lexer to handle program-specific
12 : * backslash commands.
13 : *
14 : * This code is mainly concerned with determining where the end of a SQL
15 : * statement is: we are looking for semicolons that are not within quotes,
16 : * comments, or parentheses. The most reliable way to handle this is to
17 : * borrow the backend's flex lexer rules, lock, stock, and barrel. The rules
18 : * below are (except for a few) the same as the backend's, but their actions
19 : * are just ECHO whereas the backend's actions generally do other things.
20 : *
21 : * XXX The rules in this file must be kept in sync with the backend lexer!!!
22 : *
23 : * XXX Avoid creating backtracking cases --- see the backend lexer for info.
24 : *
25 : * See psqlscan_int.h for additional commentary.
26 : *
27 : * Portions Copyright (c) 1996-2017, PostgreSQL Global Development Group
28 : * Portions Copyright (c) 1994, Regents of the University of California
29 : *
30 : * IDENTIFICATION
31 : * src/fe_utils/psqlscan.l
32 : *
33 : *-------------------------------------------------------------------------
34 : */
35 : #include "postgres_fe.h"
36 :
37 : #include "fe_utils/psqlscan.h"
38 :
39 : #include "libpq-fe.h"
40 :
41 :
42 :
43 : #line 44 "psqlscan.c"
44 :
45 : #define YY_INT_ALIGNED short int
46 :
47 : /* A lexical scanner generated by flex */
48 :
49 : #define FLEX_SCANNER
50 : #define YY_FLEX_MAJOR_VERSION 2
51 : #define YY_FLEX_MINOR_VERSION 5
52 : #define YY_FLEX_SUBMINOR_VERSION 39
53 : #if YY_FLEX_SUBMINOR_VERSION > 0
54 : #define FLEX_BETA
55 : #endif
56 :
57 : /* First, we deal with platform-specific or compiler-specific issues. */
58 :
59 : /* begin standard C headers. */
60 : #include <stdio.h>
61 : #include <string.h>
62 : #include <errno.h>
63 : #include <stdlib.h>
64 :
65 : /* end standard C headers. */
66 :
67 : /* flex integer type definitions */
68 :
69 : #ifndef FLEXINT_H
70 : #define FLEXINT_H
71 :
72 : /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
73 :
74 : #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
75 :
76 : /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
77 : * if you want the limit (max/min) macros for int types.
78 : */
79 : #ifndef __STDC_LIMIT_MACROS
80 : #define __STDC_LIMIT_MACROS 1
81 : #endif
82 :
83 : #include <inttypes.h>
84 : typedef int8_t flex_int8_t;
85 : typedef uint8_t flex_uint8_t;
86 : typedef int16_t flex_int16_t;
87 : typedef uint16_t flex_uint16_t;
88 : typedef int32_t flex_int32_t;
89 : typedef uint32_t flex_uint32_t;
90 : #else
91 : typedef signed char flex_int8_t;
92 : typedef short int flex_int16_t;
93 : typedef int flex_int32_t;
94 : typedef unsigned char flex_uint8_t;
95 : typedef unsigned short int flex_uint16_t;
96 : typedef unsigned int flex_uint32_t;
97 :
98 : /* Limits of integral types. */
99 : #ifndef INT8_MIN
100 : #define INT8_MIN (-128)
101 : #endif
102 : #ifndef INT16_MIN
103 : #define INT16_MIN (-32767-1)
104 : #endif
105 : #ifndef INT32_MIN
106 : #define INT32_MIN (-2147483647-1)
107 : #endif
108 : #ifndef INT8_MAX
109 : #define INT8_MAX (127)
110 : #endif
111 : #ifndef INT16_MAX
112 : #define INT16_MAX (32767)
113 : #endif
114 : #ifndef INT32_MAX
115 : #define INT32_MAX (2147483647)
116 : #endif
117 : #ifndef UINT8_MAX
118 : #define UINT8_MAX (255U)
119 : #endif
120 : #ifndef UINT16_MAX
121 : #define UINT16_MAX (65535U)
122 : #endif
123 : #ifndef UINT32_MAX
124 : #define UINT32_MAX (4294967295U)
125 : #endif
126 :
127 : #endif /* ! C99 */
128 :
129 : #endif /* ! FLEXINT_H */
130 :
131 : #ifdef __cplusplus
132 :
133 : /* The "const" storage-class-modifier is valid. */
134 : #define YY_USE_CONST
135 :
136 : #else /* ! __cplusplus */
137 :
138 : /* C99 requires __STDC__ to be defined as 1. */
139 : #if defined (__STDC__)
140 :
141 : #define YY_USE_CONST
142 :
143 : #endif /* defined (__STDC__) */
144 : #endif /* ! __cplusplus */
145 :
146 : #ifdef YY_USE_CONST
147 : #define yyconst const
148 : #else
149 : #define yyconst
150 : #endif
151 :
152 : /* Returned upon end-of-file. */
153 : #define YY_NULL 0
154 :
155 : /* Promotes a possibly negative, possibly signed char to an unsigned
156 : * integer for use as an array index. If the signed char is negative,
157 : * we want to instead treat it as an 8-bit unsigned char, hence the
158 : * double cast.
159 : */
160 : #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
161 :
162 : /* An opaque pointer. */
163 : #ifndef YY_TYPEDEF_YY_SCANNER_T
164 : #define YY_TYPEDEF_YY_SCANNER_T
165 : typedef void* yyscan_t;
166 : #endif
167 :
168 : /* For convenience, these vars (plus the bison vars far below)
169 : are macros in the reentrant scanner. */
170 : #define yyin yyg->yyin_r
171 : #define yyout yyg->yyout_r
172 : #define yyextra yyg->yyextra_r
173 : #define yyleng yyg->yyleng_r
174 : #define yytext yyg->yytext_r
175 : #define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
176 : #define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
177 : #define yy_flex_debug yyg->yy_flex_debug_r
178 :
179 : /* Enter a start condition. This macro really ought to take a parameter,
180 : * but we do it the disgusting crufty way forced on us by the ()-less
181 : * definition of BEGIN.
182 : */
183 : #define BEGIN yyg->yy_start = 1 + 2 *
184 :
185 : /* Translate the current start state into a value that can be later handed
186 : * to BEGIN to return to the state. The YYSTATE alias is for lex
187 : * compatibility.
188 : */
189 : #define YY_START ((yyg->yy_start - 1) / 2)
190 : #define YYSTATE YY_START
191 :
192 : /* Action number for EOF rule of a given start state. */
193 : #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
194 :
195 : /* Special action meaning "start processing a new file". */
196 : #define YY_NEW_FILE psql_yyrestart(yyin ,yyscanner )
197 :
198 : #define YY_END_OF_BUFFER_CHAR 0
199 :
200 : /* Size of default input buffer. */
201 : #ifndef YY_BUF_SIZE
202 : #ifdef __ia64__
203 : /* On IA-64, the buffer size is 16k, not 8k.
204 : * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
205 : * Ditto for the __ia64__ case accordingly.
206 : */
207 : #define YY_BUF_SIZE 32768
208 : #else
209 : #define YY_BUF_SIZE 16384
210 : #endif /* __ia64__ */
211 : #endif
212 :
213 : /* The state buf must be large enough to hold one state per character in the main buffer.
214 : */
215 : #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
216 :
217 : #ifndef YY_TYPEDEF_YY_BUFFER_STATE
218 : #define YY_TYPEDEF_YY_BUFFER_STATE
219 : typedef struct yy_buffer_state *YY_BUFFER_STATE;
220 : #endif
221 :
222 : #ifndef YY_TYPEDEF_YY_SIZE_T
223 : #define YY_TYPEDEF_YY_SIZE_T
224 : typedef size_t yy_size_t;
225 : #endif
226 :
227 : #define EOB_ACT_CONTINUE_SCAN 0
228 : #define EOB_ACT_END_OF_FILE 1
229 : #define EOB_ACT_LAST_MATCH 2
230 :
231 : #define YY_LESS_LINENO(n)
232 : #define YY_LINENO_REWIND_TO(ptr)
233 :
234 : /* Return all but the first "n" matched characters back to the input stream. */
235 : #define yyless(n) \
236 : do \
237 : { \
238 : /* Undo effects of setting up yytext. */ \
239 : int yyless_macro_arg = (n); \
240 : YY_LESS_LINENO(yyless_macro_arg);\
241 : *yy_cp = yyg->yy_hold_char; \
242 : YY_RESTORE_YY_MORE_OFFSET \
243 : yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
244 : YY_DO_BEFORE_ACTION; /* set up yytext again */ \
245 : } \
246 : while ( 0 )
247 :
248 : #define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner )
249 :
250 : #ifndef YY_STRUCT_YY_BUFFER_STATE
251 : #define YY_STRUCT_YY_BUFFER_STATE
252 : struct yy_buffer_state
253 : {
254 : FILE *yy_input_file;
255 :
256 : char *yy_ch_buf; /* input buffer */
257 : char *yy_buf_pos; /* current position in input buffer */
258 :
259 : /* Size of input buffer in bytes, not including room for EOB
260 : * characters.
261 : */
262 : yy_size_t yy_buf_size;
263 :
264 : /* Number of characters read into yy_ch_buf, not including EOB
265 : * characters.
266 : */
267 : yy_size_t yy_n_chars;
268 :
269 : /* Whether we "own" the buffer - i.e., we know we created it,
270 : * and can realloc() it to grow it, and should free() it to
271 : * delete it.
272 : */
273 : int yy_is_our_buffer;
274 :
275 : /* Whether this is an "interactive" input source; if so, and
276 : * if we're using stdio for input, then we want to use getc()
277 : * instead of fread(), to make sure we stop fetching input after
278 : * each newline.
279 : */
280 : int yy_is_interactive;
281 :
282 : /* Whether we're considered to be at the beginning of a line.
283 : * If so, '^' rules will be active on the next match, otherwise
284 : * not.
285 : */
286 : int yy_at_bol;
287 :
288 : int yy_bs_lineno; /**< The line count. */
289 : int yy_bs_column; /**< The column count. */
290 :
291 : /* Whether to try to fill the input buffer when we reach the
292 : * end of it.
293 : */
294 : int yy_fill_buffer;
295 :
296 : int yy_buffer_status;
297 :
298 : #define YY_BUFFER_NEW 0
299 : #define YY_BUFFER_NORMAL 1
300 : /* When an EOF's been seen but there's still some text to process
301 : * then we mark the buffer as YY_EOF_PENDING, to indicate that we
302 : * shouldn't try reading from the input source any more. We might
303 : * still have a bunch of tokens to match, though, because of
304 : * possible backing-up.
305 : *
306 : * When we actually see the EOF, we change the status to "new"
307 : * (via psql_yyrestart()), so that the user can continue scanning by
308 : * just pointing yyin at a new input file.
309 : */
310 : #define YY_BUFFER_EOF_PENDING 2
311 :
312 : };
313 : #endif /* !YY_STRUCT_YY_BUFFER_STATE */
314 :
315 : /* We provide macros for accessing buffer states in case in the
316 : * future we want to put the buffer states in a more general
317 : * "scanner state".
318 : *
319 : * Returns the top of the stack, or NULL.
320 : */
321 : #define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \
322 : ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \
323 : : NULL)
324 :
325 : /* Same as previous macro, but useful when we know that the buffer stack is not
326 : * NULL or when we need an lvalue. For internal use only.
327 : */
328 : #define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top]
329 :
330 : void psql_yyrestart (FILE *input_file ,yyscan_t yyscanner );
331 : void psql_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
332 : YY_BUFFER_STATE psql_yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner );
333 : void psql_yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
334 : void psql_yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner );
335 : void psql_yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner );
336 : void psql_yypop_buffer_state (yyscan_t yyscanner );
337 :
338 : static void psql_yyensure_buffer_stack (yyscan_t yyscanner );
339 : static void psql_yy_load_buffer_state (yyscan_t yyscanner );
340 : static void psql_yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner );
341 :
342 : #define YY_FLUSH_BUFFER psql_yy_flush_buffer(YY_CURRENT_BUFFER ,yyscanner)
343 :
344 : YY_BUFFER_STATE psql_yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner );
345 : YY_BUFFER_STATE psql_yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner );
346 : YY_BUFFER_STATE psql_yy_scan_bytes (yyconst char *bytes,yy_size_t len ,yyscan_t yyscanner );
347 :
348 : void *psql_yyalloc (yy_size_t ,yyscan_t yyscanner );
349 : void *psql_yyrealloc (void *,yy_size_t ,yyscan_t yyscanner );
350 : void psql_yyfree (void * ,yyscan_t yyscanner );
351 :
352 : #define yy_new_buffer psql_yy_create_buffer
353 :
354 : #define yy_set_interactive(is_interactive) \
355 : { \
356 : if ( ! YY_CURRENT_BUFFER ){ \
357 : psql_yyensure_buffer_stack (yyscanner); \
358 : YY_CURRENT_BUFFER_LVALUE = \
359 : psql_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
360 : } \
361 : YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
362 : }
363 :
364 : #define yy_set_bol(at_bol) \
365 : { \
366 : if ( ! YY_CURRENT_BUFFER ){\
367 : psql_yyensure_buffer_stack (yyscanner); \
368 : YY_CURRENT_BUFFER_LVALUE = \
369 : psql_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \
370 : } \
371 : YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
372 : }
373 :
374 : #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
375 :
376 : /* Begin user sect3 */
377 :
378 : #define psql_yywrap(yyscanner) 1
379 : #define YY_SKIP_YYWRAP
380 :
381 : typedef unsigned char YY_CHAR;
382 :
383 : typedef int yy_state_type;
384 :
385 : #define yytext_ptr yytext_r
386 :
387 : static yyconst flex_int16_t yy_nxt[][41] =
388 : {
389 : {
390 : 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
391 : 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
392 : 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
393 : 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
394 : 0
395 : },
396 :
397 : {
398 : 25, 26, 27, 28, 27, 29, 30, 31, 32, 33,
399 : 31, 34, 35, 36, 33, 33, 37, 38, 39, 40,
400 : 41, 41, 42, 43, 44, 45, 46, 47, 48, 47,
401 : 47, 49, 47, 50, 47, 47, 51, 52, 53, 51,
402 : 52
403 :
404 : },
405 :
406 : {
407 : 25, 26, 27, 28, 27, 29, 30, 31, 32, 33,
408 : 31, 34, 35, 36, 33, 33, 37, 38, 39, 40,
409 : 41, 41, 42, 43, 44, 45, 46, 47, 48, 47,
410 : 47, 49, 47, 50, 47, 47, 51, 52, 53, 51,
411 : 52
412 : },
413 :
414 : {
415 : 25, 54, 54, 54, 54, 54, 54, 54, 54, 54,
416 : 54, 55, 54, 54, 54, 54, 54, 54, 54, 54,
417 : 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
418 : 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
419 : 54
420 :
421 : },
422 :
423 : {
424 : 25, 54, 54, 54, 54, 54, 54, 54, 54, 54,
425 : 54, 55, 54, 54, 54, 54, 54, 54, 54, 54,
426 : 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
427 : 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
428 : 54
429 : },
430 :
431 : {
432 : 25, 56, 56, 56, 56, 57, 56, 57, 56, 57,
433 : 57, 56, 56, 56, 58, 57, 56, 57, 56, 59,
434 : 56, 56, 56, 56, 57, 57, 57, 56, 56, 56,
435 : 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
436 : 56
437 :
438 : },
439 :
440 : {
441 : 25, 56, 56, 56, 56, 57, 56, 57, 56, 57,
442 : 57, 56, 56, 56, 58, 57, 56, 57, 56, 59,
443 : 56, 56, 56, 56, 57, 57, 57, 56, 56, 56,
444 : 56, 56, 56, 56, 56, 56, 56, 56, 56, 56,
445 : 56
446 : },
447 :
448 : {
449 : 25, 60, 60, 60, 60, 60, 61, 60, 60, 60,
450 : 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
451 : 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
452 : 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
453 : 60
454 :
455 : },
456 :
457 : {
458 : 25, 60, 60, 60, 60, 60, 61, 60, 60, 60,
459 : 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
460 : 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
461 : 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
462 : 60
463 : },
464 :
465 : {
466 : 25, 62, 62, 62, 62, 62, 62, 62, 62, 62,
467 : 62, 63, 62, 62, 62, 62, 62, 62, 62, 62,
468 : 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
469 : 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
470 : 62
471 :
472 : },
473 :
474 : {
475 : 25, 62, 62, 62, 62, 62, 62, 62, 62, 62,
476 : 62, 63, 62, 62, 62, 62, 62, 62, 62, 62,
477 : 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
478 : 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
479 : 62
480 : },
481 :
482 : {
483 : 25, 64, 64, 65, 64, 64, 64, 64, 64, 64,
484 : 64, 66, 64, 64, 64, 64, 64, 64, 64, 64,
485 : 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
486 : 64, 64, 64, 64, 64, 64, 64, 64, 67, 64,
487 : 64
488 :
489 : },
490 :
491 : {
492 : 25, 64, 64, 65, 64, 64, 64, 64, 64, 64,
493 : 64, 66, 64, 64, 64, 64, 64, 64, 64, 64,
494 : 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
495 : 64, 64, 64, 64, 64, 64, 64, 64, 67, 64,
496 : 64
497 : },
498 :
499 : {
500 : 25, 68, 68, 68, 68, 68, 68, 68, 68, 68,
501 : 68, 69, 68, 68, 68, 68, 68, 68, 68, 68,
502 : 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
503 : 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
504 : 68
505 :
506 : },
507 :
508 : {
509 : 25, 68, 68, 68, 68, 68, 68, 68, 68, 68,
510 : 68, 69, 68, 68, 68, 68, 68, 68, 68, 68,
511 : 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
512 : 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
513 : 68
514 : },
515 :
516 : {
517 : 25, 70, 70, 71, 70, 70, 70, 70, 72, 70,
518 : 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
519 : 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
520 : 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
521 : 70
522 :
523 : },
524 :
525 : {
526 : 25, 70, 70, 71, 70, 70, 70, 70, 72, 70,
527 : 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
528 : 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
529 : 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
530 : 70
531 : },
532 :
533 : {
534 : 25, 60, 60, 60, 60, 60, 73, 60, 60, 60,
535 : 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
536 : 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
537 : 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
538 : 60
539 :
540 : },
541 :
542 : {
543 : 25, 60, 60, 60, 60, 60, 73, 60, 60, 60,
544 : 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
545 : 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
546 : 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
547 : 60
548 : },
549 :
550 : {
551 : 25, 74, 75, 76, 75, 74, 74, 74, 74, 74,
552 : 74, 74, 74, 74, 74, 74, 74, 77, 74, 74,
553 : 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
554 : 74, 74, 74, 74, 74, 74, 78, 74, 74, 78,
555 : 74
556 :
557 : },
558 :
559 : {
560 : 25, 74, 75, 76, 75, 74, 74, 74, 74, 74,
561 : 74, 74, 74, 74, 74, 74, 74, 77, 74, 74,
562 : 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
563 : 74, 74, 74, 74, 74, 74, 78, 74, 74, 78,
564 : 74
565 : },
566 :
567 : {
568 : 25, 68, 68, 68, 68, 68, 68, 68, 68, 68,
569 : 68, 79, 68, 68, 68, 68, 68, 68, 68, 68,
570 : 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
571 : 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
572 : 68
573 :
574 : },
575 :
576 : {
577 : 25, 68, 68, 68, 68, 68, 68, 68, 68, 68,
578 : 68, 79, 68, 68, 68, 68, 68, 68, 68, 68,
579 : 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
580 : 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
581 : 68
582 : },
583 :
584 : {
585 : 25, 80, 81, 82, 81, 80, 80, 80, 80, 80,
586 : 80, 80, 80, 80, 80, 80, 80, 83, 80, 80,
587 : 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
588 : 80, 80, 80, 80, 80, 80, 84, 80, 80, 84,
589 : 80
590 :
591 : },
592 :
593 : {
594 : 25, 80, 81, 82, 81, 80, 80, 80, 80, 80,
595 : 80, 80, 80, 80, 80, 80, 80, 83, 80, 80,
596 : 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
597 : 80, 80, 80, 80, 80, 80, 84, 80, 80, 84,
598 : 80
599 : },
600 :
601 : {
602 : -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
603 : -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
604 : -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
605 : -25, -25, -25, -25, -25, -25, -25, -25, -25, -25,
606 : -25
607 :
608 : },
609 :
610 : {
611 : 25, -26, -26, -26, -26, -26, -26, -26, -26, -26,
612 : -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
613 : -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
614 : -26, -26, -26, -26, -26, -26, -26, -26, -26, -26,
615 : -26
616 : },
617 :
618 : {
619 : 25, -27, 85, 85, 85, -27, -27, -27, -27, -27,
620 : -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
621 : -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
622 : -27, -27, -27, -27, -27, -27, -27, -27, -27, -27,
623 : -27
624 :
625 : },
626 :
627 : {
628 : 25, -28, 85, 85, 85, -28, -28, -28, -28, -28,
629 : -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
630 : -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
631 : -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
632 : -28
633 : },
634 :
635 : {
636 : 25, -29, -29, -29, -29, 86, -29, 86, -29, 86,
637 : 86, -29, -29, -29, 86, 86, -29, 86, -29, 86,
638 : -29, -29, -29, -29, 86, 87, 86, -29, -29, -29,
639 : -29, -29, -29, -29, -29, -29, -29, -29, -29, -29,
640 : -29
641 :
642 : },
643 :
644 : {
645 : 25, -30, -30, -30, -30, -30, -30, -30, -30, -30,
646 : -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
647 : -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
648 : -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
649 : -30
650 : },
651 :
652 : {
653 : 25, -31, -31, -31, -31, 86, -31, 86, -31, 86,
654 : 86, -31, -31, -31, 86, 86, -31, 86, -31, 86,
655 : -31, -31, -31, -31, 86, 86, 86, -31, -31, -31,
656 : -31, -31, -31, -31, -31, -31, -31, -31, -31, -31,
657 : -31
658 :
659 : },
660 :
661 : {
662 : 25, -32, -32, -32, -32, -32, -32, -32, 88, -32,
663 : -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
664 : 89, 89, -32, -32, -32, -32, -32, 90, 90, 90,
665 : 90, 90, 90, 90, 90, 90, 90, 90, -32, 90,
666 : 90
667 : },
668 :
669 : {
670 : 25, -33, -33, -33, -33, 86, -33, 86, -33, 86,
671 : 86, -33, -33, -33, 86, 86, -33, 86, -33, 86,
672 : -33, -33, -33, -33, 86, 86, 86, -33, -33, -33,
673 : -33, -33, -33, -33, -33, -33, -33, -33, -33, -33,
674 : -33
675 :
676 : },
677 :
678 : {
679 : 25, -34, -34, -34, -34, -34, -34, -34, -34, -34,
680 : -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
681 : -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
682 : -34, -34, -34, -34, -34, -34, -34, -34, -34, -34,
683 : -34
684 : },
685 :
686 : {
687 : 25, -35, -35, -35, -35, -35, -35, -35, -35, -35,
688 : -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
689 : -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
690 : -35, -35, -35, -35, -35, -35, -35, -35, -35, -35,
691 : -35
692 :
693 : },
694 :
695 : {
696 : 25, -36, -36, -36, -36, -36, -36, -36, -36, -36,
697 : -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
698 : -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
699 : -36, -36, -36, -36, -36, -36, -36, -36, -36, -36,
700 : -36
701 : },
702 :
703 : {
704 : 25, -37, -37, -37, -37, -37, -37, -37, -37, -37,
705 : -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
706 : -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
707 : -37, -37, -37, -37, -37, -37, -37, -37, -37, -37,
708 : -37
709 :
710 : },
711 :
712 : {
713 : 25, -38, -38, -38, -38, 86, -38, 86, -38, 86,
714 : 86, -38, -38, -38, 86, 86, -38, 91, -38, 86,
715 : -38, -38, -38, -38, 86, 86, 86, -38, -38, -38,
716 : -38, -38, -38, -38, -38, -38, -38, -38, -38, -38,
717 : -38
718 : },
719 :
720 : {
721 : 25, -39, -39, -39, -39, -39, -39, -39, -39, -39,
722 : -39, -39, -39, -39, -39, -39, -39, -39, 92, -39,
723 : 93, 93, -39, -39, -39, -39, -39, -39, -39, -39,
724 : -39, -39, -39, -39, -39, -39, -39, -39, -39, -39,
725 : -39
726 :
727 : },
728 :
729 : {
730 : 25, -40, -40, -40, -40, 86, -40, 86, -40, 86,
731 : 86, -40, -40, -40, 94, 86, -40, 86, -40, 86,
732 : -40, -40, -40, -40, 86, 86, 86, -40, -40, -40,
733 : -40, -40, -40, -40, -40, -40, -40, -40, -40, -40,
734 : -40
735 : },
736 :
737 : {
738 : 25, -41, -41, -41, -41, -41, -41, -41, -41, -41,
739 : -41, -41, -41, -41, -41, -41, -41, -41, 95, -41,
740 : 96, 96, -41, -41, -41, -41, -41, -41, -41, -41,
741 : -41, 97, -41, -41, -41, -41, -41, -41, -41, -41,
742 : -41
743 :
744 : },
745 :
746 : {
747 : 25, -42, -42, -42, -42, -42, 98, -42, -42, -42,
748 : -42, 99, -42, -42, -42, -42, -42, -42, -42, -42,
749 : 100, 100, 101, -42, -42, 102, -42, 100, 100, 100,
750 : 100, 100, 100, 100, 100, 100, 100, 100, -42, 100,
751 : 100
752 : },
753 :
754 : {
755 : 25, -43, -43, -43, -43, -43, -43, -43, -43, -43,
756 : -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
757 : -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
758 : -43, -43, -43, -43, -43, -43, -43, -43, -43, -43,
759 : -43
760 :
761 : },
762 :
763 : {
764 : 25, -44, -44, -44, -44, 86, -44, 86, -44, 86,
765 : 86, -44, -44, -44, 86, 86, -44, 86, -44, 86,
766 : -44, -44, -44, -44, 86, 103, 104, -44, -44, -44,
767 : -44, -44, -44, -44, -44, -44, -44, -44, -44, -44,
768 : -44
769 : },
770 :
771 : {
772 : 25, -45, -45, -45, -45, 86, -45, 86, -45, 86,
773 : 86, -45, -45, -45, 86, 86, -45, 86, -45, 86,
774 : -45, -45, -45, -45, 86, 86, 105, -45, -45, -45,
775 : -45, -45, -45, -45, -45, -45, -45, -45, -45, -45,
776 : -45
777 :
778 : },
779 :
780 : {
781 : 25, -46, -46, -46, -46, 86, -46, 86, -46, 86,
782 : 86, -46, -46, -46, 86, 86, -46, 86, -46, 86,
783 : -46, -46, -46, -46, 86, 106, 86, -46, -46, -46,
784 : -46, -46, -46, -46, -46, -46, -46, -46, -46, -46,
785 : -46
786 : },
787 :
788 : {
789 : 25, -47, -47, -47, -47, -47, -47, -47, 107, -47,
790 : -47, -47, -47, -47, -47, -47, -47, -47, -47, -47,
791 : 107, 107, -47, -47, -47, -47, -47, 107, 107, 107,
792 : 107, 107, 107, 107, 107, 107, 107, 107, -47, 107,
793 : 107
794 :
795 : },
796 :
797 : {
798 : 25, -48, -48, -48, -48, -48, -48, -48, 107, -48,
799 : -48, 108, -48, -48, -48, -48, -48, -48, -48, -48,
800 : 107, 107, -48, -48, -48, -48, -48, 107, 107, 107,
801 : 107, 107, 107, 107, 107, 107, 107, 107, -48, 107,
802 : 107
803 : },
804 :
805 : {
806 : 25, -49, -49, -49, -49, -49, -49, -49, 107, -49,
807 : -49, 109, -49, -49, -49, -49, -49, -49, -49, -49,
808 : 107, 107, -49, -49, -49, -49, -49, 107, 107, 107,
809 : 107, 107, 107, 107, 107, 107, 107, 107, -49, 107,
810 : 107
811 :
812 : },
813 :
814 : {
815 : 25, -50, -50, -50, -50, -50, -50, -50, 107, -50,
816 : -50, 110, -50, -50, -50, -50, -50, -50, -50, -50,
817 : 107, 107, -50, -50, -50, -50, -50, 107, 107, 107,
818 : 107, 107, 107, 107, 107, 107, 107, 107, -50, 107,
819 : 107
820 : },
821 :
822 : {
823 : 25, -51, -51, -51, -51, -51, -51, -51, 107, -51,
824 : 111, -51, -51, -51, -51, -51, -51, -51, -51, -51,
825 : 107, 107, -51, -51, -51, -51, -51, 107, 107, 107,
826 : 107, 107, 107, 107, 107, 107, 107, 107, -51, 107,
827 : 107
828 :
829 : },
830 :
831 : {
832 : 25, -52, -52, -52, -52, -52, -52, -52, 107, -52,
833 : -52, 112, -52, -52, -52, -52, -52, -52, -52, -52,
834 : 107, 107, -52, -52, -52, -52, -52, 107, 107, 107,
835 : 107, 107, 107, 107, 107, 107, 107, 107, -52, 107,
836 : 107
837 : },
838 :
839 : {
840 : 25, -53, -53, -53, -53, -53, -53, -53, -53, -53,
841 : -53, -53, -53, -53, -53, -53, -53, -53, -53, -53,
842 : -53, -53, 113, 113, -53, -53, -53, -53, -53, -53,
843 : -53, -53, -53, -53, -53, -53, -53, -53, -53, -53,
844 : -53
845 :
846 : },
847 :
848 : {
849 : 25, 114, 114, 114, 114, 114, 114, 114, 114, 114,
850 : 114, -54, 114, 114, 114, 114, 114, 114, 114, 114,
851 : 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
852 : 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
853 : 114
854 : },
855 :
856 : {
857 : 25, -55, 115, 116, 116, -55, -55, -55, -55, -55,
858 : -55, -55, -55, -55, -55, -55, -55, 117, -55, -55,
859 : -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
860 : -55, -55, -55, -55, -55, -55, -55, -55, -55, -55,
861 : -55
862 :
863 : },
864 :
865 : {
866 : 25, 118, 118, 118, 118, 118, 118, 118, 118, 118,
867 : 118, 118, 118, 118, -56, 118, 118, 118, 118, -56,
868 : 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
869 : 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
870 : 118
871 : },
872 :
873 : {
874 : 25, 118, 118, 118, 118, 118, 118, 118, 118, 118,
875 : 118, 118, 118, 118, -57, 118, 118, 118, 118, -57,
876 : 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
877 : 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
878 : 118
879 :
880 : },
881 :
882 : {
883 : 25, -58, -58, -58, -58, -58, -58, -58, -58, -58,
884 : -58, -58, -58, -58, 119, -58, -58, -58, -58, 120,
885 : -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
886 : -58, -58, -58, -58, -58, -58, -58, -58, -58, -58,
887 : -58
888 : },
889 :
890 : {
891 : 25, -59, -59, -59, -59, -59, -59, -59, -59, -59,
892 : -59, -59, -59, -59, 121, -59, -59, -59, -59, -59,
893 : -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
894 : -59, -59, -59, -59, -59, -59, -59, -59, -59, -59,
895 : -59
896 :
897 : },
898 :
899 : {
900 : 25, 122, 122, 122, 122, 122, -60, 122, 122, 122,
901 : 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
902 : 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
903 : 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
904 : 122
905 : },
906 :
907 : {
908 : 25, -61, -61, -61, -61, -61, 123, -61, -61, -61,
909 : -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
910 : -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
911 : -61, -61, -61, -61, -61, -61, -61, -61, -61, -61,
912 : -61
913 :
914 : },
915 :
916 : {
917 : 25, 124, 124, 124, 124, 124, 124, 124, 124, 124,
918 : 124, -62, 124, 124, 124, 124, 124, 124, 124, 124,
919 : 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
920 : 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
921 : 124
922 : },
923 :
924 : {
925 : 25, -63, 125, 126, 126, -63, -63, -63, -63, -63,
926 : -63, -63, -63, -63, -63, -63, -63, 127, -63, -63,
927 : -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
928 : -63, -63, -63, -63, -63, -63, -63, -63, -63, -63,
929 : -63
930 :
931 : },
932 :
933 : {
934 : 25, 128, 128, 128, 128, 128, 128, 128, 128, 128,
935 : 128, -64, 128, 128, 128, 128, 128, 128, 128, 128,
936 : 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
937 : 128, 128, 128, 128, 128, 128, 128, 128, -64, 128,
938 : 128
939 : },
940 :
941 : {
942 : 25, 128, 128, 128, 128, 128, 128, 128, 128, 128,
943 : 128, -65, 128, 128, 128, 128, 128, 128, 128, 128,
944 : 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
945 : 128, 128, 128, 128, 128, 128, 128, 128, -65, 128,
946 : 128
947 :
948 : },
949 :
950 : {
951 : 25, -66, 129, 130, 130, -66, -66, -66, -66, -66,
952 : -66, 131, -66, -66, -66, -66, -66, 132, -66, -66,
953 : -66, -66, -66, -66, -66, -66, -66, -66, -66, -66,
954 : -66, -66, -66, -66, -66, -66, -66, -66, -66, -66,
955 : -66
956 : },
957 :
958 : {
959 : 25, 133, 133, 133, 133, 133, 133, 133, 133, 133,
960 : 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
961 : 134, 133, 133, 133, 133, 133, 133, 133, 133, 133,
962 : 133, 133, 133, 133, 133, 133, 135, 133, 133, 136,
963 : 137
964 :
965 : },
966 :
967 : {
968 : 25, 138, 138, 138, 138, 138, 138, 138, 138, 138,
969 : 138, -68, 138, 138, 138, 138, 138, 138, 138, 138,
970 : 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
971 : 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
972 : 138
973 : },
974 :
975 : {
976 : 25, -69, 129, 130, 130, -69, -69, -69, -69, -69,
977 : -69, 131, -69, -69, -69, -69, -69, 132, -69, -69,
978 : -69, -69, -69, -69, -69, -69, -69, -69, -69, -69,
979 : -69, -69, -69, -69, -69, -69, -69, -69, -69, -69,
980 : -69
981 :
982 : },
983 :
984 : {
985 : 25, 139, 139, 139, 139, 139, 139, 139, -70, 139,
986 : 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
987 : 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
988 : 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
989 : 139
990 : },
991 :
992 : {
993 : 25, 139, 139, 139, 139, 139, 139, 139, -71, 139,
994 : 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
995 : 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
996 : 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
997 : 139
998 :
999 : },
1000 :
1001 : {
1002 : 25, -72, -72, -72, -72, -72, -72, -72, 140, -72,
1003 : -72, -72, -72, -72, -72, -72, -72, -72, -72, -72,
1004 : -72, -72, -72, -72, -72, -72, -72, 141, 141, 141,
1005 : 141, 141, 141, 141, 141, 141, 141, 141, -72, 141,
1006 : 141
1007 : },
1008 :
1009 : {
1010 : 25, -73, -73, -73, -73, -73, 123, -73, -73, -73,
1011 : -73, -73, -73, -73, -73, -73, -73, -73, -73, -73,
1012 : -73, -73, -73, -73, -73, -73, -73, -73, -73, -73,
1013 : -73, -73, -73, -73, -73, -73, -73, -73, -73, -73,
1014 : -73
1015 :
1016 : },
1017 :
1018 : {
1019 : 25, -74, -74, -74, -74, -74, -74, -74, -74, -74,
1020 : -74, -74, -74, -74, -74, -74, -74, -74, -74, -74,
1021 : -74, -74, -74, -74, -74, -74, -74, -74, -74, -74,
1022 : -74, -74, -74, -74, -74, -74, -74, -74, -74, -74,
1023 : -74
1024 : },
1025 :
1026 : {
1027 : 25, -75, 142, 142, 142, -75, -75, -75, -75, -75,
1028 : -75, -75, -75, -75, -75, -75, -75, -75, -75, -75,
1029 : -75, -75, -75, -75, -75, -75, -75, -75, -75, -75,
1030 : -75, -75, -75, -75, -75, -75, -75, -75, -75, -75,
1031 : -75
1032 :
1033 : },
1034 :
1035 : {
1036 : 25, -76, 142, 142, 142, -76, -76, -76, -76, -76,
1037 : -76, -76, -76, -76, -76, -76, -76, -76, -76, -76,
1038 : -76, -76, -76, -76, -76, -76, -76, -76, -76, -76,
1039 : -76, -76, -76, -76, -76, -76, -76, -76, -76, -76,
1040 : -76
1041 : },
1042 :
1043 : {
1044 : 25, -77, -77, -77, -77, -77, -77, -77, -77, -77,
1045 : -77, -77, -77, -77, -77, -77, -77, 143, -77, -77,
1046 : -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
1047 : -77, -77, -77, -77, -77, -77, -77, -77, -77, -77,
1048 : -77
1049 :
1050 : },
1051 :
1052 : {
1053 : 25, -78, -78, -78, -78, -78, -78, -78, -78, -78,
1054 : -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
1055 : -78, -78, -78, -78, -78, -78, -78, -78, -78, -78,
1056 : -78, 144, -78, -78, -78, -78, -78, -78, -78, -78,
1057 : -78
1058 : },
1059 :
1060 : {
1061 : 25, -79, 145, 146, 146, -79, -79, -79, -79, -79,
1062 : -79, 131, -79, -79, -79, -79, -79, 147, -79, -79,
1063 : -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
1064 : -79, -79, -79, -79, -79, -79, -79, -79, -79, -79,
1065 : -79
1066 :
1067 : },
1068 :
1069 : {
1070 : 25, -80, -80, -80, -80, -80, -80, -80, -80, -80,
1071 : -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
1072 : -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
1073 : -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
1074 : -80
1075 : },
1076 :
1077 : {
1078 : 25, -81, 148, 148, 148, -81, -81, -81, -81, -81,
1079 : -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
1080 : -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
1081 : -81, -81, -81, -81, -81, -81, -81, -81, -81, -81,
1082 : -81
1083 :
1084 : },
1085 :
1086 : {
1087 : 25, -82, 148, 148, 148, -82, -82, -82, -82, -82,
1088 : -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
1089 : -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
1090 : -82, -82, -82, -82, -82, -82, -82, -82, -82, -82,
1091 : -82
1092 : },
1093 :
1094 : {
1095 : 25, -83, -83, -83, -83, -83, -83, -83, -83, -83,
1096 : -83, -83, -83, -83, -83, -83, -83, 149, -83, -83,
1097 : -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
1098 : -83, -83, -83, -83, -83, -83, -83, -83, -83, -83,
1099 : -83
1100 :
1101 : },
1102 :
1103 : {
1104 : 25, -84, -84, -84, -84, -84, -84, -84, -84, -84,
1105 : -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
1106 : -84, -84, -84, -84, -84, -84, -84, -84, -84, -84,
1107 : -84, 150, -84, -84, -84, -84, -84, -84, -84, -84,
1108 : -84
1109 : },
1110 :
1111 : {
1112 : 25, -85, 85, 85, 85, -85, -85, -85, -85, -85,
1113 : -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
1114 : -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
1115 : -85, -85, -85, -85, -85, -85, -85, -85, -85, -85,
1116 : -85
1117 :
1118 : },
1119 :
1120 : {
1121 : 25, -86, -86, -86, -86, 86, -86, 86, -86, 86,
1122 : 86, -86, -86, -86, 86, 86, -86, 86, -86, 86,
1123 : -86, -86, -86, -86, 86, 86, 86, -86, -86, -86,
1124 : -86, -86, -86, -86, -86, -86, -86, -86, -86, -86,
1125 : -86
1126 : },
1127 :
1128 : {
1129 : 25, -87, -87, -87, -87, 86, -87, 86, -87, 86,
1130 : 86, -87, -87, -87, 86, 86, -87, 86, -87, 86,
1131 : -87, -87, -87, -87, 86, 86, 86, -87, -87, -87,
1132 : -87, -87, -87, -87, -87, -87, -87, -87, -87, -87,
1133 : -87
1134 :
1135 : },
1136 :
1137 : {
1138 : 25, -88, -88, -88, -88, -88, -88, -88, -88, -88,
1139 : -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
1140 : -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
1141 : -88, -88, -88, -88, -88, -88, -88, -88, -88, -88,
1142 : -88
1143 : },
1144 :
1145 : {
1146 : 25, -89, -89, -89, -89, -89, -89, -89, -89, -89,
1147 : -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
1148 : 89, 89, -89, -89, -89, -89, -89, -89, -89, -89,
1149 : -89, -89, -89, -89, -89, -89, -89, -89, -89, -89,
1150 : -89
1151 :
1152 : },
1153 :
1154 : {
1155 : 25, -90, -90, -90, -90, -90, -90, -90, 88, -90,
1156 : -90, -90, -90, -90, -90, -90, -90, -90, -90, -90,
1157 : 151, 151, -90, -90, -90, -90, -90, 151, 151, 151,
1158 : 151, 151, 151, 151, 151, 151, 151, 151, -90, 151,
1159 : 151
1160 : },
1161 :
1162 : {
1163 : 25, 152, 152, -91, -91, 153, 152, 153, 152, 153,
1164 : 153, 152, 152, 152, 153, 153, 152, 153, 152, 153,
1165 : 152, 152, 152, 152, 153, 153, 153, 152, 152, 152,
1166 : 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
1167 : 152
1168 :
1169 : },
1170 :
1171 : {
1172 : 25, -92, -92, -92, -92, -92, -92, -92, -92, -92,
1173 : -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
1174 : -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
1175 : -92, -92, -92, -92, -92, -92, -92, -92, -92, -92,
1176 : -92
1177 : },
1178 :
1179 : {
1180 : 25, -93, -93, -93, -93, -93, -93, -93, -93, -93,
1181 : -93, -93, -93, -93, -93, -93, -93, -93, -93, -93,
1182 : 93, 93, -93, -93, -93, -93, -93, -93, -93, -93,
1183 : -93, 97, -93, -93, -93, -93, -93, -93, -93, -93,
1184 : -93
1185 :
1186 : },
1187 :
1188 : {
1189 : 25, -94, -94, -94, -94, 154, -94, 154, -94, 154,
1190 : 154, -94, -94, -94, 154, 154, -94, 154, -94, 154,
1191 : -94, -94, -94, -94, 154, 154, 154, -94, -94, -94,
1192 : -94, -94, -94, -94, -94, -94, -94, -94, -94, -94,
1193 : -94
1194 : },
1195 :
1196 : {
1197 : 25, -95, -95, -95, -95, -95, -95, -95, -95, -95,
1198 : -95, -95, -95, -95, -95, -95, -95, -95, 155, -95,
1199 : 156, 156, -95, -95, -95, -95, -95, -95, -95, -95,
1200 : -95, 97, -95, -95, -95, -95, -95, -95, -95, -95,
1201 : -95
1202 :
1203 : },
1204 :
1205 : {
1206 : 25, -96, -96, -96, -96, -96, -96, -96, -96, -96,
1207 : -96, -96, -96, -96, -96, -96, -96, -96, 95, -96,
1208 : 96, 96, -96, -96, -96, -96, -96, -96, -96, -96,
1209 : -96, 97, -96, -96, -96, -96, -96, -96, -96, -96,
1210 : -96
1211 : },
1212 :
1213 : {
1214 : 25, -97, -97, -97, -97, -97, -97, -97, -97, -97,
1215 : -97, -97, -97, -97, -97, 157, -97, 157, -97, -97,
1216 : 158, 158, -97, -97, -97, -97, -97, -97, -97, -97,
1217 : -97, -97, -97, -97, -97, -97, -97, -97, -97, -97,
1218 : -97
1219 :
1220 : },
1221 :
1222 : {
1223 : 25, -98, -98, -98, -98, -98, -98, -98, -98, -98,
1224 : -98, -98, -98, -98, -98, -98, -98, -98, -98, -98,
1225 : 159, 159, -98, -98, -98, -98, -98, 159, 159, 159,
1226 : 159, 159, 159, 159, 159, 159, 159, 159, -98, 159,
1227 : 159
1228 : },
1229 :
1230 : {
1231 : 25, -99, -99, -99, -99, -99, -99, -99, -99, -99,
1232 : -99, -99, -99, -99, -99, -99, -99, -99, -99, -99,
1233 : 160, 160, -99, -99, -99, -99, -99, 160, 160, 160,
1234 : 160, 160, 160, 160, 160, 160, 160, 160, -99, 160,
1235 : 160
1236 :
1237 : },
1238 :
1239 : {
1240 : 25, -100, -100, -100, -100, -100, -100, -100, -100, -100,
1241 : -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,
1242 : 100, 100, -100, -100, -100, -100, -100, 100, 100, 100,
1243 : 100, 100, 100, 100, 100, 100, 100, 100, -100, 100,
1244 : 100
1245 : },
1246 :
1247 : {
1248 : 25, -101, -101, -101, -101, -101, -101, -101, -101, -101,
1249 : -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
1250 : -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
1251 : -101, -101, -101, -101, -101, -101, -101, -101, -101, -101,
1252 : -101
1253 :
1254 : },
1255 :
1256 : {
1257 : 25, -102, -102, -102, -102, -102, -102, -102, -102, -102,
1258 : -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
1259 : -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
1260 : -102, -102, -102, -102, -102, -102, -102, -102, -102, -102,
1261 : -102
1262 : },
1263 :
1264 : {
1265 : 25, -103, -103, -103, -103, 86, -103, 86, -103, 86,
1266 : 86, -103, -103, -103, 86, 86, -103, 86, -103, 86,
1267 : -103, -103, -103, -103, 86, 86, 86, -103, -103, -103,
1268 : -103, -103, -103, -103, -103, -103, -103, -103, -103, -103,
1269 : -103
1270 :
1271 : },
1272 :
1273 : {
1274 : 25, -104, -104, -104, -104, 86, -104, 86, -104, 86,
1275 : 86, -104, -104, -104, 86, 86, -104, 86, -104, 86,
1276 : -104, -104, -104, -104, 86, 86, 86, -104, -104, -104,
1277 : -104, -104, -104, -104, -104, -104, -104, -104, -104, -104,
1278 : -104
1279 : },
1280 :
1281 : {
1282 : 25, -105, -105, -105, -105, 86, -105, 86, -105, 86,
1283 : 86, -105, -105, -105, 86, 86, -105, 86, -105, 86,
1284 : -105, -105, -105, -105, 86, 86, 86, -105, -105, -105,
1285 : -105, -105, -105, -105, -105, -105, -105, -105, -105, -105,
1286 : -105
1287 :
1288 : },
1289 :
1290 : {
1291 : 25, -106, -106, -106, -106, 86, -106, 86, -106, 86,
1292 : 86, -106, -106, -106, 86, 86, -106, 86, -106, 86,
1293 : -106, -106, -106, -106, 86, 86, 86, -106, -106, -106,
1294 : -106, -106, -106, -106, -106, -106, -106, -106, -106, -106,
1295 : -106
1296 : },
1297 :
1298 : {
1299 : 25, -107, -107, -107, -107, -107, -107, -107, 107, -107,
1300 : -107, -107, -107, -107, -107, -107, -107, -107, -107, -107,
1301 : 107, 107, -107, -107, -107, -107, -107, 107, 107, 107,
1302 : 107, 107, 107, 107, 107, 107, 107, 107, -107, 107,
1303 : 107
1304 :
1305 : },
1306 :
1307 : {
1308 : 25, -108, -108, -108, -108, -108, -108, -108, -108, -108,
1309 : -108, -108, -108, -108, -108, -108, -108, -108, -108, -108,
1310 : -108, -108, -108, -108, -108, -108, -108, -108, -108, -108,
1311 : -108, -108, -108, -108, -108, -108, -108, -108, -108, -108,
1312 : -108
1313 : },
1314 :
1315 : {
1316 : 25, -109, -109, -109, -109, -109, -109, -109, -109, -109,
1317 : -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
1318 : -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
1319 : -109, -109, -109, -109, -109, -109, -109, -109, -109, -109,
1320 : -109
1321 :
1322 : },
1323 :
1324 : {
1325 : 25, -110, -110, -110, -110, -110, -110, -110, -110, -110,
1326 : -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
1327 : -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
1328 : -110, -110, -110, -110, -110, -110, -110, -110, -110, -110,
1329 : -110
1330 : },
1331 :
1332 : {
1333 : 25, -111, -111, -111, -111, -111, 161, -111, -111, -111,
1334 : -111, 162, -111, -111, -111, -111, -111, -111, -111, -111,
1335 : -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
1336 : -111, -111, -111, -111, -111, -111, -111, -111, -111, -111,
1337 : -111
1338 :
1339 : },
1340 :
1341 : {
1342 : 25, -112, -112, -112, -112, -112, -112, -112, -112, -112,
1343 : -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
1344 : -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
1345 : -112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
1346 : -112
1347 : },
1348 :
1349 : {
1350 : 25, -113, -113, -113, -113, -113, -113, -113, -113, -113,
1351 : -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
1352 : -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
1353 : -113, -113, -113, -113, -113, -113, -113, -113, -113, -113,
1354 : -113
1355 :
1356 : },
1357 :
1358 : {
1359 : 25, 114, 114, 114, 114, 114, 114, 114, 114, 114,
1360 : 114, -114, 114, 114, 114, 114, 114, 114, 114, 114,
1361 : 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
1362 : 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
1363 : 114
1364 : },
1365 :
1366 : {
1367 : 25, -115, 115, 116, 116, -115, -115, -115, -115, -115,
1368 : -115, -115, -115, -115, -115, -115, -115, 117, -115, -115,
1369 : -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
1370 : -115, -115, -115, -115, -115, -115, -115, -115, -115, -115,
1371 : -115
1372 :
1373 : },
1374 :
1375 : {
1376 : 25, -116, 163, 163, 163, -116, -116, -116, -116, -116,
1377 : -116, 164, -116, -116, -116, -116, -116, 165, -116, -116,
1378 : -116, -116, -116, -116, -116, -116, -116, -116, -116, -116,
1379 : -116, -116, -116, -116, -116, -116, -116, -116, -116, -116,
1380 : -116
1381 : },
1382 :
1383 : {
1384 : 25, -117, -117, -117, -117, -117, -117, -117, -117, -117,
1385 : -117, -117, -117, -117, -117, -117, -117, 166, -117, -117,
1386 : -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
1387 : -117, -117, -117, -117, -117, -117, -117, -117, -117, -117,
1388 : -117
1389 :
1390 : },
1391 :
1392 : {
1393 : 25, 118, 118, 118, 118, 118, 118, 118, 118, 118,
1394 : 118, 118, 118, 118, -118, 118, 118, 118, 118, -118,
1395 : 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
1396 : 118, 118, 118, 118, 118, 118, 118, 118, 118, 118,
1397 : 118
1398 : },
1399 :
1400 : {
1401 : 25, -119, -119, -119, -119, -119, -119, -119, -119, -119,
1402 : -119, -119, -119, -119, 119, -119, -119, -119, -119, 120,
1403 : -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
1404 : -119, -119, -119, -119, -119, -119, -119, -119, -119, -119,
1405 : -119
1406 :
1407 : },
1408 :
1409 : {
1410 : 25, -120, -120, -120, -120, -120, -120, -120, -120, -120,
1411 : -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
1412 : -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
1413 : -120, -120, -120, -120, -120, -120, -120, -120, -120, -120,
1414 : -120
1415 : },
1416 :
1417 : {
1418 : 25, -121, -121, -121, -121, 167, -121, 167, -121, 167,
1419 : 167, -121, -121, -121, 167, 167, -121, 167, -121, 167,
1420 : -121, -121, -121, -121, 167, 167, 167, -121, -121, -121,
1421 : -121, -121, -121, -121, -121, -121, -121, -121, -121, -121,
1422 : -121
1423 :
1424 : },
1425 :
1426 : {
1427 : 25, 122, 122, 122, 122, 122, -122, 122, 122, 122,
1428 : 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
1429 : 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
1430 : 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
1431 : 122
1432 : },
1433 :
1434 : {
1435 : 25, -123, -123, -123, -123, -123, -123, -123, -123, -123,
1436 : -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
1437 : -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
1438 : -123, -123, -123, -123, -123, -123, -123, -123, -123, -123,
1439 : -123
1440 :
1441 : },
1442 :
1443 : {
1444 : 25, 124, 124, 124, 124, 124, 124, 124, 124, 124,
1445 : 124, -124, 124, 124, 124, 124, 124, 124, 124, 124,
1446 : 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
1447 : 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
1448 : 124
1449 : },
1450 :
1451 : {
1452 : 25, -125, 125, 126, 126, -125, -125, -125, -125, -125,
1453 : -125, -125, -125, -125, -125, -125, -125, 127, -125, -125,
1454 : -125, -125, -125, -125, -125, -125, -125, -125, -125, -125,
1455 : -125, -125, -125, -125, -125, -125, -125, -125, -125, -125,
1456 : -125
1457 :
1458 : },
1459 :
1460 : {
1461 : 25, -126, 168, 168, 168, -126, -126, -126, -126, -126,
1462 : -126, 169, -126, -126, -126, -126, -126, 170, -126, -126,
1463 : -126, -126, -126, -126, -126, -126, -126, -126, -126, -126,
1464 : -126, -126, -126, -126, -126, -126, -126, -126, -126, -126,
1465 : -126
1466 : },
1467 :
1468 : {
1469 : 25, -127, -127, -127, -127, -127, -127, -127, -127, -127,
1470 : -127, -127, -127, -127, -127, -127, -127, 171, -127, -127,
1471 : -127, -127, -127, -127, -127, -127, -127, -127, -127, -127,
1472 : -127, -127, -127, -127, -127, -127, -127, -127, -127, -127,
1473 : -127
1474 :
1475 : },
1476 :
1477 : {
1478 : 25, 128, 128, 128, 128, 128, 128, 128, 128, 128,
1479 : 128, -128, 128, 128, 128, 128, 128, 128, 128, 128,
1480 : 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
1481 : 128, 128, 128, 128, 128, 128, 128, 128, -128, 128,
1482 : 128
1483 : },
1484 :
1485 : {
1486 : 25, -129, 129, 130, 130, -129, -129, -129, -129, -129,
1487 : -129, -129, -129, -129, -129, -129, -129, 132, -129, -129,
1488 : -129, -129, -129, -129, -129, -129, -129, -129, -129, -129,
1489 : -129, -129, -129, -129, -129, -129, -129, -129, -129, -129,
1490 : -129
1491 :
1492 : },
1493 :
1494 : {
1495 : 25, -130, 172, 172, 172, -130, -130, -130, -130, -130,
1496 : -130, 173, -130, -130, -130, -130, -130, 174, -130, -130,
1497 : -130, -130, -130, -130, -130, -130, -130, -130, -130, -130,
1498 : -130, -130, -130, -130, -130, -130, -130, -130, -130, -130,
1499 : -130
1500 : },
1501 :
1502 : {
1503 : 25, -131, -131, -131, -131, -131, -131, -131, -131, -131,
1504 : -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
1505 : -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
1506 : -131, -131, -131, -131, -131, -131, -131, -131, -131, -131,
1507 : -131
1508 :
1509 : },
1510 :
1511 : {
1512 : 25, -132, -132, -132, -132, -132, -132, -132, -132, -132,
1513 : -132, -132, -132, -132, -132, -132, -132, 175, -132, -132,
1514 : -132, -132, -132, -132, -132, -132, -132, -132, -132, -132,
1515 : -132, -132, -132, -132, -132, -132, -132, -132, -132, -132,
1516 : -132
1517 : },
1518 :
1519 : {
1520 : 25, -133, -133, -133, -133, -133, -133, -133, -133, -133,
1521 : -133, -133, -133, -133, -133, -133, -133, -133, -133, -133,
1522 : -133, -133, -133, -133, -133, -133, -133, -133, -133, -133,
1523 : -133, -133, -133, -133, -133, -133, -133, -133, -133, -133,
1524 : -133
1525 :
1526 : },
1527 :
1528 : {
1529 : 25, -134, -134, -134, -134, -134, -134, -134, -134, -134,
1530 : -134, -134, -134, -134, -134, -134, -134, -134, -134, -134,
1531 : 176, -134, -134, -134, -134, -134, -134, -134, -134, -134,
1532 : -134, -134, -134, -134, -134, -134, -134, -134, -134, -134,
1533 : -134
1534 : },
1535 :
1536 : {
1537 : 25, -135, -135, -135, -135, -135, -135, -135, -135, -135,
1538 : -135, -135, -135, -135, -135, -135, -135, -135, -135, -135,
1539 : 177, 177, -135, -135, -135, -135, -135, 177, 177, 177,
1540 : 177, 177, -135, -135, -135, -135, -135, -135, -135, -135,
1541 : -135
1542 :
1543 : },
1544 :
1545 : {
1546 : 25, -136, -136, -136, -136, -136, -136, -136, -136, -136,
1547 : -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
1548 : 178, 178, -136, -136, -136, -136, -136, 178, 178, 178,
1549 : 178, 178, -136, -136, -136, -136, -136, -136, -136, -136,
1550 : -136
1551 : },
1552 :
1553 : {
1554 : 25, -137, -137, -137, -137, -137, -137, -137, -137, -137,
1555 : -137, -137, -137, -137, -137, -137, -137, -137, -137, -137,
1556 : 179, 179, -137, -137, -137, -137, -137, 179, 179, 179,
1557 : 179, 179, -137, -137, -137, -137, -137, -137, -137, -137,
1558 : -137
1559 :
1560 : },
1561 :
1562 : {
1563 : 25, 138, 138, 138, 138, 138, 138, 138, 138, 138,
1564 : 138, -138, 138, 138, 138, 138, 138, 138, 138, 138,
1565 : 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
1566 : 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
1567 : 138
1568 : },
1569 :
1570 : {
1571 : 25, 139, 139, 139, 139, 139, 139, 139, -139, 139,
1572 : 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
1573 : 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
1574 : 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
1575 : 139
1576 :
1577 : },
1578 :
1579 : {
1580 : 25, -140, -140, -140, -140, -140, -140, -140, -140, -140,
1581 : -140, -140, -140, -140, -140, -140, -140, -140, -140, -140,
1582 : -140, -140, -140, -140, -140, -140, -140, -140, -140, -140,
1583 : -140, -140, -140, -140, -140, -140, -140, -140, -140, -140,
1584 : -140
1585 : },
1586 :
1587 : {
1588 : 25, -141, -141, -141, -141, -141, -141, -141, 140, -141,
1589 : -141, -141, -141, -141, -141, -141, -141, -141, -141, -141,
1590 : 180, 180, -141, -141, -141, -141, -141, 180, 180, 180,
1591 : 180, 180, 180, 180, 180, 180, 180, 180, -141, 180,
1592 : 180
1593 :
1594 : },
1595 :
1596 : {
1597 : 25, -142, 142, 142, 142, -142, -142, -142, -142, -142,
1598 : -142, -142, -142, -142, -142, -142, -142, -142, -142, -142,
1599 : -142, -142, -142, -142, -142, -142, -142, -142, -142, -142,
1600 : -142, -142, -142, -142, -142, -142, -142, -142, -142, -142,
1601 : -142
1602 : },
1603 :
1604 : {
1605 : 25, 181, 181, -143, -143, 181, 181, 181, 181, 181,
1606 : 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
1607 : 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
1608 : 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
1609 : 181
1610 :
1611 : },
1612 :
1613 : {
1614 : 25, -144, -144, -144, -144, -144, -144, -144, -144, -144,
1615 : -144, -144, -144, -144, -144, -144, -144, -144, -144, -144,
1616 : -144, -144, -144, -144, -144, -144, -144, -144, -144, -144,
1617 : -144, -144, -144, -144, -144, 182, -144, -144, -144, -144,
1618 : -144
1619 : },
1620 :
1621 : {
1622 : 25, -145, 145, 146, 146, -145, -145, -145, -145, -145,
1623 : -145, -145, -145, -145, -145, -145, -145, 147, -145, -145,
1624 : -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
1625 : -145, -145, -145, -145, -145, -145, -145, -145, -145, -145,
1626 : -145
1627 :
1628 : },
1629 :
1630 : {
1631 : 25, -146, 183, 183, 183, -146, -146, -146, -146, -146,
1632 : -146, 173, -146, -146, -146, -146, -146, 184, -146, -146,
1633 : -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,
1634 : -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,
1635 : -146
1636 : },
1637 :
1638 : {
1639 : 25, -147, -147, -147, -147, -147, -147, -147, -147, -147,
1640 : -147, -147, -147, -147, -147, -147, -147, 185, -147, -147,
1641 : -147, -147, -147, -147, -147, -147, -147, -147, -147, -147,
1642 : -147, -147, -147, -147, -147, -147, -147, -147, -147, -147,
1643 : -147
1644 :
1645 : },
1646 :
1647 : {
1648 : 25, -148, 148, 148, 148, -148, -148, -148, -148, -148,
1649 : -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
1650 : -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
1651 : -148, -148, -148, -148, -148, -148, -148, -148, -148, -148,
1652 : -148
1653 : },
1654 :
1655 : {
1656 : 25, 186, 186, -149, -149, 186, 186, 186, 186, 186,
1657 : 186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
1658 : 186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
1659 : 186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
1660 : 186
1661 :
1662 : },
1663 :
1664 : {
1665 : 25, -150, -150, -150, -150, -150, -150, -150, -150, -150,
1666 : -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
1667 : -150, -150, -150, -150, -150, -150, -150, -150, -150, -150,
1668 : -150, -150, -150, -150, -150, 187, -150, -150, -150, -150,
1669 : -150
1670 : },
1671 :
1672 : {
1673 : 25, -151, -151, -151, -151, -151, -151, -151, 88, -151,
1674 : -151, -151, -151, -151, -151, -151, -151, -151, -151, -151,
1675 : 151, 151, -151, -151, -151, -151, -151, 151, 151, 151,
1676 : 151, 151, 151, 151, 151, 151, 151, 151, -151, 151,
1677 : 151
1678 :
1679 : },
1680 :
1681 : {
1682 : 25, 152, 152, -152, -152, 152, 152, 152, 152, 152,
1683 : 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
1684 : 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
1685 : 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
1686 : 152
1687 : },
1688 :
1689 : {
1690 : 25, 152, 152, -153, -153, 153, 152, 153, 152, 153,
1691 : 153, 152, 152, 152, 153, 153, 152, 153, 152, 153,
1692 : 152, 152, 152, 152, 153, 153, 153, 152, 152, 152,
1693 : 152, 152, 152, 152, 152, 152, 152, 152, 152, 152,
1694 : 152
1695 :
1696 : },
1697 :
1698 : {
1699 : 25, -154, -154, -154, -154, 154, -154, 154, -154, 154,
1700 : 154, -154, -154, -154, 154, 154, -154, 154, -154, 154,
1701 : -154, -154, -154, -154, 154, 154, 154, -154, -154, -154,
1702 : -154, -154, -154, -154, -154, -154, -154, -154, -154, -154,
1703 : -154
1704 : },
1705 :
1706 : {
1707 : 25, -155, -155, -155, -155, -155, -155, -155, -155, -155,
1708 : -155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
1709 : -155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
1710 : -155, -155, -155, -155, -155, -155, -155, -155, -155, -155,
1711 : -155
1712 :
1713 : },
1714 :
1715 : {
1716 : 25, -156, -156, -156, -156, -156, -156, -156, -156, -156,
1717 : -156, -156, -156, -156, -156, -156, -156, -156, -156, -156,
1718 : 156, 156, -156, -156, -156, -156, -156, -156, -156, -156,
1719 : -156, 97, -156, -156, -156, -156, -156, -156, -156, -156,
1720 : -156
1721 : },
1722 :
1723 : {
1724 : 25, -157, -157, -157, -157, -157, -157, -157, -157, -157,
1725 : -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
1726 : 158, 158, -157, -157, -157, -157, -157, -157, -157, -157,
1727 : -157, -157, -157, -157, -157, -157, -157, -157, -157, -157,
1728 : -157
1729 :
1730 : },
1731 :
1732 : {
1733 : 25, -158, -158, -158, -158, -158, -158, -158, -158, -158,
1734 : -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
1735 : 158, 158, -158, -158, -158, -158, -158, -158, -158, -158,
1736 : -158, -158, -158, -158, -158, -158, -158, -158, -158, -158,
1737 : -158
1738 : },
1739 :
1740 : {
1741 : 25, -159, -159, -159, -159, -159, 188, -159, -159, -159,
1742 : -159, -159, -159, -159, -159, -159, -159, -159, -159, -159,
1743 : 159, 159, -159, -159, -159, -159, -159, 159, 159, 159,
1744 : 159, 159, 159, 159, 159, 159, 159, 159, -159, 159,
1745 : 159
1746 :
1747 : },
1748 :
1749 : {
1750 : 25, -160, -160, -160, -160, -160, -160, -160, -160, -160,
1751 : -160, 189, -160, -160, -160, -160, -160, -160, -160, -160,
1752 : 160, 160, -160, -160, -160, -160, -160, 160, 160, 160,
1753 : 160, 160, 160, 160, 160, 160, 160, 160, -160, 160,
1754 : 160
1755 : },
1756 :
1757 : {
1758 : 25, -161, -161, -161, -161, -161, -161, -161, -161, -161,
1759 : -161, -161, -161, -161, -161, -161, -161, -161, -161, -161,
1760 : -161, -161, -161, -161, -161, -161, -161, -161, -161, -161,
1761 : -161, -161, -161, -161, -161, -161, -161, -161, -161, -161,
1762 : -161
1763 :
1764 : },
1765 :
1766 : {
1767 : 25, -162, -162, -162, -162, -162, -162, -162, -162, -162,
1768 : -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
1769 : -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
1770 : -162, -162, -162, -162, -162, -162, -162, -162, -162, -162,
1771 : -162
1772 : },
1773 :
1774 : {
1775 : 25, -163, 163, 163, 163, -163, -163, -163, -163, -163,
1776 : -163, 164, -163, -163, -163, -163, -163, 165, -163, -163,
1777 : -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
1778 : -163, -163, -163, -163, -163, -163, -163, -163, -163, -163,
1779 : -163
1780 :
1781 : },
1782 :
1783 : {
1784 : 25, -164, -164, -164, -164, -164, -164, -164, -164, -164,
1785 : -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
1786 : -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
1787 : -164, -164, -164, -164, -164, -164, -164, -164, -164, -164,
1788 : -164
1789 : },
1790 :
1791 : {
1792 : 25, -165, -165, -165, -165, -165, -165, -165, -165, -165,
1793 : -165, -165, -165, -165, -165, -165, -165, 190, -165, -165,
1794 : -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
1795 : -165, -165, -165, -165, -165, -165, -165, -165, -165, -165,
1796 : -165
1797 :
1798 : },
1799 :
1800 : {
1801 : 25, 191, 192, 116, 116, 191, 191, 191, 191, 191,
1802 : 191, 191, 191, 191, 191, 191, 191, 193, 191, 191,
1803 : 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
1804 : 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
1805 : 191
1806 : },
1807 :
1808 : {
1809 : 25, -167, -167, -167, -167, 167, -167, 167, -167, 167,
1810 : 167, -167, -167, -167, 167, 167, -167, 167, -167, 167,
1811 : -167, -167, -167, -167, 167, 167, 167, -167, -167, -167,
1812 : -167, -167, -167, -167, -167, -167, -167, -167, -167, -167,
1813 : -167
1814 :
1815 : },
1816 :
1817 : {
1818 : 25, -168, 168, 168, 168, -168, -168, -168, -168, -168,
1819 : -168, 169, -168, -168, -168, -168, -168, 170, -168, -168,
1820 : -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
1821 : -168, -168, -168, -168, -168, -168, -168, -168, -168, -168,
1822 : -168
1823 : },
1824 :
1825 : {
1826 : 25, -169, -169, -169, -169, -169, -169, -169, -169, -169,
1827 : -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
1828 : -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
1829 : -169, -169, -169, -169, -169, -169, -169, -169, -169, -169,
1830 : -169
1831 :
1832 : },
1833 :
1834 : {
1835 : 25, -170, -170, -170, -170, -170, -170, -170, -170, -170,
1836 : -170, -170, -170, -170, -170, -170, -170, 194, -170, -170,
1837 : -170, -170, -170, -170, -170, -170, -170, -170, -170, -170,
1838 : -170, -170, -170, -170, -170, -170, -170, -170, -170, -170,
1839 : -170
1840 : },
1841 :
1842 : {
1843 : 25, 195, 196, 126, 126, 195, 195, 195, 195, 195,
1844 : 195, 195, 195, 195, 195, 195, 195, 197, 195, 195,
1845 : 195, 195, 195, 195, 195, 195, 195, 195, 195, 195,
1846 : 195, 195, 195, 195, 195, 195, 195, 195, 195, 195,
1847 : 195
1848 :
1849 : },
1850 :
1851 : {
1852 : 25, -172, 172, 172, 172, -172, -172, -172, -172, -172,
1853 : -172, 173, -172, -172, -172, -172, -172, 174, -172, -172,
1854 : -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
1855 : -172, -172, -172, -172, -172, -172, -172, -172, -172, -172,
1856 : -172
1857 : },
1858 :
1859 : {
1860 : 25, -173, -173, -173, -173, -173, -173, -173, -173, -173,
1861 : -173, -173, -173, -173, -173, -173, -173, -173, -173, -173,
1862 : -173, -173, -173, -173, -173, -173, -173, -173, -173, -173,
1863 : -173, -173, -173, -173, -173, -173, -173, -173, -173, -173,
1864 : -173
1865 :
1866 : },
1867 :
1868 : {
1869 : 25, -174, -174, -174, -174, -174, -174, -174, -174, -174,
1870 : -174, -174, -174, -174, -174, -174, -174, 198, -174, -174,
1871 : -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
1872 : -174, -174, -174, -174, -174, -174, -174, -174, -174, -174,
1873 : -174
1874 : },
1875 :
1876 : {
1877 : 25, 199, 200, 130, 130, 199, 199, 199, 199, 199,
1878 : 199, 199, 199, 199, 199, 199, 199, 201, 199, 199,
1879 : 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
1880 : 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
1881 : 199
1882 :
1883 : },
1884 :
1885 : {
1886 : 25, -176, -176, -176, -176, -176, -176, -176, -176, -176,
1887 : -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
1888 : 202, -176, -176, -176, -176, -176, -176, -176, -176, -176,
1889 : -176, -176, -176, -176, -176, -176, -176, -176, -176, -176,
1890 : -176
1891 : },
1892 :
1893 : {
1894 : 25, -177, -177, -177, -177, -177, -177, -177, -177, -177,
1895 : -177, -177, -177, -177, -177, -177, -177, -177, -177, -177,
1896 : 203, 203, -177, -177, -177, -177, -177, 203, 203, 203,
1897 : 203, 203, -177, -177, -177, -177, -177, -177, -177, -177,
1898 : -177
1899 :
1900 : },
1901 :
1902 : {
1903 : 25, -178, -178, -178, -178, -178, -178, -178, -178, -178,
1904 : -178, -178, -178, -178, -178, -178, -178, -178, -178, -178,
1905 : 204, 204, -178, -178, -178, -178, -178, 204, 204, 204,
1906 : 204, 204, -178, -178, -178, -178, -178, -178, -178, -178,
1907 : -178
1908 : },
1909 :
1910 : {
1911 : 25, -179, -179, -179, -179, -179, -179, -179, -179, -179,
1912 : -179, -179, -179, -179, -179, -179, -179, -179, -179, -179,
1913 : 205, 205, -179, -179, -179, -179, -179, 205, 205, 205,
1914 : 205, 205, -179, -179, -179, -179, -179, -179, -179, -179,
1915 : -179
1916 :
1917 : },
1918 :
1919 : {
1920 : 25, -180, -180, -180, -180, -180, -180, -180, 140, -180,
1921 : -180, -180, -180, -180, -180, -180, -180, -180, -180, -180,
1922 : 180, 180, -180, -180, -180, -180, -180, 180, 180, 180,
1923 : 180, 180, 180, 180, 180, 180, 180, 180, -180, 180,
1924 : 180
1925 : },
1926 :
1927 : {
1928 : 25, 181, 181, -181, -181, 181, 181, 181, 181, 181,
1929 : 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
1930 : 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
1931 : 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
1932 : 181
1933 :
1934 : },
1935 :
1936 : {
1937 : 25, -182, -182, -182, -182, -182, -182, -182, -182, -182,
1938 : -182, -182, -182, -182, -182, -182, -182, -182, -182, -182,
1939 : -182, -182, -182, -182, -182, -182, -182, -182, -182, 206,
1940 : -182, -182, -182, -182, -182, -182, -182, -182, -182, -182,
1941 : -182
1942 : },
1943 :
1944 : {
1945 : 25, -183, 183, 183, 183, -183, -183, -183, -183, -183,
1946 : -183, 173, -183, -183, -183, -183, -183, 184, -183, -183,
1947 : -183, -183, -183, -183, -183, -183, -183, -183, -183, -183,
1948 : -183, -183, -183, -183, -183, -183, -183, -183, -183, -183,
1949 : -183
1950 :
1951 : },
1952 :
1953 : {
1954 : 25, -184, -184, -184, -184, -184, -184, -184, -184, -184,
1955 : -184, -184, -184, -184, -184, -184, -184, 207, -184, -184,
1956 : -184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
1957 : -184, -184, -184, -184, -184, -184, -184, -184, -184, -184,
1958 : -184
1959 : },
1960 :
1961 : {
1962 : 25, 208, 209, 146, 146, 208, 208, 208, 208, 208,
1963 : 208, 208, 208, 208, 208, 208, 208, 210, 208, 208,
1964 : 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
1965 : 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
1966 : 208
1967 :
1968 : },
1969 :
1970 : {
1971 : 25, 186, 186, -186, -186, 186, 186, 186, 186, 186,
1972 : 186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
1973 : 186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
1974 : 186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
1975 : 186
1976 : },
1977 :
1978 : {
1979 : 25, -187, -187, -187, -187, -187, -187, -187, -187, -187,
1980 : -187, -187, -187, -187, -187, -187, -187, -187, -187, -187,
1981 : -187, -187, -187, -187, -187, -187, -187, -187, -187, 211,
1982 : -187, -187, -187, -187, -187, -187, -187, -187, -187, -187,
1983 : -187
1984 :
1985 : },
1986 :
1987 : {
1988 : 25, -188, -188, -188, -188, -188, -188, -188, -188, -188,
1989 : -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
1990 : -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
1991 : -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
1992 : -188
1993 : },
1994 :
1995 : {
1996 : 25, -189, -189, -189, -189, -189, -189, -189, -189, -189,
1997 : -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
1998 : -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
1999 : -189, -189, -189, -189, -189, -189, -189, -189, -189, -189,
2000 : -189
2001 :
2002 : },
2003 :
2004 : {
2005 : 25, 212, 213, 214, 214, 212, 212, 212, 212, 212,
2006 : 212, 212, 212, 212, 212, 212, 212, 215, 212, 212,
2007 : 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
2008 : 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
2009 : 212
2010 : },
2011 :
2012 : {
2013 : 25, 191, 192, 116, 116, 191, 191, 191, 191, 191,
2014 : 191, 191, 191, 191, 191, 191, 191, 193, 191, 191,
2015 : 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
2016 : 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
2017 : 191
2018 :
2019 : },
2020 :
2021 : {
2022 : 25, 191, 192, 116, 116, 191, 191, 191, 191, 191,
2023 : 191, 191, 191, 191, 191, 191, 191, 193, 191, 191,
2024 : 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
2025 : 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
2026 : 191
2027 : },
2028 :
2029 : {
2030 : 25, 191, 192, 116, 116, 191, 191, 191, 191, 191,
2031 : 191, 191, 191, 191, 191, 191, 191, 216, 191, 191,
2032 : 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
2033 : 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
2034 : 191
2035 :
2036 : },
2037 :
2038 : {
2039 : 25, 217, 218, 219, 219, 217, 217, 217, 217, 217,
2040 : 217, 217, 217, 217, 217, 217, 217, 220, 217, 217,
2041 : 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
2042 : 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
2043 : 217
2044 : },
2045 :
2046 : {
2047 : 25, 195, 196, 126, 126, 195, 195, 195, 195, 195,
2048 : 195, 195, 195, 195, 195, 195, 195, 197, 195, 195,
2049 : 195, 195, 195, 195, 195, 195, 195, 195, 195, 195,
2050 : 195, 195, 195, 195, 195, 195, 195, 195, 195, 195,
2051 : 195
2052 :
2053 : },
2054 :
2055 : {
2056 : 25, 195, 196, 126, 126, 195, 195, 195, 195, 195,
2057 : 195, 195, 195, 195, 195, 195, 195, 197, 195, 195,
2058 : 195, 195, 195, 195, 195, 195, 195, 195, 195, 195,
2059 : 195, 195, 195, 195, 195, 195, 195, 195, 195, 195,
2060 : 195
2061 : },
2062 :
2063 : {
2064 : 25, 195, 196, 126, 126, 195, 195, 195, 195, 195,
2065 : 195, 195, 195, 195, 195, 195, 195, 221, 195, 195,
2066 : 195, 195, 195, 195, 195, 195, 195, 195, 195, 195,
2067 : 195, 195, 195, 195, 195, 195, 195, 195, 195, 195,
2068 : 195
2069 :
2070 : },
2071 :
2072 : {
2073 : 25, 222, 223, 224, 224, 222, 222, 222, 222, 222,
2074 : 222, 222, 222, 222, 222, 222, 222, 225, 222, 222,
2075 : 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
2076 : 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
2077 : 222
2078 : },
2079 :
2080 : {
2081 : 25, 199, 200, 130, 130, 199, 199, 199, 199, 199,
2082 : 199, 199, 199, 199, 199, 199, 199, 201, 199, 199,
2083 : 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
2084 : 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
2085 : 199
2086 :
2087 : },
2088 :
2089 : {
2090 : 25, 199, 200, 130, 130, 199, 199, 199, 199, 199,
2091 : 199, 199, 199, 199, 199, 199, 199, 201, 199, 199,
2092 : 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
2093 : 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
2094 : 199
2095 : },
2096 :
2097 : {
2098 : 25, 199, 200, 130, 130, 199, 199, 199, 199, 199,
2099 : 199, 199, 199, 199, 199, 199, 199, 226, 199, 199,
2100 : 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
2101 : 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
2102 : 199
2103 :
2104 : },
2105 :
2106 : {
2107 : 25, -202, -202, -202, -202, -202, -202, -202, -202, -202,
2108 : -202, -202, -202, -202, -202, -202, -202, -202, -202, -202,
2109 : -202, -202, -202, -202, -202, -202, -202, -202, -202, -202,
2110 : -202, -202, -202, -202, -202, -202, -202, -202, -202, -202,
2111 : -202
2112 : },
2113 :
2114 : {
2115 : 25, -203, -203, -203, -203, -203, -203, -203, -203, -203,
2116 : -203, -203, -203, -203, -203, -203, -203, -203, -203, -203,
2117 : 227, 227, -203, -203, -203, -203, -203, 227, 227, 227,
2118 : 227, 227, -203, -203, -203, -203, -203, -203, -203, -203,
2119 : -203
2120 :
2121 : },
2122 :
2123 : {
2124 : 25, -204, -204, -204, -204, -204, -204, -204, -204, -204,
2125 : -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
2126 : 228, 228, -204, -204, -204, -204, -204, 228, 228, 228,
2127 : 228, 228, -204, -204, -204, -204, -204, -204, -204, -204,
2128 : -204
2129 : },
2130 :
2131 : {
2132 : 25, -205, -205, -205, -205, -205, -205, -205, -205, -205,
2133 : -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
2134 : -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
2135 : -205, -205, -205, -205, -205, -205, -205, -205, -205, -205,
2136 : -205
2137 :
2138 : },
2139 :
2140 : {
2141 : 25, -206, -206, -206, -206, -206, -206, -206, -206, -206,
2142 : -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
2143 : -206, -206, -206, -206, -206, -206, -206, 229, -206, -206,
2144 : -206, -206, -206, -206, -206, -206, -206, -206, -206, -206,
2145 : -206
2146 : },
2147 :
2148 : {
2149 : 25, 230, 231, 232, 232, 230, 230, 230, 230, 230,
2150 : 230, 230, 230, 230, 230, 230, 230, 233, 230, 230,
2151 : 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
2152 : 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
2153 : 230
2154 :
2155 : },
2156 :
2157 : {
2158 : 25, 208, 209, 146, 146, 208, 208, 208, 208, 208,
2159 : 208, 208, 208, 208, 208, 208, 208, 210, 208, 208,
2160 : 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
2161 : 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
2162 : 208
2163 : },
2164 :
2165 : {
2166 : 25, 208, 209, 146, 146, 208, 208, 208, 208, 208,
2167 : 208, 208, 208, 208, 208, 208, 208, 210, 208, 208,
2168 : 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
2169 : 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
2170 : 208
2171 :
2172 : },
2173 :
2174 : {
2175 : 25, 208, 209, 146, 146, 208, 208, 208, 208, 208,
2176 : 208, 208, 208, 208, 208, 208, 208, 234, 208, 208,
2177 : 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
2178 : 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
2179 : 208
2180 : },
2181 :
2182 : {
2183 : 25, -211, -211, -211, -211, -211, -211, -211, -211, -211,
2184 : -211, -211, -211, -211, -211, -211, -211, -211, -211, -211,
2185 : -211, -211, -211, -211, -211, -211, -211, 235, -211, -211,
2186 : -211, -211, -211, -211, -211, -211, -211, -211, -211, -211,
2187 : -211
2188 :
2189 : },
2190 :
2191 : {
2192 : 25, 212, 213, 214, 214, 212, 212, 212, 212, 212,
2193 : 212, 212, 212, 212, 212, 212, 212, 215, 212, 212,
2194 : 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
2195 : 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
2196 : 212
2197 : },
2198 :
2199 : {
2200 : 25, 212, 213, 214, 214, 212, 212, 212, 212, 212,
2201 : 212, 212, 212, 212, 212, 212, 212, 215, 212, 212,
2202 : 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
2203 : 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
2204 : 212
2205 :
2206 : },
2207 :
2208 : {
2209 : 25, -214, 163, 163, 163, -214, -214, -214, -214, -214,
2210 : -214, 164, -214, -214, -214, -214, -214, 165, -214, -214,
2211 : -214, -214, -214, -214, -214, -214, -214, -214, -214, -214,
2212 : -214, -214, -214, -214, -214, -214, -214, -214, -214, -214,
2213 : -214
2214 : },
2215 :
2216 : {
2217 : 25, 212, 213, 214, 214, 212, 212, 212, 212, 212,
2218 : 212, 212, 212, 212, 212, 212, 212, 236, 212, 212,
2219 : 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
2220 : 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
2221 : 212
2222 :
2223 : },
2224 :
2225 : {
2226 : 25, 191, 192, 116, 116, 191, 191, 191, 191, 191,
2227 : 191, 191, 191, 191, 191, 191, 191, 216, 191, 191,
2228 : 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
2229 : 191, 191, 191, 191, 191, 191, 191, 191, 191, 191,
2230 : 191
2231 : },
2232 :
2233 : {
2234 : 25, 217, 218, 219, 219, 217, 217, 217, 217, 217,
2235 : 217, 217, 217, 217, 217, 217, 217, 220, 217, 217,
2236 : 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
2237 : 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
2238 : 217
2239 :
2240 : },
2241 :
2242 : {
2243 : 25, 217, 218, 219, 219, 217, 217, 217, 217, 217,
2244 : 217, 217, 217, 217, 217, 217, 217, 220, 217, 217,
2245 : 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
2246 : 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
2247 : 217
2248 : },
2249 :
2250 : {
2251 : 25, -219, 168, 168, 168, -219, -219, -219, -219, -219,
2252 : -219, 169, -219, -219, -219, -219, -219, 170, -219, -219,
2253 : -219, -219, -219, -219, -219, -219, -219, -219, -219, -219,
2254 : -219, -219, -219, -219, -219, -219, -219, -219, -219, -219,
2255 : -219
2256 :
2257 : },
2258 :
2259 : {
2260 : 25, 217, 218, 219, 219, 217, 217, 217, 217, 217,
2261 : 217, 217, 217, 217, 217, 217, 217, 237, 217, 217,
2262 : 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
2263 : 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
2264 : 217
2265 : },
2266 :
2267 : {
2268 : 25, 195, 196, 126, 126, 195, 195, 195, 195, 195,
2269 : 195, 195, 195, 195, 195, 195, 195, 221, 195, 195,
2270 : 195, 195, 195, 195, 195, 195, 195, 195, 195, 195,
2271 : 195, 195, 195, 195, 195, 195, 195, 195, 195, 195,
2272 : 195
2273 :
2274 : },
2275 :
2276 : {
2277 : 25, 222, 223, 224, 224, 222, 222, 222, 222, 222,
2278 : 222, 222, 222, 222, 222, 222, 222, 225, 222, 222,
2279 : 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
2280 : 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
2281 : 222
2282 : },
2283 :
2284 : {
2285 : 25, 222, 223, 224, 224, 222, 222, 222, 222, 222,
2286 : 222, 222, 222, 222, 222, 222, 222, 225, 222, 222,
2287 : 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
2288 : 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
2289 : 222
2290 :
2291 : },
2292 :
2293 : {
2294 : 25, -224, 172, 172, 172, -224, -224, -224, -224, -224,
2295 : -224, 173, -224, -224, -224, -224, -224, 174, -224, -224,
2296 : -224, -224, -224, -224, -224, -224, -224, -224, -224, -224,
2297 : -224, -224, -224, -224, -224, -224, -224, -224, -224, -224,
2298 : -224
2299 : },
2300 :
2301 : {
2302 : 25, 222, 223, 224, 224, 222, 222, 222, 222, 222,
2303 : 222, 222, 222, 222, 222, 222, 222, 238, 222, 222,
2304 : 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
2305 : 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
2306 : 222
2307 :
2308 : },
2309 :
2310 : {
2311 : 25, 199, 200, 130, 130, 199, 199, 199, 199, 199,
2312 : 199, 199, 199, 199, 199, 199, 199, 226, 199, 199,
2313 : 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
2314 : 199, 199, 199, 199, 199, 199, 199, 199, 199, 199,
2315 : 199
2316 : },
2317 :
2318 : {
2319 : 25, -227, -227, -227, -227, -227, -227, -227, -227, -227,
2320 : -227, -227, -227, -227, -227, -227, -227, -227, -227, -227,
2321 : 239, 239, -227, -227, -227, -227, -227, 239, 239, 239,
2322 : 239, 239, -227, -227, -227, -227, -227, -227, -227, -227,
2323 : -227
2324 :
2325 : },
2326 :
2327 : {
2328 : 25, -228, -228, -228, -228, -228, -228, -228, -228, -228,
2329 : -228, -228, -228, -228, -228, -228, -228, -228, -228, -228,
2330 : 240, 240, -228, -228, -228, -228, -228, 240, 240, 240,
2331 : 240, 240, -228, -228, -228, -228, -228, -228, -228, -228,
2332 : -228
2333 : },
2334 :
2335 : {
2336 : 25, -229, -229, -229, -229, -229, -229, -229, -229, -229,
2337 : -229, -229, -229, -229, -229, -229, -229, -229, -229, -229,
2338 : -229, -229, -229, -229, -229, -229, -229, -229, -229, -229,
2339 : -229, -229, -229, -229, 241, -229, -229, -229, -229, -229,
2340 : -229
2341 :
2342 : },
2343 :
2344 : {
2345 : 25, 230, 231, 232, 232, 230, 230, 230, 230, 230,
2346 : 230, 230, 230, 230, 230, 230, 230, 233, 230, 230,
2347 : 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
2348 : 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
2349 : 230
2350 : },
2351 :
2352 : {
2353 : 25, 230, 231, 232, 232, 230, 230, 230, 230, 230,
2354 : 230, 230, 230, 230, 230, 230, 230, 233, 230, 230,
2355 : 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
2356 : 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
2357 : 230
2358 :
2359 : },
2360 :
2361 : {
2362 : 25, -232, 183, 183, 183, -232, -232, -232, -232, -232,
2363 : -232, 173, -232, -232, -232, -232, -232, 184, -232, -232,
2364 : -232, -232, -232, -232, -232, -232, -232, -232, -232, -232,
2365 : -232, -232, -232, -232, -232, -232, -232, -232, -232, -232,
2366 : -232
2367 : },
2368 :
2369 : {
2370 : 25, 230, 231, 232, 232, 230, 230, 230, 230, 230,
2371 : 230, 230, 230, 230, 230, 230, 230, 242, 230, 230,
2372 : 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
2373 : 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
2374 : 230
2375 :
2376 : },
2377 :
2378 : {
2379 : 25, 208, 209, 146, 146, 208, 208, 208, 208, 208,
2380 : 208, 208, 208, 208, 208, 208, 208, 234, 208, 208,
2381 : 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
2382 : 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
2383 : 208
2384 : },
2385 :
2386 : {
2387 : 25, -235, -235, -235, -235, -235, -235, -235, -235, -235,
2388 : -235, -235, -235, -235, -235, -235, -235, -235, -235, -235,
2389 : -235, -235, -235, -235, -235, -235, -235, -235, -235, -235,
2390 : -235, -235, -235, -235, 243, -235, -235, -235, -235, -235,
2391 : -235
2392 :
2393 : },
2394 :
2395 : {
2396 : 25, 212, 213, 214, 214, 212, 212, 212, 212, 212,
2397 : 212, 212, 212, 212, 212, 212, 212, 236, 212, 212,
2398 : 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
2399 : 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
2400 : 212
2401 : },
2402 :
2403 : {
2404 : 25, 217, 218, 219, 219, 217, 217, 217, 217, 217,
2405 : 217, 217, 217, 217, 217, 217, 217, 237, 217, 217,
2406 : 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
2407 : 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
2408 : 217
2409 :
2410 : },
2411 :
2412 : {
2413 : 25, 222, 223, 224, 224, 222, 222, 222, 222, 222,
2414 : 222, 222, 222, 222, 222, 222, 222, 238, 222, 222,
2415 : 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
2416 : 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
2417 : 222
2418 : },
2419 :
2420 : {
2421 : 25, -239, -239, -239, -239, -239, -239, -239, -239, -239,
2422 : -239, -239, -239, -239, -239, -239, -239, -239, -239, -239,
2423 : 244, 244, -239, -239, -239, -239, -239, 244, 244, 244,
2424 : 244, 244, -239, -239, -239, -239, -239, -239, -239, -239,
2425 : -239
2426 :
2427 : },
2428 :
2429 : {
2430 : 25, -240, -240, -240, -240, -240, -240, -240, -240, -240,
2431 : -240, -240, -240, -240, -240, -240, -240, -240, -240, -240,
2432 : -240, -240, -240, -240, -240, -240, -240, -240, -240, -240,
2433 : -240, -240, -240, -240, -240, -240, -240, -240, -240, -240,
2434 : -240
2435 : },
2436 :
2437 : {
2438 : 25, -241, -241, -241, -241, -241, -241, -241, -241, -241,
2439 : -241, -241, -241, -241, -241, -241, -241, -241, -241, -241,
2440 : -241, -241, -241, -241, -241, -241, -241, -241, -241, -241,
2441 : -241, 245, -241, -241, -241, -241, -241, -241, -241, -241,
2442 : -241
2443 :
2444 : },
2445 :
2446 : {
2447 : 25, 230, 231, 232, 232, 230, 230, 230, 230, 230,
2448 : 230, 230, 230, 230, 230, 230, 230, 242, 230, 230,
2449 : 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
2450 : 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
2451 : 230
2452 : },
2453 :
2454 : {
2455 : 25, -243, -243, -243, -243, -243, -243, -243, -243, -243,
2456 : -243, -243, -243, -243, -243, -243, -243, -243, -243, -243,
2457 : -243, -243, -243, -243, -243, -243, -243, -243, -243, -243,
2458 : -243, 246, -243, -243, -243, -243, -243, -243, -243, -243,
2459 : -243
2460 :
2461 : },
2462 :
2463 : {
2464 : 25, -244, -244, -244, -244, -244, -244, -244, -244, -244,
2465 : -244, -244, -244, -244, -244, -244, -244, -244, -244, -244,
2466 : 247, 247, -244, -244, -244, -244, -244, 247, 247, 247,
2467 : 247, 247, -244, -244, -244, -244, -244, -244, -244, -244,
2468 : -244
2469 : },
2470 :
2471 : {
2472 : 25, -245, 248, 248, 248, -245, -245, -245, -245, -245,
2473 : -245, 249, -245, -245, -245, -245, -245, 250, -245, -245,
2474 : -245, -245, -245, -245, -245, -245, -245, -245, -245, -245,
2475 : -245, -245, -245, -245, -245, -245, -245, -245, -245, -245,
2476 : -245
2477 :
2478 : },
2479 :
2480 : {
2481 : 25, -246, 251, 251, 251, -246, -246, -246, -246, -246,
2482 : -246, 252, -246, -246, -246, -246, -246, 253, -246, -246,
2483 : -246, -246, -246, -246, -246, -246, -246, -246, -246, -246,
2484 : -246, -246, -246, -246, -246, -246, -246, -246, -246, -246,
2485 : -246
2486 : },
2487 :
2488 : {
2489 : 25, -247, -247, -247, -247, -247, -247, -247, -247, -247,
2490 : -247, -247, -247, -247, -247, -247, -247, -247, -247, -247,
2491 : 254, 254, -247, -247, -247, -247, -247, 254, 254, 254,
2492 : 254, 254, -247, -247, -247, -247, -247, -247, -247, -247,
2493 : -247
2494 :
2495 : },
2496 :
2497 : {
2498 : 25, -248, 248, 248, 248, -248, -248, -248, -248, -248,
2499 : -248, 249, -248, -248, -248, -248, -248, 250, -248, -248,
2500 : -248, -248, -248, -248, -248, -248, -248, -248, -248, -248,
2501 : -248, -248, -248, -248, -248, -248, -248, -248, -248, -248,
2502 : -248
2503 : },
2504 :
2505 : {
2506 : 25, 255, 255, 255, 255, 255, 255, 255, 255, 255,
2507 : 255, -249, 255, 255, 255, 255, 255, 255, 255, 255,
2508 : 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
2509 : 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
2510 : 255
2511 :
2512 : },
2513 :
2514 : {
2515 : 25, -250, -250, -250, -250, -250, -250, -250, -250, -250,
2516 : -250, -250, -250, -250, -250, -250, -250, 256, -250, -250,
2517 : -250, -250, -250, -250, -250, -250, -250, -250, -250, -250,
2518 : -250, -250, -250, -250, -250, -250, -250, -250, -250, -250,
2519 : -250
2520 : },
2521 :
2522 : {
2523 : 25, -251, 251, 251, 251, -251, -251, -251, -251, -251,
2524 : -251, 252, -251, -251, -251, -251, -251, 253, -251, -251,
2525 : -251, -251, -251, -251, -251, -251, -251, -251, -251, -251,
2526 : -251, -251, -251, -251, -251, -251, -251, -251, -251, -251,
2527 : -251
2528 :
2529 : },
2530 :
2531 : {
2532 : 25, 257, 257, 257, 257, 257, 257, 257, 257, 257,
2533 : 257, -252, 257, 257, 257, 257, 257, 257, 257, 257,
2534 : 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
2535 : 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
2536 : 257
2537 : },
2538 :
2539 : {
2540 : 25, -253, -253, -253, -253, -253, -253, -253, -253, -253,
2541 : -253, -253, -253, -253, -253, -253, -253, 258, -253, -253,
2542 : -253, -253, -253, -253, -253, -253, -253, -253, -253, -253,
2543 : -253, -253, -253, -253, -253, -253, -253, -253, -253, -253,
2544 : -253
2545 :
2546 : },
2547 :
2548 : {
2549 : 25, -254, -254, -254, -254, -254, -254, -254, -254, -254,
2550 : -254, -254, -254, -254, -254, -254, -254, -254, -254, -254,
2551 : 240, 240, -254, -254, -254, -254, -254, 240, 240, 240,
2552 : 240, 240, -254, -254, -254, -254, -254, -254, -254, -254,
2553 : -254
2554 : },
2555 :
2556 : {
2557 : 25, -255, -255, -255, -255, -255, -255, -255, -255, -255,
2558 : -255, 259, -255, -255, -255, -255, -255, -255, -255, -255,
2559 : -255, -255, -255, -255, -255, -255, -255, -255, -255, -255,
2560 : -255, -255, -255, -255, -255, -255, -255, -255, -255, -255,
2561 : -255
2562 :
2563 : },
2564 :
2565 : {
2566 : 25, 260, 261, 248, 248, 260, 260, 260, 260, 260,
2567 : 260, 262, 260, 260, 260, 260, 260, 263, 260, 260,
2568 : 260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2569 : 260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2570 : 260
2571 : },
2572 :
2573 : {
2574 : 25, -257, -257, -257, -257, -257, -257, -257, -257, -257,
2575 : -257, 264, -257, -257, -257, -257, -257, -257, -257, -257,
2576 : -257, -257, -257, -257, -257, -257, -257, -257, -257, -257,
2577 : -257, -257, -257, -257, -257, -257, -257, -257, -257, -257,
2578 : -257
2579 :
2580 : },
2581 :
2582 : {
2583 : 25, 265, 266, 251, 251, 265, 265, 265, 265, 265,
2584 : 265, 267, 265, 265, 265, 265, 265, 268, 265, 265,
2585 : 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2586 : 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2587 : 265
2588 : },
2589 :
2590 : {
2591 : 25, -259, -259, -259, -259, -259, -259, -259, -259, -259,
2592 : -259, -259, -259, -259, -259, -259, -259, -259, -259, -259,
2593 : -259, -259, -259, -259, -259, -259, -259, -259, -259, -259,
2594 : -259, -259, -259, -259, -259, -259, -259, -259, -259, -259,
2595 : -259
2596 :
2597 : },
2598 :
2599 : {
2600 : 25, 260, 261, 248, 248, 260, 260, 260, 260, 260,
2601 : 260, 262, 260, 260, 260, 260, 260, 263, 260, 260,
2602 : 260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2603 : 260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2604 : 260
2605 : },
2606 :
2607 : {
2608 : 25, 260, 261, 248, 248, 260, 260, 260, 260, 260,
2609 : 260, 262, 260, 260, 260, 260, 260, 263, 260, 260,
2610 : 260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2611 : 260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2612 : 260
2613 :
2614 : },
2615 :
2616 : {
2617 : 25, 269, 270, 271, 271, 269, 269, 269, 269, 269,
2618 : 269, 262, 269, 269, 269, 269, 269, 272, 269, 269,
2619 : 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
2620 : 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
2621 : 269
2622 : },
2623 :
2624 : {
2625 : 25, 260, 261, 248, 248, 260, 260, 260, 260, 260,
2626 : 260, 262, 260, 260, 260, 260, 260, 273, 260, 260,
2627 : 260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2628 : 260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2629 : 260
2630 :
2631 : },
2632 :
2633 : {
2634 : 25, -264, -264, -264, -264, -264, -264, -264, -264, -264,
2635 : -264, -264, -264, -264, -264, -264, -264, -264, -264, -264,
2636 : -264, -264, -264, -264, -264, -264, -264, -264, -264, -264,
2637 : -264, -264, -264, -264, -264, -264, -264, -264, -264, -264,
2638 : -264
2639 : },
2640 :
2641 : {
2642 : 25, 265, 266, 251, 251, 265, 265, 265, 265, 265,
2643 : 265, 267, 265, 265, 265, 265, 265, 268, 265, 265,
2644 : 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2645 : 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2646 : 265
2647 :
2648 : },
2649 :
2650 : {
2651 : 25, 265, 266, 251, 251, 265, 265, 265, 265, 265,
2652 : 265, 267, 265, 265, 265, 265, 265, 268, 265, 265,
2653 : 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2654 : 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2655 : 265
2656 : },
2657 :
2658 : {
2659 : 25, 274, 275, 276, 276, 274, 274, 274, 274, 274,
2660 : 274, 267, 274, 274, 274, 274, 274, 277, 274, 274,
2661 : 274, 274, 274, 274, 274, 274, 274, 274, 274, 274,
2662 : 274, 274, 274, 274, 274, 274, 274, 274, 274, 274,
2663 : 274
2664 :
2665 : },
2666 :
2667 : {
2668 : 25, 265, 266, 251, 251, 265, 265, 265, 265, 265,
2669 : 265, 267, 265, 265, 265, 265, 265, 278, 265, 265,
2670 : 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2671 : 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2672 : 265
2673 : },
2674 :
2675 : {
2676 : 25, 260, 261, 248, 248, 260, 260, 260, 260, 260,
2677 : 260, 279, 260, 260, 260, 260, 260, 263, 260, 260,
2678 : 260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2679 : 260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2680 : 260
2681 :
2682 : },
2683 :
2684 : {
2685 : 25, 260, 261, 248, 248, 260, 260, 260, 260, 260,
2686 : 260, 279, 260, 260, 260, 260, 260, 263, 260, 260,
2687 : 260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2688 : 260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2689 : 260
2690 : },
2691 :
2692 : {
2693 : 25, -271, 248, 248, 248, -271, -271, -271, -271, -271,
2694 : -271, 280, -271, -271, -271, -271, -271, 250, -271, -271,
2695 : -271, -271, -271, -271, -271, -271, -271, -271, -271, -271,
2696 : -271, -271, -271, -271, -271, -271, -271, -271, -271, -271,
2697 : -271
2698 :
2699 : },
2700 :
2701 : {
2702 : 25, 260, 261, 248, 248, 260, 260, 260, 260, 260,
2703 : 260, 279, 260, 260, 260, 260, 260, 273, 260, 260,
2704 : 260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2705 : 260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2706 : 260
2707 : },
2708 :
2709 : {
2710 : 25, 260, 261, 248, 248, 260, 260, 260, 260, 260,
2711 : 260, 262, 260, 260, 260, 260, 260, 273, 260, 260,
2712 : 260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2713 : 260, 260, 260, 260, 260, 260, 260, 260, 260, 260,
2714 : 260
2715 :
2716 : },
2717 :
2718 : {
2719 : 25, 265, 266, 251, 251, 265, 265, 265, 265, 265,
2720 : 265, 281, 265, 265, 265, 265, 265, 268, 265, 265,
2721 : 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2722 : 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2723 : 265
2724 : },
2725 :
2726 : {
2727 : 25, 265, 266, 251, 251, 265, 265, 265, 265, 265,
2728 : 265, 281, 265, 265, 265, 265, 265, 268, 265, 265,
2729 : 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2730 : 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2731 : 265
2732 :
2733 : },
2734 :
2735 : {
2736 : 25, -276, 251, 251, 251, -276, -276, -276, -276, -276,
2737 : -276, 282, -276, -276, -276, -276, -276, 253, -276, -276,
2738 : -276, -276, -276, -276, -276, -276, -276, -276, -276, -276,
2739 : -276, -276, -276, -276, -276, -276, -276, -276, -276, -276,
2740 : -276
2741 : },
2742 :
2743 : {
2744 : 25, 265, 266, 251, 251, 265, 265, 265, 265, 265,
2745 : 265, 281, 265, 265, 265, 265, 265, 278, 265, 265,
2746 : 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2747 : 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2748 : 265
2749 :
2750 : },
2751 :
2752 : {
2753 : 25, 265, 266, 251, 251, 265, 265, 265, 265, 265,
2754 : 265, 267, 265, 265, 265, 265, 265, 278, 265, 265,
2755 : 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2756 : 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
2757 : 265
2758 : },
2759 :
2760 : {
2761 : 25, 269, 270, 271, 271, 269, 269, 269, 269, 269,
2762 : 269, 262, 269, 269, 269, 269, 269, 272, 269, 269,
2763 : 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
2764 : 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
2765 : 269
2766 :
2767 : },
2768 :
2769 : {
2770 : 25, 255, 255, 255, 255, 255, 255, 255, 255, 255,
2771 : 255, -280, 255, 255, 255, 255, 255, 255, 255, 255,
2772 : 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
2773 : 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
2774 : 255
2775 : },
2776 :
2777 : {
2778 : 25, 274, 275, 276, 276, 274, 274, 274, 274, 274,
2779 : 274, 267, 274, 274, 274, 274, 274, 277, 274, 274,
2780 : 274, 274, 274, 274, 274, 274, 274, 274, 274, 274,
2781 : 274, 274, 274, 274, 274, 274, 274, 274, 274, 274,
2782 : 274
2783 :
2784 : },
2785 :
2786 : {
2787 : 25, 257, 257, 257, 257, 257, 257, 257, 257, 257,
2788 : 257, -282, 257, 257, 257, 257, 257, 257, 257, 257,
2789 : 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
2790 : 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
2791 : 257
2792 : },
2793 :
2794 : } ;
2795 :
2796 : static yy_state_type yy_get_previous_state (yyscan_t yyscanner );
2797 : static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner);
2798 : static int yy_get_next_buffer (yyscan_t yyscanner );
2799 : static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
2800 :
2801 : /* Done after the current pattern has been matched and before the
2802 : * corresponding action - sets up yytext.
2803 : */
2804 : #define YY_DO_BEFORE_ACTION \
2805 : yyg->yytext_ptr = yy_bp; \
2806 : yyleng = (size_t) (yy_cp - yy_bp); \
2807 : yyg->yy_hold_char = *yy_cp; \
2808 : *yy_cp = '\0'; \
2809 : yyg->yy_c_buf_p = yy_cp;
2810 :
2811 : #define YY_NUM_RULES 86
2812 : #define YY_END_OF_BUFFER 87
2813 : /* This struct is not used in this scanner,
2814 : but its presence is necessary. */
2815 : struct yy_trans_info
2816 : {
2817 : flex_int32_t yy_verify;
2818 : flex_int32_t yy_nxt;
2819 : };
2820 : static yyconst flex_int16_t yy_accept[283] =
2821 : { 0,
2822 : 0, 0, 12, 12, 0, 0, 0, 0, 11, 11,
2823 : 0, 0, 0, 0, 0, 0, 0, 0, 52, 52,
2824 : 0, 0, 28, 28, 87, 85, 1, 1, 76, 46,
2825 : 76, 85, 75, 19, 65, 66, 75, 75, 75, 75,
2826 : 78, 75, 67, 75, 75, 75, 84, 84, 84, 84,
2827 : 84, 84, 69, 12, 9, 5, 5, 6, 6, 55,
2828 : 48, 11, 16, 32, 32, 22, 39, 31, 22, 43,
2829 : 43, 45, 49, 51, 50, 50, 51, 51, 24, 27,
2830 : 26, 26, 27, 27, 1, 76, 64, 40, 77, 41,
2831 : 1, 58, 79, 2, 79, 78, 82, 74, 73, 70,
2832 :
2833 : 57, 59, 61, 63, 60, 62, 84, 8, 20, 18,
2834 : 56, 15, 68, 12, 9, 9, 10, 5, 7, 4,
2835 : 3, 55, 54, 11, 16, 16, 17, 32, 22, 22,
2836 : 30, 23, 35, 36, 34, 34, 35, 31, 43, 42,
2837 : 44, 50, 50, 52, 24, 24, 25, 26, 26, 28,
2838 : 41, 1, 1, 2, 80, 79, 83, 81, 74, 73,
2839 : 47, 21, 9, 14, 10, 9, 3, 16, 13, 17,
2840 : 16, 22, 38, 23, 22, 36, 34, 34, 37, 44,
2841 : 50, 52, 24, 25, 24, 26, 28, 72, 71, 9,
2842 : 9, 9, 9, 16, 16, 16, 16, 22, 22, 22,
2843 :
2844 : 22, 36, 34, 34, 37, 52, 24, 24, 24, 24,
2845 : 28, 9, 9, 9, 9, 9, 16, 16, 16, 16,
2846 : 16, 22, 22, 22, 22, 22, 34, 34, 52, 24,
2847 : 24, 24, 24, 24, 28, 9, 16, 22, 34, 33,
2848 : 52, 24, 28, 34, 52, 28, 34, 52, 52, 52,
2849 : 28, 28, 28, 34, 52, 52, 28, 28, 53, 52,
2850 : 52, 52, 52, 29, 28, 28, 28, 28, 52, 52,
2851 : 52, 52, 52, 28, 28, 28, 28, 28, 52, 52,
2852 : 28, 28
2853 : } ;
2854 :
2855 : static yyconst flex_int32_t yy_ec[256] =
2856 : { 0,
2857 : 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
2858 : 1, 2, 4, 1, 1, 1, 1, 1, 1, 1,
2859 : 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2860 : 1, 2, 5, 6, 7, 8, 9, 10, 11, 12,
2861 : 13, 14, 15, 16, 17, 18, 19, 20, 20, 20,
2862 : 20, 20, 20, 20, 20, 21, 21, 22, 23, 24,
2863 : 25, 26, 7, 7, 27, 28, 29, 30, 31, 30,
2864 : 32, 32, 32, 32, 32, 32, 32, 33, 32, 34,
2865 : 32, 32, 35, 32, 36, 32, 32, 37, 32, 32,
2866 : 16, 38, 16, 9, 32, 7, 27, 28, 29, 30,
2867 :
2868 : 31, 30, 32, 32, 32, 32, 32, 32, 32, 33,
2869 : 32, 34, 32, 32, 35, 32, 39, 32, 32, 40,
2870 : 32, 32, 1, 7, 1, 7, 1, 32, 32, 32,
2871 : 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
2872 : 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
2873 : 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
2874 : 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
2875 : 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
2876 : 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
2877 : 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
2878 :
2879 : 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
2880 : 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
2881 : 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
2882 : 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
2883 : 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
2884 : 32, 32, 32, 32, 32
2885 : } ;
2886 :
2887 : /* The intent behind this definition is that it'll catch
2888 : * any uses of REJECT which flex missed.
2889 : */
2890 : #define REJECT reject_used_but_not_detected
2891 : #define yymore() yymore_used_but_not_detected
2892 : #define YY_MORE_ADJ 0
2893 : #define YY_RESTORE_YY_MORE_OFFSET
2894 : #line 1 "psqlscan.l"
2895 :
2896 : #line 42 "psqlscan.l"
2897 : #include "fe_utils/psqlscan_int.h"
2898 :
2899 : /*
2900 : * We must have a typedef YYSTYPE for psql_yylex's first argument, but this lexer
2901 : * doesn't presently make use of that argument, so just declare it as int.
2902 : */
2903 : typedef int YYSTYPE;
2904 :
2905 : /*
2906 : * Set the type of yyextra; we use it as a pointer back to the containing
2907 : * PsqlScanState.
2908 : */
2909 : #define YY_EXTRA_TYPE PsqlScanState
2910 :
2911 :
2912 : /* Return values from psql_yylex() */
2913 : #define LEXRES_EOL 0 /* end of input */
2914 : #define LEXRES_SEMI 1 /* command-terminating semicolon found */
2915 : #define LEXRES_BACKSLASH 2 /* backslash command start */
2916 :
2917 :
2918 : #define ECHO psqlscan_emit(cur_state, yytext, yyleng)
2919 :
2920 : /*
2921 : * Work around a bug in flex 2.5.35: it emits a couple of functions that
2922 : * it forgets to emit declarations for. Since we use -Wmissing-prototypes,
2923 : * this would cause warnings. Providing our own declarations should be
2924 : * harmless even when the bug gets fixed.
2925 : */
2926 : extern int psql_yyget_column(yyscan_t yyscanner);
2927 : extern void psql_yyset_column(int column_no, yyscan_t yyscanner);
2928 :
2929 : #define YY_NO_INPUT 1
2930 : /*
2931 : * All of the following definitions and rules should exactly match
2932 : * src/backend/parser/scan.l so far as the flex patterns are concerned.
2933 : * The rule bodies are just ECHO as opposed to what the backend does,
2934 : * however. (But be sure to duplicate code that affects the lexing process,
2935 : * such as BEGIN() and yyless().) Also, psqlscan uses a single <<EOF>> rule
2936 : * whereas scan.l has a separate one for each exclusive state.
2937 : */
2938 : /*
2939 : * OK, here is a short description of lex/flex rules behavior.
2940 : * The longest pattern which matches an input string is always chosen.
2941 : * For equal-length patterns, the first occurring in the rules list is chosen.
2942 : * INITIAL is the starting state, to which all non-conditional rules apply.
2943 : * Exclusive states change parsing rules while the state is active. When in
2944 : * an exclusive state, only those rules defined for that state apply.
2945 : *
2946 : * We use exclusive states for quoted strings, extended comments,
2947 : * and to eliminate parsing troubles for numeric strings.
2948 : * Exclusive states:
2949 : * <xb> bit string literal
2950 : * <xc> extended C-style comments
2951 : * <xd> delimited identifiers (double-quoted identifiers)
2952 : * <xh> hexadecimal numeric string
2953 : * <xq> standard quoted strings
2954 : * <xe> extended quoted strings (support backslash escape sequences)
2955 : * <xdolq> $foo$ quoted strings
2956 : * <xui> quoted identifier with Unicode escapes
2957 : * <xuiend> end of a quoted identifier with Unicode escapes, UESCAPE can follow
2958 : * <xus> quoted string with Unicode escapes
2959 : * <xusend> end of a quoted string with Unicode escapes, UESCAPE can follow
2960 : *
2961 : * Note: we intentionally don't mimic the backend's <xeu> state; we have
2962 : * no need to distinguish it from <xe> state, and no good way to get out
2963 : * of it in error cases. The backend just throws yyerror() in those
2964 : * cases, but that's not an option here.
2965 : */
2966 :
2967 :
2968 :
2969 :
2970 :
2971 :
2972 :
2973 :
2974 :
2975 :
2976 :
2977 : /*
2978 : * In order to make the world safe for Windows and Mac clients as well as
2979 : * Unix ones, we accept either \n or \r as a newline. A DOS-style \r\n
2980 : * sequence will be seen as two successive newlines, but that doesn't cause
2981 : * any problems. Comments that start with -- and extend to the next
2982 : * newline are treated as equivalent to a single whitespace character.
2983 : *
2984 : * NOTE a fine point: if there is no newline following --, we will absorb
2985 : * everything to the end of the input as a comment. This is correct. Older
2986 : * versions of Postgres failed to recognize -- as a comment if the input
2987 : * did not end with a newline.
2988 : *
2989 : * XXX perhaps \f (formfeed) should be treated as a newline as well?
2990 : *
2991 : * XXX if you change the set of whitespace characters, fix scanner_isspace()
2992 : * to agree, and see also the plpgsql lexer.
2993 : */
2994 : /*
2995 : * SQL requires at least one newline in the whitespace separating
2996 : * string literals that are to be concatenated. Silly, but who are we
2997 : * to argue? Note that {whitespace_with_newline} should not have * after
2998 : * it, whereas {whitespace} should generally have a * after it...
2999 : */
3000 : /*
3001 : * To ensure that {quotecontinue} can be scanned without having to back up
3002 : * if the full pattern isn't matched, we include trailing whitespace in
3003 : * {quotestop}. This matches all cases where {quotecontinue} fails to match,
3004 : * except for {quote} followed by whitespace and just one "-" (not two,
3005 : * which would start a {comment}). To cover that we have {quotefail}.
3006 : * The actions for {quotestop} and {quotefail} must throw back characters
3007 : * beyond the quote proper.
3008 : */
3009 : /* Bit string
3010 : * It is tempting to scan the string for only those characters
3011 : * which are allowed. However, this leads to silently swallowed
3012 : * characters if illegal characters are included in the string.
3013 : * For example, if xbinside is [01] then B'ABCD' is interpreted
3014 : * as a zero-length string, and the ABCD' is lost!
3015 : * Better to pass the string forward and let the input routines
3016 : * validate the contents.
3017 : */
3018 : /* Hexadecimal number */
3019 : /* National character */
3020 : /* Quoted string that allows backslash escapes */
3021 : /* Extended quote
3022 : * xqdouble implements embedded quote, ''''
3023 : */
3024 : /* $foo$ style quotes ("dollar quoting")
3025 : * The quoted string starts with $foo$ where "foo" is an optional string
3026 : * in the form of an identifier, except that it may not contain "$",
3027 : * and extends to the first occurrence of an identical string.
3028 : * There is *no* processing of the quoted text.
3029 : *
3030 : * {dolqfailed} is an error rule to avoid scanner backup when {dolqdelim}
3031 : * fails to match its trailing "$".
3032 : */
3033 : /* Double quote
3034 : * Allows embedded spaces and other special characters into identifiers.
3035 : */
3036 : /* Unicode escapes */
3037 : /* error rule to avoid backup */
3038 : /* Quoted identifier with Unicode escapes */
3039 : /* Quoted string with Unicode escapes */
3040 : /* Optional UESCAPE after a quoted string or identifier with Unicode escapes. */
3041 : /* error rule to avoid backup */
3042 : /* C-style comments
3043 : *
3044 : * The "extended comment" syntax closely resembles allowable operator syntax.
3045 : * The tricky part here is to get lex to recognize a string starting with
3046 : * slash-star as a comment, when interpreting it as an operator would produce
3047 : * a longer match --- remember lex will prefer a longer match! Also, if we
3048 : * have something like plus-slash-star, lex will think this is a 3-character
3049 : * operator whereas we want to see it as a + operator and a comment start.
3050 : * The solution is two-fold:
3051 : * 1. append {op_chars}* to xcstart so that it matches as much text as
3052 : * {operator} would. Then the tie-breaker (first matching rule of same
3053 : * length) ensures xcstart wins. We put back the extra stuff with yyless()
3054 : * in case it contains a star-slash that should terminate the comment.
3055 : * 2. In the operator rule, check for slash-star within the operator, and
3056 : * if found throw it back with yyless(). This handles the plus-slash-star
3057 : * problem.
3058 : * Dash-dash comments have similar interactions with the operator rule.
3059 : */
3060 : /* Assorted special-case operators and operator-like tokens */
3061 : /*
3062 : * "self" is the set of chars that should be returned as single-character
3063 : * tokens. "op_chars" is the set of chars that can make up "Op" tokens,
3064 : * which can be one or more characters long (but if a single-char token
3065 : * appears in the "self" set, it is not to be returned as an Op). Note
3066 : * that the sets overlap, but each has some chars that are not in the other.
3067 : *
3068 : * If you change either set, adjust the character lists appearing in the
3069 : * rule for "operator"!
3070 : */
3071 : /* we no longer allow unary minus in numbers.
3072 : * instead we pass it separately to parser. there it gets
3073 : * coerced via doNegate() -- Leon aug 20 1999
3074 : *
3075 : * {decimalfail} is used because we would like "1..10" to lex as 1, dot_dot, 10.
3076 : *
3077 : * {realfail1} and {realfail2} are added to prevent the need for scanner
3078 : * backup when the {real} rule fails to match completely.
3079 : */
3080 : /* psql-specific: characters allowed in variable names */
3081 : /*
3082 : * Dollar quoted strings are totally opaque, and no escaping is done on them.
3083 : * Other quoted strings must allow some special characters such as single-quote
3084 : * and newline.
3085 : * Embedded single-quotes are implemented both in the SQL standard
3086 : * style of two adjacent single quotes "''" and in the Postgres/Java style
3087 : * of escaped-quote "\'".
3088 : * Other embedded escaped characters are matched explicitly and the leading
3089 : * backslash is dropped from the string.
3090 : * Note that xcstart must appear before operator, as explained above!
3091 : * Also whitespace (comment) must appear before operator.
3092 : */
3093 : #line 3094 "psqlscan.c"
3094 :
3095 : #define INITIAL 0
3096 : #define xb 1
3097 : #define xc 2
3098 : #define xd 3
3099 : #define xh 4
3100 : #define xe 5
3101 : #define xq 6
3102 : #define xdolq 7
3103 : #define xui 8
3104 : #define xuiend 9
3105 : #define xus 10
3106 : #define xusend 11
3107 :
3108 : #ifndef YY_NO_UNISTD_H
3109 : /* Special case for "unistd.h", since it is non-ANSI. We include it way
3110 : * down here because we want the user's section 1 to have been scanned first.
3111 : * The user has a chance to override it with an option.
3112 : */
3113 : #include <unistd.h>
3114 : #endif
3115 :
3116 : #ifndef YY_EXTRA_TYPE
3117 : #define YY_EXTRA_TYPE void *
3118 : #endif
3119 :
3120 : /* Holds the entire state of the reentrant scanner. */
3121 : struct yyguts_t
3122 : {
3123 :
3124 : /* User-defined. Not touched by flex. */
3125 : YY_EXTRA_TYPE yyextra_r;
3126 :
3127 : /* The rest are the same as the globals declared in the non-reentrant scanner. */
3128 : FILE *yyin_r, *yyout_r;
3129 : size_t yy_buffer_stack_top; /**< index of top of stack. */
3130 : size_t yy_buffer_stack_max; /**< capacity of stack. */
3131 : YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */
3132 : char yy_hold_char;
3133 : yy_size_t yy_n_chars;
3134 : yy_size_t yyleng_r;
3135 : char *yy_c_buf_p;
3136 : int yy_init;
3137 : int yy_start;
3138 : int yy_did_buffer_switch_on_eof;
3139 : int yy_start_stack_ptr;
3140 : int yy_start_stack_depth;
3141 : int *yy_start_stack;
3142 : yy_state_type yy_last_accepting_state;
3143 : char* yy_last_accepting_cpos;
3144 :
3145 : int yylineno_r;
3146 : int yy_flex_debug_r;
3147 :
3148 : char *yytext_r;
3149 : int yy_more_flag;
3150 : int yy_more_len;
3151 :
3152 : YYSTYPE * yylval_r;
3153 :
3154 : }; /* end struct yyguts_t */
3155 :
3156 : static int yy_init_globals (yyscan_t yyscanner );
3157 :
3158 : /* This must go here because YYSTYPE and YYLTYPE are included
3159 : * from bison output in section 1.*/
3160 : # define yylval yyg->yylval_r
3161 :
3162 : int psql_yylex_init (yyscan_t* scanner);
3163 :
3164 : int psql_yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner);
3165 :
3166 : /* Accessor methods to globals.
3167 : These are made visible to non-reentrant scanners for convenience. */
3168 :
3169 : int psql_yylex_destroy (yyscan_t yyscanner );
3170 :
3171 : int psql_yyget_debug (yyscan_t yyscanner );
3172 :
3173 : void psql_yyset_debug (int debug_flag ,yyscan_t yyscanner );
3174 :
3175 : YY_EXTRA_TYPE psql_yyget_extra (yyscan_t yyscanner );
3176 :
3177 : void psql_yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner );
3178 :
3179 : FILE *psql_yyget_in (yyscan_t yyscanner );
3180 :
3181 : void psql_yyset_in (FILE * in_str ,yyscan_t yyscanner );
3182 :
3183 : FILE *psql_yyget_out (yyscan_t yyscanner );
3184 :
3185 : void psql_yyset_out (FILE * out_str ,yyscan_t yyscanner );
3186 :
3187 : yy_size_t psql_yyget_leng (yyscan_t yyscanner );
3188 :
3189 : char *psql_yyget_text (yyscan_t yyscanner );
3190 :
3191 : int psql_yyget_lineno (yyscan_t yyscanner );
3192 :
3193 : void psql_yyset_lineno (int line_number ,yyscan_t yyscanner );
3194 :
3195 : int psql_yyget_column (yyscan_t yyscanner );
3196 :
3197 : void psql_yyset_column (int column_no ,yyscan_t yyscanner );
3198 :
3199 : YYSTYPE * psql_yyget_lval (yyscan_t yyscanner );
3200 :
3201 : void psql_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner );
3202 :
3203 : /* Macros after this point can all be overridden by user definitions in
3204 : * section 1.
3205 : */
3206 :
3207 : #ifndef YY_SKIP_YYWRAP
3208 : #ifdef __cplusplus
3209 : extern "C" int psql_yywrap (yyscan_t yyscanner );
3210 : #else
3211 : extern int psql_yywrap (yyscan_t yyscanner );
3212 : #endif
3213 : #endif
3214 :
3215 : #ifndef yytext_ptr
3216 : static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner);
3217 : #endif
3218 :
3219 : #ifdef YY_NEED_STRLEN
3220 : static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner);
3221 : #endif
3222 :
3223 : #ifndef YY_NO_INPUT
3224 :
3225 : #ifdef __cplusplus
3226 : static int yyinput (yyscan_t yyscanner );
3227 : #else
3228 : static int input (yyscan_t yyscanner );
3229 : #endif
3230 :
3231 : #endif
3232 :
3233 : /* Amount of stuff to slurp up with each read. */
3234 : #ifndef YY_READ_BUF_SIZE
3235 : #ifdef __ia64__
3236 : /* On IA-64, the buffer size is 16k, not 8k */
3237 : #define YY_READ_BUF_SIZE 16384
3238 : #else
3239 : #define YY_READ_BUF_SIZE 8192
3240 : #endif /* __ia64__ */
3241 : #endif
3242 :
3243 : /* Copy whatever the last rule matched to the standard output. */
3244 : #ifndef ECHO
3245 : /* This used to be an fputs(), but since the string might contain NUL's,
3246 : * we now use fwrite().
3247 : */
3248 : #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
3249 : #endif
3250 :
3251 : /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
3252 : * is returned in "result".
3253 : */
3254 : #ifndef YY_INPUT
3255 : #define YY_INPUT(buf,result,max_size) \
3256 : if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
3257 : { \
3258 : int c = '*'; \
3259 : int n; \
3260 : for ( n = 0; n < max_size && \
3261 : (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
3262 : buf[n] = (char) c; \
3263 : if ( c == '\n' ) \
3264 : buf[n++] = (char) c; \
3265 : if ( c == EOF && ferror( yyin ) ) \
3266 : YY_FATAL_ERROR( "input in flex scanner failed" ); \
3267 : result = n; \
3268 : } \
3269 : else \
3270 : { \
3271 : errno=0; \
3272 : while ( (result = fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
3273 : { \
3274 : if( errno != EINTR) \
3275 : { \
3276 : YY_FATAL_ERROR( "input in flex scanner failed" ); \
3277 : break; \
3278 : } \
3279 : errno=0; \
3280 : clearerr(yyin); \
3281 : } \
3282 : }\
3283 : \
3284 :
3285 : #endif
3286 :
3287 : /* No semi-colon after return; correct usage is to write "yyterminate();" -
3288 : * we don't want an extra ';' after the "return" because that will cause
3289 : * some compilers to complain about unreachable statements.
3290 : */
3291 : #ifndef yyterminate
3292 : #define yyterminate() return YY_NULL
3293 : #endif
3294 :
3295 : /* Number of entries by which start-condition stack grows. */
3296 : #ifndef YY_START_STACK_INCR
3297 : #define YY_START_STACK_INCR 25
3298 : #endif
3299 :
3300 : /* Report a fatal error. */
3301 : #ifndef YY_FATAL_ERROR
3302 : #define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner)
3303 : #endif
3304 :
3305 : /* end tables serialization structures and prototypes */
3306 :
3307 : /* Default declaration of generated scanner - a define so the user can
3308 : * easily add parameters.
3309 : */
3310 : #ifndef YY_DECL
3311 : #define YY_DECL_IS_OURS 1
3312 :
3313 : extern int psql_yylex \
3314 : (YYSTYPE * yylval_param ,yyscan_t yyscanner);
3315 :
3316 : #define YY_DECL int psql_yylex \
3317 : (YYSTYPE * yylval_param , yyscan_t yyscanner)
3318 : #endif /* !YY_DECL */
3319 :
3320 : /* Code executed at the beginning of each rule, after yytext and yyleng
3321 : * have been set up.
3322 : */
3323 : #ifndef YY_USER_ACTION
3324 : #define YY_USER_ACTION
3325 : #endif
3326 :
3327 : /* Code executed at the end of each rule. */
3328 : #ifndef YY_BREAK
3329 : #define YY_BREAK break;
3330 : #endif
3331 :
3332 : #define YY_RULE_SETUP \
3333 : YY_USER_ACTION
3334 :
3335 : /** The main scanner function which does all the work.
3336 : */
3337 72220 : YY_DECL
3338 : {
3339 : register yy_state_type yy_current_state;
3340 : register char *yy_cp, *yy_bp;
3341 : register int yy_act;
3342 72220 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
3343 :
3344 72220 : yylval = yylval_param;
3345 :
3346 72220 : if ( !yyg->yy_init )
3347 : {
3348 180 : yyg->yy_init = 1;
3349 :
3350 : #ifdef YY_USER_INIT
3351 : YY_USER_INIT;
3352 : #endif
3353 :
3354 180 : if ( ! yyg->yy_start )
3355 180 : yyg->yy_start = 1; /* first start state */
3356 :
3357 180 : if ( ! yyin )
3358 180 : yyin = stdin;
3359 :
3360 180 : if ( ! yyout )
3361 180 : yyout = stdout;
3362 :
3363 180 : if ( ! YY_CURRENT_BUFFER ) {
3364 0 : psql_yyensure_buffer_stack (yyscanner);
3365 0 : YY_CURRENT_BUFFER_LVALUE =
3366 0 : psql_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
3367 : }
3368 :
3369 180 : psql_yy_load_buffer_state(yyscanner );
3370 : }
3371 :
3372 : {
3373 : #line 356 "psqlscan.l"
3374 :
3375 :
3376 :
3377 : /* Declare some local variables inside psql_yylex(), for convenience */
3378 : PsqlScanState cur_state = yyextra;
3379 : PQExpBuffer output_buf = cur_state->output_buf;
3380 :
3381 : /*
3382 : * Force flex into the state indicated by start_state. This has a
3383 : * couple of purposes: it lets some of the functions below set a new
3384 : * starting state without ugly direct access to flex variables, and it
3385 : * allows us to transition from one flex lexer to another so that we
3386 : * can lex different parts of the source string using separate lexers.
3387 : */
3388 : BEGIN(cur_state->start_state);
3389 :
3390 :
3391 : #line 3392 "psqlscan.c"
3392 :
3393 : while ( 1 ) /* loops until end-of-file is reached */
3394 : {
3395 583033 : yy_cp = yyg->yy_c_buf_p;
3396 :
3397 : /* Support of yytext. */
3398 583033 : *yy_cp = yyg->yy_hold_char;
3399 :
3400 : /* yy_bp points to the position in yy_ch_buf of the start of
3401 : * the current run.
3402 : */
3403 583033 : yy_bp = yy_cp;
3404 :
3405 583033 : yy_current_state = yyg->yy_start;
3406 : yy_match:
3407 3141363 : while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 )
3408 1975297 : ++yy_cp;
3409 :
3410 583033 : yy_current_state = -yy_current_state;
3411 :
3412 : yy_find_action:
3413 629437 : yy_act = yy_accept[yy_current_state];
3414 :
3415 629437 : YY_DO_BEFORE_ACTION;
3416 :
3417 : do_action: /* This label is used only to access EOF actions. */
3418 :
3419 676628 : switch ( yy_act )
3420 : { /* beginning of action switch */
3421 : case 1:
3422 : /* rule 1 can match eol */
3423 : YY_RULE_SETUP
3424 : #line 373 "psqlscan.l"
3425 : {
3426 : /*
3427 : * Note that the whitespace rule includes both true
3428 : * whitespace and single-line ("--" style) comments.
3429 : * We suppress whitespace at the start of the query
3430 : * buffer. We also suppress all single-line comments,
3431 : * which is pretty dubious but is the historical
3432 : * behavior.
3433 : */
3434 : if (!(output_buf->len == 0 || yytext[0] == '-'))
3435 : ECHO;
3436 : }
3437 : YY_BREAK
3438 : case 2:
3439 : YY_RULE_SETUP
3440 : #line 386 "psqlscan.l"
3441 : {
3442 : cur_state->xcdepth = 0;
3443 : BEGIN(xc);
3444 : /* Put back any characters past slash-star; see above */
3445 : yyless(2);
3446 : ECHO;
3447 : }
3448 : YY_BREAK
3449 : case 3:
3450 : YY_RULE_SETUP
3451 : #line 394 "psqlscan.l"
3452 : {
3453 : cur_state->xcdepth++;
3454 : /* Put back any characters past slash-star; see above */
3455 : yyless(2);
3456 : ECHO;
3457 : }
3458 : YY_BREAK
3459 : case 4:
3460 : YY_RULE_SETUP
3461 : #line 401 "psqlscan.l"
3462 : {
3463 : if (cur_state->xcdepth <= 0)
3464 : BEGIN(INITIAL);
3465 : else
3466 : cur_state->xcdepth--;
3467 : ECHO;
3468 : }
3469 : YY_BREAK
3470 : case 5:
3471 : /* rule 5 can match eol */
3472 : YY_RULE_SETUP
3473 : #line 409 "psqlscan.l"
3474 : {
3475 : ECHO;
3476 : }
3477 : YY_BREAK
3478 : case 6:
3479 : YY_RULE_SETUP
3480 : #line 413 "psqlscan.l"
3481 : {
3482 : ECHO;
3483 : }
3484 : YY_BREAK
3485 : case 7:
3486 : YY_RULE_SETUP
3487 : #line 417 "psqlscan.l"
3488 : {
3489 : ECHO;
3490 : }
3491 : YY_BREAK
3492 : case 8:
3493 : YY_RULE_SETUP
3494 : #line 421 "psqlscan.l"
3495 : {
3496 : BEGIN(xb);
3497 : ECHO;
3498 : }
3499 : YY_BREAK
3500 : case 9:
3501 : /* rule 9 can match eol */
3502 : #line 426 "psqlscan.l"
3503 : case 10:
3504 : /* rule 10 can match eol */
3505 : YY_RULE_SETUP
3506 : #line 426 "psqlscan.l"
3507 : {
3508 : yyless(1);
3509 : BEGIN(INITIAL);
3510 : ECHO;
3511 : }
3512 : YY_BREAK
3513 : case 11:
3514 : /* rule 11 can match eol */
3515 : #line 432 "psqlscan.l"
3516 : case 12:
3517 : /* rule 12 can match eol */
3518 : YY_RULE_SETUP
3519 : #line 432 "psqlscan.l"
3520 : {
3521 : ECHO;
3522 : }
3523 : YY_BREAK
3524 : case 13:
3525 : /* rule 13 can match eol */
3526 : #line 436 "psqlscan.l"
3527 : case 14:
3528 : /* rule 14 can match eol */
3529 : YY_RULE_SETUP
3530 : #line 436 "psqlscan.l"
3531 : {
3532 : ECHO;
3533 : }
3534 : YY_BREAK
3535 : case 15:
3536 : YY_RULE_SETUP
3537 : #line 440 "psqlscan.l"
3538 : {
3539 : /* Hexadecimal bit type.
3540 : * At some point we should simply pass the string
3541 : * forward to the parser and label it there.
3542 : * In the meantime, place a leading "x" on the string
3543 : * to mark it for the input routine as a hex string.
3544 : */
3545 : BEGIN(xh);
3546 : ECHO;
3547 : }
3548 : YY_BREAK
3549 : case 16:
3550 : /* rule 16 can match eol */
3551 : #line 451 "psqlscan.l"
3552 : case 17:
3553 : /* rule 17 can match eol */
3554 : YY_RULE_SETUP
3555 : #line 451 "psqlscan.l"
3556 : {
3557 : yyless(1);
3558 : BEGIN(INITIAL);
3559 : ECHO;
3560 : }
3561 : YY_BREAK
3562 : case 18:
3563 : YY_RULE_SETUP
3564 : #line 457 "psqlscan.l"
3565 : {
3566 : yyless(1); /* eat only 'n' this time */
3567 : ECHO;
3568 : }
3569 : YY_BREAK
3570 : case 19:
3571 : YY_RULE_SETUP
3572 : #line 462 "psqlscan.l"
3573 : {
3574 : if (cur_state->std_strings)
3575 : BEGIN(xq);
3576 : else
3577 : BEGIN(xe);
3578 : ECHO;
3579 : }
3580 : YY_BREAK
3581 : case 20:
3582 : YY_RULE_SETUP
3583 : #line 469 "psqlscan.l"
3584 : {
3585 : BEGIN(xe);
3586 : ECHO;
3587 : }
3588 : YY_BREAK
3589 : case 21:
3590 : YY_RULE_SETUP
3591 : #line 473 "psqlscan.l"
3592 : {
3593 : BEGIN(xus);
3594 : ECHO;
3595 : }
3596 : YY_BREAK
3597 : case 22:
3598 : /* rule 22 can match eol */
3599 : #line 478 "psqlscan.l"
3600 : case 23:
3601 : /* rule 23 can match eol */
3602 : YY_RULE_SETUP
3603 : #line 478 "psqlscan.l"
3604 : {
3605 : yyless(1);
3606 : BEGIN(INITIAL);
3607 : ECHO;
3608 : }
3609 : YY_BREAK
3610 : case 24:
3611 : /* rule 24 can match eol */
3612 : #line 484 "psqlscan.l"
3613 : case 25:
3614 : /* rule 25 can match eol */
3615 : YY_RULE_SETUP
3616 : #line 484 "psqlscan.l"
3617 : {
3618 : /* throw back all but the quote */
3619 : yyless(1);
3620 : BEGIN(xusend);
3621 : ECHO;
3622 : }
3623 : YY_BREAK
3624 : case 26:
3625 : /* rule 26 can match eol */
3626 : YY_RULE_SETUP
3627 : #line 490 "psqlscan.l"
3628 : {
3629 : ECHO;
3630 : }
3631 : YY_BREAK
3632 : case 27:
3633 : #line 494 "psqlscan.l"
3634 : case 28:
3635 : /* rule 28 can match eol */
3636 : YY_RULE_SETUP
3637 : #line 494 "psqlscan.l"
3638 : {
3639 : yyless(0);
3640 : BEGIN(INITIAL);
3641 : ECHO;
3642 : }
3643 : YY_BREAK
3644 : case 29:
3645 : /* rule 29 can match eol */
3646 : YY_RULE_SETUP
3647 : #line 499 "psqlscan.l"
3648 : {
3649 : BEGIN(INITIAL);
3650 : ECHO;
3651 : }
3652 : YY_BREAK
3653 : case 30:
3654 : YY_RULE_SETUP
3655 : #line 503 "psqlscan.l"
3656 : {
3657 : ECHO;
3658 : }
3659 : YY_BREAK
3660 : case 31:
3661 : /* rule 31 can match eol */
3662 : YY_RULE_SETUP
3663 : #line 506 "psqlscan.l"
3664 : {
3665 : ECHO;
3666 : }
3667 : YY_BREAK
3668 : case 32:
3669 : /* rule 32 can match eol */
3670 : YY_RULE_SETUP
3671 : #line 509 "psqlscan.l"
3672 : {
3673 : ECHO;
3674 : }
3675 : YY_BREAK
3676 : case 33:
3677 : YY_RULE_SETUP
3678 : #line 512 "psqlscan.l"
3679 : {
3680 : ECHO;
3681 : }
3682 : YY_BREAK
3683 : case 34:
3684 : YY_RULE_SETUP
3685 : #line 515 "psqlscan.l"
3686 : {
3687 : ECHO;
3688 : }
3689 : YY_BREAK
3690 : case 35:
3691 : /* rule 35 can match eol */
3692 : YY_RULE_SETUP
3693 : #line 518 "psqlscan.l"
3694 : {
3695 : ECHO;
3696 : }
3697 : YY_BREAK
3698 : case 36:
3699 : YY_RULE_SETUP
3700 : #line 521 "psqlscan.l"
3701 : {
3702 : ECHO;
3703 : }
3704 : YY_BREAK
3705 : case 37:
3706 : YY_RULE_SETUP
3707 : #line 524 "psqlscan.l"
3708 : {
3709 : ECHO;
3710 : }
3711 : YY_BREAK
3712 : case 38:
3713 : /* rule 38 can match eol */
3714 : YY_RULE_SETUP
3715 : #line 527 "psqlscan.l"
3716 : {
3717 : ECHO;
3718 : }
3719 : YY_BREAK
3720 : case 39:
3721 : YY_RULE_SETUP
3722 : #line 530 "psqlscan.l"
3723 : {
3724 : /* This is only needed for \ just before EOF */
3725 : ECHO;
3726 : }
3727 : YY_BREAK
3728 : case 40:
3729 : YY_RULE_SETUP
3730 : #line 535 "psqlscan.l"
3731 : {
3732 : cur_state->dolqstart = pg_strdup(yytext);
3733 : BEGIN(xdolq);
3734 : ECHO;
3735 : }
3736 : YY_BREAK
3737 : case 41:
3738 : YY_RULE_SETUP
3739 : #line 540 "psqlscan.l"
3740 : {
3741 : /* throw back all but the initial "$" */
3742 : yyless(1);
3743 : ECHO;
3744 : }
3745 : YY_BREAK
3746 : case 42:
3747 : YY_RULE_SETUP
3748 : #line 545 "psqlscan.l"
3749 : {
3750 : if (strcmp(yytext, cur_state->dolqstart) == 0)
3751 : {
3752 : free(cur_state->dolqstart);
3753 : cur_state->dolqstart = NULL;
3754 : BEGIN(INITIAL);
3755 : }
3756 : else
3757 : {
3758 : /*
3759 : * When we fail to match $...$ to dolqstart, transfer
3760 : * the $... part to the output, but put back the final
3761 : * $ for rescanning. Consider $delim$...$junk$delim$
3762 : */
3763 : yyless(yyleng - 1);
3764 : }
3765 : ECHO;
3766 : }
3767 : YY_BREAK
3768 : case 43:
3769 : /* rule 43 can match eol */
3770 : YY_RULE_SETUP
3771 : #line 563 "psqlscan.l"
3772 : {
3773 : ECHO;
3774 : }
3775 : YY_BREAK
3776 : case 44:
3777 : YY_RULE_SETUP
3778 : #line 566 "psqlscan.l"
3779 : {
3780 : ECHO;
3781 : }
3782 : YY_BREAK
3783 : case 45:
3784 : YY_RULE_SETUP
3785 : #line 569 "psqlscan.l"
3786 : {
3787 : /* This is only needed for $ inside the quoted text */
3788 : ECHO;
3789 : }
3790 : YY_BREAK
3791 : case 46:
3792 : YY_RULE_SETUP
3793 : #line 574 "psqlscan.l"
3794 : {
3795 : BEGIN(xd);
3796 : ECHO;
3797 : }
3798 : YY_BREAK
3799 : case 47:
3800 : YY_RULE_SETUP
3801 : #line 578 "psqlscan.l"
3802 : {
3803 : BEGIN(xui);
3804 : ECHO;
3805 : }
3806 : YY_BREAK
3807 : case 48:
3808 : YY_RULE_SETUP
3809 : #line 582 "psqlscan.l"
3810 : {
3811 : BEGIN(INITIAL);
3812 : ECHO;
3813 : }
3814 : YY_BREAK
3815 : case 49:
3816 : YY_RULE_SETUP
3817 : #line 586 "psqlscan.l"
3818 : {
3819 : yyless(1);
3820 : BEGIN(xuiend);
3821 : ECHO;
3822 : }
3823 : YY_BREAK
3824 : case 50:
3825 : /* rule 50 can match eol */
3826 : YY_RULE_SETUP
3827 : #line 591 "psqlscan.l"
3828 : {
3829 : ECHO;
3830 : }
3831 : YY_BREAK
3832 : case 51:
3833 : #line 595 "psqlscan.l"
3834 : case 52:
3835 : /* rule 52 can match eol */
3836 : YY_RULE_SETUP
3837 : #line 595 "psqlscan.l"
3838 : {
3839 : yyless(0);
3840 : BEGIN(INITIAL);
3841 : ECHO;
3842 : }
3843 : YY_BREAK
3844 : case 53:
3845 : /* rule 53 can match eol */
3846 : YY_RULE_SETUP
3847 : #line 600 "psqlscan.l"
3848 : {
3849 : BEGIN(INITIAL);
3850 : ECHO;
3851 : }
3852 : YY_BREAK
3853 : case 54:
3854 : YY_RULE_SETUP
3855 : #line 604 "psqlscan.l"
3856 : {
3857 : ECHO;
3858 : }
3859 : YY_BREAK
3860 : case 55:
3861 : /* rule 55 can match eol */
3862 : YY_RULE_SETUP
3863 : #line 607 "psqlscan.l"
3864 : {
3865 : ECHO;
3866 : }
3867 : YY_BREAK
3868 : case 56:
3869 : YY_RULE_SETUP
3870 : #line 611 "psqlscan.l"
3871 : {
3872 : /* throw back all but the initial u/U */
3873 : yyless(1);
3874 : ECHO;
3875 : }
3876 : YY_BREAK
3877 : case 57:
3878 : YY_RULE_SETUP
3879 : #line 617 "psqlscan.l"
3880 : {
3881 : ECHO;
3882 : }
3883 : YY_BREAK
3884 : case 58:
3885 : YY_RULE_SETUP
3886 : #line 621 "psqlscan.l"
3887 : {
3888 : ECHO;
3889 : }
3890 : YY_BREAK
3891 : case 59:
3892 : YY_RULE_SETUP
3893 : #line 625 "psqlscan.l"
3894 : {
3895 : ECHO;
3896 : }
3897 : YY_BREAK
3898 : case 60:
3899 : YY_RULE_SETUP
3900 : #line 629 "psqlscan.l"
3901 : {
3902 : ECHO;
3903 : }
3904 : YY_BREAK
3905 : case 61:
3906 : YY_RULE_SETUP
3907 : #line 633 "psqlscan.l"
3908 : {
3909 : ECHO;
3910 : }
3911 : YY_BREAK
3912 : case 62:
3913 : YY_RULE_SETUP
3914 : #line 637 "psqlscan.l"
3915 : {
3916 : ECHO;
3917 : }
3918 : YY_BREAK
3919 : case 63:
3920 : YY_RULE_SETUP
3921 : #line 641 "psqlscan.l"
3922 : {
3923 : ECHO;
3924 : }
3925 : YY_BREAK
3926 : case 64:
3927 : YY_RULE_SETUP
3928 : #line 645 "psqlscan.l"
3929 : {
3930 : ECHO;
3931 : }
3932 : YY_BREAK
3933 : /*
3934 : * These rules are specific to psql --- they implement parenthesis
3935 : * counting and detection of command-ending semicolon. These must
3936 : * appear before the {self} rule so that they take precedence over it.
3937 : */
3938 : case 65:
3939 : YY_RULE_SETUP
3940 : #line 655 "psqlscan.l"
3941 : {
3942 : cur_state->paren_depth++;
3943 : ECHO;
3944 : }
3945 : YY_BREAK
3946 : case 66:
3947 : YY_RULE_SETUP
3948 : #line 660 "psqlscan.l"
3949 : {
3950 : if (cur_state->paren_depth > 0)
3951 : cur_state->paren_depth--;
3952 : ECHO;
3953 : }
3954 : YY_BREAK
3955 : case 67:
3956 : YY_RULE_SETUP
3957 : #line 666 "psqlscan.l"
3958 : {
3959 : ECHO;
3960 : if (cur_state->paren_depth == 0)
3961 : {
3962 : /* Terminate lexing temporarily */
3963 : cur_state->start_state = YY_START;
3964 : return LEXRES_SEMI;
3965 : }
3966 : }
3967 : YY_BREAK
3968 : /*
3969 : * psql-specific rules to handle backslash commands and variable
3970 : * substitution. We want these before {self}, also.
3971 : */
3972 : case 68:
3973 : YY_RULE_SETUP
3974 : #line 681 "psqlscan.l"
3975 : {
3976 : /* Force a semicolon or colon into the query buffer */
3977 : psqlscan_emit(cur_state, yytext + 1, 1);
3978 : }
3979 : YY_BREAK
3980 : case 69:
3981 : YY_RULE_SETUP
3982 : #line 686 "psqlscan.l"
3983 : {
3984 : /* Terminate lexing temporarily */
3985 : cur_state->start_state = YY_START;
3986 : return LEXRES_BACKSLASH;
3987 : }
3988 : YY_BREAK
3989 : case 70:
3990 : YY_RULE_SETUP
3991 : #line 692 "psqlscan.l"
3992 : {
3993 : /* Possible psql variable substitution */
3994 : char *varname;
3995 : char *value;
3996 :
3997 : varname = psqlscan_extract_substring(cur_state,
3998 : yytext + 1,
3999 : yyleng - 1);
4000 : if (cur_state->callbacks->get_variable)
4001 : value = cur_state->callbacks->get_variable(varname,
4002 : PQUOTE_PLAIN,
4003 : cur_state->cb_passthrough);
4004 : else
4005 : value = NULL;
4006 :
4007 : if (value)
4008 : {
4009 : /* It is a variable, check for recursion */
4010 : if (psqlscan_var_is_current_source(cur_state, varname))
4011 : {
4012 : /* Recursive expansion --- don't go there */
4013 : cur_state->callbacks->write_error("skipping recursive expansion of variable \"%s\"\n",
4014 : varname);
4015 : /* Instead copy the string as is */
4016 : ECHO;
4017 : }
4018 : else
4019 : {
4020 : /* OK, perform substitution */
4021 : psqlscan_push_new_buffer(cur_state, value, varname);
4022 : /* psql_yy_scan_string already made buffer active */
4023 : }
4024 : free(value);
4025 : }
4026 : else
4027 : {
4028 : /*
4029 : * if the variable doesn't exist we'll copy the string
4030 : * as is
4031 : */
4032 : ECHO;
4033 : }
4034 :
4035 : free(varname);
4036 : }
4037 : YY_BREAK
4038 : case 71:
4039 : YY_RULE_SETUP
4040 : #line 738 "psqlscan.l"
4041 : {
4042 : psqlscan_escape_variable(cur_state, yytext, yyleng,
4043 : PQUOTE_SQL_LITERAL);
4044 : }
4045 : YY_BREAK
4046 : case 72:
4047 : YY_RULE_SETUP
4048 : #line 743 "psqlscan.l"
4049 : {
4050 : psqlscan_escape_variable(cur_state, yytext, yyleng,
4051 : PQUOTE_SQL_IDENT);
4052 : }
4053 : YY_BREAK
4054 : /*
4055 : * These rules just avoid the need for scanner backup if one of the
4056 : * two rules above fails to match completely.
4057 : */
4058 : case 73:
4059 : YY_RULE_SETUP
4060 : #line 753 "psqlscan.l"
4061 : {
4062 : /* Throw back everything but the colon */
4063 : yyless(1);
4064 : ECHO;
4065 : }
4066 : YY_BREAK
4067 : case 74:
4068 : YY_RULE_SETUP
4069 : #line 759 "psqlscan.l"
4070 : {
4071 : /* Throw back everything but the colon */
4072 : yyless(1);
4073 : ECHO;
4074 : }
4075 : YY_BREAK
4076 : /*
4077 : * Back to backend-compatible rules.
4078 : */
4079 : case 75:
4080 : YY_RULE_SETUP
4081 : #line 769 "psqlscan.l"
4082 : {
4083 : ECHO;
4084 : }
4085 : YY_BREAK
4086 : case 76:
4087 : YY_RULE_SETUP
4088 : #line 773 "psqlscan.l"
4089 : {
4090 : /*
4091 : * Check for embedded slash-star or dash-dash; those
4092 : * are comment starts, so operator must stop there.
4093 : * Note that slash-star or dash-dash at the first
4094 : * character will match a prior rule, not this one.
4095 : */
4096 : int nchars = yyleng;
4097 : char *slashstar = strstr(yytext, "/*");
4098 : char *dashdash = strstr(yytext, "--");
4099 :
4100 : if (slashstar && dashdash)
4101 : {
4102 : /* if both appear, take the first one */
4103 : if (slashstar > dashdash)
4104 : slashstar = dashdash;
4105 : }
4106 : else if (!slashstar)
4107 : slashstar = dashdash;
4108 : if (slashstar)
4109 : nchars = slashstar - yytext;
4110 :
4111 : /*
4112 : * For SQL compatibility, '+' and '-' cannot be the
4113 : * last char of a multi-char operator unless the operator
4114 : * contains chars that are not in SQL operators.
4115 : * The idea is to lex '=-' as two operators, but not
4116 : * to forbid operator names like '?-' that could not be
4117 : * sequences of SQL operators.
4118 : */
4119 : while (nchars > 1 &&
4120 : (yytext[nchars - 1] == '+' ||
4121 : yytext[nchars - 1] == '-'))
4122 : {
4123 : int ic;
4124 :
4125 : for (ic = nchars - 2; ic >= 0; ic--)
4126 : {
4127 : if (strchr("~!@#^&|`?%", yytext[ic]))
4128 : break;
4129 : }
4130 : if (ic >= 0)
4131 : break; /* found a char that makes it OK */
4132 : nchars--; /* else remove the +/-, and check again */
4133 : }
4134 :
4135 : if (nchars < yyleng)
4136 : {
4137 : /* Strip the unwanted chars from the token */
4138 : yyless(nchars);
4139 : }
4140 : ECHO;
4141 : }
4142 : YY_BREAK
4143 : case 77:
4144 : YY_RULE_SETUP
4145 : #line 827 "psqlscan.l"
4146 : {
4147 : ECHO;
4148 : }
4149 : YY_BREAK
4150 : case 78:
4151 : YY_RULE_SETUP
4152 : #line 831 "psqlscan.l"
4153 : {
4154 : ECHO;
4155 : }
4156 : YY_BREAK
4157 : case 79:
4158 : YY_RULE_SETUP
4159 : #line 834 "psqlscan.l"
4160 : {
4161 : ECHO;
4162 : }
4163 : YY_BREAK
4164 : case 80:
4165 : YY_RULE_SETUP
4166 : #line 837 "psqlscan.l"
4167 : {
4168 : /* throw back the .., and treat as integer */
4169 : yyless(yyleng - 2);
4170 : ECHO;
4171 : }
4172 : YY_BREAK
4173 : case 81:
4174 : YY_RULE_SETUP
4175 : #line 842 "psqlscan.l"
4176 : {
4177 : ECHO;
4178 : }
4179 : YY_BREAK
4180 : case 82:
4181 : YY_RULE_SETUP
4182 : #line 845 "psqlscan.l"
4183 : {
4184 : /*
4185 : * throw back the [Ee], and treat as {decimal}. Note
4186 : * that it is possible the input is actually {integer},
4187 : * but since this case will almost certainly lead to a
4188 : * syntax error anyway, we don't bother to distinguish.
4189 : */
4190 : yyless(yyleng - 1);
4191 : ECHO;
4192 : }
4193 : YY_BREAK
4194 : case 83:
4195 : YY_RULE_SETUP
4196 : #line 855 "psqlscan.l"
4197 : {
4198 : /* throw back the [Ee][+-], and proceed as above */
4199 : yyless(yyleng - 2);
4200 : ECHO;
4201 : }
4202 : YY_BREAK
4203 : case 84:
4204 : YY_RULE_SETUP
4205 : #line 862 "psqlscan.l"
4206 : {
4207 : ECHO;
4208 : }
4209 : YY_BREAK
4210 : case 85:
4211 : YY_RULE_SETUP
4212 : #line 866 "psqlscan.l"
4213 : {
4214 : ECHO;
4215 : }
4216 : YY_BREAK
4217 : case YY_STATE_EOF(INITIAL):
4218 : case YY_STATE_EOF(xb):
4219 : case YY_STATE_EOF(xc):
4220 : case YY_STATE_EOF(xd):
4221 : case YY_STATE_EOF(xh):
4222 : case YY_STATE_EOF(xe):
4223 : case YY_STATE_EOF(xq):
4224 : case YY_STATE_EOF(xdolq):
4225 : case YY_STATE_EOF(xui):
4226 : case YY_STATE_EOF(xuiend):
4227 : case YY_STATE_EOF(xus):
4228 : case YY_STATE_EOF(xusend):
4229 : #line 870 "psqlscan.l"
4230 : {
4231 : if (cur_state->buffer_stack == NULL)
4232 : {
4233 : cur_state->start_state = YY_START;
4234 : return LEXRES_EOL; /* end of input reached */
4235 : }
4236 :
4237 : /*
4238 : * We were expanding a variable, so pop the inclusion
4239 : * stack and keep lexing
4240 : */
4241 : psqlscan_pop_buffer_stack(cur_state);
4242 : psqlscan_select_top_buffer(cur_state);
4243 : }
4244 : YY_BREAK
4245 : case 86:
4246 : YY_RULE_SETUP
4247 : #line 885 "psqlscan.l"
4248 : YY_FATAL_ERROR( "flex scanner jammed" );
4249 : YY_BREAK
4250 : #line 4251 "psqlscan.c"
4251 :
4252 : case YY_END_OF_BUFFER:
4253 : {
4254 : /* Amount of text matched not including the EOB char. */
4255 93595 : int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1;
4256 :
4257 : /* Undo the effects of YY_DO_BEFORE_ACTION. */
4258 93595 : *yy_cp = yyg->yy_hold_char;
4259 : YY_RESTORE_YY_MORE_OFFSET
4260 :
4261 93595 : if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
4262 : {
4263 : /* We're scanning a new file or input source. It's
4264 : * possible that this happened because the user
4265 : * just pointed yyin at a new source and called
4266 : * psql_yylex(). If so, then we have to assure
4267 : * consistency between YY_CURRENT_BUFFER and our
4268 : * globals. Here is the right place to do so, because
4269 : * this is the first action (other than possibly a
4270 : * back-up) that will match for the new input source.
4271 : */
4272 46462 : yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
4273 46462 : YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
4274 46462 : YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
4275 : }
4276 :
4277 : /* Note that here we test for yy_c_buf_p "<=" to the position
4278 : * of the first EOB in the buffer, since yy_c_buf_p will
4279 : * already have been incremented past the NUL character
4280 : * (since all states make transitions on EOB to the
4281 : * end-of-buffer state). Contrast this with the test
4282 : * in input().
4283 : */
4284 93595 : if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
4285 : { /* This was really a NUL. */
4286 : yy_state_type yy_next_state;
4287 :
4288 0 : yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text;
4289 :
4290 0 : yy_current_state = yy_get_previous_state( yyscanner );
4291 :
4292 : /* Okay, we're now positioned to make the NUL
4293 : * transition. We couldn't have
4294 : * yy_get_previous_state() go ahead and do it
4295 : * for us because it doesn't know how to deal
4296 : * with the possibility of jamming (and we don't
4297 : * want to build jamming into it because then it
4298 : * will run more slowly).
4299 : */
4300 :
4301 0 : yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner);
4302 :
4303 0 : yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
4304 :
4305 0 : if ( yy_next_state )
4306 : {
4307 : /* Consume the NUL. */
4308 0 : yy_cp = ++yyg->yy_c_buf_p;
4309 0 : yy_current_state = yy_next_state;
4310 0 : goto yy_match;
4311 : }
4312 :
4313 : else
4314 : {
4315 0 : yy_cp = yyg->yy_c_buf_p;
4316 0 : goto yy_find_action;
4317 : }
4318 : }
4319 :
4320 93595 : else switch ( yy_get_next_buffer( yyscanner ) )
4321 : {
4322 : case EOB_ACT_END_OF_FILE:
4323 : {
4324 47191 : yyg->yy_did_buffer_switch_on_eof = 0;
4325 :
4326 : if ( psql_yywrap(yyscanner ) )
4327 : {
4328 : /* Note: because we've taken care in
4329 : * yy_get_next_buffer() to have set up
4330 : * yytext, we can now set up
4331 : * yy_c_buf_p so that if some total
4332 : * hoser (like flex itself) wants to
4333 : * call the scanner after we return the
4334 : * YY_NULL, it'll still work - another
4335 : * YY_NULL will get returned.
4336 : */
4337 47191 : yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ;
4338 :
4339 47191 : yy_act = YY_STATE_EOF(YY_START);
4340 47191 : goto do_action;
4341 : }
4342 :
4343 : else
4344 : {
4345 : if ( ! yyg->yy_did_buffer_switch_on_eof )
4346 : YY_NEW_FILE;
4347 : }
4348 : break;
4349 : }
4350 :
4351 : case EOB_ACT_CONTINUE_SCAN:
4352 0 : yyg->yy_c_buf_p =
4353 0 : yyg->yytext_ptr + yy_amount_of_matched_text;
4354 :
4355 0 : yy_current_state = yy_get_previous_state( yyscanner );
4356 :
4357 0 : yy_cp = yyg->yy_c_buf_p;
4358 0 : yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
4359 0 : goto yy_match;
4360 :
4361 : case EOB_ACT_LAST_MATCH:
4362 46404 : yyg->yy_c_buf_p =
4363 46404 : &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars];
4364 :
4365 46404 : yy_current_state = yy_get_previous_state( yyscanner );
4366 :
4367 46404 : yy_cp = yyg->yy_c_buf_p;
4368 46404 : yy_bp = yyg->yytext_ptr + YY_MORE_ADJ;
4369 46404 : goto yy_find_action;
4370 : }
4371 0 : break;
4372 : }
4373 :
4374 : default:
4375 0 : YY_FATAL_ERROR(
4376 : "fatal flex scanner internal error--no action found" );
4377 : } /* end of action switch */
4378 510813 : } /* end of scanning one token */
4379 : } /* end of user's declarations */
4380 : } /* end of psql_yylex */
4381 :
4382 : /* yy_get_next_buffer - try to read in a new buffer
4383 : *
4384 : * Returns a code representing an action:
4385 : * EOB_ACT_LAST_MATCH -
4386 : * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
4387 : * EOB_ACT_END_OF_FILE - end of file
4388 : */
4389 93595 : static int yy_get_next_buffer (yyscan_t yyscanner)
4390 : {
4391 93595 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4392 93595 : register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
4393 93595 : register char *source = yyg->yytext_ptr;
4394 : register int number_to_move, i;
4395 : int ret_val;
4396 :
4397 93595 : if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] )
4398 0 : YY_FATAL_ERROR(
4399 : "fatal flex scanner internal error--end of buffer missed" );
4400 :
4401 93595 : if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
4402 : { /* Don't try to fill the buffer, so this is an EOF. */
4403 93595 : if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 )
4404 : {
4405 : /* We matched a single character, the EOB, so
4406 : * treat this as a final EOF.
4407 : */
4408 47191 : return EOB_ACT_END_OF_FILE;
4409 : }
4410 :
4411 : else
4412 : {
4413 : /* We matched some text prior to the EOB, first
4414 : * process it.
4415 : */
4416 46404 : return EOB_ACT_LAST_MATCH;
4417 : }
4418 : }
4419 :
4420 : /* Try to read more data. */
4421 :
4422 : /* First move last chars to start of buffer. */
4423 0 : number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1;
4424 :
4425 0 : for ( i = 0; i < number_to_move; ++i )
4426 0 : *(dest++) = *(source++);
4427 :
4428 0 : if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
4429 : /* don't do the read, it's not guaranteed to return an EOF,
4430 : * just force an EOF
4431 : */
4432 0 : YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0;
4433 :
4434 : else
4435 : {
4436 0 : int num_to_read =
4437 0 : YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
4438 :
4439 0 : while ( num_to_read <= 0 )
4440 : { /* Not enough room in the buffer - grow it. */
4441 :
4442 : /* just a shorter name for the current buffer */
4443 0 : YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
4444 :
4445 0 : int yy_c_buf_p_offset =
4446 0 : (int) (yyg->yy_c_buf_p - b->yy_ch_buf);
4447 :
4448 0 : if ( b->yy_is_our_buffer )
4449 : {
4450 0 : yy_size_t new_size = b->yy_buf_size * 2;
4451 :
4452 0 : if ( new_size <= 0 )
4453 0 : b->yy_buf_size += b->yy_buf_size / 8;
4454 : else
4455 0 : b->yy_buf_size *= 2;
4456 :
4457 0 : b->yy_ch_buf = (char *)
4458 : /* Include room in for 2 EOB chars. */
4459 0 : psql_yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner );
4460 : }
4461 : else
4462 : /* Can't grow it, we don't own it. */
4463 0 : b->yy_ch_buf = 0;
4464 :
4465 0 : if ( ! b->yy_ch_buf )
4466 0 : YY_FATAL_ERROR(
4467 : "fatal error - scanner input buffer overflow" );
4468 :
4469 0 : yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
4470 :
4471 0 : num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
4472 0 : number_to_move - 1;
4473 :
4474 : }
4475 :
4476 0 : if ( num_to_read > YY_READ_BUF_SIZE )
4477 0 : num_to_read = YY_READ_BUF_SIZE;
4478 :
4479 : /* Read in more data. */
4480 0 : YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
4481 : yyg->yy_n_chars, num_to_read );
4482 :
4483 0 : YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
4484 : }
4485 :
4486 0 : if ( yyg->yy_n_chars == 0 )
4487 : {
4488 0 : if ( number_to_move == YY_MORE_ADJ )
4489 : {
4490 0 : ret_val = EOB_ACT_END_OF_FILE;
4491 0 : psql_yyrestart(yyin ,yyscanner);
4492 : }
4493 :
4494 : else
4495 : {
4496 0 : ret_val = EOB_ACT_LAST_MATCH;
4497 0 : YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
4498 : YY_BUFFER_EOF_PENDING;
4499 : }
4500 : }
4501 :
4502 : else
4503 0 : ret_val = EOB_ACT_CONTINUE_SCAN;
4504 :
4505 0 : if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
4506 : /* Extend the array by 50%, plus the number we really need. */
4507 0 : yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1);
4508 0 : YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) psql_yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner );
4509 0 : if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
4510 0 : YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
4511 : }
4512 :
4513 0 : yyg->yy_n_chars += number_to_move;
4514 0 : YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR;
4515 0 : YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
4516 :
4517 0 : yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
4518 :
4519 0 : return ret_val;
4520 : }
4521 :
4522 : /* yy_get_previous_state - get the state just before the EOB char was reached */
4523 :
4524 46404 : static yy_state_type yy_get_previous_state (yyscan_t yyscanner)
4525 : {
4526 : register yy_state_type yy_current_state;
4527 : register char *yy_cp;
4528 46404 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4529 :
4530 46404 : yy_current_state = yyg->yy_start;
4531 :
4532 474546 : for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp )
4533 : {
4534 428142 : yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)];
4535 : }
4536 :
4537 46404 : return yy_current_state;
4538 : }
4539 :
4540 : /* yy_try_NUL_trans - try to make a transition on the NUL character
4541 : *
4542 : * synopsis
4543 : * next_state = yy_try_NUL_trans( current_state );
4544 : */
4545 0 : static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner)
4546 : {
4547 : register int yy_is_jam;
4548 0 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */
4549 :
4550 0 : yy_current_state = yy_nxt[yy_current_state][1];
4551 0 : yy_is_jam = (yy_current_state <= 0);
4552 :
4553 : (void)yyg;
4554 0 : return yy_is_jam ? 0 : yy_current_state;
4555 : }
4556 :
4557 : #ifndef YY_NO_INPUT
4558 : #ifdef __cplusplus
4559 : static int yyinput (yyscan_t yyscanner)
4560 : #else
4561 : static int input (yyscan_t yyscanner)
4562 : #endif
4563 :
4564 : {
4565 : int c;
4566 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4567 :
4568 : *yyg->yy_c_buf_p = yyg->yy_hold_char;
4569 :
4570 : if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
4571 : {
4572 : /* yy_c_buf_p now points to the character we want to return.
4573 : * If this occurs *before* the EOB characters, then it's a
4574 : * valid NUL; if not, then we've hit the end of the buffer.
4575 : */
4576 : if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] )
4577 : /* This was really a NUL. */
4578 : *yyg->yy_c_buf_p = '\0';
4579 :
4580 : else
4581 : { /* need more input */
4582 : yy_size_t offset = yyg->yy_c_buf_p - yyg->yytext_ptr;
4583 : ++yyg->yy_c_buf_p;
4584 :
4585 : switch ( yy_get_next_buffer( yyscanner ) )
4586 : {
4587 : case EOB_ACT_LAST_MATCH:
4588 : /* This happens because yy_g_n_b()
4589 : * sees that we've accumulated a
4590 : * token and flags that we need to
4591 : * try matching the token before
4592 : * proceeding. But for input(),
4593 : * there's no matching to consider.
4594 : * So convert the EOB_ACT_LAST_MATCH
4595 : * to EOB_ACT_END_OF_FILE.
4596 : */
4597 :
4598 : /* Reset buffer status. */
4599 : psql_yyrestart(yyin ,yyscanner);
4600 :
4601 : /*FALLTHROUGH*/
4602 :
4603 : case EOB_ACT_END_OF_FILE:
4604 : {
4605 : if ( psql_yywrap(yyscanner ) )
4606 : return EOF;
4607 :
4608 : if ( ! yyg->yy_did_buffer_switch_on_eof )
4609 : YY_NEW_FILE;
4610 : #ifdef __cplusplus
4611 : return yyinput(yyscanner);
4612 : #else
4613 : return input(yyscanner);
4614 : #endif
4615 : }
4616 :
4617 : case EOB_ACT_CONTINUE_SCAN:
4618 : yyg->yy_c_buf_p = yyg->yytext_ptr + offset;
4619 : break;
4620 : }
4621 : }
4622 : }
4623 :
4624 : c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */
4625 : *yyg->yy_c_buf_p = '\0'; /* preserve yytext */
4626 : yyg->yy_hold_char = *++yyg->yy_c_buf_p;
4627 :
4628 : return c;
4629 : }
4630 : #endif /* ifndef YY_NO_INPUT */
4631 :
4632 : /** Immediately switch to a different input stream.
4633 : * @param input_file A readable stream.
4634 : * @param yyscanner The scanner object.
4635 : * @note This function does not reset the start condition to @c INITIAL .
4636 : */
4637 0 : void psql_yyrestart (FILE * input_file , yyscan_t yyscanner)
4638 : {
4639 0 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4640 :
4641 0 : if ( ! YY_CURRENT_BUFFER ){
4642 0 : psql_yyensure_buffer_stack (yyscanner);
4643 0 : YY_CURRENT_BUFFER_LVALUE =
4644 0 : psql_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner);
4645 : }
4646 :
4647 0 : psql_yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner);
4648 0 : psql_yy_load_buffer_state(yyscanner );
4649 0 : }
4650 :
4651 : /** Switch to a different input buffer.
4652 : * @param new_buffer The new input buffer.
4653 : * @param yyscanner The scanner object.
4654 : */
4655 119428 : void psql_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
4656 : {
4657 119428 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4658 :
4659 : /* TODO. We should be able to replace this entire function body
4660 : * with
4661 : * psql_yypop_buffer_state();
4662 : * psql_yypush_buffer_state(new_buffer);
4663 : */
4664 119428 : psql_yyensure_buffer_stack (yyscanner);
4665 119428 : if ( YY_CURRENT_BUFFER == new_buffer )
4666 191648 : return;
4667 :
4668 47208 : if ( YY_CURRENT_BUFFER )
4669 : {
4670 : /* Flush out information for old buffer. */
4671 17 : *yyg->yy_c_buf_p = yyg->yy_hold_char;
4672 17 : YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
4673 17 : YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
4674 : }
4675 :
4676 47208 : YY_CURRENT_BUFFER_LVALUE = new_buffer;
4677 47208 : psql_yy_load_buffer_state(yyscanner );
4678 :
4679 : /* We don't actually know whether we did this switch during
4680 : * EOF (psql_yywrap()) processing, but the only time this flag
4681 : * is looked at is after psql_yywrap() is called, so it's safe
4682 : * to go ahead and always set it.
4683 : */
4684 47208 : yyg->yy_did_buffer_switch_on_eof = 1;
4685 : }
4686 :
4687 47388 : static void psql_yy_load_buffer_state (yyscan_t yyscanner)
4688 : {
4689 47388 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4690 47388 : yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
4691 47388 : yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
4692 47388 : yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
4693 47388 : yyg->yy_hold_char = *yyg->yy_c_buf_p;
4694 47388 : }
4695 :
4696 : /** Allocate and initialize an input buffer state.
4697 : * @param file A readable stream.
4698 : * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
4699 : * @param yyscanner The scanner object.
4700 : * @return the allocated buffer state.
4701 : */
4702 0 : YY_BUFFER_STATE psql_yy_create_buffer (FILE * file, int size , yyscan_t yyscanner)
4703 : {
4704 : YY_BUFFER_STATE b;
4705 :
4706 0 : b = (YY_BUFFER_STATE) psql_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
4707 0 : if ( ! b )
4708 0 : YY_FATAL_ERROR( "out of dynamic memory in psql_yy_create_buffer()" );
4709 :
4710 0 : b->yy_buf_size = size;
4711 :
4712 : /* yy_ch_buf has to be 2 characters longer than the size given because
4713 : * we need to put in 2 end-of-buffer characters.
4714 : */
4715 0 : b->yy_ch_buf = (char *) psql_yyalloc(b->yy_buf_size + 2 ,yyscanner );
4716 0 : if ( ! b->yy_ch_buf )
4717 0 : YY_FATAL_ERROR( "out of dynamic memory in psql_yy_create_buffer()" );
4718 :
4719 0 : b->yy_is_our_buffer = 1;
4720 :
4721 0 : psql_yy_init_buffer(b,file ,yyscanner);
4722 :
4723 0 : return b;
4724 : }
4725 :
4726 : /** Destroy the buffer.
4727 : * @param b a buffer created with psql_yy_create_buffer()
4728 : * @param yyscanner The scanner object.
4729 : */
4730 47191 : void psql_yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
4731 : {
4732 47191 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4733 :
4734 47191 : if ( ! b )
4735 47191 : return;
4736 :
4737 47191 : if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
4738 47191 : YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
4739 :
4740 47191 : if ( b->yy_is_our_buffer )
4741 0 : psql_yyfree((void *) b->yy_ch_buf ,yyscanner );
4742 :
4743 47191 : psql_yyfree((void *) b ,yyscanner );
4744 : }
4745 :
4746 : /* Initializes or reinitializes a buffer.
4747 : * This function is sometimes called more than once on the same buffer,
4748 : * such as during a psql_yyrestart() or at EOF.
4749 : */
4750 0 : static void psql_yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner)
4751 :
4752 : {
4753 0 : int oerrno = errno;
4754 0 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4755 :
4756 0 : psql_yy_flush_buffer(b ,yyscanner);
4757 :
4758 0 : b->yy_input_file = file;
4759 0 : b->yy_fill_buffer = 1;
4760 :
4761 : /* If b is the current buffer, then psql_yy_init_buffer was _probably_
4762 : * called from psql_yyrestart() or through yy_get_next_buffer.
4763 : * In that case, we don't want to reset the lineno or column.
4764 : */
4765 0 : if (b != YY_CURRENT_BUFFER){
4766 0 : b->yy_bs_lineno = 1;
4767 0 : b->yy_bs_column = 0;
4768 : }
4769 :
4770 0 : b->yy_is_interactive = 0;
4771 :
4772 0 : errno = oerrno;
4773 0 : }
4774 :
4775 : /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
4776 : * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
4777 : * @param yyscanner The scanner object.
4778 : */
4779 0 : void psql_yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner)
4780 : {
4781 0 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4782 0 : if ( ! b )
4783 0 : return;
4784 :
4785 0 : b->yy_n_chars = 0;
4786 :
4787 : /* We always need two end-of-buffer characters. The first causes
4788 : * a transition to the end-of-buffer state. The second causes
4789 : * a jam in that state.
4790 : */
4791 0 : b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
4792 0 : b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
4793 :
4794 0 : b->yy_buf_pos = &b->yy_ch_buf[0];
4795 :
4796 0 : b->yy_at_bol = 1;
4797 0 : b->yy_buffer_status = YY_BUFFER_NEW;
4798 :
4799 0 : if ( b == YY_CURRENT_BUFFER )
4800 0 : psql_yy_load_buffer_state(yyscanner );
4801 : }
4802 :
4803 : /** Pushes the new state onto the stack. The new state becomes
4804 : * the current state. This function will allocate the stack
4805 : * if necessary.
4806 : * @param new_buffer The new state.
4807 : * @param yyscanner The scanner object.
4808 : */
4809 0 : void psql_yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner)
4810 : {
4811 0 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4812 0 : if (new_buffer == NULL)
4813 0 : return;
4814 :
4815 0 : psql_yyensure_buffer_stack(yyscanner);
4816 :
4817 : /* This block is copied from psql_yy_switch_to_buffer. */
4818 0 : if ( YY_CURRENT_BUFFER )
4819 : {
4820 : /* Flush out information for old buffer. */
4821 0 : *yyg->yy_c_buf_p = yyg->yy_hold_char;
4822 0 : YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p;
4823 0 : YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars;
4824 : }
4825 :
4826 : /* Only push if top exists. Otherwise, replace top. */
4827 0 : if (YY_CURRENT_BUFFER)
4828 0 : yyg->yy_buffer_stack_top++;
4829 0 : YY_CURRENT_BUFFER_LVALUE = new_buffer;
4830 :
4831 : /* copied from psql_yy_switch_to_buffer. */
4832 0 : psql_yy_load_buffer_state(yyscanner );
4833 0 : yyg->yy_did_buffer_switch_on_eof = 1;
4834 : }
4835 :
4836 : /** Removes and deletes the top of the stack, if present.
4837 : * The next element becomes the new top.
4838 : * @param yyscanner The scanner object.
4839 : */
4840 0 : void psql_yypop_buffer_state (yyscan_t yyscanner)
4841 : {
4842 0 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4843 0 : if (!YY_CURRENT_BUFFER)
4844 0 : return;
4845 :
4846 0 : psql_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner);
4847 0 : YY_CURRENT_BUFFER_LVALUE = NULL;
4848 0 : if (yyg->yy_buffer_stack_top > 0)
4849 0 : --yyg->yy_buffer_stack_top;
4850 :
4851 0 : if (YY_CURRENT_BUFFER) {
4852 0 : psql_yy_load_buffer_state(yyscanner );
4853 0 : yyg->yy_did_buffer_switch_on_eof = 1;
4854 : }
4855 : }
4856 :
4857 : /* Allocates the stack if it does not exist.
4858 : * Guarantees space for at least one push.
4859 : */
4860 119428 : static void psql_yyensure_buffer_stack (yyscan_t yyscanner)
4861 : {
4862 : yy_size_t num_to_alloc;
4863 119428 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
4864 :
4865 119428 : if (!yyg->yy_buffer_stack) {
4866 :
4867 : /* First allocation is just for 2 elements, since we don't know if this
4868 : * scanner will even need a stack. We use 2 instead of 1 to avoid an
4869 : * immediate realloc on the next call.
4870 : */
4871 180 : num_to_alloc = 1;
4872 180 : yyg->yy_buffer_stack = (struct yy_buffer_state**)psql_yyalloc
4873 : (num_to_alloc * sizeof(struct yy_buffer_state*)
4874 : , yyscanner);
4875 180 : if ( ! yyg->yy_buffer_stack )
4876 0 : YY_FATAL_ERROR( "out of dynamic memory in psql_yyensure_buffer_stack()" );
4877 :
4878 180 : memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*));
4879 :
4880 180 : yyg->yy_buffer_stack_max = num_to_alloc;
4881 180 : yyg->yy_buffer_stack_top = 0;
4882 119608 : return;
4883 : }
4884 :
4885 119248 : if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){
4886 :
4887 : /* Increase the buffer to prepare for a possible push. */
4888 180 : int grow_size = 8 /* arbitrary grow size */;
4889 :
4890 180 : num_to_alloc = yyg->yy_buffer_stack_max + grow_size;
4891 360 : yyg->yy_buffer_stack = (struct yy_buffer_state**)psql_yyrealloc
4892 180 : (yyg->yy_buffer_stack,
4893 : num_to_alloc * sizeof(struct yy_buffer_state*)
4894 : , yyscanner);
4895 180 : if ( ! yyg->yy_buffer_stack )
4896 0 : YY_FATAL_ERROR( "out of dynamic memory in psql_yyensure_buffer_stack()" );
4897 :
4898 : /* zero only the new slots.*/
4899 180 : memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*));
4900 180 : yyg->yy_buffer_stack_max = num_to_alloc;
4901 : }
4902 : }
4903 :
4904 : /** Setup the input buffer state to scan directly from a user-specified character buffer.
4905 : * @param base the character buffer
4906 : * @param size the size in bytes of the character buffer
4907 : * @param yyscanner The scanner object.
4908 : * @return the newly allocated buffer state object.
4909 : */
4910 47191 : YY_BUFFER_STATE psql_yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner)
4911 : {
4912 : YY_BUFFER_STATE b;
4913 :
4914 94382 : if ( size < 2 ||
4915 94382 : base[size-2] != YY_END_OF_BUFFER_CHAR ||
4916 47191 : base[size-1] != YY_END_OF_BUFFER_CHAR )
4917 : /* They forgot to leave room for the EOB's. */
4918 0 : return 0;
4919 :
4920 47191 : b = (YY_BUFFER_STATE) psql_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner );
4921 47191 : if ( ! b )
4922 0 : YY_FATAL_ERROR( "out of dynamic memory in psql_yy_scan_buffer()" );
4923 :
4924 47191 : b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
4925 47191 : b->yy_buf_pos = b->yy_ch_buf = base;
4926 47191 : b->yy_is_our_buffer = 0;
4927 47191 : b->yy_input_file = 0;
4928 47191 : b->yy_n_chars = b->yy_buf_size;
4929 47191 : b->yy_is_interactive = 0;
4930 47191 : b->yy_at_bol = 1;
4931 47191 : b->yy_fill_buffer = 0;
4932 47191 : b->yy_buffer_status = YY_BUFFER_NEW;
4933 :
4934 47191 : psql_yy_switch_to_buffer(b ,yyscanner );
4935 :
4936 47191 : return b;
4937 : }
4938 :
4939 : /** Setup the input buffer state to scan a string. The next call to psql_yylex() will
4940 : * scan from a @e copy of @a str.
4941 : * @param yystr a NUL-terminated string to scan
4942 : * @param yyscanner The scanner object.
4943 : * @return the newly allocated buffer state object.
4944 : * @note If you want to scan bytes that may contain NUL values, then use
4945 : * psql_yy_scan_bytes() instead.
4946 : */
4947 0 : YY_BUFFER_STATE psql_yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)
4948 : {
4949 :
4950 0 : return psql_yy_scan_bytes(yystr,strlen(yystr) ,yyscanner);
4951 : }
4952 :
4953 : /** Setup the input buffer state to scan the given bytes. The next call to psql_yylex() will
4954 : * scan from a @e copy of @a bytes.
4955 : * @param yybytes the byte buffer to scan
4956 : * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
4957 : * @param yyscanner The scanner object.
4958 : * @return the newly allocated buffer state object.
4959 : */
4960 0 : YY_BUFFER_STATE psql_yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len , yyscan_t yyscanner)
4961 : {
4962 : YY_BUFFER_STATE b;
4963 : char *buf;
4964 : yy_size_t n;
4965 : yy_size_t i;
4966 :
4967 : /* Get memory for full buffer, including space for trailing EOB's. */
4968 0 : n = _yybytes_len + 2;
4969 0 : buf = (char *) psql_yyalloc(n ,yyscanner );
4970 0 : if ( ! buf )
4971 0 : YY_FATAL_ERROR( "out of dynamic memory in psql_yy_scan_bytes()" );
4972 :
4973 0 : for ( i = 0; i < _yybytes_len; ++i )
4974 0 : buf[i] = yybytes[i];
4975 :
4976 0 : buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
4977 :
4978 0 : b = psql_yy_scan_buffer(buf,n ,yyscanner);
4979 0 : if ( ! b )
4980 0 : YY_FATAL_ERROR( "bad buffer in psql_yy_scan_bytes()" );
4981 :
4982 : /* It's okay to grow etc. this buffer, and we should throw it
4983 : * away when we're done.
4984 : */
4985 0 : b->yy_is_our_buffer = 1;
4986 :
4987 0 : return b;
4988 : }
4989 :
4990 : #ifndef YY_EXIT_FAILURE
4991 : #define YY_EXIT_FAILURE 2
4992 : #endif
4993 :
4994 0 : static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner)
4995 : {
4996 0 : (void) fprintf( stderr, "%s\n", msg );
4997 0 : exit( YY_EXIT_FAILURE );
4998 : }
4999 :
5000 : /* Redefine yyless() so it works in section 3 code. */
5001 :
5002 : #undef yyless
5003 : #define yyless(n) \
5004 : do \
5005 : { \
5006 : /* Undo effects of setting up yytext. */ \
5007 : int yyless_macro_arg = (n); \
5008 : YY_LESS_LINENO(yyless_macro_arg);\
5009 : yytext[yyleng] = yyg->yy_hold_char; \
5010 : yyg->yy_c_buf_p = yytext + yyless_macro_arg; \
5011 : yyg->yy_hold_char = *yyg->yy_c_buf_p; \
5012 : *yyg->yy_c_buf_p = '\0'; \
5013 : yyleng = yyless_macro_arg; \
5014 : } \
5015 : while ( 0 )
5016 :
5017 : /* Accessor methods (get/set functions) to struct members. */
5018 :
5019 : /** Get the user-defined data for this scanner.
5020 : * @param yyscanner The scanner object.
5021 : */
5022 0 : YY_EXTRA_TYPE psql_yyget_extra (yyscan_t yyscanner)
5023 : {
5024 0 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5025 0 : return yyextra;
5026 : }
5027 :
5028 : /** Get the current line number.
5029 : * @param yyscanner The scanner object.
5030 : */
5031 0 : int psql_yyget_lineno (yyscan_t yyscanner)
5032 : {
5033 0 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5034 :
5035 0 : if (! YY_CURRENT_BUFFER)
5036 0 : return 0;
5037 :
5038 0 : return yylineno;
5039 : }
5040 :
5041 : /** Get the current column number.
5042 : * @param yyscanner The scanner object.
5043 : */
5044 0 : int psql_yyget_column (yyscan_t yyscanner)
5045 : {
5046 0 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5047 :
5048 0 : if (! YY_CURRENT_BUFFER)
5049 0 : return 0;
5050 :
5051 0 : return yycolumn;
5052 : }
5053 :
5054 : /** Get the input stream.
5055 : * @param yyscanner The scanner object.
5056 : */
5057 0 : FILE *psql_yyget_in (yyscan_t yyscanner)
5058 : {
5059 0 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5060 0 : return yyin;
5061 : }
5062 :
5063 : /** Get the output stream.
5064 : * @param yyscanner The scanner object.
5065 : */
5066 0 : FILE *psql_yyget_out (yyscan_t yyscanner)
5067 : {
5068 0 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5069 0 : return yyout;
5070 : }
5071 :
5072 : /** Get the length of the current token.
5073 : * @param yyscanner The scanner object.
5074 : */
5075 0 : yy_size_t psql_yyget_leng (yyscan_t yyscanner)
5076 : {
5077 0 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5078 0 : return yyleng;
5079 : }
5080 :
5081 : /** Get the current token.
5082 : * @param yyscanner The scanner object.
5083 : */
5084 :
5085 0 : char *psql_yyget_text (yyscan_t yyscanner)
5086 : {
5087 0 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5088 0 : return yytext;
5089 : }
5090 :
5091 : /** Set the user-defined data. This data is never touched by the scanner.
5092 : * @param user_defined The data to be associated with this scanner.
5093 : * @param yyscanner The scanner object.
5094 : */
5095 181 : void psql_yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner)
5096 : {
5097 181 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5098 181 : yyextra = user_defined ;
5099 181 : }
5100 :
5101 : /** Set the current line number.
5102 : * @param line_number
5103 : * @param yyscanner The scanner object.
5104 : */
5105 0 : void psql_yyset_lineno (int line_number , yyscan_t yyscanner)
5106 : {
5107 0 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5108 :
5109 : /* lineno is only valid if an input buffer exists. */
5110 0 : if (! YY_CURRENT_BUFFER )
5111 0 : YY_FATAL_ERROR( "psql_yyset_lineno called with no buffer" );
5112 :
5113 0 : yylineno = line_number;
5114 0 : }
5115 :
5116 : /** Set the current column.
5117 : * @param line_number
5118 : * @param yyscanner The scanner object.
5119 : */
5120 0 : void psql_yyset_column (int column_no , yyscan_t yyscanner)
5121 : {
5122 0 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5123 :
5124 : /* column is only valid if an input buffer exists. */
5125 0 : if (! YY_CURRENT_BUFFER )
5126 0 : YY_FATAL_ERROR( "psql_yyset_column called with no buffer" );
5127 :
5128 0 : yycolumn = column_no;
5129 0 : }
5130 :
5131 : /** Set the input stream. This does not discard the current
5132 : * input buffer.
5133 : * @param in_str A readable stream.
5134 : * @param yyscanner The scanner object.
5135 : * @see psql_yy_switch_to_buffer
5136 : */
5137 0 : void psql_yyset_in (FILE * in_str , yyscan_t yyscanner)
5138 : {
5139 0 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5140 0 : yyin = in_str ;
5141 0 : }
5142 :
5143 0 : void psql_yyset_out (FILE * out_str , yyscan_t yyscanner)
5144 : {
5145 0 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5146 0 : yyout = out_str ;
5147 0 : }
5148 :
5149 0 : int psql_yyget_debug (yyscan_t yyscanner)
5150 : {
5151 0 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5152 0 : return yy_flex_debug;
5153 : }
5154 :
5155 0 : void psql_yyset_debug (int bdebug , yyscan_t yyscanner)
5156 : {
5157 0 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5158 0 : yy_flex_debug = bdebug ;
5159 0 : }
5160 :
5161 : /* Accessor methods for yylval and yylloc */
5162 :
5163 0 : YYSTYPE * psql_yyget_lval (yyscan_t yyscanner)
5164 : {
5165 0 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5166 0 : return yylval;
5167 : }
5168 :
5169 0 : void psql_yyset_lval (YYSTYPE * yylval_param , yyscan_t yyscanner)
5170 : {
5171 0 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5172 0 : yylval = yylval_param;
5173 0 : }
5174 :
5175 : /* User-visible API */
5176 :
5177 : /* psql_yylex_init is special because it creates the scanner itself, so it is
5178 : * the ONLY reentrant function that doesn't take the scanner as the last argument.
5179 : * That's why we explicitly handle the declaration, instead of using our macros.
5180 : */
5181 :
5182 181 : int psql_yylex_init(yyscan_t* ptr_yy_globals)
5183 :
5184 : {
5185 181 : if (ptr_yy_globals == NULL){
5186 0 : errno = EINVAL;
5187 0 : return 1;
5188 : }
5189 :
5190 181 : *ptr_yy_globals = (yyscan_t) psql_yyalloc ( sizeof( struct yyguts_t ), NULL );
5191 :
5192 181 : if (*ptr_yy_globals == NULL){
5193 0 : errno = ENOMEM;
5194 0 : return 1;
5195 : }
5196 :
5197 : /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */
5198 181 : memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
5199 :
5200 181 : return yy_init_globals ( *ptr_yy_globals );
5201 : }
5202 :
5203 : /* psql_yylex_init_extra has the same functionality as psql_yylex_init, but follows the
5204 : * convention of taking the scanner as the last argument. Note however, that
5205 : * this is a *pointer* to a scanner, as it will be allocated by this call (and
5206 : * is the reason, too, why this function also must handle its own declaration).
5207 : * The user defined value in the first argument will be available to psql_yyalloc in
5208 : * the yyextra field.
5209 : */
5210 :
5211 0 : int psql_yylex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals )
5212 :
5213 : {
5214 : struct yyguts_t dummy_yyguts;
5215 :
5216 0 : psql_yyset_extra (yy_user_defined, &dummy_yyguts);
5217 :
5218 0 : if (ptr_yy_globals == NULL){
5219 0 : errno = EINVAL;
5220 0 : return 1;
5221 : }
5222 :
5223 0 : *ptr_yy_globals = (yyscan_t) psql_yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts );
5224 :
5225 0 : if (*ptr_yy_globals == NULL){
5226 0 : errno = ENOMEM;
5227 0 : return 1;
5228 : }
5229 :
5230 : /* By setting to 0xAA, we expose bugs in
5231 : yy_init_globals. Leave at 0x00 for releases. */
5232 0 : memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t));
5233 :
5234 0 : psql_yyset_extra (yy_user_defined, *ptr_yy_globals);
5235 :
5236 0 : return yy_init_globals ( *ptr_yy_globals );
5237 : }
5238 :
5239 362 : static int yy_init_globals (yyscan_t yyscanner)
5240 : {
5241 362 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5242 : /* Initialization is the same as for the non-reentrant scanner.
5243 : * This function is called from psql_yylex_destroy(), so don't allocate here.
5244 : */
5245 :
5246 362 : yyg->yy_buffer_stack = 0;
5247 362 : yyg->yy_buffer_stack_top = 0;
5248 362 : yyg->yy_buffer_stack_max = 0;
5249 362 : yyg->yy_c_buf_p = (char *) 0;
5250 362 : yyg->yy_init = 0;
5251 362 : yyg->yy_start = 0;
5252 :
5253 362 : yyg->yy_start_stack_ptr = 0;
5254 362 : yyg->yy_start_stack_depth = 0;
5255 362 : yyg->yy_start_stack = NULL;
5256 :
5257 : /* Defined in main.c */
5258 : #ifdef YY_STDINIT
5259 : yyin = stdin;
5260 : yyout = stdout;
5261 : #else
5262 362 : yyin = (FILE *) 0;
5263 362 : yyout = (FILE *) 0;
5264 : #endif
5265 :
5266 : /* For future reference: Set errno on error, since we are called by
5267 : * psql_yylex_init()
5268 : */
5269 362 : return 0;
5270 : }
5271 :
5272 : /* psql_yylex_destroy is for both reentrant and non-reentrant scanners. */
5273 181 : int psql_yylex_destroy (yyscan_t yyscanner)
5274 : {
5275 181 : struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
5276 :
5277 : /* Pop the buffer stack, destroying each element. */
5278 362 : while(YY_CURRENT_BUFFER){
5279 0 : psql_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner );
5280 0 : YY_CURRENT_BUFFER_LVALUE = NULL;
5281 0 : psql_yypop_buffer_state(yyscanner);
5282 : }
5283 :
5284 : /* Destroy the stack itself. */
5285 181 : psql_yyfree(yyg->yy_buffer_stack ,yyscanner);
5286 181 : yyg->yy_buffer_stack = NULL;
5287 :
5288 : /* Destroy the start condition stack. */
5289 181 : psql_yyfree(yyg->yy_start_stack ,yyscanner );
5290 181 : yyg->yy_start_stack = NULL;
5291 :
5292 : /* Reset the globals. This is important in a non-reentrant scanner so the next time
5293 : * psql_yylex() is called, initialization will occur. */
5294 181 : yy_init_globals( yyscanner);
5295 :
5296 : /* Destroy the main struct (reentrant only). */
5297 181 : psql_yyfree ( yyscanner , yyscanner );
5298 181 : yyscanner = NULL;
5299 181 : return 0;
5300 : }
5301 :
5302 : /*
5303 : * Internal utility routines.
5304 : */
5305 :
5306 : #ifndef yytext_ptr
5307 : static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner)
5308 : {
5309 : register int i;
5310 : for ( i = 0; i < n; ++i )
5311 : s1[i] = s2[i];
5312 : }
5313 : #endif
5314 :
5315 : #ifdef YY_NEED_STRLEN
5316 : static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner)
5317 : {
5318 : register int n;
5319 : for ( n = 0; s[n]; ++n )
5320 : ;
5321 :
5322 : return n;
5323 : }
5324 : #endif
5325 :
5326 47552 : void *psql_yyalloc (yy_size_t size , yyscan_t yyscanner)
5327 : {
5328 47552 : return (void *) malloc( size );
5329 : }
5330 :
5331 180 : void *psql_yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner)
5332 : {
5333 : /* The cast to (char *) in the following accommodates both
5334 : * implementations that use char* generic pointers, and those
5335 : * that use void* generic pointers. It works with the latter
5336 : * because both ANSI C and C++ allow castless assignment from
5337 : * any pointer type to void*, and deal with argument conversions
5338 : * as though doing an assignment.
5339 : */
5340 180 : return (void *) realloc( (char *) ptr, size );
5341 : }
5342 :
5343 47734 : void psql_yyfree (void * ptr , yyscan_t yyscanner)
5344 : {
5345 47734 : free( (char *) ptr ); /* see psql_yyrealloc() for (char *) cast */
5346 47734 : }
5347 :
5348 : #define YYTABLES_NAME "yytables"
5349 :
5350 : #line 884 "psqlscan.l"
5351 :
5352 :
5353 :
5354 : /*
5355 : * Create a lexer working state struct.
5356 : *
5357 : * callbacks is a struct of function pointers that encapsulate some
5358 : * behavior we need from the surrounding program. This struct must
5359 : * remain valid for the lifespan of the PsqlScanState.
5360 : */
5361 : PsqlScanState
5362 : psql_scan_create(const PsqlScanCallbacks *callbacks)
5363 : {
5364 : PsqlScanState state;
5365 :
5366 : state = (PsqlScanStateData *) pg_malloc0(sizeof(PsqlScanStateData));
5367 :
5368 : state->callbacks = callbacks;
5369 :
5370 : psql_yylex_init(&state->scanner);
5371 :
5372 : psql_yyset_extra(state,state->scanner);
5373 :
5374 : psql_scan_reset(state);
5375 :
5376 : return state;
5377 : }
5378 :
5379 : /*
5380 : * Destroy a lexer working state struct, releasing all resources.
5381 : */
5382 : void
5383 : psql_scan_destroy(PsqlScanState state)
5384 : {
5385 : psql_scan_finish(state);
5386 :
5387 : psql_scan_reset(state);
5388 :
5389 : psql_yylex_destroy(state->scanner);
5390 :
5391 : free(state);
5392 : }
5393 :
5394 : /*
5395 : * Set the callback passthrough pointer for the lexer.
5396 : *
5397 : * This could have been integrated into psql_scan_create, but keeping it
5398 : * separate allows the application to change the pointer later, which might
5399 : * be useful.
5400 : */
5401 : void
5402 : psql_scan_set_passthrough(PsqlScanState state, void *passthrough)
5403 : {
5404 : state->cb_passthrough = passthrough;
5405 : }
5406 :
5407 : /*
5408 : * Set up to perform lexing of the given input line.
5409 : *
5410 : * The text at *line, extending for line_len bytes, will be scanned by
5411 : * subsequent calls to the psql_scan routines. psql_scan_finish should
5412 : * be called when scanning is complete. Note that the lexer retains
5413 : * a pointer to the storage at *line --- this string must not be altered
5414 : * or freed until after psql_scan_finish is called.
5415 : *
5416 : * encoding is the libpq identifier for the character encoding in use,
5417 : * and std_strings says whether standard_conforming_strings is on.
5418 : */
5419 : void
5420 : psql_scan_setup(PsqlScanState state,
5421 : const char *line, int line_len,
5422 : int encoding, bool std_strings)
5423 : {
5424 : /* Mustn't be scanning already */
5425 : Assert(state->scanbufhandle == NULL);
5426 : Assert(state->buffer_stack == NULL);
5427 :
5428 : /* Do we need to hack the character set encoding? */
5429 : state->encoding = encoding;
5430 : state->safe_encoding = pg_valid_server_encoding_id(encoding);
5431 :
5432 : /* Save standard-strings flag as well */
5433 : state->std_strings = std_strings;
5434 :
5435 : /* Set up flex input buffer with appropriate translation and padding */
5436 : state->scanbufhandle = psqlscan_prepare_buffer(state, line, line_len,
5437 : &state->scanbuf);
5438 : state->scanline = line;
5439 :
5440 : /* Set lookaside data in case we have to map unsafe encoding */
5441 : state->curline = state->scanbuf;
5442 : state->refline = state->scanline;
5443 : }
5444 :
5445 : /*
5446 : * Do lexical analysis of SQL command text.
5447 : *
5448 : * The text previously passed to psql_scan_setup is scanned, and appended
5449 : * (possibly with transformation) to query_buf.
5450 : *
5451 : * The return value indicates the condition that stopped scanning:
5452 : *
5453 : * PSCAN_SEMICOLON: found a command-ending semicolon. (The semicolon is
5454 : * transferred to query_buf.) The command accumulated in query_buf should
5455 : * be executed, then clear query_buf and call again to scan the remainder
5456 : * of the line.
5457 : *
5458 : * PSCAN_BACKSLASH: found a backslash that starts a special command.
5459 : * Any previous data on the line has been transferred to query_buf.
5460 : * The caller will typically next apply a separate flex lexer to scan
5461 : * the special command.
5462 : *
5463 : * PSCAN_INCOMPLETE: the end of the line was reached, but we have an
5464 : * incomplete SQL command. *prompt is set to the appropriate prompt type.
5465 : *
5466 : * PSCAN_EOL: the end of the line was reached, and there is no lexical
5467 : * reason to consider the command incomplete. The caller may or may not
5468 : * choose to send it. *prompt is set to the appropriate prompt type if
5469 : * the caller chooses to collect more input.
5470 : *
5471 : * In the PSCAN_INCOMPLETE and PSCAN_EOL cases, psql_scan_finish() should
5472 : * be called next, then the cycle may be repeated with a fresh input line.
5473 : *
5474 : * In all cases, *prompt is set to an appropriate prompt type code for the
5475 : * next line-input operation.
5476 : */
5477 : PsqlScanResult
5478 : psql_scan(PsqlScanState state,
5479 : PQExpBuffer query_buf,
5480 : promptStatus_t *prompt)
5481 : {
5482 : PsqlScanResult result;
5483 : int lexresult;
5484 :
5485 : /* Must be scanning already */
5486 : Assert(state->scanbufhandle != NULL);
5487 :
5488 : /* Set current output target */
5489 : state->output_buf = query_buf;
5490 :
5491 : /* Set input source */
5492 : if (state->buffer_stack != NULL)
5493 : psql_yy_switch_to_buffer(state->buffer_stack->buf,state->scanner);
5494 : else
5495 : psql_yy_switch_to_buffer(state->scanbufhandle,state->scanner);
5496 :
5497 : /* And lex. */
5498 : lexresult = psql_yylex(NULL,state->scanner);
5499 :
5500 : /*
5501 : * Check termination state and return appropriate result info.
5502 : */
5503 : switch (lexresult)
5504 : {
5505 : case LEXRES_EOL: /* end of input */
5506 : switch (state->start_state)
5507 : {
5508 : case INITIAL:
5509 : case xuiend: /* we treat these like INITIAL */
5510 : case xusend:
5511 : if (state->paren_depth > 0)
5512 : {
5513 : result = PSCAN_INCOMPLETE;
5514 : *prompt = PROMPT_PAREN;
5515 : }
5516 : else if (query_buf->len > 0)
5517 : {
5518 : result = PSCAN_EOL;
5519 : *prompt = PROMPT_CONTINUE;
5520 : }
5521 : else
5522 : {
5523 : /* never bother to send an empty buffer */
5524 : result = PSCAN_INCOMPLETE;
5525 : *prompt = PROMPT_READY;
5526 : }
5527 : break;
5528 : case xb:
5529 : result = PSCAN_INCOMPLETE;
5530 : *prompt = PROMPT_SINGLEQUOTE;
5531 : break;
5532 : case xc:
5533 : result = PSCAN_INCOMPLETE;
5534 : *prompt = PROMPT_COMMENT;
5535 : break;
5536 : case xd:
5537 : result = PSCAN_INCOMPLETE;
5538 : *prompt = PROMPT_DOUBLEQUOTE;
5539 : break;
5540 : case xh:
5541 : result = PSCAN_INCOMPLETE;
5542 : *prompt = PROMPT_SINGLEQUOTE;
5543 : break;
5544 : case xe:
5545 : result = PSCAN_INCOMPLETE;
5546 : *prompt = PROMPT_SINGLEQUOTE;
5547 : break;
5548 : case xq:
5549 : result = PSCAN_INCOMPLETE;
5550 : *prompt = PROMPT_SINGLEQUOTE;
5551 : break;
5552 : case xdolq:
5553 : result = PSCAN_INCOMPLETE;
5554 : *prompt = PROMPT_DOLLARQUOTE;
5555 : break;
5556 : case xui:
5557 : result = PSCAN_INCOMPLETE;
5558 : *prompt = PROMPT_DOUBLEQUOTE;
5559 : break;
5560 : case xus:
5561 : result = PSCAN_INCOMPLETE;
5562 : *prompt = PROMPT_SINGLEQUOTE;
5563 : break;
5564 : default:
5565 : /* can't get here */
5566 : fprintf(stderr, "invalid YY_START\n");
5567 : exit(1);
5568 : }
5569 : break;
5570 : case LEXRES_SEMI: /* semicolon */
5571 : result = PSCAN_SEMICOLON;
5572 : *prompt = PROMPT_READY;
5573 : break;
5574 : case LEXRES_BACKSLASH: /* backslash */
5575 : result = PSCAN_BACKSLASH;
5576 : *prompt = PROMPT_READY;
5577 : break;
5578 : default:
5579 : /* can't get here */
5580 : fprintf(stderr, "invalid psql_yylex result\n");
5581 : exit(1);
5582 : }
5583 :
5584 : return result;
5585 : }
5586 :
5587 : /*
5588 : * Clean up after scanning a string. This flushes any unread input and
5589 : * releases resources (but not the PsqlScanState itself). Note however
5590 : * that this does not reset the lexer scan state; that can be done by
5591 : * psql_scan_reset(), which is an orthogonal operation.
5592 : *
5593 : * It is legal to call this when not scanning anything (makes it easier
5594 : * to deal with error recovery).
5595 : */
5596 : void
5597 : psql_scan_finish(PsqlScanState state)
5598 : {
5599 : /* Drop any incomplete variable expansions. */
5600 : while (state->buffer_stack != NULL)
5601 : psqlscan_pop_buffer_stack(state);
5602 :
5603 : /* Done with the outer scan buffer, too */
5604 : if (state->scanbufhandle)
5605 : psql_yy_delete_buffer(state->scanbufhandle,state->scanner);
5606 : state->scanbufhandle = NULL;
5607 : if (state->scanbuf)
5608 : free(state->scanbuf);
5609 : state->scanbuf = NULL;
5610 : }
5611 :
5612 : /*
5613 : * Reset lexer scanning state to start conditions. This is appropriate
5614 : * for executing \r psql commands (or any other time that we discard the
5615 : * prior contents of query_buf). It is not, however, necessary to do this
5616 : * when we execute and clear the buffer after getting a PSCAN_SEMICOLON or
5617 : * PSCAN_EOL scan result, because the scan state must be INITIAL when those
5618 : * conditions are returned.
5619 : *
5620 : * Note that this is unrelated to flushing unread input; that task is
5621 : * done by psql_scan_finish().
5622 : */
5623 : void
5624 : psql_scan_reset(PsqlScanState state)
5625 : {
5626 : state->start_state = INITIAL;
5627 : state->paren_depth = 0;
5628 : state->xcdepth = 0; /* not really necessary */
5629 : if (state->dolqstart)
5630 : free(state->dolqstart);
5631 : state->dolqstart = NULL;
5632 : }
5633 :
5634 : /*
5635 : * Reselect this lexer (psqlscan.l) after using another one.
5636 : *
5637 : * Currently and for foreseeable uses, it's sufficient to reset to INITIAL
5638 : * state, because we'd never switch to another lexer in a different state.
5639 : * However, we don't want to reset e.g. paren_depth, so this can't be
5640 : * the same as psql_scan_reset().
5641 : *
5642 : * Note: psql setjmp error recovery just calls psql_scan_reset(), so that
5643 : * must be a superset of this.
5644 : *
5645 : * Note: it seems likely that other lexers could just assign INITIAL for
5646 : * themselves, since that probably has the value zero in every flex-generated
5647 : * lexer. But let's not assume that.
5648 : */
5649 : void
5650 : psql_scan_reselect_sql_lexer(PsqlScanState state)
5651 : {
5652 : state->start_state = INITIAL;
5653 : }
5654 :
5655 : /*
5656 : * Return true if lexer is currently in an "inside quotes" state.
5657 : *
5658 : * This is pretty grotty but is needed to preserve the old behavior
5659 : * that mainloop.c drops blank lines not inside quotes without even
5660 : * echoing them.
5661 : */
5662 : bool
5663 : psql_scan_in_quote(PsqlScanState state)
5664 : {
5665 : return state->start_state != INITIAL;
5666 : }
5667 :
5668 : /*
5669 : * Push the given string onto the stack of stuff to scan.
5670 : *
5671 : * NOTE SIDE EFFECT: the new buffer is made the active flex input buffer.
5672 : */
5673 : void
5674 : psqlscan_push_new_buffer(PsqlScanState state, const char *newstr,
5675 : const char *varname)
5676 : {
5677 : StackElem *stackelem;
5678 :
5679 : stackelem = (StackElem *) pg_malloc(sizeof(StackElem));
5680 :
5681 : /*
5682 : * In current usage, the passed varname points at the current flex input
5683 : * buffer; we must copy it before calling psqlscan_prepare_buffer()
5684 : * because that will change the buffer state.
5685 : */
5686 : stackelem->varname = varname ? pg_strdup(varname) : NULL;
5687 :
5688 : stackelem->buf = psqlscan_prepare_buffer(state, newstr, strlen(newstr),
5689 : &stackelem->bufstring);
5690 : state->curline = stackelem->bufstring;
5691 : if (state->safe_encoding)
5692 : {
5693 : stackelem->origstring = NULL;
5694 : state->refline = stackelem->bufstring;
5695 : }
5696 : else
5697 : {
5698 : stackelem->origstring = pg_strdup(newstr);
5699 : state->refline = stackelem->origstring;
5700 : }
5701 : stackelem->next = state->buffer_stack;
5702 : state->buffer_stack = stackelem;
5703 : }
5704 :
5705 : /*
5706 : * Pop the topmost buffer stack item (there must be one!)
5707 : *
5708 : * NB: after this, the flex input state is unspecified; caller must
5709 : * switch to an appropriate buffer to continue lexing.
5710 : * See psqlscan_select_top_buffer().
5711 : */
5712 : void
5713 : psqlscan_pop_buffer_stack(PsqlScanState state)
5714 : {
5715 : StackElem *stackelem = state->buffer_stack;
5716 :
5717 : state->buffer_stack = stackelem->next;
5718 : psql_yy_delete_buffer(stackelem->buf,state->scanner);
5719 : free(stackelem->bufstring);
5720 : if (stackelem->origstring)
5721 : free(stackelem->origstring);
5722 : if (stackelem->varname)
5723 : free(stackelem->varname);
5724 : free(stackelem);
5725 : }
5726 :
5727 : /*
5728 : * Select the topmost surviving buffer as the active input.
5729 : */
5730 : void
5731 : psqlscan_select_top_buffer(PsqlScanState state)
5732 : {
5733 : StackElem *stackelem = state->buffer_stack;
5734 :
5735 : if (stackelem != NULL)
5736 : {
5737 : psql_yy_switch_to_buffer(stackelem->buf,state->scanner);
5738 : state->curline = stackelem->bufstring;
5739 : state->refline = stackelem->origstring ? stackelem->origstring : stackelem->bufstring;
5740 : }
5741 : else
5742 : {
5743 : psql_yy_switch_to_buffer(state->scanbufhandle,state->scanner);
5744 : state->curline = state->scanbuf;
5745 : state->refline = state->scanline;
5746 : }
5747 : }
5748 :
5749 : /*
5750 : * Check if specified variable name is the source for any string
5751 : * currently being scanned
5752 : */
5753 : bool
5754 : psqlscan_var_is_current_source(PsqlScanState state, const char *varname)
5755 : {
5756 : StackElem *stackelem;
5757 :
5758 : for (stackelem = state->buffer_stack;
5759 : stackelem != NULL;
5760 : stackelem = stackelem->next)
5761 : {
5762 : if (stackelem->varname && strcmp(stackelem->varname, varname) == 0)
5763 : return true;
5764 : }
5765 : return false;
5766 : }
5767 :
5768 : /*
5769 : * Set up a flex input buffer to scan the given data. We always make a
5770 : * copy of the data. If working in an unsafe encoding, the copy has
5771 : * multibyte sequences replaced by FFs to avoid fooling the lexer rules.
5772 : *
5773 : * NOTE SIDE EFFECT: the new buffer is made the active flex input buffer.
5774 : */
5775 : YY_BUFFER_STATE
5776 : psqlscan_prepare_buffer(PsqlScanState state, const char *txt, int len,
5777 : char **txtcopy)
5778 : {
5779 : char *newtxt;
5780 :
5781 : /* Flex wants two \0 characters after the actual data */
5782 : newtxt = pg_malloc(len + 2);
5783 : *txtcopy = newtxt;
5784 : newtxt[len] = newtxt[len + 1] = YY_END_OF_BUFFER_CHAR;
5785 :
5786 : if (state->safe_encoding)
5787 : memcpy(newtxt, txt, len);
5788 : else
5789 : {
5790 : /* Gotta do it the hard way */
5791 : int i = 0;
5792 :
5793 : while (i < len)
5794 : {
5795 : int thislen = PQmblen(txt + i, state->encoding);
5796 :
5797 : /* first byte should always be okay... */
5798 : newtxt[i] = txt[i];
5799 : i++;
5800 : while (--thislen > 0 && i < len)
5801 : newtxt[i++] = (char) 0xFF;
5802 : }
5803 : }
5804 :
5805 : return psql_yy_scan_buffer(newtxt,len + 2,state->scanner);
5806 : }
5807 :
5808 : /*
5809 : * psqlscan_emit() --- body for ECHO macro
5810 : *
5811 : * NB: this must be used for ALL and ONLY the text copied from the flex
5812 : * input data. If you pass it something that is not part of the yytext
5813 : * string, you are making a mistake. Internally generated text can be
5814 : * appended directly to state->output_buf.
5815 : */
5816 : void
5817 : psqlscan_emit(PsqlScanState state, const char *txt, int len)
5818 : {
5819 : PQExpBuffer output_buf = state->output_buf;
5820 :
5821 : if (state->safe_encoding)
5822 : appendBinaryPQExpBuffer(output_buf, txt, len);
5823 : else
5824 : {
5825 : /* Gotta do it the hard way */
5826 : const char *reference = state->refline;
5827 : int i;
5828 :
5829 : reference += (txt - state->curline);
5830 :
5831 : for (i = 0; i < len; i++)
5832 : {
5833 : char ch = txt[i];
5834 :
5835 : if (ch == (char) 0xFF)
5836 : ch = reference[i];
5837 : appendPQExpBufferChar(output_buf, ch);
5838 : }
5839 : }
5840 : }
5841 :
5842 : /*
5843 : * psqlscan_extract_substring --- fetch value of (part of) the current token
5844 : *
5845 : * This is like psqlscan_emit(), except that the data is returned as a
5846 : * malloc'd string rather than being pushed directly to state->output_buf.
5847 : */
5848 : char *
5849 : psqlscan_extract_substring(PsqlScanState state, const char *txt, int len)
5850 : {
5851 : char *result = (char *) pg_malloc(len + 1);
5852 :
5853 : if (state->safe_encoding)
5854 : memcpy(result, txt, len);
5855 : else
5856 : {
5857 : /* Gotta do it the hard way */
5858 : const char *reference = state->refline;
5859 : int i;
5860 :
5861 : reference += (txt - state->curline);
5862 :
5863 : for (i = 0; i < len; i++)
5864 : {
5865 : char ch = txt[i];
5866 :
5867 : if (ch == (char) 0xFF)
5868 : ch = reference[i];
5869 : result[i] = ch;
5870 : }
5871 : }
5872 : result[len] = '\0';
5873 : return result;
5874 : }
5875 :
5876 : /*
5877 : * psqlscan_escape_variable --- process :'VARIABLE' or :"VARIABLE"
5878 : *
5879 : * If the variable name is found, escape its value using the appropriate
5880 : * quoting method and emit the value to output_buf. (Since the result is
5881 : * surely quoted, there is never any reason to rescan it.) If we don't
5882 : * find the variable or escaping fails, emit the token as-is.
5883 : */
5884 : void
5885 : psqlscan_escape_variable(PsqlScanState state, const char *txt, int len,
5886 : PsqlScanQuoteType quote)
5887 : {
5888 : char *varname;
5889 : char *value;
5890 :
5891 : /* Variable lookup. */
5892 : varname = psqlscan_extract_substring(state, txt + 2, len - 3);
5893 : if (state->callbacks->get_variable)
5894 : value = state->callbacks->get_variable(varname, quote,
5895 : state->cb_passthrough);
5896 : else
5897 : value = NULL;
5898 : free(varname);
5899 :
5900 : if (value)
5901 : {
5902 : /* Emit the suitably-escaped value */
5903 : appendPQExpBufferStr(state->output_buf, value);
5904 : free(value);
5905 : }
5906 : else
5907 : {
5908 : /* Emit original token as-is */
5909 : psqlscan_emit(state, txt, len);
5910 : }
5911 : }
5912 :
|