2 * CDE - Common Desktop Environment
4 * Copyright (c) 1993-2012, The Open Group. All rights reserved.
6 * These libraries and programs are free software; you can
7 * redistribute them and/or modify them under the terms of the GNU
8 * Lesser General Public License as published by the Free Software
9 * Foundation; either version 2 of the License, or (at your option)
12 * These libraries and programs are distributed in the hope that
13 * they will be useful, but WITHOUT ANY WARRANTY; without even the
14 * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 * PURPOSE. See the GNU Lesser General Public License for more
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with these librararies and programs; if not, write
20 * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21 * Floor, Boston, MA 02110-1301 USA
23 /* $XConsortium: ContentType.C /main/5 1996/08/21 15:57:45 drk $
25 * (c) Copyright 1996 Digital Equipment Corporation.
26 * (c) Copyright 1996 Hewlett-Packard Company.
27 * (c) Copyright 1996 International Business Machines Corp.
28 * (c) Copyright 1996 Sun Microsystems, Inc.
29 * (c) Copyright 1996 Novell, Inc.
30 * (c) Copyright 1996 FUJITSU LIMITED.
31 * (c) Copyright 1996 Hitachi.
34 /* A lexical scanner generated by flex */
36 /* scanner skeleton version:
37 * $Header: /proj/.cde-1/programs/dtinfo/dtinfogen/infolib/etc/ContentType.C /main/5 1996/08/21 15:57:45 drk $
45 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
57 #if !defined(__osf__) && !defined(USL)
61 /* use prototypes in function declarations */
62 #define ol_data_USE_PROTOS
64 /* the "const" storage-class-modifier is valid */
65 #define ol_data_USE_CONST
67 #else /* ! __cplusplus */
73 void *malloc( size_t );
79 #define ol_data_USE_PROTOS
80 #define ol_data_USE_CONST
83 #endif /* ! __cplusplus */
87 #define ol_data_USE_CONST
91 #ifndef ol_data_USE_CONST
96 #ifdef ol_data_USE_PROTOS
97 #define ol_data_PROTO(proto) proto
99 #define ol_data_PROTO(proto) ()
100 /* we can't get here if it's an ANSI C compiler, or a C++ compiler,
101 * so it's got to be a K&R compiler, and therefore there's no standard
102 * place from which to include these definitions
110 /* amount of stuff to slurp up with each read */
111 #ifndef ol_data_READ_BUF_SIZE
112 #define ol_data_READ_BUF_SIZE 8192
115 /* returned upon end-of-file */
116 #define ol_data_END_TOK 0
118 /* copy whatever the last rule matched to the standard output */
120 /* cast to (char *) is because for 8-bit chars, ol_datatext is (unsigned char *) */
121 /* this used to be an fputs(), but since the string might contain NUL's,
122 * we now use fwrite()
124 #define ECHO (void) fwrite( (char *) ol_datatext, ol_dataleng, 1, ol_dataout )
126 /* gets input and stuffs it into "buf". number of characters read, or ol_data_NULL,
127 * is returned in "result".
129 #define ol_data_INPUT(buf,result,max_size) \
130 if ( (result = read( fileno(ol_datain), (char *) buf, max_size )) < 0 ) \
131 ol_data_FATAL_ERROR( "read() in flex scanner failed" );
132 #define ol_data_NULL 0
134 /* no semi-colon after return; correct usage is to write "ol_dataterminate();" -
135 * we don't want an extra ';' after the "return" because that will cause
136 * some compilers to complain about unreachable statements.
138 #define ol_dataterminate() return ( ol_data_NULL )
140 /* report a fatal error */
142 /* The funky do-while is used to turn this macro definition into
143 * a single C statement (which needs a semi-colon terminator).
144 * This avoids problems with code like:
146 * if ( something_happens )
147 * ol_data_FATAL_ERROR( "oops, the something happened" );
151 * Prior to using the do-while the compiler would get upset at the
152 * "else" because it interpreted the "if" statement as being all
153 * done when it reached the ';' after the ol_data_FATAL_ERROR() call.
156 #define ol_data_FATAL_ERROR(msg) \
159 (void) fputs( msg, stderr ); \
160 (void) putc( '\n', stderr ); \
165 /* default ol_datawrap function - always treat EOF as an EOF */
166 #define ol_datawrap() 1
168 /* enter a start condition. This macro really ought to take a parameter,
169 * but we do it the disgusting crufty way forced on us by the ()-less
170 * definition of BEGIN
172 #define BEGIN ol_data_start = 1 + 2 *
174 /* action number for EOF rule of a given start state */
175 #define ol_data_STATE_EOF(state) (ol_data_END_OF_BUFFER + state + 1)
177 /* special action meaning "start processing a new file" */
178 #define ol_data_NEW_FILE \
181 ol_data_init_buffer( ol_data_current_buffer, ol_datain ); \
182 ol_data_load_buffer_state(); \
186 /* default declaration of generated scanner - a define so the user can
187 * easily add parameters
189 #define ol_data_DECL int ol_datalex ol_data_PROTO(( void ))
191 /* code executed at the end of each rule */
192 #define ol_data_BREAK break;
194 #define ol_data_END_OF_BUFFER_CHAR 0
196 #ifndef ol_data_BUF_SIZE
197 #define ol_data_BUF_SIZE (ol_data_READ_BUF_SIZE * 2) /* size of default input buffer */
200 typedef struct ol_data_buffer_state *ol_data_BUFFER_STATE;
202 #define ol_data_CHAR unsigned char
204 #include <iostream.h>
212 #include "Exceptions.hh"
215 #include "SGMLName.h"
216 #include "ExprList.h"
217 #include "Expression.h"
218 #include "OL_DataExpr.tab.h"
219 #include "ContentType.h"
221 /* CurrentContentPtr is used as the communication media between
222 * ol_dataparse and ContentType::Parse()
225 ContentType *CurrentContentPtr;
228 * Forward declaration for my_input
230 static int my_input ( char *, int );
231 extern int ol_dataparse();
235 #define ol_data_INPUT(b, r, ms ) ( r=my_input( ( char *)b,ms) )
237 static char *myinput;
238 static char *myinputptr;
239 static char *myinputlim;
243 #define DBG(level) if ( dbgLevel >= level)
245 #define DBG(level) if (0)
248 static int dbgLevel = -1;
250 static short int ol_data_nxt[][256] =
252 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
253 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
254 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
255 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
256 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
257 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
258 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
259 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
260 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
261 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
263 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
264 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
265 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
266 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
267 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
268 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
269 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
270 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
271 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
272 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
274 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
275 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
276 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
277 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
278 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
281 3, 4, 4, 4, 4, 4, 4, 4, 4, 5,
282 6, 4, 4, 4, 4, 4, 4, 4, 4, 4,
283 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
284 4, 4, 5, 4, 7, 8, 4, 4, 4, 9,
285 10, 10, 4, 4, 10, 4, 4, 4, 4, 4,
286 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
287 4, 4, 4, 4, 11, 12, 4, 13, 4, 4,
288 14, 4, 4, 4, 4, 4, 4, 4, 4, 4,
289 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
290 4, 4, 4, 4, 4, 4, 4, 12, 4, 13,
292 4, 4, 14, 4, 4, 4, 4, 4, 4, 4,
293 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
294 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
295 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
296 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
297 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
298 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
299 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
300 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
301 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
303 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
304 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
305 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
306 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
307 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
310 3, 4, 4, 4, 4, 4, 4, 4, 4, 5,
311 6, 4, 4, 4, 4, 4, 4, 4, 4, 4,
312 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
313 4, 4, 5, 4, 7, 8, 4, 4, 4, 9,
314 10, 10, 4, 4, 10, 4, 4, 4, 4, 4,
315 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
316 4, 4, 4, 4, 11, 12, 4, 13, 4, 4,
317 14, 4, 4, 4, 4, 4, 4, 4, 4, 4,
318 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
319 4, 4, 4, 4, 4, 4, 4, 12, 4, 13,
321 4, 4, 14, 4, 4, 4, 4, 4, 4, 4,
322 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
323 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
324 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
325 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
326 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
327 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
328 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
329 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
330 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
332 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
333 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
334 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
335 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
336 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
339 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
340 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
341 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
342 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
343 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
344 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
345 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
346 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
347 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
348 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
350 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
351 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
352 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
353 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
354 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
355 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
356 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
357 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
358 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
359 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
361 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
362 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
363 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
364 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
365 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
366 -3, -3, -3, -3, -3, -3,
368 3, 15, 15, 15, 15, 15, 15, 15, 15, -4,
369 -4, 15, 15, 15, 15, 15, 15, 15, 15, 15,
370 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
371 15, 15, -4, 15, 15, 15, 15, 15, 15, 15,
372 -4, -4, 15, 15, -4, 15, 15, 15, 15, 15,
373 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
374 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
375 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
376 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
377 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
379 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
380 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
381 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
382 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
383 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
384 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
385 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
386 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
387 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
388 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
390 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
391 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
392 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
393 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
394 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
395 15, 15, 15, 15, 15, 15,
397 3, -5, -5, -5, -5, -5, -5, -5, -5, 16,
398 16, -5, -5, -5, -5, -5, -5, -5, -5, -5,
399 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
400 -5, -5, 16, -5, -5, -5, -5, -5, -5, -5,
401 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
402 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
403 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
404 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
405 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
406 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
408 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
409 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
410 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
411 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
412 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
413 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
414 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
415 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
416 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
417 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
419 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
420 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
421 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
422 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
423 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
424 -5, -5, -5, -5, -5, -5,
426 3, -6, -6, -6, -6, -6, -6, -6, -6, 16,
427 16, -6, -6, -6, -6, -6, -6, -6, -6, -6,
428 -6, -6, -6, -6, -6, -6, -6, -6, -6, -6,
429 -6, -6, 16, -6, -6, -6, -6, -6, -6, -6,
430 -6, -6, -6, -6, -6, -6, -6, -6, -6, -6,
431 -6, -6, -6, -6, -6, -6, -6, -6, -6, -6,
432 -6, -6, -6, -6, -6, -6, -6, -6, -6, -6,
433 -6, -6, -6, -6, -6, -6, -6, -6, -6, -6,
434 -6, -6, -6, -6, -6, -6, -6, -6, -6, -6,
435 -6, -6, -6, -6, -6, -6, -6, -6, -6, -6,
437 -6, -6, -6, -6, -6, -6, -6, -6, -6, -6,
438 -6, -6, -6, -6, -6, -6, -6, -6, -6, -6,
439 -6, -6, -6, -6, -6, -6, -6, -6, -6, -6,
440 -6, -6, -6, -6, -6, -6, -6, -6, -6, -6,
441 -6, -6, -6, -6, -6, -6, -6, -6, -6, -6,
442 -6, -6, -6, -6, -6, -6, -6, -6, -6, -6,
443 -6, -6, -6, -6, -6, -6, -6, -6, -6, -6,
444 -6, -6, -6, -6, -6, -6, -6, -6, -6, -6,
445 -6, -6, -6, -6, -6, -6, -6, -6, -6, -6,
446 -6, -6, -6, -6, -6, -6, -6, -6, -6, -6,
448 -6, -6, -6, -6, -6, -6, -6, -6, -6, -6,
449 -6, -6, -6, -6, -6, -6, -6, -6, -6, -6,
450 -6, -6, -6, -6, -6, -6, -6, -6, -6, -6,
451 -6, -6, -6, -6, -6, -6, -6, -6, -6, -6,
452 -6, -6, -6, -6, -6, -6, -6, -6, -6, -6,
453 -6, -6, -6, -6, -6, -6,
455 3, 17, 17, 17, 17, 17, 17, 17, 17, 18,
456 18, 17, 17, 17, 17, 17, 17, 17, 17, 17,
457 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
458 17, 17, 18, 17, 19, 17, 17, 17, 17, 17,
459 18, 18, 17, 17, 18, 17, 17, 17, 17, 17,
460 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
461 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
462 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
463 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
464 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
466 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
467 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
468 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
469 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
470 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
471 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
472 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
473 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
474 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
475 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
477 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
478 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
479 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
480 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
481 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
482 17, 17, 17, 17, 17, 17,
484 3, 15, 15, 15, 15, 15, 15, 15, 15, -8,
485 -8, 15, 15, 15, 15, 15, 15, 15, 15, 15,
486 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
487 15, 15, -8, 15, 15, 15, 15, 15, 15, 15,
488 -8, -8, 15, 15, -8, 15, 15, 15, 15, 15,
489 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
490 15, 15, 15, 15, 15, 15, 15, 20, 15, 15,
491 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
492 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
493 15, 15, 15, 15, 15, 15, 15, 15, 15, 20,
495 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
496 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
497 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
498 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
499 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
500 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
501 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
502 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
503 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
504 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
506 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
507 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
508 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
509 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
510 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
511 15, 15, 15, 15, 15, 15,
513 3, 21, 21, 21, 21, 21, 21, 21, 21, 22,
514 22, 21, 21, 21, 21, 21, 21, 21, 21, 21,
515 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
516 21, 21, 22, 21, 21, 21, 21, 21, 21, 23,
517 22, 22, 21, 21, 22, 21, 21, 21, 21, 21,
518 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
519 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
520 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
521 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
522 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
524 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
525 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
526 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
527 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
528 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
529 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
530 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
531 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
532 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
533 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
535 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
536 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
537 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
538 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
539 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
540 21, 21, 21, 21, 21, 21,
542 3, -10, -10, -10, -10, -10, -10, -10, -10, -10,
543 -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
544 -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
545 -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
546 -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
547 -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
548 -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
549 -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
550 -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
551 -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
553 -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
554 -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
555 -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
556 -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
557 -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
558 -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
559 -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
560 -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
561 -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
562 -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
564 -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
565 -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
566 -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
567 -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
568 -10, -10, -10, -10, -10, -10, -10, -10, -10, -10,
569 -10, -10, -10, -10, -10, -10,
571 3, 15, 15, 15, 15, 15, 15, 15, 15, -11,
572 -11, 15, 15, 15, 15, 15, 15, 15, 15, 15,
573 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
574 15, 15, -11, 15, 15, 15, 15, 15, 15, 15,
575 -11, -11, 15, 15, -11, 15, 15, 15, 24, 24,
576 24, 24, 24, 24, 24, 24, 24, 24, 15, 15,
577 15, 15, 15, 15, 15, 24, 24, 24, 24, 24,
578 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
579 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
580 24, 15, 15, 15, 15, 15, 15, 24, 24, 24,
582 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
583 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
584 24, 24, 24, 15, 15, 15, 15, 15, 15, 15,
585 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
586 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
587 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
588 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
589 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
590 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
591 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
593 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
594 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
595 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
596 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
597 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
598 15, 15, 15, 15, 15, 15,
600 3, 15, 15, 15, 15, 15, 15, 15, 15, -12,
601 -12, 15, 15, 15, 15, 15, 15, 15, 15, 15,
602 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
603 15, 15, -12, 15, 15, 15, 15, 15, 15, 15,
604 -12, -12, 15, 15, -12, 15, 15, 15, 15, 15,
605 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
606 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
607 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
608 15, 15, 15, 15, 25, 15, 15, 15, 15, 15,
609 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
611 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
612 15, 15, 15, 15, 15, 15, 25, 15, 15, 15,
613 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
614 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
615 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
616 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
617 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
618 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
619 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
620 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
622 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
623 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
624 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
625 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
626 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
627 15, 15, 15, 15, 15, 15,
629 3, 15, 15, 15, 15, 15, 15, 15, 15, -13,
630 -13, 15, 15, 15, 15, 15, 15, 15, 15, 15,
631 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
632 15, 15, -13, 15, 15, 15, 15, 15, 15, 15,
633 -13, -13, 15, 15, -13, 15, 15, 15, 15, 15,
634 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
635 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
636 15, 15, 15, 15, 15, 15, 15, 15, 15, 26,
637 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
638 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
640 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
641 15, 26, 15, 15, 15, 15, 15, 15, 15, 15,
642 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
643 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
644 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
645 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
646 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
647 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
648 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
649 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
651 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
652 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
653 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
654 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
655 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
656 15, 15, 15, 15, 15, 15,
658 3, 15, 15, 15, 15, 15, 15, 15, 15, -14,
659 -14, 15, 15, 15, 15, 15, 15, 15, 15, 15,
660 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
661 15, 15, -14, 15, 15, 15, 15, 15, 15, 15,
662 -14, -14, 15, 15, -14, 15, 15, 15, 15, 15,
663 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
664 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
665 15, 15, 15, 27, 15, 15, 15, 15, 15, 15,
666 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
667 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
669 15, 15, 15, 15, 15, 27, 15, 15, 15, 15,
670 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
671 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
672 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
673 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
674 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
675 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
676 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
677 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
678 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
680 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
681 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
682 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
683 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
684 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
685 15, 15, 15, 15, 15, 15,
687 3, 15, 15, 15, 15, 15, 15, 15, 15, -15,
688 -15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
689 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
690 15, 15, -15, 15, 15, 15, 15, 15, 15, 15,
691 -15, -15, 15, 15, -15, 15, 15, 15, 15, 15,
692 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
693 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
694 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
695 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
696 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
698 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
699 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
700 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
701 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
702 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
703 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
704 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
705 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
706 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
707 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
709 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
710 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
711 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
712 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
713 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
714 15, 15, 15, 15, 15, 15,
716 3, -16, -16, -16, -16, -16, -16, -16, -16, 16,
717 16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
718 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
719 -16, -16, 16, -16, -16, -16, -16, -16, -16, -16,
720 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
721 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
722 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
723 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
724 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
725 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
727 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
728 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
729 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
730 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
731 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
732 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
733 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
734 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
735 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
736 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
738 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
739 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
740 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
741 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
742 -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
743 -16, -16, -16, -16, -16, -16,
745 3, 17, 17, 17, 17, 17, 17, 17, 17, 18,
746 18, 17, 17, 17, 17, 17, 17, 17, 17, 17,
747 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
748 17, 17, 18, 17, 19, 17, 17, 17, 17, 17,
749 18, 18, 17, 17, 18, 17, 17, 17, 17, 17,
750 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
751 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
752 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
753 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
754 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
756 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
757 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
758 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
759 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
760 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
761 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
762 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
763 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
764 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
765 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
767 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
768 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
769 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
770 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
771 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
772 17, 17, 17, 17, 17, 17,
774 3, 18, 18, 18, 18, 18, 18, 18, 18, 18,
775 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
776 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
777 18, 18, 18, 18, 28, 18, 18, 18, 18, 18,
778 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
779 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
780 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
781 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
782 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
783 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
785 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
786 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
787 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
788 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
789 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
790 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
791 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
792 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
793 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
794 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
796 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
797 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
798 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
799 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
800 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
801 18, 18, 18, 18, 18, 18,
803 3, 15, 15, 15, 15, 15, 15, 15, 15, -19,
804 -19, 15, 15, 15, 15, 15, 15, 15, 15, 15,
805 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
806 15, 15, -19, 15, 15, 15, 15, 15, 15, 15,
807 -19, -19, 15, 15, -19, 15, 15, 15, 15, 15,
808 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
809 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
810 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
811 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
812 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
814 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
815 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
816 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
817 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
818 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
819 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
820 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
821 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
822 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
823 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
825 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
826 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
827 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
828 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
829 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
830 15, 15, 15, 15, 15, 15,
832 3, 15, 15, 15, 15, 15, 15, 15, 15, -20,
833 -20, 15, 15, 15, 15, 15, 15, 15, 15, 15,
834 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
835 15, 15, -20, 15, 15, 15, 15, 15, 15, 15,
836 -20, -20, 15, 15, -20, 15, 15, 15, 15, 15,
837 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
838 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
839 15, 15, 15, 15, 15, 15, 15, 15, 15, 29,
840 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
841 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
843 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
844 15, 29, 15, 15, 15, 15, 15, 15, 15, 15,
845 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
846 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
847 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
848 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
849 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
850 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
851 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
852 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
854 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
855 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
856 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
857 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
858 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
859 15, 15, 15, 15, 15, 15,
861 3, 21, 21, 21, 21, 21, 21, 21, 21, 22,
862 22, 21, 21, 21, 21, 21, 21, 21, 21, 21,
863 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
864 21, 21, 22, 21, 21, 21, 21, 21, 21, 23,
865 22, 22, 21, 21, 22, 21, 21, 21, 21, 21,
866 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
867 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
868 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
869 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
870 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
872 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
873 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
874 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
875 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
876 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
877 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
878 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
879 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
880 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
881 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
883 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
884 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
885 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
886 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
887 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
888 21, 21, 21, 21, 21, 21,
890 3, 22, 22, 22, 22, 22, 22, 22, 22, 22,
891 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
892 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
893 22, 22, 22, 22, 22, 22, 22, 22, 22, 30,
894 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
895 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
896 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
897 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
898 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
899 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
901 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
902 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
903 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
904 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
905 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
906 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
907 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
908 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
909 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
910 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
912 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
913 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
914 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
915 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
916 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
917 22, 22, 22, 22, 22, 22,
919 3, 15, 15, 15, 15, 15, 15, 15, 15, -23,
920 -23, 15, 15, 15, 15, 15, 15, 15, 15, 15,
921 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
922 15, 15, -23, 15, 15, 15, 15, 15, 15, 15,
923 -23, -23, 15, 15, -23, 15, 15, 15, 15, 15,
924 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
925 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
926 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
927 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
928 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
930 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
931 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
932 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
933 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
934 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
935 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
936 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
937 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
938 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
939 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
941 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
942 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
943 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
944 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
945 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
946 15, 15, 15, 15, 15, 15,
948 3, 15, 15, 15, 15, 15, 15, 15, 15, -24,
949 -24, 15, 15, 15, 15, 15, 15, 15, 15, 15,
950 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
951 15, 15, -24, 15, 15, 15, 15, 15, 15, 15,
952 -24, -24, 15, 15, -24, 15, 15, 15, 24, 24,
953 24, 24, 24, 24, 24, 24, 24, 24, 15, 15,
954 15, 15, 15, 15, 15, 24, 24, 24, 24, 24,
955 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
956 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
957 24, 15, 15, 15, 15, 15, 15, 24, 24, 24,
959 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
960 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
961 24, 24, 24, 15, 15, 15, 15, 15, 15, 15,
962 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
963 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
964 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
965 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
966 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
967 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
968 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
970 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
971 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
972 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
973 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
974 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
975 15, 15, 15, 15, 15, 15,
977 3, 15, 15, 15, 15, 15, 15, 15, 15, -25,
978 -25, 15, 15, 15, 15, 15, 15, 15, 15, 15,
979 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
980 15, 15, -25, 15, 15, 15, 15, 15, 15, 15,
981 -25, -25, 15, 15, -25, 15, 15, 15, 15, 15,
982 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
983 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
984 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
985 15, 15, 15, 15, 31, 15, 15, 15, 15, 15,
986 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
988 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
989 15, 15, 15, 15, 15, 15, 31, 15, 15, 15,
990 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
991 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
992 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
993 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
994 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
995 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
996 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
997 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
999 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1000 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1001 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1002 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1003 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1004 15, 15, 15, 15, 15, 15,
1006 3, 15, 15, 15, 15, 15, 15, 15, 15, -26,
1007 -26, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1008 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1009 15, 15, -26, 15, 15, 15, 15, 15, 15, 15,
1010 -26, -26, 15, 15, -26, 15, 15, 15, 15, 15,
1011 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1012 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1013 15, 15, 15, 15, 15, 15, 15, 15, 32, 15,
1014 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1015 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1017 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1018 32, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1019 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1020 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1021 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1022 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1023 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1024 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1025 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1026 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1028 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1029 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1030 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1031 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1032 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1033 15, 15, 15, 15, 15, 15,
1035 3, 15, 15, 15, 15, 15, 15, 15, 15, -27,
1036 -27, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1037 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1038 15, 15, -27, 15, 15, 15, 15, 15, 15, 15,
1039 -27, -27, 15, 15, -27, 15, 15, 15, 15, 15,
1040 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1041 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1042 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1043 15, 15, 33, 15, 15, 15, 15, 15, 15, 15,
1044 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1046 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1047 15, 15, 15, 15, 33, 15, 15, 15, 15, 15,
1048 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1049 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1050 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1051 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1052 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1053 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1054 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1055 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1057 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1058 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1059 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1060 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1061 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1062 15, 15, 15, 15, 15, 15,
1064 3, -28, -28, -28, -28, -28, -28, -28, -28, -28,
1065 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
1066 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
1067 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
1068 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
1069 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
1070 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
1071 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
1072 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
1073 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
1075 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
1076 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
1077 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
1078 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
1079 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
1080 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
1081 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
1082 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
1083 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
1084 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
1086 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
1087 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
1088 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
1089 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
1090 -28, -28, -28, -28, -28, -28, -28, -28, -28, -28,
1091 -28, -28, -28, -28, -28, -28,
1093 3, 15, 15, 15, 15, 15, 15, 15, 15, -29,
1094 -29, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1095 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1096 15, 15, -29, 15, 15, 15, 15, 15, 15, 15,
1097 -29, -29, 15, 15, -29, 15, 15, 15, 15, 15,
1098 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1099 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1100 15, 15, 15, 15, 15, 15, 15, 15, 34, 15,
1101 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1102 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1104 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1105 34, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1106 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1107 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1108 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1109 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1110 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1111 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1112 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1113 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1115 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1116 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1117 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1118 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1119 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1120 15, 15, 15, 15, 15, 15,
1122 3, -30, -30, -30, -30, -30, -30, -30, -30, -30,
1123 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
1124 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
1125 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
1126 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
1127 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
1128 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
1129 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
1130 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
1131 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
1133 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
1134 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
1135 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
1136 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
1137 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
1138 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
1139 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
1140 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
1141 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
1142 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
1144 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
1145 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
1146 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
1147 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
1148 -30, -30, -30, -30, -30, -30, -30, -30, -30, -30,
1149 -30, -30, -30, -30, -30, -30,
1151 3, 15, 15, 15, 15, 15, 15, 15, 15, -31,
1152 -31, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1153 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1154 15, 15, -31, 15, 15, 15, 15, 15, 15, 15,
1155 -31, -31, 15, 15, -31, 15, 15, 15, 15, 15,
1156 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1157 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1158 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1159 15, 15, 35, 15, 15, 15, 15, 15, 15, 15,
1160 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1162 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1163 15, 15, 15, 15, 35, 15, 15, 15, 15, 15,
1164 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1165 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1166 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1167 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1168 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1169 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1170 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1171 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1173 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1174 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1175 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1176 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1177 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1178 15, 15, 15, 15, 15, 15,
1180 3, 15, 15, 15, 15, 15, 15, 15, 15, -32,
1181 -32, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1182 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1183 15, 15, -32, 15, 15, 15, 15, 15, 15, 15,
1184 -32, -32, 15, 15, -32, 15, 15, 15, 15, 15,
1185 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1186 15, 15, 15, 15, 15, 15, 15, 36, 15, 15,
1187 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1188 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1189 15, 15, 15, 15, 15, 15, 15, 15, 15, 36,
1191 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1192 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1193 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1194 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1195 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1196 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1197 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1198 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1199 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1200 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1202 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1203 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1204 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1205 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1206 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1207 15, 15, 15, 15, 15, 15,
1209 3, 15, 15, 15, 15, 15, 15, 15, 15, -33,
1210 -33, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1211 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1212 15, 15, -33, 15, 15, 15, 15, 15, 15, 15,
1213 -33, -33, 15, 15, -33, 15, 15, 15, 15, 15,
1214 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1215 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1216 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1217 15, 15, 15, 37, 15, 15, 15, 15, 15, 15,
1218 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1220 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1221 15, 15, 15, 15, 15, 37, 15, 15, 15, 15,
1222 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1223 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1224 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1225 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1226 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1227 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1228 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1229 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1231 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1232 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1233 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1234 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1235 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1236 15, 15, 15, 15, 15, 15,
1238 3, 15, 15, 15, 15, 15, 15, 15, 15, -34,
1239 -34, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1240 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1241 15, 15, -34, 15, 15, 15, 15, 15, 15, 15,
1242 -34, -34, 15, 15, -34, 15, 15, 15, 15, 15,
1243 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1244 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1245 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1246 15, 15, 15, 15, 38, 15, 15, 15, 15, 15,
1247 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1249 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1250 15, 15, 15, 15, 15, 15, 38, 15, 15, 15,
1251 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1252 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1253 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1254 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1255 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1256 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1257 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1258 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1260 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1261 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1262 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1263 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1264 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1265 15, 15, 15, 15, 15, 15,
1267 3, 15, 15, 15, 15, 15, 15, 15, 15, -35,
1268 -35, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1269 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1270 15, 15, -35, 15, 15, 15, 15, 15, 15, 15,
1271 -35, -35, 15, 15, -35, 15, 15, 15, 15, 15,
1272 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1273 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1274 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1275 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1276 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1278 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1279 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1280 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1281 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1282 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1283 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1284 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1285 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1286 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1287 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1289 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1290 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1291 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1292 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1293 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1294 15, 15, 15, 15, 15, 15,
1296 3, 15, 15, 15, 15, 15, 15, 15, 15, -36,
1297 -36, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1298 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1299 15, 15, -36, 15, 15, 15, 15, 15, 15, 15,
1300 -36, -36, 15, 15, -36, 15, 15, 15, 15, 15,
1301 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1302 15, 15, 15, 15, 15, 39, 15, 15, 15, 15,
1303 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1304 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1305 15, 15, 15, 15, 15, 15, 15, 39, 15, 15,
1307 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1308 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1309 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1310 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1311 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1312 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1313 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1314 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1315 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1316 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1318 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1319 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1320 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1321 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1322 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1323 15, 15, 15, 15, 15, 15,
1325 3, 15, 15, 15, 15, 15, 15, 15, 15, -37,
1326 -37, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1327 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1328 15, 15, -37, 15, 15, 15, 15, 15, 15, 15,
1329 -37, -37, 15, 15, -37, 15, 15, 15, 15, 15,
1330 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1331 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1332 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1333 15, 15, 15, 15, 40, 15, 15, 15, 15, 15,
1334 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1336 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1337 15, 15, 15, 15, 15, 15, 40, 15, 15, 15,
1338 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1339 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1340 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1341 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1342 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1343 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1344 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1345 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1347 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1348 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1349 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1350 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1351 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1352 15, 15, 15, 15, 15, 15,
1354 3, 15, 15, 15, 15, 15, 15, 15, 15, -38,
1355 -38, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1356 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1357 15, 15, -38, 15, 15, 15, 15, 15, 15, 15,
1358 -38, -38, 15, 15, -38, 15, 15, 15, 15, 15,
1359 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1360 15, 15, 15, 15, 15, 15, 15, 15, 15, 41,
1361 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1362 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1363 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1365 15, 41, 15, 15, 15, 15, 15, 15, 15, 15,
1366 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1367 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1368 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1369 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1370 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1371 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1372 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1373 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1374 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1376 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1377 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1378 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1379 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1380 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1381 15, 15, 15, 15, 15, 15,
1383 3, 15, 15, 15, 15, 15, 15, 15, 15, -39,
1384 -39, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1385 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1386 15, 15, -39, 15, 15, 15, 15, 15, 15, 15,
1387 -39, -39, 15, 15, -39, 15, 15, 15, 15, 15,
1388 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1389 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1390 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1391 15, 15, 15, 15, 42, 15, 15, 15, 15, 15,
1392 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1394 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1395 15, 15, 15, 15, 15, 15, 42, 15, 15, 15,
1396 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1397 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1398 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1399 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1400 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1401 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1402 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1403 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1405 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1406 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1407 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1408 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1409 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1410 15, 15, 15, 15, 15, 15,
1412 3, 15, 15, 15, 15, 15, 15, 15, 15, -40,
1413 -40, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1414 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1415 15, 15, -40, 15, 15, 15, 15, 15, 15, 15,
1416 -40, -40, 15, 15, -40, 15, 15, 15, 15, 15,
1417 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1418 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1419 15, 15, 15, 15, 15, 15, 15, 15, 15, 43,
1420 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1421 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1423 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1424 15, 43, 15, 15, 15, 15, 15, 15, 15, 15,
1425 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1426 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1427 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1428 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1429 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1430 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1431 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1432 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1434 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1435 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1436 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1437 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1438 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1439 15, 15, 15, 15, 15, 15,
1441 3, 15, 15, 15, 15, 15, 15, 15, 15, -41,
1442 -41, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1443 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1444 15, 15, -41, 15, 15, 15, 15, 15, 15, 15,
1445 -41, -41, 15, 15, -41, 15, 15, 15, 15, 15,
1446 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1447 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1448 15, 15, 15, 15, 15, 15, 15, 15, 44, 15,
1449 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1450 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1452 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1453 44, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1454 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1455 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1456 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1457 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1458 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1459 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1460 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1461 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1463 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1464 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1465 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1466 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1467 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1468 15, 15, 15, 15, 15, 15,
1470 3, 15, 15, 15, 15, 15, 15, 15, 15, -42,
1471 -42, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1472 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1473 15, 15, -42, 15, 15, 15, 15, 15, 15, 15,
1474 -42, -42, 15, 15, -42, 15, 15, 15, 15, 15,
1475 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1476 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1477 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1478 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1479 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1481 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1482 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1483 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1484 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1485 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1486 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1487 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1488 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1489 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1490 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1492 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1493 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1494 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1495 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1496 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1497 15, 15, 15, 15, 15, 15,
1499 3, 15, 15, 15, 15, 15, 15, 15, 15, -43,
1500 -43, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1501 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1502 15, 15, -43, 15, 15, 15, 15, 15, 15, 15,
1503 -43, -43, 15, 15, -43, 15, 15, 15, 15, 15,
1504 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1505 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1506 45, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1507 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1508 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1510 15, 15, 45, 15, 15, 15, 15, 15, 15, 15,
1511 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1512 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1513 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1514 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1515 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1516 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1517 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1518 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1519 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1521 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1522 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1523 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1524 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1525 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1526 15, 15, 15, 15, 15, 15,
1528 3, 15, 15, 15, 15, 15, 15, 15, 15, -44,
1529 -44, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1530 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1531 15, 15, -44, 15, 15, 15, 15, 15, 15, 15,
1532 -44, -44, 15, 15, -44, 15, 15, 15, 15, 15,
1533 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1534 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1535 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1536 15, 15, 15, 15, 46, 15, 15, 15, 15, 15,
1537 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1539 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1540 15, 15, 15, 15, 15, 15, 46, 15, 15, 15,
1541 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1542 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1543 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1544 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1545 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1546 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1547 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1548 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1550 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1551 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1552 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1553 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1554 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1555 15, 15, 15, 15, 15, 15,
1557 3, 15, 15, 15, 15, 15, 15, 15, 15, -45,
1558 -45, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1559 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1560 15, 15, -45, 15, 15, 15, 15, 15, 15, 15,
1561 -45, -45, 15, 15, -45, 15, 15, 15, 15, 15,
1562 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1563 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1564 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1565 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1566 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1568 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1569 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1570 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1571 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1572 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1573 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1574 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1575 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1576 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1577 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1579 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1580 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1581 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1582 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1583 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1584 15, 15, 15, 15, 15, 15,
1586 3, 15, 15, 15, 15, 15, 15, 15, 15, -46,
1587 -46, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1588 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1589 15, 15, -46, 15, 15, 15, 15, 15, 15, 15,
1590 -46, -46, 15, 15, -46, 15, 15, 15, 15, 15,
1591 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1592 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1593 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1594 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1595 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1597 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1598 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1599 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1600 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1601 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1602 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1603 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1604 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1605 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1606 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1608 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1609 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1610 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1611 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1612 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1613 15, 15, 15, 15, 15, 15
1618 /* done after the current pattern has been matched and before the
1619 * corresponding action - sets up ol_datatext
1621 #define ol_data_DO_BEFORE_ACTION \
1622 ol_datatext = ol_data_bp; \
1623 ol_dataleng = ol_data_cp - ol_data_bp; \
1624 ol_data_hold_char = *ol_data_cp; \
1625 *ol_data_cp = '\0'; \
1626 ol_data_c_buf_p = ol_data_cp;
1628 #define EOB_ACT_CONTINUE_SCAN 0
1629 #define EOB_ACT_END_OF_FILE 1
1630 #define EOB_ACT_LAST_MATCH 2
1632 /* return all but the first 'n' matched characters back to the input stream */
1633 #define ol_dataless(n) \
1636 /* undo effects of setting up ol_datatext */ \
1637 *ol_data_cp = ol_data_hold_char; \
1638 ol_data_c_buf_p = ol_data_cp = ol_data_bp + n; \
1639 ol_data_DO_BEFORE_ACTION; /* set up ol_datatext again */ \
1643 #define unput(c) ol_dataunput( c, ol_datatext )
1646 struct ol_data_buffer_state
1648 FILE *ol_data_input_file;
1650 ol_data_CHAR *ol_data_ch_buf; /* input buffer */
1651 ol_data_CHAR *ol_data_buf_pos; /* current position in input buffer */
1653 /* size of input buffer in bytes, not including room for EOB characters*/
1654 int ol_data_buf_size;
1656 /* number of characters read into ol_data_ch_buf, not including EOB characters */
1657 int ol_data_n_chars;
1659 int ol_data_eof_status; /* whether we've seen an EOF on this buffer */
1660 #define EOF_NOT_SEEN 0
1661 /* "pending" happens when the EOF has been seen but there's still
1664 #define EOF_PENDING 1
1668 static ol_data_BUFFER_STATE ol_data_current_buffer;
1670 /* we provide macros for accessing buffer states in case in the
1671 * future we want to put the buffer states in a more general
1674 #define ol_data_CURRENT_BUFFER ol_data_current_buffer
1677 /* ol_data_hold_char holds the character lost when ol_datatext is formed */
1678 static ol_data_CHAR ol_data_hold_char;
1680 static int ol_data_n_chars; /* number of characters read into ol_data_ch_buf */
1684 #ifndef ol_data_USER_ACTION
1685 #define ol_data_USER_ACTION
1688 #ifndef ol_data_USER_INIT
1689 #define ol_data_USER_INIT
1692 extern ol_data_CHAR *ol_datatext;
1693 extern int ol_dataleng;
1694 extern FILE *ol_datain, *ol_dataout;
1696 ol_data_CHAR *ol_datatext;
1699 FILE *ol_datain = (FILE *) 0, *ol_dataout = (FILE *) 0;
1701 #define ol_data_END_OF_BUFFER 13
1702 typedef int ol_data_state_type;
1703 static const short int ol_data_accept[47] =
1705 0, 0, 13, 8, 10, 10, 8, 8, 8, 9,
1706 8, 8, 8, 8, 8, 10, 8, 0, 2, 8,
1707 8, 0, 3, 1, 8, 8, 8, 2, 8, 3,
1708 8, 8, 8, 8, 4, 8, 8, 8, 8, 8,
1712 static ol_data_state_type ol_data_last_accepting_state;
1713 static ol_data_CHAR *ol_data_last_accepting_cpos;
1715 static const ol_data_state_type ol_data_NUL_trans[47] =
1717 4, 4, 0, 15, 0, 0, 17, 15, 21, 0,
1718 15, 15, 15, 15, 15, 0, 17, 18, 15, 15,
1719 21, 22, 15, 15, 15, 15, 15, 0, 15, 0,
1720 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
1721 15, 15, 15, 15, 15, 15
1724 /* the intent behind this definition is that it'll catch
1725 * any uses of REJECT which flex missed
1727 #define REJECT reject_used_but_not_detected
1728 #define ol_datamore() ol_datamore_used_but_not_detected
1729 #define ol_data_MORE_ADJ 0
1731 /* these variables are all declared out here so that section 3 code can
1734 /* points to current character in buffer */
1735 static ol_data_CHAR *ol_data_c_buf_p = (ol_data_CHAR *) 0;
1736 static int ol_data_init = 1; /* whether we need to initialize */
1737 static int ol_data_start = 0; /* start state number */
1739 /* flag which is used to allow ol_datawrap()'s to do buffer switches
1740 * instead of setting up a fresh ol_datain. A bit of a hack ...
1742 static int ol_data_did_buffer_switch_on_eof;
1744 static ol_data_state_type ol_data_get_previous_state ol_data_PROTO(( void ));
1745 static ol_data_state_type ol_data_try_NUL_trans ol_data_PROTO(( ol_data_state_type current_state ));
1746 static int ol_data_get_next_buffer ol_data_PROTO(( void ));
1747 static void ol_dataunput ol_data_PROTO(( ol_data_CHAR c, ol_data_CHAR *buf_ptr ));
1748 void ol_datarestart ol_data_PROTO(( FILE *input_file ));
1749 void ol_data_switch_to_buffer ol_data_PROTO(( ol_data_BUFFER_STATE new_buffer ));
1750 void ol_data_load_buffer_state ol_data_PROTO(( void ));
1751 ol_data_BUFFER_STATE ol_data_create_buffer ol_data_PROTO(( FILE *file, int size ));
1752 void ol_data_delete_buffer ol_data_PROTO(( ol_data_BUFFER_STATE b ));
1753 void ol_data_init_buffer ol_data_PROTO(( ol_data_BUFFER_STATE b, FILE *file ));
1755 #define ol_data_new_buffer ol_data_create_buffer
1758 static int ol_datainput ol_data_PROTO(( void ));
1760 static int input ol_data_PROTO(( void ));
1765 register ol_data_state_type ol_data_current_state;
1766 register ol_data_CHAR *ol_data_cp, *ol_data_bp;
1767 register int ol_data_act;
1776 if ( ! ol_data_start )
1777 ol_data_start = 1; /* first start state */
1783 ol_dataout = stdout;
1785 if ( ol_data_current_buffer )
1786 ol_data_init_buffer( ol_data_current_buffer, ol_datain );
1788 ol_data_current_buffer = ol_data_create_buffer( ol_datain, ol_data_BUF_SIZE );
1790 ol_data_load_buffer_state();
1795 while ( 1 ) /* loops until end-of-file is reached */
1797 ol_data_cp = ol_data_c_buf_p;
1799 /* support of ol_datatext */
1800 *ol_data_cp = ol_data_hold_char;
1802 /* ol_data_bp points to the position in ol_data_ch_buf of the start of the
1805 ol_data_bp = ol_data_cp;
1807 ol_data_current_state = ol_data_start;
1809 while ( (ol_data_current_state = ol_data_nxt[ol_data_current_state][*ol_data_cp]) > 0 )
1811 if ( ol_data_accept[ol_data_current_state] )
1813 ol_data_last_accepting_state = ol_data_current_state;
1814 ol_data_last_accepting_cpos = ol_data_cp;
1820 ol_data_current_state = -ol_data_current_state;
1822 ol_data_find_action:
1823 ol_data_act = ol_data_accept[ol_data_current_state];
1825 ol_data_DO_BEFORE_ACTION;
1826 ol_data_USER_ACTION;
1828 do_action: /* this label is used only to access EOF actions */
1831 switch ( ol_data_act )
1833 case 0: /* must backtrack */
1834 /* undo the effects of ol_data_DO_BEFORE_ACTION */
1835 *ol_data_cp = ol_data_hold_char;
1836 ol_data_cp = ol_data_last_accepting_cpos + 1;
1837 ol_data_current_state = ol_data_last_accepting_state;
1838 goto ol_data_find_action;
1842 ol_datalval.name = SGMLName::intern((const char *)ol_datatext+1 ,1);
1843 return( Reference );
1848 if ( *(ol_datatext + 1) != '"' ) {
1849 // get rid of the 2 quotes
1850 int len = strlen(( const char *)ol_datatext)-2;
1851 char *lit_str = new char [ len + 1 ];
1853 (const char *)ol_datatext + 1,
1856 *(lit_str + len) = '\0';
1857 ol_datalval.string = lit_str;
1860 ol_datalval.string = 0;
1863 DBG(50) cerr << "(DEBUG) literal \"string\" = "
1864 << ol_datalval.string << endl;
1871 if ( *(ol_datatext + 1) != '\'' ) {
1872 // get rid of the 2 quotes
1873 int len = strlen(( const char *)ol_datatext)-2;
1874 char *lit_str = new char [ len + 1 ];
1876 (const char *)ol_datatext + 1,
1879 *(lit_str + len) = '\0';
1880 ol_datalval.string = lit_str;
1884 ol_datalval.string = 0;
1887 DBG(50) cerr << "(DEBUG) literal 'string' = "
1888 << ol_datalval.string << endl;
1897 { return( Concat ); }
1900 { return( FirstOf); }
1903 { return( Content ); }
1907 ol_datalval.name = SGMLName::intern((const char *)ol_datatext,1);
1908 DBG(10) cerr << "(DEBUG) matches"
1909 << (char *)SGMLName::lookup(ol_datalval.name)
1916 DBG(10) cerr << "(DEBUG) matches"
1917 << (char *)ol_datatext
1919 return ( ol_datatext[0] );
1928 "Syntax error in value expression"));
1933 ol_data_FATAL_ERROR( "flex scanner jammed" );
1935 case ol_data_STATE_EOF(INITIAL):
1938 case ol_data_END_OF_BUFFER:
1940 /* amount of text matched not including the EOB char */
1941 int ol_data_amount_of_matched_text = ol_data_cp - ol_datatext - 1;
1943 /* undo the effects of ol_data_DO_BEFORE_ACTION */
1944 *ol_data_cp = ol_data_hold_char;
1946 /* note that here we test for ol_data_c_buf_p "<=" to the position
1947 * of the first EOB in the buffer, since ol_data_c_buf_p will
1948 * already have been incremented past the NUL character
1949 * (since all states make transitions on EOB to the end-
1950 * of-buffer state). Contrast this with the test in ol_datainput().
1952 if ( ol_data_c_buf_p <= &ol_data_current_buffer->ol_data_ch_buf[ol_data_n_chars] )
1953 /* this was really a NUL */
1955 ol_data_state_type ol_data_next_state;
1957 ol_data_c_buf_p = ol_datatext + ol_data_amount_of_matched_text;
1959 ol_data_current_state = ol_data_get_previous_state();
1961 /* okay, we're now positioned to make the
1962 * NUL transition. We couldn't have
1963 * ol_data_get_previous_state() go ahead and do it
1964 * for us because it doesn't know how to deal
1965 * with the possibility of jamming (and we
1966 * don't want to build jamming into it because
1967 * then it will run more slowly)
1970 ol_data_next_state = ol_data_try_NUL_trans( ol_data_current_state );
1972 ol_data_bp = ol_datatext + ol_data_MORE_ADJ;
1974 if ( ol_data_next_state )
1976 /* consume the NUL */
1977 ol_data_cp = ++ol_data_c_buf_p;
1978 ol_data_current_state = ol_data_next_state;
1984 ol_data_cp = ol_data_c_buf_p;
1985 goto ol_data_find_action;
1989 else switch ( ol_data_get_next_buffer() )
1991 case EOB_ACT_END_OF_FILE:
1993 ol_data_did_buffer_switch_on_eof = 0;
1995 if ( ol_datawrap() )
1997 /* note: because we've taken care in
1998 * ol_data_get_next_buffer() to have set up ol_datatext,
1999 * we can now set up ol_data_c_buf_p so that if some
2000 * total hoser (like flex itself) wants
2001 * to call the scanner after we return the
2002 * ol_data_NULL, it'll still work - another ol_data_NULL
2003 * will get returned.
2005 ol_data_c_buf_p = ol_datatext + ol_data_MORE_ADJ;
2007 ol_data_act = ol_data_STATE_EOF((ol_data_start - 1) / 2);
2013 if ( ! ol_data_did_buffer_switch_on_eof )
2019 case EOB_ACT_CONTINUE_SCAN:
2020 ol_data_c_buf_p = ol_datatext + ol_data_amount_of_matched_text;
2022 ol_data_current_state = ol_data_get_previous_state();
2024 ol_data_cp = ol_data_c_buf_p;
2025 ol_data_bp = ol_datatext + ol_data_MORE_ADJ;
2028 case EOB_ACT_LAST_MATCH:
2030 &ol_data_current_buffer->ol_data_ch_buf[ol_data_n_chars];
2032 ol_data_current_state = ol_data_get_previous_state();
2034 ol_data_cp = ol_data_c_buf_p;
2035 ol_data_bp = ol_datatext + ol_data_MORE_ADJ;
2036 goto ol_data_find_action;
2043 printf( "action # %d\n", ol_data_act );
2045 ol_data_FATAL_ERROR(
2046 "fatal flex scanner internal error--no action found" );
2052 /* ol_data_get_next_buffer - try to read in a new buffer
2055 * int ol_data_get_next_buffer();
2057 * returns a code representing an action
2058 * EOB_ACT_LAST_MATCH -
2059 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2060 * EOB_ACT_END_OF_FILE - end of file
2063 static int ol_data_get_next_buffer()
2066 register ol_data_CHAR *dest = ol_data_current_buffer->ol_data_ch_buf;
2067 register ol_data_CHAR *source = ol_datatext - 1; /* copy prev. char, too */
2068 register int number_to_move, i;
2071 if ( ol_data_c_buf_p > &ol_data_current_buffer->ol_data_ch_buf[ol_data_n_chars + 1] )
2072 ol_data_FATAL_ERROR(
2073 "fatal flex scanner internal error--end of buffer missed" );
2075 /* try to read more data */
2077 /* first move last chars to start of buffer */
2078 number_to_move = ol_data_c_buf_p - ol_datatext;
2080 for ( i = 0; i < number_to_move; ++i )
2081 *(dest++) = *(source++);
2083 if ( ol_data_current_buffer->ol_data_eof_status != EOF_NOT_SEEN )
2084 /* don't do the read, it's not guaranteed to return an EOF,
2087 ol_data_n_chars = 0;
2091 int num_to_read = ol_data_current_buffer->ol_data_buf_size - number_to_move - 1;
2093 if ( num_to_read > ol_data_READ_BUF_SIZE )
2094 num_to_read = ol_data_READ_BUF_SIZE;
2096 else if ( num_to_read <= 0 )
2097 ol_data_FATAL_ERROR( "fatal error - scanner input buffer overflow" );
2099 /* read in more data */
2100 ol_data_INPUT( (&ol_data_current_buffer->ol_data_ch_buf[number_to_move]),
2101 ol_data_n_chars, num_to_read );
2104 if ( ol_data_n_chars == 0 )
2106 if ( number_to_move == 1 )
2108 ret_val = EOB_ACT_END_OF_FILE;
2109 ol_data_current_buffer->ol_data_eof_status = EOF_DONE;
2114 ret_val = EOB_ACT_LAST_MATCH;
2115 ol_data_current_buffer->ol_data_eof_status = EOF_PENDING;
2120 ret_val = EOB_ACT_CONTINUE_SCAN;
2122 ol_data_n_chars += number_to_move;
2123 ol_data_current_buffer->ol_data_ch_buf[ol_data_n_chars] = ol_data_END_OF_BUFFER_CHAR;
2124 ol_data_current_buffer->ol_data_ch_buf[ol_data_n_chars + 1] = ol_data_END_OF_BUFFER_CHAR;
2126 /* ol_datatext begins at the second character in ol_data_ch_buf; the first
2127 * character is the one which preceded it before reading in the latest
2128 * buffer; it needs to be kept around in case it's a newline, so
2129 * ol_data_get_previous_state() will have with '^' rules active
2132 ol_datatext = &ol_data_current_buffer->ol_data_ch_buf[1];
2138 /* ol_data_get_previous_state - get the state just before the EOB char was reached
2141 * ol_data_state_type ol_data_get_previous_state();
2144 static ol_data_state_type ol_data_get_previous_state()
2147 register ol_data_state_type ol_data_current_state;
2148 register ol_data_CHAR *ol_data_cp;
2150 ol_data_current_state = ol_data_start;
2152 for ( ol_data_cp = ol_datatext + ol_data_MORE_ADJ; ol_data_cp < ol_data_c_buf_p; ++ol_data_cp )
2156 ol_data_current_state = ol_data_nxt[ol_data_current_state][*ol_data_cp];
2159 ol_data_current_state = ol_data_NUL_trans[ol_data_current_state];
2160 if ( ol_data_accept[ol_data_current_state] )
2162 ol_data_last_accepting_state = ol_data_current_state;
2163 ol_data_last_accepting_cpos = ol_data_cp;
2167 return ( ol_data_current_state );
2171 /* ol_data_try_NUL_trans - try to make a transition on the NUL character
2174 * next_state = ol_data_try_NUL_trans( current_state );
2177 #ifdef ol_data_USE_PROTOS
2178 static ol_data_state_type ol_data_try_NUL_trans( register ol_data_state_type ol_data_current_state )
2180 static ol_data_state_type ol_data_try_NUL_trans( ol_data_current_state )
2181 register ol_data_state_type ol_data_current_state;
2185 register int ol_data_is_jam;
2186 register ol_data_CHAR *ol_data_cp = ol_data_c_buf_p;
2188 ol_data_current_state = ol_data_NUL_trans[ol_data_current_state];
2189 ol_data_is_jam = (ol_data_current_state == 0);
2191 if ( ! ol_data_is_jam )
2193 if ( ol_data_accept[ol_data_current_state] )
2195 ol_data_last_accepting_state = ol_data_current_state;
2196 ol_data_last_accepting_cpos = ol_data_cp;
2200 return ( ol_data_is_jam ? 0 : ol_data_current_state );
2204 #ifdef ol_data_USE_PROTOS
2205 static void ol_dataunput( ol_data_CHAR c, register ol_data_CHAR *ol_data_bp )
2207 static void ol_dataunput( c, ol_data_bp )
2209 register ol_data_CHAR *ol_data_bp;
2213 register ol_data_CHAR *ol_data_cp = ol_data_c_buf_p;
2215 /* undo effects of setting up ol_datatext */
2216 *ol_data_cp = ol_data_hold_char;
2218 if ( ol_data_cp < ol_data_current_buffer->ol_data_ch_buf + 2 )
2219 { /* need to shift things up to make room */
2220 register int number_to_move = ol_data_n_chars + 2; /* +2 for EOB chars */
2221 register ol_data_CHAR *dest =
2222 &ol_data_current_buffer->ol_data_ch_buf[ol_data_current_buffer->ol_data_buf_size + 2];
2223 register ol_data_CHAR *source =
2224 &ol_data_current_buffer->ol_data_ch_buf[number_to_move];
2226 while ( source > ol_data_current_buffer->ol_data_ch_buf )
2227 *--dest = *--source;
2229 ol_data_cp += dest - source;
2230 ol_data_bp += dest - source;
2231 ol_data_n_chars = ol_data_current_buffer->ol_data_buf_size;
2233 if ( ol_data_cp < ol_data_current_buffer->ol_data_ch_buf + 2 )
2234 ol_data_FATAL_ERROR( "flex scanner push-back overflow" );
2237 if ( ol_data_cp > ol_data_bp && ol_data_cp[-1] == '\n' )
2238 ol_data_cp[-2] = '\n';
2242 /* note: the formal parameter *must* be called "ol_data_bp" for this
2243 * macro to now work correctly
2245 ol_data_DO_BEFORE_ACTION; /* set up ol_datatext again */
2250 static int ol_datainput()
2257 ol_data_CHAR *ol_data_cp = ol_data_c_buf_p;
2259 *ol_data_cp = ol_data_hold_char;
2261 if ( *ol_data_c_buf_p == ol_data_END_OF_BUFFER_CHAR )
2263 /* ol_data_c_buf_p now points to the character we want to return.
2264 * If this occurs *before* the EOB characters, then it's a
2265 * valid NUL; if not, then we've hit the end of the buffer.
2267 if ( ol_data_c_buf_p < &ol_data_current_buffer->ol_data_ch_buf[ol_data_n_chars] )
2268 /* this was really a NUL */
2269 *ol_data_c_buf_p = '\0';
2272 { /* need more input */
2273 ol_datatext = ol_data_c_buf_p;
2276 switch ( ol_data_get_next_buffer() )
2278 case EOB_ACT_END_OF_FILE:
2280 if ( ol_datawrap() )
2282 ol_data_c_buf_p = ol_datatext + ol_data_MORE_ADJ;
2289 return ( ol_datainput() );
2296 case EOB_ACT_CONTINUE_SCAN:
2297 ol_data_c_buf_p = ol_datatext + ol_data_MORE_ADJ;
2300 case EOB_ACT_LAST_MATCH:
2302 ol_data_FATAL_ERROR( "unexpected last match in ol_datainput()" );
2304 ol_data_FATAL_ERROR( "unexpected last match in input()" );
2310 c = *ol_data_c_buf_p;
2311 ol_data_hold_char = *++ol_data_c_buf_p;
2317 #ifdef ol_data_USE_PROTOS
2318 void ol_datarestart( FILE *input_file )
2320 void ol_datarestart( input_file )
2325 ol_data_init_buffer( ol_data_current_buffer, input_file );
2326 ol_data_load_buffer_state();
2330 #ifdef ol_data_USE_PROTOS
2331 void ol_data_switch_to_buffer( ol_data_BUFFER_STATE new_buffer )
2333 void ol_data_switch_to_buffer( new_buffer )
2334 ol_data_BUFFER_STATE new_buffer;
2338 if ( ol_data_current_buffer == new_buffer )
2341 if ( ol_data_current_buffer )
2343 /* flush out information for old buffer */
2344 *ol_data_c_buf_p = ol_data_hold_char;
2345 ol_data_current_buffer->ol_data_buf_pos = ol_data_c_buf_p;
2346 ol_data_current_buffer->ol_data_n_chars = ol_data_n_chars;
2349 ol_data_current_buffer = new_buffer;
2350 ol_data_load_buffer_state();
2352 /* we don't actually know whether we did this switch during
2353 * EOF (ol_datawrap()) processing, but the only time this flag
2354 * is looked at is after ol_datawrap() is called, so it's safe
2355 * to go ahead and always set it.
2357 ol_data_did_buffer_switch_on_eof = 1;
2361 #ifdef ol_data_USE_PROTOS
2362 void ol_data_load_buffer_state( void )
2364 void ol_data_load_buffer_state()
2368 ol_data_n_chars = ol_data_current_buffer->ol_data_n_chars;
2369 ol_datatext = ol_data_c_buf_p = ol_data_current_buffer->ol_data_buf_pos;
2370 ol_datain = ol_data_current_buffer->ol_data_input_file;
2371 ol_data_hold_char = *ol_data_c_buf_p;
2375 #ifdef ol_data_USE_PROTOS
2376 ol_data_BUFFER_STATE ol_data_create_buffer( FILE *file, int size )
2378 ol_data_BUFFER_STATE ol_data_create_buffer( file, size )
2384 ol_data_BUFFER_STATE b;
2386 b = (ol_data_BUFFER_STATE) malloc( sizeof( struct ol_data_buffer_state ) );
2389 ol_data_FATAL_ERROR( "out of dynamic memory in ol_data_create_buffer()" );
2391 b->ol_data_buf_size = size;
2393 /* ol_data_ch_buf has to be 2 characters longer than the size given because
2394 * we need to put in 2 end-of-buffer characters.
2396 b->ol_data_ch_buf = (ol_data_CHAR *) malloc( (unsigned) (b->ol_data_buf_size + 2) );
2398 if ( ! b->ol_data_ch_buf )
2399 ol_data_FATAL_ERROR( "out of dynamic memory in ol_data_create_buffer()" );
2401 ol_data_init_buffer( b, file );
2407 #ifdef ol_data_USE_PROTOS
2408 void ol_data_delete_buffer( ol_data_BUFFER_STATE b )
2410 void ol_data_delete_buffer( b )
2411 ol_data_BUFFER_STATE b;
2415 if ( b == ol_data_current_buffer )
2416 ol_data_current_buffer = (ol_data_BUFFER_STATE) 0;
2418 free( (char *) b->ol_data_ch_buf );
2423 #ifdef ol_data_USE_PROTOS
2424 void ol_data_init_buffer( ol_data_BUFFER_STATE b, FILE *file )
2426 void ol_data_init_buffer( b, file )
2427 ol_data_BUFFER_STATE b;
2432 b->ol_data_input_file = file;
2434 /* we put in the '\n' and start reading from [1] so that an
2435 * initial match-at-newline will be true.
2438 b->ol_data_ch_buf[0] = '\n';
2439 b->ol_data_n_chars = 1;
2441 /* we always need two end-of-buffer characters. The first causes
2442 * a transition to the end-of-buffer state. The second causes
2443 * a jam in that state.
2445 b->ol_data_ch_buf[1] = ol_data_END_OF_BUFFER_CHAR;
2446 b->ol_data_ch_buf[2] = ol_data_END_OF_BUFFER_CHAR;
2448 b->ol_data_buf_pos = &b->ol_data_ch_buf[1];
2450 b->ol_data_eof_status = EOF_NOT_SEEN;
2455 my_input ( char *buf, int max_size )
2458 int remain = myinputlim - myinputptr;
2459 int n = ( max_size > remain ? remain : max_size );
2462 memcpy ( buf, myinputptr, n );
2468 //--------------------------------------------------------------
2470 ol_dataerror(char *str)
2472 throw(Unexpected(form("Syntax error in %s", myinput)));
2475 //--------------------------------------------------------------
2476 ContentType::ContentType()
2479 dbgStr = getenv ("OL_DEBUG");
2480 dbgLevel = ( dbgStr ? atoi ( dbgStr ) : 0 );
2484 //--------------------------------------------------------------
2485 ContentType::~ContentType()
2488 OL_Expression *eptr = exprlist;
2490 OL_Expression *tmp = eptr;
2496 //--------------------------------------------------------------
2498 ContentType::Parse( char *str )
2501 DBG(10) cerr << "(DEBUG) ContentType::Parse() str = " << str << endl;
2505 myinputlim = str + strlen(str);
2507 CurrentContentPtr = this;
2512 ol_datarestart(NULL);
2515 //--------------------------------------------------------------
2517 ContentType::init( OL_Expression *expr )
2519 assert(expr != NULL);
2523 * The same as CONCAT
2525 ExprList *elist = new ExprList( expr );
2526 OL_Expression *new_expr = new OL_Expression ( CONCAT, -1, elist );
2527 assert(new_expr != NULL);
2529 exprlist = new_expr;