modules/up/src/rpsl/rpsl/rpsl.l.cc

/* [<][>]
[^][v][top][bottom][index][help] */

FUNCTIONS

This source file includes following functions.
  1. YY_PROTO
  2. YY_PROTO
  3. YY_SC_TO_UI
  4. YY_STATE_EOF
  5. yyless
  6. unput
  7. yy_set_interactive
  8. yy_set_bol
  9. YY_AT_BOL
  10. yymore
  11. YYLESS
  12. YY_INPUT
  13. yyterminate
  14. YY_FATAL_ERROR
  15. yy_get_next_buffer
  16. yy_get_previous_state
  17. yy_try_NUL_trans
  18. yyunput
  19. yyinput
  20. yyrestart
  21. yy_switch_to_buffer
  22. yy_load_buffer_state
  23. yy_create_buffer
  24. yy_delete_buffer
  25. yy_init_buffer
  26. yy_flush_buffer
  27. yy_scan_buffer
  28. yy_scan_string
  29. yy_scan_bytes
  30. yy_push_state
  31. yy_pop_state
  32. yy_top_state
  33. yy_fatal_error
  34. yyless
  35. yy_flex_strncpy
  36. yy_flex_strlen
  37. yy_flex_alloc
  38. yy_flex_realloc
  39. yy_flex_free
  40. main
  41. handle_error
  42. handle_object_error
  43. rpslerror
  44. handle_warning
  45. yy_scan_object
  46. changeCurrentAttr
  47. validIPv6
  48. validIntForPhone

   1 #define yy_create_buffer rpsl_create_buffer
   2 #define yy_delete_buffer rpsl_delete_buffer
   3 #define yy_scan_buffer rpsl_scan_buffer
   4 #define yy_scan_string rpsl_scan_string
   5 #define yy_scan_bytes rpsl_scan_bytes
   6 #define yy_flex_debug rpsl_flex_debug
   7 #define yy_init_buffer rpsl_init_buffer
   8 #define yy_flush_buffer rpsl_flush_buffer
   9 #define yy_load_buffer_state rpsl_load_buffer_state
  10 #define yy_switch_to_buffer rpsl_switch_to_buffer
  11 #define yyin rpslin
  12 #define yyleng rpslleng
  13 #define yylex rpsllex
  14 #define yyout rpslout
  15 #define yyrestart rpslrestart
  16 #define yytext rpsltext
  17 #define yywrap rpslwrap
  18 
  19 /* A lexical scanner generated by flex */
  20 
  21 /* Scanner skeleton version:
  22  * $Header: /ncc/cvsroot/ncc/RIP/modules/up/src/rpsl/rpsl/rpsl.l.cc,v 1.3 2001/04/03 09:35:10 engin Exp $
  23  */
  24 
  25 #define FLEX_SCANNER
  26 #define YY_FLEX_MAJOR_VERSION 2
  27 #define YY_FLEX_MINOR_VERSION 5
  28 
  29 #include <stdio.h>
  30 
  31 
  32 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
  33 #ifdef c_plusplus
  34 #ifndef __cplusplus
  35 #define __cplusplus
  36 #endif
  37 #endif
  38 
  39 
  40 #ifdef __cplusplus
  41 
  42 #include <stdlib.h>
  43 #include <unistd.h>
  44 
  45 /* Use prototypes in function declarations. */
  46 #define YY_USE_PROTOS
  47 
  48 /* The "const" storage-class-modifier is valid. */
  49 #define YY_USE_CONST
  50 
  51 #else   /* ! __cplusplus */
  52 
  53 #if __STDC__
  54 
  55 #define YY_USE_PROTOS
  56 #define YY_USE_CONST
  57 
  58 #endif  /* __STDC__ */
  59 #endif  /* ! __cplusplus */
  60 
  61 #ifdef __TURBOC__
  62  #pragma warn -rch
  63  #pragma warn -use
  64 #include <io.h>
  65 #include <stdlib.h>
  66 #define YY_USE_CONST
  67 #define YY_USE_PROTOS
  68 #endif
  69 
  70 #ifdef YY_USE_CONST
  71 #define yyconst const
  72 #else
  73 #define yyconst
  74 #endif
  75 
  76 
  77 #ifdef YY_USE_PROTOS
  78 #define YY_PROTO(proto) proto
     /* [<][>][^][v][top][bottom][index][help] */
  79 #else
  80 #define YY_PROTO(proto) ()
     /* [<][>][^][v][top][bottom][index][help] */
  81 #endif
  82 
  83 /* Returned upon end-of-file. */
  84 #define YY_NULL 0
  85 
  86 /* Promotes a possibly negative, possibly signed char to an unsigned
  87  * integer for use as an array index.  If the signed char is negative,
  88  * we want to instead treat it as an 8-bit unsigned char, hence the
  89  * double cast.
  90  */
  91 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
     /* [<][>][^][v][top][bottom][index][help] */
  92 
  93 /* Enter a start condition.  This macro really ought to take a parameter,
  94  * but we do it the disgusting crufty way forced on us by the ()-less
  95  * definition of BEGIN.
  96  */
  97 #define BEGIN yy_start = 1 + 2 *
  98 
  99 /* Translate the current start state into a value that can be later handed
 100  * to BEGIN to return to the state.  The YYSTATE alias is for lex
 101  * compatibility.
 102  */
 103 #define YY_START ((yy_start - 1) / 2)
 104 #define YYSTATE YY_START
 105 
 106 /* Action number for EOF rule of a given start state. */
 107 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
     /* [<][>][^][v][top][bottom][index][help] */
 108 
 109 /* Special action meaning "start processing a new file". */
 110 #define YY_NEW_FILE yyrestart( yyin )
 111 
 112 #define YY_END_OF_BUFFER_CHAR 0
 113 
 114 /* Size of default input buffer. */
 115 #define YY_BUF_SIZE 16384
 116 
 117 typedef struct yy_buffer_state *YY_BUFFER_STATE;
 118 
 119 extern int yyleng;
 120 extern FILE *yyin, *yyout;
 121 
 122 #define EOB_ACT_CONTINUE_SCAN 0
 123 #define EOB_ACT_END_OF_FILE 1
 124 #define EOB_ACT_LAST_MATCH 2
 125 
 126 /* The funky do-while in the following #define is used to turn the definition
 127  * int a single C statement (which needs a semi-colon terminator).  This
 128  * avoids problems with code like:
 129  *
 130  *      if ( condition_holds )
 131  *              yyless( 5 );
 132  *      else
 133  *              do_something_else();
 134  *
 135  * Prior to using the do-while the compiler would get upset at the
 136  * "else" because it interpreted the "if" statement as being all
 137  * done when it reached the ';' after the yyless() call.
 138  */
 139 
 140 /* Return all but the first 'n' matched characters back to the input stream. */
 141 
 142 #define yyless(n) \
     /* [<][>][^][v][top][bottom][index][help] */
 143         do \
 144                 { \
 145                 /* Undo effects of setting up yytext. */ \
 146                 *yy_cp = yy_hold_char; \
 147                 YY_RESTORE_YY_MORE_OFFSET \
 148                 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
 149                 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
 150                 } \
 151         while ( 0 )
 152 
 153 #define unput(c) yyunput( c, yytext_ptr )
     /* [<][>][^][v][top][bottom][index][help] */
 154 
 155 /* The following is because we cannot portably get our hands on size_t
 156  * (without autoconf's help, which isn't available because we want
 157  * flex-generated scanners to compile on their own).
 158  */
 159 typedef unsigned int yy_size_t;
 160 
 161 
 162 struct yy_buffer_state
 163         {
 164         FILE *yy_input_file;
 165 
 166         char *yy_ch_buf;                /* input buffer */
 167         char *yy_buf_pos;               /* current position in input buffer */
 168 
 169         /* Size of input buffer in bytes, not including room for EOB
 170          * characters.
 171          */
 172         yy_size_t yy_buf_size;
 173 
 174         /* Number of characters read into yy_ch_buf, not including EOB
 175          * characters.
 176          */
 177         int yy_n_chars;
 178 
 179         /* Whether we "own" the buffer - i.e., we know we created it,
 180          * and can realloc() it to grow it, and should free() it to
 181          * delete it.
 182          */
 183         int yy_is_our_buffer;
 184 
 185         /* Whether this is an "interactive" input source; if so, and
 186          * if we're using stdio for input, then we want to use getc()
 187          * instead of fread(), to make sure we stop fetching input after
 188          * each newline.
 189          */
 190         int yy_is_interactive;
 191 
 192         /* Whether we're considered to be at the beginning of a line.
 193          * If so, '^' rules will be active on the next match, otherwise
 194          * not.
 195          */
 196         int yy_at_bol;
 197 
 198         /* Whether to try to fill the input buffer when we reach the
 199          * end of it.
 200          */
 201         int yy_fill_buffer;
 202 
 203         int yy_buffer_status;
 204 #define YY_BUFFER_NEW 0
 205 #define YY_BUFFER_NORMAL 1
 206         /* When an EOF's been seen but there's still some text to process
 207          * then we mark the buffer as YY_EOF_PENDING, to indicate that we
 208          * shouldn't try reading from the input source any more.  We might
 209          * still have a bunch of tokens to match, though, because of
 210          * possible backing-up.
 211          *
 212          * When we actually see the EOF, we change the status to "new"
 213          * (via yyrestart()), so that the user can continue scanning by
 214          * just pointing yyin at a new input file.
 215          */
 216 #define YY_BUFFER_EOF_PENDING 2
 217         };
 218 
 219 static YY_BUFFER_STATE yy_current_buffer = 0;
 220 
 221 /* We provide macros for accessing buffer states in case in the
 222  * future we want to put the buffer states in a more general
 223  * "scanner state".
 224  */
 225 #define YY_CURRENT_BUFFER yy_current_buffer
 226 
 227 
 228 /* yy_hold_char holds the character lost when yytext is formed. */
 229 static char yy_hold_char;
 230 
 231 static int yy_n_chars;          /* number of characters read into yy_ch_buf */
 232 
 233 
 234 int yyleng;
 235 
 236 /* Points to current character in buffer. */
 237 static char *yy_c_buf_p = (char *) 0;
 238 static int yy_init = 1;         /* whether we need to initialize */
 239 static int yy_start = 0;        /* start state number */
 240 
 241 /* Flag which is used to allow yywrap()'s to do buffer switches
 242  * instead of setting up a fresh yyin.  A bit of a hack ...
 243  */
 244 static int yy_did_buffer_switch_on_eof;
 245 
 246 void yyrestart YY_PROTO(( FILE *input_file ));
 247 
 248 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
 249 void yy_load_buffer_state YY_PROTO(( void ));
 250 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
 251 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
 252 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
 253 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
 254 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
 255 
 256 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
 257 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
 258 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
 259 
 260 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
 261 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
 262 static void yy_flex_free YY_PROTO(( void * ));
 263 
 264 #define yy_new_buffer yy_create_buffer
 265 
 266 #define yy_set_interactive(is_interactive) \
     /* [<][>][^][v][top][bottom][index][help] */
 267         { \
 268         if ( ! yy_current_buffer ) \
 269                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
 270         yy_current_buffer->yy_is_interactive = is_interactive; \
 271         }
 272 
 273 #define yy_set_bol(at_bol) \
     /* [<][>][^][v][top][bottom][index][help] */
 274         { \
 275         if ( ! yy_current_buffer ) \
 276                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
 277         yy_current_buffer->yy_at_bol = at_bol; \
 278         }
 279 
 280 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
     /* [<][>][^][v][top][bottom][index][help] */
 281 
 282 
 283 #define YY_USES_REJECT
 284 typedef unsigned char YY_CHAR;
 285 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
 286 typedef int yy_state_type;
 287 extern char *yytext;
 288 #define yytext_ptr yytext
 289 
 290 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
 291 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
 292 static int yy_get_next_buffer YY_PROTO(( void ));
 293 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
 294 
 295 /* Done after the current pattern has been matched and before the
 296  * corresponding action - sets up yytext.
 297  */
 298 #define YY_DO_BEFORE_ACTION \
 299         yytext_ptr = yy_bp; \
 300         yyleng = (int) (yy_cp - yy_bp); \
 301         yy_hold_char = *yy_cp; \
 302         *yy_cp = '\0'; \
 303         yy_c_buf_p = yy_cp;
 304 
 305 #define YY_NUM_RULES 60
 306 #define YY_END_OF_BUFFER 61
 307 static yyconst short int yy_acclist[742] =
 308     {   0,
 309        61,    4,   60,   60,    3,    4,   60,    4,   60,    2,
 310        60,    4,   60,   58,   59,   60,   49,   60,   48,   59,
 311        60,   59,   60,   47,   60,   11,   47,   60,   10,   60,
 312        47,   60,   12,   47,   60,   47,   60,   46,   47,   60,
 313        46,   47,   60,   46,   47,   60,   47,   60,   13,   60,
 314        11,   13,   60,   12,   13,   60,   14,   60,   11,   60,
 315        12,   14,   60,   40,   60,   11,   40,   60,   10,   60,
 316        20,   40,   60,   12,   40,   60,   40,   60,   40,   60,
 317        40,   60,   40,   60,   40,   60,   17,   40,   60,   40,
 318        60,   36,   40,   60,   36,   40,   60,   40,   60,   36,
 319 
 320        40,   60,   36,   40,   60,   36,   40,   60,   36,   40,
 321        60,   36,   40,   60,    7,   60,    6,   60,    7,   60,
 322         5,    6,   60,   40,   60,   17,   40,   60,   40,   60,
 323         3,    2,    1,   58,   57,   50,   51,   57,   51,   57,
 324        55,   57,   56,   57,   52,   57,   54,   57,   53,   57,
 325        11,    9,    9,    8,   46,   12,   13,   11,   13,   12,
 326        13,   14,   12,   14,    9,    8,   12,   12,   12,   17,
 327        17,   19,   17,   36,   26,   36,   26,   36,   36,   26,
 328        36,   26,   36,   26,   36,   26,   36,   26,   36,   26,
 329        36,   26,   36,   26,   36,   26,   36,   26,   36,    7,
 330 
 331         7,    5,   17,   42,   41,   43,   50,   51,   51,   10,
 332        12,   12,   12,   12,   19,   38,   19,   38,   19,   19,
 333        38,   38,   17,   18,   36,   37,   38,   36,   36,   26,
 334        26,   36,   26,   36,   26,   36,   26,   36,   26,   36,
 335        26,   36,   26,   26,   27,   36,   26,   36,   26,   36,
 336        26,   36,   26,   36,   26,   36,   26,   36,   26,   26,
 337        36,   26,   36,   45,   17,   50,   51,   12,   12,   12,
 338        12,   38,   19,   19,   19,   38,   38,   38,   17,   18,
 339        23,   23,   38,   37,   38,   37,   38,   36,   36,   26,
 340        36,   26,   36,   26,   36,   26,   36,   26,   36,   26,
 341 
 342        36,   26,   36,   26,   36,   26,   36,   26,   36,   26,
 343        36,   26,   28,   36,   26,   28,   36,   26,   27,   36,
 344        26,   36,   26,   36,   26,   36,   26,   36,   26,   36,
 345        26,   36,   26,   29,   36,   26,   29,   36,   26,   36,
 346        26,   33,   36,   17,   44,   39,   39,   12,   39,   12,
 347        39,   19,   38,   19,   38,   19,   19,   19,   38,   38,
 348        19,   38,   38,   19,   38,   17,   18,   23,   23,   23,
 349        37,   38,   37,   38,   37,   38,   37,   38,   36,   26,
 350        36,   26,   36,   26,   36,   26,   36,   26,   27,   36,
 351        26,   26,   34,   36,   26,   26,   36,   26,   36,   26,
 352 
 353        26,   17,   12,   19,   19,   38,   38,   19,   38,   38,
 354        19,   38,   17,   18,   37,   38,   37,   38,   36,   26,
 355        36,   26,   36,   26,   36,   26,   36,   26,   27,   36,
 356        26,   36,   26,   32,   36,   26,   32,   36,   26,   36,
 357        26,   36,   26,   31,   36,   26,   31,   36,   26,   30,
 358        36,   26,   30,   36,   17,   39,   39,   39,   12,   39,
 359        19,   19,   21,   38,   38,   38,   19,   38,   38,   19,
 360        38,   17,   18,   37,   38,   37,   38,   36,   26,   36,
 361        26,   36,   26,   36,   26,   36,   26,   27,   36,   36,
 362        26,   17,   12,   19,   19,   21,   38,   38,   38,   19,
 363 
 364        38,   38,   19,   38,   17,   37,   38,   37,   38,   36,
 365        26,   36,   26,   36,   26,   36,   26,   36,   28,   26,
 366        27,   36,   28,   29,   26,   36,   36,   26,   36,   29,
 367        17,   39,   39,   12,   39,   19,   19,   38,   24,   21,
 368        38,   38,   19,   38,   38,   19,   38,   17,   37,   38,
 369        37,   38,   36,   26,   36,   26,   36,   26,   36,   28,
 370        27,   36,   26,   36,   36,   26,   36,   29,   19,   19,
 371        38,   24,   21,   38,   38,   19,   38,   38,   19,   38,
 372        17,   37,   38,   37,   38,   36,   26,   36,   26,   36,
 373        27,   36,   32,   31,   30,   26,   36,   32,   36,   26,
 374 
 375        36,   31,   30,   39,   19,   19,   38,   24,   25,   25,
 376        21,   38,   38,   19,   38,   38,   19,   38,   17,   37,
 377        38,   37,   38,   36,   26,   36,   28,   27,   36,   36,
 378        26,   36,   29,   19,   19,   38,   24,   21,   38,   38,
 379        19,   38,   38,   19,   38,   17,   37,   38,   37,   38,
 380        36,   26,   36,   27,   36,   36,   26,   36,   16,   16,
 381        19,   16,   16,   19,   16,   16,   16,   16,   38,   16,
 382        16,   24,   25,   16,   16,   21,   38,   16,   16,   38,
 383        16,   16,   19,   38,   16,   38,   16,   19,   38,   16,
 384        16,   17,   16,   16,   37,   38,   16,   37,   38,   16,
 385 
 386        16,   36,   16,   26,   36,   16,   27,   36,   32,   32,
 387        36,   26,   36,   31,   31,   30,   30,   19,   24,   21,
 388        38,   38,   19,   38,   17,   27,   36,   36,   26,   36,
 389        35,   36,   26,   35,   36,   22,   22,   22,   22,   22,
 390        15
 391     } ;
 392 
 393 static yyconst short int yy_accept[832] =
 394     {   0,
 395         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 396         1,    1,    1,    1,    1,    1,    1,    2,    4,    5,
 397         8,   10,   12,   14,   17,   19,   22,   24,   26,   29,
 398        31,   33,   36,   38,   41,   44,   47,   49,   51,   54,
 399        57,   59,   61,   64,   66,   69,   71,   74,   77,   79,
 400        81,   83,   85,   87,   90,   92,   95,   98,  100,  103,
 401       106,  109,  112,  115,  117,  119,  121,  124,  126,  129,
 402       131,  132,  132,  133,  133,  133,  134,  135,  136,  139,
 403       141,  143,  145,  147,  149,  151,  152,  153,  154,  155,
 404       156,  157,  157,  157,  158,  160,  162,  163,  165,  165,
 405 
 406       165,  165,  166,  167,  167,  168,  169,  170,  170,  171,
 407       171,  171,  172,  172,  173,  173,  173,  173,  174,  174,
 408       174,  174,  174,  174,  174,  175,  175,  177,  179,  180,
 409       180,  182,  184,  186,  188,  190,  192,  194,  196,  198,
 410       200,  201,  202,  203,  203,  204,  205,  206,  207,  209,
 411       210,  210,  211,  211,  211,  211,  211,  211,  212,  213,
 412       214,  215,  216,  217,  219,  219,  219,  220,  220,  220,
 413       220,  220,  222,  223,  223,  224,  224,  224,  225,  225,
 414       225,  225,  225,  226,  228,  228,  229,  230,  231,  233,
 415       235,  237,  239,  241,  243,  244,  247,  249,  251,  253,
 416 
 417       255,  257,  259,  260,  262,  264,  265,  266,  266,  268,
 418       268,  268,  268,  268,  268,  269,  270,  271,  272,  272,
 419       273,  273,  273,  274,  274,  274,  274,  275,  275,  275,
 420       275,  275,  277,  278,  279,  279,  279,  280,  280,  280,
 421       281,  281,  281,  282,  283,  283,  283,  283,  284,  286,
 422       288,  288,  289,  290,  292,  294,  296,  298,  300,  302,
 423       304,  306,  308,  310,  312,  313,  315,  318,  321,  321,
 424       323,  325,  327,  329,  331,  333,  334,  336,  339,  341,
 425       344,  345,  346,  347,  348,  348,  348,  350,  352,  352,
 426       353,  354,  356,  356,  357,  358,  358,  359,  359,  359,
 427 
 428       359,  360,  361,  361,  363,  364,  364,  366,  366,  367,
 429       367,  368,  368,  368,  369,  370,  371,  371,  371,  373,
 430       375,  377,  379,  379,  380,  382,  384,  386,  388,  388,
 431       388,  391,  391,  391,  391,  391,  392,  395,  396,  398,
 432       400,  401,  401,  401,  402,  403,  403,  403,  403,  404,
 433       404,  405,  405,  406,  406,  406,  406,  406,  407,  408,
 434       408,  408,  410,  411,  413,  413,  414,  414,  414,  415,
 435       415,  415,  415,  415,  415,  415,  417,  419,  419,  420,
 436       422,  424,  426,  428,  428,  428,  431,  431,  431,  431,
 437       431,  431,  431,  433,  434,  436,  439,  441,  443,  444,
 438 
 439       446,  449,  449,  449,  449,  450,  452,  455,  456,  457,
 440       458,  459,  461,  461,  462,  462,  463,  463,  463,  463,
 441       465,  466,  466,  467,  467,  467,  469,  470,  472,  472,
 442       473,  473,  474,  474,  474,  474,  474,  476,  478,  478,
 443       479,  481,  483,  485,  487,  487,  487,  490,  490,  490,
 444       490,  490,  490,  490,  490,  491,  491,  491,  492,  492,
 445       492,  492,  492,  492,  492,  492,  493,  493,  493,  494,
 446       494,  495,  495,  496,  496,  496,  496,  496,  496,  498,
 447       499,  499,  500,  500,  502,  503,  505,  505,  506,  506,
 448       506,  506,  506,  506,  506,  506,  508,  510,  510,  511,
 449 
 450       513,  515,  517,  519,  519,  520,  520,  523,  523,  524,
 451       524,  524,  524,  524,  525,  525,  527,  527,  527,  527,
 452       528,  530,  530,  530,  531,  531,  531,  531,  531,  531,
 453       532,  533,  534,  536,  536,  537,  537,  538,  538,  538,
 454       538,  539,  540,  540,  540,  542,  542,  543,  543,  545,
 455       546,  548,  548,  548,  549,  549,  549,  549,  549,  549,
 456       551,  553,  553,  554,  556,  558,  560,  560,  561,  561,
 457       563,  563,  563,  563,  563,  565,  565,  565,  565,  566,
 458       568,  568,  568,  568,  568,  568,  569,  569,  569,  569,
 459       569,  569,  570,  570,  571,  571,  571,  571,  571,  572,
 460 
 461       573,  573,  573,  575,  575,  576,  576,  578,  579,  581,
 462       581,  581,  582,  582,  582,  582,  582,  582,  582,  582,
 463       584,  586,  586,  587,  589,  591,  591,  593,  593,  594,
 464       594,  594,  595,  595,  596,  598,  599,  599,  599,  600,
 465       602,  603,  603,  603,  603,  604,  604,  604,  605,  605,
 466       606,  606,  607,  607,  607,  607,  608,  608,  609,  610,
 467       611,  611,  613,  613,  614,  614,  616,  617,  619,  619,
 468       619,  620,  620,  620,  620,  620,  620,  622,  624,  624,
 469       625,  627,  628,  630,  630,  630,  631,  633,  633,  633,
 470       634,  634,  634,  634,  635,  635,  636,  636,  636,  636,
 471 
 472       636,  637,  638,  638,  638,  640,  640,  641,  641,  643,
 473       644,  646,  646,  646,  647,  647,  647,  647,  647,  647,
 474       647,  647,  649,  651,  651,  652,  654,  656,  656,  656,
 475       657,  659,  659,  659,  659,  659,  660,  662,  663,  665,
 476       666,  667,  668,  670,  671,  673,  674,  675,  678,  679,
 477       681,  682,  685,  687,  690,  690,  691,  693,  694,  694,
 478       694,  694,  694,  697,  700,  701,  703,  706,  709,  709,
 479       710,  711,  712,  714,  715,  715,  716,  717,  717,  718,
 480       719,  720,  720,  722,  722,  723,  723,  725,  725,  725,
 481       726,  726,  726,  726,  726,  726,  726,  728,  729,  731,
 482 
 483       731,  731,  731,  731,  731,  733,  736,  736,  736,  736,
 484       736,  736,  736,  736,  737,  738,  738,  738,  738,  739,
 485       740,  741,  741,  741,  741,  741,  741,  741,  741,  742,
 486       742
 487     } ;
 488 
 489 static yyconst int yy_ec[256] =
 490     {   0,
 491         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
 492         1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
 493         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 494         1,    2,    5,    6,    7,    1,    1,    1,    1,    8,
 495         9,   10,   11,   12,   13,   14,   15,   16,   17,   18,
 496        19,   19,   19,   19,   19,   20,   21,   22,   12,   23,
 497        24,   25,    1,   26,   35,   36,   37,   37,   38,   39,
 498        40,   41,   41,   41,   42,   43,   41,   44,   45,   46,
 499        41,   47,   48,   49,   50,   41,   41,   41,   51,   41,
 500        29,   30,   31,   32,   33,   34,   35,   36,   37,   37,
 501 
 502        38,   39,   40,   41,   41,   41,   42,   43,   41,   44,
 503        45,   46,   41,   47,   48,   49,   50,   41,   41,   41,
 504        51,   41,    1,    1,    1,    1,    1,    1,    1,    1,
 505         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 506         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 507         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 508         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 509         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 510         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 511         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 512 
 513         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 514         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 515         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 516         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 517         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
 518         1,    1,    1,    1,    1
 519     } ;
 520 
 521 static yyconst int yy_meta[52] =
 522     {   0,
 523         1,    2,    3,    4,    1,    5,    1,    6,    6,    1,
 524         7,    6,    8,    9,   10,   11,   11,   11,   11,   11,
 525        11,   12,    6,    1,    6,   13,   14,   15,    6,    5,
 526         6,    1,   16,    1,   14,   14,   14,   17,   14,   15,
 527        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
 528        15
 529     } ;
 530 
 531 static yyconst short int yy_base[996] =
 532     {   0,
 533         0,    6,    8,    9,   56,   84,   14,   20,   28,   70,
 534       113,    0, 1905,    2,  151,  170, 1904,11787,11787,    0,
 535        80,11787,    7,    0,11787,11787,  187,11787,   24,   99,
 536      1878,    0, 1882,   13, 1864,   51, 1856,    0,   98,    0,
 537         0,  171,  172,   64,  175,  207,    0,  235,11787,  253,
 538       279,  176,  330,  364, 1863,  415,  451,  234,  130,   61,
 539       172,   63, 1836,    0,11787,  196,11787,  331,  463,  480,
 540         0,  213,11787,  207,  255,11787,    0,11787,  486,  492,
 541     11787,11787,11787,11787,11787,  220,  306,11787,11787,11787,
 542         0, 1857, 1825,    0,  223,    0,    0,  226,   79, 1832,
 543 
 544       513,  187,  249, 1847,  563,  593,  624,  660,    0,  562,
 545       686,    0,    0,  736,  774,  808,  842,  893,  929,  955,
 546       962, 1836, 1001, 1035, 1086,  592, 1137, 1173, 1197,  725,
 547       745, 1791, 1794, 1785, 1784, 1773, 1773, 1793, 1756, 1735,
 548         0,  355,11787, 1769,  751,  320,  346,  265,  773,  807,
 549       391,11787,  347, 1236,  941, 1758, 1742, 1286, 1317,  974,
 550      1752, 1367, 1003,  745,    0,  300, 1404, 1441, 1462, 1496,
 551      1530, 1564, 1614,  800, 1652, 1690, 1697, 1721, 1185, 1733,
 552      1209,  220, 1760, 1794, 1828, 1879, 1915, 1954, 2005, 2056,
 553      2092,    0,    0, 2116, 2155, 1285, 1701, 1697, 1684, 1676,
 554 
 555      1680, 1681, 2206, 1672, 1667,    0, 1356, 2247, 1378, 1393,
 556      1669, 2268, 2302, 1410, 1418, 1663, 2336, 1430, 2386, 2423,
 557         0,  681, 2443, 2480,  799, 1461,  833, 2501, 2535, 2569,
 558      2603, 2653, 1497, 2690, 1529, 1027, 2711, 2749, 1642, 2756,
 559      1634, 1603, 1620, 1626,  317,    0, 2795, 2846, 2880, 2914,
 560      2948, 2999, 3033, 3067, 3118, 1709, 1733, 1760, 1794, 1927,
 561      2104, 2128, 2268, 1632, 3169, 3220,  269, 2392, 1343, 3242,
 562       243, 1637,  410,  249, 1635, 3264, 3315,  354, 1616, 1614,
 563      2375, 3336, 3362, 3396, 1612, 2401, 3430, 2412, 3468, 3481,
 564      3507,    0,    0, 2432, 3557, 3594, 1026, 3615, 3649, 3683,
 565 
 566      3717, 2451, 1611, 3767, 3804, 2459, 1487, 1488, 3825, 3863,
 567      3870, 2469, 1595,11787, 2500, 1384,  402,  470, 3909,    0,
 568      3943, 3977, 4011, 4062, 4096, 2534, 2568, 2642, 4147,  307,
 569      2659, 1547, 1546,  497,  133, 4181, 2666, 4232, 2769, 2846,
 570      4283, 4322,  704, 4373, 2679, 2882,    0, 2914, 3364,    0,
 571      4423, 4460, 1521, 4481, 4515, 4549, 4583, 3546, 3565, 2999,
 572      3033, 4633, 4670, 1647, 1556, 4691, 3220, 4729, 3571, 1565,
 573      1554, 1537,  500,  521,    0, 4751, 4785, 4819, 4870, 4904,
 574      3315, 3583, 3614, 1509, 1517, 3648, 3682, 1502, 1504, 1494,
 575      1523, 1480, 4955,    0, 5006,  405, 3756, 3776,    0, 5040,
 576 
 577       424, 1476, 1483, 1464,    0, 5074,  503, 3782, 3793, 1494,
 578      1473, 3882,    0, 5107, 5144, 1785, 5165, 5199, 5233, 5267,
 579      3910,  231, 5305, 3945, 1469, 5325, 5362, 1819, 1786, 5383,
 580      5421, 3977, 1452, 1449,  569,  599, 5443, 5477, 5511, 5562,
 581      5596, 4062, 4147, 4320, 4329, 1432, 4412,  462, 4429, 1421,
 582      1419, 1416,  557, 1407, 5647, 5698,  649, 5732, 5783,  320,
 583      4436, 1403, 1357, 5817,  770, 4449, 4482, 4514, 4550,    0,
 584      5850, 5887, 2293, 5908, 5942, 5976, 6010, 4622, 6044, 6095,
 585       462, 4641, 4649, 6128, 6165, 2297, 2527, 6186, 6236, 1292,
 586      1288, 1277,  693,  694,    0, 6258, 6292, 6326, 6377, 6411,
 587 
 588         0, 4659, 4751,  587, 4785, 1250, 4870,  747,  817, 1283,
 589      1256, 1254,  763,  974, 1248, 6436, 1200, 1201, 1185, 6487,
 590      6525, 1173,  735, 5096, 1160,  818, 1151, 1160, 1119,  385,
 591      5115, 1148, 5006,    0, 6563, 6600, 2526, 6621, 6655, 6689,
 592      6723, 6744, 6776, 1117, 6797,  559, 5123, 5040, 6817, 6854,
 593      2560,  517, 2595, 6875, 6913, 1123, 1121,  814,  849, 6935,
 594      6969, 6977, 7028, 7062,    0, 5074,  889, 1209, 1106, 7113,
 595       972, 1091, 1031, 1082, 7138, 5133, 1068, 1073, 7174, 7198,
 596      5164, 1060, 1048, 1055, 1133, 1431, 5198, 1050, 1019, 5232,
 597         0, 7236, 7273, 2594, 7294, 7328, 7362, 7396, 7430, 5315,
 598 
 599      7454, 5332, 5339, 5351, 5445, 5479, 7479, 7516, 2871, 5562,
 600      2872, 7537, 7575, 1035, 1025, 1021,  850,  901,    0, 7597,
 601      7631, 7665, 7716, 7750,    0,  984, 7801, 1207, 1471, 1004,
 602      1225, 1539, 1232, 1769, 7837, 5839,  971,  966, 7861, 7885,
 603      5856,  962,  946,  906, 5863,  877,  870,  891,    0, 7923,
 604      7960, 2905, 7981, 8015, 8049, 8083, 8117, 8138, 1365, 8158,
 605       869, 8171,  589, 5876, 5698, 8191, 8228, 2939,  877, 2940,
 606      8249, 8287,  875,  873,  948,  988, 8309, 8343, 8351, 8402,
 607      8436,  851, 8487,  854,  819, 8523, 8547,  813,  807,  773,
 608       751,  765,    0, 8585, 8622, 3024, 8643, 8677, 8711, 8745,
 609 
 610      8779, 5907, 5941, 5783, 5976, 6012, 6097, 6117, 8812, 8849,
 611      3058, 5817, 3025, 8870, 8908,  726,  695,  689, 1094, 1145,
 612         0, 8930, 8964, 8998, 9049, 9083, 9134, 1280,  642, 9170,
 613      9194,  634, 1472,  569, 1506,11787,  795, 3357, 6134, 6143,
 614      9221, 1366, 9242, 9276, 9298, 6226,  574, 9317,  938, 6154,
 615      6258, 9337, 9374, 3387, 6292, 3388, 9395, 9433,  576,  565,
 616      1244, 1418, 9455, 9489, 9497, 9533, 9557, 6377, 1540, 1803,
 617       546, 9581, 9605,  520, 1648, 2248,  516, 1731, 2302, 1056,
 618         0,  442,    0, 1182, 6537, 6449,    0,  422, 6552,    0,
 619       418,  399,  348, 1571, 1660,    0, 6569, 9629, 9653, 6576,
 620 
 621       314,  286, 1747,  270,    0,    0, 6589,  237, 6620,  217,
 622      1835,  170,  696, 6654, 6688,  151,   53, 3502,11787, 6723,
 623      1399,   50,   47, 6750, 6776,    3, 6806, 6823,11787,11787,
 624      9692, 9709, 9726, 9743, 9760, 9777, 9794, 9804, 9821, 9838,
 625      9855, 9872, 9889, 9906, 9923, 9940, 9957, 9974, 9983,10000,
 626     10017,10034,10051,10060,10077,10094,10102,10119,10136,10145,
 627     10162,10179,10187,10204,10221,10231,10240,10256,10267,10284,
 628     10291,10299,10306,10323,10340,10357,10374,10391,10408,10425,
 629     10435,10452,10461,10478,10495,10502,10510,10518,10535,10552,
 630     10562,10571,10588,10605,10612,10619,10627,10634,10651,10668,
 631 
 632     10685,10702,10719,10728,10745,10762,10769,10776,10784,10792,
 633     10809,10826,10836,10846,10855,10872,10889,10906,10913,10920,
 634     10928,10935,10952,10969,10979,10989,10998,11015,11032,11049,
 635     11065,11066,11073,11081,11089,11106,11123,11133,11143,11153,
 636     11162,11179,11196,11213,11230,11237,11244,11252,11259,11276,
 637     11293,11302,11319,11336,11353,11360,11367,11375,11383,11400,
 638     11417,11426,11443,11460,11477,11484,11491,11499,11506,11523,
 639     11540,11550,11560,11570,11586,11602,11613,11630,11637,11644,
 640     11652,11660,11677,11684,11691,11699,11706,11713,11721,11729,
 641     11737,11745,11753,11761,11769
 642 
 643     } ;
 644 
 645 static yyconst short int yy_def[996] =
 646     {   0,
 647       831,  831,  832,  832,  833,  833,  834,  834,  835,  835,
 648       830,   11,  836,  836,   11,   11,  830,  830,  830,  837,
 649       830,  830,  838,  839,  830,  830,  840,  830,  830,  830,
 650       830,  841,  830,  830,  830,  830,  830,  842,  842,  843,
 651       844,  830,  845,  846,  830,  846,  847,  848,  830,  846,
 652       830,  849,  850,  830,  830,  830,   56,   51,   56,   56,
 653        57,   57,   57,  851,  830,  851,  830,  849,   54,   50,
 654       837,  830,  830,  838,  838,  830,  839,  830,  830,  830,
 655       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
 656       841,  830,  830,  842,  842,  843,  844,  845,  846,  852,
 657 
 658       830,  846,  846,  847,  848,  853,  830,  852,   50,   51,
 659       830,   51,  854,  854,  855,  856,  830,  830,  830,  118,
 660       120,  857,  858,  830,  830,  119,  830,  127,  125,  111,
 661       128,  128,  127,  128,  128,  128,  128,  128,  128,  128,
 662       859,  859,  830,  854,  118,  846,  846,   70,  830,  830,
 663       830,  830,  852,  830,  101,  101,  830,  853,  830,  107,
 664       107,  852,  111,  111,  860,  830,  860,  860,  861,  861,
 665       862,  830,  172,  172,  830,  175,  176,  830,  178,  173,
 666       830,  863,  858,  864,  830,  830,  186,  830,  830,  830,
 667       190,  190,  191,  189,  830,  194,  191,  191,  191,  191,
 668 
 669       191,  191,  830,  191,  191,  860,  175,   70,  830,  154,
 670       154,  865,  865,  866,  159,  159,  830,  217,  162,  111,
 671       867,  868,  867,  867,  868,  830,  224,  869,  869,  870,
 672       830,  231,  231,  231,  231,  232,  830,  237,  238,  830,
 673       871,  240,  830,  830,  872,  873,  830,  874,  875,  875,
 674       830,  876,  876,  830,  830,  255,  255,  255,  255,  255,
 675       255,  255,  255,  255,  830,  877,  265,  255,  830,  255,
 676       270,  270,  270,  270,  270,  830,  878,  276,  270,  270,
 677       237,  879,  880,  880,  881,  881,  830,  287,  882,  882,
 678       830,  291,  883,  830,  883,  883,  296,  884,  884,  885,
 679 
 680       830,  301,  301,  301,  301,  301,  305,  304,  830,  309,
 681       830,  311,  886,  830,  830,  830,  887,  888,  874,  319,
 682       889,  889,  830,  890,  830,  325,  325,  325,  877,  830,
 683       325,  830,  830,  830,  830,  830,  325,  830,  325,  325,
 684       830,  276,  830,  830,  309,  284,  891,  891,  287,  892,
 685       892,  892,  352,  893,  893,  894,  830,  357,  357,  357,
 686       357,  357,  357,  363,  362,  830,  830,  366,  830,  830,
 687       895,  896,  830,  897,  898,  899,  899,  830,  900,  830,
 688       380,  380,  380,  830,  830,  380,  830,  830,  830,  830,
 689       830,  830,  830,  338,  901,  338,  380,  380,  341,  902,
 690 
 691       341,  830,  830,  830,  344,  903,  344,  366,  284,  891,
 692       348,  287,  904,  904,  904,  415,  905,  905,  906,  830,
 693       420,  420,  420,  423,  423,  423,  423,  427,  426,  830,
 694       430,  830,  907,  908,  909,  910,  911,  911,  830,  912,
 695       830,  441,  441,  441,  830,  830,  441,  913,  830,  830,
 696       830,  830,  914,  830,  830,  901,  830,  830,  902,  830,
 697       830,  830,  830,  903,  830,  430,  284,  348,  287,  915,
 698       915,  915,  472,  916,  916,  917,  918,  475,  830,  918,
 699       479,  480,  480,  480,  480,  485,  484,  830,  488,  830,
 700       919,  920,  830,  921,  922,  923,  923,  830,  924,  830,
 701 
 702       500,  500,  500,  925,  830,  830,  500,  913,  913,  830,
 703       830,  830,  914,  914,  830,  455,  830,  830,  830,  830,
 704       458,  830,  830,  830,  830,  926,  830,  830,  830,  488,
 705       284,  468,  287,  927,  927,  927,  536,  928,  928,  929,
 706       930,  539,  930,  542,  543,  545,  543,  543,  543,  543,
 707       550,  931,  549,  830,  554,  932,  933,  934,  935,  936,
 708       936,  543,  937,  830,  564,  564,  925,  925,  830,  830,
 709       938,  830,  939,  940,  455,  830,  830,  830,  520,  521,
 710       830,  830,  830,  830,  926,  926,  830,  830,  830,  468,
 711       941,  941,  941,  593,  942,  942,  943,  944,  944,  596,
 712 
 713       945,  596,  599,  599,  599,  599,  599,  599,  608,  830,
 714       607,  830,  612,  830,  946,  947,  830,  948,  949,  950,
 715       950,  830,  951,  830,  624,  830,  830,  938,  938,  830,
 716       939,  939,  940,  940,  579,  830,  830,  830,  579,  580,
 717       830,  830,  830,  830,  830,  830,  830,  590,  952,  952,
 718       952,  651,  953,  953,  954,  955,  955,  654,  945,  945,
 719       658,  657,  662,  657,  657,  657,  657,  667,  830,  666,
 720       830,  671,  956,  957,  958,  959,  960,  960,  657,  961,
 721       830,  830,  830,  830,  830,  579,  580,  830,  830,  830,
 722       830,  830,  962,  962,  962,  695,  963,  963,  964,  965,
 723 
 724       965,  698,  660,  698,  701,  701,  701,  701,  701,  701,
 725       710,  830,  709,  830,  714,  830,  966,  967,  830,  968,
 726       969,  970,  970,  830,  971,  830,  830,  972,  830,  579,
 727       580,  830,  973,  830,  974,  830,  975,  976,  830,  660,
 728       660,  977,  978,  978,  660,  660,  745,  744,  748,  744,
 729       744,  744,  744,  753,  830,  752,  830,  757,  979,  980,
 730       981,  982,  983,  983,  744,  579,  580,  766,  972,  972,
 731       830,  766,  580,  830,  973,  973,  830,  974,  974,  975,
 732       745,  745,  748,  748,  744,  744,  752,  830,  744,  757,
 733       830,  984,  985,  830,  986,  987,  766,  766,  580,  830,
 734 
 735       988,  989,  990,  991,  766,  767,  830,  830,  830,  992,
 736       830,  993,  830,  830,  830,  994,  995,  830,  830,  830,
 737       830,  830,  830,  830,  830,  830,  830,  830,  830,    0,
 738       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
 739       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
 740       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
 741       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
 742       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
 743       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
 744       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
 745 
 746       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
 747       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
 748       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
 749       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
 750       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
 751       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
 752       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
 753       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
 754       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
 755       830,  830,  830,  830,  830
 756 
 757     } ;
 758 
 759 static yyconst short int yy_nxt[11839] =
 760     {   0,
 761       830,  830,   19,   66,   67,   66,   20,   21,   22,   21,
 762        25,   25,   20,   26,   26,   39,   30,   39,  830,   74,
 763        40,   39,   30,   39,  827,   86,   40,   86,   76,   42,
 764        30,   42,   23,   23,   43,   92,   90,   27,   27,   74,
 765        23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
 766        23,   23,   23,   23,   23,   23,   23,   29,   30,   29,
 767        31,  181,   32,   33,  809,   31,   31,  181,   31,   31,
 768        31,   42,   30,   42,   90,   93,   43,  100,   34,   35,
 769        36,   72,   73,   72,   37,   29,   30,   29,   31,  101,
 770        32,   33,  100,   31,   31,  133,   31,   31,   31,   95,
 771 
 772        87,   95,   87,  134,  101,   88,   34,   35,   36,   89,
 773       138,  139,   37,   44,   45,   46,   45,   44,   47,   48,
 774        49,   49,   44,   50,   49,   51,   52,   53,   54,   54,
 775        54,   54,   54,   54,   55,   49,   44,   49,   44,   56,
 776        57,   49,   49,   49,   44,   58,   44,   59,   56,   56,
 777        56,   60,   57,   57,   57,   57,   57,   57,   61,   62,
 778        57,   63,   57,   57,   68,  809,   69,   69,   69,   69,
 779        69,   69,   86,   91,   86,   91,   86,  131,   86,  132,
 780       391,  392,   70,   68,  181,   69,   69,   69,   69,   69,
 781        69,  114,  114,  114,  114,  114,  114,  142,  143,  142,
 782 
 783       100,   70,   79,   79,   79,   79,   80,   80,   87,  135,
 784        87,  136,  101,  102,   72,   73,   72,  103,  137,   74,
 785       100,   86,   81,   86,   95,   82,   95,   91,  830,   91,
 786        83,  809,  101,   84,  181,   85,   91,   99,   91,   74,
 787        91,  246,   91,   91,  470,  475,   91,  130,  106,  110,
 788       110,  110,  110,  110,  110,  188,   91,   91,  793,   91,
 789       107,  188,  100,   91,   91,   91,  108,   74,  109,  109,
 790       109,  109,  109,  109,  101,   99,   76,  208,  101,   99,
 791       337,   99,  247,   99,  181,   99,  340,   74,   99,   99,
 792       330,  110,  111,   99,  112,  112,  112,  112,  112,  112,
 793 
 794       809,  166,   99,  166,  101,  110,  110,  151,  152,  151,
 795        99,  110,   99,  110,  110,  110,  110,  110,  110,  110,
 796       110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
 797        99,  181,   99,  100,   99,  793,   99,  222,  246,   99,
 798        99,  384,   99,  115,  144,  101,  114,  114,  114,  114,
 799       114,  114,  385,   99,  522,  101,  142,  143,  142,  100,
 800       100,   99,   99,   99,   99,  523,   99,  247,   99,  122,
 801        99,  101,  154,   99,   99,  343,  110,  117,  116,  118,
 802       118,  118,  118,  118,  118,  119,  830,   99,  830,  101,
 803       120,  121,  151,  152,  151,   99,  110,   99,  120,  120,
 804 
 805       120,  120,  120,  121,  121,  121,  121,  121,  121,  121,
 806       121,  121,  121,  121,  121,   99,  181,   99,  247,   99,
 807       793,   99,  188,  246,   99,   99,  457,  123,  124,  116,
 808       125,  125,  125,  125,  125,  125,  126,  247,   99,  718,
 809       101,  127,  128,  800,  339,  460,   99,  123,   99,  127,
 810       127,  127,  127,  127,  128,  128,  128,  128,  128,  128,
 811       128,  128,  128,  128,  128,  128,  129,  129,  129,  129,
 812       129,  129,  830,  153,  508,  534,  538,  128,  145,  145,
 813       145,  145,  145,  145,  181,  128,  128,  128,  128,  128,
 814       146,  375,  147,  100,  508,  148,  148,  148,  148,  148,
 815 
 816       148,  149,  149,  149,  149,  150,  150,  150,  150,  150,
 817       150,  150,  150,   99,  181,   99,  247,   99,  552,   99,
 818       552,  246,   99,   99,  465,  155,  100,   99,  156,  156,
 819       156,  156,  156,  156,  389,  181,   99,  465,  101,  155,
 820       155,  460,  375,  390,   99,  155,   99,  155,  155,  155,
 821       155,  155,  155,  155,  155,  155,  155,  155,  155,  155,
 822       155,  155,  155,  155,   91,   99,   91,  457,   91,  513,
 823        91,   91,  591,  596,   91,  130,  106,  110,  110,  110,
 824       110,  110,  110,  181,   91,   91,  793,   91,  107,  513,
 825       375,   91,   91,   91,   91,  153,   91,  718,   91,  567,
 826 
 827        91,   91,  693,  698,   91,  153,   91,  179,  179,  179,
 828       179,  179,  179,  181,   91,   91,  777,   91,  159,  567,
 829       495,   91,   91,   91,  105,   91,   99,   91,  105,   91,
 830       105,   91,   91,  105,  105,   91,  160,  106,  105,  161,
 831       161,  161,  161,  161,  161,   91,   91,  105,   91,  107,
 832       160,  160,   91,   91,   91,  105,  160,  105,  160,  160,
 833       160,  160,  160,  160,  160,  160,  160,  160,  160,  160,
 834       160,  160,  160,  160,  160,  162,  162,  162,  162,  162,
 835       162,  774,  225,  517,  225,  154,  153,  518,  153,  771,
 836       153,  226,  153,  226,  519,  153,  153,  818,  163,  818,
 837 
 838       153,  164,  164,  164,  164,  164,  164,  181,  181,  153,
 839       122,  154,  163,  163,  375,  495,  718,  153,  163,  153,
 840       163,  163,  163,  163,  163,  163,  163,  163,  163,  163,
 841       163,  163,  163,  163,  163,  163,  163,  166,  402,  166,
 842       163,  163,  163,  163,  163,  163,  166,  616,  166,  403,
 843       404,  167,  167,  167,  167,  167,  167,  195,  130,  508,
 844       196,  196,  196,  196,  196,  196,  207,  207,  207,  207,
 845       207,  207,  582,  168,  153,  513,  153,  735,  153,  508,
 846       153,  583,  220,  153,  153,  734,  153,  165,  209,  209,
 847       209,  209,  150,  150,  343,  513,  166,  153,  166,  154,
 848 
 849       225,  830,  225,  830,  527,  153,  153,  153,   99,  226,
 850        99,  226,   99,  221,   99,  528,  529,   99,   99,  733,
 851        99,  170,  150,  150,  150,  150,  150,  150,  181,  508,
 852       585,   99,  222,  101,  830,  495,  830,  233,  330,   99,
 853        99,   99,  153,  830,  153,  830,  153,  732,  153,  508,
 854       585,  153,  153,  729,  163,  165,  169,  172,  172,  172,
 855       172,  172,  172,  181,  181,  153,  728,  154,  173,  173,
 856       619,  495,  330,  153,  163,  153,  173,  173,  173,  173,
 857       173,  173,  173,  173,  173,  173,  173,  173,  173,  173,
 858       173,  173,  173,   99,  718,   99,  616,   99,  712,   99,
 859 
 860       153,  567,   99,   99,  347,  110,  174,  171,  175,  175,
 861       175,  175,  175,  175,  119,  181,   99,  692,  101,  176,
 862       177,  567,  619,  691,   99,  110,   99,  176,  176,  176,
 863       176,  176,  177,  177,  177,  177,  177,  177,  177,  177,
 864       177,  177,  177,  177,  178,  178,  178,  178,  178,  178,
 865       122,  830,  153,  690,  212,  179,  155,  155,  155,  155,
 866       155,  155,  181,  179,  179,  179,  179,  179,  180,  619,
 867       176,  176,  176,  176,  176,  176,  126,  177,  177,  177,
 868       177,  177,  177,  830,  628,  689,  513,  217,  177,  160,
 869       160,  160,  160,  160,  160,  343,  177,  177,  177,  177,
 870 
 871       177,   99,  181,   99,  628,   99,  513,   99,  688,  721,
 872        99,   99,  685,  123,  130,   99,  130,  684,  163,  163,
 873       163,  163,  163,  163,   99,  269,  101,  830,  830,  830,
 874       830,  682,   99,  123,   99,  153,  830,  153,  830,  153,
 875       293,  153,  122,  631,  153,  153,  616,  163,  165,  169,
 876       173,  173,  173,  173,  173,  173,  492,  166,  153,  166,
 877       154,  184,  184,  631,  302,  647,  153,  163,  153,  184,
 878       184,  184,  184,  184,  184,  184,  184,  184,  184,  184,
 879       184,  184,  184,  184,  184,  184,   99,  646,   99,  644,
 880        99,  643,   99,  222,  633,   99,   99,  642,  123,  185,
 881 
 882       171,  186,  186,  186,  186,  186,  186,  126,  181,   99,
 883       638,  101,  186,  187,  633,  619,  637,   99,  123,   99,
 884       186,  186,  186,  186,  186,  187,  187,  187,  187,  187,
 885       187,  187,  187,  187,  187,  187,  187,   99,  630,   99,
 886       626,   99,  616,   99,  492,  585,   99,   99,  153,  188,
 887       185,  171,  189,  189,  189,  189,  189,  189,  126,  181,
 888        99,  590,  101,  190,  191,  585,  721,  589,   99,  188,
 889        99,  192,  192,  192,  192,  192,  193,  193,  193,  193,
 890       193,  193,  193,  193,  193,  193,  193,  193,  194,  194,
 891       194,  194,  194,  194,  830,  830,  153,  588,  587,  191,
 892 
 893       242,  242,  242,  242,  242,  242,  584,  193,  193,  193,
 894       193,  193,  187,  187,  187,  187,  187,  187,  830,  628,
 895       581,  567,  578,  187,  243,  244,  243,  243,  243,  243,
 896       330,  187,  187,  187,  187,  187,  153,  631,  153,  628,
 897       153,  567,  153,  577,  633,  153,  153,  576,  210,  100,
 898       153,  211,  211,  211,  211,  211,  211,  631,  181,  153,
 899       574,  154,  210,  210,  633,  721,  573,  153,  210,  153,
 900       210,  210,  210,  210,  210,  210,  210,  210,  210,  210,
 901       210,  210,  210,  210,  210,  210,  210,   91,  153,   91,
 902       572,   91,  769,   91,   91,  571,  569,   91,  122,  106,
 903 
 904       268,  268,  268,  268,  268,  268,  269,   91,   91,  492,
 905        91,  159,  769,  372,   91,   91,   91,  158,   91,  153,
 906        91,  158,   91,  158,   91,   91,  158,  158,   91,  215,
 907       106,  158,  216,  216,  216,  216,  216,  216,   91,   91,
 908       158,   91,  159,  215,  215,   91,   91,   91,  158,  215,
 909       158,  215,  215,  215,  215,  215,  215,  215,  215,  215,
 910       215,  215,  215,  215,  215,  215,  215,  215,  166,  526,
 911       166,  281,  281,  281,  281,  281,  281,  332,  100,  100,
 912       100,  333,  162,  162,  162,  162,  162,  162,  334,  335,
 913       154,  101,  154,  150,  150,  150,  150,  150,  150,  314,
 914 
 915       314,  314,  314,  314,  219,  166,  212,  166,  210,  210,
 916       210,  210,  210,  210,  819,  819,  819,  819,  819,  223,
 917       223,  223,  223,  223,  223,  286,  286,  286,  286,  286,
 918       286,  217,  181,  215,  215,  215,  215,  215,  215,  796,
 919       525,  224,  225,  585,  225,  288,  288,  288,  288,  288,
 920       288,  226,  343,  226,  515,  512,  227,  227,  227,  227,
 921       227,  227,  153,  585,  153,  511,  153,  510,  153,  506,
 922       492,  153,  153,  372,  153,  228,  294,  294,  294,  294,
 923       294,  294,  470,  628,  775,  153,  468,  154,  830,  830,
 924       830,  830,  457,  153,  153,  153,  153,  153,  153,  163,
 925 
 926       153,  350,  153,  628,  775,  153,  153,  347,  153,  221,
 927       306,  463,  302,  302,  302,  302,  302,  302,  778,  153,
 928       462,  154,  830,  461,  830,  359,  454,  153,  153,  153,
 929        99,  830,   99,  830,   99,  453,   99,  452,  778,   99,
 930        99,  451,   99,  228,  302,  302,  302,  302,  302,  302,
 931       450,  631,  769,   99,  446,  101,  445,  830,  122,  830,
 932       460,   99,   99,   99,  153,  166,  153,  166,  153,  413,
 933       153,  631,  769,  153,  153,  372,  163,  231,  229,  232,
 934       232,  232,  232,  232,  232,  181,  241,  153,  388,  154,
 935       233,  233,  721,  421,  387,  153,  163,  153,  233,  233,
 936 
 937       233,  234,  233,  233,  233,  233,  233,  233,  233,  233,
 938       233,  233,  233,  233,  233,  830,  372,  830,  312,  312,
 939       312,  312,  312,  312,  350,  347,  188,  235,  344,  233,
 940       233,  233,  233,  233,  233,  314,  314,  314,  314,  314,
 941       314,  315,  315,  316,  314,  314,  314,  341,  830,  338,
 942       830,  233,   99,  830,   99,  122,   99,  153,   99,  163,
 943       775,   99,   99,  830,  110,  236,  230,  237,  237,  237,
 944       237,  237,  237,  119,  181,   99,  218,  101,  238,  239,
 945       775,  796,  213,   99,  110,   99,  238,  238,  238,  238,
 946       238,  239,  239,  239,  239,  239,  239,  239,  239,  239,
 947 
 948       239,  239,  239,  235,  280,  238,  238,  238,  238,  238,
 949       238,  126,  239,  239,  239,  239,  239,  239,  830,  279,
 950       275,  274,  273,  239,  324,  324,  324,  324,  324,  324,
 951       272,  239,  239,  239,  239,  239,  240,  240,  240,  240,
 952       240,  240,  241,  778,  271,  270,  221,  242,  324,  324,
 953       324,  324,  324,  324,  830,  242,  242,  242,  242,  242,
 954        99,  181,   99,  778,   99,  218,   99,  214,  796,   99,
 955        99,  213,  123,  247,   99,  327,  327,  327,  327,  327,
 956       327,  633,  206,   99,  205,  101,  830,  830,  830,  830,
 957       465,   99,  123,   99,  153,  830,  153,  830,  153,  470,
 958 
 959       153,  633,  204,  153,  153,  203,  248,  235,  229,  328,
 960       328,  328,  328,  328,  328,  769,  202,  153,  201,  154,
 961       830,  200,  830,  480,  457,  153,  248,  153,  153,  153,
 962       153,  163,  153,  199,  153,  769,  198,  153,  153,  197,
 963       163,  221,  229,  233,  233,  233,  233,  233,  233,  181,
 964       181,  153,  157,  154,  250,  250,  796,  154,   92,  153,
 965       163,  153,  250,  250,  250,  250,  250,  250,  250,  250,
 966       250,  250,  250,  250,  250,  250,  250,  250,  250,   99,
 967        90,   99,  140,   99,  122,   99,   90,   90,   99,   99,
 968        90,  123,  251,  230,  252,  252,  252,  252,  252,  252,
 969 
 970       126,   90,   99,  830,  101,  252,  253,   65,  830,  830,
 971        99,  123,   99,  252,  252,  252,  252,  252,  253,  253,
 972       253,  253,  253,  253,  253,  253,  253,  253,  253,  253,
 973       253,  253,  253,  253,  253,  253,  830,  830,  830,  830,
 974       830,  253,  328,  328,  328,  328,  328,  328,  830,  253,
 975       253,  253,  253,  253,   99,  830,   99,  830,   99,  830,
 976        99,  830,  830,   99,   99,  830,  188,  130,   99,  183,
 977       183,  183,  183,  183,  183,  830,  830,   99,  830,  101,
 978       183,  183,  830,  830,  830,   99,  188,   99,  254,  254,
 979       254,  254,  254,  254,  254,  254,  254,  254,  254,  254,
 980 
 981       254,  254,  254,  254,  254,   99,  830,   99,  830,   99,
 982       830,   99,  830,  830,   99,   99,  830,  188,  251,  230,
 983       255,  255,  255,  255,  255,  255,  126,  830,   99,  830,
 984       101,  252,  253,  830,  830,  830,   99,  188,   99,  256,
 985       256,  256,  256,  256,  257,  257,  257,  257,  257,  257,
 986       257,  257,  257,  257,  257,  257,   99,  830,   99,  830,
 987        99,  830,   99,  830,  830,   99,   99,  830,  188,  251,
 988       230,  258,  258,  258,  258,  258,  258,  126,  830,   99,
 989       830,  101,  259,  260,  830,  830,  830,   99,  188,   99,
 990       261,  261,  261,  261,  261,  262,  262,  262,  262,  262,
 991 
 992       262,  262,  262,  262,  262,  262,  262,  263,  263,  263,
 993       263,  263,  263,  830,  830,  830,  830,  830,  260,  328,
 994       328,  328,  328,  328,  328,  830,  262,  262,  262,  262,
 995       262,  264,  264,  264,  264,  264,  264,  830,  830,  830,
 996       830,  830,  253,  328,  328,  328,  328,  328,  328,  830,
 997       257,  257,  257,  257,  257,   99,  830,   99,  830,   99,
 998       830,   99,  830,  830,   99,   99,  830,  265,  130,   99,
 999       266,  266,  266,  266,  266,  266,  830,  830,   99,  830,
1000       101,  266,  266,  830,  830,  830,   99,  265,   99,  267,
1001       267,  267,  267,  267,  267,  267,  267,  267,  267,  267,
1002 
1003       267,  267,  267,  267,  267,  267,   99,  830,   99,  830,
1004        99,  830,   99,  830,  830,   99,   99,  830,  276,  130,
1005        99,  277,  277,  277,  277,  277,  277,  830,  830,   99,
1006       830,  101,  277,  277,  830,  830,  830,   99,  276,   99,
1007       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
1008       278,  278,  278,  278,  278,  278,  278,   99,  830,   99,
1009       775,  830,  282,  282,  282,  282,  282,  282,  153,  460,
1010       153,  830,  153,  830,  153,  830,  830,  153,  153,  830,
1011       775,  830,  153,  327,  327,  327,  327,  327,  327,  830,
1012       830,  153,  830,  154,  830,  830,  830,  830,  830,  153,
1013 
1014       830,  153,  153,  830,  153,  830,  153,  153,  153,  163,
1015       830,  153,  153,  830,  778,  830,  153,  284,  284,  284,
1016       284,  284,  284,  465,  830,  153,  830,  154,  830,  830,
1017       830,  830,  830,  153,  778,  153,  158,   91,  153,   91,
1018       158,   91,  158,   91,   91,  158,  158,   91,  287,   91,
1019       158,  287,  287,  287,  287,  287,  287,   91,   91,  158,
1020        91,  159,  287,  287,   91,   91,   91,  158,  287,  158,
1021       287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
1022       287,  287,  287,  287,  287,  287,  287,  225,  830,  225,
1023       345,  345,  345,  345,  345,  345,  289,  830,  289,  830,
1024 
1025       830,  290,  290,  290,  290,  290,  290,  331,  331,  331,
1026       331,  331,  331,  269,  348,  830,  286,  286,  286,  286,
1027       286,  286,  830,  153,  225,  349,  225,  288,  288,  288,
1028       288,  288,  288,  289,  830,  291,  130,  830,  292,  292,
1029       292,  292,  292,  292,  166,  830,  166,  294,  294,  294,
1030       294,  294,  294,  830,  830,  830,  830,  830,  295,  295,
1031       295,  295,  295,  295,  360,  830,  359,  359,  359,  359,
1032       359,  359,  350,  830,  359,  359,  359,  359,  359,  359,
1033       296,  225,  830,  225,  370,  370,  370,  370,  370,  370,
1034       226,  830,  226,  830,  830,  297,  297,  297,  297,  297,
1035 
1036       297,  153,  830,  153,  830,  153,  830,  153,  830,  830,
1037       153,  153,  830,  153,  293,  314,  314,  314,  314,  314,
1038       314,  830,  830,  830,  153,  830,  154,  830,  830,  830,
1039       830,  830,  153,  153,  153,  153,  830,  153,  830,  153,
1040       534,  153,  830,  830,  153,  153,  830,  153,  299,  379,
1041       379,  379,  379,  379,  379,  830,  830,  830,  153,  830,
1042       154,  830,  830,  830,  541,  830,  153,  153,  153,   99,
1043       153,   99,  163,   99,  830,   99,  830,  830,   99,   99,
1044       830,   99,  299,  382,  382,  382,  382,  382,  382,  830,
1045       830,  830,   99,  830,  101,  830,  830,  830,  830,  830,
1046 
1047        99,   99,   99,  153,  830,  153,  830,  153,  591,  153,
1048       830,  830,  153,  153,  830,  163,  293,  298,  301,  301,
1049       301,  301,  301,  301,  830,  830,  153,  830,  154,  302,
1050       302,  830,  599,  830,  153,  163,  153,  302,  302,  302,
1051       302,  302,  302,  302,  302,  302,  302,  302,  302,  302,
1052       302,  302,  302,  302,  166,  830,  166,  383,  383,  383,
1053       383,  383,  383,  830,  830,  830,  303,  830,  304,  304,
1054       304,  304,  304,  304,  386,  386,  386,  386,  386,  386,
1055       269,  379,  379,  379,  379,  379,  379,  830,  830,  830,
1056       305,  225,  830,  225,  408,  408,  408,  408,  408,  408,
1057 
1058       289,  830,  291,  306,  830,  307,  307,  307,  307,  307,
1059       307,   99,  830,   99,  830,   99,  830,   99,  830,  830,
1060        99,   99,  830,  110,  308,  300,  309,  309,  309,  309,
1061       309,  309,  119,  830,   99,  830,  101,  310,  310,  830,
1062       830,  830,   99,  110,   99,  310,  310,  310,  310,  310,
1063       310,  310,  310,  310,  310,  310,  310,  310,  310,  310,
1064       310,  310,  306,  830,  310,  310,  310,  310,  310,  310,
1065       126,  311,  311,  311,  311,  311,  311,  241,  830,  830,
1066       830,  830,  312,  830,  379,  379,  379,  379,  379,  379,
1067       312,  312,  312,  312,  312,  153,  830,  153,  830,  153,
1068 
1069       830,  153,  830,  830,  153,  153,  830,  163,  830,  153,
1070       163,  163,  163,  163,  163,  163,  397,  830,  153,  830,
1071       154,  319,  319,  830,  830,  830,  153,  163,  153,  319,
1072       319,  319,  319,  319,  319,  319,  319,  319,  319,  319,
1073       319,  319,  319,  319,  319,  319,  153,  830,  153,  830,
1074       153,  830,  153,  830,  830,  153,  153,  830,  248,  130,
1075       153,  379,  379,  379,  379,  379,  379,  830,  830,  153,
1076       830,  154,  830,  830,  830,  830,  830,  153,  248,  153,
1077       153,  153,  153,  163,  153,  649,  153,  830,  830,  153,
1078       153,  830,  248,  306,  298,  830,  398,  409,  409,  409,
1079 
1080       409,  409,  409,  153,  830,  154,  830,  830,  830,  656,
1081       830,  153,  248,  153,  153,  830,  153,  830,  153,  830,
1082       153,  830,  830,  153,  153,  830,  248,  306,  298,  411,
1083       411,  411,  411,  411,  411,  830,  830,  153,  830,  154,
1084       830,  830,  830,  830,  830,  153,  248,  153,  153,  153,
1085       153,  163,  153,  693,  153,  830,  830,  153,  153,  830,
1086       163,  293,  298,  302,  302,  302,  302,  302,  302,  830,
1087       830,  153,  830,  154,  322,  322,  830,  701,  830,  153,
1088       163,  153,  322,  322,  322,  322,  322,  322,  322,  322,
1089       322,  322,  322,  322,  322,  322,  322,  322,  322,   99,
1090 
1091       830,   99,  830,   99,  830,   99,  830,  830,   99,   99,
1092       830,  123,  323,  300,  421,  421,  421,  421,  421,  421,
1093       126,  830,   99,  830,  101,  830,  830,  830,  830,  830,
1094        99,  123,   99,   99,  830,   99,  830,   99,  736,   99,
1095       830,  830,   99,   99,  830,  123,  323,  300,  423,  423,
1096       423,  423,  423,  423,  830,  830,   99,  830,  101,  830,
1097       830,  830,  743,  830,   99,  123,   99,   99,  153,   99,
1098       163,   99,  830,   99,  830,  830,   99,   99,  830,  188,
1099       247,   99,  183,  183,  183,  183,  183,  183,  830,  830,
1100        99,  830,  101,  183,  183,  830,  830,  830,   99,  188,
1101 
1102        99,  254,  254,  254,  254,  254,  254,  254,  254,  254,
1103       254,  254,  254,  254,  254,  254,  254,  254,   99,  830,
1104        99,  830,   99,  830,   99,  830,  830,   99,   99,  830,
1105       188,  323,  300,  325,  325,  325,  325,  325,  325,  126,
1106       830,   99,  830,  101,  324,  324,  830,  830,  830,   99,
1107       188,   99,  326,  326,  326,  326,  326,  326,  326,  326,
1108       326,  326,  326,  326,  326,  326,  326,  326,  326,   99,
1109       830,   99,  830,   99,  830,   99,  830,  830,   99,   99,
1110       830,  265,  130,   99,  266,  266,  266,  266,  266,  266,
1111       830,  830,   99,  830,  101,  266,  266,  830,  830,  830,
1112 
1113        99,  265,   99,  267,  267,  267,  267,  267,  267,  267,
1114       267,  267,  267,  267,  267,  267,  267,  267,  267,  267,
1115        99,  830,   99,  830,   99,  830,   99,  830,  830,   99,
1116        99,  830,  329,  247,   99,  432,  432,  432,  432,  432,
1117       432,  330,  830,   99,  830,  101,  830,  830,  830,  830,
1118       830,   99,  329,   99,  336,  830,  830,  328,  328,  328,
1119       328,  328,  328,  830,   99,  830,   99,  830,   99,  830,
1120        99,  830,  830,   99,   99,  830,  276,  130,   99,  277,
1121       277,  277,  277,  277,  277,  830,  830,   99,  830,  101,
1122       277,  277,  830,  830,  830,   99,  276,   99,  278,  278,
1123 
1124       278,  278,  278,  278,  278,  278,  278,  278,  278,  278,
1125       278,  278,  278,  278,  278,   99,  830,   99,  830,   99,
1126       830,   99,  830,  830,   99,   99,  830,  342,  247,   99,
1127       440,  440,  440,  440,  440,  440,  343,  830,   99,  830,
1128       101,  830,  830,  830,  830,  830,   99,  342,   99,  100,
1129       830,  282,  282,  282,  282,  282,  282,  830,  225,  830,
1130       225,  101,  153,  830,  153,  830,  153,  226,  153,  226,
1131       830,  153,  153,  830,  830,  212,  153,   91,  830,  412,
1132       412,  412,  412,  412,  412,  153,  830,  154,  830,  830,
1133       830,  830,  830,  153,  830,  153,  153,  153,  153,  163,
1134 
1135       153,  830,  153,  830,  830,  153,  153,  830,  830,  346,
1136       153,  284,  284,  284,  284,  284,  284,  830,  830,  153,
1137       830,  154,  830,  830,  830,  163,  830,  153,  830,  153,
1138       158,   91,  153,   91,  158,   91,  158,   91,   91,  158,
1139       158,   91,  287,  217,  158,  287,  287,  287,  287,  287,
1140       287,   91,   91,  158,   91,  159,  287,  287,   91,   91,
1141        91,  158,  287,  158,  287,  287,  287,  287,  287,  287,
1142       287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
1143       287,  100,  830,  290,  290,  290,  290,  290,  290,  830,
1144       830,  830,  830,  154,  100,  830,  290,  290,  290,  290,
1145 
1146       290,  290,  830,  818,  830,  818,  154,  153,  830,  153,
1147       830,  153,  824,  153,  824,  830,  153,  153,  830,  163,
1148       130,  153,  292,  292,  292,  292,  292,  292,  830,  830,
1149       153,  830,  154,  163,  163,  830,  830,  830,  153,  163,
1150       153,  163,  163,  163,  163,  163,  163,  163,  163,  163,
1151       163,  163,  163,  163,  163,  163,  163,  163,  166,  422,
1152       166,  423,  423,  423,  423,  423,  423,  830,  830,  830,
1153       830,  830,  351,  351,  351,  351,  351,  351,  424,  830,
1154       421,  421,  421,  421,  421,  421,  432,  432,  432,  432,
1155       432,  432,  241,  830,  352,  225,  830,  225,  443,  443,
1156 
1157       443,  443,  443,  443,  226,  830,  226,  830,  830,  353,
1158       353,  353,  353,  353,  353,  153,  830,  153,  830,  153,
1159       830,  153,  830,  830,  153,  153,  830,  153,  354,  444,
1160       444,  444,  444,  444,  444,  830,  830,  830,  153,  830,
1161       154,  830,  830,  830,  830,  830,  153,  153,  153,  153,
1162       830,  153,  830,  153,  830,  153,  830,  830,  153,  153,
1163       830,  153,  350,  447,  447,  447,  447,  447,  447,  269,
1164       830,  830,  153,  830,  154,  830,  830,  830,  830,  830,
1165       153,  153,  153,   99,  830,   99,  830,   99,  830,   99,
1166       830,  830,   99,   99,  448,   99,  354,  449,  449,  449,
1167 
1168       449,  449,  449,  830,  830,  830,   99,  830,  101,  830,
1169       830,  830,  830,  830,   99,   99,   99,  153,  830,  153,
1170       830,  153,  830,  153,  830,  830,  153,  153,  830,  163,
1171       357,  355,  358,  358,  358,  358,  358,  358,  830,  830,
1172       153,  830,  154,  359,  359,  830,  830,  830,  153,  163,
1173       153,  359,  359,  359,  359,  359,  359,  359,  359,  359,
1174       359,  359,  359,  359,  359,  359,  359,  359,  166,  830,
1175       166,  440,  440,  440,  440,  440,  440,  269,  830,  830,
1176       361,  830,  362,  362,  362,  362,  362,  362,  458,  830,
1177       830,  440,  440,  440,  440,  440,  440,  466,  466,  466,
1178 
1179       466,  466,  466,  830,  363,  225,  467,  225,  409,  409,
1180       409,  409,  409,  409,  289,  830,  291,  360,  830,  364,
1181       364,  364,  364,  364,  364,   99,  830,   99,  830,   99,
1182       830,   99,  830,  830,   99,   99,  830,  110,  365,  356,
1183       366,  366,  366,  366,  366,  366,  367,  830,   99,  830,
1184       101,  368,  368,  830,  830,  830,   99,  110,   99,  368,
1185       368,  368,  368,  368,  368,  368,  368,  368,  368,  368,
1186       368,  368,  368,  368,  368,  368,  360,  830,  368,  368,
1187       368,  368,  368,  368,  830,  369,  369,  369,  369,  369,
1188       369,  241,  830,  830,  830,  469,  370,  412,  412,  412,
1189 
1190       412,  412,  412,  830,  370,  370,  370,  370,  370,  153,
1191       830,  153,  830,  153,  830,  153,  830,  830,  153,  153,
1192       830,  248,  130,  153,  475,  480,  480,  480,  480,  480,
1193       480,  830,  153,  830,  154,  830,  830,  830,  830,  830,
1194       153,  248,  153,  153,  830,  153,  830,  153,  830,  153,
1195       830,  830,  153,  153,  830,  248,  360,  355,  470,  830,
1196       480,  480,  480,  480,  480,  480,  153,  830,  154,  830,
1197       830,  830,  830,  830,  153,  248,  153,  153,  830,  153,
1198       830,  153,  830,  153,  830,  830,  153,  153,  830,  248,
1199       360,  355,  432,  432,  432,  432,  432,  432,  830,  830,
1200 
1201       153,  830,  154,  830,  830,  830,  830,  830,  153,  248,
1202       153,  153,  830,  153,  830,  153,  830,  153,  830,  830,
1203       153,  153,  830,  163,  350,  355,  359,  359,  359,  359,
1204       359,  359,  830,  830,  153,  830,  154,  377,  377,  830,
1205       830,  830,  153,  163,  153,  377,  377,  377,  377,  377,
1206       377,  377,  377,  377,  377,  377,  377,  377,  377,  377,
1207       377,  377,   99,  830,   99,  830,   99,  830,   99,  830,
1208       830,   99,   99,  830,  123,  378,  356,  499,  499,  499,
1209       499,  499,  499,  830,  830,   99,  830,  101,  830,  830,
1210       830,  830,  830,   99,  123,   99,   99,  830,   99,  830,
1211 
1212        99,  830,   99,  830,  830,   99,   99,  830,  188,  378,
1213       356,  380,  380,  380,  380,  380,  380,  830,  830,   99,
1214       830,  101,  379,  379,  830,  830,  830,   99,  188,   99,
1215       381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
1216       381,  381,  381,  381,  381,  381,  381,   99,  830,   99,
1217       830,   99,  830,   99,  830,  830,   99,   99,  830,  329,
1218       130,   99,  502,  502,  502,  502,  502,  502,  830,  830,
1219        99,  830,  101,  830,  830,  830,  830,  830,   99,  329,
1220        99,   99,  830,   99,  830,   99,  830,   99,  830,  830,
1221        99,   99,  830,  188,  130,   99,  393,  393,  393,  393,
1222 
1223       393,  393,  830,  830,   99,  830,  101,  183,  183,  830,
1224       830,  830,   99,  188,   99,  254,  254,  254,  254,  254,
1225       254,  254,  254,  254,  254,  254,  254,  254,  254,  254,
1226       254,  254,   99,  830,   99,  830,   99,  830,   99,  830,
1227       830,   99,   99,  830,  394,  130,   99,  395,  395,  395,
1228       395,  395,  395,  830,  830,   99,  830,  101,  395,  395,
1229       830,  830,  830,   99,  394,   99,  396,  396,  396,  396,
1230       396,  396,  396,  396,  396,  396,  396,  396,  396,  396,
1231       396,  396,  396,   99,  830,   99,  830,   99,  830,   99,
1232       830,  830,   99,   99,  830,  399,  130,   99,  400,  400,
1233 
1234       400,  400,  400,  400,  830,  830,   99,  830,  101,  400,
1235       400,  830,  830,  830,   99,  399,   99,  401,  401,  401,
1236       401,  401,  401,  401,  401,  401,  401,  401,  401,  401,
1237       401,  401,  401,  401,  342,  503,  503,  503,  503,  503,
1238       503,  504,  830,  830,  505,  505,  505,  505,  505,  505,
1239       830,  830,  830,  830,  342,  830,  277,  277,  277,  277,
1240       277,  277,  277,  277,  277,  277,  277,  277,  277,  277,
1241       277,  277,  277,   99,  830,   99,  830,   99,  830,   99,
1242       830,  830,   99,   99,  830,  405,  130,   99,  406,  406,
1243       406,  406,  406,  406,  830,  830,   99,  830,  101,  406,
1244 
1245       406,  830,  830,  830,   99,  405,   99,  407,  407,  407,
1246       407,  407,  407,  407,  407,  407,  407,  407,  407,  407,
1247       407,  407,  407,  407,  166,  830,  166,  507,  507,  507,
1248       507,  507,  507,  269,  830,  830,  830,  830,  414,  414,
1249       414,  414,  414,  414,  449,  449,  449,  449,  449,  449,
1250       269,  524,  524,  524,  524,  524,  524,  830,  830,  830,
1251       415,  225,  830,  225,  530,  530,  530,  530,  530,  530,
1252       226,  830,  226,  830,  830,  416,  416,  416,  416,  416,
1253       416,  153,  830,  153,  830,  153,  830,  153,  830,  830,
1254       153,  153,  830,  153,  413,  830,  830,  531,  531,  531,
1255 
1256       531,  531,  531,  830,  153,  830,  154,  830,  830,  830,
1257       830,  830,  153,  153,  153,  153,  830,  153,  830,  153,
1258       830,  153,  830,  830,  153,  153,  830,  153,  418,  532,
1259       532,  532,  532,  532,  532,  830,  830,  830,  153,  830,
1260       154,  830,  830,  830,  830,  830,  153,  153,  153,   99,
1261       830,   99,  830,   99,  830,   99,  830,  830,   99,   99,
1262       830,   99,  418,   91,  830,  533,  533,  533,  533,  533,
1263       533,  830,   99,  830,  101,  830,  830,  830,  830,  830,
1264        99,   99,   99,  153,  830,  153,  830,  153,  830,  153,
1265       830,  830,  153,  153,  830,  163,  413,  417,  420,  420,
1266 
1267       420,  420,  420,  420,  830,  830,  153,  830,  154,  421,
1268       421,  830,  830,  830,  153,  163,  153,  421,  421,  421,
1269       421,  421,  421,  421,  421,  421,  421,  421,  421,  421,
1270       421,  421,  421,  421,  166,  830,  166,  542,  542,  542,
1271       542,  542,  542,  830,  830,  830,  425,  830,  426,  426,
1272       426,  426,  426,  426,  546,  830,  547,  547,  547,  547,
1273       547,  547,  534,  830,  547,  547,  547,  547,  547,  547,
1274       427,  225,  830,  225,  565,  565,  565,  565,  565,  565,
1275       289,  830,  291,  424,  830,  428,  428,  428,  428,  428,
1276       428,   99,  830,   99,  830,   99,  830,   99,  830,  830,
1277 
1278        99,   99,  830,  110,  429,  419,  430,  430,  430,  430,
1279       430,  430,  367,  830,   99,  830,  101,  431,  431,  830,
1280       830,  830,   99,  110,   99,  431,  431,  431,  431,  431,
1281       431,  431,  431,  431,  431,  431,  431,  431,  431,  431,
1282       431,  431,  424,  830,  431,  431,  431,  431,  431,  431,
1283       830,  153,  830,  153,  830,  153,  830,  153,  830,  830,
1284       153,  153,  830,  248,  424,  417,  566,  566,  566,  566,
1285       566,  566,  830,  830,  153,  830,  154,  830,  830,  830,
1286       830,  830,  153,  248,  153,  153,  830,  153,  830,  153,
1287       830,  153,  830,  830,  153,  153,  830,  248,  424,  417,
1288 
1289       505,  505,  505,  505,  505,  505,  330,  830,  153,  830,
1290       154,  830,  830,  830,  830,  830,  153,  248,  153,  153,
1291       830,  153,  830,  153,  830,  153,  830,  830,  153,  153,
1292       830,  163,  413,  417,  421,  421,  421,  421,  421,  421,
1293       830,  830,  153,  830,  154,  438,  438,  830,  830,  830,
1294       153,  163,  153,  438,  438,  438,  438,  438,  438,  438,
1295       438,  438,  438,  438,  438,  438,  438,  438,  438,  438,
1296        99,  830,   99,  830,   99,  830,   99,  830,  830,   99,
1297        99,  830,  123,  439,  419,  570,  570,  570,  570,  570,
1298       570,  269,  830,   99,  830,  101,  830,  830,  830,  830,
1299 
1300       830,   99,  123,   99,   99,  830,   99,  830,   99,  830,
1301        99,  830,  830,   99,   99,  830,  188,  439,  419,  441,
1302       441,  441,  441,  441,  441,  830,  830,   99,  830,  101,
1303       440,  440,  830,  830,  830,   99,  188,   99,  442,  442,
1304       442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
1305       442,  442,  442,  442,  442,   99,  830,   99,  830,   99,
1306       830,   99,  830,  830,   99,   99,  830,  123,  247,   99,
1307       393,  393,  393,  393,  393,  393,  830,  830,   99,  830,
1308       101,  455,  455,  830,  830,  830,   99,  123,   99,  455,
1309       455,  455,  455,  455,  455,  455,  455,  455,  455,  455,
1310 
1311       455,  455,  455,  455,  455,  455,   99,  830,   99,  830,
1312        99,  830,   99,  830,  830,   99,   99,  830,  456,  247,
1313        99,  533,  533,  533,  533,  533,  533,  457,  830,   99,
1314       830,  101,  830,  830,  830,  830,  830,   99,  456,   99,
1315        99,  830,   99,  830,   99,  830,   99,  830,  830,   99,
1316        99,  830,  459,  247,   99,  605,  605,  605,  605,  605,
1317       605,  460,  830,   99,  830,  101,  830,  830,  830,  830,
1318       830,   99,  459,   99,   99,  830,   99,  830,   99,  830,
1319        99,  830,  830,   99,   99,  830,  464,  247,   99,  625,
1320       625,  625,  625,  625,  625,  465,  830,   99,  830,  101,
1321 
1322       830,  830,  830,  830,  830,   99,  464,   99,  166,  830,
1323       166,  524,  524,  524,  524,  524,  524,  343,  830,  830,
1324       830,  830,  471,  471,  471,  471,  471,  471,  212,  830,
1325       531,  531,  531,  531,  531,  531,  604,  830,  605,  605,
1326       605,  605,  605,  605,  472,  225,  830,  225,  636,  636,
1327       636,  636,  636,  636,  226,  830,  226,  830,  830,  473,
1328       473,  473,  473,  473,  473,  153,  830,  153,  830,  153,
1329       830,  153,  830,  830,  153,  153,  830,  153,  474,  641,
1330       641,  641,  641,  641,  641,  830,  830,  830,  153,  830,
1331       154,  830,  830,  830,  830,  830,  153,  153,  153,  153,
1332 
1333       830,  153,  830,  153,  830,  153,  830,  830,  153,  153,
1334       830,  153,  470,  645,  645,  645,  645,  645,  645,  830,
1335       830,  830,  153,  830,  154,  830,  830,  830,  830,  830,
1336       153,  153,  153,   99,  830,   99,  830,   99,  830,   99,
1337       830,  830,   99,   99,  830,   99,  474,  648,  648,  648,
1338       648,  648,  648,  830,  830,  830,   99,  830,  101,  830,
1339       830,  830,  830,  830,   99,   99,   99,  153,  830,  153,
1340       830,  153,  830,  153,  830,  830,  153,  153,  830,  163,
1341       477,  478,  479,  479,  479,  479,  479,  479,  830,  830,
1342       153,  830,  154,  480,  480,  830,  830,  830,  153,  163,
1343 
1344       153,  480,  480,  480,  480,  480,  480,  480,  480,  480,
1345       480,  480,  480,  480,  480,  480,  480,  480,  481,  475,
1346       482,  482,  482,  482,  482,  482,  166,  830,  166,  830,
1347       658,  658,  658,  658,  658,  658,  830,  830,  483,  830,
1348       484,  484,  484,  484,  484,  484,  601,  658,  658,  658,
1349       658,  658,  658,  661,  662,  662,  662,  662,  662,  662,
1350       830,  830,  485,  225,  649,  225,  662,  662,  662,  662,
1351       662,  662,  289,  830,  291,  477,  830,  486,  486,  486,
1352       486,  486,  486,   99,  830,   99,  830,   99,  830,   99,
1353       830,  830,   99,   99,  830,  110,  487,  476,  488,  488,
1354 
1355       488,  488,  488,  488,  367,  830,   99,  830,  101,  489,
1356       489,  830,  830,  830,   99,  110,   99,  489,  489,  489,
1357       489,  489,  489,  489,  489,  489,  489,  489,  489,  489,
1358       489,  489,  489,  489,  477,  830,  489,  489,  489,  489,
1359       489,  489,  830,  153,  830,  153,  830,  153,  830,  153,
1360       830,  830,  153,  153,  830,  248,  477,  475,  663,  830,
1361       664,  664,  664,  664,  664,  664,  153,  830,  154,  830,
1362       830,  830,  830,  830,  153,  248,  153,  153,  830,  153,
1363       830,  153,  830,  153,  830,  830,  153,  153,  830,  248,
1364       477,  475,  649,  830,  664,  664,  664,  664,  664,  664,
1365 
1366       153,  830,  154,  830,  830,  830,  830,  830,  153,  248,
1367       153,  153,  830,  153,  830,  153,  830,  153,  830,  830,
1368       153,  153,  830,  163,  470,  475,  480,  480,  480,  480,
1369       480,  480,  830,  830,  153,  830,  154,  497,  497,  830,
1370       830,  830,  153,  163,  153,  497,  497,  497,  497,  497,
1371       497,  497,  497,  497,  497,  497,  497,  497,  497,  497,
1372       497,  497,   99,  830,   99,  830,   99,  830,   99,  830,
1373       830,   99,   99,  830,  123,  498,  476,  669,  669,  669,
1374       669,  669,  669,  830,  830,   99,  830,  101,  830,  830,
1375       830,  830,  830,   99,  123,   99,   99,  830,   99,  830,
1376 
1377        99,  830,   99,  830,  830,   99,   99,  830,  188,  498,
1378       476,  500,  500,  500,  500,  500,  500,  830,  830,   99,
1379       830,  101,  499,  499,  830,  830,  830,   99,  188,   99,
1380       501,  501,  501,  501,  501,  501,  501,  501,  501,  501,
1381       501,  501,  501,  501,  501,  501,  501,   99,  830,   99,
1382       830,   99,  830,   99,  830,  830,   99,   99,  830,  123,
1383       247,   99,  183,  183,  183,  183,  183,  183,  830,  830,
1384        99,  830,  101,  516,  516,  830,  830,  830,   99,  123,
1385        99,  516,  516,  516,  516,  516,  516,  516,  516,  516,
1386       516,  516,  516,  516,  516,  516,  516,  516,   99,  830,
1387 
1388        99,  830,   99,  830,   99,  830,  830,   99,   99,  830,
1389       456,  130,   99,  707,  707,  707,  707,  707,  707,  830,
1390       830,   99,  830,  101,  830,  830,  830,  830,  830,   99,
1391       456,   99,   99,  830,   99,  830,   99,  830,   99,  830,
1392       830,   99,   99,  830,  188,  130,   99,  520,  520,  520,
1393       520,  520,  520,  830,  830,   99,  830,  101,  520,  183,
1394       830,  830,  830,   99,  188,   99,  521,  521,  521,  521,
1395       521,  254,  254,  254,  254,  254,  254,  254,  254,  254,
1396       254,  254,  254,   99,  830,   99,  830,   99,  830,   99,
1397       830,  830,   99,   99,  830,  459,  130,   99,  745,  745,
1398 
1399       745,  745,  745,  745,  830,  830,   99,  830,  101,  830,
1400       830,  830,  830,  830,   99,  459,   99,   99,  830,   99,
1401       830,   99,  830,   99,  830,  830,   99,   99,  830,  464,
1402       130,   99,  755,  755,  755,  755,  755,  755,  830,  830,
1403        99,  830,  101,  830,  830,  830,  830,  830,   99,  464,
1404        99,  166,  830,  166,  636,  636,  636,  636,  636,  636,
1405       457,  830,  830,  830,  830,  535,  535,  535,  535,  535,
1406       535,  641,  641,  641,  641,  641,  641,  460,  645,  645,
1407       645,  645,  645,  645,  465,  830,  830,  536,  225,  706,
1408       225,  707,  707,  707,  707,  707,  707,  226,  830,  226,
1409 
1410       830,  830,  537,  537,  537,  537,  537,  537,  153,  830,
1411       153,  830,  153,  830,  153,  830,  830,  153,  153,  830,
1412       153,  534,  745,  745,  745,  745,  745,  745,  830,  830,
1413       830,  153,  830,  154,  830,  830,  830,  830,  601,  153,
1414       153,  153,  153,  830,  153,  830,  153,  830,  153,  830,
1415       830,  153,  153,  153,  153,  539,  746,  746,  746,  746,
1416       746,  746,  830,  830,  830,  153,  830,  154,  830,  830,
1417       830,  830,  830,  153,  153,  153,   99,  830,   99,  830,
1418        99,  830,   99,  830,  830,   99,   99,  830,   99,  539,
1419       747,  748,  748,  748,  748,  748,  748,  830,  830,   99,
1420 
1421       830,  101,  830,  830,  830,  830,  830,   99,   99,   99,
1422       153,  830,  153,  830,  153,  830,  153,  830,  830,  153,
1423       153,  830,  163,  534,  538,  736,  830,  748,  748,  748,
1424       748,  748,  748,  153,  830,  154,  830,  830,  830,  830,
1425       830,  153,  163,  153,  153,  830,  153,  830,  153,  830,
1426       153,  830,  830,  153,  153,  830,  163,  543,  544,  545,
1427       545,  545,  545,  545,  545,  830,  830,  153,  830,  154,
1428       541,  541,  830,  830,  830,  153,  163,  153,  541,  541,
1429       541,  541,  541,  541,  541,  541,  541,  541,  541,  541,
1430       541,  541,  541,  541,  541,  153,  830,  153,  830,  153,
1431 
1432       830,  153,  830,  830,  153,  153,  830,  163,  543,  538,
1433       749,  830,  750,  750,  750,  750,  750,  750,  153,  830,
1434       154,  830,  830,  830,  830,  830,  153,  163,  153,  166,
1435       736,  166,  750,  750,  750,  750,  750,  750,  830,  830,
1436       830,  548,  830,  549,  549,  549,  549,  549,  549,  294,
1437       294,  294,  294,  294,  294,  153,  830,  830,  153,  153,
1438       153,  153,  153,  153,  830,  550,  225,  784,  225,  785,
1439       785,  785,  785,  785,  785,  289,  830,  291,  830,  830,
1440       551,  551,  551,  551,  551,  551,   99,  552,   99,  552,
1441        99,  830,   99,  830,  830,   99,   99,  830,  110,  553,
1442 
1443       540,  554,  554,  554,  554,  554,  554,  367,  830,   99,
1444       830,  101,  555,  555,  830,  830,  830,   99,  110,   99,
1445       555,  555,  555,  555,  555,  555,  555,  555,  555,  555,
1446       555,  555,  555,  555,  555,  555,  555,  830,  153,  830,
1447       830,  746,  746,  746,  746,  746,  746,  830,  830,  543,
1448       830,  555,  555,  555,  555,  555,  555,  830,  153,  830,
1449       153,  830,  153,  830,  153,  830,  830,  153,  153,  830,
1450       248,  543,  538,  785,  785,  785,  785,  785,  785,  830,
1451       830,  153,  830,  154,  830,  830,  830,  830,  830,  153,
1452       248,  153,  153,  830,  153,  830,  153,  830,  153,  830,
1453 
1454       830,  153,  153,  830,  248,  543,  538,  788,  788,  788,
1455       788,  788,  788,  830,  830,  153,  830,  154,  830,  830,
1456       830,  830,  830,  153,  248,  153,  153,  830,  153,  830,
1457       153,  830,  153,  830,  830,  153,  153,  830,  163,  534,
1458       538,  541,  541,  541,  541,  541,  541,  830,  830,  153,
1459       830,  154,  561,  561,  830,  830,  830,  153,  163,  153,
1460       561,  561,  561,  561,  561,  561,  561,  561,  561,  561,
1461       561,  561,  561,  561,  561,  561,  561,   99,  830,   99,
1462       830,   99,  830,   99,  830,  830,   99,   99,  830,  123,
1463       562,  540,  797,  797,  797,  797,  797,  797,  269,  830,
1464 
1465        99,  830,  101,  830,  830,  830,  830,  830,   99,  123,
1466        99,   99,  830,   99,  830,   99,  830,   99,  830,  830,
1467        99,   99,  830,  188,  562,  540,  563,  563,  563,  563,
1468       563,  563,  830,  830,   99,  830,  101,  563,  563,  830,
1469       830,  830,   99,  188,   99,  564,  564,  564,  564,  564,
1470       564,  564,  564,  564,  564,  564,  564,  564,  564,  564,
1471       564,  564,  575,  575,  785,  785,  785,  785,  785,  785,
1472       575,  575,  575,  575,  575,  575,  575,  575,  575,  575,
1473       575,  575,  575,  575,  575,  575,  575,   99,  830,   99,
1474       830,   99,  830,   99,  830,  830,   99,   99,  830,  123,
1475 
1476       247,   99,  579,  579,  579,  579,  579,  579,  830,  830,
1477        99,  830,  101,  579,  183,  830,  830,  830,   99,  123,
1478        99,  579,  579,  579,  579,  579,  183,  183,  183,  183,
1479       183,  183,  183,  183,  183,  183,  183,  183,  247,  830,
1480       579,  579,  579,  579,  579,  579,  830,  830,  830,  830,
1481       784,  579,  785,  785,  785,  785,  785,  785,  830,  580,
1482       580,  580,  580,  580,  166,  830,  166,  787,  787,  787,
1483       787,  787,  787,  830,  830,  830,  830,  830,  592,  592,
1484       592,  592,  592,  592,  797,  797,  797,  797,  797,  797,
1485       269,  807,  807,  807,  807,  807,  807,  830,  830,  830,
1486 
1487       593,  225,  830,  225,  813,  813,  813,  813,  813,  813,
1488       226,  830,  226,  830,  830,  594,  594,  594,  594,  594,
1489       594,  153,  830,  153,  830,  153,  830,  153,  830,  830,
1490       153,  153,  830,  153,  595,  814,  815,  814,  814,  814,
1491       814,  830,  830,  830,  153,  830,  154,  830,  830,  830,
1492       830,  830,  153,  153,  153,  153,  830,  153,  830,  153,
1493       830,  153,  830,  830,  153,  153,  830,  153,  591,  819,
1494       819,  819,  819,  819,  819,  830,  830,  830,  153,  830,
1495       154,  830,  830,  830,  830,  830,  153,  153,  153,   99,
1496       830,   99,  830,   99,  830,   99,  830,  830,   99,   99,
1497 
1498       830,   99,  595,  820,  820,  821,  819,  819,  819,  830,
1499       830,  830,   99,  830,  101,  830,  830,  830,  830,  830,
1500        99,   99,   99,  153,  830,  153,  830,  153,  830,  153,
1501       830,  830,  153,  153,  830,  163,  598,  596,  819,  819,
1502       819,  819,  819,  819,  830,  830,  153,  830,  154,  830,
1503       830,  830,  830,  830,  153,  163,  153,  595,  830,  600,
1504       600,  600,  600,  600,  600,  825,  825,  825,  825,  825,
1505       825,  830,  830,  830,  830,  601,  153,  830,  153,  830,
1506       153,  830,  153,  830,  830,  153,  153,  830,  163,  591,
1507       596,  826,  826,  826,  826,  826,  826,  830,  830,  153,
1508 
1509       830,  154,  830,  830,  830,  830,  830,  153,  163,  153,
1510       598,  602,  603,  603,  603,  603,  603,  603,  166,  830,
1511       166,  828,  828,  828,  828,  828,  828,  830,  830,  830,
1512       606,  830,  607,  607,  607,  607,  607,  607,  829,  829,
1513       829,  829,  829,  829,  830,  830,  830,  830,  830,  830,
1514       830,  830,  830,  830,  608,  225,  830,  225,  830,  830,
1515       830,  830,  830,  830,  289,  830,  291,  598,  830,  609,
1516       609,  609,  609,  609,  609,   99,  830,   99,  830,   99,
1517       830,   99,  830,  830,   99,   99,  830,  110,  611,  597,
1518       612,  612,  612,  612,  612,  612,  367,  830,   99,  830,
1519 
1520       101,  613,  613,  830,  830,  830,   99,  110,   99,  613,
1521       613,  613,  613,  613,  613,  613,  613,  613,  613,  613,
1522       613,  613,  613,  613,  613,  613,  598,  830,  613,  613,
1523       613,  613,  613,  613,  830,  153,  830,  153,  830,  153,
1524       830,  153,  830,  830,  153,  153,  830,  248,  598,  596,
1525       830,  830,  830,  830,  830,  830,  830,  830,  153,  830,
1526       154,  830,  830,  830,  830,  830,  153,  248,  153,  153,
1527       830,  153,  830,  153,  830,  153,  830,  830,  153,  153,
1528       830,  248,  598,  596,  830,  830,  830,  830,  830,  830,
1529       830,  830,  153,  830,  154,  830,  830,  830,  830,  830,
1530 
1531       153,  248,  153,  621,  621,  830,  830,  830,  830,  830,
1532       830,  621,  621,  621,  621,  621,  621,  621,  621,  621,
1533       621,  621,  621,  621,  621,  621,  621,  621,   99,  830,
1534        99,  830,   99,  830,   99,  830,  830,   99,   99,  830,
1535       123,  622,  597,  830,  830,  830,  830,  830,  830,  830,
1536       830,   99,  830,  101,  830,  830,  830,  830,  830,   99,
1537       123,   99,   99,  830,   99,  830,   99,  830,   99,  830,
1538       830,   99,   99,  830,  188,  622,  597,  623,  623,  623,
1539       623,  623,  623,  830,  830,   99,  830,  101,  623,  623,
1540       830,  830,  830,   99,  188,   99,  624,  624,  624,  624,
1541 
1542       624,  624,  624,  624,  624,  624,  624,  624,  624,  624,
1543       624,  624,  624,   99,  830,   99,  830,   99,  830,   99,
1544       830,  830,   99,   99,  830,  123,  622,  597,  627,  627,
1545       627,  627,  627,  627,  269,  830,   99,  830,  101,  623,
1546       623,  830,  830,  830,   99,  123,   99,  623,  623,  623,
1547       623,  623,  623,  623,  623,  623,  623,  623,  623,  623,
1548       623,  623,  623,  623,  635,  635,  830,  830,  830,  830,
1549       830,  830,  635,  635,  635,  635,  635,  635,  635,  635,
1550       635,  635,  635,  635,  635,  635,  635,  635,  635,  639,
1551       639,  639,  639,  639,  639,  830,  830,  830,  830,  830,
1552 
1553       639,  830,  830,  830,  830,  830,  830,  830,  639,  639,
1554       639,  639,  639,  639,  639,  639,  639,  639,  639,  830,
1555       830,  830,  830,  830,  639,  830,  830,  830,  830,  830,
1556       830,  830,  640,  640,  640,  640,  640,  166,  830,  166,
1557       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
1558       830,  650,  650,  650,  650,  650,  650,  830,  830,  830,
1559       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
1560       830,  830,  830,  651,  225,  830,  225,  830,  830,  830,
1561       830,  830,  830,  226,  830,  226,  830,  830,  652,  652,
1562       652,  652,  652,  652,  153,  830,  153,  830,  153,  830,
1563 
1564       153,  830,  830,  153,  153,  830,  153,  649,  830,  830,
1565       830,  830,  830,  830,  830,  830,  830,  153,  830,  154,
1566       830,  830,  830,  830,  830,  153,  153,  153,  153,  830,
1567       153,  830,  153,  830,  153,  830,  830,  153,  153,  830,
1568       153,  654,  830,  830,  830,  830,  830,  830,  830,  830,
1569       830,  153,  830,  154,  830,  830,  830,  830,  830,  153,
1570       153,  153,   99,  830,   99,  830,   99,  830,   99,  830,
1571       830,   99,   99,  830,   99,  654,  830,  830,  830,  830,
1572       830,  830,  830,  830,  830,   99,  830,  101,  830,  830,
1573       830,  830,  830,   99,   99,   99,  153,  830,  153,  830,
1574 
1575       153,  830,  153,  830,  830,  153,  153,  830,  163,  649,
1576       653,  830,  830,  830,  830,  830,  830,  830,  830,  153,
1577       830,  154,  830,  830,  830,  830,  830,  153,  163,  153,
1578       153,  830,  153,  830,  153,  830,  153,  830,  830,  153,
1579       153,  830,  163,  657,  653,  830,  830,  830,  830,  830,
1580       830,  830,  830,  153,  830,  154,  830,  830,  830,  830,
1581       830,  153,  163,  153,  659,  830,  659,  100,  830,  660,
1582       660,  660,  660,  660,  660,  830,  830,  830,  830,  154,
1583       166,  830,  166,  830,  830,  830,  830,  830,  830,  830,
1584       830,  830,  665,  830,  666,  666,  666,  666,  666,  666,
1585 
1586       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
1587       830,  830,  830,  830,  830,  830,  667,  225,  830,  225,
1588       830,  830,  830,  830,  830,  830,  289,  830,  291,  830,
1589       830,  668,  668,  668,  668,  668,  668,   99,  830,   99,
1590       830,   99,  830,   99,  830,  830,   99,   99,  830,  110,
1591       670,  655,  671,  671,  671,  671,  671,  671,  367,  830,
1592        99,  830,  101,  672,  672,  830,  830,  830,   99,  110,
1593        99,  672,  672,  672,  672,  672,  672,  672,  672,  672,
1594       672,  672,  672,  672,  672,  672,  672,  672,  657,  830,
1595       672,  672,  672,  672,  672,  672,  830,  153,  830,  153,
1596 
1597       830,  153,  830,  153,  830,  830,  153,  153,  830,  248,
1598       657,  653,  830,  830,  830,  830,  830,  830,  830,  830,
1599       153,  830,  154,  830,  830,  830,  830,  830,  153,  248,
1600       153,  153,  830,  153,  830,  153,  830,  153,  830,  830,
1601       153,  153,  830,  248,  657,  653,  830,  830,  830,  830,
1602       830,  830,  830,  830,  153,  830,  154,  830,  830,  830,
1603       830,  830,  153,  248,  153,  153,  830,  153,  830,  153,
1604       830,  153,  830,  830,  153,  153,  830,  163,  649,  653,
1605       656,  656,  656,  656,  656,  656,  830,  830,  153,  830,
1606       154,  678,  678,  830,  830,  830,  153,  163,  153,  678,
1607 
1608       678,  678,  678,  678,  678,  678,  678,  678,  678,  678,
1609       678,  678,  678,  678,  678,  678,   99,  830,   99,  830,
1610        99,  830,   99,  830,  830,   99,   99,  830,  123,  679,
1611       655,  830,  830,  830,  830,  830,  830,  830,  830,   99,
1612       830,  101,  830,  830,  830,  830,  830,   99,  123,   99,
1613        99,  830,   99,  830,   99,  830,   99,  830,  830,   99,
1614        99,  830,  188,  679,  655,  680,  680,  680,  680,  680,
1615       680,  830,  830,   99,  830,  101,  680,  680,  830,  830,
1616       830,   99,  188,   99,  681,  681,  681,  681,  681,  681,
1617       681,  681,  681,  681,  681,  681,  681,  681,  681,  681,
1618 
1619       681,   99,  830,   99,  830,   99,  830,   99,  830,  830,
1620        99,   99,  830,  123,  679,  655,  683,  683,  683,  683,
1621       683,  683,  269,  830,   99,  830,  101,  680,  680,  830,
1622       830,  830,   99,  123,   99,  680,  680,  680,  680,  680,
1623       680,  680,  680,  680,  680,  680,  680,  680,  680,  680,
1624       680,  680,  183,  183,  183,  183,  183,  183,  830,  830,
1625       830,  830,  830,  183,  830,  830,  830,  830,  830,  830,
1626       830,  183,  183,  183,  183,  183,  686,  686,  686,  686,
1627       686,  686,  830,  830,  830,  830,  830,  686,  830,  830,
1628       830,  830,  830,  830,  830,  686,  686,  686,  686,  686,
1629 
1630       686,  686,  686,  686,  686,  686,  830,  830,  830,  830,
1631       830,  686,  830,  830,  830,  830,  830,  830,  830,  687,
1632       687,  687,  687,  687,  166,  830,  166,  830,  830,  830,
1633       830,  830,  830,  830,  830,  830,  830,  830,  694,  694,
1634       694,  694,  694,  694,  830,  830,  830,  830,  830,  830,
1635       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
1636       695,  225,  830,  225,  830,  830,  830,  830,  830,  830,
1637       226,  830,  226,  830,  830,  696,  696,  696,  696,  696,
1638       696,  153,  830,  153,  830,  153,  830,  153,  830,  830,
1639       153,  153,  830,  153,  697,  830,  830,  830,  830,  830,
1640 
1641       830,  830,  830,  830,  153,  830,  154,  830,  830,  830,
1642       830,  830,  153,  153,  153,  153,  830,  153,  830,  153,
1643       830,  153,  830,  830,  153,  153,  830,  153,  693,  830,
1644       830,  830,  830,  830,  830,  830,  830,  830,  153,  830,
1645       154,  830,  830,  830,  830,  830,  153,  153,  153,   99,
1646       830,   99,  830,   99,  830,   99,  830,  830,   99,   99,
1647       830,   99,  697,  830,  830,  830,  830,  830,  830,  830,
1648       830,  830,   99,  830,  101,  830,  830,  830,  830,  830,
1649        99,   99,   99,  153,  830,  153,  830,  153,  830,  153,
1650       830,  830,  153,  153,  830,  163,  700,  698,  830,  830,
1651 
1652       830,  830,  830,  830,  830,  830,  153,  830,  154,  830,
1653       830,  830,  830,  830,  153,  163,  153,  153,  830,  153,
1654       830,  153,  830,  153,  830,  830,  153,  153,  830,  163,
1655       693,  698,  830,  830,  830,  830,  830,  830,  830,  830,
1656       153,  830,  154,  830,  830,  830,  830,  830,  153,  163,
1657       153,  697,  830,  702,  702,  702,  702,  702,  702,  830,
1658       830,  830,  830,  830,  830,  830,  830,  830,  830,  601,
1659       703,  100,  830,  660,  660,  660,  660,  660,  660,  830,
1660       830,  830,  830,  154,  700,  704,  705,  705,  705,  705,
1661       705,  705,  166,  830,  166,  830,  830,  830,  830,  830,
1662 
1663       830,  830,  830,  830,  708,  830,  709,  709,  709,  709,
1664       709,  709,  830,  830,  830,  830,  830,  830,  830,  830,
1665       830,  830,  830,  830,  830,  830,  830,  830,  710,  225,
1666       830,  225,  830,  830,  830,  830,  830,  830,  289,  830,
1667       291,  700,  830,  711,  711,  711,  711,  711,  711,   99,
1668       830,   99,  830,   99,  830,   99,  830,  830,   99,   99,
1669       830,  110,  713,  699,  714,  714,  714,  714,  714,  714,
1670       367,  830,   99,  830,  101,  715,  715,  830,  830,  830,
1671        99,  110,   99,  715,  715,  715,  715,  715,  715,  715,
1672       715,  715,  715,  715,  715,  715,  715,  715,  715,  715,
1673 
1674       700,  830,  715,  715,  715,  715,  715,  715,  830,  153,
1675       830,  153,  830,  153,  830,  153,  830,  830,  153,  153,
1676       830,  248,  700,  698,  830,  830,  830,  830,  830,  830,
1677       830,  830,  153,  830,  154,  830,  830,  830,  830,  830,
1678       153,  248,  153,  153,  830,  153,  830,  153,  830,  153,
1679       830,  830,  153,  153,  830,  248,  700,  698,  830,  830,
1680       830,  830,  830,  830,  830,  830,  153,  830,  154,  830,
1681       830,  830,  830,  830,  153,  248,  153,  723,  723,  830,
1682       830,  830,  830,  830,  830,  723,  723,  723,  723,  723,
1683       723,  723,  723,  723,  723,  723,  723,  723,  723,  723,
1684 
1685       723,  723,   99,  830,   99,  830,   99,  830,   99,  830,
1686       830,   99,   99,  830,  123,  724,  699,  830,  830,  830,
1687       830,  830,  830,  830,  830,   99,  830,  101,  830,  830,
1688       830,  830,  830,   99,  123,   99,   99,  830,   99,  830,
1689        99,  830,   99,  830,  830,   99,   99,  830,  188,  724,
1690       699,  725,  725,  725,  725,  725,  725,  830,  830,   99,
1691       830,  101,  725,  725,  830,  830,  830,   99,  188,   99,
1692       726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
1693       726,  726,  726,  726,  726,  726,  726,   99,  830,   99,
1694       830,   99,  830,   99,  830,  830,   99,   99,  830,  123,
1695 
1696       724,  699,  727,  727,  727,  727,  727,  727,  269,  830,
1697        99,  830,  101,  725,  725,  830,  830,  830,   99,  123,
1698        99,  725,  725,  725,  725,  725,  725,  725,  725,  725,
1699       725,  725,  725,  725,  725,  725,  725,  725,  730,  730,
1700       730,  730,  730,  730,  830,  830,  830,  830,  830,  730,
1701       830,  830,  830,  830,  830,  830,  830,  730,  730,  730,
1702       730,  730,  730,  730,  730,  730,  730,  730,  830,  830,
1703       830,  830,  830,  730,  830,  830,  830,  830,  830,  830,
1704       830,  731,  731,  731,  731,  731,  166,  830,  166,  830,
1705       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
1706 
1707       737,  737,  737,  737,  737,  737,  830,  830,  830,  830,
1708       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
1709       830,  830,  738,  225,  830,  225,  830,  830,  830,  830,
1710       830,  830,  226,  830,  226,  830,  830,  739,  739,  739,
1711       739,  739,  739,  153,  830,  153,  830,  153,  830,  153,
1712       830,  830,  153,  153,  830,  153,  736,  830,  830,  830,
1713       830,  830,  830,  830,  830,  830,  153,  830,  154,  830,
1714       830,  830,  830,  830,  153,  153,  153,  153,  830,  153,
1715       830,  153,  830,  153,  830,  830,  153,  153,  830,  153,
1716       741,  830,  830,  830,  830,  830,  830,  830,  830,  830,
1717 
1718       153,  830,  154,  830,  830,  830,  830,  830,  153,  153,
1719       153,   99,  830,   99,  830,   99,  830,   99,  830,  830,
1720        99,   99,  830,   99,  741,  830,  830,  830,  830,  830,
1721       830,  830,  830,  830,   99,  830,  101,  830,  830,  830,
1722       830,  830,   99,   99,   99,  153,  830,  153,  830,  153,
1723       830,  153,  830,  830,  153,  153,  830,  163,  736,  740,
1724       830,  830,  830,  830,  830,  830,  830,  830,  153,  830,
1725       154,  830,  830,  830,  830,  830,  153,  163,  153,  153,
1726       830,  153,  830,  153,  830,  153,  830,  830,  153,  153,
1727       830,  163,  744,  740,  830,  830,  830,  830,  830,  830,
1728 
1729       830,  830,  153,  830,  154,  830,  830,  830,  830,  830,
1730       153,  163,  153,  166,  830,  166,  830,  830,  830,  830,
1731       830,  830,  830,  830,  830,  751,  830,  752,  752,  752,
1732       752,  752,  752,  830,  830,  830,  830,  830,  830,  830,
1733       830,  830,  830,  830,  830,  830,  830,  830,  830,  753,
1734       225,  830,  225,  830,  830,  830,  830,  830,  830,  289,
1735       830,  291,  830,  830,  754,  754,  754,  754,  754,  754,
1736        99,  830,   99,  830,   99,  830,   99,  830,  830,   99,
1737        99,  830,  110,  756,  742,  757,  757,  757,  757,  757,
1738       757,  367,  830,   99,  830,  101,  758,  758,  830,  830,
1739 
1740       830,   99,  110,   99,  758,  758,  758,  758,  758,  758,
1741       758,  758,  758,  758,  758,  758,  758,  758,  758,  758,
1742       758,  744,  830,  758,  758,  758,  758,  758,  758,  830,
1743       153,  830,  153,  830,  153,  830,  153,  830,  830,  153,
1744       153,  830,  248,  744,  740,  830,  830,  830,  830,  830,
1745       830,  830,  830,  153,  830,  154,  830,  830,  830,  830,
1746       830,  153,  248,  153,  153,  830,  153,  830,  153,  830,
1747       153,  830,  830,  153,  153,  830,  248,  744,  740,  830,
1748       830,  830,  830,  830,  830,  830,  830,  153,  830,  154,
1749       830,  830,  830,  830,  830,  153,  248,  153,  153,  830,
1750 
1751       153,  830,  153,  830,  153,  830,  830,  153,  153,  830,
1752       163,  736,  740,  743,  743,  743,  743,  743,  743,  830,
1753       830,  153,  830,  154,  764,  764,  830,  830,  830,  153,
1754       163,  153,  764,  764,  764,  764,  764,  764,  764,  764,
1755       764,  764,  764,  764,  764,  764,  764,  764,  764,   99,
1756       830,   99,  830,   99,  830,   99,  830,  830,   99,   99,
1757       830,  123,  765,  742,  830,  830,  830,  830,  830,  830,
1758       830,  830,   99,  830,  101,  830,  830,  830,  830,  830,
1759        99,  123,   99,   99,  830,   99,  830,   99,  830,   99,
1760       830,  830,   99,   99,  830,  188,  765,  742,  766,  766,
1761 
1762       766,  766,  766,  766,  830,  830,   99,  830,  101,  766,
1763       766,  830,  830,  830,   99,  188,   99,  767,  767,  767,
1764       767,  767,  767,  767,  767,  767,  767,  767,  767,  767,
1765       767,  767,  767,  767,   99,  830,   99,  830,   99,  830,
1766        99,  830,  830,   99,   99,  830,  123,  765,  742,  768,
1767       768,  768,  768,  768,  768,  269,  830,   99,  830,  101,
1768       766,  766,  830,  830,  830,   99,  123,   99,  766,  766,
1769       766,  766,  766,  766,  766,  766,  766,  766,  766,  766,
1770       766,  766,  766,  766,  766,  772,  772,  772,  772,  772,
1771       772,  830,  830,  830,  830,  830,  772,  830,  830,  830,
1772 
1773       830,  830,  830,  830,  772,  772,  772,  772,  772,  772,
1774       772,  772,  772,  772,  772,  830,  830,  830,  830,  830,
1775       772,  830,  830,  830,  830,  830,  830,  830,  773,  773,
1776       773,  773,  773,  153,  830,  830,  153,  153,  153,  153,
1777       153,  153,  153,  830,  153,  830,  153,  830,  153,  830,
1778       830,  153,  153,  830,  830,  130,  153,  830,  830,  830,
1779       830,  830,  830,  830,  830,  153,  830,  154,  830,  830,
1780       830,  830,  830,  153,  830,  153,  153,  830,  153,  830,
1781       153,  830,  153,  830,  830,  153,  153,  830,  830,  830,
1782       153,  830,  830,  830,  830,  830,  830,  830,  830,  153,
1783 
1784       830,  154,  830,  830,  830,  830,  830,  153,  830,  153,
1785       153,  830,  830,  781,  781,  781,  781,  781,  781,  830,
1786       830,  830,  830,  830,  830,  830,  830,  830,  830,  601,
1787       130,  782,  783,  783,  783,  783,  783,  783,  166,  830,
1788       166,  830,  830,  830,  830,  830,  830,  830,  830,  830,
1789       786,  830,  787,  787,  787,  787,  787,  787,  830,  830,
1790       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
1791       830,  830,  830,  830,  220,  225,  830,  225,  830,  830,
1792       830,  830,  830,  830,  289,  830,  291,  130,  830,  292,
1793       292,  292,  292,  292,  292,   99,  830,   99,  830,   99,
1794 
1795       830,   99,  830,  830,   99,   99,  830,  110,  789,   99,
1796       790,  790,  790,  790,  790,  790,  367,  830,   99,  830,
1797       101,  110,  110,  830,  830,  830,   99,  110,   99,  110,
1798       110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
1799       110,  110,  110,  110,  110,  110,  130,  830,  110,  110,
1800       110,  110,  110,  110,  830,  153,  830,  153,  830,  153,
1801       830,  153,  830,  830,  153,  153,  830,  248,  130,  153,
1802       830,  830,  830,  830,  830,  830,  830,  830,  153,  830,
1803       154,  830,  830,  830,  830,  830,  153,  248,  153,  153,
1804       830,  153,  830,  153,  830,  153,  830,  830,  153,  153,
1805 
1806       830,  248,  130,  153,  830,  830,  830,  830,  830,  830,
1807       830,  830,  153,  830,  154,  830,  830,  830,  830,  830,
1808       153,  248,  153,  319,  319,  830,  830,  830,  830,  830,
1809       830,  319,  319,  319,  319,  319,  319,  319,  319,  319,
1810       319,  319,  319,  319,  319,  319,  319,  319,  183,  183,
1811       183,  183,  183,  183,  830,  830,  830,  830,  830,  183,
1812       830,  830,  830,  830,  830,  830,  830,  183,  183,  183,
1813       183,  183,  183,  183,  183,  183,  183,  183,  830,  830,
1814       830,  830,  830,  183,  830,  830,  830,  830,  830,  830,
1815       830,  254,  254,  254,  254,  254,  798,  798,  798,  798,
1816 
1817       798,  798,  830,  830,  830,  830,  830,  798,  830,  830,
1818       830,  830,  830,  830,  830,  798,  798,  798,  798,  798,
1819       798,  798,  798,  798,  798,  798,  830,  830,  830,  830,
1820       830,  798,  830,  830,  830,  830,  830,  830,  830,  799,
1821       799,  799,  799,  799,  805,  805,  805,  805,  805,  805,
1822       830,  830,  830,  830,  830,  805,  830,  830,  830,  830,
1823       830,  830,  830,  805,  805,  805,  805,  805,  805,  805,
1824       805,  805,  805,  805,  830,  830,  830,  830,  830,  805,
1825       830,  830,  830,  830,  830,  830,  830,  806,  806,  806,
1826       806,  806,   18,   18,   18,   18,   18,   18,   18,   18,
1827 
1828        18,   18,   18,   18,   18,   18,   18,   18,   18,   24,
1829        24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
1830        24,   24,   24,   24,   24,   24,   28,   28,   28,   28,
1831        28,   28,   28,   28,   28,   28,   28,   28,   28,   28,
1832        28,   28,   28,   38,   38,   38,   38,   38,   38,   38,
1833        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
1834        41,   41,   41,   41,   41,   41,   41,   41,   41,   41,
1835        41,   41,   41,   41,   41,   41,   41,   64,   64,   64,
1836        64,   64,   64,   64,   64,   64,   64,   64,   64,   64,
1837        64,   64,   64,   64,   71,   71,  830,   71,   71,   71,
1838 
1839        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
1840        71,   75,  830,  830,   75,   75,  830,   75,   75,   75,
1841        75,   77,   77,  830,   77,  830,   77,   77,   77,   77,
1842        77,   77,   77,   77,   77,   77,   77,   77,   78,   78,
1843        78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
1844        78,   78,   78,   78,   78,   91,   91,  830,   91,   91,
1845        91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
1846        91,   91,   94,   94,  830,   94,   94,   94,   94,   94,
1847        94,   94,   94,   94,   94,   94,   94,   94,   94,   96,
1848        96,  830,   96,   96,   96,   96,   96,   96,   96,   96,
1849 
1850        96,   96,   96,   96,   96,   96,   97,  830,  830,  830,
1851        97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
1852        97,   97,   97,   98,   98,  830,   98,   98,   98,   98,
1853        98,   98,   98,   98,   98,   98,   98,   98,   98,   98,
1854        99,  830,   99,  830,  830,  830,   99,   99,   99,   99,
1855        99,  830,   99,   99,   99,   99,   99,  104,  104,  830,
1856       830,  830,  104,  104,  104,  104,  104,  104,  104,  830,
1857       104,  104,  104,  104,  105,  105,  105,  105,  105,  105,
1858       105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
1859       105,  113,  113,  113,  830,  830,  113,  113,  830,  113,
1860 
1861       116,  830,  116,  830,  830,  830,  116,  116,  116,  116,
1862       116,  830,  116,  116,  116,  116,  116,  141,  141,  830,
1863       141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
1864       141,  141,  141,  141,  153,  830,  153,  830,  830,  830,
1865       153,  153,  830,  153,  153,  830,  153,  153,  153,  153,
1866       153,  158,  158,  158,  158,  158,  158,  158,  158,  158,
1867       158,  158,  158,  158,  158,  158,  158,  158,  165,  165,
1868       165,  830,  830,  165,  165,  830,  165,  169,  830,  169,
1869       830,  830,  830,  169,  169,  169,  169,  169,  830,  169,
1870       169,  169,  169,  169,  171,  830,  171,  830,  830,  830,
1871 
1872       171,  171,  171,  171,  171,  830,  171,  171,  171,  171,
1873       171,  182,  182,  830,  830,  182,  830,  830,  182,  183,
1874       830,  183,  830,  830,  830,  183,  183,  183,  183,  183,
1875       830,  183,  183,  183,  183,  183,  141,  141,  830,  141,
1876       141,  141,  141,  141,  141,  141,  141,  141,  141,  141,
1877       141,  141,  141,  221,  221,  221,  830,  830,  221,  221,
1878       830,  221,  229,  830,  229,  830,  830,  830,  229,  229,
1879       229,  229,  229,  830,  229,  229,  229,  229,  229,  230,
1880       830,  230,  830,  830,  830,  230,  230,  230,  230,  230,
1881       830,  230,  230,  230,  230,  230,  245,  245,  245,  830,
1882 
1883       245,  830,  830,  245,  249,  830,  249,  830,  830,  830,
1884       249,  249,  249,  249,  249,  830,  249,  249,  249,  249,
1885       249,  283,  830,  283,  830,  830,  830,  283,  283,  830,
1886       283,  283,  830,  283,  283,  283,  283,  283,  285,  830,
1887       830,  285,  830,  830,  285,  285,  285,  285,  293,  293,
1888       293,  830,  830,  293,  293,  830,  293,  294,  830,  294,
1889       830,  830,  294,  294,  830,  830,  294,  298,  830,  298,
1890       830,  830,  830,  298,  298,  298,  298,  298,  830,  298,
1891       298,  298,  298,  298,  300,  830,  300,  830,  830,  830,
1892       300,  300,  300,  300,  300,  830,  300,  300,  300,  300,
1893 
1894       300,  313,  313,  830,  313,  830,  830,  313,  317,  317,
1895       317,  830,  317,  830,  830,  317,  318,  830,  830,  318,
1896       830,  830,  318,  320,  830,  320,  830,  830,  830,  320,
1897       320,  320,  320,  320,  830,  320,  320,  320,  320,  320,
1898       321,  830,  321,  830,  830,  830,  321,  321,  321,  321,
1899       321,  830,  321,  321,  321,  321,  321,  324,  830,  324,
1900       830,  830,  830,  324,  324,  324,  324,  324,  324,  324,
1901       324,  324,  324,  324,  266,  830,  266,  830,  830,  830,
1902       266,  266,  266,  266,  266,  266,  266,  266,  266,  266,
1903       266,  277,  830,  277,  830,  830,  830,  277,  277,  277,
1904 
1905       277,  277,  277,  277,  277,  277,  277,  277,   99,  830,
1906        99,  830,  830,  830,   99,   99,   99,   99,   99,  830,
1907        99,   99,   99,   99,   99,  283,  830,  283,  830,  830,
1908       830,  283,  283,  283,  283,  283,  830,  283,  283,  283,
1909       283,  283,  285,  285,  830,  285,  830,  830,  285,  285,
1910       285,  285,  153,  830,  153,  830,  830,  830,  153,  153,
1911       153,  153,  153,  830,  153,  153,  153,  153,  153,  350,
1912       350,  350,  830,  830,  350,  350,  830,  350,  355,  830,
1913       355,  830,  830,  830,  355,  355,  355,  355,  355,  830,
1914       355,  355,  355,  355,  355,  356,  830,  356,  830,  830,
1915 
1916       830,  356,  356,  356,  356,  356,  830,  356,  356,  356,
1917       356,  356,  371,  371,  830,  371,  830,  830,  371,  373,
1918       373,  373,  830,  373,  830,  830,  373,  374,  374,  374,
1919       830,  374,  830,  830,  374,  376,  830,  376,  830,  830,
1920       830,  376,  376,  376,  376,  376,  830,  376,  376,  376,
1921       376,  376,  379,  830,  379,  830,  830,  830,  379,  379,
1922       379,  379,  379,  830,  379,  379,  379,  379,  379,  410,
1923       830,  830,  410,  830,  830,  410,  410,  410,  410,  413,
1924       413,  413,  830,  830,  413,  413,  830,  413,  417,  830,
1925       417,  830,  830,  830,  417,  417,  417,  417,  417,  830,
1926 
1927       417,  417,  417,  417,  417,  419,  830,  419,  830,  830,
1928       830,  419,  419,  419,  419,  419,  830,  419,  419,  419,
1929       419,  419,  433,  433,  830,  433,  830,  830,  433,  434,
1930       434,  830,  434,  830,  830,  434,  435,  435,  435,  830,
1931       435,  830,  830,  435,  436,  830,  830,  436,  830,  830,
1932       436,  437,  830,  437,  830,  830,  830,  437,  437,  437,
1933       437,  437,  830,  437,  437,  437,  437,  437,  440,  830,
1934       440,  830,  830,  830,  440,  440,  440,  440,  440,  830,
1935       440,  440,  440,  440,  440,  395,  830,  395,  830,  830,
1936       830,  395,  395,  395,  395,  395,  395,  395,  395,  395,
1937 
1938       395,  395,  400,  830,  400,  830,  830,  830,  400,  400,
1939       400,  400,  400,  400,  400,  400,  400,  400,  400,  406,
1940       830,  406,  830,  830,  830,  406,  406,  406,  406,  406,
1941       406,  406,  406,  406,  406,  406,  470,  470,  470,  830,
1942       830,  470,  470,  830,  470,  475,  830,  475,  830,  830,
1943       830,  475,  475,  475,  475,  475,  830,  475,  475,  475,
1944       475,  475,  476,  830,  476,  830,  830,  830,  476,  476,
1945       476,  476,  476,  830,  476,  476,  476,  476,  476,  490,
1946       490,  830,  490,  830,  830,  490,  491,  491,  830,  491,
1947       830,  830,  491,  493,  493,  493,  830,  493,  830,  830,
1948 
1949       493,  494,  494,  494,  830,  494,  830,  830,  494,  496,
1950       830,  496,  830,  830,  830,  496,  496,  496,  496,  496,
1951       830,  496,  496,  496,  496,  496,  499,  830,  499,  830,
1952       830,  830,  499,  499,  499,  499,  499,  830,  499,  499,
1953       499,  499,  499,  509,  830,  830,  509,  830,  830,  509,
1954       509,  509,  509,  514,  830,  830,  514,  830,  830,  514,
1955       514,  514,  514,  534,  534,  534,  830,  830,  534,  534,
1956       830,  534,  538,  830,  538,  830,  830,  830,  538,  538,
1957       538,  538,  538,  830,  538,  538,  538,  538,  538,  540,
1958       830,  540,  830,  830,  830,  540,  540,  540,  540,  540,
1959 
1960       830,  540,  540,  540,  540,  540,  541,  830,  541,  830,
1961       830,  830,  541,  541,  541,  541,  541,  830,  541,  541,
1962       541,  541,  541,  556,  556,  830,  556,  830,  830,  556,
1963       557,  557,  830,  557,  830,  830,  557,  558,  558,  558,
1964       830,  558,  830,  830,  558,  559,  830,  830,  559,  830,
1965       830,  559,  560,  830,  560,  830,  830,  830,  560,  560,
1966       560,  560,  560,  830,  560,  560,  560,  560,  560,  563,
1967       830,  563,  830,  830,  830,  563,  563,  563,  563,  563,
1968       830,  563,  563,  563,  563,  563,  568,  830,  830,  568,
1969       830,  830,  568,  568,  568,  568,  586,  830,  830,  586,
1970 
1971       830,  830,  586,  586,  586,  586,  591,  591,  591,  830,
1972       830,  591,  591,  830,  591,  596,  830,  596,  830,  830,
1973       830,  596,  596,  596,  596,  596,  830,  596,  596,  596,
1974       596,  596,  597,  830,  597,  830,  830,  830,  597,  597,
1975       597,  597,  597,  830,  597,  597,  597,  597,  597,  599,
1976       830,  599,  830,  830,  830,  599,  599,  599,  599,  599,
1977       830,  599,  599,  599,  599,  599,  610,  830,  610,  830,
1978       830,  830,  830,  830,  830,  610,  614,  614,  830,  614,
1979       830,  830,  614,  615,  615,  830,  615,  830,  830,  615,
1980       617,  617,  617,  830,  617,  830,  830,  617,  618,  618,
1981 
1982       618,  830,  618,  830,  830,  618,  620,  830,  620,  830,
1983       830,  830,  620,  620,  620,  620,  620,  830,  620,  620,
1984       620,  620,  620,  623,  830,  623,  830,  830,  830,  623,
1985       623,  623,  623,  623,  830,  623,  623,  623,  623,  623,
1986       629,  830,  830,  629,  830,  830,  629,  629,  629,  629,
1987       632,  830,  830,  632,  830,  830,  632,  632,  632,  632,
1988       634,  830,  830,  634,  830,  830,  634,  634,  634,  634,
1989       649,  649,  649,  830,  830,  649,  649,  830,  649,  653,
1990       830,  653,  830,  830,  830,  653,  653,  653,  653,  653,
1991       830,  653,  653,  653,  653,  653,  655,  830,  655,  830,
1992 
1993       830,  830,  655,  655,  655,  655,  655,  830,  655,  655,
1994       655,  655,  655,  656,  830,  656,  830,  830,  830,  656,
1995       656,  656,  656,  656,  830,  656,  656,  656,  656,  656,
1996       153,  830,  153,  830,  830,  830,  153,  153,  153,  153,
1997       153,  830,  153,  153,  153,  153,  153,  673,  673,  830,
1998       673,  830,  830,  673,  674,  674,  830,  674,  830,  830,
1999       674,  675,  675,  675,  830,  675,  830,  830,  675,  676,
2000       830,  830,  676,  830,  830,  676,  677,  830,  677,  830,
2001       830,  830,  677,  677,  677,  677,  677,  830,  677,  677,
2002       677,  677,  677,  680,  830,  680,  830,  830,  830,  680,
2003 
2004       680,  680,  680,  680,  830,  680,  680,  680,  680,  680,
2005       693,  693,  693,  830,  830,  693,  693,  830,  693,  698,
2006       830,  698,  830,  830,  830,  698,  698,  698,  698,  698,
2007       830,  698,  698,  698,  698,  698,  699,  830,  699,  830,
2008       830,  830,  699,  699,  699,  699,  699,  830,  699,  699,
2009       699,  699,  699,  701,  830,  701,  830,  830,  830,  701,
2010       701,  701,  701,  701,  830,  701,  701,  701,  701,  701,
2011       716,  716,  830,  716,  830,  830,  716,  717,  717,  830,
2012       717,  830,  830,  717,  719,  719,  719,  830,  719,  830,
2013       830,  719,  720,  720,  720,  830,  720,  830,  830,  720,
2014 
2015       722,  830,  722,  830,  830,  830,  722,  722,  722,  722,
2016       722,  830,  722,  722,  722,  722,  722,  725,  830,  725,
2017       830,  830,  830,  725,  725,  725,  725,  725,  830,  725,
2018       725,  725,  725,  725,  736,  736,  736,  830,  830,  736,
2019       736,  830,  736,  740,  830,  740,  830,  830,  830,  740,
2020       740,  740,  740,  740,  830,  740,  740,  740,  740,  740,
2021       742,  830,  742,  830,  830,  830,  742,  742,  742,  742,
2022       742,  830,  742,  742,  742,  742,  742,  743,  830,  743,
2023       830,  830,  830,  743,  743,  743,  743,  743,  830,  743,
2024       743,  743,  743,  743,  759,  759,  830,  759,  830,  830,
2025 
2026       759,  760,  760,  830,  760,  830,  830,  760,  761,  761,
2027       761,  830,  761,  830,  830,  761,  762,  830,  830,  762,
2028       830,  830,  762,  763,  830,  763,  830,  830,  830,  763,
2029       763,  763,  763,  763,  830,  763,  763,  763,  763,  763,
2030       766,  830,  766,  830,  830,  830,  766,  766,  766,  766,
2031       766,  830,  766,  766,  766,  766,  766,  770,  830,  830,
2032       770,  830,  830,  770,  770,  770,  770,  776,  830,  830,
2033       776,  830,  830,  776,  776,  776,  776,  779,  830,  830,
2034       779,  830,  830,  779,  779,  779,  779,  780,  830,  780,
2035       830,  830,  830,  830,  830,  830,  780,  830,  830,  830,
2036 
2037       830,  830,  780,  294,  830,  294,  830,  830,  294,  294,
2038       830,  830,  294,   99,  830,   99,  830,  830,  830,   99,
2039        99,   99,   99,   99,  830,   99,   99,   99,   99,   99,
2040       163,  830,  163,  830,  830,  830,  163,  163,  163,  163,
2041       163,  830,  163,  163,  163,  163,  163,  791,  791,  830,
2042       791,  830,  830,  791,  792,  792,  830,  792,  830,  830,
2043       792,  794,  794,  794,  830,  794,  830,  830,  794,  795,
2044       795,  795,  830,  795,  830,  830,  795,  320,  830,  320,
2045       830,  830,  830,  320,  320,  320,  320,  320,  830,  320,
2046       320,  320,  320,  320,  801,  801,  830,  801,  830,  830,
2047 
2048       801,  802,  802,  830,  802,  830,  830,  802,  803,  803,
2049       803,  830,  803,  830,  830,  803,  804,  830,  830,  804,
2050       830,  830,  804,  808,  808,  830,  808,  830,  830,  808,
2051       810,  810,  830,  830,  810,  830,  830,  810,  811,  811,
2052       811,  830,  811,  830,  830,  811,  812,  812,  830,  830,
2053       812,  830,  830,  812,  816,  816,  830,  830,  816,  830,
2054       830,  816,  817,  817,  830,  830,  817,  830,  830,  817,
2055       822,  822,  830,  830,  822,  830,  830,  822,  823,  823,
2056       830,  830,  823,  830,  830,  823,   17,  830,  830,  830,
2057       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
2058 
2059       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
2060       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
2061       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
2062       830,  830,  830,  830,  830,  830,  830,  830
2063     } ;
2064 
2065 static yyconst short int yy_chk[11839] =
2066     {   0,
2067         0,    0,    1,   14,   14,   14,    1,    2,    2,    2,
2068         3,    4,    2,    3,    4,    7,    7,    7,    0,   23,
2069         7,    8,    8,    8,  826,   29,    8,   29,   23,    9,
2070         9,    9,    2,    2,    9,   34,   34,    3,    4,   23,
2071         2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
2072         2,    2,    2,    2,    2,    2,    2,    5,    5,    5,
2073         5,  823,    5,    5,  822,    5,    5,  817,    5,    5,
2074         5,   10,   10,   10,   36,   36,   10,   44,    5,    5,
2075         5,   21,   21,   21,    5,    6,    6,    6,    6,   44,
2076         6,    6,   99,    6,    6,   60,    6,    6,    6,   39,
2077 
2078        30,   39,   30,   60,   99,   30,    6,    6,    6,   30,
2079        62,   62,    6,   11,   11,   11,   11,   11,   11,   11,
2080        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
2081        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
2082        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
2083        11,   11,   11,   11,   11,   11,   11,   11,   11,   11,
2084        11,   11,   11,   11,   15,  816,   15,   15,   15,   15,
2085        15,   15,   42,   43,   42,   43,   45,   59,   45,   59,
2086       335,  335,   15,   16,  812,   16,   16,   16,   16,   16,
2087        16,   52,   52,   52,   52,   52,   52,   66,   66,   66,
2088 
2089       102,   16,   27,   27,   27,   27,   27,   27,   46,   61,
2090        46,   61,  102,   46,   72,   72,   72,   46,   61,   74,
2091        46,   86,   27,   86,   95,   27,   95,   98,   74,   98,
2092        27,  810,   46,   27,  182,   27,   48,   48,   48,   74,
2093        48,  182,   48,   48,  422,  422,   48,   58,   48,   58,
2094        58,   58,   58,   58,   58,  271,   48,   48,  808,   48,
2095        48,  274,  103,   48,   48,   48,   50,   75,   50,   50,
2096        50,   50,   50,   50,  103,  148,   75,  148,   50,   51,
2097       271,   51,  267,   51,  804,   51,  274,   75,   51,   51,
2098       267,   51,   51,   51,   51,   51,   51,   51,   51,   51,
2099 
2100       802,  166,   51,  166,   51,   51,   51,   87,   87,   87,
2101        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
2102        51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
2103        53,  245,   53,  146,   53,  801,   53,  166,  245,   53,
2104        53,  330,   53,   53,   68,  146,   68,   68,   68,   68,
2105        68,   68,  330,   53,  460,   53,  142,  142,  142,  147,
2106       153,   53,   53,   53,   54,  460,   54,  278,   54,  793,
2107        54,  147,  153,   54,   54,  278,   54,   54,   54,   54,
2108        54,   54,   54,   54,   54,   54,  530,   54,  530,   54,
2109        54,   54,  151,  151,  151,   54,   54,   54,   54,   54,
2110 
2111        54,   54,   54,   54,   54,   54,   54,   54,   54,   54,
2112        54,   54,   54,   54,   54,   56,  317,   56,  396,   56,
2113       792,   56,  273,  317,   56,   56,  396,   56,   56,   56,
2114        56,   56,   56,   56,   56,   56,   56,  401,   56,  791,
2115        56,   56,   56,  788,  273,  401,   56,   56,   56,   56,
2116        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
2117        56,   56,   56,   56,   56,   56,   57,   57,   57,   57,
2118        57,   57,   57,  782,  448,  481,  481,   57,   69,   69,
2119        69,   69,   69,   69,  318,   57,   57,   57,   57,   57,
2120        70,  318,   70,   70,  448,   70,   70,   70,   70,   70,
2121 
2122        70,   79,   79,   79,   79,   79,   79,   80,   80,   80,
2123        80,   80,   80,  101,  373,  101,  407,  101,  552,  101,
2124       552,  373,  101,  101,  407,  101,  101,  101,  101,  101,
2125       101,  101,  101,  101,  334,  374,  101,  777,  101,  101,
2126       101,  774,  374,  334,  101,  101,  101,  101,  101,  101,
2127       101,  101,  101,  101,  101,  101,  101,  101,  101,  101,
2128       101,  101,  101,  101,  105,  105,  105,  771,  105,  453,
2129       105,  105,  546,  546,  105,  110,  105,  110,  110,  110,
2130       110,  110,  110,  435,  105,  105,  760,  105,  105,  453,
2131       435,  105,  105,  105,  106,  106,  106,  759,  106,  504,
2132 
2133       106,  106,  663,  663,  106,  747,  106,  126,  126,  126,
2134       126,  126,  126,  436,  106,  106,  734,  106,  106,  504,
2135       436,  106,  106,  106,  107,  107,  107,  107,  107,  107,
2136       107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
2137       107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
2138       107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
2139       107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
2140       107,  107,  107,  107,  107,  108,  108,  108,  108,  108,
2141       108,  732,  222,  457,  222,  108,  111,  457,  111,  729,
2142       111,  222,  111,  222,  457,  111,  111,  813,  111,  813,
2143 
2144       111,  111,  111,  111,  111,  111,  111,  493,  494,  111,
2145       718,  111,  111,  111,  493,  494,  717,  111,  111,  111,
2146       111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
2147       111,  111,  111,  111,  111,  111,  111,  114,  343,  114,
2148       130,  130,  130,  130,  130,  130,  164,  716,  164,  343,
2149       343,  114,  114,  114,  114,  114,  114,  131,  164,  508,
2150       131,  131,  131,  131,  131,  131,  145,  145,  145,  145,
2151       145,  145,  523,  114,  115,  513,  115,  692,  115,  508,
2152       115,  523,  164,  115,  115,  691,  115,  115,  149,  149,
2153       149,  149,  149,  149,  690,  513,  737,  115,  737,  115,
2154 
2155       225,  174,  225,  174,  465,  115,  115,  115,  116,  225,
2156       116,  225,  116,  174,  116,  465,  465,  116,  116,  689,
2157       116,  116,  150,  150,  150,  150,  150,  150,  558,  509,
2158       526,  116,  737,  116,  227,  558,  227,  174,  509,  116,
2159       116,  116,  117,  227,  117,  227,  117,  688,  117,  509,
2160       526,  117,  117,  685,  117,  117,  117,  117,  117,  117,
2161       117,  117,  117,  559,  617,  117,  684,  117,  117,  117,
2162       559,  617,  682,  117,  117,  117,  117,  117,  117,  117,
2163       117,  117,  117,  117,  117,  117,  117,  117,  117,  117,
2164       117,  117,  117,  118,  674,  118,  673,  118,  669,  118,
2165 
2166       661,  567,  118,  118,  648,  118,  118,  118,  118,  118,
2167       118,  118,  118,  118,  118,  618,  118,  647,  118,  118,
2168       118,  567,  618,  646,  118,  118,  118,  118,  118,  118,
2169       118,  118,  118,  118,  118,  118,  118,  118,  118,  118,
2170       118,  118,  118,  118,  119,  119,  119,  119,  119,  119,
2171       119,  749,  749,  644,  155,  119,  155,  155,  155,  155,
2172       155,  155,  675,  119,  119,  119,  119,  119,  120,  675,
2173       120,  120,  120,  120,  120,  120,  120,  121,  121,  121,
2174       121,  121,  121,  121,  571,  643,  514,  160,  121,  160,
2175       160,  160,  160,  160,  160,  514,  121,  121,  121,  121,
2176 
2177       121,  123,  676,  123,  571,  123,  514,  123,  642,  676,
2178       123,  123,  638,  123,  123,  123,  163,  637,  163,  163,
2179       163,  163,  163,  163,  123,  630,  123,  297,  236,  297,
2180       236,  626,  123,  123,  123,  124,  297,  124,  297,  124,
2181       236,  124,  616,  573,  124,  124,  615,  124,  124,  124,
2182       124,  124,  124,  124,  124,  124,  614,  780,  124,  780,
2183       124,  124,  124,  573,  236,  589,  124,  124,  124,  124,
2184       124,  124,  124,  124,  124,  124,  124,  124,  124,  124,
2185       124,  124,  124,  124,  124,  124,  125,  588,  125,  584,
2186       125,  583,  125,  780,  574,  125,  125,  582,  125,  125,
2187 
2188       125,  125,  125,  125,  125,  125,  125,  125,  719,  125,
2189       578,  125,  125,  125,  574,  719,  577,  125,  125,  125,
2190       125,  125,  125,  125,  125,  125,  125,  125,  125,  125,
2191       125,  125,  125,  125,  125,  125,  125,  127,  572,  127,
2192       569,  127,  557,  127,  556,  585,  127,  127,  544,  127,
2193       127,  127,  127,  127,  127,  127,  127,  127,  127,  720,
2194       127,  532,  127,  127,  127,  585,  720,  529,  127,  127,
2195       127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
2196       127,  127,  127,  127,  127,  127,  127,  127,  128,  128,
2197       128,  128,  128,  128,  128,  784,  784,  528,  527,  128,
2198 
2199       179,  179,  179,  179,  179,  179,  525,  128,  128,  128,
2200       128,  128,  129,  129,  129,  129,  129,  129,  129,  628,
2201       522,  568,  519,  129,  181,  181,  181,  181,  181,  181,
2202       568,  129,  129,  129,  129,  129,  154,  631,  154,  628,
2203       154,  568,  154,  518,  633,  154,  154,  517,  154,  154,
2204       154,  154,  154,  154,  154,  154,  154,  631,  761,  154,
2205       515,  154,  154,  154,  633,  761,  512,  154,  154,  154,
2206       154,  154,  154,  154,  154,  154,  154,  154,  154,  154,
2207       154,  154,  154,  154,  154,  154,  154,  158,  158,  158,
2208       511,  158,  728,  158,  158,  510,  506,  158,  492,  158,
2209 
2210       196,  196,  196,  196,  196,  196,  196,  158,  158,  491,
2211       158,  158,  728,  490,  158,  158,  158,  159,  159,  159,
2212       159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
2213       159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
2214       159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
2215       159,  159,  159,  159,  159,  159,  159,  159,  159,  159,
2216       159,  159,  159,  159,  159,  159,  159,  159,  162,  463,
2217       162,  207,  207,  207,  207,  207,  207,  269,  659,  742,
2218       162,  269,  162,  162,  162,  162,  162,  162,  269,  269,
2219       659,  742,  162,  209,  209,  209,  209,  209,  209,  316,
2220 
2221       316,  316,  316,  316,  162,  167,  210,  167,  210,  210,
2222       210,  210,  210,  210,  821,  821,  821,  821,  821,  167,
2223       167,  167,  167,  167,  167,  214,  214,  214,  214,  214,
2224       214,  215,  762,  215,  215,  215,  215,  215,  215,  762,
2225       462,  167,  168,  586,  168,  218,  218,  218,  218,  218,
2226       218,  168,  586,  168,  454,  452,  168,  168,  168,  168,
2227       168,  168,  169,  586,  169,  451,  169,  450,  169,  446,
2228       434,  169,  169,  433,  169,  169,  226,  226,  226,  226,
2229       226,  226,  425,  629,  733,  169,  411,  169,  307,  308,
2230       307,  308,  629,  169,  169,  169,  170,  307,  170,  307,
2231 
2232       170,  308,  170,  629,  733,  170,  170,  410,  170,  170,
2233       233,  404,  233,  233,  233,  233,  233,  233,  735,  170,
2234       403,  170,  353,  402,  353,  308,  392,  170,  170,  170,
2235       171,  353,  171,  353,  171,  391,  171,  390,  735,  171,
2236       171,  389,  171,  171,  235,  235,  235,  235,  235,  235,
2237       388,  632,  769,  171,  385,  171,  384,  365,  372,  365,
2238       632,  171,  171,  171,  172,  172,  172,  172,  172,  365,
2239       172,  632,  769,  172,  172,  371,  172,  172,  172,  172,
2240       172,  172,  172,  172,  172,  794,  370,  172,  333,  172,
2241       172,  172,  794,  365,  332,  172,  172,  172,  172,  172,
2242 
2243       172,  172,  172,  172,  172,  172,  172,  172,  172,  172,
2244       172,  172,  172,  172,  172,  173,  313,  173,  242,  242,
2245       242,  242,  242,  242,  303,  285,  280,  173,  279,  173,
2246       173,  173,  173,  173,  173,  243,  243,  243,  243,  243,
2247       243,  244,  244,  244,  244,  244,  244,  275,  364,  272,
2248       364,  173,  175,  264,  175,  241,  175,  364,  175,  364,
2249       775,  175,  175,  239,  175,  175,  175,  175,  175,  175,
2250       175,  175,  175,  175,  795,  175,  216,  175,  175,  175,
2251       775,  795,  211,  175,  175,  175,  175,  175,  175,  175,
2252       175,  175,  175,  175,  175,  175,  175,  175,  175,  175,
2253 
2254       175,  175,  175,  176,  205,  176,  176,  176,  176,  176,
2255       176,  176,  177,  177,  177,  177,  177,  177,  177,  204,
2256       202,  201,  200,  177,  256,  256,  256,  256,  256,  256,
2257       199,  177,  177,  177,  177,  177,  178,  178,  178,  178,
2258       178,  178,  178,  778,  198,  197,  180,  178,  257,  257,
2259       257,  257,  257,  257,  257,  178,  178,  178,  178,  178,
2260       183,  803,  183,  778,  183,  161,  183,  157,  803,  183,
2261       183,  156,  183,  183,  183,  258,  258,  258,  258,  258,
2262       258,  634,  144,  183,  140,  183,  416,  429,  416,  429,
2263       634,  183,  183,  183,  184,  416,  184,  416,  184,  429,
2264 
2265       184,  634,  139,  184,  184,  138,  184,  184,  184,  259,
2266       259,  259,  259,  259,  259,  770,  137,  184,  136,  184,
2267       428,  135,  428,  429,  770,  184,  184,  184,  185,  428,
2268       185,  428,  185,  134,  185,  770,  133,  185,  185,  132,
2269       185,  185,  185,  185,  185,  185,  185,  185,  185,  811,
2270       122,  185,  104,  185,  185,  185,  811,  100,   93,  185,
2271       185,  185,  185,  185,  185,  185,  185,  185,  185,  185,
2272       185,  185,  185,  185,  185,  185,  185,  185,  185,  186,
2273        92,  186,   63,  186,   55,  186,   37,   35,  186,  186,
2274        33,  186,  186,  186,  186,  186,  186,  186,  186,  186,
2275 
2276       186,   31,  186,   17,  186,  186,  186,   13,    0,    0,
2277       186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
2278       186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
2279       187,  187,  187,  187,  187,  187,  187,    0,    0,    0,
2280         0,  187,  260,  260,  260,  260,  260,  260,  260,  187,
2281       187,  187,  187,  187,  188,    0,  188,    0,  188,    0,
2282       188,    0,    0,  188,  188,    0,  188,  188,  188,  188,
2283       188,  188,  188,  188,  188,    0,    0,  188,    0,  188,
2284       188,  188,    0,    0,    0,  188,  188,  188,  188,  188,
2285       188,  188,  188,  188,  188,  188,  188,  188,  188,  188,
2286 
2287       188,  188,  188,  188,  188,  189,    0,  189,    0,  189,
2288         0,  189,    0,    0,  189,  189,    0,  189,  189,  189,
2289       189,  189,  189,  189,  189,  189,  189,    0,  189,    0,
2290       189,  189,  189,    0,    0,    0,  189,  189,  189,  189,
2291       189,  189,  189,  189,  189,  189,  189,  189,  189,  189,
2292       189,  189,  189,  189,  189,  189,  190,    0,  190,    0,
2293       190,    0,  190,    0,    0,  190,  190,    0,  190,  190,
2294       190,  190,  190,  190,  190,  190,  190,  190,    0,  190,
2295         0,  190,  190,  190,    0,    0,    0,  190,  190,  190,
2296       190,  190,  190,  190,  190,  190,  190,  190,  190,  190,
2297 
2298       190,  190,  190,  190,  190,  190,  190,  191,  191,  191,
2299       191,  191,  191,  191,    0,    0,    0,    0,  191,  261,
2300       261,  261,  261,  261,  261,    0,  191,  191,  191,  191,
2301       191,  194,  194,  194,  194,  194,  194,  194,    0,    0,
2302         0,    0,  194,  262,  262,  262,  262,  262,  262,  262,
2303       194,  194,  194,  194,  194,  195,    0,  195,    0,  195,
2304         0,  195,    0,    0,  195,  195,    0,  195,  195,  195,
2305       195,  195,  195,  195,  195,  195,    0,    0,  195,    0,
2306       195,  195,  195,    0,    0,    0,  195,  195,  195,  195,
2307       195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
2308 
2309       195,  195,  195,  195,  195,  195,  203,    0,  203,    0,
2310       203,    0,  203,    0,    0,  203,  203,    0,  203,  203,
2311       203,  203,  203,  203,  203,  203,  203,    0,    0,  203,
2312         0,  203,  203,  203,    0,    0,    0,  203,  203,  203,
2313       203,  203,  203,  203,  203,  203,  203,  203,  203,  203,
2314       203,  203,  203,  203,  203,  203,  203,  208,    0,  208,
2315       776,    0,  208,  208,  208,  208,  208,  208,  212,  776,
2316       212,    0,  212,    0,  212,    0,    0,  212,  212,    0,
2317       776,    0,  212,  263,  263,  263,  263,  263,  263,  263,
2318         0,  212,    0,  212,  473,    0,  473,    0,  486,  212,
2319 
2320       486,  212,  213,  473,  213,  473,  213,  486,  213,  486,
2321         0,  213,  213,    0,  779,    0,  213,  213,  213,  213,
2322       213,  213,  213,  779,    0,  213,    0,  213,    0,    0,
2323         0,    0,    0,  213,  779,  213,  217,  217,  217,  217,
2324       217,  217,  217,  217,  217,  217,  217,  217,  217,  217,
2325       217,  217,  217,  217,  217,  217,  217,  217,  217,  217,
2326       217,  217,  217,  217,  217,  217,  217,  217,  217,  217,
2327       217,  217,  217,  217,  217,  217,  217,  217,  217,  217,
2328       217,  217,  217,  217,  217,  217,  217,  219,    0,  219,
2329       281,  281,  281,  281,  281,  281,  219,    0,  219,    0,
2330 
2331         0,  219,  219,  219,  219,  219,  219,  268,  268,  268,
2332       268,  268,  268,  268,  286,    0,  286,  286,  286,  286,
2333       286,  286,    0,  219,  220,  288,  220,  288,  288,  288,
2334       288,  288,  288,  220,    0,  220,  220,    0,  220,  220,
2335       220,  220,  220,  220,  223,    0,  223,  294,  294,  294,
2336       294,  294,  294,    0,    0,    0,    0,    0,  223,  223,
2337       223,  223,  223,  223,  302,    0,  302,  302,  302,  302,
2338       302,  302,  306,    0,  306,  306,  306,  306,  306,  306,
2339       223,  224,    0,  224,  312,  312,  312,  312,  312,  312,
2340       224,    0,  224,    0,    0,  224,  224,  224,  224,  224,
2341 
2342       224,  228,    0,  228,    0,  228,    0,  228,    0,    0,
2343       228,  228,    0,  228,  228,  315,  315,  315,  315,  315,
2344       315,    0,    0,    0,  228,    0,  228,  537,  487,  537,
2345       487,    0,  228,  228,  228,  229,  537,  229,  537,  229,
2346       487,  229,    0,    0,  229,  229,    0,  229,  229,  326,
2347       326,  326,  326,  326,  326,    0,    0,    0,  229,    0,
2348       229,  551,    0,  551,  487,    0,  229,  229,  229,  230,
2349       551,  230,  551,  230,    0,  230,    0,    0,  230,  230,
2350         0,  230,  230,  327,  327,  327,  327,  327,  327,    0,
2351         0,    0,  230,    0,  230,  594,  553,  594,  553,    0,
2352 
2353       230,  230,  230,  231,  594,  231,  594,  231,  553,  231,
2354         0,    0,  231,  231,    0,  231,  231,  231,  231,  231,
2355       231,  231,  231,  231,    0,    0,  231,    0,  231,  231,
2356       231,    0,  553,    0,  231,  231,  231,  231,  231,  231,
2357       231,  231,  231,  231,  231,  231,  231,  231,  231,  231,
2358       231,  231,  231,  231,  232,    0,  232,  328,  328,  328,
2359       328,  328,  328,    0,    0,    0,  232,    0,  232,  232,
2360       232,  232,  232,  232,  331,  331,  331,  331,  331,  331,
2361       331,  337,  337,  337,  337,  337,  337,    0,    0,    0,
2362       232,  234,    0,  234,  345,  345,  345,  345,  345,  345,
2363 
2364       234,    0,  234,  234,    0,  234,  234,  234,  234,  234,
2365       234,  237,    0,  237,    0,  237,    0,  237,    0,    0,
2366       237,  237,    0,  237,  237,  237,  237,  237,  237,  237,
2367       237,  237,  237,    0,  237,    0,  237,  237,  237,    0,
2368         0,    0,  237,  237,  237,  237,  237,  237,  237,  237,
2369       237,  237,  237,  237,  237,  237,  237,  237,  237,  237,
2370       237,  237,  238,    0,  238,  238,  238,  238,  238,  238,
2371       238,  240,  240,  240,  240,  240,  240,  240,    0,    0,
2372         0,    0,  240,    0,  339,  339,  339,  339,  339,  339,
2373       240,  240,  240,  240,  240,  247,    0,  247,    0,  247,
2374 
2375         0,  247,    0,    0,  247,  247,    0,  247,    0,  247,
2376       247,  247,  247,  247,  247,  247,  339,    0,  247,    0,
2377       247,  247,  247,    0,    0,    0,  247,  247,  247,  247,
2378       247,  247,  247,  247,  247,  247,  247,  247,  247,  247,
2379       247,  247,  247,  247,  247,  247,  248,    0,  248,    0,
2380       248,    0,  248,    0,    0,  248,  248,    0,  248,  248,
2381       248,  340,  340,  340,  340,  340,  340,    0,    0,  248,
2382         0,  248,  609,  611,  609,  611,    0,  248,  248,  248,
2383       249,  609,  249,  609,  249,  611,  249,    0,    0,  249,
2384       249,    0,  249,  249,  249,  346,  340,  346,  346,  346,
2385 
2386       346,  346,  346,  249,    0,  249,  652,    0,  652,  611,
2387         0,  249,  249,  249,  250,  652,  250,  652,  250,    0,
2388       250,    0,    0,  250,  250,    0,  250,  250,  250,  348,
2389       348,  348,  348,  348,  348,    0,    0,  250,    0,  250,
2390       668,  670,  668,  670,    0,  250,  250,  250,  251,  668,
2391       251,  668,  251,  670,  251,    0,    0,  251,  251,    0,
2392       251,  251,  251,  251,  251,  251,  251,  251,  251,    0,
2393         0,  251,    0,  251,  251,  251,    0,  670,    0,  251,
2394       251,  251,  251,  251,  251,  251,  251,  251,  251,  251,
2395       251,  251,  251,  251,  251,  251,  251,  251,  251,  252,
2396 
2397         0,  252,    0,  252,    0,  252,    0,    0,  252,  252,
2398         0,  252,  252,  252,  360,  360,  360,  360,  360,  360,
2399       252,    0,  252,    0,  252,  696,  713,  696,  713,    0,
2400       252,  252,  252,  253,  696,  253,  696,  253,  713,  253,
2401         0,    0,  253,  253,    0,  253,  253,  253,  361,  361,
2402       361,  361,  361,  361,  253,    0,  253,    0,  253,  711,
2403         0,  711,  713,    0,  253,  253,  253,  254,  711,  254,
2404       711,  254,    0,  254,    0,    0,  254,  254,    0,  254,
2405       254,  254,  254,  254,  254,  254,  254,  254,    0,    0,
2406       254,    0,  254,  254,  254,    0,    0,    0,  254,  254,
2407 
2408       254,  254,  254,  254,  254,  254,  254,  254,  254,  254,
2409       254,  254,  254,  254,  254,  254,  254,  254,  255,    0,
2410       255,    0,  255,    0,  255,    0,    0,  255,  255,    0,
2411       255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
2412         0,  255,    0,  255,  255,  255,    0,    0,    0,  255,
2413       255,  255,  255,  255,  255,  255,  255,  255,  255,  255,
2414       255,  255,  255,  255,  255,  255,  255,  255,  255,  265,
2415         0,  265,    0,  265,    0,  265,    0,    0,  265,  265,
2416         0,  265,  265,  265,  265,  265,  265,  265,  265,  265,
2417         0,    0,  265,    0,  265,  265,  265,    0,    0,    0,
2418 
2419       265,  265,  265,  265,  265,  265,  265,  265,  265,  265,
2420       265,  265,  265,  265,  265,  265,  265,  265,  265,  265,
2421       266,    0,  266,    0,  266,    0,  266,    0,    0,  266,
2422       266,    0,  266,  266,  266,  367,  367,  367,  367,  367,
2423       367,  266,    0,  266,    0,  266,    0,    0,    0,    0,
2424         0,  266,  266,  266,  270,    0,    0,  270,  270,  270,
2425       270,  270,  270,  270,  276,    0,  276,    0,  276,    0,
2426       276,    0,    0,  276,  276,    0,  276,  276,  276,  276,
2427       276,  276,  276,  276,  276,    0,    0,  276,    0,  276,
2428       276,  276,    0,    0,    0,  276,  276,  276,  276,  276,
2429 
2430       276,  276,  276,  276,  276,  276,  276,  276,  276,  276,
2431       276,  276,  276,  276,  276,  277,    0,  277,    0,  277,
2432         0,  277,    0,    0,  277,  277,    0,  277,  277,  277,
2433       381,  381,  381,  381,  381,  381,  277,    0,  277,    0,
2434       277,    0,    0,    0,    0,    0,  277,  277,  277,  282,
2435         0,  282,  282,  282,  282,  282,  282,    0,  738,    0,
2436       738,  282,  283,    0,  283,    0,  283,  738,  283,  738,
2437         0,  283,  283,    0,    0,  283,  283,  349,    0,  349,
2438       349,  349,  349,  349,  349,  283,    0,  283,  754,  756,
2439       754,  756,    0,  283,    0,  283,  284,  754,  284,  754,
2440 
2441       284,  756,  284,    0,    0,  284,  284,    0,    0,  284,
2442       284,  284,  284,  284,  284,  284,  284,    0,    0,  284,
2443         0,  284,    0,    0,    0,  756,    0,  284,    0,  284,
2444       287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
2445       287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
2446       287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
2447       287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
2448       287,  287,  287,  287,  287,  287,  287,  287,  287,  287,
2449       287,  289,    0,  289,  289,  289,  289,  289,  289,    0,
2450         0,    0,    0,  289,  290,    0,  290,  290,  290,  290,
2451 
2452       290,  290,    0,  818,    0,  818,  290,  291,    0,  291,
2453         0,  291,  818,  291,  818,    0,  291,  291,    0,  291,
2454       291,  291,  291,  291,  291,  291,  291,  291,    0,    0,
2455       291,    0,  291,  291,  291,    0,    0,    0,  291,  291,
2456       291,  291,  291,  291,  291,  291,  291,  291,  291,  291,
2457       291,  291,  291,  291,  291,  291,  291,  291,  295,  358,
2458       295,  358,  358,  358,  358,  358,  358,    0,    0,    0,
2459         0,    0,  295,  295,  295,  295,  295,  295,  359,    0,
2460       359,  359,  359,  359,  359,  359,  369,  369,  369,  369,
2461       369,  369,  369,    0,  295,  296,    0,  296,  382,  382,
2462 
2463       382,  382,  382,  382,  296,    0,  296,    0,    0,  296,
2464       296,  296,  296,  296,  296,  298,    0,  298,    0,  298,
2465         0,  298,    0,    0,  298,  298,    0,  298,  298,  383,
2466       383,  383,  383,  383,  383,    0,    0,    0,  298,    0,
2467       298,    0,    0,    0,    0,    0,  298,  298,  298,  299,
2468         0,  299,    0,  299,    0,  299,    0,    0,  299,  299,
2469         0,  299,  299,  386,  386,  386,  386,  386,  386,  386,
2470         0,    0,  299,    0,  299,    0,    0,    0,    0,    0,
2471       299,  299,  299,  300,    0,  300,    0,  300,    0,  300,
2472         0,    0,  300,  300,  387,  300,  300,  387,  387,  387,
2473 
2474       387,  387,  387,    0,    0,    0,  300,    0,  300,    0,
2475         0,    0,    0,    0,  300,  300,  300,  301,    0,  301,
2476         0,  301,    0,  301,    0,    0,  301,  301,    0,  301,
2477       301,  301,  301,  301,  301,  301,  301,  301,    0,    0,
2478       301,    0,  301,  301,  301,    0,    0,    0,  301,  301,
2479       301,  301,  301,  301,  301,  301,  301,  301,  301,  301,
2480       301,  301,  301,  301,  301,  301,  301,  301,  304,    0,
2481       304,  397,  397,  397,  397,  397,  397,  397,    0,    0,
2482       304,    0,  304,  304,  304,  304,  304,  304,  398,    0,
2483         0,  398,  398,  398,  398,  398,  398,  408,  408,  408,
2484 
2485       408,  408,  408,    0,  304,  305,  409,  305,  409,  409,
2486       409,  409,  409,  409,  305,    0,  305,  305,    0,  305,
2487       305,  305,  305,  305,  305,  309,    0,  309,    0,  309,
2488         0,  309,    0,    0,  309,  309,    0,  309,  309,  309,
2489       309,  309,  309,  309,  309,  309,  309,    0,  309,    0,
2490       309,  309,  309,    0,    0,    0,  309,  309,  309,  309,
2491       309,  309,  309,  309,  309,  309,  309,  309,  309,  309,
2492       309,  309,  309,  309,  309,  309,  310,    0,  310,  310,
2493       310,  310,  310,  310,  310,  311,  311,  311,  311,  311,
2494       311,  311,    0,    0,    0,  412,  311,  412,  412,  412,
2495 
2496       412,  412,  412,    0,  311,  311,  311,  311,  311,  319,
2497         0,  319,    0,  319,    0,  319,    0,    0,  319,  319,
2498         0,  319,  319,  319,  421,  421,  421,  421,  421,  421,
2499       421,    0,  319,    0,  319,    0,    0,    0,    0,    0,
2500       319,  319,  319,  321,    0,  321,    0,  321,    0,  321,
2501         0,    0,  321,  321,    0,  321,  321,  321,  424,    0,
2502       424,  424,  424,  424,  424,  424,  321,    0,  321,    0,
2503         0,    0,    0,    0,  321,  321,  321,  322,    0,  322,
2504         0,  322,    0,  322,    0,    0,  322,  322,    0,  322,
2505       322,  322,  432,  432,  432,  432,  432,  432,    0,    0,
2506 
2507       322,    0,  322,    0,    0,    0,    0,    0,  322,  322,
2508       322,  323,    0,  323,    0,  323,    0,  323,    0,    0,
2509       323,  323,    0,  323,  323,  323,  323,  323,  323,  323,
2510       323,  323,    0,    0,  323,    0,  323,  323,  323,    0,
2511         0,    0,  323,  323,  323,  323,  323,  323,  323,  323,
2512       323,  323,  323,  323,  323,  323,  323,  323,  323,  323,
2513       323,  323,  324,    0,  324,    0,  324,    0,  324,    0,
2514         0,  324,  324,    0,  324,  324,  324,  442,  442,  442,
2515       442,  442,  442,    0,    0,  324,    0,  324,    0,    0,
2516         0,    0,    0,  324,  324,  324,  325,    0,  325,    0,
2517 
2518       325,    0,  325,    0,    0,  325,  325,    0,  325,  325,
2519       325,  325,  325,  325,  325,  325,  325,    0,    0,  325,
2520         0,  325,  325,  325,    0,    0,    0,  325,  325,  325,
2521       325,  325,  325,  325,  325,  325,  325,  325,  325,  325,
2522       325,  325,  325,  325,  325,  325,  325,  329,    0,  329,
2523         0,  329,    0,  329,    0,    0,  329,  329,    0,  329,
2524       329,  329,  443,  443,  443,  443,  443,  443,  329,    0,
2525       329,    0,  329,    0,    0,    0,    0,    0,  329,  329,
2526       329,  336,    0,  336,    0,  336,    0,  336,    0,    0,
2527       336,  336,    0,  336,  336,  336,  336,  336,  336,  336,
2528 
2529       336,  336,    0,    0,  336,    0,  336,  336,  336,    0,
2530         0,    0,  336,  336,  336,  336,  336,  336,  336,  336,
2531       336,  336,  336,  336,  336,  336,  336,  336,  336,  336,
2532       336,  336,  338,    0,  338,    0,  338,    0,  338,    0,
2533         0,  338,  338,    0,  338,  338,  338,  338,  338,  338,
2534       338,  338,  338,    0,    0,  338,    0,  338,  338,  338,
2535         0,    0,    0,  338,  338,  338,  338,  338,  338,  338,
2536       338,  338,  338,  338,  338,  338,  338,  338,  338,  338,
2537       338,  338,  338,  341,    0,  341,    0,  341,    0,  341,
2538         0,    0,  341,  341,    0,  341,  341,  341,  341,  341,
2539 
2540       341,  341,  341,  341,    0,    0,  341,    0,  341,  341,
2541       341,    0,    0,    0,  341,  341,  341,  341,  341,  341,
2542       341,  341,  341,  341,  341,  341,  341,  341,  341,  341,
2543       341,  341,  341,  341,  342,  444,  444,  444,  444,  444,
2544       444,  445,    0,    0,  445,  445,  445,  445,  445,  445,
2545         0,    0,    0,    0,  342,    0,  342,  342,  342,  342,
2546       342,  342,  342,  342,  342,  342,  342,  342,  342,  342,
2547       342,  342,  342,  344,    0,  344,    0,  344,    0,  344,
2548         0,    0,  344,  344,    0,  344,  344,  344,  344,  344,
2549       344,  344,  344,  344,    0,    0,  344,    0,  344,  344,
2550 
2551       344,    0,    0,    0,  344,  344,  344,  344,  344,  344,
2552       344,  344,  344,  344,  344,  344,  344,  344,  344,  344,
2553       344,  344,  344,  344,  351,    0,  351,  447,  447,  447,
2554       447,  447,  447,  447,    0,    0,    0,    0,  351,  351,
2555       351,  351,  351,  351,  449,  449,  449,  449,  449,  449,
2556       449,  461,  461,  461,  461,  461,  461,    0,    0,    0,
2557       351,  352,    0,  352,  466,  466,  466,  466,  466,  466,
2558       352,    0,  352,    0,    0,  352,  352,  352,  352,  352,
2559       352,  354,    0,  354,    0,  354,    0,  354,    0,    0,
2560       354,  354,    0,  354,  354,  467,    0,  467,  467,  467,
2561 
2562       467,  467,  467,    0,  354,    0,  354,    0,    0,    0,
2563         0,    0,  354,  354,  354,  355,    0,  355,    0,  355,
2564         0,  355,    0,    0,  355,  355,    0,  355,  355,  468,
2565       468,  468,  468,  468,  468,    0,    0,    0,  355,    0,
2566       355,    0,    0,    0,    0,    0,  355,  355,  355,  356,
2567         0,  356,    0,  356,    0,  356,    0,    0,  356,  356,
2568         0,  356,  356,  469,    0,  469,  469,  469,  469,  469,
2569       469,    0,  356,    0,  356,    0,    0,    0,    0,    0,
2570       356,  356,  356,  357,    0,  357,    0,  357,    0,  357,
2571         0,    0,  357,  357,    0,  357,  357,  357,  357,  357,
2572 
2573       357,  357,  357,  357,    0,    0,  357,    0,  357,  357,
2574       357,    0,    0,    0,  357,  357,  357,  357,  357,  357,
2575       357,  357,  357,  357,  357,  357,  357,  357,  357,  357,
2576       357,  357,  357,  357,  362,    0,  362,  478,  478,  478,
2577       478,  478,  478,    0,    0,    0,  362,    0,  362,  362,
2578       362,  362,  362,  362,  482,    0,  482,  482,  482,  482,
2579       482,  482,  483,    0,  483,  483,  483,  483,  483,  483,
2580       362,  363,    0,  363,  502,  502,  502,  502,  502,  502,
2581       363,    0,  363,  363,    0,  363,  363,  363,  363,  363,
2582       363,  366,    0,  366,    0,  366,    0,  366,    0,    0,
2583 
2584       366,  366,    0,  366,  366,  366,  366,  366,  366,  366,
2585       366,  366,  366,    0,  366,    0,  366,  366,  366,    0,
2586         0,    0,  366,  366,  366,  366,  366,  366,  366,  366,
2587       366,  366,  366,  366,  366,  366,  366,  366,  366,  366,
2588       366,  366,  368,    0,  368,  368,  368,  368,  368,  368,
2589       368,  376,    0,  376,    0,  376,    0,  376,    0,    0,
2590       376,  376,    0,  376,  376,  376,  503,  503,  503,  503,
2591       503,  503,    0,    0,  376,    0,  376,    0,    0,    0,
2592         0,    0,  376,  376,  376,  377,    0,  377,    0,  377,
2593         0,  377,    0,    0,  377,  377,    0,  377,  377,  377,
2594 
2595       505,  505,  505,  505,  505,  505,  505,    0,  377,    0,
2596       377,    0,    0,    0,    0,    0,  377,  377,  377,  378,
2597         0,  378,    0,  378,    0,  378,    0,    0,  378,  378,
2598         0,  378,  378,  378,  378,  378,  378,  378,  378,  378,
2599         0,    0,  378,    0,  378,  378,  378,    0,    0,    0,
2600       378,  378,  378,  378,  378,  378,  378,  378,  378,  378,
2601       378,  378,  378,  378,  378,  378,  378,  378,  378,  378,
2602       379,    0,  379,    0,  379,    0,  379,    0,    0,  379,
2603       379,    0,  379,  379,  379,  507,  507,  507,  507,  507,
2604       507,  507,    0,  379,    0,  379,    0,    0,    0,    0,
2605 
2606         0,  379,  379,  379,  380,    0,  380,    0,  380,    0,
2607       380,    0,    0,  380,  380,    0,  380,  380,  380,  380,
2608       380,  380,  380,  380,  380,    0,    0,  380,    0,  380,
2609       380,  380,    0,    0,    0,  380,  380,  380,  380,  380,
2610       380,  380,  380,  380,  380,  380,  380,  380,  380,  380,
2611       380,  380,  380,  380,  380,  393,    0,  393,    0,  393,
2612         0,  393,    0,    0,  393,  393,    0,  393,  393,  393,
2613       393,  393,  393,  393,  393,  393,    0,    0,  393,    0,
2614       393,  393,  393,    0,    0,    0,  393,  393,  393,  393,
2615       393,  393,  393,  393,  393,  393,  393,  393,  393,  393,
2616 
2617       393,  393,  393,  393,  393,  393,  395,    0,  395,    0,
2618       395,    0,  395,    0,    0,  395,  395,    0,  395,  395,
2619       395,  533,  533,  533,  533,  533,  533,  395,    0,  395,
2620         0,  395,    0,    0,    0,    0,    0,  395,  395,  395,
2621       400,    0,  400,    0,  400,    0,  400,    0,    0,  400,
2622       400,    0,  400,  400,  400,  548,  548,  548,  548,  548,
2623       548,  400,    0,  400,    0,  400,    0,    0,    0,    0,
2624         0,  400,  400,  400,  406,    0,  406,    0,  406,    0,
2625       406,    0,    0,  406,  406,    0,  406,  406,  406,  566,
2626       566,  566,  566,  566,  566,  406,    0,  406,    0,  406,
2627 
2628         0,    0,    0,    0,    0,  406,  406,  406,  414,    0,
2629       414,  524,  524,  524,  524,  524,  524,  524,    0,    0,
2630         0,    0,  414,  414,  414,  414,  414,  414,  531,    0,
2631       531,  531,  531,  531,  531,  531,  547,    0,  547,  547,
2632       547,  547,  547,  547,  414,  415,    0,  415,  576,  576,
2633       576,  576,  576,  576,  415,    0,  415,    0,    0,  415,
2634       415,  415,  415,  415,  415,  417,    0,  417,    0,  417,
2635         0,  417,    0,    0,  417,  417,    0,  417,  417,  581,
2636       581,  581,  581,  581,  581,    0,    0,    0,  417,    0,
2637       417,    0,    0,    0,    0,    0,  417,  417,  417,  418,
2638 
2639         0,  418,    0,  418,    0,  418,    0,    0,  418,  418,
2640         0,  418,  418,  587,  587,  587,  587,  587,  587,    0,
2641         0,    0,  418,    0,  418,    0,    0,    0,    0,    0,
2642       418,  418,  418,  419,    0,  419,    0,  419,    0,  419,
2643         0,    0,  419,  419,    0,  419,  419,  590,  590,  590,
2644       590,  590,  590,    0,    0,    0,  419,    0,  419,    0,
2645         0,    0,    0,    0,  419,  419,  419,  420,    0,  420,
2646         0,  420,    0,  420,    0,    0,  420,  420,    0,  420,
2647       420,  420,  420,  420,  420,  420,  420,  420,    0,    0,
2648       420,    0,  420,  420,  420,    0,    0,    0,  420,  420,
2649 
2650       420,  420,  420,  420,  420,  420,  420,  420,  420,  420,
2651       420,  420,  420,  420,  420,  420,  420,  420,  423,  423,
2652       423,  423,  423,  423,  423,  423,  426,    0,  426,    0,
2653       600,  600,  600,  600,  600,  600,    0,    0,  426,    0,
2654       426,  426,  426,  426,  426,  426,  600,  602,  602,  602,
2655       602,  602,  602,  603,  603,  603,  603,  603,  603,  603,
2656         0,    0,  426,  427,  604,  427,  604,  604,  604,  604,
2657       604,  604,  427,    0,  427,  427,    0,  427,  427,  427,
2658       427,  427,  427,  430,    0,  430,    0,  430,    0,  430,
2659         0,    0,  430,  430,    0,  430,  430,  430,  430,  430,
2660 
2661       430,  430,  430,  430,  430,    0,  430,    0,  430,  430,
2662       430,    0,    0,    0,  430,  430,  430,  430,  430,  430,
2663       430,  430,  430,  430,  430,  430,  430,  430,  430,  430,
2664       430,  430,  430,  430,  431,    0,  431,  431,  431,  431,
2665       431,  431,  431,  437,    0,  437,    0,  437,    0,  437,
2666         0,    0,  437,  437,    0,  437,  437,  437,  605,    0,
2667       605,  605,  605,  605,  605,  605,  437,    0,  437,    0,
2668         0,    0,    0,    0,  437,  437,  437,  438,    0,  438,
2669         0,  438,    0,  438,    0,    0,  438,  438,    0,  438,
2670       438,  438,  606,    0,  606,  606,  606,  606,  606,  606,
2671 
2672       438,    0,  438,    0,    0,    0,    0,    0,  438,  438,
2673       438,  439,    0,  439,    0,  439,    0,  439,    0,    0,
2674       439,  439,    0,  439,  439,  439,  439,  439,  439,  439,
2675       439,  439,    0,    0,  439,    0,  439,  439,  439,    0,
2676         0,    0,  439,  439,  439,  439,  439,  439,  439,  439,
2677       439,  439,  439,  439,  439,  439,  439,  439,  439,  439,
2678       439,  439,  440,    0,  440,    0,  440,    0,  440,    0,
2679         0,  440,  440,    0,  440,  440,  440,  610,  610,  610,
2680       610,  610,  610,    0,    0,  440,    0,  440,    0,    0,
2681         0,    0,    0,  440,  440,  440,  441,    0,  441,    0,
2682 
2683       441,    0,  441,    0,    0,  441,  441,    0,  441,  441,
2684       441,  441,  441,  441,  441,  441,  441,    0,    0,  441,
2685         0,  441,  441,  441,    0,    0,    0,  441,  441,  441,
2686       441,  441,  441,  441,  441,  441,  441,  441,  441,  441,
2687       441,  441,  441,  441,  441,  441,  441,  455,    0,  455,
2688         0,  455,    0,  455,    0,    0,  455,  455,    0,  455,
2689       455,  455,  455,  455,  455,  455,  455,  455,    0,    0,
2690       455,    0,  455,  455,  455,    0,    0,    0,  455,  455,
2691       455,  455,  455,  455,  455,  455,  455,  455,  455,  455,
2692       455,  455,  455,  455,  455,  455,  455,  455,  456,    0,
2693 
2694       456,    0,  456,    0,  456,    0,    0,  456,  456,    0,
2695       456,  456,  456,  665,  665,  665,  665,  665,  665,  456,
2696         0,  456,    0,  456,    0,    0,    0,    0,    0,  456,
2697       456,  456,  458,    0,  458,    0,  458,    0,  458,    0,
2698         0,  458,  458,    0,  458,  458,  458,  458,  458,  458,
2699       458,  458,  458,    0,    0,  458,    0,  458,  458,  458,
2700         0,    0,    0,  458,  458,  458,  458,  458,  458,  458,
2701       458,  458,  458,  458,  458,  458,  458,  458,  458,  458,
2702       458,  458,  458,  459,    0,  459,    0,  459,    0,  459,
2703         0,    0,  459,  459,    0,  459,  459,  459,  704,  704,
2704 
2705       704,  704,  704,  704,  459,    0,  459,    0,  459,    0,
2706         0,    0,    0,    0,  459,  459,  459,  464,    0,  464,
2707         0,  464,    0,  464,    0,    0,  464,  464,    0,  464,
2708       464,  464,  712,  712,  712,  712,  712,  712,  464,    0,
2709       464,    0,  464,    0,    0,    0,    0,    0,  464,  464,
2710       464,  471,    0,  471,  636,  636,  636,  636,  636,  636,
2711       636,    0,    0,    0,    0,  471,  471,  471,  471,  471,
2712       471,  641,  641,  641,  641,  641,  641,  641,  645,  645,
2713       645,  645,  645,  645,  645,    0,    0,  471,  472,  664,
2714       472,  664,  664,  664,  664,  664,  664,  472,    0,  472,
2715 
2716         0,    0,  472,  472,  472,  472,  472,  472,  474,    0,
2717       474,    0,  474,    0,  474,    0,    0,  474,  474,    0,
2718       474,  474,  702,  702,  702,  702,  702,  702,    0,    0,
2719         0,  474,    0,  474,    0,    0,    0,    0,  702,  474,
2720       474,  474,  475,    0,  475,    0,  475,    0,  475,    0,
2721         0,  475,  475,  703,  475,  475,  703,  703,  703,  703,
2722       703,  703,    0,    0,    0,  475,    0,  475,    0,    0,
2723         0,    0,    0,  475,  475,  475,  476,    0,  476,    0,
2724       476,    0,  476,    0,    0,  476,  476,    0,  476,  476,
2725       705,  705,  705,  705,  705,  705,  705,    0,    0,  476,
2726 
2727         0,  476,    0,    0,    0,    0,    0,  476,  476,  476,
2728       477,    0,  477,    0,  477,    0,  477,    0,    0,  477,
2729       477,    0,  477,  477,  477,  706,    0,  706,  706,  706,
2730       706,  706,  706,  477,    0,  477,    0,    0,    0,    0,
2731         0,  477,  477,  477,  479,    0,  479,    0,  479,    0,
2732       479,    0,    0,  479,  479,    0,  479,  479,  479,  479,
2733       479,  479,  479,  479,  479,    0,    0,  479,    0,  479,
2734       479,  479,    0,    0,    0,  479,  479,  479,  479,  479,
2735       479,  479,  479,  479,  479,  479,  479,  479,  479,  479,
2736       479,  479,  479,  479,  479,  480,    0,  480,    0,  480,
2737 
2738         0,  480,    0,    0,  480,  480,    0,  480,  480,  480,
2739       707,    0,  707,  707,  707,  707,  707,  707,  480,    0,
2740       480,    0,    0,    0,    0,    0,  480,  480,  480,  484,
2741       708,  484,  708,  708,  708,  708,  708,  708,    0,    0,
2742         0,  484,    0,  484,  484,  484,  484,  484,  484,  739,
2743       739,  739,  739,  739,  739,  740,    0,    0,  740,  740,
2744       740,  740,  740,  740,    0,  484,  485,  750,  485,  750,
2745       750,  750,  750,  750,  750,  485,    0,  485,    0,    0,
2746       485,  485,  485,  485,  485,  485,  488,  488,  488,  488,
2747       488,    0,  488,    0,    0,  488,  488,    0,  488,  488,
2748 
2749       488,  488,  488,  488,  488,  488,  488,  488,    0,  488,
2750         0,  488,  488,  488,    0,    0,    0,  488,  488,  488,
2751       488,  488,  488,  488,  488,  488,  488,  488,  488,  488,
2752       488,  488,  488,  488,  488,  488,  488,  489,  746,  489,
2753         0,  746,  746,  746,  746,  746,  746,    0,    0,  489,
2754         0,  489,  489,  489,  489,  489,  489,  489,  496,    0,
2755       496,    0,  496,    0,  496,    0,    0,  496,  496,    0,
2756       496,  496,  496,  751,  751,  751,  751,  751,  751,    0,
2757         0,  496,    0,  496,    0,    0,    0,    0,    0,  496,
2758       496,  496,  497,    0,  497,    0,  497,    0,  497,    0,
2759 
2760         0,  497,  497,    0,  497,  497,  497,  755,  755,  755,
2761       755,  755,  755,    0,    0,  497,    0,  497,    0,    0,
2762         0,    0,    0,  497,  497,  497,  498,    0,  498,    0,
2763       498,    0,  498,    0,    0,  498,  498,    0,  498,  498,
2764       498,  498,  498,  498,  498,  498,  498,    0,    0,  498,
2765         0,  498,  498,  498,    0,    0,    0,  498,  498,  498,
2766       498,  498,  498,  498,  498,  498,  498,  498,  498,  498,
2767       498,  498,  498,  498,  498,  498,  498,  499,    0,  499,
2768         0,  499,    0,  499,    0,    0,  499,  499,    0,  499,
2769       499,  499,  768,  768,  768,  768,  768,  768,  768,    0,
2770 
2771       499,    0,  499,    0,    0,    0,    0,    0,  499,  499,
2772       499,  500,    0,  500,    0,  500,    0,  500,    0,    0,
2773       500,  500,    0,  500,  500,  500,  500,  500,  500,  500,
2774       500,  500,    0,    0,  500,    0,  500,  500,  500,    0,
2775         0,    0,  500,  500,  500,  500,  500,  500,  500,  500,
2776       500,  500,  500,  500,  500,  500,  500,  500,  500,  500,
2777       500,  500,  516,  516,  786,  786,  786,  786,  786,  786,
2778       516,  516,  516,  516,  516,  516,  516,  516,  516,  516,
2779       516,  516,  516,  516,  516,  516,  516,  520,    0,  520,
2780         0,  520,    0,  520,    0,    0,  520,  520,    0,  520,
2781 
2782       520,  520,  520,  520,  520,  520,  520,  520,    0,    0,
2783       520,    0,  520,  520,  520,    0,    0,    0,  520,  520,
2784       520,  520,  520,  520,  520,  520,  520,  520,  520,  520,
2785       520,  520,  520,  520,  520,  520,  520,  520,  521,    0,
2786       521,  521,  521,  521,  521,  521,    0,    0,    0,    0,
2787       785,  521,  785,  785,  785,  785,  785,  785,    0,  521,
2788       521,  521,  521,  521,  535,    0,  535,  789,  789,  789,
2789       789,  789,  789,    0,    0,    0,    0,    0,  535,  535,
2790       535,  535,  535,  535,  797,  797,  797,  797,  797,  797,
2791       797,  800,  800,  800,  800,  800,  800,    0,    0,    0,
2792 
2793       535,  536,    0,  536,  807,  807,  807,  807,  807,  807,
2794       536,    0,  536,    0,    0,  536,  536,  536,  536,  536,
2795       536,  538,    0,  538,    0,  538,    0,  538,    0,    0,
2796       538,  538,    0,  538,  538,  809,  809,  809,  809,  809,
2797       809,    0,    0,    0,  538,    0,  538,    0,    0,    0,
2798         0,    0,  538,  538,  538,  539,    0,  539,    0,  539,
2799         0,  539,    0,    0,  539,  539,    0,  539,  539,  814,
2800       814,  814,  814,  814,  814,    0,    0,    0,  539,    0,
2801       539,    0,    0,    0,    0,    0,  539,  539,  539,  540,
2802         0,  540,    0,  540,    0,  540,    0,    0,  540,  540,
2803 
2804         0,  540,  540,  815,  815,  815,  815,  815,  815,    0,
2805         0,    0,  540,    0,  540,    0,    0,    0,    0,    0,
2806       540,  540,  540,  541,    0,  541,    0,  541,    0,  541,
2807         0,    0,  541,  541,    0,  541,  541,  541,  820,  820,
2808       820,  820,  820,  820,    0,    0,  541,    0,  541,    0,
2809         0,    0,    0,    0,  541,  541,  541,  542,    0,  542,
2810       542,  542,  542,  542,  542,  824,  824,  824,  824,  824,
2811       824,    0,    0,    0,    0,  542,  543,    0,  543,    0,
2812       543,    0,  543,    0,    0,  543,  543,    0,  543,  543,
2813       543,  825,  825,  825,  825,  825,  825,    0,    0,  543,
2814 
2815         0,  543,    0,    0,    0,    0,    0,  543,  543,  543,
2816       545,  545,  545,  545,  545,  545,  545,  545,  549,    0,
2817       549,  827,  827,  827,  827,  827,  827,    0,    0,    0,
2818       549,    0,  549,  549,  549,  549,  549,  549,  828,  828,
2819       828,  828,  828,  828,    0,    0,    0,    0,    0,    0,
2820         0,    0,    0,    0,  549,  550,    0,  550,    0,    0,
2821         0,    0,    0,    0,  550,    0,  550,  550,    0,  550,
2822       550,  550,  550,  550,  550,  554,    0,  554,    0,  554,
2823         0,  554,    0,    0,  554,  554,    0,  554,  554,  554,
2824       554,  554,  554,  554,  554,  554,  554,    0,  554,    0,
2825 
2826       554,  554,  554,    0,    0,    0,  554,  554,  554,  554,
2827       554,  554,  554,  554,  554,  554,  554,  554,  554,  554,
2828       554,  554,  554,  554,  554,  554,  555,    0,  555,  555,
2829       555,  555,  555,  555,  555,  560,    0,  560,    0,  560,
2830         0,  560,    0,    0,  560,  560,    0,  560,  560,  560,
2831         0,    0,    0,    0,    0,    0,    0,    0,  560,    0,
2832       560,    0,    0,    0,    0,    0,  560,  560,  560,  561,
2833         0,  561,    0,  561,    0,  561,    0,    0,  561,  561,
2834         0,  561,  561,  561,    0,    0,    0,    0,    0,    0,
2835         0,    0,  561,    0,  561,    0,    0,    0,    0,    0,
2836 
2837       561,  561,  561,  562,  562,    0,    0,    0,    0,    0,
2838         0,  562,  562,  562,  562,  562,  562,  562,  562,  562,
2839       562,  562,  562,  562,  562,  562,  562,  562,  563,    0,
2840       563,    0,  563,    0,  563,    0,    0,  563,  563,    0,
2841       563,  563,  563,    0,    0,    0,    0,    0,    0,    0,
2842         0,  563,    0,  563,    0,    0,    0,    0,    0,  563,
2843       563,  563,  564,    0,  564,    0,  564,    0,  564,    0,
2844         0,  564,  564,    0,  564,  564,  564,  564,  564,  564,
2845       564,  564,  564,    0,    0,  564,    0,  564,  564,  564,
2846         0,    0,    0,  564,  564,  564,  564,  564,  564,  564,
2847 
2848       564,  564,  564,  564,  564,  564,  564,  564,  564,  564,
2849       564,  564,  564,  570,    0,  570,    0,  570,    0,  570,
2850         0,    0,  570,  570,    0,  570,  570,  570,  570,  570,
2851       570,  570,  570,  570,  570,    0,  570,    0,  570,  570,
2852       570,    0,    0,    0,  570,  570,  570,  570,  570,  570,
2853       570,  570,  570,  570,  570,  570,  570,  570,  570,  570,
2854       570,  570,  570,  570,  575,  575,    0,    0,    0,    0,
2855         0,    0,  575,  575,  575,  575,  575,  575,  575,  575,
2856       575,  575,  575,  575,  575,  575,  575,  575,  575,  579,
2857       579,  579,  579,  579,  579,    0,    0,    0,    0,    0,
2858 
2859       579,    0,    0,    0,    0,    0,    0,    0,  579,  579,
2860       579,  579,  579,  580,  580,  580,  580,  580,  580,    0,
2861         0,    0,    0,    0,  580,    0,    0,    0,    0,    0,
2862         0,    0,  580,  580,  580,  580,  580,  592,    0,  592,
2863         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
2864         0,  592,  592,  592,  592,  592,  592,    0,    0,    0,
2865         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
2866         0,    0,    0,  592,  593,    0,  593,    0,    0,    0,
2867         0,    0,    0,  593,    0,  593,    0,    0,  593,  593,
2868       593,  593,  593,  593,  595,    0,  595,    0,  595,    0,
2869 
2870       595,    0,    0,  595,  595,    0,  595,  595,    0,    0,
2871         0,    0,    0,    0,    0,    0,    0,  595,    0,  595,
2872         0,    0,    0,    0,    0,  595,  595,  595,  596,    0,
2873       596,    0,  596,    0,  596,    0,    0,  596,  596,    0,
2874       596,  596,    0,    0,    0,    0,    0,    0,    0,    0,
2875         0,  596,    0,  596,    0,    0,    0,    0,    0,  596,
2876       596,  596,  597,    0,  597,    0,  597,    0,  597,    0,
2877         0,  597,  597,    0,  597,  597,    0,    0,    0,    0,
2878         0,    0,    0,    0,    0,  597,    0,  597,    0,    0,
2879         0,    0,    0,  597,  597,  597,  598,    0,  598,    0,
2880 
2881       598,    0,  598,    0,    0,  598,  598,    0,  598,  598,
2882       598,    0,    0,    0,    0,    0,    0,    0,    0,  598,
2883         0,  598,    0,    0,    0,    0,    0,  598,  598,  598,
2884       599,    0,  599,    0,  599,    0,  599,    0,    0,  599,
2885       599,    0,  599,  599,  599,    0,    0,    0,    0,    0,
2886         0,    0,    0,  599,    0,  599,    0,    0,    0,    0,
2887         0,  599,  599,  599,  601,    0,  601,  601,    0,  601,
2888       601,  601,  601,  601,  601,    0,    0,    0,    0,  601,
2889       607,    0,  607,    0,    0,    0,    0,    0,    0,    0,
2890         0,    0,  607,    0,  607,  607,  607,  607,  607,  607,
2891 
2892         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
2893         0,    0,    0,    0,    0,    0,  607,  608,    0,  608,
2894         0,    0,    0,    0,    0,    0,  608,    0,  608,    0,
2895         0,  608,  608,  608,  608,  608,  608,  612,    0,  612,
2896         0,  612,    0,  612,    0,    0,  612,  612,    0,  612,
2897       612,  612,  612,  612,  612,  612,  612,  612,  612,    0,
2898       612,    0,  612,  612,  612,    0,    0,    0,  612,  612,
2899       612,  612,  612,  612,  612,  612,  612,  612,  612,  612,
2900       612,  612,  612,  612,  612,  612,  612,  612,  613,    0,
2901       613,  613,  613,  613,  613,  613,  613,  620,    0,  620,
2902 
2903         0,  620,    0,  620,    0,    0,  620,  620,    0,  620,
2904       620,  620,    0,    0,    0,    0,    0,    0,    0,    0,
2905       620,    0,  620,    0,    0,    0,    0,    0,  620,  620,
2906       620,  621,    0,  621,    0,  621,    0,  621,    0,    0,
2907       621,  621,    0,  621,  621,  621,    0,    0,    0,    0,
2908         0,    0,    0,    0,  621,    0,  621,    0,    0,    0,
2909         0,    0,  621,  621,  621,  622,    0,  622,    0,  622,
2910         0,  622,    0,    0,  622,  622,    0,  622,  622,  622,
2911       622,  622,  622,  622,  622,  622,    0,    0,  622,    0,
2912       622,  622,  622,    0,    0,    0,  622,  622,  622,  622,
2913 
2914       622,  622,  622,  622,  622,  622,  622,  622,  622,  622,
2915       622,  622,  622,  622,  622,  622,  623,    0,  623,    0,
2916       623,    0,  623,    0,    0,  623,  623,    0,  623,  623,
2917       623,    0,    0,    0,    0,    0,    0,    0,    0,  623,
2918         0,  623,    0,    0,    0,    0,    0,  623,  623,  623,
2919       624,    0,  624,    0,  624,    0,  624,    0,    0,  624,
2920       624,    0,  624,  624,  624,  624,  624,  624,  624,  624,
2921       624,    0,    0,  624,    0,  624,  624,  624,    0,    0,
2922         0,  624,  624,  624,  624,  624,  624,  624,  624,  624,
2923       624,  624,  624,  624,  624,  624,  624,  624,  624,  624,
2924 
2925       624,  627,    0,  627,    0,  627,    0,  627,    0,    0,
2926       627,  627,    0,  627,  627,  627,  627,  627,  627,  627,
2927       627,  627,  627,    0,  627,    0,  627,  627,  627,    0,
2928         0,    0,  627,  627,  627,  627,  627,  627,  627,  627,
2929       627,  627,  627,  627,  627,  627,  627,  627,  627,  627,
2930       627,  627,  635,  635,  635,  635,  635,  635,    0,    0,
2931         0,    0,    0,  635,    0,    0,    0,    0,    0,    0,
2932         0,  635,  635,  635,  635,  635,  639,  639,  639,  639,
2933       639,  639,    0,    0,    0,    0,    0,  639,    0,    0,
2934         0,    0,    0,    0,    0,  639,  639,  639,  639,  639,
2935 
2936       640,  640,  640,  640,  640,  640,    0,    0,    0,    0,
2937         0,  640,    0,    0,    0,    0,    0,    0,    0,  640,
2938       640,  640,  640,  640,  650,    0,  650,    0,    0,    0,
2939         0,    0,    0,    0,    0,    0,    0,    0,  650,  650,
2940       650,  650,  650,  650,    0,    0,    0,    0,    0,    0,
2941         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
2942       650,  651,    0,  651,    0,    0,    0,    0,    0,    0,
2943       651,    0,  651,    0,    0,  651,  651,  651,  651,  651,
2944       651,  653,    0,  653,    0,  653,    0,  653,    0,    0,
2945       653,  653,    0,  653,  653,    0,    0,    0,    0,    0,
2946 
2947         0,    0,    0,    0,  653,    0,  653,    0,    0,    0,
2948         0,    0,  653,  653,  653,  654,    0,  654,    0,  654,
2949         0,  654,    0,    0,  654,  654,    0,  654,  654,    0,
2950         0,    0,    0,    0,    0,    0,    0,    0,  654,    0,
2951       654,    0,    0,    0,    0,    0,  654,  654,  654,  655,
2952         0,  655,    0,  655,    0,  655,    0,    0,  655,  655,
2953         0,  655,  655,    0,    0,    0,    0,    0,    0,    0,
2954         0,    0,  655,    0,  655,    0,    0,    0,    0,    0,
2955       655,  655,  655,  656,    0,  656,    0,  656,    0,  656,
2956         0,    0,  656,  656,    0,  656,  656,  656,    0,    0,
2957 
2958         0,    0,    0,    0,    0,    0,  656,    0,  656,    0,
2959         0,    0,    0,    0,  656,  656,  656,  657,    0,  657,
2960         0,  657,    0,  657,    0,    0,  657,  657,    0,  657,
2961       657,  657,    0,    0,    0,    0,    0,    0,    0,    0,
2962       657,    0,  657,    0,    0,    0,    0,    0,  657,  657,
2963       657,  658,    0,  658,  658,  658,  658,  658,  658,    0,
2964         0,    0,    0,    0,    0,    0,    0,    0,    0,  658,
2965       660,  660,    0,  660,  660,  660,  660,  660,  660,    0,
2966         0,    0,    0,  660,  662,  662,  662,  662,  662,  662,
2967       662,  662,  666,    0,  666,    0,    0,    0,    0,    0,
2968 
2969         0,    0,    0,    0,  666,    0,  666,  666,  666,  666,
2970       666,  666,    0,    0,    0,    0,    0,    0,    0,    0,
2971         0,    0,    0,    0,    0,    0,    0,    0,  666,  667,
2972         0,  667,    0,    0,    0,    0,    0,    0,  667,    0,
2973       667,  667,    0,  667,  667,  667,  667,  667,  667,  671,
2974         0,  671,    0,  671,    0,  671,    0,    0,  671,  671,
2975         0,  671,  671,  671,  671,  671,  671,  671,  671,  671,
2976       671,    0,  671,    0,  671,  671,  671,    0,    0,    0,
2977       671,  671,  671,  671,  671,  671,  671,  671,  671,  671,
2978       671,  671,  671,  671,  671,  671,  671,  671,  671,  671,
2979 
2980       672,    0,  672,  672,  672,  672,  672,  672,  672,  677,
2981         0,  677,    0,  677,    0,  677,    0,    0,  677,  677,
2982         0,  677,  677,  677,    0,    0,    0,    0,    0,    0,
2983         0,    0,  677,    0,  677,    0,    0,    0,    0,    0,
2984       677,  677,  677,  678,    0,  678,    0,  678,    0,  678,
2985         0,    0,  678,  678,    0,  678,  678,  678,    0,    0,
2986         0,    0,    0,    0,    0,    0,  678,    0,  678,    0,
2987         0,    0,    0,    0,  678,  678,  678,  679,  679,    0,
2988         0,    0,    0,    0,    0,  679,  679,  679,  679,  679,
2989       679,  679,  679,  679,  679,  679,  679,  679,  679,  679,
2990 
2991       679,  679,  680,    0,  680,    0,  680,    0,  680,    0,
2992         0,  680,  680,    0,  680,  680,  680,    0,    0,    0,
2993         0,    0,    0,    0,    0,  680,    0,  680,    0,    0,
2994         0,    0,    0,  680,  680,  680,  681,    0,  681,    0,
2995       681,    0,  681,    0,    0,  681,  681,    0,  681,  681,
2996       681,  681,  681,  681,  681,  681,  681,    0,    0,  681,
2997         0,  681,  681,  681,    0,    0,    0,  681,  681,  681,
2998       681,  681,  681,  681,  681,  681,  681,  681,  681,  681,
2999       681,  681,  681,  681,  681,  681,  681,  683,    0,  683,
3000         0,  683,    0,  683,    0,    0,  683,  683,    0,  683,
3001 
3002       683,  683,  683,  683,  683,  683,  683,  683,  683,    0,
3003       683,    0,  683,  683,  683,    0,    0,    0,  683,  683,
3004       683,  683,  683,  683,  683,  683,  683,  683,  683,  683,
3005       683,  683,  683,  683,  683,  683,  683,  683,  686,  686,
3006       686,  686,  686,  686,    0,    0,    0,    0,    0,  686,
3007         0,    0,    0,    0,    0,    0,    0,  686,  686,  686,
3008       686,  686,  687,  687,  687,  687,  687,  687,    0,    0,
3009         0,    0,    0,  687,    0,    0,    0,    0,    0,    0,
3010         0,  687,  687,  687,  687,  687,  694,    0,  694,    0,
3011         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3012 
3013       694,  694,  694,  694,  694,  694,    0,    0,    0,    0,
3014         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3015         0,    0,  694,  695,    0,  695,    0,    0,    0,    0,
3016         0,    0,  695,    0,  695,    0,    0,  695,  695,  695,
3017       695,  695,  695,  697,    0,  697,    0,  697,    0,  697,
3018         0,    0,  697,  697,    0,  697,  697,    0,    0,    0,
3019         0,    0,    0,    0,    0,    0,  697,    0,  697,    0,
3020         0,    0,    0,    0,  697,  697,  697,  698,    0,  698,
3021         0,  698,    0,  698,    0,    0,  698,  698,    0,  698,
3022       698,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3023 
3024       698,    0,  698,    0,    0,    0,    0,    0,  698,  698,
3025       698,  699,    0,  699,    0,  699,    0,  699,    0,    0,
3026       699,  699,    0,  699,  699,    0,    0,    0,    0,    0,
3027         0,    0,    0,    0,  699,    0,  699,    0,    0,    0,
3028         0,    0,  699,  699,  699,  700,    0,  700,    0,  700,
3029         0,  700,    0,    0,  700,  700,    0,  700,  700,  700,
3030         0,    0,    0,    0,    0,    0,    0,    0,  700,    0,
3031       700,    0,    0,    0,    0,    0,  700,  700,  700,  701,
3032         0,  701,    0,  701,    0,  701,    0,    0,  701,  701,
3033         0,  701,  701,  701,    0,    0,    0,    0,    0,    0,
3034 
3035         0,    0,  701,    0,  701,    0,    0,    0,    0,    0,
3036       701,  701,  701,  709,    0,  709,    0,    0,    0,    0,
3037         0,    0,    0,    0,    0,  709,    0,  709,  709,  709,
3038       709,  709,  709,    0,    0,    0,    0,    0,    0,    0,
3039         0,    0,    0,    0,    0,    0,    0,    0,    0,  709,
3040       710,    0,  710,    0,    0,    0,    0,    0,    0,  710,
3041         0,  710,    0,    0,  710,  710,  710,  710,  710,  710,
3042       714,    0,  714,    0,  714,    0,  714,    0,    0,  714,
3043       714,    0,  714,  714,  714,  714,  714,  714,  714,  714,
3044       714,  714,    0,  714,    0,  714,  714,  714,    0,    0,
3045 
3046         0,  714,  714,  714,  714,  714,  714,  714,  714,  714,
3047       714,  714,  714,  714,  714,  714,  714,  714,  714,  714,
3048       714,  715,    0,  715,  715,  715,  715,  715,  715,  715,
3049       722,    0,  722,    0,  722,    0,  722,    0,    0,  722,
3050       722,    0,  722,  722,  722,    0,    0,    0,    0,    0,
3051         0,    0,    0,  722,    0,  722,    0,    0,    0,    0,
3052         0,  722,  722,  722,  723,    0,  723,    0,  723,    0,
3053       723,    0,    0,  723,  723,    0,  723,  723,  723,    0,
3054         0,    0,    0,    0,    0,    0,    0,  723,    0,  723,
3055         0,    0,    0,    0,    0,  723,  723,  723,  724,    0,
3056 
3057       724,    0,  724,    0,  724,    0,    0,  724,  724,    0,
3058       724,  724,  724,  724,  724,  724,  724,  724,  724,    0,
3059         0,  724,    0,  724,  724,  724,    0,    0,    0,  724,
3060       724,  724,  724,  724,  724,  724,  724,  724,  724,  724,
3061       724,  724,  724,  724,  724,  724,  724,  724,  724,  725,
3062         0,  725,    0,  725,    0,  725,    0,    0,  725,  725,
3063         0,  725,  725,  725,    0,    0,    0,    0,    0,    0,
3064         0,    0,  725,    0,  725,    0,    0,    0,    0,    0,
3065       725,  725,  725,  726,    0,  726,    0,  726,    0,  726,
3066         0,    0,  726,  726,    0,  726,  726,  726,  726,  726,
3067 
3068       726,  726,  726,  726,    0,    0,  726,    0,  726,  726,
3069       726,    0,    0,    0,  726,  726,  726,  726,  726,  726,
3070       726,  726,  726,  726,  726,  726,  726,  726,  726,  726,
3071       726,  726,  726,  726,  727,    0,  727,    0,  727,    0,
3072       727,    0,    0,  727,  727,    0,  727,  727,  727,  727,
3073       727,  727,  727,  727,  727,  727,    0,  727,    0,  727,
3074       727,  727,    0,    0,    0,  727,  727,  727,  727,  727,
3075       727,  727,  727,  727,  727,  727,  727,  727,  727,  727,
3076       727,  727,  727,  727,  727,  730,  730,  730,  730,  730,
3077       730,    0,    0,    0,    0,    0,  730,    0,    0,    0,
3078 
3079         0,    0,    0,    0,  730,  730,  730,  730,  730,  731,
3080       731,  731,  731,  731,  731,    0,    0,    0,    0,    0,
3081       731,    0,    0,    0,    0,    0,    0,    0,  731,  731,
3082       731,  731,  731,  741,  741,    0,  741,  741,  741,  741,
3083       741,  741,  743,    0,  743,    0,  743,    0,  743,    0,
3084         0,  743,  743,    0,    0,  743,  743,    0,    0,    0,
3085         0,    0,    0,    0,    0,  743,    0,  743,    0,    0,
3086         0,    0,    0,  743,    0,  743,  744,    0,  744,    0,
3087       744,    0,  744,    0,    0,  744,  744,    0,    0,  744,
3088       744,    0,    0,    0,    0,    0,    0,    0,    0,  744,
3089 
3090         0,  744,    0,    0,    0,    0,    0,  744,    0,  744,
3091       745,    0,    0,  745,  745,  745,  745,  745,  745,    0,
3092         0,    0,    0,    0,    0,    0,    0,    0,    0,  745,
3093       748,  748,  748,  748,  748,  748,  748,  748,  752,    0,
3094       752,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3095       752,    0,  752,  752,  752,  752,  752,  752,    0,    0,
3096         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
3097         0,    0,    0,    0,  752,  753,    0,  753,    0,    0,
3098         0,    0,    0,    0,  753,    0,  753,  753,    0,  753,
3099       753,  753,  753,  753,  753,  757,    0,  757,    0,  757,
3100 
3101         0,  757,    0,    0,  757,  757,    0,  757,  757,  757,
3102       757,  757,  757,  757,  757,  757,  757,    0,  757,    0,
3103       757,  757,  757,    0,    0,    0,  757,  757,  757,  757,
3104       757,  757,  757,  757,  757,  757,  757,  757,  757,  757,
3105       757,  757,  757,  757,  757,  757,  758,    0,  758,  758,
3106       758,  758,  758,  758,  758,  763,    0,  763,    0,  763,
3107         0,  763,    0,    0,  763,  763,    0,  763,  763,  763,
3108         0,    0,    0,    0,    0,    0,    0,    0,  763,    0,
3109       763,    0,    0,    0,    0,    0,  763,  763,  763,  764,
3110         0,  764,    0,  764,    0,  764,    0,    0,  764,  764,
3111 
3112         0,  764,  764,  764,    0,    0,    0,    0,    0,    0,
3113         0,    0,  764,    0,  764,    0,    0,    0,    0,    0,
3114       764,  764,  764,  765,  765,    0,    0,    0,    0,    0,
3115         0,  765,  765,  765,  765,  765,  765,  765,  765,  765,
3116       765,  765,  765,  765,  765,  765,  765,  765,  766,  766,
3117       766,  766,  766,  766,    0,    0,    0,    0,    0,  766,
3118         0,    0,    0,    0,    0,    0,    0,  766,  766,  766,
3119       766,  766,  767,  767,  767,  767,  767,  767,    0,    0,
3120         0,    0,    0,  767,    0,    0,    0,    0,    0,    0,
3121         0,  767,  767,  767,  767,  767,  772,  772,  772,  772,
3122 
3123       772,  772,    0,    0,    0,    0,    0,  772,    0,    0,
3124         0,    0,    0,    0,    0,  772,  772,  772,  772,  772,
3125       773,  773,  773,  773,  773,  773,    0,    0,    0,    0,
3126         0,  773,    0,    0,    0,    0,    0,    0,    0,  773,
3127       773,  773,  773,  773,  798,  798,  798,  798,  798,  798,
3128         0,    0,    0,    0,    0,  798,    0,    0,    0,    0,
3129         0,    0,    0,  798,  798,  798,  798,  798,  799,  799,
3130       799,  799,  799,  799,    0,    0,    0,    0,    0,  799,
3131         0,    0,    0,    0,    0,    0,    0,  799,  799,  799,
3132       799,  799,  831,  831,  831,  831,  831,  831,  831,  831,
3133 
3134       831,  831,  831,  831,  831,  831,  831,  831,  831,  832,
3135       832,  832,  832,  832,  832,  832,  832,  832,  832,  832,
3136       832,  832,  832,  832,  832,  832,  833,  833,  833,  833,
3137       833,  833,  833,  833,  833,  833,  833,  833,  833,  833,
3138       833,  833,  833,  834,  834,  834,  834,  834,  834,  834,
3139       834,  834,  834,  834,  834,  834,  834,  834,  834,  834,
3140       835,  835,  835,  835,  835,  835,  835,  835,  835,  835,
3141       835,  835,  835,  835,  835,  835,  835,  836,  836,  836,
3142       836,  836,  836,  836,  836,  836,  836,  836,  836,  836,
3143       836,  836,  836,  836,  837,  837,    0,  837,  837,  837,
3144 
3145       837,  837,  837,  837,  837,  837,  837,  837,  837,  837,
3146       837,  838,    0,    0,  838,  838,    0,  838,  838,  838,
3147       838,  839,  839,    0,  839,    0,  839,  839,  839,  839,
3148       839,  839,  839,  839,  839,  839,  839,  839,  840,  840,
3149       840,  840,  840,  840,  840,  840,  840,  840,  840,  840,
3150       840,  840,  840,  840,  840,  841,  841,    0,  841,  841,
3151       841,  841,  841,  841,  841,  841,  841,  841,  841,  841,
3152       841,  841,  842,  842,    0,  842,  842,  842,  842,  842,
3153       842,  842,  842,  842,  842,  842,  842,  842,  842,  843,
3154       843,    0,  843,  843,  843,  843,  843,  843,  843,  843,
3155 
3156       843,  843,  843,  843,  843,  843,  844,    0,    0,    0,
3157       844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
3158       844,  844,  844,  845,  845,    0,  845,  845,  845,  845,
3159       845,  845,  845,  845,  845,  845,  845,  845,  845,  845,
3160       846,    0,  846,    0,    0,    0,  846,  846,  846,  846,
3161       846,    0,  846,  846,  846,  846,  846,  847,  847,    0,
3162         0,    0,  847,  847,  847,  847,  847,  847,  847,    0,
3163       847,  847,  847,  847,  848,  848,  848,  848,  848,  848,
3164       848,  848,  848,  848,  848,  848,  848,  848,  848,  848,
3165       848,  849,  849,  849,    0,    0,  849,  849,    0,  849,
3166 
3167       850,    0,  850,    0,    0,    0,  850,  850,  850,  850,
3168       850,    0,  850,  850,  850,  850,  850,  851,  851,    0,
3169       851,  851,  851,  851,  851,  851,  851,  851,  851,  851,
3170       851,  851,  851,  851,  852,    0,  852,    0,    0,    0,
3171       852,  852,    0,  852,  852,    0,  852,  852,  852,  852,
3172       852,  853,  853,  853,  853,  853,  853,  853,  853,  853,
3173       853,  853,  853,  853,  853,  853,  853,  853,  854,  854,
3174       854,    0,    0,  854,  854,    0,  854,  855,    0,  855,
3175         0,    0,    0,  855,  855,  855,  855,  855,    0,  855,
3176       855,  855,  855,  855,  856,    0,  856,    0,    0,    0,
3177 
3178       856,  856,  856,  856,  856,    0,  856,  856,  856,  856,
3179       856,  857,  857,    0,    0,  857,    0,    0,  857,  858,
3180         0,  858,    0,    0,    0,  858,  858,  858,  858,  858,
3181         0,  858,  858,  858,  858,  858,  859,  859,    0,  859,
3182       859,  859,  859,  859,  859,  859,  859,  859,  859,  859,
3183       859,  859,  859,  860,  860,  860,    0,    0,  860,  860,
3184         0,  860,  861,    0,  861,    0,    0,    0,  861,  861,
3185       861,  861,  861,    0,  861,  861,  861,  861,  861,  862,
3186         0,  862,    0,    0,    0,  862,  862,  862,  862,  862,
3187         0,  862,  862,  862,  862,  862,  863,  863,  863,    0,
3188 
3189       863,    0,    0,  863,  864,    0,  864,    0,    0,    0,
3190       864,  864,  864,  864,  864,    0,  864,  864,  864,  864,
3191       864,  865,    0,  865,    0,    0,    0,  865,  865,    0,
3192       865,  865,    0,  865,  865,  865,  865,  865,  866,    0,
3193         0,  866,    0,    0,  866,  866,  866,  866,  867,  867,
3194       867,    0,    0,  867,  867,    0,  867,  868,    0,  868,
3195         0,    0,  868,  868,    0,    0,  868,  869,    0,  869,
3196         0,    0,    0,  869,  869,  869,  869,  869,    0,  869,
3197       869,  869,  869,  869,  870,    0,  870,    0,    0,    0,
3198       870,  870,  870,  870,  870,    0,  870,  870,  870,  870,
3199 
3200       870,  871,  871,    0,  871,    0,    0,  871,  872,  872,
3201       872,    0,  872,    0,    0,  872,  873,    0,    0,  873,
3202         0,    0,  873,  874,    0,  874,    0,    0,    0,  874,
3203       874,  874,  874,  874,    0,  874,  874,  874,  874,  874,
3204       875,    0,  875,    0,    0,    0,  875,  875,  875,  875,
3205       875,    0,  875,  875,  875,  875,  875,  876,    0,  876,
3206         0,    0,    0,  876,  876,  876,  876,  876,  876,  876,
3207       876,  876,  876,  876,  877,    0,  877,    0,    0,    0,
3208       877,  877,  877,  877,  877,  877,  877,  877,  877,  877,
3209       877,  878,    0,  878,    0,    0,    0,  878,  878,  878,
3210 
3211       878,  878,  878,  878,  878,  878,  878,  878,  879,    0,
3212       879,    0,    0,    0,  879,  879,  879,  879,  879,    0,
3213       879,  879,  879,  879,  879,  880,    0,  880,    0,    0,
3214         0,  880,  880,  880,  880,  880,    0,  880,  880,  880,
3215       880,  880,  881,  881,    0,  881,    0,    0,  881,  881,
3216       881,  881,  882,    0,  882,    0,    0,    0,  882,  882,
3217       882,  882,  882,    0,  882,  882,  882,  882,  882,  883,
3218       883,  883,    0,    0,  883,  883,    0,  883,  884,    0,
3219       884,    0,    0,    0,  884,  884,  884,  884,  884,    0,
3220       884,  884,  884,  884,  884,  885,    0,  885,    0,    0,
3221 
3222         0,  885,  885,  885,  885,  885,    0,  885,  885,  885,
3223       885,  885,  886,  886,    0,  886,    0,    0,  886,  887,
3224       887,  887,    0,  887,    0,    0,  887,  888,  888,  888,
3225         0,  888,    0,    0,  888,  889,    0,  889,    0,    0,
3226         0,  889,  889,  889,  889,  889,    0,  889,  889,  889,
3227       889,  889,  890,    0,  890,    0,    0,    0,  890,  890,
3228       890,  890,  890,    0,  890,  890,  890,  890,  890,  891,
3229         0,    0,  891,    0,    0,  891,  891,  891,  891,  892,
3230       892,  892,    0,    0,  892,  892,    0,  892,  893,    0,
3231       893,    0,    0,    0,  893,  893,  893,  893,  893,    0,
3232 
3233       893,  893,  893,  893,  893,  894,    0,  894,    0,    0,
3234         0,  894,  894,  894,  894,  894,    0,  894,  894,  894,
3235       894,  894,  895,  895,    0,  895,    0,    0,  895,  896,
3236       896,    0,  896,    0,    0,  896,  897,  897,  897,    0,
3237       897,    0,    0,  897,  898,    0,    0,  898,    0,    0,
3238       898,  899,    0,  899,    0,    0,    0,  899,  899,  899,
3239       899,  899,    0,  899,  899,  899,  899,  899,  900,    0,
3240       900,    0,    0,    0,  900,  900,  900,  900,  900,    0,
3241       900,  900,  900,  900,  900,  901,    0,  901,    0,    0,
3242         0,  901,  901,  901,  901,  901,  901,  901,  901,  901,
3243 
3244       901,  901,  902,    0,  902,    0,    0,    0,  902,  902,
3245       902,  902,  902,  902,  902,  902,  902,  902,  902,  903,
3246         0,  903,    0,    0,    0,  903,  903,  903,  903,  903,
3247       903,  903,  903,  903,  903,  903,  904,  904,  904,    0,
3248         0,  904,  904,    0,  904,  905,    0,  905,    0,    0,
3249         0,  905,  905,  905,  905,  905,    0,  905,  905,  905,
3250       905,  905,  906,    0,  906,    0,    0,    0,  906,  906,
3251       906,  906,  906,    0,  906,  906,  906,  906,  906,  907,
3252       907,    0,  907,    0,    0,  907,  908,  908,    0,  908,
3253         0,    0,  908,  909,  909,  909,    0,  909,    0,    0,
3254 
3255       909,  910,  910,  910,    0,  910,    0,    0,  910,  911,
3256         0,  911,    0,    0,    0,  911,  911,  911,  911,  911,
3257         0,  911,  911,  911,  911,  911,  912,    0,  912,    0,
3258         0,    0,  912,  912,  912,  912,  912,    0,  912,  912,
3259       912,  912,  912,  913,    0,    0,  913,    0,    0,  913,
3260       913,  913,  913,  914,    0,    0,  914,    0,    0,  914,
3261       914,  914,  914,  915,  915,  915,    0,    0,  915,  915,
3262         0,  915,  916,    0,  916,    0,    0,    0,  916,  916,
3263       916,  916,  916,    0,  916,  916,  916,  916,  916,  917,
3264         0,  917,    0,    0,    0,  917,  917,  917,  917,  917,
3265 
3266         0,  917,  917,  917,  917,  917,  918,    0,  918,    0,
3267         0,    0,  918,  918,  918,  918,  918,    0,  918,  918,
3268       918,  918,  918,  919,  919,    0,  919,    0,    0,  919,
3269       920,  920,    0,  920,    0,    0,  920,  921,  921,  921,
3270         0,  921,    0,    0,  921,  922,    0,    0,  922,    0,
3271         0,  922,  923,    0,  923,    0,    0,    0,  923,  923,
3272       923,  923,  923,    0,  923,  923,  923,  923,  923,  924,
3273         0,  924,    0,    0,    0,  924,  924,  924,  924,  924,
3274         0,  924,  924,  924,  924,  924,  925,    0,    0,  925,
3275         0,    0,  925,  925,  925,  925,  926,    0,    0,  926,
3276 
3277         0,    0,  926,  926,  926,  926,  927,  927,  927,    0,
3278         0,  927,  927,    0,  927,  928,    0,  928,    0,    0,
3279         0,  928,  928,  928,  928,  928,    0,  928,  928,  928,
3280       928,  928,  929,    0,  929,    0,    0,    0,  929,  929,
3281       929,  929,  929,    0,  929,  929,  929,  929,  929,  930,
3282         0,  930,    0,    0,    0,  930,  930,  930,  930,  930,
3283         0,  930,  930,  930,  930,  930,  931,    0,  931,    0,
3284         0,    0,    0,    0,    0,  931,  932,  932,    0,  932,
3285         0,    0,  932,  933,  933,    0,  933,    0,    0,  933,
3286       934,  934,  934,    0,  934,    0,    0,  934,  935,  935,
3287 
3288       935,    0,  935,    0,    0,  935,  936,    0,  936,    0,
3289         0,    0,  936,  936,  936,  936,  936,    0,  936,  936,
3290       936,  936,  936,  937,    0,  937,    0,    0,    0,  937,
3291       937,  937,  937,  937,    0,  937,  937,  937,  937,  937,
3292       938,    0,    0,  938,    0,    0,  938,  938,  938,  938,
3293       939,    0,    0,  939,    0,    0,  939,  939,  939,  939,
3294       940,    0,    0,  940,    0,    0,  940,  940,  940,  940,
3295       941,  941,  941,    0,    0,  941,  941,    0,  941,  942,
3296         0,  942,    0,    0,    0,  942,  942,  942,  942,  942,
3297         0,  942,  942,  942,  942,  942,  943,    0,  943,    0,
3298 
3299         0,    0,  943,  943,  943,  943,  943,    0,  943,  943,
3300       943,  943,  943,  944,    0,  944,    0,    0,    0,  944,
3301       944,  944,  944,  944,    0,  944,  944,  944,  944,  944,
3302       945,    0,  945,    0,    0,    0,  945,  945,  945,  945,
3303       945,    0,  945,  945,  945,  945,  945,  946,  946,    0,
3304       946,    0,    0,  946,  947,  947,    0,  947,    0,    0,
3305       947,  948,  948,  948,    0,  948,    0,    0,  948,  949,
3306         0,    0,  949,    0,    0,  949,  950,    0,  950,    0,
3307         0,    0,  950,  950,  950,  950,  950,    0,  950,  950,
3308       950,  950,  950,  951,    0,  951,    0,    0,    0,  951,
3309 
3310       951,  951,  951,  951,    0,  951,  951,  951,  951,  951,
3311       952,  952,  952,    0,    0,  952,  952,    0,  952,  953,
3312         0,  953,    0,    0,    0,  953,  953,  953,  953,  953,
3313         0,  953,  953,  953,  953,  953,  954,    0,  954,    0,
3314         0,    0,  954,  954,  954,  954,  954,    0,  954,  954,
3315       954,  954,  954,  955,    0,  955,    0,    0,    0,  955,
3316       955,  955,  955,  955,    0,  955,  955,  955,  955,  955,
3317       956,  956,    0,  956,    0,    0,  956,  957,  957,    0,
3318       957,    0,    0,  957,  958,  958,  958,    0,  958,    0,
3319         0,  958,  959,  959,  959,    0,  959,    0,    0,  959,
3320 
3321       960,    0,  960,    0,    0,    0,  960,  960,  960,  960,
3322       960,    0,  960,  960,  960,  960,  960,  961,    0,  961,
3323         0,    0,    0,  961,  961,  961,  961,  961,    0,  961,
3324       961,  961,  961,  961,  962,  962,  962,    0,    0,  962,
3325       962,    0,  962,  963,    0,  963,    0,    0,    0,  963,
3326       963,  963,  963,  963,    0,  963,  963,  963,  963,  963,
3327       964,    0,  964,    0,    0,    0,  964,  964,  964,  964,
3328       964,    0,  964,  964,  964,  964,  964,  965,    0,  965,
3329         0,    0,    0,  965,  965,  965,  965,  965,    0,  965,
3330       965,  965,  965,  965,  966,  966,    0,  966,    0,    0,
3331 
3332       966,  967,  967,    0,  967,    0,    0,  967,  968,  968,
3333       968,    0,  968,    0,    0,  968,  969,    0,    0,  969,
3334         0,    0,  969,  970,    0,  970,    0,    0,    0,  970,
3335       970,  970,  970,  970,    0,  970,  970,  970,  970,  970,
3336       971,    0,  971,    0,    0,    0,  971,  971,  971,  971,
3337       971,    0,  971,  971,  971,  971,  971,  972,    0,    0,
3338       972,    0,    0,  972,  972,  972,  972,  973,    0,    0,
3339       973,    0,    0,  973,  973,  973,  973,  974,    0,    0,
3340       974,    0,    0,  974,  974,  974,  974,  975,    0,  975,
3341         0,    0,    0,    0,    0,    0,  975,    0,    0,    0,
3342 
3343         0,    0,  975,  976,    0,  976,    0,    0,  976,  976,
3344         0,    0,  976,  977,    0,  977,    0,    0,    0,  977,
3345       977,  977,  977,  977,    0,  977,  977,  977,  977,  977,
3346       978,    0,  978,    0,    0,    0,  978,  978,  978,  978,
3347       978,    0,  978,  978,  978,  978,  978,  979,  979,    0,
3348       979,    0,    0,  979,  980,  980,    0,  980,    0,    0,
3349       980,  981,  981,  981,    0,  981,    0,    0,  981,  982,
3350       982,  982,    0,  982,    0,    0,  982,  983,    0,  983,
3351         0,    0,    0,  983,  983,  983,  983,  983,    0,  983,
3352       983,  983,  983,  983,  984,  984,    0,  984,    0,    0,
3353 
3354       984,  985,  985,    0,  985,    0,    0,  985,  986,  986,
3355       986,    0,  986,    0,    0,  986,  987,    0,    0,  987,
3356         0,    0,  987,  988,  988,    0,  988,    0,    0,  988,
3357       989,  989,    0,    0,  989,    0,    0,  989,  990,  990,
3358       990,    0,  990,    0,    0,  990,  991,  991,    0,    0,
3359       991,    0,    0,  991,  992,  992,    0,    0,  992,    0,
3360         0,  992,  993,  993,    0,    0,  993,    0,    0,  993,
3361       994,  994,    0,    0,  994,    0,    0,  994,  995,  995,
3362         0,    0,  995,    0,    0,  995,  830,  830,  830,  830,
3363       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
3364 
3365       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
3366       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
3367       830,  830,  830,  830,  830,  830,  830,  830,  830,  830,
3368       830,  830,  830,  830,  830,  830,  830,  830
3369     } ;
3370 
3371 static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
3372 static char *yy_full_match;
3373 static int yy_lp;
3374 #define REJECT \
3375 { \
3376 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
3377 yy_cp = yy_full_match; /* restore poss. backed-over text */ \
3378 ++yy_lp; \
3379 goto find_rule; \
3380 }
3381 #define yymore() yymore_used_but_not_detected
     /* [<][>][^][v][top][bottom][index][help] */
3382 #define YY_MORE_ADJ 0
3383 #define YY_RESTORE_YY_MORE_OFFSET
3384 char *yytext;
3385 #line 1 "rpsl.l"
3386 #define INITIAL 0
3387 /*
3388 //  $Id: rpsl.l.cc,v 1.3 2001/04/03 09:35:10 engin Exp $
3389 //
3390 //  Copyright (c) 1994 by the University of Southern California
3391 //  All rights reserved.
3392 //
3393 //  Permission to use, copy, modify, and distribute this software and its
3394 //  documentation in source and binary forms for lawful non-commercial
3395 //  purposes and without fee is hereby granted, provided that the above
3396 //  copyright notice appear in all copies and that both the copyright
3397 //  notice and this permission notice appear in supporting documentation,
3398 //  and that any documentation, advertising materials, and other materials
3399 //  related to such distribution and use acknowledge that the software was
3400 //  developed by the University of Southern California, Information
3401 //  Sciences Institute. The name of the USC may not be used to endorse or
3402 //  promote products derived from this software without specific prior
3403 //  written permission.
3404 //
3405 //  THE UNIVERSITY OF SOUTHERN CALIFORNIA DOES NOT MAKE ANY
3406 //  REPRESENTATIONS ABOUT THE SUITABILITY OF THIS SOFTWARE FOR ANY
3407 //  PURPOSE.  THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
3408 //  IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
3409 //  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE,
3410 //  TITLE, AND NON-INFRINGEMENT.
3411 //
3412 //  IN NO EVENT SHALL USC, OR ANY OTHER CONTRIBUTOR BE LIABLE FOR ANY
3413 //  SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES, WHETHER IN CONTRACT, TORT,
3414 //  OR OTHER FORM OF ACTION, ARISING OUT OF OR IN CONNECTION WITH, THE USE
3415 //  OR PERFORMANCE OF THIS SOFTWARE.
3416 //
3417 //  Questions concerning this software should be directed to
3418 //  ratoolset@isi.edu.
3419 //
3420 //  Author(s): Cengiz Alaettinoglu <cengiz@ISI.EDU>
3421 */
3422 /* definitions */
3423 #define STRING 1
3424 
3425 #define EXPECT_OPERATOR 2
3426 
3427 #define FREETEXT 3
3428 
3429 #define BLOBMODE 4
3430 
3431 #define GENERICMODE 5
3432 
3433 #define SKIP_OBJECT 6
3434 
3435 #define POLICYMODE 7
3436 
3437 /*%option nodefault /* */
3438 /*%option debug     /* */
3439 #line 83 "rpsl.l"
3440 #include "config.h"
3441 #include <cstring>
3442 #include <cstdarg>
3443 #include <cstdio>
3444 #include <time.h>
3445 
3446 #include "object.hh"
3447 #include "rpsl.y.hh"
3448 #include "schema.hh"
3449 
3450 static int errorLine = 0;
3451 static int errorColon = 0;
3452 #define errorNewLine { errorLine++;   errorColon = 0; }
3453 
3454 static int scan_position = 0;
3455 static bool start_of_object = true;
3456 static bool genericMode = true;
3457 static int oldStart = 0;
3458 
3459 Object *current_object;
3460 Attr   *current_attribute;
3461 YY_BUFFER_STATE rpsl_buffer = (YY_BUFFER_STATE) NULL;
3462 
3463 #define MAX_STR_CONST 1024
3464 #define LEXER_RETURN return
3465 #define YY_USER_ACTION { scan_position += yyleng; errorColon += yyleng; }
3466 #define YYLESS(n) {scan_position -= yyleng - n; errorColon -= yyleng - n; yyless(n); }
     /* [<][>][^][v][top][bottom][index][help] */
3467 #define yylval rpsllval
3468 #define yy_scan_object rpsl_scan_object
3469 #define yyschema schema
3470 
3471 extern void handle_error(char *, ...);
3472 extern void handle_warning(char *, ...);
3473 extern int validIPv6(const char *);
3474 extern int validIntForPhone(const char *);
3475 
3476 extern "C" {
3477 extern void atollRA(...);
3478 }
3479 #line 3480 "lex.rpsl.c"
3480 
3481 /* Macros after this point can all be overridden by user definitions in
3482  * section 1.
3483  */
3484 
3485 #ifndef YY_SKIP_YYWRAP
3486 #ifdef __cplusplus
3487 extern "C" int yywrap YY_PROTO(( void ));
3488 #else
3489 extern int yywrap YY_PROTO(( void ));
3490 #endif
3491 #endif
3492 
3493 #ifndef YY_NO_UNPUT
3494 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
3495 #endif
3496 
3497 #ifndef yytext_ptr
3498 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
3499 #endif
3500 
3501 #ifdef YY_NEED_STRLEN
3502 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
3503 #endif
3504 
3505 #ifndef YY_NO_INPUT
3506 #ifdef __cplusplus
3507 static int yyinput YY_PROTO(( void ));
3508 #else
3509 static int input YY_PROTO(( void ));
3510 #endif
3511 #endif
3512 
3513 #if YY_STACK_USED
3514 static int yy_start_stack_ptr = 0;
3515 static int yy_start_stack_depth = 0;
3516 static int *yy_start_stack = 0;
3517 #ifndef YY_NO_PUSH_STATE
3518 static void yy_push_state YY_PROTO(( int new_state ));
3519 #endif
3520 #ifndef YY_NO_POP_STATE
3521 static void yy_pop_state YY_PROTO(( void ));
3522 #endif
3523 #ifndef YY_NO_TOP_STATE
3524 static int yy_top_state YY_PROTO(( void ));
3525 #endif
3526 
3527 #else
3528 #define YY_NO_PUSH_STATE 1
3529 #define YY_NO_POP_STATE 1
3530 #define YY_NO_TOP_STATE 1
3531 #endif
3532 
3533 #ifdef YY_MALLOC_DECL
3534 YY_MALLOC_DECL
3535 #else
3536 #if __STDC__
3537 #ifndef __cplusplus
3538 #include <stdlib.h>
3539 #endif
3540 #else
3541 /* Just try to get by without declaring the routines.  This will fail
3542  * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
3543  * or sizeof(void*) != sizeof(int).
3544  */
3545 #endif
3546 #endif
3547 
3548 /* Amount of stuff to slurp up with each read. */
3549 #ifndef YY_READ_BUF_SIZE
3550 #define YY_READ_BUF_SIZE 8192
3551 #endif
3552 
3553 /* Copy whatever the last rule matched to the standard output. */
3554 
3555 #ifndef ECHO
3556 /* This used to be an fputs(), but since the string might contain NUL's,
3557  * we now use fwrite().
3558  */
3559 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
3560 #endif
3561 
3562 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
3563  * is returned in "result".
3564  */
3565 #ifndef YY_INPUT
3566 #define YY_INPUT(buf,result,max_size) \
     /* [<][>][^][v][top][bottom][index][help] */
3567         if ( yy_current_buffer->yy_is_interactive ) \
3568                 { \
3569                 int c = '*', n; \
3570                 for ( n = 0; n < max_size && \
3571                              (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
3572                         buf[n] = (char) c; \
3573                 if ( c == '\n' ) \
3574                         buf[n++] = (char) c; \
3575                 if ( c == EOF && ferror( yyin ) ) \
3576                         YY_FATAL_ERROR( "input in flex scanner failed" ); \
3577                 result = n; \
3578                 } \
3579         else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
3580                   && ferror( yyin ) ) \
3581                 YY_FATAL_ERROR( "input in flex scanner failed" );
3582 #endif
3583 
3584 /* No semi-colon after return; correct usage is to write "yyterminate();" -
3585  * we don't want an extra ';' after the "return" because that will cause
3586  * some compilers to complain about unreachable statements.
3587  */
3588 #ifndef yyterminate
3589 #define yyterminate() return YY_NULL
     /* [<][>][^][v][top][bottom][index][help] */
3590 #endif
3591 
3592 /* Number of entries by which start-condition stack grows. */
3593 #ifndef YY_START_STACK_INCR
3594 #define YY_START_STACK_INCR 25
3595 #endif
3596 
3597 /* Report a fatal error. */
3598 #ifndef YY_FATAL_ERROR
3599 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
     /* [<][>][^][v][top][bottom][index][help] */
3600 #endif
3601 
3602 /* Default declaration of generated scanner - a define so the user can
3603  * easily add parameters.
3604  */
3605 #ifndef YY_DECL
3606 #define YY_DECL int yylex YY_PROTO(( void ))
3607 #endif
3608 
3609 /* Code executed at the beginning of each rule, after yytext and yyleng
3610  * have been set up.
3611  */
3612 #ifndef YY_USER_ACTION
3613 #define YY_USER_ACTION
3614 #endif
3615 
3616 /* Code executed at the end of each rule. */
3617 #ifndef YY_BREAK
3618 #define YY_BREAK break;
3619 #endif
3620 
3621 #define YY_RULE_SETUP \
3622         if ( yyleng > 0 ) \
3623                 yy_current_buffer->yy_at_bol = \
3624                                 (yytext[yyleng - 1] == '\n'); \
3625         YY_USER_ACTION
3626 
3627 YY_DECL
3628         {
3629         register yy_state_type yy_current_state;
3630         register char *yy_cp, *yy_bp;
3631         register int yy_act;
3632 
3633 #line 124 "rpsl.l"
3634 
3635  
3636    /* this code is copied to beginning of yylex */
3637    static char string_buf[MAX_STR_CONST];
3638    char *string_buf_ptr;
3639 
3640 
3641 #line 3642 "lex.rpsl.c"
3642 
3643         if ( yy_init )
3644                 {
3645                 yy_init = 0;
3646 
3647 #ifdef YY_USER_INIT
3648                 YY_USER_INIT;
3649 #endif
3650 
3651                 if ( ! yy_start )
3652                         yy_start = 1;   /* first start state */
3653 
3654                 if ( ! yyin )
3655                         yyin = stdin;
3656 
3657                 if ( ! yyout )
3658                         yyout = stdout;
3659 
3660                 if ( ! yy_current_buffer )
3661                         yy_current_buffer =
3662                                 yy_create_buffer( yyin, YY_BUF_SIZE );
3663 
3664                 yy_load_buffer_state();
3665                 }
3666 
3667         while ( 1 )             /* loops until end-of-file is reached */
3668                 {
3669                 yy_cp = yy_c_buf_p;
3670 
3671                 /* Support of yytext. */
3672                 *yy_cp = yy_hold_char;
3673 
3674                 /* yy_bp points to the position in yy_ch_buf of the start of
3675                  * the current run.
3676                  */
3677                 yy_bp = yy_cp;
3678 
3679                 yy_current_state = yy_start;
3680                 yy_current_state += YY_AT_BOL();
3681                 yy_state_ptr = yy_state_buf;
3682                 *yy_state_ptr++ = yy_current_state;
3683 yy_match:
3684                 do
3685                         {
3686                         register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
3687                         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3688                                 {
3689                                 yy_current_state = (int) yy_def[yy_current_state];
3690                                 if ( yy_current_state >= 831 )
3691                                         yy_c = yy_meta[(unsigned int) yy_c];
3692                                 }
3693                         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3694                         *yy_state_ptr++ = yy_current_state;
3695                         ++yy_cp;
3696                         }
3697                 while ( yy_base[yy_current_state] != 11787 );
3698 
3699 yy_find_action:
3700                 yy_current_state = *--yy_state_ptr;
3701                 yy_lp = yy_accept[yy_current_state];
3702 find_rule: /* we branch to this label when backing up */
3703                 for ( ; ; ) /* until we find what rule we matched */
3704                         {
3705                         if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
3706                                 {
3707                                 yy_act = yy_acclist[yy_lp];
3708                                         {
3709                                         yy_full_match = yy_cp;
3710                                         break;
3711                                         }
3712                                 }
3713                         --yy_cp;
3714                         yy_current_state = *--yy_state_ptr;
3715                         yy_lp = yy_accept[yy_current_state];
3716                         }
3717 
3718                 YY_DO_BEFORE_ACTION;
3719 
3720 
3721 do_action:      /* This label is used only to access EOF actions. */
3722 
3723 
3724                 switch ( yy_act )
3725         { /* beginning of action switch */
3726 case 1:
3727 YY_RULE_SETUP
3728 #line 131 "rpsl.l"
3729 { //
3730    errorLine = 0; 
3731    errorColon = yyleng;
3732 
3733    *(yytext + yyleng - 1) = 0; // remove ':'
3734 
3735    yylval.attr = new Attr;
3736    yylval.attr->offset = scan_position - yyleng;
3737    current_attribute = yylval.attr;
3738 
3739    if (start_of_object) {
3740       start_of_object = false;
3741       current_object->type = yyschema.searchClass(yytext);
3742       if (!current_object->type) {
3743          handle_error("Error: unknown class \"%s\"\n", yytext);
3744          yylval.attr->type   = NULL;
3745 //(*current_object) += yylval.attr;
3746          BEGIN(SKIP_OBJECT);
3747          LEXER_RETURN(TKN_UNKNOWN_CLASS);
3748       }
3749    }
3750 
3751    yylval.attr->type   = current_object->type->searchAttr(yytext);
3752    yylval.attr->object = current_object;
3753 
3754 //   (*current_object) += yylval.attr;
3755 
3756    if (! yylval.attr->type) {
3757       if (! schema.isForgiving())
3758          handle_error("Error: unknown attribute %s of class %s\n",
3759                       yytext, current_object->type->name);
3760       BEGIN(FREETEXT);
3761       LEXER_RETURN(ATTR_FREETEXT);
3762    }
3763 
3764    if (yylval.attr->type->isObsolete())
3765       handle_warning("Warning: attribute %s of class %s is now obsolete\n", 
3766               yytext, current_object->type->name);
3767 
3768    if (!yylval.attr->type->shouldParse()) { // may be free text?
3769       BEGIN(FREETEXT);
3770       LEXER_RETURN(ATTR_FREETEXT);
3771    } else {
3772       if (yylval.attr->type->syntax() == ATTR_GENERIC) {
3773          genericMode = true;
3774          BEGIN(GENERICMODE);
3775       } else if (yylval.attr->type->syntax() == ATTR_BLOBS) {
3776          genericMode = true;
3777          BEGIN(BLOBMODE);
3778       } else {
3779          genericMode = false;
3780          BEGIN(POLICYMODE);
3781       }
3782       LEXER_RETURN(yylval.attr->type->syntax());
3783    }
3784 }
3785         YY_BREAK
3786 case 2:
3787 YY_RULE_SETUP
3788 #line 188 "rpsl.l"
3789 {
3790    if (current_attribute)
3791       current_attribute->len = scan_position - current_attribute->offset;
3792    LEXER_RETURN(TKN_EOO);
3793 }
3794         YY_BREAK
3795 case YY_STATE_EOF(INITIAL):
3796 case YY_STATE_EOF(STRING):
3797 case YY_STATE_EOF(EXPECT_OPERATOR):
3798 case YY_STATE_EOF(FREETEXT):
3799 case YY_STATE_EOF(BLOBMODE):
3800 case YY_STATE_EOF(GENERICMODE):
3801 case YY_STATE_EOF(SKIP_OBJECT):
3802 case YY_STATE_EOF(POLICYMODE):
3803 #line 194 "rpsl.l"
3804 {
3805    yy_delete_buffer(rpsl_buffer);
3806    rpsl_buffer = (YY_BUFFER_STATE) NULL;
3807    if (current_attribute)
3808       current_attribute->len = scan_position - current_attribute->offset;
3809    BEGIN(INITIAL);
3810    yyterminate();
3811 }
3812         YY_BREAK
3813 case 3:
3814 YY_RULE_SETUP
3815 #line 203 "rpsl.l"
3816 
3817         YY_BREAK
3818 case 4:
3819 YY_RULE_SETUP
3820 #line 205 "rpsl.l"
3821 { // not a valid line
3822    current_attribute = NULL;
3823    handle_error("Error: valid lines start with attribute names, spaces or #\n");
3824    BEGIN(FREETEXT);
3825    LEXER_RETURN(TKN_ERROR);
3826 }
3827         YY_BREAK
3828 
3829 case 5:
3830 YY_RULE_SETUP
3831 #line 213 "rpsl.l"
3832 {
3833      BEGIN(INITIAL);
3834      if (current_attribute)
3835         current_attribute->len = scan_position - current_attribute->offset;
3836      LEXER_RETURN(TKN_EOO);
3837   }
3838         YY_BREAK
3839 case 6:
3840 YY_RULE_SETUP
3841 #line 219 "rpsl.l"
3842 errorNewLine;
3843         YY_BREAK
3844 case 7:
3845 YY_RULE_SETUP
3846 #line 220 "rpsl.l"
3847 ;
3848         YY_BREAK
3849 
3850 
3851 case 8:
3852 YY_RULE_SETUP
3853 #line 224 "rpsl.l"
3854 errorNewLine; errorColon++; // line continuation with +
3855         YY_BREAK
3856 case 9:
3857 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
3858 yy_c_buf_p = yy_cp = yy_bp + 1;
3859 YY_DO_BEFORE_ACTION; /* set up yytext again */
3860 YY_RULE_SETUP
3861 #line 225 "rpsl.l"
3862 errorNewLine; // line continuation with space or comment
3863         YY_BREAK
3864 case 10:
3865 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
3866 yy_c_buf_p = yy_cp = yy_bp + 1;
3867 YY_DO_BEFORE_ACTION; /* set up yytext again */
3868 YY_RULE_SETUP
3869 #line 226 "rpsl.l"
3870 { // end of attribute and may be end of object too
3871       BEGIN(INITIAL);
3872       if (current_attribute)
3873          current_attribute->len = scan_position - current_attribute->offset;
3874       LEXER_RETURN(TKN_EOA);
3875    }
3876         YY_BREAK
3877 case 11:
3878 YY_RULE_SETUP
3879 #line 232 "rpsl.l"
3880 ; // skip white space
3881         YY_BREAK
3882 case 12:
3883 YY_RULE_SETUP
3884 #line 233 "rpsl.l"
3885 ; // skip comment 
3886         YY_BREAK
3887 
3888 // dont parse anything, keep going till EOA
3889 case 13:
3890 YY_RULE_SETUP
3891 #line 237 "rpsl.l"
3892 ; // this rule needs to be after \n rules
3893         YY_BREAK
3894 
3895 
3896 case 14:
3897 YY_RULE_SETUP
3898 #line 241 "rpsl.l"
3899 {
3900      yylval.string = strdup(yytext);
3901      LEXER_RETURN(TKN_BLOB);
3902   }
3903         YY_BREAK
3904 
3905 
3906 case 15:
3907 YY_RULE_SETUP
3908 #line 248 "rpsl.l"
3909 {
3910      tm ts;
3911      bzero((char *) &ts, sizeof(ts));
3912 
3913      int date, zone_hours, zone_mins;
3914      sscanf(yytext, "%d %d:%d:%d %d:%d", 
3915                     &date, 
3916                     &ts.tm_hour, &ts.tm_min, &ts.tm_sec,
3917                     &zone_hours, &zone_mins);
3918 
3919      ts.tm_mday = date % 100; date /= 100;
3920      ts.tm_mon  = date % 100 - 1; date /= 100;
3921      ts.tm_year = date - 1900;
3922    
3923      if (ts.tm_mday > 31) {
3924         handle_error("Error: Invalid day %d\n", ts.tm_mday);
3925         LEXER_RETURN(TKN_ERROR);
3926      }
3927      if (ts.tm_mon > 11) {
3928         handle_error("Error: Invalid month %d\n", ts.tm_mon);
3929         LEXER_RETURN(TKN_ERROR);
3930      }
3931      if (ts.tm_year < 70) {
3932         handle_error("Error: Invalid year %d\n", ts.tm_year);
3933         LEXER_RETURN(TKN_ERROR);
3934      }
3935      if (ts.tm_sec > 59) {
3936         handle_error("Error: Invalid sec %d\n", ts.tm_sec);
3937         LEXER_RETURN(TKN_ERROR);
3938      }
3939      if (ts.tm_min > 59) {
3940         handle_error("Error: Invalid min %d\n", ts.tm_min);
3941         LEXER_RETURN(TKN_ERROR);
3942      }
3943      if (ts.tm_hour > 23) {
3944         handle_error("Error: Invalid hour %d\n", ts.tm_hour);
3945         LEXER_RETURN(TKN_ERROR);
3946      }
3947      if (zone_mins > 59) {
3948         handle_error("Error: Invalid zone min %d\n", zone_mins);
3949         LEXER_RETURN(TKN_ERROR);
3950      }
3951      if (zone_hours > 23) {
3952         handle_error("Error: Invalid zone hour %d\n", zone_hours);
3953         LEXER_RETURN(TKN_ERROR);
3954      }
3955 
3956      // this fiddling with TZ is necessary for mktime to use utc as timezone
3957      // it sucks, there's got to be a better way
3958      time_t result = (time_t) mktime(&ts);
3959      result -= (time_t) timezone;
3960 /*
3961      char *TZ=getenv("TZ");
3962      if (TZ)
3963         TZ = strdup(TZ);
3964      setenv("TZ", "", 1);
3965      time_t result = mktime(&ts);
3966      if (TZ) {
3967         setenv("TZ", TZ, 1);
3968         free(TZ);
3969      } else
3970         unsetenv("TZ");
3971 */
3972      if (zone_hours < 0)
3973         zone_mins *= -1;
3974 
3975      result += zone_mins * 60 + zone_hours * 60 * 60;
3976    
3977      yylval.time = result;
3978      LEXER_RETURN(TKN_TIMESTAMP);
3979   }
3980         YY_BREAK
3981 
3982 
3983 case 16:
3984 YY_RULE_SETUP
3985 #line 323 "rpsl.l"
3986 {
3987      if(current_attribute->type->syntax() == ATTR_AUTH){
3988      yylval.string = strdup(yytext);
3989      LEXER_RETURN(TKN_CRYPTEDPW);
3990      }else{
3991        scan_position -= yyleng; errorColon -= yyleng;
3992        REJECT;
3993      }
3994   }
3995         YY_BREAK
3996 case 17:
3997 YY_RULE_SETUP
3998 #line 333 "rpsl.l"
3999 {
4000      // The following code causes problem on Solaris since long long int
4001      // is not standardized yet 
4002      // sscanf(yytext, "%Ld", &(yylval.i));
4003      if(current_attribute->type->syntax() == ATTR_PHONE){
4004        if(validIntForPhone(yytext)){
4005          atollRA(yytext, &yylval.i);
4006          LEXER_RETURN(TKN_INT);
4007        }else{
4008          scan_position -= yyleng; errorColon -= yyleng;
4009          REJECT;
4010        }
4011      }else{
4012        atollRA(yytext, &yylval.i);
4013        LEXER_RETURN(TKN_INT);
4014      }
4015     /* atollRA(yytext, &yylval.i);
4016      LEXER_RETURN(TKN_INT);*/
4017   }
4018         YY_BREAK
4019 case 18:
4020 YY_RULE_SETUP
4021 #line 353 "rpsl.l"
4022 {
4023      unsigned int ms, ls;
4024      char *colon = strchr(yytext, ':');
4025      *colon = 0;
4026      ms = atoi(yytext);
4027      ls = atoi(colon+1);
4028      if (ms > 65535 || ls > 65535)
4029         LEXER_RETURN(TKN_ERROR);
4030 
4031      yylval.i = (ms << 16) + ls;
4032      LEXER_RETURN(TKN_INT);
4033   }
4034         YY_BREAK
4035 case 19:
4036 YY_RULE_SETUP
4037 #line 366 "rpsl.l"
4038 {
4039      yylval.real = atof(yytext);
4040      LEXER_RETURN(TKN_REAL);
4041   }
4042         YY_BREAK
4043 case 20:
4044 YY_RULE_SETUP
4045 #line 371 "rpsl.l"
4046 {
4047      string_buf_ptr = string_buf; 
4048      oldStart = YY_START;
4049      BEGIN(STRING);
4050   }
4051         YY_BREAK
4052 case 21:
4053 YY_RULE_SETUP
4054 #line 377 "rpsl.l"
4055 {
4056      yylval.ip = new IPAddr(yytext);
4057      LEXER_RETURN(TKN_IPV4);
4058   }
4059         YY_BREAK
4060 case 22:
4061 YY_RULE_SETUP
4062 #line 382 "rpsl.l"
4063 {
4064      yylval.string = strdup(yytext);
4065      LEXER_RETURN(TKN_PRFXV6);
4066   }
4067         YY_BREAK
4068 case 23:
4069 YY_RULE_SETUP
4070 #line 387 "rpsl.l"
4071 {
4072      yylval.string = strdup(yytext);
4073      if(validIPv6(yylval.string)){
4074         LEXER_RETURN(TKN_PRFXV6);
4075      }else{
4076         handle_error("Error: Invalid IPv6 prefix\n");
4077         BEGIN(FREETEXT);
4078         LEXER_RETURN(TKN_ERROR);
4079      }
4080   }
4081         YY_BREAK
4082 case 24:
4083 YY_RULE_SETUP
4084 #line 398 "rpsl.l"
4085 {
4086      yylval.prfx = new Prefix(yytext);
4087      LEXER_RETURN(TKN_PRFXV4);
4088   }
4089         YY_BREAK
4090 case 25:
4091 YY_RULE_SETUP
4092 #line 403 "rpsl.l"
4093 {
4094      yylval.prfxrng = new PrefixRange(yytext);
4095      LEXER_RETURN(TKN_PRFXV4RNG);
4096   }
4097         YY_BREAK
4098 case 26:
4099 YY_RULE_SETUP
4100 #line 408 "rpsl.l"
4101 {
4102       /*printf("DEBUG: lexer: matched a nichdl candidate (%s)\n",yytext);*/
4103       if(current_attribute->type->syntax() != ATTR_NICHDL){
4104         /*printf("DEBUG: lexer: This is not a nichdl attribute, rejecting\n");*/
4105         scan_position -= yyleng; errorColon -= yyleng;
4106         REJECT;
4107       }else{
4108         yylval.string = strdup(yytext);
4109         LEXER_RETURN(TKN_NICHDL);
4110       }
4111   }
4112         YY_BREAK
4113 /* The order of these rules are important */
4114 case 27:
4115 YY_RULE_SETUP
4116 #line 422 "rpsl.l"
4117 {
4118      yylval.i = atoi(yytext+2);
4119      LEXER_RETURN(TKN_ASNO);
4120   }
4121         YY_BREAK
4122 case 28:
4123 YY_RULE_SETUP
4124 #line 427 "rpsl.l"
4125 {
4126      yylval.sid = symbols.symID(yytext);
4127      LEXER_RETURN(TKN_ASNAME);
4128   }
4129         YY_BREAK
4130 case 29:
4131 YY_RULE_SETUP
4132 #line 432 "rpsl.l"
4133 {
4134      yylval.sid = symbols.symID(yytext);
4135      LEXER_RETURN(TKN_RSNAME);
4136   }
4137         YY_BREAK
4138 case 30:
4139 YY_RULE_SETUP
4140 #line 437 "rpsl.l"
4141 {
4142      yylval.sid = symbols.symID(yytext);
4143      LEXER_RETURN(TKN_RTRSNAME);
4144   }
4145         YY_BREAK
4146 case 31:
4147 YY_RULE_SETUP
4148 #line 442 "rpsl.l"
4149 {
4150      yylval.sid = symbols.symID(yytext);
4151      LEXER_RETURN(TKN_PRNGNAME);
4152   }
4153         YY_BREAK
4154 case 32:
4155 YY_RULE_SETUP
4156 #line 447 "rpsl.l"
4157 {
4158      yylval.sid = symbols.symID(yytext);
4159      LEXER_RETURN(TKN_FLTRNAME);
4160   }
4161         YY_BREAK
4162 case 33:
4163 YY_RULE_SETUP
4164 #line 452 "rpsl.l"
4165 {
4166      yylval.i = 1;
4167      LEXER_RETURN(TKN_BOOLEAN);
4168   }
4169         YY_BREAK
4170 case 34:
4171 YY_RULE_SETUP
4172 #line 457 "rpsl.l"
4173 {
4174      yylval.i = 0;
4175      LEXER_RETURN(TKN_BOOLEAN);
4176   }
4177         YY_BREAK
4178 case 35:
4179 YY_RULE_SETUP
4180 #line 462 "rpsl.l"
4181 { /* keycert name */  
4182      yylval.string = strdup(yytext);
4183      LEXER_RETURN(TKN_KEYCRTNAME);
4184   }
4185         YY_BREAK
4186 case 36:
4187 YY_RULE_SETUP
4188 #line 468 "rpsl.l"
4189 { /* reserved word or rp-attribute, or arbitrary name */
4190      if (!genericMode) {
4191         oldStart = YY_START;
4192 
4193         int index;
4194         if ((index  = yyschema.searchKeyword(yytext)) >= 0) {
4195            if (index == KEYW_OPERATOR)
4196               BEGIN(EXPECT_OPERATOR);
4197            LEXER_RETURN(index);
4198         }
4199      
4200         if ((yylval.rp_attr = yyschema.searchRPAttr(yytext)) != NULL) {
4201            BEGIN(EXPECT_OPERATOR);
4202            LEXER_RETURN(TKN_RP_ATTR);
4203         }
4204      }
4205 
4206      yylval.string = strdup(yytext);
4207      LEXER_RETURN(TKN_WORD);
4208   }
4209         YY_BREAK
4210 case 37:
4211 YY_RULE_SETUP
4212 #line 489 "rpsl.l"
4213 { /* rp-attribute.method or DNS name */
4214      if (!genericMode) {
4215         char *p = strchr(yytext, '.');
4216         *p = 0;
4217 
4218         if ((yylval.rp_attr = yyschema.searchRPAttr(yytext)) != NULL) {
4219            *p = '.';
4220            YYLESS((p - yytext));
4221            LEXER_RETURN(TKN_RP_ATTR);
4222         }
4223 
4224         *p = '.';
4225      }
4226 
4227      yylval.sid = symbols.symID(yytext);
4228      LEXER_RETURN(TKN_DNS);
4229   }
4230         YY_BREAK
4231 case 38:
4232 YY_RULE_SETUP
4233 #line 507 "rpsl.l"
4234 { /* DNS name */
4235      yylval.sid = symbols.symID(yytext);
4236      LEXER_RETURN(TKN_DNS);
4237   }
4238         YY_BREAK
4239 case 39:
4240 YY_RULE_SETUP
4241 #line 512 "rpsl.l"
4242 { /* email */  
4243      yylval.string = strdup(yytext);
4244      LEXER_RETURN(TKN_EMAIL);
4245   }
4246         YY_BREAK
4247 case 40:
4248 YY_RULE_SETUP
4249 #line 519 "rpsl.l"
4250 {
4251      if (*yytext <= 0) {
4252         handle_error("Error: Non-ASCII character encountered\n");
4253         LEXER_RETURN(TKN_ERROR);
4254      } else
4255         LEXER_RETURN(*yytext);
4256   }
4257         YY_BREAK
4258 
4259 
4260 case 41:
4261 YY_RULE_SETUP
4262 #line 529 "rpsl.l"
4263 {
4264       yylval.moreSpecOp = new FilterMS(0);
4265       LEXER_RETURN(OP_MS);
4266    }
4267         YY_BREAK
4268 case 42:
4269 YY_RULE_SETUP
4270 #line 534 "rpsl.l"
4271 {
4272       yylval.moreSpecOp = new FilterMS(1);
4273       LEXER_RETURN(OP_MS);
4274    }
4275         YY_BREAK
4276 case 43:
4277 YY_RULE_SETUP
4278 #line 539 "rpsl.l"
4279 {
4280       int i;
4281       sscanf(yytext, "^%d", &i);
4282       yylval.moreSpecOp = new FilterMS(2, i, i);
4283       LEXER_RETURN(OP_MS);
4284    }
4285         YY_BREAK
4286 case 44:
4287 YY_RULE_SETUP
4288 #line 546 "rpsl.l"
4289 {
4290       int i, j;
4291       sscanf(yytext, "^%d-%d", &i, &j);
4292       yylval.moreSpecOp = new FilterMS(2, i, j);
4293       LEXER_RETURN(OP_MS);
4294    }
4295         YY_BREAK
4296 case 45:
4297 YY_RULE_SETUP
4298 #line 553 "rpsl.l"
4299 LEXER_RETURN(TKN_3DOTS);
4300         YY_BREAK
4301 
4302 
4303 case 46:
4304 YY_RULE_SETUP
4305 #line 557 "rpsl.l"
4306 {
4307       yylval.string = strdup(yytext);
4308       BEGIN(oldStart);
4309       LEXER_RETURN(TKN_OPERATOR);
4310    }
4311         YY_BREAK
4312 case 47:
4313 YY_RULE_SETUP
4314 #line 563 "rpsl.l"
4315 {
4316       YYLESS(0); 
4317       BEGIN(oldStart);
4318    }
4319         YY_BREAK
4320 
4321 
4322 case 48:
4323 YY_RULE_SETUP
4324 #line 570 "rpsl.l"
4325 { /* saw closing quote - all done */
4326       BEGIN(oldStart);
4327       *string_buf_ptr = '\0';
4328       yylval.string = strdup(string_buf);
4329       LEXER_RETURN(TKN_STRING);
4330    }
4331         YY_BREAK
4332 case 49:
4333 YY_RULE_SETUP
4334 #line 577 "rpsl.l"
4335 {
4336       errorNewLine;
4337       handle_error("Error: unterminated string encountered\n");
4338       BEGIN(oldStart);
4339       if (current_attribute)
4340          current_attribute->len = scan_position - current_attribute->offset;
4341       LEXER_RETURN(TKN_EOA);
4342    }
4343         YY_BREAK
4344 case 50:
4345 YY_RULE_SETUP
4346 #line 586 "rpsl.l"
4347 {
4348       /* octal escape sequence */
4349       int result;
4350       
4351       (void) sscanf( yytext + 1, "%o", &result );
4352 
4353       if ( result > 0xff ) {
4354          handle_error("Error: octal escape sequence is out of bounds\n");
4355          BEGIN(oldStart);
4356          LEXER_RETURN(TKN_ERROR);
4357       }
4358 
4359       *string_buf_ptr++ = result;
4360    }
4361         YY_BREAK
4362 case 51:
4363 YY_RULE_SETUP
4364 #line 601 "rpsl.l"
4365 {                       /* like '\48' or '\0777777' */
4366       handle_error("Error: bad octal escape sequence\n");
4367       BEGIN(oldStart);
4368       LEXER_RETURN(TKN_ERROR);
4369    }
4370         YY_BREAK
4371 case 52:
4372 YY_RULE_SETUP
4373 #line 607 "rpsl.l"
4374 *string_buf_ptr++ = '\n';
4375         YY_BREAK
4376 case 53:
4377 YY_RULE_SETUP
4378 #line 608 "rpsl.l"
4379 *string_buf_ptr++ = '\t';
4380         YY_BREAK
4381 case 54:
4382 YY_RULE_SETUP
4383 #line 609 "rpsl.l"
4384 *string_buf_ptr++ = '\r';
4385         YY_BREAK
4386 case 55:
4387 YY_RULE_SETUP
4388 #line 610 "rpsl.l"
4389 *string_buf_ptr++ = '\b';
4390         YY_BREAK
4391 case 56:
4392 YY_RULE_SETUP
4393 #line 611 "rpsl.l"
4394 *string_buf_ptr++ = '\f';
4395         YY_BREAK
4396 case 57:
4397 YY_RULE_SETUP
4398 #line 613 "rpsl.l"
4399 *string_buf_ptr++ = yytext[1];
4400         YY_BREAK
4401 case 58:
4402 YY_RULE_SETUP
4403 #line 615 "rpsl.l"
4404 {
4405       char *yptr = yytext;
4406       while ( *yptr )
4407          *string_buf_ptr++ = *yptr++;
4408    }
4409         YY_BREAK
4410 case 59:
4411 YY_RULE_SETUP
4412 #line 621 "rpsl.l"
4413 *string_buf_ptr++ = yytext[0];
4414         YY_BREAK
4415 
4416 case 60:
4417 YY_RULE_SETUP
4418 #line 624 "rpsl.l"
4419 ECHO;
4420         YY_BREAK
4421 #line 4422 "lex.rpsl.c"
4422 
4423         case YY_END_OF_BUFFER:
4424                 {
4425                 /* Amount of text matched not including the EOB char. */
4426                 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
4427 
4428                 /* Undo the effects of YY_DO_BEFORE_ACTION. */
4429                 *yy_cp = yy_hold_char;
4430                 YY_RESTORE_YY_MORE_OFFSET
4431 
4432                 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
4433                         {
4434                         /* We're scanning a new file or input source.  It's
4435                          * possible that this happened because the user
4436                          * just pointed yyin at a new source and called
4437                          * yylex().  If so, then we have to assure
4438                          * consistency between yy_current_buffer and our
4439                          * globals.  Here is the right place to do so, because
4440                          * this is the first action (other than possibly a
4441                          * back-up) that will match for the new input source.
4442                          */
4443                         yy_n_chars = yy_current_buffer->yy_n_chars;
4444                         yy_current_buffer->yy_input_file = yyin;
4445                         yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
4446                         }
4447 
4448                 /* Note that here we test for yy_c_buf_p "<=" to the position
4449                  * of the first EOB in the buffer, since yy_c_buf_p will
4450                  * already have been incremented past the NUL character
4451                  * (since all states make transitions on EOB to the
4452                  * end-of-buffer state).  Contrast this with the test
4453                  * in input().
4454                  */
4455                 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
4456                         { /* This was really a NUL. */
4457                         yy_state_type yy_next_state;
4458 
4459                         yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
4460 
4461                         yy_current_state = yy_get_previous_state();
4462 
4463                         /* Okay, we're now positioned to make the NUL
4464                          * transition.  We couldn't have
4465                          * yy_get_previous_state() go ahead and do it
4466                          * for us because it doesn't know how to deal
4467                          * with the possibility of jamming (and we don't
4468                          * want to build jamming into it because then it
4469                          * will run more slowly).
4470                          */
4471 
4472                         yy_next_state = yy_try_NUL_trans( yy_current_state );
4473 
4474                         yy_bp = yytext_ptr + YY_MORE_ADJ;
4475 
4476                         if ( yy_next_state )
4477                                 {
4478                                 /* Consume the NUL. */
4479                                 yy_cp = ++yy_c_buf_p;
4480                                 yy_current_state = yy_next_state;
4481                                 goto yy_match;
4482                                 }
4483 
4484                         else
4485                                 {
4486                                 yy_cp = yy_c_buf_p;
4487                                 goto yy_find_action;
4488                                 }
4489                         }
4490 
4491                 else switch ( yy_get_next_buffer() )
4492                         {
4493                         case EOB_ACT_END_OF_FILE:
4494                                 {
4495                                 yy_did_buffer_switch_on_eof = 0;
4496 
4497                                 if ( yywrap() )
4498                                         {
4499                                         /* Note: because we've taken care in
4500                                          * yy_get_next_buffer() to have set up
4501                                          * yytext, we can now set up
4502                                          * yy_c_buf_p so that if some total
4503                                          * hoser (like flex itself) wants to
4504                                          * call the scanner after we return the
4505                                          * YY_NULL, it'll still work - another
4506                                          * YY_NULL will get returned.
4507                                          */
4508                                         yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
4509 
4510                                         yy_act = YY_STATE_EOF(YY_START);
4511                                         goto do_action;
4512                                         }
4513 
4514                                 else
4515                                         {
4516                                         if ( ! yy_did_buffer_switch_on_eof )
4517                                                 YY_NEW_FILE;
4518                                         }
4519                                 break;
4520                                 }
4521 
4522                         case EOB_ACT_CONTINUE_SCAN:
4523                                 yy_c_buf_p =
4524                                         yytext_ptr + yy_amount_of_matched_text;
4525 
4526                                 yy_current_state = yy_get_previous_state();
4527 
4528                                 yy_cp = yy_c_buf_p;
4529                                 yy_bp = yytext_ptr + YY_MORE_ADJ;
4530                                 goto yy_match;
4531 
4532                         case EOB_ACT_LAST_MATCH:
4533                                 yy_c_buf_p =
4534                                 &yy_current_buffer->yy_ch_buf[yy_n_chars];
4535 
4536                                 yy_current_state = yy_get_previous_state();
4537 
4538                                 yy_cp = yy_c_buf_p;
4539                                 yy_bp = yytext_ptr + YY_MORE_ADJ;
4540                                 goto yy_find_action;
4541                         }
4542                 break;
4543                 }
4544 
4545         default:
4546                 YY_FATAL_ERROR(
4547                         "fatal flex scanner internal error--no action found" );
4548         } /* end of action switch */
4549                 } /* end of scanning one token */
4550         } /* end of yylex */
4551 
4552 
4553 /* yy_get_next_buffer - try to read in a new buffer
4554  *
4555  * Returns a code representing an action:
4556  *      EOB_ACT_LAST_MATCH -
4557  *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
4558  *      EOB_ACT_END_OF_FILE - end of file
4559  */
4560 
4561 static int yy_get_next_buffer()
     /* [<][>][^][v][top][bottom][index][help] */
4562         {
4563         register char *dest = yy_current_buffer->yy_ch_buf;
4564         register char *source = yytext_ptr;
4565         register int number_to_move, i;
4566         int ret_val;
4567 
4568         if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
4569                 YY_FATAL_ERROR(
4570                 "fatal flex scanner internal error--end of buffer missed" );
4571 
4572         if ( yy_current_buffer->yy_fill_buffer == 0 )
4573                 { /* Don't try to fill the buffer, so this is an EOF. */
4574                 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
4575                         {
4576                         /* We matched a single character, the EOB, so
4577                          * treat this as a final EOF.
4578                          */
4579                         return EOB_ACT_END_OF_FILE;
4580                         }
4581 
4582                 else
4583                         {
4584                         /* We matched some text prior to the EOB, first
4585                          * process it.
4586                          */
4587                         return EOB_ACT_LAST_MATCH;
4588                         }
4589                 }
4590 
4591         /* Try to read more data. */
4592 
4593         /* First move last chars to start of buffer. */
4594         number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
4595 
4596         for ( i = 0; i < number_to_move; ++i )
4597                 *(dest++) = *(source++);
4598 
4599         if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
4600                 /* don't do the read, it's not guaranteed to return an EOF,
4601                  * just force an EOF
4602                  */
4603                 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
4604 
4605         else
4606                 {
4607                 int num_to_read =
4608                         yy_current_buffer->yy_buf_size - number_to_move - 1;
4609 
4610                 while ( num_to_read <= 0 )
4611                         { /* Not enough room in the buffer - grow it. */
4612 #ifdef YY_USES_REJECT
4613                         YY_FATAL_ERROR(
4614 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
4615 #else
4616 
4617                         /* just a shorter name for the current buffer */
4618                         YY_BUFFER_STATE b = yy_current_buffer;
4619 
4620                         int yy_c_buf_p_offset =
4621                                 (int) (yy_c_buf_p - b->yy_ch_buf);
4622 
4623                         if ( b->yy_is_our_buffer )
4624                                 {
4625                                 int new_size = b->yy_buf_size * 2;
4626 
4627                                 if ( new_size <= 0 )
4628                                         b->yy_buf_size += b->yy_buf_size / 8;
4629                                 else
4630                                         b->yy_buf_size *= 2;
4631 
4632                                 b->yy_ch_buf = (char *)
4633                                         /* Include room in for 2 EOB chars. */
4634                                         yy_flex_realloc( (void *) b->yy_ch_buf,
4635                                                          b->yy_buf_size + 2 );
4636                                 }
4637                         else
4638                                 /* Can't grow it, we don't own it. */
4639                                 b->yy_ch_buf = 0;
4640 
4641                         if ( ! b->yy_ch_buf )
4642                                 YY_FATAL_ERROR(
4643                                 "fatal error - scanner input buffer overflow" );
4644 
4645                         yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
4646 
4647                         num_to_read = yy_current_buffer->yy_buf_size -
4648                                                 number_to_move - 1;
4649 #endif
4650                         }
4651 
4652                 if ( num_to_read > YY_READ_BUF_SIZE )
4653                         num_to_read = YY_READ_BUF_SIZE;
4654 
4655                 /* Read in more data. */
4656                 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
4657                         yy_n_chars, num_to_read );
4658 
4659                 yy_current_buffer->yy_n_chars = yy_n_chars;
4660                 }
4661 
4662         if ( yy_n_chars == 0 )
4663                 {
4664                 if ( number_to_move == YY_MORE_ADJ )
4665                         {
4666                         ret_val = EOB_ACT_END_OF_FILE;
4667                         yyrestart( yyin );
4668                         }
4669 
4670                 else
4671                         {
4672                         ret_val = EOB_ACT_LAST_MATCH;
4673                         yy_current_buffer->yy_buffer_status =
4674                                 YY_BUFFER_EOF_PENDING;
4675                         }
4676                 }
4677 
4678         else
4679                 ret_val = EOB_ACT_CONTINUE_SCAN;
4680 
4681         yy_n_chars += number_to_move;
4682         yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
4683         yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
4684 
4685         yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
4686 
4687         return ret_val;
4688         }
4689 
4690 
4691 /* yy_get_previous_state - get the state just before the EOB char was reached */
4692 
4693 static yy_state_type yy_get_previous_state()
     /* [<][>][^][v][top][bottom][index][help] */
4694         {
4695         register yy_state_type yy_current_state;
4696         register char *yy_cp;
4697 
4698         yy_current_state = yy_start;
4699         yy_current_state += YY_AT_BOL();
4700         yy_state_ptr = yy_state_buf;
4701         *yy_state_ptr++ = yy_current_state;
4702 
4703         for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
4704                 {
4705                 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
4706                 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4707                         {
4708                         yy_current_state = (int) yy_def[yy_current_state];
4709                         if ( yy_current_state >= 831 )
4710                                 yy_c = yy_meta[(unsigned int) yy_c];
4711                         }
4712                 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4713                 *yy_state_ptr++ = yy_current_state;
4714                 }
4715 
4716         return yy_current_state;
4717         }
4718 
4719 
4720 /* yy_try_NUL_trans - try to make a transition on the NUL character
4721  *
4722  * synopsis
4723  *      next_state = yy_try_NUL_trans( current_state );
4724  */
4725 
4726 #ifdef YY_USE_PROTOS
4727 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
     /* [<][>][^][v][top][bottom][index][help] */
4728 #else
4729 static yy_state_type yy_try_NUL_trans( yy_current_state )
4730 yy_state_type yy_current_state;
4731 #endif
4732         {
4733         register int yy_is_jam;
4734 
4735         register YY_CHAR yy_c = 1;
4736         while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4737                 {
4738                 yy_current_state = (int) yy_def[yy_current_state];
4739                 if ( yy_current_state >= 831 )
4740                         yy_c = yy_meta[(unsigned int) yy_c];
4741                 }
4742         yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4743         yy_is_jam = (yy_current_state == 830);
4744         if ( ! yy_is_jam )
4745                 *yy_state_ptr++ = yy_current_state;
4746 
4747         return yy_is_jam ? 0 : yy_current_state;
4748         }
4749 
4750 
4751 #ifndef YY_NO_UNPUT
4752 #ifdef YY_USE_PROTOS
4753 static void yyunput( int c, register char *yy_bp )
     /* [<][>][^][v][top][bottom][index][help] */
4754 #else
4755 static void yyunput( c, yy_bp )
4756 int c;
4757 register char *yy_bp;
4758 #endif
4759         {
4760         register char *yy_cp = yy_c_buf_p;
4761 
4762         /* undo effects of setting up yytext */
4763         *yy_cp = yy_hold_char;
4764 
4765         if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
4766                 { /* need to shift things up to make room */
4767                 /* +2 for EOB chars. */
4768                 register int number_to_move = yy_n_chars + 2;
4769                 register char *dest = &yy_current_buffer->yy_ch_buf[
4770                                         yy_current_buffer->yy_buf_size + 2];
4771                 register char *source =
4772                                 &yy_current_buffer->yy_ch_buf[number_to_move];
4773 
4774                 while ( source > yy_current_buffer->yy_ch_buf )
4775                         *--dest = *--source;
4776 
4777                 yy_cp += (int) (dest - source);
4778                 yy_bp += (int) (dest - source);
4779                 yy_current_buffer->yy_n_chars =
4780                         yy_n_chars = yy_current_buffer->yy_buf_size;
4781 
4782                 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
4783                         YY_FATAL_ERROR( "flex scanner push-back overflow" );
4784                 }
4785 
4786         *--yy_cp = (char) c;
4787 
4788 
4789         yytext_ptr = yy_bp;
4790         yy_hold_char = *yy_cp;
4791         yy_c_buf_p = yy_cp;
4792         }
4793 #endif  /* ifndef YY_NO_UNPUT */
4794 
4795 
4796 #ifdef __cplusplus
4797 static int yyinput()
     /* [<][>][^][v][top][bottom][index][help] */
4798 #else
4799 static int input()
4800 #endif
4801         {
4802         int c;
4803 
4804         *yy_c_buf_p = yy_hold_char;
4805 
4806         if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
4807                 {
4808                 /* yy_c_buf_p now points to the character we want to return.
4809                  * If this occurs *before* the EOB characters, then it's a
4810                  * valid NUL; if not, then we've hit the end of the buffer.
4811                  */
4812                 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
4813                         /* This was really a NUL. */
4814                         *yy_c_buf_p = '\0';
4815 
4816                 else
4817                         { /* need more input */
4818                         int offset = yy_c_buf_p - yytext_ptr;
4819                         ++yy_c_buf_p;
4820 
4821                         switch ( yy_get_next_buffer() )
4822                                 {
4823                                 case EOB_ACT_LAST_MATCH:
4824                                         /* This happens because yy_g_n_b()
4825                                          * sees that we've accumulated a
4826                                          * token and flags that we need to
4827                                          * try matching the token before
4828                                          * proceeding.  But for input(),
4829                                          * there's no matching to consider.
4830                                          * So convert the EOB_ACT_LAST_MATCH
4831                                          * to EOB_ACT_END_OF_FILE.
4832                                          */
4833 
4834                                         /* Reset buffer status. */
4835                                         yyrestart( yyin );
4836 
4837                                         /* fall through */
4838 
4839                                 case EOB_ACT_END_OF_FILE:
4840                                         {
4841                                         if ( yywrap() )
4842                                                 return EOF;
4843 
4844                                         if ( ! yy_did_buffer_switch_on_eof )
4845                                                 YY_NEW_FILE;
4846 #ifdef __cplusplus
4847                                         return yyinput();
4848 #else
4849                                         return input();
4850 #endif
4851                                         }
4852 
4853                                 case EOB_ACT_CONTINUE_SCAN:
4854                                         yy_c_buf_p = yytext_ptr + offset;
4855                                         break;
4856                                 }
4857                         }
4858                 }
4859 
4860         c = *(unsigned char *) yy_c_buf_p;      /* cast for 8-bit char's */
4861         *yy_c_buf_p = '\0';     /* preserve yytext */
4862         yy_hold_char = *++yy_c_buf_p;
4863 
4864         yy_current_buffer->yy_at_bol = (c == '\n');
4865 
4866         return c;
4867         }
4868 
4869 
4870 #ifdef YY_USE_PROTOS
4871 void yyrestart( FILE *input_file )
     /* [<][>][^][v][top][bottom][index][help] */
4872 #else
4873 void yyrestart( input_file )
4874 FILE *input_file;
4875 #endif
4876         {
4877         if ( ! yy_current_buffer )
4878                 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
4879 
4880         yy_init_buffer( yy_current_buffer, input_file );
4881         yy_load_buffer_state();
4882         }
4883 
4884 
4885 #ifdef YY_USE_PROTOS
4886 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
     /* [<][>][^][v][top][bottom][index][help] */
4887 #else
4888 void yy_switch_to_buffer( new_buffer )
4889 YY_BUFFER_STATE new_buffer;
4890 #endif
4891         {
4892         if ( yy_current_buffer == new_buffer )
4893                 return;
4894 
4895         if ( yy_current_buffer )
4896                 {
4897                 /* Flush out information for old buffer. */
4898                 *yy_c_buf_p = yy_hold_char;
4899                 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
4900                 yy_current_buffer->yy_n_chars = yy_n_chars;
4901                 }
4902 
4903         yy_current_buffer = new_buffer;
4904         yy_load_buffer_state();
4905 
4906         /* We don't actually know whether we did this switch during
4907          * EOF (yywrap()) processing, but the only time this flag
4908          * is looked at is after yywrap() is called, so it's safe
4909          * to go ahead and always set it.
4910          */
4911         yy_did_buffer_switch_on_eof = 1;
4912         }
4913 
4914 
4915 #ifdef YY_USE_PROTOS
4916 void yy_load_buffer_state( void )
     /* [<][>][^][v][top][bottom][index][help] */
4917 #else
4918 void yy_load_buffer_state()
4919 #endif
4920         {
4921         yy_n_chars = yy_current_buffer->yy_n_chars;
4922         yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
4923         yyin = yy_current_buffer->yy_input_file;
4924         yy_hold_char = *yy_c_buf_p;
4925         }
4926 
4927 
4928 #ifdef YY_USE_PROTOS
4929 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
     /* [<][>][^][v][top][bottom][index][help] */
4930 #else
4931 YY_BUFFER_STATE yy_create_buffer( file, size )
4932 FILE *file;
4933 int size;
4934 #endif
4935         {
4936         YY_BUFFER_STATE b;
4937 
4938         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
4939         if ( ! b )
4940                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
4941 
4942         b->yy_buf_size = size;
4943 
4944         /* yy_ch_buf has to be 2 characters longer than the size given because
4945          * we need to put in 2 end-of-buffer characters.
4946          */
4947         b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
4948         if ( ! b->yy_ch_buf )
4949                 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
4950 
4951         b->yy_is_our_buffer = 1;
4952 
4953         yy_init_buffer( b, file );
4954 
4955         return b;
4956         }
4957 
4958 
4959 #ifdef YY_USE_PROTOS
4960 void yy_delete_buffer( YY_BUFFER_STATE b )
     /* [<][>][^][v][top][bottom][index][help] */
4961 #else
4962 void yy_delete_buffer( b )
4963 YY_BUFFER_STATE b;
4964 #endif
4965         {
4966         if ( ! b )
4967                 return;
4968 
4969         if ( b == yy_current_buffer )
4970                 yy_current_buffer = (YY_BUFFER_STATE) 0;
4971 
4972         if ( b->yy_is_our_buffer )
4973                 yy_flex_free( (void *) b->yy_ch_buf );
4974 
4975         yy_flex_free( (void *) b );
4976         }
4977 
4978 
4979 #ifndef YY_ALWAYS_INTERACTIVE
4980 #ifndef YY_NEVER_INTERACTIVE
4981 extern int isatty YY_PROTO(( int ));
4982 #endif
4983 #endif
4984 
4985 #ifdef YY_USE_PROTOS
4986 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
     /* [<][>][^][v][top][bottom][index][help] */
4987 #else
4988 void yy_init_buffer( b, file )
4989 YY_BUFFER_STATE b;
4990 FILE *file;
4991 #endif
4992 
4993 
4994         {
4995         yy_flush_buffer( b );
4996 
4997         b->yy_input_file = file;
4998         b->yy_fill_buffer = 1;
4999 
5000 #if YY_ALWAYS_INTERACTIVE
5001         b->yy_is_interactive = 1;
5002 #else
5003 #if YY_NEVER_INTERACTIVE
5004         b->yy_is_interactive = 0;
5005 #else
5006         b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
5007 #endif
5008 #endif
5009         }
5010 
5011 
5012 #ifdef YY_USE_PROTOS
5013 void yy_flush_buffer( YY_BUFFER_STATE b )
     /* [<][>][^][v][top][bottom][index][help] */
5014 #else
5015 void yy_flush_buffer( b )
5016 YY_BUFFER_STATE b;
5017 #endif
5018 
5019         {
5020         if ( ! b )
5021                 return;
5022 
5023         b->yy_n_chars = 0;
5024 
5025         /* We always need two end-of-buffer characters.  The first causes
5026          * a transition to the end-of-buffer state.  The second causes
5027          * a jam in that state.
5028          */
5029         b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
5030         b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
5031 
5032         b->yy_buf_pos = &b->yy_ch_buf[0];
5033 
5034         b->yy_at_bol = 1;
5035         b->yy_buffer_status = YY_BUFFER_NEW;
5036 
5037         if ( b == yy_current_buffer )
5038                 yy_load_buffer_state();
5039         }
5040 
5041 
5042 #ifndef YY_NO_SCAN_BUFFER
5043 #ifdef YY_USE_PROTOS
5044 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
     /* [<][>][^][v][top][bottom][index][help] */
5045 #else
5046 YY_BUFFER_STATE yy_scan_buffer( base, size )
5047 char *base;
5048 yy_size_t size;
5049 #endif
5050         {
5051         YY_BUFFER_STATE b;
5052 
5053         if ( size < 2 ||
5054              base[size-2] != YY_END_OF_BUFFER_CHAR ||
5055              base[size-1] != YY_END_OF_BUFFER_CHAR )
5056                 /* They forgot to leave room for the EOB's. */
5057                 return 0;
5058 
5059         b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
5060         if ( ! b )
5061                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
5062 
5063         b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
5064         b->yy_buf_pos = b->yy_ch_buf = base;
5065         b->yy_is_our_buffer = 0;
5066         b->yy_input_file = 0;
5067         b->yy_n_chars = b->yy_buf_size;
5068         b->yy_is_interactive = 0;
5069         b->yy_at_bol = 1;
5070         b->yy_fill_buffer = 0;
5071         b->yy_buffer_status = YY_BUFFER_NEW;
5072 
5073         yy_switch_to_buffer( b );
5074 
5075         return b;
5076         }
5077 #endif
5078 
5079 
5080 #ifndef YY_NO_SCAN_STRING
5081 #ifdef YY_USE_PROTOS
5082 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
     /* [<][>][^][v][top][bottom][index][help] */
5083 #else
5084 YY_BUFFER_STATE yy_scan_string( yy_str )
5085 yyconst char *yy_str;
5086 #endif
5087         {
5088         int len;
5089         for ( len = 0; yy_str[len]; ++len )
5090                 ;
5091 
5092         return yy_scan_bytes( yy_str, len );
5093         }
5094 #endif
5095 
5096 
5097 #ifndef YY_NO_SCAN_BYTES
5098 #ifdef YY_USE_PROTOS
5099 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
     /* [<][>][^][v][top][bottom][index][help] */
5100 #else
5101 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
5102 yyconst char *bytes;
5103 int len;
5104 #endif
5105         {
5106         YY_BUFFER_STATE b;
5107         char *buf;
5108         yy_size_t n;
5109         int i;
5110 
5111         /* Get memory for full buffer, including space for trailing EOB's. */
5112         n = len + 2;
5113         buf = (char *) yy_flex_alloc( n );
5114         if ( ! buf )
5115                 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
5116 
5117         for ( i = 0; i < len; ++i )
5118                 buf[i] = bytes[i];
5119 
5120         buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
5121 
5122         b = yy_scan_buffer( buf, n );
5123         if ( ! b )
5124                 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
5125 
5126         /* It's okay to grow etc. this buffer, and we should throw it
5127          * away when we're done.
5128          */
5129         b->yy_is_our_buffer = 1;
5130 
5131         return b;
5132         }
5133 #endif
5134 
5135 
5136 #ifndef YY_NO_PUSH_STATE
5137 #ifdef YY_USE_PROTOS
5138 static void yy_push_state( int new_state )
     /* [<][>][^][v][top][bottom][index][help] */
5139 #else
5140 static void yy_push_state( new_state )
5141 int new_state;
5142 #endif
5143         {
5144         if ( yy_start_stack_ptr >= yy_start_stack_depth )
5145                 {
5146                 yy_size_t new_size;
5147 
5148                 yy_start_stack_depth += YY_START_STACK_INCR;
5149                 new_size = yy_start_stack_depth * sizeof( int );
5150 
5151                 if ( ! yy_start_stack )
5152                         yy_start_stack = (int *) yy_flex_alloc( new_size );
5153 
5154                 else
5155                         yy_start_stack = (int *) yy_flex_realloc(
5156                                         (void *) yy_start_stack, new_size );
5157 
5158                 if ( ! yy_start_stack )
5159                         YY_FATAL_ERROR(
5160                         "out of memory expanding start-condition stack" );
5161                 }
5162 
5163         yy_start_stack[yy_start_stack_ptr++] = YY_START;
5164 
5165         BEGIN(new_state);
5166         }
5167 #endif
5168 
5169 
5170 #ifndef YY_NO_POP_STATE
5171 static void yy_pop_state()
     /* [<][>][^][v][top][bottom][index][help] */
5172         {
5173         if ( --yy_start_stack_ptr < 0 )
5174                 YY_FATAL_ERROR( "start-condition stack underflow" );
5175 
5176         BEGIN(yy_start_stack[yy_start_stack_ptr]);
5177         }
5178 #endif
5179 
5180 
5181 #ifndef YY_NO_TOP_STATE
5182 static int yy_top_state()
     /* [<][>][^][v][top][bottom][index][help] */
5183         {
5184         return yy_start_stack[yy_start_stack_ptr - 1];
5185         }
5186 #endif
5187 
5188 #ifndef YY_EXIT_FAILURE
5189 #define YY_EXIT_FAILURE 2
5190 #endif
5191 
5192 #ifdef YY_USE_PROTOS
5193 static void yy_fatal_error( yyconst char msg[] )
     /* [<][>][^][v][top][bottom][index][help] */
5194 #else
5195 static void yy_fatal_error( msg )
5196 char msg[];
5197 #endif
5198         {
5199         (void) fprintf( stderr, "%s\n", msg );
5200         exit( YY_EXIT_FAILURE );
5201         }
5202 
5203 
5204 
5205 /* Redefine yyless() so it works in section 3 code. */
5206 
5207 #undef yyless
5208 #define yyless(n) \
     /* [<][>][^][v][top][bottom][index][help] */
5209         do \
5210                 { \
5211                 /* Undo effects of setting up yytext. */ \
5212                 yytext[yyleng] = yy_hold_char; \
5213                 yy_c_buf_p = yytext + n; \
5214                 yy_hold_char = *yy_c_buf_p; \
5215                 *yy_c_buf_p = '\0'; \
5216                 yyleng = n; \
5217                 } \
5218         while ( 0 )
5219 
5220 
5221 /* Internal utility routines. */
5222 
5223 #ifndef yytext_ptr
5224 #ifdef YY_USE_PROTOS
5225 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
     /* [<][>][^][v][top][bottom][index][help] */
5226 #else
5227 static void yy_flex_strncpy( s1, s2, n )
5228 char *s1;
5229 yyconst char *s2;
5230 int n;
5231 #endif
5232         {
5233         register int i;
5234         for ( i = 0; i < n; ++i )
5235                 s1[i] = s2[i];
5236         }
5237 #endif
5238 
5239 #ifdef YY_NEED_STRLEN
5240 #ifdef YY_USE_PROTOS
5241 static int yy_flex_strlen( yyconst char *s )
     /* [<][>][^][v][top][bottom][index][help] */
5242 #else
5243 static int yy_flex_strlen( s )
5244 yyconst char *s;
5245 #endif
5246         {
5247         register int n;
5248         for ( n = 0; s[n]; ++n )
5249                 ;
5250 
5251         return n;
5252         }
5253 #endif
5254 
5255 
5256 #ifdef YY_USE_PROTOS
5257 static void *yy_flex_alloc( yy_size_t size )
     /* [<][>][^][v][top][bottom][index][help] */
5258 #else
5259 static void *yy_flex_alloc( size )
5260 yy_size_t size;
5261 #endif
5262         {
5263         return (void *) malloc( size );
5264         }
5265 
5266 #ifdef YY_USE_PROTOS
5267 static void *yy_flex_realloc( void *ptr, yy_size_t size )
     /* [<][>][^][v][top][bottom][index][help] */
5268 #else
5269 static void *yy_flex_realloc( ptr, size )
5270 void *ptr;
5271 yy_size_t size;
5272 #endif
5273         {
5274         /* The cast to (char *) in the following accommodates both
5275          * implementations that use char* generic pointers, and those
5276          * that use void* generic pointers.  It works with the latter
5277          * because both ANSI C and C++ allow castless assignment from
5278          * any pointer type to void*, and deal with argument conversions
5279          * as though doing an assignment.
5280          */
5281         return (void *) realloc( (char *) ptr, size );
5282         }
5283 
5284 #ifdef YY_USE_PROTOS
5285 static void yy_flex_free( void *ptr )
     /* [<][>][^][v][top][bottom][index][help] */
5286 #else
5287 static void yy_flex_free( ptr )
5288 void *ptr;
5289 #endif
5290         {
5291         free( ptr );
5292         }
5293 
5294 #if YY_MAIN
5295 int main()
     /* [<][>][^][v][top][bottom][index][help] */
5296         {
5297         yylex();
5298         return 0;
5299         }
5300 #endif
5301 #line 624 "rpsl.l"
5302 
5303 extern "C" {
5304 int yywrap () {
5305    return 1;
5306 }
5307 }
5308 
5309 void handle_error(char *s, ...) {
     /* [<][>][^][v][top][bottom][index][help] */
5310    current_object->has_error = true;
5311 
5312    char buffer[1024] = "***";
5313    va_list ap;
5314    va_start(ap, s);
5315    vsprintf(buffer+3, s, ap);
5316    va_end(ap);
5317 
5318    if (current_attribute)
5319       current_attribute->errors += buffer;
5320    else 
5321       current_object->errors += buffer;
5322 }
5323 
5324 void handle_object_error(char *s, ...) {
     /* [<][>][^][v][top][bottom][index][help] */
5325    current_object->has_error = true;
5326 
5327    char buffer[1024] = "***";
5328    va_list ap;
5329    va_start(ap, s);
5330    vsprintf(buffer+3, s, ap);
5331    va_end(ap);
5332 
5333    current_object->errors += buffer;
5334 }
5335 
5336 void rpslerror(char *, ...) {
     /* [<][>][^][v][top][bottom][index][help] */
5337    if (current_attribute) {
5338       current_attribute->errorLine = errorLine;
5339       current_attribute->errorColon = errorColon - yyleng;
5340       current_attribute->errorLeng  = yyleng;
5341    }
5342 }
5343 
5344 void handle_warning(char *s, ...) {
     /* [<][>][^][v][top][bottom][index][help] */
5345    current_object->has_warning = true;
5346 
5347    char buffer[1024];
5348    va_list ap;
5349    va_start(ap, s);
5350    vsprintf(buffer, s, ap);
5351    va_end(ap);
5352 
5353    if (current_attribute) 
5354       current_attribute->errors += buffer;
5355    else 
5356       current_object->errors += buffer;
5357 }
5358 
5359 void yy_scan_object(Object *o) {
     /* [<][>][^][v][top][bottom][index][help] */
5360    errorLine = 0; 
5361    errorColon = 0;
5362    current_object = o;
5363    current_attribute = NULL;
5364    start_of_object = true;
5365    scan_position = 0;
5366    genericMode = true;
5367 
5368    if (rpsl_buffer)
5369       yy_delete_buffer(rpsl_buffer);
5370    rpsl_buffer = yy_scan_bytes(o->contents, o->size);
5371    BEGIN(INITIAL);
5372 }
5373 
5374 Attr *changeCurrentAttr(Attr *b) {
     /* [<][>][^][v][top][bottom][index][help] */
5375    if (current_attribute) {
5376       b->object = current_attribute->object;
5377       b->type   = current_attribute->type;
5378       b->offset = current_attribute->offset;;
5379       b->len    = current_attribute->len;
5380       b->errors = current_attribute->errors;
5381       b->errorLine  = current_attribute->errorLine;
5382       b->errorColon = current_attribute->errorColon;
5383       b->errorLeng  = current_attribute->errorLeng;
5384       delete current_attribute;
5385    }
5386    current_attribute = b;
5387    return b;
5388 }
5389 
5390 int validIPv6(const char *s){
     /* [<][>][^][v][top][bottom][index][help] */
5391    char *string, *sleft, *sright, *pos;
5392    int countleft = 0, countright = 0; 
5393    string = strdup(s);
5394    pos = strstr(string,"/");
5395    pos[0] = '\0';
5396    sleft = strdup(string);
5397    pos = strstr(sleft,"::");
5398    pos[0] = '\0';  
5399    sright = pos + 2;
5400    // count the ':'s on the left
5401    for(int i=0;i<strlen(sleft);i++){
5402      if(sleft[i] == ':'){ countleft++;} 
5403    }
5404    // count the ':'s on the right
5405    for(int i=0;i<strlen(sright);i++){
5406      if(sright[i] == ':'){ countright++;} 
5407    }
5408 
5409    // now, if the total # of quads is  > 8, than there
5410    // is a problem with the syntax of the ipv6 address.
5411    if((countleft + 1 + countright + 1) <= 8 ){
5412      return 1;
5413    }else{
5414      return 0;
5415    }
5416 }
5417 
5418 int validIntForPhone(const char * arg){
     /* [<][>][^][v][top][bottom][index][help] */
5419    /* Checks if the integer is valid  as a phone no (should not contain '+' or '-')*/
5420    if((strchr(arg,'+') == NULL) && (strchr(arg,'-') == NULL)){
5421        return 1;
5422    }
5423    return 0;
5424 }
5425 

/* [<][>][^][v][top][bottom][index][help] */