Changeset 4040425 for src/Parser


Ignore:
Timestamp:
Mar 2, 2016, 6:15:02 PM (9 years ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, string, with_gc
Children:
36ebd03, b63e376
Parents:
8f610e85
Message:

change keyword type to otype and context to trait

Location:
src/Parser
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/DeclarationNode.cc

    r8f610e85 r4040425  
    1010// Created On       : Sat May 16 12:34:05 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Mar  2 13:57:42 2016
    13 // Update Count     : 133
     12// Last Modified On : Wed Mar  2 17:26:24 2016
     13// Update Count     : 134
    1414//
    1515
     
    251251}
    252252
    253 DeclarationNode *DeclarationNode::newContext( std::string *name, DeclarationNode *params, DeclarationNode *asserts ) {
     253DeclarationNode *DeclarationNode::newTrait( std::string *name, DeclarationNode *params, DeclarationNode *asserts ) {
    254254        DeclarationNode *newnode = new DeclarationNode;
    255255        newnode->type = new TypeData( TypeData::Aggregate );
    256         newnode->type->aggregate->kind = Context;
     256        newnode->type->aggregate->kind = Trait;
    257257        newnode->type->aggregate->params = params;
    258258        newnode->type->aggregate->fields = asserts;
     
    261261}
    262262
    263 DeclarationNode *DeclarationNode::newContextUse( std::string *name, ExpressionNode *params ) {
     263DeclarationNode *DeclarationNode::newTraitUse( std::string *name, ExpressionNode *params ) {
    264264        DeclarationNode *newnode = new DeclarationNode;
    265265        newnode->type = new TypeData( TypeData::AggregateInst );
    266266        newnode->type->aggInst->aggregate = new TypeData( TypeData::Aggregate );
    267         newnode->type->aggInst->aggregate->aggregate->kind = Context;
     267        newnode->type->aggInst->aggregate->aggregate->kind = Trait;
    268268        newnode->type->aggInst->aggregate->aggregate->name = assign_strptr( name );
    269269        newnode->type->aggInst->params = params;
     
    889889                          ret = new UnionInstType( type->buildQualifiers(), type->aggregate->name );
    890890                          break;
    891                         case DeclarationNode::Context:
    892                           ret = new ContextInstType( type->buildQualifiers(), type->aggregate->name );
     891                        case DeclarationNode::Trait:
     892                          ret = new TraitInstType( type->buildQualifiers(), type->aggregate->name );
    893893                          break;
    894894                        default:
  • src/Parser/ParseNode.h

    r8f610e85 r4040425  
    1010// Created On       : Sat May 16 13:28:16 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Mar  2 14:00:06 2016
    13 // Update Count     : 189
     12// Last Modified On : Wed Mar  2 17:26:35 2016
     13// Update Count     : 190
    1414//
    1515
     
    329329        enum BasicType { Char, Int, Float, Double, Void, Bool, Complex, Imaginary };
    330330        enum Modifier  { Signed, Unsigned, Short, Long };
    331         enum Aggregate { Struct, Union, Context };
     331        enum Aggregate { Struct, Union, Trait };
    332332        enum TypeClass { Type, Dtype, Ftype };
    333333        enum BuiltinType { Valist };
     
    354354        static DeclarationNode *newFromTypeGen( std::string *, ExpressionNode *params );
    355355        static DeclarationNode *newTypeParam( TypeClass, std::string *);
    356         static DeclarationNode *newContext( std::string *name, DeclarationNode *params, DeclarationNode *asserts );
    357         static DeclarationNode *newContextUse( std::string *name, ExpressionNode *params );
     356        static DeclarationNode *newTrait( std::string *name, DeclarationNode *params, DeclarationNode *asserts );
     357        static DeclarationNode *newTraitUse( std::string *name, ExpressionNode *params );
    358358        static DeclarationNode *newTypeDecl( std::string *name, DeclarationNode *typeParams );
    359359        static DeclarationNode *newPointer( DeclarationNode *qualifiers );
  • src/Parser/TypeData.cc

    r8f610e85 r4040425  
    1010// Created On       : Sat May 16 15:12:51 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Wed Mar  2 17:08:38 2016
    13 // Update Count     : 48
     12// Last Modified On : Wed Mar  2 17:26:45 2016
     13// Update Count     : 49
    1414//
    1515
     
    820820                buildForall( aggregate->params, at->get_parameters() );
    821821                break;
    822           case DeclarationNode::Context:
    823                 at = new ContextDecl( aggregate->name );
     822          case DeclarationNode::Trait:
     823                at = new TraitDecl( aggregate->name );
    824824                buildList( aggregate->params, at->get_parameters() );
    825825                break;
     
    860860                        ret = new UnionInstType( buildQualifiers(), aggInst->aggregate->aggregate->name );
    861861                        break;
    862                   case DeclarationNode::Context:
    863                         ret = new ContextInstType( buildQualifiers(), aggInst->aggregate->aggregate->name );
     862                  case DeclarationNode::Trait:
     863                        ret = new TraitInstType( buildQualifiers(), aggInst->aggregate->aggregate->name );
    864864                        break;
    865865                  default:
  • src/Parser/TypedefTable.cc

    r8f610e85 r4040425  
    1010// Created On       : Sat May 16 15:20:13 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jun 26 07:30:16 2015
    13 // Update Count     : 19
     12// Last Modified On : Wed Mar  2 17:25:55 2016
     13// Update Count     : 20
    1414//
    1515
     
    6161
    6262void TypedefTable::addToScope( const std::string &identifier, kind_t kind, int scope ) {
    63         if ( currentContext != "" && scope == contextScope ) {
     63        if ( currentTrait != "" && scope == contextScope ) {
    6464                DeferredEntry entry = { identifier, kind };
    65                 contexts[currentContext].push_back( entry );
     65                contexts[currentTrait].push_back( entry );
    6666        } else {
    6767                debugPrint( "Adding " << identifier << " as kind " << kind << " scope " << scope << " from scope " << currentScope << endl );
     
    112112}
    113113
    114 void TypedefTable::openContext( const std::string &contextName ) {
     114void TypedefTable::openTrait( const std::string &contextName ) {
    115115        map< string, deferListType >::iterator i = contexts.find( contextName );
    116116        if ( i != contexts.end() ) {
     
    150150}
    151151
    152 void TypedefTable::enterContext( const std::string &contextName ) {
    153         currentContext = contextName;
     152void TypedefTable::enterTrait( const std::string &contextName ) {
     153        currentTrait = contextName;
    154154        contextScope = currentScope;
    155155}
    156156
    157 void TypedefTable::leaveContext() {
    158         currentContext = "";
     157void TypedefTable::leaveTrait() {
     158        currentTrait = "";
    159159}
    160160
  • src/Parser/TypedefTable.h

    r8f610e85 r4040425  
    1010// Created On       : Sat May 16 15:24:36 2015
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Jun 25 22:52:15 2015
    13 // Update Count     : 11
     12// Last Modified On : Wed Mar  2 17:26:54 2016
     13// Update Count     : 12
    1414//
    1515
     
    4040
    4141        int currentScope;
    42         std::string currentContext;
     42        std::string currentTrait;
    4343        int contextScope;
    4444       
     
    7979       
    8080        // dump the definitions from a pre-defined context into the current scope
    81         void openContext( const std::string &contextName );
     81        void openTrait( const std::string &contextName );
    8282       
    8383        void enterScope();
    8484        void leaveScope();
    85         void enterContext( const std::string &contextName );
    86         void leaveContext();
     85        void enterTrait( const std::string &contextName );
     86        void leaveTrait();
    8787
    8888        void print() const;
  • src/Parser/lex.cc

    r8f610e85 r4040425  
    391391        flex_int32_t yy_nxt;
    392392        };
    393 static yyconst flex_int16_t yy_accept[883] =
     393static yyconst flex_int16_t yy_accept[888] =
    394394    {   0,
    395395        0,    0,    0,    0,    0,    0,  115,  115,  118,  118,
     
    399399      123,  179,  124,  144,  102,  104,  102,  102,  102,  102,
    400400      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    401       102,  127,  147,  128,  145,    7,  179,    4,    4,  180,
    402       105,  180,  106,  115,  116,  122,  118,  119,    7,    9,
    403         0,    8,  155,  174,  102,    0,  167,  137,  160,  168,
    404       165,  152,  163,  153,  164,  162,    0,  112,    3,    0,
    405 
    406       166,  112,  110,    0,    0,  110,  110,    0,    0,  110,
    407       109,  109,  109,    0,  109,  135,  136,  134,  156,  158,
    408       154,  159,  157,    0,    0,    0,    0,    0,    0,    0,
    409         0,    0,    0,    0,    0,    0,    0,    0,  103,  173,
    410         0,  117,  114,  102,    0,    0,  170,    0,  102,  102,
     401      102,  102,  127,  147,  128,  145,    7,  179,    4,    4,
     402      180,  105,  180,  106,  115,  116,  122,  118,  119,    7,
     403        9,    0,    8,  155,  174,  102,    0,  167,  137,  160,
     404      168,  165,  152,  163,  153,  164,  162,    0,  112,    3,
     405
     406        0,  166,  112,  110,    0,    0,  110,  110,    0,    0,
     407      110,  109,  109,  109,    0,  109,  135,  136,  134,  156,
     408      158,  154,  159,  157,    0,    0,    0,    0,    0,    0,
     409        0,    0,    0,    0,    0,    0,    0,    0,    0,  103,
     410      173,    0,  117,  114,  102,    0,    0,  170,    0,  102,
    411411      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    412       102,  102,  102,  102,  102,   39,  102,  102,  102,  102,
    413       102,  102,  102,  102,  102,  102,   57,  102,  102,  102,
     412      102,  102,  102,  102,  102,  102,   38,  102,  102,  102,
     413      102,  102,  102,  102,  102,  102,  102,   56,  102,  102,
    414414      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    415       102,  102,  169,  161,    7,    0,    0,    0,    2,    0,
    416 
    417         5,  105,    0,    0,    0,  115,    0,  121,  120,  120,
    418         0,    0,    0,  118,    0,    0,    0,    0,    0,    0,
    419         0,    0,    0,    0,    0,    0,    0,    0,    0,  133,
    420       112,  112,    0,  112,  112,  112,    0,    6,  112,  110,
    421         0,    0,    0,  112,    0,  110,  110,  110,  110,    0,
    422       111,    0,    0,  109,  109,  109,  109,    0,  171,  172,
    423         0,  177,  175,    0,    0,    0,  103,    0,    0,    0,
    424         0,    0,    0,    0,    0,  102,   17,  102,  102,  102,
     415      102,  102,  102,  102,  169,  161,    7,    0,    0,    0,
     416
     417        2,    0,    5,  105,    0,    0,    0,  115,    0,  121,
     418      120,  120,    0,    0,    0,  118,    0,    0,    0,    0,
     419        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     420        0,  133,  112,  112,    0,  112,  112,  112,    0,    6,
     421      112,  110,    0,    0,    0,  112,    0,  110,  110,  110,
     422      110,    0,  111,    0,    0,  109,  109,  109,  109,    0,
     423      171,  172,    0,  177,  175,    0,    0,    0,  103,    0,
     424        0,    0,    0,    0,    0,    0,    0,  102,   17,  102,
    425425      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    426       102,  102,  102,  102,  102,   14,  102,  102,  102,  102,
     426      102,  102,  102,  102,  102,  102,  102,   14,  102,  102,
    427427
    428428      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    429       102,  102,  102,  102,   51,  102,  102,  102,   64,  102,
     429      102,  102,  102,  102,  102,  102,   50,  102,  102,  102,
     430       63,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     431      102,  102,  102,  102,  102,   89,  102,  102,  102,  102,
     432      102,  102,  102,    0,    0,    0,    0,    0,    0,    0,
     433        0,  120,    0,    0,    0,    0,    0,  120,    0,    0,
     434      178,    0,    0,    0,    0,    0,    0,    0,  112,    0,
     435      112,    0,  112,    0,    0,  112,  112,  110,  110,    0,
     436        0,  111,  111,    0,  111,    0,  111,  109,  109,    0,
     437        0,    0,    0,    0,    0,    0,    0,    0,    0,  176,
     438
    430439      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    431       102,   88,  102,  102,  102,  102,  102,  102,  102,    0,
    432         0,    0,    0,    0,    0,    0,    0,  120,    0,    0,
    433         0,    0,    0,  120,    0,    0,  178,    0,    0,    0,
    434         0,    0,    0,    0,  112,    0,  112,    0,  112,    0,
    435         0,  112,  112,  110,  110,    0,    0,  111,  111,    0,
    436       111,    0,  111,  109,  109,    0,    0,    0,    0,    0,
    437         0,    0,    0,    0,    0,  176,  102,  102,  102,  102,
    438 
    439440      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    440       102,  102,  102,  102,  102,  102,  102,  102,  102,   21,
    441       102,   24,  102,   27,  102,  102,  102,  102,  102,  102,
    442       102,   42,  102,   44,  102,  102,  102,  102,  102,  102,
    443       102,   56,  102,   67,  102,  102,  102,  102,  102,  102,
    444       102,  102,  102,  102,  102,   89,  102,  102,   97,  102,
     441      102,  102,  102,   21,  102,   24,  102,   27,  102,  102,
     442      102,  102,  102,  102,  102,   41,  102,   43,  102,  102,
     443      102,  102,  102,  102,  102,   55,  102,   66,  102,  102,
     444      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     445      102,  102,  102,  102,   97,  102,  102,    0,    0,    0,
     446        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     447        0,  120,    0,    0,    0,    0,    0,  112,  112,    0,
     448        0,    0,    0,    0,  111,  111,    0,  113,    0,  111,
     449
     450      111,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     451        0,    0,    0,    0,  102,  102,   22,  102,  102,  102,
     452      102,  102,  102,  102,   15,  102,  102,  102,  102,  102,
     453      102,  102,  102,  102,  102,  102,  102,  102,  102,   23,
     454       25,  102,   32,  102,  102,  102,  102,   40,  102,  102,
     455      102,  102,   48,  102,  102,   53,  102,  102,   70,  102,
     456      102,  102,   76,  102,  102,  102,  102,  102,   86,   88,
     457      102,  102,   94,  102,  102,  101,    0,    0,    0,    0,
     458        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     459        0,    0,    0,    0,    0,  113,    0,    0,  111,  113,
     460
     461      113,  113,  113,  113,  111,    0,    0,    0,    0,    0,
     462        0,    0,    0,    0,    0,  102,    0,  102,  102,  102,
     463      102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
     464      102,  102,  102,   58,  102,  102,  102,  102,  102,  102,
     465      102,  102,   28,  102,  102,  102,   39,   42,   45,  102,
     466      102,   51,  102,   60,   67,  102,  102,   75,   77,   80,
     467       81,   83,   84,  102,  102,   91,  102,  102,    0,    1,
     468        0,    0,    0,    0,    0,    0,  105,    0,    0,    0,
     469      120,    0,    0,    0,    0,  113,  113,  113,  113,    0,
     470        0,    0,    0,    0,    0,    0,    0,    0,  102,  102,
     471
     472       18,  102,  102,  102,  102,  102,  102,  102,   16,  102,
     473      102,  102,   33,  102,  102,  102,  102,  102,  102,  102,
     474      102,  102,  102,  102,  102,   36,   37,  102,   47,   52,
     475      102,  102,  102,   90,  102,  102,    0,    0,    0,    0,
     476        0,    0,    0,    0,    0,    0,    0,    0,    0,   10,
     477       11,   29,   54,  102,  102,  102,  102,  102,  102,  102,
     478      102,  102,  102,  102,   59,   61,   64,  102,  102,   78,
     479       92,  102,  102,   35,   46,   71,   72,  102,   95,   98,
     480        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     481        0,    0,  102,   68,  102,  102,   12,  102,  102,   30,
     482
     483       34,  102,  102,  102,   65,  102,  102,  102,  102,  102,
    445484      102,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    446         0,    0,    0,    0,    0,  120,    0,    0,    0,    0,
    447         0,  112,  112,    0,    0,    0,    0,    0,  111,  111,
    448         0,  113,    0,  111,  111,    0,    0,    0,    0,    0,
    449 
     485        0,    0,    0,    0,   57,  102,  102,  102,  102,  102,
     486      102,  102,   49,   62,   73,   79,   93,   99,  102,  102,
    450487        0,    0,    0,    0,    0,    0,    0,    0,  102,  102,
    451        22,  102,  102,  102,  102,  102,  102,  102,   15,  102,
    452       102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    453       102,  102,  102,   23,   25,  102,   32,  102,  102,  102,
    454       102,  102,   41,  102,  102,  102,  102,   49,  102,  102,
    455        54,  102,  102,  102,  102,  102,   76,  102,  102,  102,
    456       102,  102,   86,  102,  102,   94,  102,  102,  101,    0,
    457         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    458         0,    0,    0,    0,    0,    0,    0,    0,  113,    0,
    459         0,  111,  113,  113,  113,  113,  113,  111,    0,    0,
    460 
    461         0,    0,    0,    0,    0,    0,    0,    0,  102,    0,
    462       102,  102,  102,  102,  102,  102,  102,  102,  102,  102,
    463       102,  102,  102,  102,  102,  102,   59,  102,  102,  102,
    464       102,  102,  102,  102,  102,   28,  102,  102,  102,  102,
    465        40,   43,   46,  102,  102,   52,  102,   61,   68,  102,
    466       102,   75,   77,   80,   81,   83,   84,  102,  102,   91,
    467       102,  102,    0,    1,    0,    0,    0,    0,    0,    0,
    468       105,    0,    0,    0,  120,    0,    0,    0,    0,  113,
    469       113,  113,  113,    0,    0,    0,    0,    0,    0,    0,
    470         0,    0,  102,  102,   18,  102,  102,  102,  102,  102,
    471 
    472       102,  102,   16,  102,  102,  102,   33,  102,  102,  102,
    473       102,  102,  102,  102,  102,  102,  102,  102,   35,  102,
    474        37,   38,  102,   48,   53,  102,  102,  102,   90,  102,
    475       102,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    476         0,    0,    0,    0,   10,   11,   29,   55,  102,  102,
    477       102,  102,  102,  102,  102,  102,  102,  102,  102,   60,
    478        62,   65,  102,  102,   78,   92,  102,  102,   36,   47,
    479        71,   72,  102,   95,   98,    0,    0,    0,    0,    0,
    480         0,    0,    0,    0,    0,    0,    0,  102,   69,  102,
    481       102,   12,  102,  102,   30,   34,  102,  102,  102,   66,
    482 
    483       102,  102,  102,  102,  102,  102,    0,    0,    0,    0,
    484         0,    0,    0,    0,    0,    0,    0,    0,    0,   58,
    485       102,  102,  102,  102,  102,  102,  102,   50,   63,   73,
    486        79,   93,   99,  102,  102,    0,    0,    0,    0,    0,
    487         0,    0,    0,  102,  102,   13,   19,  102,  102,   31,
    488       102,  102,  102,   26,   87,    0,    0,  102,  102,  102,
    489       102,  102,  102,   74,  100,  102,   85,   20,  102,  102,
    490        45,   82,  102,  102,  102,  102,  102,  102,  102,   96,
    491        70,    0
     488       13,   19,  102,  102,   31,  102,  102,  102,   26,   87,
     489        0,    0,  102,  102,  102,  102,  102,  102,   74,  100,
     490      102,   85,   20,  102,  102,   44,   82,  102,  102,  102,
     491      102,  102,  102,  102,   96,   69,    0
    492492    } ;
    493493
     
    537537    } ;
    538538
    539 static yyconst flex_int16_t yy_base[1057] =
     539static yyconst flex_int16_t yy_base[1062] =
    540540    {   0,
    541         0,   83, 2255, 2253,   93,    0,  175,  176,  177,  178,
    542      2267, 2793,  189, 2793,  195,   54, 2793, 2214,   59,  171,
    543      2793, 2793, 2793,   55,  186, 2793,  189,  187,  202,  214,
    544       272,    0, 2232, 2793,  214, 2231,  150,  340,  153,  222,
    545      2793,  157, 2793,  215,  224, 2793,  207,  181,  221,  249,
    546       235,  289,  155,  255,  218,  206,  266,  256,  323,  259,
    547       192, 2793,  223, 2793, 2226,  377,  342, 2793, 2235, 2793,
    548      2204,  234, 2793,    0, 2793,  421,    0, 2793,  393, 2793,
    549       399,  405, 2793,  492, 2203,  241, 2793, 2793, 2793, 2793,
    550      2793, 2219, 2793, 2216, 2793, 2793, 2226,  552, 2793, 2243,
    551 
    552      2793,  413,  393,  437,  493,  377,  318,  195,  430,  382,
    553         0,  384,  321,  196,  427, 2793, 2793, 2793, 2213, 2793,
    554      2793, 2793, 2211, 2208,  252,  302, 2221,  342,  435,  422,
    555       381,  455,  400,  494, 2202,  440, 2152,  469, 2181, 2793,
    556       276, 2793, 2793,  520, 2175, 2172, 2793, 2145,  414,  463,
    557       470,  325,  254,  479,  432,  274,  480,  423,  483,  498,
    558       492,  503,  499,  509,  341,  455,  484,  377,  510,  512,
    559       517,  518,  529,  530,  531,  537, 2173,  541,  536,  544,
    560       557,  546,  566,  569,  538,  552,  548,  554,  588,  571,
    561       570,  580, 2793, 2793,  645,  651, 2220,  657, 2793,  663,
    562 
    563      2793, 2168,  593, 2162, 2161,    0,  631, 2793, 2793,  669,
    564      2160, 2158, 2155,    0, 2175,  629,  635,  639,  678,  677,
    565       666,  670,  671,  674, 2172,  681,  682, 2150, 2148, 2793,
    566         0,  597,  702,  678,  676, 2128, 2178, 2793,  693,    0,
    567       710,  723,  743,  762,  788,  707, 2793, 2137, 2110,    0,
    568       776, 2153,  768,  723, 2793, 2130, 2105,  809, 2793, 2793,
    569      2136, 2793, 2793,  705,  710, 2114, 2112,  724, 2108, 2107,
    570      2105,    0, 2102,    0, 2071,  709,  682,  707,  712,  710,
    571       724,  647,  750,  671,  786,  751,  748,  731,  778,  787,
    572       789,  788,  792,  790,  758, 2101,  796,  806,  800,  813,
    573 
    574       798,  810,  802,  816,  822,  819,  815,  826,  830,  829,
    575       831,  832,  833,  837,  839,  841,  846,  843, 2100,  848,
    576       850,  849,  851,  852,  854,  853,  857,  855,  858,  863,
    577       868, 2098,  867,  912,  871,  878,  872,  879,  882,  937,
    578       939, 2092, 2089, 2088,    0, 2087,    0,  927,  931, 2085,
    579         0, 2082,    0, 2081,    0, 2101, 2793,  913,  926, 2080,
    580      2075,    0, 2074,    0, 2793,  942,  960,  953, 2793,  966,
    581       981, 1005, 2073, 2793, 2793,  955,  968,  995,  968, 1028,
    582       892, 1014,  970, 2793, 2793, 2071, 2068, 2064,    0, 2060,
    583         0, 2058,    0, 2056,    0, 2793,  909,  944,  982,  943,
    584 
    585      1006,  911, 1012,  923, 1013, 1019, 1009, 1016, 1023, 1024,
    586      1020,  972, 1030, 1028,  989, 1026, 1034, 1027, 1039, 2056,
    587      1044, 2054, 1048, 2052, 1049, 1051, 1052, 1053, 1056, 1057,
    588      1055, 2049, 1059, 2046,  946, 1063, 1066, 1067, 1068, 1071,
    589      1069, 2045, 1075, 2044, 1077, 1080, 1079, 1082, 1084, 1086,
    590      1087, 1090, 1097, 1107, 1088, 1108, 1093, 1098, 2042, 1096,
    591      1111, 1164, 2036,    0, 2033,    0, 2032,    0, 2031,    0,
    592      1151, 2029,    0, 2026,    0, 2023, 2022, 2021,    0, 2019,
    593         0, 1156, 2016, 1162, 1148, 1182, 1149, 1126, 1147, 2793,
    594      1201, 1215, 1241, 2025, 2000, 2011, 2009,    0, 2006,    0,
    595 
    596      2003,    0, 2002,    0, 2001,    0, 1999,    0, 1161, 1149,
    597      1999, 1179, 1140, 1180, 1117, 1182, 1192, 1199, 1181, 1163,
    598      1196, 1200, 1201, 1220, 1198, 1221, 1224,  604, 1226, 1227,
    599      1231, 1233, 1234, 1996, 1244, 1236, 1995, 1240, 1241, 1246,
    600      1247, 1243, 1994, 1250, 1251, 1253, 1254, 1992, 1255, 1267,
    601      1989, 1264, 1271, 1256, 1263, 1257, 1986, 1275, 1277, 1279,
    602      1260, 1281, 1290, 1285, 1288, 1985, 1289, 1291, 1984, 2031,
    603      1976,    0, 1975,    0, 1974,    0, 1972,    0, 1969,    0,
    604      1968,    0, 1967,    0, 1965,    0, 1336, 1342, 1369, 1353,
    605      1932, 2793, 1359, 1307, 1359, 1309, 1930, 2793, 1929,    0,
    606 
    607      1926,    0, 1923,    0, 1922,    0,    0,    0, 1924,    0,
    608      1347, 1295, 1292, 1323, 1337, 1338, 1296, 1349, 1351, 1355,
    609      1353, 1348, 1363, 1364, 1371, 1373, 1380, 1375, 1403, 1381,
    610      1385, 1389, 1094, 1387, 1390, 1922, 1391, 1393, 1397, 1401,
    611      1919, 1916, 1915, 1394, 1400, 1914, 1404, 1912, 1909, 1402,
    612      1408, 1908, 1907, 1905, 1902, 1901, 1900, 1417, 1412, 1898,
    613      1420, 1418, 1944, 2793, 1888,    0, 1884,    0,    0,    0,
    614      1883,    0,    0,    0, 2793,    0,    0,    0,    0, 1463,
    615      1864, 2793, 2793, 1469, 1863,    0, 1862,    0,    0,    0,
    616         0, 1860, 1407, 1446, 1860, 1406, 1423, 1300, 1431, 1449,
    617 
    618      1455, 1447, 1859, 1457, 1448, 1459, 1464, 1460, 1490, 1474,
    619      1470, 1494, 1480, 1475, 1484, 1485, 1486, 1482, 1858, 1487,
    620      1856, 1853, 1489, 1852, 1851, 1491, 1493, 1497, 1849, 1498,
    621      1500,    0,    0,    0, 1843, 1842, 1841, 1548,    0, 1839,
    622      1836, 1835, 1834, 1832, 1832, 1831, 1830, 1828, 1505, 1510,
    623      1502, 1501, 1504, 1508, 1513, 1517, 1526, 1528, 1559, 1825,
    624      1533, 1824, 1534, 1535, 1544, 1545, 1538, 1539, 1823, 1821,
    625      1818, 1817, 1540, 1816, 1814, 1808, 1807, 1806, 1804, 1797,
    626      1795, 1794, 1791, 1790, 1789, 1787, 1770, 1546, 1764, 1549,
    627      1550, 1552, 1554, 1557, 1558, 1763, 1556, 1589, 1566, 1760,
    628 
    629      1565, 1572, 1577, 1579, 1567, 1578, 1750, 1747, 1740, 1738,
    630      1737, 1716, 1715, 1714, 1707, 1705, 1704, 1662, 1659, 1661,
    631      1571, 1584, 1582, 1581, 1586, 1593, 1595, 1659, 1657, 1597,
    632      1654, 1652, 1598, 1599, 1602, 1648, 1647, 1644, 1642, 1422,
    633      1421, 1205, 1201, 1605, 1613,  949, 1603, 1607, 1615,  910,
    634      1616, 1621, 1622,  768,  723,  602,  503, 1609, 1623, 1627,
    635      1626, 1628, 1632,  373,  338, 1633,  337,  290, 1637, 1634,
    636       251,  200, 1639, 1640, 1641, 1643, 1642, 1644, 1646,  196,
    637       136, 2793, 1718, 1731, 1744, 1754, 1764, 1777, 1787, 1800,
    638      1813, 1826, 1834, 1844, 1851, 1858, 1865, 1872, 1879, 1886,
    639 
    640      1893, 1900, 1907, 1920, 1927, 1931, 1939, 1942, 1949, 1956,
    641      1963, 1966, 1973, 1979, 1992, 2005, 2012, 2019, 2026, 2033,
    642      2036, 2043, 2046, 2053, 2056, 2063, 2066, 2073, 2076, 2083,
    643      2086, 2093, 2096, 2103, 2111, 2118, 2125, 2132, 2139, 2142,
    644      2149, 2152, 2159, 2162, 2169, 2175, 2188, 2195, 2202, 2205,
    645      2212, 2215, 2222, 2225, 2232, 2235, 2242, 2245, 2252, 2255,
    646      2262, 2269, 2272, 2279, 2282, 2289, 2296, 2303, 2306, 2313,
    647      2316, 2323, 2326, 2333, 2336, 2343, 2346, 2353, 2359, 2372,
    648      2379, 2386, 2389, 2396, 2399, 2406, 2409, 2416, 2419, 2426,
    649      2429, 2436, 2439, 2446, 2449, 2456, 2459, 2466, 2473, 2476,
    650 
    651      2483, 2486, 2493, 2496, 2503, 2506, 2509, 2515, 2522, 2531,
    652      2538, 2545, 2548, 2555, 2558, 2561, 2567, 2574, 2577, 2580,
    653      2583, 2586, 2589, 2592, 2595, 2602, 2605, 2612, 2615, 2618,
    654      2621, 2624, 2634, 2641, 2644, 2647, 2650, 2657, 2664, 2671,
    655      2674, 2681, 2688, 2695, 2702, 2709, 2716, 2723, 2730, 2737,
    656      2744, 2751, 2758, 2765, 2772, 2779
     541        0,   83, 2268, 2265,   93,    0,  175,  176,  177,  178,
     542     2279, 2798,  189, 2798,  195,   54, 2798, 2226,   59,  171,
     543     2798, 2798, 2798,   55,  186, 2798,  189,  187,  202,  214,
     544      272,    0, 2244, 2798,  214, 2243,  150,  340,  153,  222,
     545     2798,  157, 2798,  215,  224, 2798,  207,  181,  221,  249,
     546      235,  289,  155,  255,  218,  231,  206,  266,  256,  323,
     547      259,  192, 2798,  252, 2798, 2238,  377,  342, 2798, 2249,
     548     2798, 2218,  241, 2798,    0, 2798,  421,    0, 2798,  393,
     549     2798,  399,  405, 2798,  492, 2216,  276, 2798, 2798, 2798,
     550     2798, 2798, 2231, 2798, 2228, 2798, 2798, 2240,  552, 2798,
     551
     552     2257, 2798,  413,  393,  437,  493,  377,  318,  195,  430,
     553      382,    0,  384,  321,  196,  427, 2798, 2798, 2798, 2226,
     554     2798, 2798, 2798, 2223, 2220,  304,  342, 2235,  381,  435,
     555      422,  400,  455,  440,  494, 2216,  469, 2165,  497, 2193,
     556     2798,  432, 2798, 2798,  521, 2187, 2186, 2798, 2159,  470,
     557      414,  436,  325,  254,  463,  480,  486,  563,  274,  482,
     558      484,  487,  495,  234,  489,  341,  488,  490,  377,  507,
     559      497,  501,  503,  514,  515,  506,  529, 2186,  531,  537,
     560      505,  518,  536,  534,  538,  559,  575,  571,  577,  574,
     561      599,  590,  581,  592, 2798, 2798,  662,  668, 2232,  674,
     562
     563     2798,  680, 2798, 2180,  583, 2176, 2175,    0,  671, 2798,
     564     2798,  686, 2173, 2170, 2167,    0, 2189,  568,  615,  618,
     565      695,  694,  627,  654,  628,  683, 2186,  686,  687, 2163,
     566     2160, 2798,    0,  680,  712,  703,  682, 2157, 2208, 2798,
     567      711,    0,  702,  756,  762,  795,  774,  604, 2798, 2167,
     568     2141,    0,  803, 2167,  780,  684, 2798, 2143, 2118,  804,
     569     2798, 2798, 2148, 2798, 2798,  724,  728, 2126, 2126,  694,
     570     2122, 2120, 2117,    0, 2114,    0, 2085,  679,  682,  696,
     571      423,  722,  757,  703,  758,  741,  799,  764,  725,  789,
     572      697,  774,  788,  792,  760,  784,  795, 2115,  809,  797,
     573
     574      816,  196,  804,  812,  817,  823,  829,  632,  831,  832,
     575      836,  819,  837,  833,  840,  844,  847,  843,  853,  851,
     576     2113,  854,  855,  856,  859,  857,  858,  860,  861,  867,
     577      863,  866,  868,  873,  874, 2110,  877,  716,  882,  883,
     578      884,  888,  894,  947,  944, 2104, 2103, 2102,    0, 2100,
     579        0,  934,  939, 2097,    0, 2094,    0, 2093,    0, 2113,
     580     2798,  934,  935, 2092, 2087,    0, 2086,    0, 2798,  947,
     581      967,  958, 2798,  973,  988, 1012, 2085, 2798, 2798,  932,
     582      962,  999,  975, 1033,  912, 1020,  956, 2798, 2798, 2083,
     583     2080, 2079,    0, 2078,    0, 2076,    0, 2073,    0, 2798,
     584
     585      956,  936,  978,  950,  994, 1010, 1016,  973, 1019, 1020,
     586     1024, 1012, 1029, 1030, 1026, 1027, 1032, 1038, 1044, 1031,
     587     1051, 1049, 1041, 2072, 1055, 2068, 1054, 2066, 1057, 1058,
     588     1059,  974, 1061, 1064, 1065, 2064, 1070, 2061, 1063, 1071,
     589     1073, 1075, 1076, 1081, 1077, 2059, 1082, 2057, 1084, 1087,
     590     1089, 1092, 1094, 1095, 1100, 1090, 1098, 1106, 1115, 1102,
     591     1103, 1116, 1104, 1118, 2054, 1119, 1123, 1169, 2048,    0,
     592     2047,    0, 2046,    0, 2044,    0, 1164, 2041,    0, 2038,
     593        0, 2037, 2036, 2034,    0, 2031,    0, 1171, 2028, 1177,
     594     1137, 1197, 1164, 1112, 1131, 2798, 1216, 1230, 1256, 2039,
     595
     596     2014, 2024, 2021,    0, 2018,    0, 2017,    0, 2016,    0,
     597     2014,    0, 2011,    0, 1159, 1164, 2011, 1160, 1178, 1182,
     598     1133, 1194, 1208, 1185,  541, 1199, 1197, 1215, 1193, 1209,
     599     1211, 1225, 1210, 1254, 1235, 1237, 1239, 1241, 1242, 2010,
     600     1252, 1248, 2009, 1249, 1253, 1255, 1251, 2007, 1258, 1261,
     601     1262, 1264, 2004, 1265, 1271, 2001, 1263, 1273, 2000, 1269,
     602     1275, 1277, 1999, 1281, 1283, 1285, 1284, 1286, 1296, 1997,
     603     1295, 1287, 1994, 1299, 1300, 1991, 2039, 1986,    0, 1984,
     604        0, 1981,    0, 1980,    0, 1979,    0, 1977,    0, 1974,
     605        0, 1973,    0, 1336, 1346, 1369, 1357, 1972, 2798, 1375,
     606
     607     1311, 1347, 1313, 1970, 2798, 1937,    0, 1935,    0, 1934,
     608        0, 1931,    0,    0,    0, 1931,    0, 1353, 1354, 1305,
     609     1302, 1335, 1363, 1366, 1367, 1364,  586, 1370, 1365, 1374,
     610     1368, 1376, 1369, 1385, 1380, 1166, 1392, 1394, 1327, 1395,
     611     1396, 1399, 1930, 1398, 1400, 1401, 1929, 1927, 1924, 1403,
     612     1402, 1921, 1409, 1920, 1919, 1406, 1404, 1917, 1914, 1913,
     613     1912, 1910, 1907, 1416, 1417, 1906, 1419, 1405, 1954, 2798,
     614     1900,    0, 1897,    0,    0,    0, 1896,    0,    0,    0,
     615     2798,    0,    0,    0,    0, 1459, 1889, 2798, 2798, 1465,
     616     1885,    0, 1869,    0,    0,    0,    0, 1868, 1424, 1442,
     617
     618     1870, 1444, 1447, 1443, 1451, 1453, 1455, 1457, 1868, 1459,
     619     1460, 1476, 1461, 1463, 1494, 1477, 1478, 1504, 1483, 1482,
     620     1481, 1488, 1490, 1491, 1492, 1865, 1864, 1493, 1863, 1861,
     621     1497, 1496, 1499, 1858, 1500, 1502,    0,    0,    0, 1854,
     622     1853, 1851, 1550,    0, 1848, 1847, 1846, 1844, 1841, 1843,
     623     1842, 1840, 1837, 1507, 1513, 1505, 1514, 1509, 1515, 1528,
     624     1506, 1531, 1533, 1562, 1836, 1536, 1835, 1537, 1541, 1544,
     625     1549, 1542, 1543, 1833, 1830, 1829, 1828, 1550, 1826, 1823,
     626     1819, 1818, 1816, 1813, 1812, 1811, 1809, 1802, 1800, 1799,
     627     1796, 1795, 1551, 1797, 1554, 1556, 1555, 1559, 1560, 1561,
     628
     629     1795, 1565, 1592, 1568, 1778, 1569, 1576, 1577, 1584, 1570,
     630     1572, 1766, 1765, 1762, 1755, 1752, 1745, 1743, 1742, 1721,
     631     1720, 1719, 1712, 1710, 1712, 1582, 1587, 1595, 1590, 1589,
     632     1597, 1585, 1670, 1669, 1601, 1666, 1665, 1605, 1606, 1609,
     633     1660, 1659, 1655, 1654, 1651, 1650, 1649, 1593, 1610, 1611,
     634     1412, 1614, 1612, 1620, 1337, 1621, 1623, 1627, 1000,  928,
     635      896,  778, 1628, 1629, 1631, 1632, 1633, 1635,  709,  628,
     636     1637,  373,  338, 1639, 1640,  337,  257, 1641, 1643, 1645,
     637     1647, 1646, 1649, 1651,  200,  136, 2798, 1723, 1736, 1749,
     638     1759, 1769, 1782, 1792, 1805, 1818, 1831, 1839, 1849, 1856,
     639
     640     1863, 1870, 1877, 1884, 1891, 1898, 1905, 1912, 1925, 1932,
     641     1936, 1944, 1947, 1954, 1961, 1968, 1971, 1978, 1984, 1997,
     642     2010, 2017, 2024, 2031, 2038, 2041, 2048, 2051, 2058, 2061,
     643     2068, 2071, 2078, 2081, 2088, 2091, 2098, 2101, 2108, 2116,
     644     2123, 2130, 2137, 2144, 2147, 2154, 2157, 2164, 2167, 2174,
     645     2180, 2193, 2200, 2207, 2210, 2217, 2220, 2227, 2230, 2237,
     646     2240, 2247, 2250, 2257, 2260, 2267, 2274, 2277, 2284, 2287,
     647     2294, 2301, 2308, 2311, 2318, 2321, 2328, 2331, 2338, 2341,
     648     2348, 2351, 2358, 2364, 2377, 2384, 2391, 2394, 2401, 2404,
     649     2411, 2414, 2421, 2424, 2431, 2434, 2441, 2444, 2451, 2454,
     650
     651     2461, 2464, 2471, 2478, 2481, 2488, 2491, 2498, 2501, 2508,
     652     2511, 2514, 2520, 2527, 2536, 2543, 2550, 2553, 2560, 2563,
     653     2566, 2572, 2579, 2582, 2585, 2588, 2591, 2594, 2597, 2600,
     654     2607, 2610, 2617, 2620, 2623, 2626, 2629, 2639, 2646, 2649,
     655     2652, 2655, 2662, 2669, 2676, 2679, 2686, 2693, 2700, 2707,
     656     2714, 2721, 2728, 2735, 2742, 2749, 2756, 2763, 2770, 2777,
     657     2784
    657658    } ;
    658659
    659 static yyconst flex_int16_t yy_def[1057] =
     660static yyconst flex_int16_t yy_def[1062] =
    660661    {   0,
    661       882,    1,  883,  883,  882,    5,  884,  884,  885,  885,
    662       882,  882,  882,  882,  882,  882,  882,  886,  882,  882,
    663       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    664       882,   31,  882,  882,  882,  882,  882,  882,  887,  886,
    665       882,  882,  882,  882,  886,  882,  886,  886,  886,  886,
    666       886,  886,  886,  886,  886,  886,  886,  886,  886,  886,
    667       886,  882,  882,  882,  882,  882,  888,  882,  882,  882,
    668       889,  882,  882,  890,  882,  882,  891,  882,  882,  882,
    669       882,  882,  882,  882,  886,  882,  882,  882,  882,  882,
    670       882,  882,  882,  882,  882,  882,  882,  882,  882,  892,
    671 
    672       882,   98,   30,  882,  882,  882,  882,  893,   30,  882,
    673        31,  882,  882,   31,  882,  882,  882,  882,  882,  882,
    674       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    675       882,  882,  882,  882,  882,  882,  882,  882,  894,  882,
    676       882,  882,  882,  886,  895,  896,  882,  882,  886,  886,
    677       886,  886,  886,  886,  886,  886,  886,  886,  886,  886,
    678       886,  886,  886,  886,  886,  886,  886,  886,  886,  886,
    679       886,  886,  886,  886,  886,  886,  886,  886,  886,  886,
    680       886,  886,  886,  886,  886,  886,  886,  886,  886,  886,
    681       886,  886,  882,  882,  882,  888,  888,  888,  882,  888,
    682 
    683       882,  889,  882,  897,  898,  890,  882,  882,  882,  882,
    684       899,  900,  901,  891,  882,  882,  882,  882,  882,  882,
    685       882,  882,  882,  882,  882,  882,  882,  902,  903,  882,
    686        98,  882,  882,  882,  882,   98,  904,  882,  882,  103,
    687       103,  882,  882,  882,  882,  882,  882,  882,  882,  905,
    688       906,  907,  882,  882,  882,  882,  882,  882,  882,  882,
    689       882,  882,  882,  882,  882,  882,  894,  882,  908,  909,
    690       910,  911,  912,  913,  882,  914,  914,  914,  914,  914,
    691       914,  914,  914,  914,  914,  914,  914,  914,  914,  914,
    692       914,  914,  914,  914,  914,  914,  914,  914,  914,  914,
    693 
    694       914,  914,  914,  914,  914,  914,  914,  914,  914,  914,
    695       914,  914,  914,  914,  914,  914,  914,  914,  914,  914,
    696       914,  914,  914,  914,  914,  914,  914,  914,  914,  914,
    697       914,  914,  914,  914,  914,  914,  914,  914,  914,  915,
    698       916,  917,  918,  919,  920,  921,  922,  882,  882,  923,
    699       924,  925,  926,  927,  928,  882,  882,  882,  882,  882,
    700       929,  930,  931,  932,  882,  882,  882,  882,  882,  882,
    701       882,  367,  372,  882,  882,  933,  934,  935,  882,  882,
    702       882,  935,  882,  882,  882,  936,  937,  938,  939,  940,
    703       941,  942,  943,  944,  945,  882,  946,  946,  946,  946,
    704 
    705       946,  946,  946,  946,  946,  946,  946,  946,  946,  946,
    706       946,  946,  946,  946,  946,  946,  946,  946,  946,  946,
    707       946,  946,  946,  946,  946,  946,  946,  946,  946,  946,
    708       946,  946,  946,  946,  946,  946,  946,  946,  946,  946,
    709       946,  946,  946,  946,  946,  946,  946,  946,  946,  946,
    710       946,  946,  946,  946,  946,  946,  946,  946,  946,  946,
    711       946,  947,  948,  949,  950,  951,  952,  953,  954,  955,
    712       882,  956,  957,  958,  959,  960,  960,  961,  962,  963,
    713       964,  882,  482,  882,  965,  882,  965,  882,  882,  882,
    714       882,  882,  882,  882,  882,  966,  967,  968,  969,  970,
    715 
    716       971,  972,  973,  974,  975,  976,  977,  978,  979,  979,
    717       979,  979,  979,  979,  979,  979,  979,  979,  979,  979,
    718       979,  979,  979,  979,  979,  979,  979,  979,  979,  979,
    719       979,  979,  979,  979,  979,  979,  979,  979,  979,  979,
    720       979,  979,  979,  979,  979,  979,  979,  979,  979,  979,
    721       979,  979,  979,  979,  979,  979,  979,  979,  979,  979,
    722       979,  979,  979,  979,  979,  979,  979,  979,  979,  980,
    723       981,  982,  983,  984,  985,  986,  987,  988,  989,  990,
    724       991,  992,  993,  994,  995,  996,  882,  882,  882,  882,
    725       997,  882,  589,  882,  882,  882,  593,  882,  998,  999,
    726 
    727      1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009,
    728      1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
    729      1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
    730      1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
    731      1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
    732      1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
    733      1008, 1008, 1010,  882, 1011, 1012, 1013, 1014, 1015, 1016,
    734      1017, 1018, 1019, 1020,  882, 1021, 1022, 1023, 1024,  882,
    735       680,  882,  882,  882, 1025, 1026, 1027, 1028, 1029, 1030,
    736      1031, 1032, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033,
    737 
    738      1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033,
    739      1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033,
    740      1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033,
    741      1033, 1034, 1035, 1036, 1037, 1038, 1039,  882, 1040, 1025,
    742      1027, 1041, 1042, 1032, 1033, 1033, 1033, 1033, 1033, 1033,
    743      1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033,
    744      1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033,
    745      1033, 1033, 1033, 1033, 1033, 1043, 1044, 1037, 1045, 1038,
    746      1046, 1039, 1047, 1048, 1041, 1049, 1042, 1033, 1033, 1033,
    747      1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033,
    748 
    749      1033, 1033, 1033, 1033, 1033, 1033, 1050, 1043, 1051, 1044,
    750      1052, 1045, 1053, 1046, 1054, 1047, 1055, 1048, 1049, 1033,
    751      1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033,
    752      1033, 1033, 1033, 1033, 1033, 1056, 1050, 1051, 1052, 1053,
    753      1027, 1054, 1055, 1033, 1033, 1033, 1033, 1033, 1033, 1033,
    754      1033, 1033, 1033, 1033, 1033, 1056, 1027, 1033, 1033, 1033,
    755      1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033,
    756      1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033, 1033,
    757      1033,    0,  882,  882,  882,  882,  882,  882,  882,  882,
    758       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    759 
    760       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    761       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    762       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    763       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    764       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    765       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    766       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    767       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    768       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    769       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    770 
    771       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    772       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    773       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    774       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    775       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    776       882,  882,  882,  882,  882,  882
     662      887,    1,  888,  888,  887,    5,  889,  889,  890,  890,
     663      887,  887,  887,  887,  887,  887,  887,  891,  887,  887,
     664      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     665      887,   31,  887,  887,  887,  887,  887,  887,  892,  891,
     666      887,  887,  887,  887,  891,  887,  891,  891,  891,  891,
     667      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     668      891,  891,  887,  887,  887,  887,  887,  893,  887,  887,
     669      887,  894,  887,  887,  895,  887,  887,  896,  887,  887,
     670      887,  887,  887,  887,  887,  891,  887,  887,  887,  887,
     671      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     672
     673      897,  887,   99,   30,  887,  887,  887,  887,  898,   30,
     674      887,   31,  887,  887,   31,  887,  887,  887,  887,  887,
     675      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     676      887,  887,  887,  887,  887,  887,  887,  887,  887,  899,
     677      887,  887,  887,  887,  891,  900,  901,  887,  887,  891,
     678      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     679      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     680      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     681      891,  891,  891,  891,  891,  891,  891,  891,  891,  891,
     682      891,  891,  891,  891,  887,  887,  887,  893,  893,  893,
     683
     684      887,  893,  887,  894,  887,  902,  903,  895,  887,  887,
     685      887,  887,  904,  905,  906,  896,  887,  887,  887,  887,
     686      887,  887,  887,  887,  887,  887,  887,  887,  887,  907,
     687      908,  887,   99,  887,  887,  887,  887,   99,  909,  887,
     688      887,  104,  104,  887,  887,  887,  887,  887,  887,  887,
     689      887,  910,  911,  912,  887,  887,  887,  887,  887,  887,
     690      887,  887,  887,  887,  887,  887,  887,  887,  899,  887,
     691      913,  914,  915,  916,  917,  918,  887,  919,  919,  919,
     692      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
     693      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
     694
     695      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
     696      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
     697      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
     698      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
     699      919,  919,  919,  920,  921,  922,  923,  924,  925,  926,
     700      927,  887,  887,  928,  929,  930,  931,  932,  933,  887,
     701      887,  887,  887,  887,  934,  935,  936,  937,  887,  887,
     702      887,  887,  887,  887,  887,  371,  376,  887,  887,  938,
     703      939,  940,  887,  887,  887,  940,  887,  887,  887,  941,
     704      942,  943,  944,  945,  946,  947,  948,  949,  950,  887,
     705
     706      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     707      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     708      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     709      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     710      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     711      951,  951,  951,  951,  951,  951,  951,  951,  951,  951,
     712      951,  951,  951,  951,  951,  951,  951,  952,  953,  954,
     713      955,  956,  957,  958,  959,  960,  887,  961,  962,  963,
     714      964,  965,  965,  966,  967,  968,  969,  887,  488,  887,
     715      970,  887,  970,  887,  887,  887,  887,  887,  887,  887,
     716
     717      887,  971,  972,  973,  974,  975,  976,  977,  978,  979,
     718      980,  981,  982,  983,  984,  984,  984,  984,  984,  984,
     719      984,  984,  984,  984,  984,  984,  984,  984,  984,  984,
     720      984,  984,  984,  984,  984,  984,  984,  984,  984,  984,
     721      984,  984,  984,  984,  984,  984,  984,  984,  984,  984,
     722      984,  984,  984,  984,  984,  984,  984,  984,  984,  984,
     723      984,  984,  984,  984,  984,  984,  984,  984,  984,  984,
     724      984,  984,  984,  984,  984,  984,  985,  986,  987,  988,
     725      989,  990,  991,  992,  993,  994,  995,  996,  997,  998,
     726      999, 1000, 1001,  887,  887,  887,  887, 1002,  887,  596,
     727
     728      887,  887,  887,  600,  887, 1003, 1004, 1005, 1006, 1007,
     729     1008, 1009, 1010, 1011, 1012, 1013, 1014, 1013, 1013, 1013,
     730     1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
     731     1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
     732     1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
     733     1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
     734     1013, 1013, 1013, 1013, 1013, 1013, 1013, 1013, 1015,  887,
     735     1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025,
     736      887, 1026, 1027, 1028, 1029,  887,  686,  887,  887,  887,
     737     1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1038,
     738
     739     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     740     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     741     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     742     1038, 1038, 1038, 1038, 1038, 1038, 1039, 1040, 1041, 1042,
     743     1043, 1044,  887, 1045, 1030, 1032, 1046, 1047, 1037, 1038,
     744     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     745     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     746     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     747     1048, 1049, 1042, 1050, 1043, 1051, 1044, 1052, 1053, 1046,
     748     1054, 1047, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     749
     750     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     751     1038, 1055, 1048, 1056, 1049, 1057, 1050, 1058, 1051, 1059,
     752     1052, 1060, 1053, 1054, 1038, 1038, 1038, 1038, 1038, 1038,
     753     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     754     1061, 1055, 1056, 1057, 1058, 1032, 1059, 1060, 1038, 1038,
     755     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     756     1061, 1032, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     757     1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038,
     758     1038, 1038, 1038, 1038, 1038, 1038,    0,  887,  887,  887,
     759      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     760
     761      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     762      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     763      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     764      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     765      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     766      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     767      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     768      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     769      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     770      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     771
     772      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     773      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     774      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     775      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     776      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     777      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     778      887
    777779    } ;
    778780
    779 static yyconst flex_int16_t yy_nxt[2878] =
     781static yyconst flex_int16_t yy_nxt[2883] =
    780782    {   0,
    781783       12,   13,   14,   15,   15,   15,   13,   16,   17,   12,
     
    785787       18,   18,   40,   18,   18,   18,   18,   18,   40,   18,
    786788       41,   42,   43,   44,   45,   46,   47,   48,   49,   50,
    787        51,   52,   53,   18,   54,   18,   55,   18,   18,   18,
    788        18,   56,   57,   58,   59,   60,   61,   18,   18,   18,
    789        62,   63,   64,   65,   66,   83,   91,   84,   84,   66,
    790        87,   88,   67,   70,   70,   70,   70,   70,   70,   70,
    791 
    792        70,   70,   70,   71,   70,   70,   70,   70,   70,   70,
    793        70,   70,   70,   70,   70,   70,   70,   70,   70,   70,
    794        70,   70,   70,   70,   70,   70,   70,   70,   71,   71,
     789       51,   52,   53,   18,   54,   18,   55,   18,   18,   56,
     790       18,   57,   58,   59,   60,   61,   62,   18,   18,   18,
     791       63,   64,   65,   66,   67,   84,   92,   85,   85,   67,
     792       88,   89,   68,   71,   71,   71,   71,   71,   71,   71,
     793
     794       71,   71,   71,   72,   71,   71,   71,   71,   71,   71,
    795795       71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
    796        71,   71,   71,   70,   72,   70,   70,   71,   73,   71,
    797        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
    798        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
    799        71,   71,   71,   70,   70,   70,   70,   75,   75,   78,
    800        78,  122,  123,   89,  140,   78,   78,   86,   75,   75,
    801        79,   80,   81,   81,   81,   79,   81,   80,   82,   82,
    802 
    803        82,   81,   90,   92,  141,  145,   86,   97,   94,   98,
    804        98,   98,   98,   98,   98,  250,  882,   93,   99,   84,
    805        95,   96,   84,  100,  176,  117,   76,   76,   76,   76,
    806       142,  146,   86,  101,  102,  143,  103,  103,  103,  103,
    807       104,  104,  118,   86,  119,  120,  147,   86,  148,  252,
    808       258,   86,  160,  105,  193,  192,  106,   86,   86,  149,
    809       150,  151,  107,  108,  152,  153,  181,  154,  109,   86,
    810       155,  156,   86,   86,  105,   86,  144,  161,  157,  158,
    811       110,  159,  204,  261,  162,  262,   86,  179,  107,  228,
    812       163,  108,  102,  180,  111,  111,  111,  111,  111,  111,
    813 
    814        86,  168,   86,  169,  194,   86,   86,   86,  205,  164,
    815        86,  105,  170,  165,  112,  229,  177,   86,  166,  186,
    816       113,  281,  167,  178,  269,   86,  114,  187,  191,  182,
    817       183,  142,  105,  261,  188,  262,  143,  284,  115,  184,
    818        86,   86,  185,  198,  199,  171,  113,  124,  198,  189,
    819       270,  125,  126,  172,  127,  173,  128,  129,  174,  130,
    820       248,  131,  175,  256,  200,  200,  200,  200,  200,  200,
    821       132,  133,  134,  261,   86,  262,   86,  144,  195,   80,
    822        81,   81,   81,  195,  249,  280,  196,  257,   86,   86,
    823       135,  190,   86,  136,   79,   80,   81,   81,   81,   79,
    824 
    825        81,   80,   81,   81,   81,   81,   81,   80,   82,   82,
    826        82,   81,  261,  305,  262,  240,  240,  240,  240,  246,
    827       137,  138,  207,  208,   86,  247,  254,  207,   86,  209,
    828       247,  261,  255,  262,  209,   98,   98,   98,   98,   98,
    829        98,  263,  882,  210,  210,  210,  210,  241,  246,  308,
    830       882,  247,  263,  261,  209,  262,  247,  102,  255,  104,
    831       104,  104,  104,  104,  104,   86,  261,  239,  262,  211,
    832       882,  261,  209,  262,   86,  255,  105,  209,  209,  882,
    833       276,  209,  209,   86,  253,  264,  261,  277,  262,  209,
    834       296,  242,  209,  254,  209,  212,  209,  105,  213,  215,
    835 
    836       261,  255,  262,  216,  217,  283,   86,  882,  218,  219,
    837       243,  220,  243,  221,   86,  244,  244,  244,  244,  244,
    838       244,   86,  222,  223,  224,  261,  265,  262,  142,  306,
    839        86,   86,  278,  143,   86,   86,  285,  286,  287,  279,
    840       288,  289,  225,   86,  290,  226,  291,  245,  282,   86,
    841        86,  292,  293,  294,   86,  295,  297,  882,  298,  301,
    842        86,   86,  307,   86,  299,  300,  309,  303,   86,   86,
    843       304,   86,  302,  227,  231,  231,  231,  231,  231,  231,
    844        86,   86,   86,  312,  310,  311,  313,   86,   86,   86,
    845       232,  233,   86,  234,  235,   86,  142,   86,  314,   86,
    846 
    847       321,  315,  330,   86,  320,   86,  236,  318,   86,  316,
    848       317,  232,  233,  232,  319,  325,  234,   86,  235,  322,
    849        86,   86,   86,  331,  333,  328,  332,  629,  326,  323,
    850       324,   86,  207,  208,  337,  335,  338,  207,  365,   86,
    851       329,  342,  334,  336,  339,  327,  195,   80,   81,   81,
    852        81,  195,  198,  199,  196,   86,  882,  198,  198,  199,
    853       356,  365,  357,  198,  340,  199,  356,  343,  357,  340,
    854       356,  341,  357,  200,  200,  200,  200,  200,  200,  200,
    855       200,  200,  200,  200,  200,  200,  200,  200,  200,  200,
    856       200,  348,  348,  348,  348,  357,  357,  356,   86,  357,
    857 
    858       358,  356,  356,  357,  357,  356,  359,  357,  356,  356,
    859       357,  357,  356,  356,  357,  357,  369,  365,  403,  366,
    860       369,  366,   86,  349,  367,  367,  367,  367,  367,  367,
    861       882,  232,  233,   86,  234,  235,  261,  369,  262,  369,
    862       365,  261,  405,  262,  369,  104,  104,  104,  104,  104,
    863       104,  398,  232,  233,  232,  374,  368,  234,   86,  235,
    864        86,   86,  105,   86,  371,  244,  244,  244,  244,  244,
    865       244,  384,  386,  397,   86,   86,  399,  253,  401,  400,
    866       402,  374,   86,  105,  372,  372,  372,  372,  372,  372,
    867       104,  104,  104,  104,  104,  104,  377,  384,  387,   86,
    868 
    869       232,   86,   86,  234,  235,  243,  404,  243,  411,   86,
    870       244,  244,  244,  244,  244,  244,  373,  410,  379,   86,
    871       380,  232,  253,  232,  381,  409,  234,  419,  235,   86,
    872       382,  111,  111,  111,  111,  111,  111,   86,   86,   86,
    873        86,   86,  383,   86,  412,  415,  380,   86,  416,   86,
    874       381,   86,  406,   86,  413,  414,  417,   86,  407,  408,
    875       422,   86,  421,  258,   86,  420,   86,   86,  418,  424,
    876        86,  423,  428,   86,  426,  427,  430,   86,  429,  425,
    877        86,   86,   86,   86,   86,  431,  432,  433,   86,  437,
    878        86,  435,   86,  438,   86,  439,  434,   86,  436,   86,
    879 
    880        86,   86,   86,   86,   86,   86,   86,  443,   86,   86,
    881       444,  441,  440,  446,   86,  442,  445,  451,   86,   86,
    882       142,  450,   86,   86,  447,  449,  448,  456,  452,   86,
    883        86,  459,  453,   86,  494,  460,  454,  455,  340,  199,
    884       457,  199,  458,  340,  356,  341,  357,  197,  461,  209,
    885       209,  209,  209,  348,  348,  348,  348,  356,  495,  357,
    886        86,   86,   86,   86,  367,  367,  367,  367,  367,  367,
    887       366,  509,  366,  514,   86,  367,  367,  367,  367,  367,
    888       367,  471,  482,  482,  482,  482,  482,  482,  231,  231,
    889       231,  231,  231,  231,   86,   86,  516,   86,  232,  486,
    890 
    891        86,  234,  235,  240,  240,  240,  240,  104,  104,  487,
    892       489,  510,  486,  512,  483,  377,  490,  545,  490,  232,
    893       370,  232,  488,   86,  234,  486,  235,  372,  372,  372,
    894       372,  372,  372,   86,  882,  371,  489,  379,  486,  380,
    895        86,  525,  490,  381,  490,  491,  529,  491,  511,  382,
    896       492,  492,  492,  492,  492,  492,  379,   86,  380,  373,
    897        86,  383,  381,   86,   86,  380,  513,   86,  496,  381,
    898        86,   86,  515,  517,   86,   86,  519,   86,   86,   86,
    899       383,   86,  493,  518,  380,   86,  526,  521,  381,  520,
    900        86,  522,  523,  524,  527,   86,  531,  532,  530,   86,
    901 
    902        86,  528,   86,   86,   86,  533,   86,   86,   86,  534,
    903        86,  535,  538,  541,   86,  543,  539,   86,   86,   86,
    904        86,  536,   86,  542,  537,  544,   86,  540,   86,  551,
    905        86,   86,  547,   86,  549,   86,  546,   86,   86,   86,
    906       548,   86,  550,  552,   86,   86,  558,   86,   86,   86,
    907       555,  553,  554,  556,  560,  561,  559,  557,   86,   86,
    908       567,  566,   86,  716,  563,  562,  199,  564,   86,  568,
    909       486,  569,  570,  209,  209,  209,  209,  565,  482,  482,
    910       482,  482,  482,  482,  372,  372,  372,  372,  372,  372,
    911       616,   86,  486,  486,  232,  592,  486,  234,  235,  588,
    912 
    913        86,  588,  487,  591,  589,  589,  589,  589,  589,  589,
    914       483,  614,   86,  612,   86,  232,  484,  232,  486,  486,
    915       234,  592,  235,  492,  492,  492,  492,  492,  492,  611,
    916        86,   86,   86,   86,  621,  620,  590,  593,  593,  593,
    917       593,  593,  593,   86,  615,  613,  617,   86,  618,   86,
    918        86,   86,   86,  594,  626,  882,  595,  596,  491,  882,
    919       491,  619,  622,  492,  492,  492,  492,  492,  492,  597,
    920       623,   86,   86,  624,  594,   86,  594,   86,   86,  595,
    921       625,  596,   86,  627,   86,   86,  630,   86,  628,  635,
    922       634,   86,   86,  633,   86,   86,  636,   86,   86,  632,
    923 
    924       631,   86,   86,  641,   86,   86,   86,   86,   86,  638,
    925       642,   86,  639,  640,   86,   86,  644,  637,   86,  643,
    926       645,  646,   86,  647,  648,  652,   86,  651,   86,  650,
    927        86,  649,   86,  656,  653,  658,   86,  655,  654,   86,
    928        86,   86,   86,   86,  657,  659,   86,   86,  682,  660,
    929       682,   86,  696,  695,  700,  662,  749,  661,  482,  482,
    930       482,  482,  482,  482,  589,  589,  589,  589,  589,  589,
    931       588,  682,  588,  682,   86,  589,  589,  589,  589,  589,
    932       589,  593,  593,  593,  593,  593,  593,  697,   86,   86,
    933       587,  680,  680,  680,  680,  680,  680,  683,   86,   86,
    934 
    935        86,  683,   86,  693,   86,  698,   86,  594,  701,  703,
    936       595,  596,  699,  597,   86,   86,  694,  704,  683,  702,
    937       683,  705,   86,  681,   86,  683,   86,  712,  594,  706,
    938       594,   86,   86,  595,  710,  596,   86,  707,   86,  708,
    939        86,   86,   86,  711,   86,   86,  709,  713,   86,  715,
    940       718,   86,   86,   86,   86,   86,  714,   86,   86,   86,
    941       717,  722,  726,   86,  719,  723,  727,  720,   86,   86,
    942       721,   86,  725,  729,   86,  857,  882,  728,  724,  745,
    943       730,  748,   86,  747,  731,  680,  680,  680,  680,  680,
    944       680,  593,  593,  593,  593,  593,  593,   86,   86,   86,
    945 
    946        86,  594,  750,  751,  595,  596,   86,  746,   86,  752,
    947        86,   86,  755,  759,  754,   86,  753,  681,  757,  756,
    948       762,   86,  594,  684,  594,   86,   86,  595,  760,  596,
    949       761,   86,  758,   86,  763,   86,   86,   86,   86,  764,
    950        86,   86,   86,  765,   86,   86,  766,  769,   86,   86,
    951       767,   86,   86,   86,  768,   86,   86,  774,  790,   86,
    952       775,   86,  771,  770,   86,  792,  772,  791,   86,  773,
    953       680,  680,  680,  680,  680,  680,  788,   86,  789,   86,
    954       796,  794,  793,  798,   86,   86,   86,  799,  800,   86,
    955        86,   86,  797,  801,  795,   86,   86,   86,  802,  803,
    956 
    957        86,   86,  738,   86,  804,   86,  823,   86,   86,   86,
    958        86,  825,  826,  805,  806,  828,   86,   86,   86,  822,
    959       829,  821,   86,   86,  820,  827,  831,  824,   86,   86,
    960        86,  832,   86,   86,  834,   86,  846,   86,  830,  833,
    961        86,  847,  845,  844,   86,  835,   86,  850,   86,   86,
    962        86,  852,  853,   86,   86,  848,   86,  860,   86,  854,
    963        86,  849,  855,  851,   86,  858,   86,   86,  861,  859,
    964       863,  862,   86,   86,   86,  864,  865,   86,   86,   86,
    965       866,  868,  870,   86,   86,   86,  871,  869,   86,  867,
    966        86,   86,   86,   86,   86,   86,  882,   86,  882,  875,
    967 
    968       874,  882,  856,   86,  876,   86,  872,  881,   86,  873,
    969        86,  879,   86,  882,  877,  878,  882,  880,   68,   68,
    970        68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
    971        68,   74,   74,   74,   74,   74,   74,   74,   74,   74,
    972        74,   74,   74,   74,   77,   77,   77,   77,   77,   77,
    973        77,   77,   77,   77,   77,   77,   77,   85,  843,  882,
    974        85,  842,   85,   85,   85,   85,   85,  139,  882,  840,
    975       882,  139,  139,  139,  139,  139,  139,  197,  197,  197,
    976       197,  197,  197,  197,  197,  197,  197,  197,  197,  197,
    977       202,  839,  882,  202,  838,  202,  202,  202,  202,  202,
    978 
    979       206,  882,  206,  206,  837,  206,  206,  206,  206,  206,
    980       206,   86,  206,  214,   86,   86,  214,  214,  214,  214,
    981       214,  214,  214,  214,  882,  214,  237,  237,  237,  237,
    982       237,  237,  237,  237,  237,  237,  237,  237,  237,  251,
    983       251,  819,  251,  882,  818,  816,  251,  267,  882,  814,
    984       267,  882,  267,  267,  267,  267,  267,  271,  812,  271,
    985       882,  810,  808,  271,  273,   86,  273,   86,   86,   86,
    986       273,  344,   86,  344,   86,   86,   86,  344,  346,   86,
    987       346,   86,   86,   86,  346,  350,  882,  350,  787,  785,
    988       882,  350,  352,  882,  352,  782,  780,  778,  352,  354,
    989 
    990        86,  354,   86,   86,   86,  354,  361,   86,  361,   86,
    991        86,   86,  361,  363,  744,  363,  741,  740,  738,  363,
    992       237,  237,  237,  237,  237,  237,  237,  237,  237,  237,
    993       237,  237,  237,  376,  203,  376,  378,  378,  734,  378,
    994       378,  378,  733,  378,  251,  251,  664,  251,  388,   86,
    995       388,   86,   86,   86,  388,  390,   86,  390,   86,   86,
    996        86,  390,  392,   86,  392,   86,   86,   86,  392,  271,
    997        86,  271,  394,   86,  394,   86,  691,  690,  394,  273,
    998       688,  273,   85,  686,  684,   85,  591,   85,   85,   85,
    999        85,   85,  197,  197,  197,  197,  197,  197,  197,  197,
    1000 
    1001       197,  197,  197,  197,  197,  462,  462,  462,  462,  462,
    1002       462,  462,  462,  462,  462,  462,  462,  462,  463,  679,
    1003       463,  678,  676,  674,  463,  465,  672,  465,  670,  668,
    1004       666,  465,  467,  664,  467,   86,   86,   86,  467,  344,
    1005        86,  344,  469,   86,  469,   86,   86,   86,  469,  346,
    1006        86,  346,  472,  610,  472,  608,  606,  604,  472,  350,
    1007       602,  350,  474,  600,  474,  496,  598,  598,  474,  352,
    1008       587,  352,  476,  586,  476,  584,  477,  477,  476,  354,
    1009       582,  354,  478,  580,  478,  578,  576,  574,  478,  361,
    1010       572,  361,  480,   86,  480,   86,   86,   86,  480,  363,
    1011 
    1012        86,  363,  485,   86,  485,   86,  485,   86,  485,  376,
    1013       508,  376,  506,  376,  504,  376,  378,  378,  502,  378,
    1014       378,  378,  500,  378,  497,  498,  497,  484,  481,  479,
    1015       497,  499,  357,  499,  357,  477,  475,  499,  501,  473,
    1016       501,  470,  468,  466,  501,  388,  464,  388,  503,   86,
    1017       503,   86,   86,  396,  503,  390,  395,  390,  505,  393,
    1018       505,  391,  389,  268,  505,  392,  263,  392,  507,  262,
    1019       507,  385,  385,  250,  507,  394,  375,  394,   85,  375,
    1020       238,   85,  370,   85,   85,   85,   85,   85,  462,  462,
    1021       462,  462,  462,  462,  462,  462,  462,  462,  462,  462,
    1022 
    1023       462,  571,  364,  571,  362,  360,  356,  571,  463,  355,
    1024       463,  573,  353,  573,  351,  347,  345,  573,  465,  203,
    1025       465,  575,  199,  575,   86,  275,  274,  575,  467,  272,
    1026       467,  577,  268,  577,  263,  266,  263,  577,  469,  261,
    1027       469,  579,  260,  579,  259,  238,  230,  579,  472,   84,
    1028       472,  581,   84,  581,   86,  203,  201,  581,  474,   84,
    1029       474,  476,  121,  476,  116,   86,  882,  476,  583,   69,
    1030       583,   69,  882,  882,  583,  478,  882,  478,  585,  882,
    1031       585,  882,  882,  882,  585,  480,  882,  480,  485,  882,
    1032       485,  882,  485,  882,  485,  378,  882,  378,  882,  882,
    1033 
    1034       882,  378,  599,  882,  599,  882,  882,  882,  599,  497,
    1035       882,  497,  601,  882,  601,  882,  882,  882,  601,  499,
    1036       882,  499,  603,  882,  603,  882,  882,  882,  603,  501,
    1037       882,  501,  605,  882,  605,  882,  882,  882,  605,  503,
    1038       882,  503,  607,  882,  607,  882,  882,  882,  607,  505,
    1039       882,  505,  609,  882,  609,  882,  882,  882,  609,  507,
    1040       882,  507,   85,  882,  882,   85,  882,   85,   85,   85,
    1041        85,   85,  663,  663,  663,  663,  663,  663,  663,  663,
    1042       663,  663,  663,  663,  663,  665,  882,  665,  882,  882,
    1043       882,  665,  571,  882,  571,  667,  882,  667,  882,  882,
    1044 
    1045       882,  667,  573,  882,  573,  669,  882,  669,  882,  882,
    1046       882,  669,  575,  882,  575,  671,  882,  671,  882,  882,
    1047       882,  671,  577,  882,  577,  673,  882,  673,  882,  882,
    1048       882,  673,  579,  882,  579,  675,  882,  675,  882,  882,
    1049       882,  675,  581,  882,  581,  677,  882,  677,  882,  882,
    1050       882,  677,  583,  882,  583,   85,  882,   85,  882,  882,
    1051       882,   85,  585,  882,  585,  485,  882,  485,  882,  882,
    1052       882,  485,  685,  882,  685,  882,  882,  882,  685,  599,
    1053       882,  599,  687,  882,  687,  882,  882,  882,  687,  601,
    1054       882,  601,  689,  882,  689,  882,  882,  882,  689,  603,
    1055 
    1056       882,  603,  139,  882,  139,  882,  882,  882,  139,  605,
    1057       882,  605,  692,  882,  692,  607,  882,  607,   85,  882,
    1058       882,   85,  882,   85,   85,   85,   85,   85,  609,  882,
    1059       609,  663,  663,  663,  663,  663,  663,  663,  663,  663,
    1060       663,  663,  663,  663,  732,  882,  732,  882,  882,  882,
    1061       732,  665,  882,  665,  202,  882,  202,  882,  882,  882,
    1062       202,  667,  882,  667,  735,  882,  735,  669,  882,  669,
    1063       202,  882,  882,  202,  882,  202,  202,  202,  202,  202,
    1064       671,  882,  671,  736,  882,  736,  673,  882,  673,  675,
    1065       882,  675,  737,  882,  737,  677,  882,  677,   85,  882,
    1066 
    1067        85,  739,  882,  739,  882,  882,  882,  739,  685,  882,
    1068       685,  267,  882,  267,  882,  882,  882,  267,  687,  882,
    1069       687,  742,  882,  742,  689,  882,  689,  139,  882,  139,
    1070       743,  882,  743,  882,  882,  882,  743,   85,  882,  882,
    1071        85,  882,   85,   85,   85,   85,   85,  776,  882,  776,
    1072       732,  882,  732,  202,  882,  202,  777,  882,  777,  882,
    1073       882,  882,  777,  779,  882,  779,  882,  882,  882,  779,
    1074       781,  882,  781,  882,  882,  882,  781,  783,  882,  783,
    1075       784,  882,  784,  882,  882,  882,  784,  786,  882,  786,
    1076       882,  882,  882,  786,  807,  882,  807,  882,  882,  882,
    1077 
    1078       807,  809,  882,  809,  882,  882,  882,  809,  811,  882,
    1079       811,  882,  882,  882,  811,  813,  882,  813,  882,  882,
    1080       882,  813,  815,  882,  815,  882,  882,  882,  815,  817,
    1081       882,  817,  882,  882,  882,  817,  609,  882,  609,  882,
    1082       882,  882,  609,  836,  882,  836,  882,  882,  882,  836,
    1083       671,  882,  671,  882,  882,  882,  671,  675,  882,  675,
    1084       882,  882,  882,  675,   85,  882,   85,  882,  882,  882,
    1085        85,  841,  882,  841,  882,  882,  882,  841,  139,  882,
    1086       139,  882,  882,  882,  139,  202,  882,  202,  882,  882,
    1087       882,  202,   11,  882,  882,  882,  882,  882,  882,  882,
    1088 
    1089       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    1090       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    1091       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    1092       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    1093       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    1094       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    1095       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    1096       882,  882,  882,  882,  882,  882,  882
     796       71,   71,   71,   71,   71,   71,   71,   71,   72,   72,
     797       72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
     798       72,   72,   72,   71,   73,   71,   71,   72,   74,   72,
     799       72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
     800       72,   72,   72,   72,   72,   72,   72,   72,   72,   72,
     801       72,   72,   72,   71,   71,   71,   71,   76,   76,   79,
     802       79,  123,  124,   90,  141,   79,   79,   87,   76,   76,
     803       80,   81,   82,   82,   82,   80,   82,   81,   83,   83,
     804
     805       83,   82,   91,   93,  142,  146,   87,   98,   95,   99,
     806       99,   99,   99,   99,   99,  252,  887,   94,  100,   85,
     807       96,   97,   85,  101,  177,  118,   77,   77,   77,   77,
     808      143,  147,   87,  102,  103,  144,  104,  104,  104,  104,
     809      105,  105,  119,   87,  120,  121,  148,   87,  149,  254,
     810      260,   87,  161,  106,  427,  194,  107,   87,   87,  150,
     811      151,  152,  108,  109,  153,  154,  183,  155,  110,   87,
     812      156,  157,   87,   87,  106,   87,  145,  162,  158,  159,
     813      111,  160,   87,  195,  163,   87,   87,  180,  108,  206,
     814      164,  109,  103,  181,  112,  112,  112,  112,  112,  112,
     815
     816       87,  169,  305,  170,  182,   87,   87,   87,   87,  165,
     817       87,  106,  171,  166,  113,  207,  178,   87,  167,  188,
     818      114,  283,  168,  179,  230,   87,  115,  189,  193,  184,
     819      185,  143,  106,  196,  190,  263,  144,  264,  116,  186,
     820       87,  298,  187,  200,  201,  172,  114,  125,  200,  191,
     821      231,  126,  127,  173,  128,  174,  129,  130,  175,  131,
     822      250,  132,  176,  258,  202,  202,  202,  202,  202,  202,
     823      133,  134,  135,  263,   87,  264,   87,  145,  197,   81,
     824       82,   82,   82,  197,  251,  282,  198,  259,   87,   87,
     825      136,  192,   87,  137,   80,   81,   82,   82,   82,   80,
     826
     827       82,   81,   82,   82,   82,   82,   82,   81,   83,   83,
     828       83,   82,  263,  307,  264,  242,  242,  242,  242,  248,
     829      138,  139,  209,  210,   87,  249,  256,  209,   87,  211,
     830      249,  263,  257,  264,  211,   99,   99,   99,   99,   99,
     831       99,  265,  887,  212,  212,  212,  212,  243,  248,  310,
     832      887,  249,  265,  263,  211,  264,  249,  103,  257,  105,
     833      105,  105,  105,  105,  105,   87,  263,  241,  264,  213,
     834      887,  263,  211,  264,   87,  257,  106,  211,  211,  887,
     835      271,  211,  211,  280,  255,  266,  263,   87,  264,  211,
     836      404,  244,  211,  256,  211,  214,  211,  106,  215,  217,
     837
     838      263,  257,  264,  218,  219,  281,  272,  887,  220,  221,
     839      245,  222,  245,  223,   87,  246,  246,  246,  246,  246,
     840      246,   87,  224,  225,  226,  263,  267,  264,  263,  143,
     841      264,   87,  284,   87,  144,   87,  278,   87,   87,   87,
     842       87,   87,  227,  279,  300,  228,   87,  247,   87,  286,
     843      306,  303,   87,  285,   87,  299,   87,   87,   87,  301,
     844      302,  323,  308,  311,  304,   87,   87,  314,  309,   87,
     845      313,  315,   87,  229,  233,  233,  233,  233,  233,  233,
     846       87,  312,   87,  316,  318,   87,  317,   87,   87,   87,
     847      234,  235,   87,  236,  237,  627,  324,  320,  325,  360,
     848
     849      329,  361,  319,  328,  321,  322,  238,  143,  326,  327,
     850       87,  234,  235,  234,   87,  331,  236,  330,  237,  287,
     851      288,  289,   87,  290,  291,   87,   87,  292,   87,  293,
     852      332,  346,   87,  335,  294,  295,  296,   87,  297,  333,
     853      709,   87,  334,   87,  337,  341,  360,  342,  361,  360,
     854       87,  361,  378,  338,  339,  336,  343,  347,  360,  360,
     855      361,  361,  340,  197,   81,   82,   82,   82,  197,  200,
     856      201,  198,  209,  210,  200,  200,  201,  209,  378,   87,
     857      200,  344,  201,   87,  362,  360,  344,  361,  345,  434,
     858      202,  202,  202,  202,  202,  202,  202,  202,  202,  202,
     859
     860      202,  202,  202,  202,  202,  202,  202,  202,  352,  352,
     861      352,  352,  361,  361,  360,  363,  361,  360,  360,  361,
     862      361,  369,  887,  369,  143,  360,  360,  361,  361,  370,
     863       87,  370,  388,   87,  371,  371,  371,  371,  371,  371,
     864      353,  373,  390,  401,  369,  373,  369,   87,   87,  234,
     865      235,  402,  236,  237,   87,  263,  375,  264,  388,  263,
     866       87,  264,  373,  416,  373,  403,  372,   87,  391,  373,
     867      234,  235,  234,   87,  407,  236,   87,  237,  105,  105,
     868      105,  105,  105,  105,  246,  246,  246,  246,  246,  246,
     869      405,  245,   87,  245,  414,  106,  246,  246,  246,  246,
     870
     871      246,  246,  105,  105,  105,  105,  105,  105,   87,   87,
     872      255,   87,  409,  406,  408,   87,  106,  376,  376,  376,
     873      376,  376,  376,  381,  421,   87,  112,  112,  112,  112,
     874      112,  112,  887,  234,  255,   87,  236,  237,  413,   87,
     875       87,  417,  418,   87,  419,  383,   87,  384,   87,  377,
     876       87,  385,  420,  425,  234,   87,  234,  386,  260,  236,
     877       87,  237,  422,   87,  423,  410,  415,   87,   87,  387,
     878       87,  411,  412,  384,   87,  428,  426,  385,  424,  432,
     879       87,  429,   87,   87,   87,  433,  438,   87,   87,  430,
     880      431,   87,  436,  437,   87,   87,  441,  439,   87,  440,
     881
     882      442,  435,   87,  443,   87,   87,   87,   87,   87,   87,
     883       87,   87,   87,  445,   87,  447,  448,   87,   87,   87,
     884      444,  449,  446,  451,   87,   87,  450,  456,   87,  455,
     885      452,  454,  453,   87,   87,   87,  457,  462,  461,   87,
     886      458,  459,  460,  465,  466,   87,  201,  464,  344,  201,
     887      887,  463,  199,  344,  500,  345,  211,  211,  211,  211,
     888      467,  352,  352,  352,  352,  360,  360,  361,  361,  371,
     889      371,  371,  371,  371,  371,  370,  492,  370,  501,   87,
     890      371,  371,  371,  371,  371,  371,  493,   87,  477,  488,
     891      488,  488,  488,  488,  488,  233,  233,  233,  233,  233,
     892
     893      233,   87,  492,  516,  496,  234,  492,   87,  236,  237,
     894      242,  242,  242,  242,  105,  105,  494,  495,  515,  381,
     895      518,  489,  495,  496,   87,   87,  234,  374,  234,   87,
     896      496,  236,  492,  237,  376,  376,  376,  376,  376,  376,
     897      887,  383,  375,  384,  517,   87,  522,  385,  545,  496,
     898      497,   87,  497,  386,  519,  498,  498,  498,  498,  498,
     899      498,   87,  383,   87,  384,  387,  377,   87,  385,  384,
     900       87,   87,  520,  385,  502,   87,  521,   87,   87,  523,
     901       87,   87,   87,   87,  524,  526,  387,  499,  532,   87,
     902      384,  525,   87,  527,  385,   87,  531,  528,  529,  530,
     903
     904       87,  535,   87,  536,  533,   87,   87,  539,   87,   87,
     905       87,  534,   87,  537,   87,   87,   87,  541,  546,  538,
     906      540,   87,   87,  544,   87,  548,   87,   87,   87,  542,
     907      547,  543,   87,   87,  550,   87,  549,  556,   87,  552,
     908       87,   87,  554,   87,  551,   87,   87,  559,  553,   87,
     909      557,   87,  555,   87,   87,   87,  492,   87,  558,  565,
     910      564,  560,  566,  561,  567,  562,   87,   87,  563,   87,
     911       87,  201,  573,  568,   87,  571,  570,  577,  569,  599,
     912      574,  492,  492,  576,   87,  572,  211,  211,  211,  211,
     913      718,  493,  575,  488,  488,  488,  488,  488,  488,  376,
     914
     915      376,  376,  376,  376,  376,  599,  623,  492,  492,  234,
     916       87,   87,  236,  237,  595,   87,  595,   87,  598,  596,
     917      596,  596,  596,  596,  596,  489,  620,  618,  619,   87,
     918      234,  490,  234,   87,  492,  236,   87,  237,  498,  498,
     919      498,  498,  498,  498,   87,   87,  622,  626,   87,  621,
     920       87,  597,  600,  600,  600,  600,  600,  600,  624,   87,
     921       87,   87,   87,  629,  625,  631,   87,  633,  601,  632,
     922      628,  602,  603,  497,  635,  497,   87,  636,  498,  498,
     923      498,  498,  498,  498,  604,  630,   87,  634,   87,  601,
     924       87,  601,   87,   87,  602,  637,  603,  642,  641,   87,
     925
     926       87,  640,   87,   87,   87,   87,   87,  639,  643,   87,
     927      638,  647,   87,   87,   87,   87,   87,  644,  648,  645,
     928       87,  646,   87,  654,   87,  650,   87,  653,   87,  649,
     929      651,  652,   87,  655,   87,   87,   87,   87,   87,  657,
     930      659,  664,  656,  661,  660,  658,   87,   87,  666,  663,
     931       87,   87,  688,   87,  688,  665,   87,  662,  488,  488,
     932      488,  488,  488,  488,  668,  702,  703,  667,  596,  596,
     933      596,  596,  596,  596,  595,  688,  595,  688,   87,  596,
     934      596,  596,  596,  596,  596,  689,   87,  721,   87,  689,
     935      594,  686,  686,  686,  686,  686,  686,  600,  600,  600,
     936
     937      600,  600,  600,  704,   87,   87,  689,  601,  689,  699,
     938      602,  603,  701,  689,   87,   87,   87,   87,   87,   87,
     939       87,   87,  700,  687,  706,   87,  707,   87,  601,  604,
     940      601,   87,  708,  602,  710,  603,   87,  705,  711,  716,
     941      712,  713,  715,   87,  714,   87,   87,   87,  717,   87,
     942       87,   87,   87,   87,   87,   87,   87,   87,  719,  724,
     943       87,  727,  732,   87,  722,  720,  731,   87,   87,  723,
     944       87,  736,  725,  726,  728,   87,  733,  730,  734,  735,
     945      729,  686,  686,  686,  686,  686,  686,  600,  600,  600,
     946      600,  600,  600,   87,   87,   87,  750,  601,   87,  754,
     947
     948      602,  603,   87,  751,   87,  753,   87,  756,   87,  757,
     949       87,   87,   87,  687,   87,  762,  759,  764,  601,  690,
     950      601,  752,  755,  602,  760,  603,  758,   87,   87,   87,
     951      767,  765,   87,   87,   87,  763,  761,  768,  766,   87,
     952      770,   87,   87,   87,   87,   87,  769,   87,   87,  771,
     953       87,   87,  774,   87,  772,   87,   87,   87,   87,  779,
     954       87,  795,  780,  773,   87,   87,   87,  775,  776,  777,
     955      797,  778,  686,  686,  686,  686,  686,  686,  793,   87,
     956      796,  794,   87,  800,   87,  801,  803,   87,   87,  798,
     957      804,  805,   87,   87,   87,   87,  799,  802,  807,  806,
     958
     959       87,   87,   87,  808,  743,   87,   87,   87,  809,  828,
     960       87,   87,   87,   87,  830,  831,   87,  810,  833,   87,
     961       87,   87,  834,   87,  811,  827,  826,   87,   87,  825,
     962      836,  837,  829,   87,  832,   87,   87,  839,   87,  840,
     963       87,   87,  835,   87,  838,  850,   87,  887,   87,  851,
     964      852,  855,   87,  856,  849,  857,   87,   87,  853,  858,
     965       87,   87,   87,   87,  854,   87,  859,  864,  865,  860,
     966      863,   87,   87,  866,   87,  868,  867,  869,   87,   87,
     967       87,  870,   87,   87,   87,  873,   87,  875,   87,  876,
     968       87,   87,   87,  874,   87,  872,   87,   87,   87,  871,
     969
     970       87,  880,   87,  887,  862,  887,  879,  881,  887,  887,
     971      877,  878,  886,  887,  861,  884,   87,   87,  882,  883,
     972       87,   87,  885,   69,   69,   69,   69,   69,   69,   69,
     973       69,   69,   69,   69,   69,   69,   75,   75,   75,   75,
     974       75,   75,   75,   75,   75,   75,   75,   75,   75,   78,
     975       78,   78,   78,   78,   78,   78,   78,   78,   78,   78,
     976       78,   78,   86,   87,  887,   86,  887,   86,   86,   86,
     977       86,   86,  140,  848,  887,  847,  140,  140,  140,  140,
     978      140,  140,  199,  199,  199,  199,  199,  199,  199,  199,
     979      199,  199,  199,  199,  199,  204,  887,  845,  204,  887,
     980
     981      204,  204,  204,  204,  204,  208,  844,  208,  208,  887,
     982      208,  208,  208,  208,  208,  208,  843,  208,  216,  887,
     983      842,  216,  216,  216,  216,  216,  216,  216,  216,   87,
     984      216,  239,  239,  239,  239,  239,  239,  239,  239,  239,
     985      239,  239,  239,  239,  253,  253,   87,  253,   87,  887,
     986      824,  253,  269,  887,  823,  269,  821,  269,  269,  269,
     987      269,  269,  273,  887,  273,  819,  887,  817,  273,  275,
     988      887,  275,  815,  813,   87,  275,  348,   87,  348,   87,
     989       87,   87,  348,  350,   87,  350,   87,   87,   87,  350,
     990      354,   87,  354,   87,   87,  887,  354,  356,  792,  356,
     991
     992      790,  887,  887,  356,  358,  787,  358,  785,  783,   87,
     993      358,  365,   87,  365,   87,   87,   87,  365,  367,   87,
     994      367,   87,  749,  746,  367,  239,  239,  239,  239,  239,
     995      239,  239,  239,  239,  239,  239,  239,  239,  380,  745,
     996      380,  382,  382,  743,  382,  382,  382,  205,  382,  253,
     997      253,  739,  253,  392,  738,  392,  670,   87,   87,  392,
     998      394,   87,  394,   87,   87,   87,  394,  396,   87,  396,
     999       87,   87,   87,  396,  273,   87,  273,  398,   87,  398,
     1000       87,   87,   87,  398,  275,  697,  275,   86,  696,  694,
     1001       86,  692,   86,   86,   86,   86,   86,  199,  199,  199,
     1002
     1003      199,  199,  199,  199,  199,  199,  199,  199,  199,  199,
     1004      468,  468,  468,  468,  468,  468,  468,  468,  468,  468,
     1005      468,  468,  468,  469,  690,  469,  598,  685,  684,  469,
     1006      471,  682,  471,  680,  678,  676,  471,  473,  674,  473,
     1007      672,  670,   87,  473,  348,   87,  348,  475,   87,  475,
     1008       87,   87,   87,  475,  350,   87,  350,  478,   87,  478,
     1009       87,   87,   87,  478,  354,  617,  354,  480,  615,  480,
     1010      613,  611,  609,  480,  356,  607,  356,  482,  502,  482,
     1011      605,  605,  594,  482,  358,  593,  358,  484,  591,  484,
     1012      483,  483,  589,  484,  365,  587,  365,  486,  585,  486,
     1013
     1014      583,  581,  579,  486,  367,   87,  367,  491,   87,  491,
     1015       87,  491,   87,  491,  380,   87,  380,   87,  380,   87,
     1016      380,  382,  382,   87,  382,  382,  382,  514,  382,  503,
     1017      512,  503,  510,  508,  506,  503,  505,  504,  505,  490,
     1018      487,  485,  505,  507,  361,  507,  361,  483,  481,  507,
     1019      392,  479,  392,  509,  476,  509,  474,  472,  470,  509,
     1020      394,   87,  394,  511,   87,  511,   87,  400,  399,  511,
     1021      396,  397,  396,  513,  395,  513,  393,  270,  265,  513,
     1022      398,  264,  398,   86,  389,  389,   86,  252,   86,   86,
     1023       86,   86,   86,  468,  468,  468,  468,  468,  468,  468,
     1024
     1025      468,  468,  468,  468,  468,  468,  578,  379,  578,  379,
     1026      240,  374,  578,  469,  368,  469,  580,  366,  580,  364,
     1027      360,  359,  580,  471,  357,  471,  582,  355,  582,  351,
     1028      349,  205,  582,  473,  201,  473,  584,   87,  584,  277,
     1029      276,  274,  584,  475,  270,  475,  586,  265,  586,  268,
     1030      265,  263,  586,  478,  262,  478,  588,  261,  588,  240,
     1031      232,   85,  588,  480,   85,  480,  482,   87,  482,  205,
     1032      203,   85,  482,  590,  122,  590,  117,   87,  887,  590,
     1033      484,   70,  484,  592,   70,  592,  887,  887,  887,  592,
     1034      486,  887,  486,  491,  887,  491,  887,  491,  887,  491,
     1035
     1036      382,  887,  382,  887,  887,  887,  382,  606,  887,  606,
     1037      887,  887,  887,  606,  503,  887,  503,  608,  887,  608,
     1038      887,  887,  887,  608,  505,  887,  505,  610,  887,  610,
     1039      887,  887,  887,  610,  507,  887,  507,  612,  887,  612,
     1040      887,  887,  887,  612,  509,  887,  509,  614,  887,  614,
     1041      887,  887,  887,  614,  511,  887,  511,  616,  887,  616,
     1042      887,  887,  887,  616,  513,  887,  513,   86,  887,  887,
     1043       86,  887,   86,   86,   86,   86,   86,  669,  669,  669,
     1044      669,  669,  669,  669,  669,  669,  669,  669,  669,  669,
     1045      671,  887,  671,  887,  887,  887,  671,  578,  887,  578,
     1046
     1047      673,  887,  673,  887,  887,  887,  673,  580,  887,  580,
     1048      675,  887,  675,  887,  887,  887,  675,  582,  887,  582,
     1049      677,  887,  677,  887,  887,  887,  677,  584,  887,  584,
     1050      679,  887,  679,  887,  887,  887,  679,  586,  887,  586,
     1051      681,  887,  681,  887,  887,  887,  681,  588,  887,  588,
     1052      683,  887,  683,  887,  887,  887,  683,  590,  887,  590,
     1053       86,  887,   86,  887,  887,  887,   86,  592,  887,  592,
     1054      491,  887,  491,  887,  887,  887,  491,  691,  887,  691,
     1055      887,  887,  887,  691,  606,  887,  606,  693,  887,  693,
     1056      887,  887,  887,  693,  608,  887,  608,  695,  887,  695,
     1057
     1058      887,  887,  887,  695,  610,  887,  610,  140,  887,  140,
     1059      887,  887,  887,  140,  612,  887,  612,  698,  887,  698,
     1060      614,  887,  614,   86,  887,  887,   86,  887,   86,   86,
     1061       86,   86,   86,  616,  887,  616,  669,  669,  669,  669,
     1062      669,  669,  669,  669,  669,  669,  669,  669,  669,  737,
     1063      887,  737,  887,  887,  887,  737,  671,  887,  671,  204,
     1064      887,  204,  887,  887,  887,  204,  673,  887,  673,  740,
     1065      887,  740,  675,  887,  675,  204,  887,  887,  204,  887,
     1066      204,  204,  204,  204,  204,  677,  887,  677,  741,  887,
     1067      741,  679,  887,  679,  681,  887,  681,  742,  887,  742,
     1068
     1069      683,  887,  683,   86,  887,   86,  744,  887,  744,  887,
     1070      887,  887,  744,  691,  887,  691,  269,  887,  269,  887,
     1071      887,  887,  269,  693,  887,  693,  747,  887,  747,  695,
     1072      887,  695,  140,  887,  140,  748,  887,  748,  887,  887,
     1073      887,  748,   86,  887,  887,   86,  887,   86,   86,   86,
     1074       86,   86,  781,  887,  781,  737,  887,  737,  204,  887,
     1075      204,  782,  887,  782,  887,  887,  887,  782,  784,  887,
     1076      784,  887,  887,  887,  784,  786,  887,  786,  887,  887,
     1077      887,  786,  788,  887,  788,  789,  887,  789,  887,  887,
     1078      887,  789,  791,  887,  791,  887,  887,  887,  791,  812,
     1079
     1080      887,  812,  887,  887,  887,  812,  814,  887,  814,  887,
     1081      887,  887,  814,  816,  887,  816,  887,  887,  887,  816,
     1082      818,  887,  818,  887,  887,  887,  818,  820,  887,  820,
     1083      887,  887,  887,  820,  822,  887,  822,  887,  887,  887,
     1084      822,  616,  887,  616,  887,  887,  887,  616,  841,  887,
     1085      841,  887,  887,  887,  841,  677,  887,  677,  887,  887,
     1086      887,  677,  681,  887,  681,  887,  887,  887,  681,   86,
     1087      887,   86,  887,  887,  887,   86,  846,  887,  846,  887,
     1088      887,  887,  846,  140,  887,  140,  887,  887,  887,  140,
     1089      204,  887,  204,  887,  887,  887,  204,   11,  887,  887,
     1090
     1091      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1092      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1093      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1094      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1095      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1096      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1097      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1098      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1099      887,  887
    10971100    } ;
    10981101
    1099 static yyconst flex_int16_t yy_chk[2878] =
     1102static yyconst flex_int16_t yy_chk[2883] =
    11001103    {   0,
    11011104        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     
    11181121        5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
    11191122        5,    5,    5,    5,    5,    5,    5,    7,    8,    9,
    1120        10,   37,   37,   20,   39,    9,   10,  881,    7,    8,
     1123       10,   37,   37,   20,   39,    9,   10,  886,    7,    8,
    11211124       13,   13,   13,   13,   13,   13,   15,   15,   15,   15,
    11221125
    11231126       15,   15,   20,   25,   39,   42,   53,   28,   27,   28,
    1124        28,   28,   28,   28,   28,  108,  114,   25,   29,   25,
     1127       28,   28,   28,   28,   28,  109,  115,   25,   29,   25,
    11251128       27,   27,   27,   29,   53,   35,    7,    8,    9,   10,
    11261129       40,   42,   48,   29,   30,   40,   30,   30,   30,   30,
    1127        30,   30,   35,   61,   35,   35,   44,  880,   44,  108,
    1128       114,  872,   48,   30,   63,   61,   30,   56,   47,   45,
    1129        45,   45,   30,   30,   45,   45,   56,   45,   30,   55,
     1130       30,   30,   35,   62,   35,   35,   44,  302,   44,  109,
     1131      115,  885,   48,   30,  302,   62,   30,   57,   47,   45,
     1132       45,   45,   30,   30,   45,   45,   57,   45,   30,   55,
    11301133       45,   45,   49,   40,   30,   45,   40,   49,   45,   47,
    1131        30,   47,   72,  125,   49,  125,   51,   55,   30,   86,
     1134       30,   47,   56,   64,   49,  164,   51,   55,   30,   73,
    11321135       49,   30,   31,   55,   31,   31,   31,   31,   31,   31,
    11331136
    1134        50,   51,  871,   51,   63,  153,   54,   58,   72,   50,
    1135        60,   31,   51,   50,   31,   86,   54,   57,   50,   58,
    1136        31,  153,   50,   54,  141,  156,   31,   58,   60,   57,
    1137        57,   59,   31,  126,   58,  126,   59,  156,   31,   57,
    1138        52,  868,   57,   67,   67,   52,   31,   38,   67,   59,
    1139       141,   38,   38,   52,   38,   52,   38,   38,   52,   38,
    1140       107,   38,   52,  113,   67,   67,   67,   67,   67,   67,
    1141        38,   38,   38,  128,   59,  128,  152,   59,   66,   66,
    1142        66,   66,   66,   66,  107,  152,   66,  113,  867,  865,
    1143        38,   59,  165,   38,   79,   79,   79,   79,   79,   79,
    1144 
    1145        81,   81,   81,   81,   81,   81,   82,   82,   82,   82,
    1146        82,   82,  131,  165,  131,  103,  103,  103,  103,  106,
    1147        38,   38,   76,   76,  864,  106,  112,   76,  168,   76,
    1148       110,  133,  112,  133,   76,  102,  102,  102,  102,  102,
    1149       102,  130,  103,   76,   76,   76,   76,  103,  110,  168,
    1150       109,  106,  129,  130,   76,  130,  110,  104,  112,  104,
    1151       104,  104,  104,  104,  104,  149,  129,  102,  129,   76,
    1152       103,  136,   76,  136,  158,  115,  104,   76,   76,  109,
    1153       149,   76,   76,  155,  109,  132,  132,  149,  132,   76,
    1154       158,  104,   76,  115,   76,   76,   76,  104,   76,   84,
    1155 
    1156       138,  115,  138,   84,   84,  155,  166,  109,   84,   84,
    1157       105,   84,  105,   84,  150,  105,  105,  105,  105,  105,
    1158       105,  151,   84,   84,   84,  134,  134,  134,  144,  166,
    1159       154,  157,  150,  144,  159,  167,  157,  157,  157,  151,
    1160       157,  157,   84,  161,  157,   84,  157,  105,  154,  160,
    1161       163,  157,  157,  157,  162,  157,  159,  857,  160,  162,
    1162       164,  169,  167,  170,  161,  161,  169,  163,  171,  172,
    1163       164,  144,  162,   84,   98,   98,   98,   98,   98,   98,
    1164       173,  174,  175,  171,  169,  170,  172,  179,  176,  185,
    1165        98,   98,  178,   98,   98,  180,  189,  182,  173,  187,
    1166 
    1167       180,  174,  185,  186,  179,  188,   98,  178,  181,  175,
    1168       176,   98,   98,   98,  178,  182,   98,  183,   98,  181,
    1169       184,  191,  190,  186,  188,  184,  187,  528,  183,  181,
    1170       181,  192,  207,  207,  191,  190,  191,  207,  232,  189,
    1171       184,  203,  189,  190,  192,  183,  195,  195,  195,  195,
    1172       195,  195,  196,  196,  195,  528,  856,  196,  198,  198,
    1173       216,  232,  216,  198,  200,  200,  217,  203,  217,  200,
    1174       218,  200,  218,  196,  196,  196,  196,  196,  196,  198,
    1175       198,  198,  198,  198,  198,  200,  200,  200,  200,  200,
    1176       200,  210,  210,  210,  210,  219,  220,  221,  282,  221,
    1177 
    1178       222,  222,  223,  222,  223,  224,  224,  224,  220,  219,
    1179       220,  219,  226,  227,  226,  227,  234,  235,  282,  233,
    1180       234,  233,  284,  210,  233,  233,  233,  233,  233,  233,
    1181       241,  239,  239,  277,  239,  239,  264,  234,  264,  234,
    1182       235,  265,  284,  265,  234,  242,  242,  242,  242,  242,
    1183       242,  277,  239,  239,  239,  246,  233,  239,  278,  239,
    1184       276,  280,  242,  279,  241,  243,  243,  243,  243,  243,
    1185       243,  254,  268,  276,  855,  281,  278,  242,  280,  279,
    1186       281,  246,  288,  242,  244,  244,  244,  244,  244,  244,
    1187       253,  253,  253,  253,  253,  253,  251,  254,  268,  287,
    1188 
    1189       244,  283,  286,  244,  244,  245,  283,  245,  288,  295,
    1190       245,  245,  245,  245,  245,  245,  244,  287,  251,  854,
    1191       251,  244,  253,  244,  251,  286,  244,  295,  244,  289,
    1192       251,  258,  258,  258,  258,  258,  258,  285,  290,  292,
    1193       291,  294,  251,  293,  289,  291,  251,  297,  292,  301,
    1194       251,  299,  285,  303,  290,  290,  293,  298,  285,  285,
    1195       299,  302,  298,  258,  300,  297,  307,  304,  294,  301,
    1196       306,  300,  304,  305,  303,  303,  306,  308,  305,  302,
    1197       310,  309,  311,  312,  313,  307,  308,  309,  314,  313,
    1198       315,  311,  316,  314,  318,  315,  310,  317,  312,  320,
    1199 
    1200       322,  321,  323,  324,  326,  325,  328,  318,  327,  329,
    1201       320,  316,  315,  322,  330,  317,  321,  327,  333,  331,
    1202       334,  326,  335,  337,  323,  325,  324,  333,  328,  336,
    1203       338,  337,  329,  339,  381,  338,  330,  331,  340,  340,
    1204       335,  341,  336,  340,  358,  340,  358,  341,  339,  348,
    1205       348,  348,  348,  349,  349,  349,  349,  359,  381,  359,
    1206       397,  850,  402,  334,  366,  366,  366,  366,  366,  366,
    1207       368,  397,  368,  402,  404,  368,  368,  368,  368,  368,
    1208       368,  348,  367,  367,  367,  367,  367,  367,  370,  370,
    1209       370,  370,  370,  370,  400,  398,  404,  435,  367,  376,
    1210 
    1211       846,  367,  367,  371,  371,  371,  371,  371,  371,  376,
    1212       379,  398,  377,  400,  367,  378,  379,  435,  383,  367,
    1213       370,  367,  377,  412,  367,  376,  367,  372,  372,  372,
    1214       372,  372,  372,  399,  382,  371,  383,  378,  377,  378,
    1215       415,  412,  379,  378,  383,  380,  415,  380,  399,  378,
    1216       380,  380,  380,  380,  380,  380,  382,  401,  382,  372,
    1217       407,  378,  382,  403,  405,  378,  401,  408,  382,  378,
    1218       406,  411,  403,  405,  409,  410,  407,  416,  418,  414,
    1219       382,  413,  380,  406,  382,  417,  413,  409,  382,  408,
    1220       419,  410,  410,  411,  414,  421,  417,  418,  416,  423,
    1221 
    1222       425,  414,  426,  427,  428,  419,  431,  429,  430,  421,
    1223       433,  423,  427,  429,  436,  431,  427,  437,  438,  439,
    1224       441,  425,  440,  430,  426,  433,  443,  428,  445,  441,
    1225       447,  446,  437,  448,  439,  449,  436,  450,  451,  455,
    1226       438,  452,  440,  443,  457,  633,  450,  460,  453,  458,
    1227       447,  445,  446,  448,  452,  453,  451,  449,  454,  456,
    1228       458,  457,  461,  633,  455,  454,  462,  456,  515,  460,
    1229       488,  461,  462,  471,  471,  471,  471,  456,  482,  482,
    1230       482,  482,  482,  482,  484,  484,  484,  484,  484,  484,
    1231       515,  513,  485,  487,  482,  489,  488,  482,  482,  486,
    1232 
    1233       510,  486,  485,  487,  486,  486,  486,  486,  486,  486,
    1234       482,  513,  509,  510,  520,  482,  484,  482,  485,  487,
    1235       482,  489,  482,  491,  491,  491,  491,  491,  491,  509,
    1236       512,  514,  519,  516,  520,  519,  486,  492,  492,  492,
    1237       492,  492,  492,  517,  514,  512,  516,  521,  517,  525,
    1238       518,  522,  523,  492,  525,  843,  492,  492,  493,  842,
    1239       493,  518,  521,  493,  493,  493,  493,  493,  493,  492,
    1240       522,  524,  526,  523,  492,  527,  492,  529,  530,  492,
    1241       524,  492,  531,  526,  532,  533,  529,  536,  527,  535,
    1242       533,  538,  539,  532,  542,  535,  536,  540,  541,  531,
    1243 
    1244       530,  544,  545,  542,  546,  547,  549,  554,  556,  539,
    1245       544,  561,  540,  541,  555,  552,  546,  538,  550,  545,
    1246       547,  549,  553,  550,  552,  556,  558,  555,  559,  554,
    1247       560,  553,  562,  561,  558,  563,  564,  560,  559,  565,
    1248       567,  563,  568,  613,  562,  564,  612,  617,  594,  565,
    1249       596,  698,  613,  612,  617,  568,  698,  567,  587,  587,
    1250       587,  587,  587,  587,  588,  588,  588,  588,  588,  588,
    1251       590,  594,  590,  596,  614,  590,  590,  590,  590,  590,
    1252       590,  593,  593,  593,  593,  593,  593,  614,  615,  616,
    1253       587,  589,  589,  589,  589,  589,  589,  595,  611,  622,
    1254 
    1255       618,  595,  619,  611,  621,  615,  620,  589,  618,  620,
    1256       589,  589,  616,  593,  623,  624,  611,  621,  595,  619,
    1257       595,  622,  625,  589,  626,  595,  628,  629,  589,  623,
    1258       589,  627,  630,  589,  627,  589,  631,  624,  634,  625,
    1259       632,  635,  637,  628,  638,  644,  626,  630,  639,  632,
    1260       635,  645,  640,  650,  629,  647,  631,  696,  693,  651,
    1261       634,  640,  650,  659,  637,  644,  651,  638,  658,  662,
    1262       639,  661,  647,  659,  697,  841,  840,  658,  645,  693,
    1263       661,  697,  699,  696,  662,  680,  680,  680,  680,  680,
    1264       680,  684,  684,  684,  684,  684,  684,  694,  702,  705,
    1265 
    1266       700,  680,  699,  700,  680,  680,  701,  694,  704,  701,
    1267       706,  708,  705,  709,  704,  707,  702,  680,  707,  706,
    1268       712,  711,  680,  684,  680,  710,  714,  680,  710,  680,
    1269       711,  713,  708,  718,  713,  715,  716,  717,  720,  714,
    1270       723,  709,  726,  715,  727,  712,  716,  720,  728,  730,
    1271       717,  731,  752,  751,  718,  753,  749,  730,  751,  754,
    1272       731,  750,  726,  723,  755,  753,  727,  752,  756,  728,
    1273       738,  738,  738,  738,  738,  738,  749,  757,  750,  758,
    1274       757,  755,  754,  759,  761,  763,  764,  761,  763,  767,
    1275       768,  773,  758,  764,  756,  765,  766,  788,  765,  766,
    1276 
    1277       790,  791,  738,  792,  767,  793,  792,  797,  794,  795,
    1278       759,  794,  795,  768,  773,  798,  801,  799,  805,  791,
    1279       799,  790,  821,  802,  788,  797,  802,  793,  803,  806,
    1280       804,  803,  824,  823,  805,  822,  823,  825,  801,  804,
    1281       798,  824,  822,  821,  826,  806,  827,  826,  830,  833,
    1282       834,  830,  833,  835,  847,  825,  844,  847,  848,  834,
    1283       858,  825,  835,  827,  845,  844,  849,  851,  848,  845,
    1284       851,  849,  852,  853,  859,  852,  853,  861,  860,  862,
    1285       858,  860,  862,  863,  866,  870,  863,  861,  869,  859,
    1286       873,  874,  875,  877,  876,  878,  839,  879,  838,  873,
    1287 
    1288       870,  837,  836,  832,  874,  831,  866,  879,  829,  869,
    1289       828,  877,  820,  819,  875,  876,  818,  878,  883,  883,
    1290       883,  883,  883,  883,  883,  883,  883,  883,  883,  883,
    1291       883,  884,  884,  884,  884,  884,  884,  884,  884,  884,
    1292       884,  884,  884,  884,  885,  885,  885,  885,  885,  885,
    1293       885,  885,  885,  885,  885,  885,  885,  886,  817,  816,
    1294       886,  815,  886,  886,  886,  886,  886,  887,  814,  813,
    1295       812,  887,  887,  887,  887,  887,  887,  888,  888,  888,
    1296       888,  888,  888,  888,  888,  888,  888,  888,  888,  888,
    1297       889,  811,  810,  889,  809,  889,  889,  889,  889,  889,
    1298 
    1299       890,  808,  890,  890,  807,  890,  890,  890,  890,  890,
    1300       890,  800,  890,  891,  796,  789,  891,  891,  891,  891,
    1301       891,  891,  891,  891,  787,  891,  892,  892,  892,  892,
    1302       892,  892,  892,  892,  892,  892,  892,  892,  892,  893,
    1303       893,  786,  893,  785,  784,  783,  893,  894,  782,  781,
    1304       894,  780,  894,  894,  894,  894,  894,  895,  779,  895,
    1305       778,  777,  776,  895,  896,  775,  896,  774,  772,  771,
    1306       896,  897,  770,  897,  769,  762,  760,  897,  898,  748,
    1307       898,  747,  746,  745,  898,  899,  744,  899,  743,  742,
    1308       741,  899,  900,  740,  900,  737,  736,  735,  900,  901,
    1309 
    1310       729,  901,  725,  724,  722,  901,  902,  721,  902,  719,
    1311       703,  695,  902,  903,  692,  903,  687,  685,  681,  903,
    1312       904,  904,  904,  904,  904,  904,  904,  904,  904,  904,
    1313       904,  904,  904,  905,  671,  905,  906,  906,  667,  906,
    1314       906,  906,  665,  906,  907,  907,  663,  907,  908,  660,
    1315       908,  657,  656,  655,  908,  909,  654,  909,  653,  652,
    1316       649,  909,  910,  648,  910,  646,  643,  642,  910,  911,
    1317       641,  911,  912,  636,  912,  609,  605,  603,  912,  913,
    1318       601,  913,  914,  599,  597,  914,  591,  914,  914,  914,
    1319       914,  914,  915,  915,  915,  915,  915,  915,  915,  915,
    1320 
    1321       915,  915,  915,  915,  915,  916,  916,  916,  916,  916,
    1322       916,  916,  916,  916,  916,  916,  916,  916,  917,  585,
    1323       917,  583,  581,  579,  917,  918,  577,  918,  575,  573,
    1324       571,  918,  919,  570,  919,  569,  566,  557,  919,  920,
    1325       551,  920,  921,  548,  921,  543,  537,  534,  921,  922,
    1326       511,  922,  923,  507,  923,  505,  503,  501,  923,  924,
    1327       499,  924,  925,  497,  925,  496,  495,  494,  925,  926,
    1328       483,  926,  927,  480,  927,  478,  477,  476,  927,  928,
    1329       474,  928,  929,  472,  929,  469,  467,  465,  929,  930,
    1330       463,  930,  931,  459,  931,  444,  442,  434,  931,  932,
    1331 
    1332       432,  932,  933,  424,  933,  422,  933,  420,  933,  934,
    1333       394,  934,  392,  934,  390,  934,  935,  935,  388,  935,
    1334       935,  935,  387,  935,  936,  386,  936,  373,  363,  361,
    1335       936,  937,  360,  937,  356,  354,  352,  937,  938,  350,
    1336       938,  346,  344,  343,  938,  939,  342,  939,  940,  332,
    1337       940,  319,  296,  275,  940,  941,  273,  941,  942,  271,
    1338       942,  270,  269,  267,  942,  943,  266,  943,  944,  261,
    1339       944,  257,  256,  252,  944,  945,  249,  945,  946,  248,
    1340       237,  946,  236,  946,  946,  946,  946,  946,  947,  947,
    1341       947,  947,  947,  947,  947,  947,  947,  947,  947,  947,
    1342 
    1343       947,  948,  229,  948,  228,  225,  215,  948,  949,  213,
    1344       949,  950,  212,  950,  211,  205,  204,  950,  951,  202,
    1345       951,  952,  197,  952,  177,  148,  146,  952,  953,  145,
    1346       953,  954,  139,  954,  137,  135,  127,  954,  955,  124,
    1347       955,  956,  123,  956,  119,  100,   97,  956,  957,   94,
    1348       957,  958,   92,  958,   85,   71,   69,  958,  959,   65,
    1349       959,  960,   36,  960,   33,   18,   11,  960,  961,    4,
    1350       961,    3,    0,    0,  961,  962,    0,  962,  963,    0,
    1351       963,    0,    0,    0,  963,  964,    0,  964,  965,    0,
    1352       965,    0,  965,    0,  965,  966,    0,  966,    0,    0,
    1353 
    1354         0,  966,  967,    0,  967,    0,    0,    0,  967,  968,
    1355         0,  968,  969,    0,  969,    0,    0,    0,  969,  970,
    1356         0,  970,  971,    0,  971,    0,    0,    0,  971,  972,
    1357         0,  972,  973,    0,  973,    0,    0,    0,  973,  974,
    1358         0,  974,  975,    0,  975,    0,    0,    0,  975,  976,
    1359         0,  976,  977,    0,  977,    0,    0,    0,  977,  978,
    1360         0,  978,  979,    0,    0,  979,    0,  979,  979,  979,
    1361       979,  979,  980,  980,  980,  980,  980,  980,  980,  980,
    1362       980,  980,  980,  980,  980,  981,    0,  981,    0,    0,
    1363         0,  981,  982,    0,  982,  983,    0,  983,    0,    0,
    1364 
    1365         0,  983,  984,    0,  984,  985,    0,  985,    0,    0,
    1366         0,  985,  986,    0,  986,  987,    0,  987,    0,    0,
    1367         0,  987,  988,    0,  988,  989,    0,  989,    0,    0,
    1368         0,  989,  990,    0,  990,  991,    0,  991,    0,    0,
    1369         0,  991,  992,    0,  992,  993,    0,  993,    0,    0,
    1370         0,  993,  994,    0,  994,  995,    0,  995,    0,    0,
    1371         0,  995,  996,    0,  996,  997,    0,  997,    0,    0,
    1372         0,  997,  998,    0,  998,    0,    0,    0,  998,  999,
    1373         0,  999, 1000,    0, 1000,    0,    0,    0, 1000, 1001,
    1374         0, 1001, 1002,    0, 1002,    0,    0,    0, 1002, 1003,
    1375 
    1376         0, 1003, 1004,    0, 1004,    0,    0,    0, 1004, 1005,
    1377         0, 1005, 1006,    0, 1006, 1007,    0, 1007, 1008,    0,
    1378         0, 1008,    0, 1008, 1008, 1008, 1008, 1008, 1009,    0,
    1379      1009, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010, 1010,
    1380      1010, 1010, 1010, 1010, 1011,    0, 1011,    0,    0,    0,
    1381      1011, 1012,    0, 1012, 1013,    0, 1013,    0,    0,    0,
    1382      1013, 1014,    0, 1014, 1015,    0, 1015, 1016,    0, 1016,
    1383      1017,    0,    0, 1017,    0, 1017, 1017, 1017, 1017, 1017,
    1384      1018,    0, 1018, 1019,    0, 1019, 1020,    0, 1020, 1021,
    1385         0, 1021, 1022,    0, 1022, 1023,    0, 1023, 1024,    0,
    1386 
    1387      1024, 1025,    0, 1025,    0,    0,    0, 1025, 1026,    0,
    1388      1026, 1027,    0, 1027,    0,    0,    0, 1027, 1028,    0,
    1389      1028, 1029,    0, 1029, 1030,    0, 1030, 1031,    0, 1031,
    1390      1032,    0, 1032,    0,    0,    0, 1032, 1033,    0,    0,
    1391      1033,    0, 1033, 1033, 1033, 1033, 1033, 1034,    0, 1034,
    1392      1035,    0, 1035, 1036,    0, 1036, 1037,    0, 1037,    0,
    1393         0,    0, 1037, 1038,    0, 1038,    0,    0,    0, 1038,
    1394      1039,    0, 1039,    0,    0,    0, 1039, 1040,    0, 1040,
    1395      1041,    0, 1041,    0,    0,    0, 1041, 1042,    0, 1042,
    1396         0,    0,    0, 1042, 1043,    0, 1043,    0,    0,    0,
    1397 
    1398      1043, 1044,    0, 1044,    0,    0,    0, 1044, 1045,    0,
    1399      1045,    0,    0,    0, 1045, 1046,    0, 1046,    0,    0,
     1137       50,   51,  164,   51,   56,  154,   54,   59,  877,   50,
     1138       61,   31,   51,   50,   31,   73,   54,   58,   50,   59,
     1139       31,  154,   50,   54,   87,  159,   31,   59,   61,   58,
     1140       58,   60,   31,   64,   59,  126,   60,  126,   31,   58,
     1141       52,  159,   58,   68,   68,   52,   31,   38,   68,   60,
     1142       87,   38,   38,   52,   38,   52,   38,   38,   52,   38,
     1143      108,   38,   52,  114,   68,   68,   68,   68,   68,   68,
     1144       38,   38,   38,  127,   60,  127,  153,   60,   67,   67,
     1145       67,   67,   67,   67,  108,  153,   67,  114,  876,  873,
     1146       38,   60,  166,   38,   80,   80,   80,   80,   80,   80,
     1147
     1148       82,   82,   82,   82,   82,   82,   83,   83,   83,   83,
     1149       83,   83,  129,  166,  129,  104,  104,  104,  104,  107,
     1150       38,   38,   77,   77,  872,  107,  113,   77,  169,   77,
     1151      111,  132,  113,  132,   77,  103,  103,  103,  103,  103,
     1152      103,  131,  104,   77,   77,   77,   77,  104,  111,  169,
     1153      110,  107,  130,  131,   77,  131,  111,  105,  113,  105,
     1154      105,  105,  105,  105,  105,  151,  130,  103,  130,   77,
     1155      104,  134,   77,  134,  281,  116,  105,   77,   77,  110,
     1156      142,   77,   77,  151,  110,  133,  133,  152,  133,   77,
     1157      281,  105,   77,  116,   77,   77,   77,  105,   77,   85,
     1158
     1159      137,  116,  137,   85,   85,  152,  142,  110,   85,   85,
     1160      106,   85,  106,   85,  155,  106,  106,  106,  106,  106,
     1161      106,  150,   85,   85,   85,  135,  135,  135,  139,  145,
     1162      139,  156,  155,  160,  145,  161,  150,  157,  162,  167,
     1163      165,  168,   85,  150,  161,   85,  163,  106,  171,  157,
     1164      165,  163,  172,  156,  173,  160,  181,  176,  170,  162,
     1165      162,  181,  167,  170,  163,  174,  175,  172,  168,  182,
     1166      171,  173,  145,   85,   99,   99,   99,   99,   99,   99,
     1167      177,  170,  179,  174,  176,  184,  175,  183,  180,  185,
     1168       99,   99,  525,   99,   99,  525,  182,  179,  183,  218,
     1169
     1170      185,  218,  177,  184,  179,  180,   99,  191,  183,  183,
     1171      186,   99,   99,   99,  158,  186,   99,  185,   99,  158,
     1172      158,  158,  188,  158,  158,  190,  187,  158,  189,  158,
     1173      186,  205,  193,  189,  158,  158,  158,  627,  158,  187,
     1174      627,  192,  188,  194,  190,  193,  219,  193,  219,  220,
     1175      191,  220,  248,  191,  192,  189,  194,  205,  223,  225,
     1176      223,  225,  192,  197,  197,  197,  197,  197,  197,  198,
     1177      198,  197,  209,  209,  198,  200,  200,  209,  248,  870,
     1178      200,  202,  202,  308,  224,  224,  202,  224,  202,  308,
     1179      198,  198,  198,  198,  198,  198,  200,  200,  200,  200,
     1180
     1181      200,  200,  202,  202,  202,  202,  202,  202,  212,  212,
     1182      212,  212,  221,  222,  226,  226,  226,  228,  229,  228,
     1183      229,  234,  243,  237,  338,  222,  221,  222,  221,  235,
     1184      278,  235,  256,  279,  235,  235,  235,  235,  235,  235,
     1185      212,  236,  270,  278,  234,  236,  237,  280,  291,  241,
     1186      241,  279,  241,  241,  284,  266,  243,  266,  256,  267,
     1187      869,  267,  236,  291,  236,  280,  235,  338,  270,  236,
     1188      241,  241,  241,  282,  284,  241,  289,  241,  244,  244,
     1189      244,  244,  244,  244,  245,  245,  245,  245,  245,  245,
     1190      282,  247,  286,  247,  289,  244,  247,  247,  247,  247,
     1191
     1192      247,  247,  255,  255,  255,  255,  255,  255,  283,  285,
     1193      244,  295,  286,  283,  285,  288,  244,  246,  246,  246,
     1194      246,  246,  246,  253,  295,  292,  260,  260,  260,  260,
     1195      260,  260,  862,  246,  255,  296,  246,  246,  288,  293,
     1196      290,  292,  292,  294,  293,  253,  297,  253,  300,  246,
     1197      287,  253,  294,  300,  246,  303,  246,  253,  260,  246,
     1198      299,  246,  296,  304,  297,  287,  290,  301,  305,  253,
     1199      312,  287,  287,  253,  306,  303,  301,  253,  299,  306,
     1200      307,  304,  309,  310,  314,  307,  312,  311,  313,  305,
     1201      305,  315,  310,  311,  318,  316,  315,  313,  317,  314,
     1202
     1203      316,  309,  320,  317,  319,  322,  323,  324,  326,  327,
     1204      325,  328,  329,  318,  331,  320,  322,  332,  330,  333,
     1205      317,  323,  319,  325,  334,  335,  324,  330,  337,  329,
     1206      326,  328,  327,  339,  340,  341,  331,  337,  335,  342,
     1207      332,  333,  334,  341,  342,  343,  345,  340,  344,  344,
     1208      861,  339,  345,  344,  385,  344,  352,  352,  352,  352,
     1209      343,  353,  353,  353,  353,  362,  363,  362,  363,  370,
     1210      370,  370,  370,  370,  370,  372,  380,  372,  385,  860,
     1211      372,  372,  372,  372,  372,  372,  380,  402,  352,  371,
     1212      371,  371,  371,  371,  371,  374,  374,  374,  374,  374,
     1213
     1214      374,  404,  380,  402,  387,  371,  381,  401,  371,  371,
     1215      375,  375,  375,  375,  375,  375,  381,  383,  401,  382,
     1216      404,  371,  387,  383,  408,  432,  371,  374,  371,  403,
     1217      387,  371,  381,  371,  376,  376,  376,  376,  376,  376,
     1218      386,  382,  375,  382,  403,  405,  408,  382,  432,  383,
     1219      384,  859,  384,  382,  405,  384,  384,  384,  384,  384,
     1220      384,  406,  386,  412,  386,  382,  376,  407,  386,  382,
     1221      409,  410,  406,  382,  386,  411,  407,  415,  416,  409,
     1222      413,  414,  420,  417,  410,  412,  386,  384,  417,  418,
     1223      386,  411,  423,  413,  386,  419,  416,  414,  414,  415,
     1224
     1225      422,  419,  421,  420,  418,  427,  425,  423,  429,  430,
     1226      431,  418,  433,  421,  439,  434,  435,  427,  433,  422,
     1227      425,  437,  440,  431,  441,  435,  442,  443,  445,  429,
     1228      434,  430,  444,  447,  439,  449,  437,  445,  450,  441,
     1229      451,  456,  443,  452,  440,  453,  454,  450,  442,  457,
     1230      447,  455,  444,  460,  461,  463,  494,  458,  449,  456,
     1231      455,  451,  457,  452,  458,  453,  459,  462,  454,  464,
     1232      466,  468,  463,  459,  467,  462,  461,  468,  460,  495,
     1233      464,  491,  494,  467,  521,  462,  477,  477,  477,  477,
     1234      636,  491,  466,  488,  488,  488,  488,  488,  488,  490,
     1235
     1236      490,  490,  490,  490,  490,  495,  521,  491,  493,  488,
     1237      515,  518,  488,  488,  492,  516,  492,  636,  493,  492,
     1238      492,  492,  492,  492,  492,  488,  518,  515,  516,  519,
     1239      488,  490,  488,  520,  493,  488,  524,  488,  497,  497,
     1240      497,  497,  497,  497,  529,  522,  520,  524,  527,  519,
     1241      526,  492,  498,  498,  498,  498,  498,  498,  522,  523,
     1242      530,  533,  531,  527,  523,  529,  528,  531,  498,  530,
     1243      526,  498,  498,  499,  533,  499,  532,  534,  499,  499,
     1244      499,  499,  499,  499,  498,  528,  535,  532,  536,  498,
     1245      537,  498,  538,  539,  498,  535,  498,  541,  539,  542,
     1246
     1247      544,  538,  547,  541,  545,  534,  546,  537,  542,  549,
     1248      536,  547,  550,  551,  557,  552,  554,  544,  549,  545,
     1249      560,  546,  555,  557,  558,  551,  561,  555,  562,  550,
     1250      552,  554,  564,  558,  565,  567,  566,  568,  572,  561,
     1251      564,  569,  560,  566,  565,  562,  571,  569,  572,  568,
     1252      574,  575,  601,  621,  603,  571,  620,  567,  594,  594,
     1253      594,  594,  594,  594,  575,  620,  621,  574,  595,  595,
     1254      595,  595,  595,  595,  597,  601,  597,  603,  639,  597,
     1255      597,  597,  597,  597,  597,  602,  622,  639,  855,  602,
     1256      594,  596,  596,  596,  596,  596,  596,  600,  600,  600,
     1257
     1258      600,  600,  600,  622,  618,  619,  602,  596,  602,  618,
     1259      596,  596,  619,  602,  623,  626,  629,  624,  625,  631,
     1260      633,  628,  618,  596,  624,  630,  625,  632,  596,  600,
     1261      596,  635,  626,  596,  628,  596,  634,  623,  629,  634,
     1262      630,  631,  633,  637,  632,  638,  640,  641,  635,  644,
     1263      642,  645,  646,  651,  650,  657,  668,  656,  637,  642,
     1264      653,  646,  657,  851,  640,  638,  656,  664,  665,  641,
     1265      667,  668,  644,  645,  650,  699,  664,  653,  665,  667,
     1266      651,  686,  686,  686,  686,  686,  686,  690,  690,  690,
     1267      690,  690,  690,  700,  704,  702,  699,  686,  703,  704,
     1268
     1269      686,  686,  705,  700,  706,  703,  707,  706,  708,  707,
     1270      710,  711,  713,  686,  714,  713,  710,  715,  686,  690,
     1271      686,  702,  705,  686,  711,  686,  708,  712,  716,  717,
     1272      718,  716,  721,  720,  719,  714,  712,  719,  717,  722,
     1273      721,  723,  724,  725,  728,  715,  720,  732,  731,  722,
     1274      733,  735,  725,  736,  723,  718,  756,  761,  754,  735,
     1275      758,  756,  736,  724,  755,  757,  759,  728,  731,  732,
     1276      758,  733,  743,  743,  743,  743,  743,  743,  754,  760,
     1277      757,  755,  762,  761,  763,  762,  764,  766,  768,  759,
     1278      766,  768,  769,  772,  773,  770,  760,  763,  770,  769,
     1279
     1280      771,  778,  793,  771,  743,  795,  797,  796,  772,  797,
     1281      798,  799,  800,  764,  799,  800,  802,  773,  803,  804,
     1282      806,  810,  804,  811,  778,  796,  795,  807,  808,  793,
     1283      807,  808,  798,  826,  802,  809,  832,  810,  827,  811,
     1284      830,  829,  806,  803,  809,  827,  828,  848,  831,  828,
     1285      829,  831,  835,  832,  826,  835,  838,  839,  830,  838,
     1286      840,  849,  850,  853,  830,  852,  839,  850,  852,  840,
     1287      849,  854,  856,  853,  857,  856,  854,  857,  858,  863,
     1288      864,  858,  865,  866,  867,  865,  868,  867,  871,  868,
     1289      874,  875,  878,  866,  879,  864,  880,  882,  881,  863,
     1290
     1291      883,  878,  884,  847,  846,  845,  875,  879,  844,  843,
     1292      871,  874,  884,  842,  841,  882,  837,  836,  880,  881,
     1293      834,  833,  883,  888,  888,  888,  888,  888,  888,  888,
     1294      888,  888,  888,  888,  888,  888,  889,  889,  889,  889,
     1295      889,  889,  889,  889,  889,  889,  889,  889,  889,  890,
     1296      890,  890,  890,  890,  890,  890,  890,  890,  890,  890,
     1297      890,  890,  891,  825,  824,  891,  823,  891,  891,  891,
     1298      891,  891,  892,  822,  821,  820,  892,  892,  892,  892,
     1299      892,  892,  893,  893,  893,  893,  893,  893,  893,  893,
     1300      893,  893,  893,  893,  893,  894,  819,  818,  894,  817,
     1301
     1302      894,  894,  894,  894,  894,  895,  816,  895,  895,  815,
     1303      895,  895,  895,  895,  895,  895,  814,  895,  896,  813,
     1304      812,  896,  896,  896,  896,  896,  896,  896,  896,  805,
     1305      896,  897,  897,  897,  897,  897,  897,  897,  897,  897,
     1306      897,  897,  897,  897,  898,  898,  801,  898,  794,  792,
     1307      791,  898,  899,  790,  789,  899,  788,  899,  899,  899,
     1308      899,  899,  900,  787,  900,  786,  785,  784,  900,  901,
     1309      783,  901,  782,  781,  780,  901,  902,  779,  902,  777,
     1310      776,  775,  902,  903,  774,  903,  767,  765,  753,  903,
     1311      904,  752,  904,  751,  750,  749,  904,  905,  748,  905,
     1312
     1313      747,  746,  745,  905,  906,  742,  906,  741,  740,  734,
     1314      906,  907,  730,  907,  729,  727,  726,  907,  908,  709,
     1315      908,  701,  698,  693,  908,  909,  909,  909,  909,  909,
     1316      909,  909,  909,  909,  909,  909,  909,  909,  910,  691,
     1317      910,  911,  911,  687,  911,  911,  911,  677,  911,  912,
     1318      912,  673,  912,  913,  671,  913,  669,  666,  663,  913,
     1319      914,  662,  914,  661,  660,  659,  914,  915,  658,  915,
     1320      655,  654,  652,  915,  916,  649,  916,  917,  648,  917,
     1321      647,  643,  616,  917,  918,  612,  918,  919,  610,  608,
     1322      919,  606,  919,  919,  919,  919,  919,  920,  920,  920,
     1323
     1324      920,  920,  920,  920,  920,  920,  920,  920,  920,  920,
     1325      921,  921,  921,  921,  921,  921,  921,  921,  921,  921,
     1326      921,  921,  921,  922,  604,  922,  598,  592,  590,  922,
     1327      923,  588,  923,  586,  584,  582,  923,  924,  580,  924,
     1328      578,  577,  576,  924,  925,  573,  925,  926,  570,  926,
     1329      563,  559,  556,  926,  927,  553,  927,  928,  548,  928,
     1330      543,  540,  517,  928,  929,  513,  929,  930,  511,  930,
     1331      509,  507,  505,  930,  931,  503,  931,  932,  502,  932,
     1332      501,  500,  489,  932,  933,  486,  933,  934,  484,  934,
     1333      483,  482,  480,  934,  935,  478,  935,  936,  475,  936,
     1334
     1335      473,  471,  469,  936,  937,  465,  937,  938,  448,  938,
     1336      446,  938,  438,  938,  939,  436,  939,  428,  939,  426,
     1337      939,  940,  940,  424,  940,  940,  940,  398,  940,  941,
     1338      396,  941,  394,  392,  391,  941,  942,  390,  942,  377,
     1339      367,  365,  942,  943,  364,  943,  360,  358,  356,  943,
     1340      944,  354,  944,  945,  350,  945,  348,  347,  346,  945,
     1341      946,  336,  946,  947,  321,  947,  298,  277,  275,  947,
     1342      948,  273,  948,  949,  272,  949,  271,  269,  268,  949,
     1343      950,  263,  950,  951,  259,  258,  951,  254,  951,  951,
     1344      951,  951,  951,  952,  952,  952,  952,  952,  952,  952,
     1345
     1346      952,  952,  952,  952,  952,  952,  953,  251,  953,  250,
     1347      239,  238,  953,  954,  231,  954,  955,  230,  955,  227,
     1348      217,  215,  955,  956,  214,  956,  957,  213,  957,  207,
     1349      206,  204,  957,  958,  199,  958,  959,  178,  959,  149,
     1350      147,  146,  959,  960,  140,  960,  961,  138,  961,  136,
     1351      128,  125,  961,  962,  124,  962,  963,  120,  963,  101,
     1352       98,   95,  963,  964,   93,  964,  965,   86,  965,   72,
     1353       70,   66,  965,  966,   36,  966,   33,   18,   11,  966,
     1354      967,    4,  967,  968,    3,  968,    0,    0,    0,  968,
     1355      969,    0,  969,  970,    0,  970,    0,  970,    0,  970,
     1356
     1357      971,    0,  971,    0,    0,    0,  971,  972,    0,  972,
     1358        0,    0,    0,  972,  973,    0,  973,  974,    0,  974,
     1359        0,    0,    0,  974,  975,    0,  975,  976,    0,  976,
     1360        0,    0,    0,  976,  977,    0,  977,  978,    0,  978,
     1361        0,    0,    0,  978,  979,    0,  979,  980,    0,  980,
     1362        0,    0,    0,  980,  981,    0,  981,  982,    0,  982,
     1363        0,    0,    0,  982,  983,    0,  983,  984,    0,    0,
     1364      984,    0,  984,  984,  984,  984,  984,  985,  985,  985,
     1365      985,  985,  985,  985,  985,  985,  985,  985,  985,  985,
     1366      986,    0,  986,    0,    0,    0,  986,  987,    0,  987,
     1367
     1368      988,    0,  988,    0,    0,    0,  988,  989,    0,  989,
     1369      990,    0,  990,    0,    0,    0,  990,  991,    0,  991,
     1370      992,    0,  992,    0,    0,    0,  992,  993,    0,  993,
     1371      994,    0,  994,    0,    0,    0,  994,  995,    0,  995,
     1372      996,    0,  996,    0,    0,    0,  996,  997,    0,  997,
     1373      998,    0,  998,    0,    0,    0,  998,  999,    0,  999,
     1374     1000,    0, 1000,    0,    0,    0, 1000, 1001,    0, 1001,
     1375     1002,    0, 1002,    0,    0,    0, 1002, 1003,    0, 1003,
     1376        0,    0,    0, 1003, 1004,    0, 1004, 1005,    0, 1005,
     1377        0,    0,    0, 1005, 1006,    0, 1006, 1007,    0, 1007,
     1378
     1379        0,    0,    0, 1007, 1008,    0, 1008, 1009,    0, 1009,
     1380        0,    0,    0, 1009, 1010,    0, 1010, 1011,    0, 1011,
     1381     1012,    0, 1012, 1013,    0,    0, 1013,    0, 1013, 1013,
     1382     1013, 1013, 1013, 1014,    0, 1014, 1015, 1015, 1015, 1015,
     1383     1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1015, 1016,
     1384        0, 1016,    0,    0,    0, 1016, 1017,    0, 1017, 1018,
     1385        0, 1018,    0,    0,    0, 1018, 1019,    0, 1019, 1020,
     1386        0, 1020, 1021,    0, 1021, 1022,    0,    0, 1022,    0,
     1387     1022, 1022, 1022, 1022, 1022, 1023,    0, 1023, 1024,    0,
     1388     1024, 1025,    0, 1025, 1026,    0, 1026, 1027,    0, 1027,
     1389
     1390     1028,    0, 1028, 1029,    0, 1029, 1030,    0, 1030,    0,
     1391        0,    0, 1030, 1031,    0, 1031, 1032,    0, 1032,    0,
     1392        0,    0, 1032, 1033,    0, 1033, 1034,    0, 1034, 1035,
     1393        0, 1035, 1036,    0, 1036, 1037,    0, 1037,    0,    0,
     1394        0, 1037, 1038,    0,    0, 1038,    0, 1038, 1038, 1038,
     1395     1038, 1038, 1039,    0, 1039, 1040,    0, 1040, 1041,    0,
     1396     1041, 1042,    0, 1042,    0,    0,    0, 1042, 1043,    0,
     1397     1043,    0,    0,    0, 1043, 1044,    0, 1044,    0,    0,
     1398        0, 1044, 1045,    0, 1045, 1046,    0, 1046,    0,    0,
    14001399        0, 1046, 1047,    0, 1047,    0,    0,    0, 1047, 1048,
     1400
    14011401        0, 1048,    0,    0,    0, 1048, 1049,    0, 1049,    0,
    14021402        0,    0, 1049, 1050,    0, 1050,    0,    0,    0, 1050,
     
    14051405     1053, 1054,    0, 1054,    0,    0,    0, 1054, 1055,    0,
    14061406     1055,    0,    0,    0, 1055, 1056,    0, 1056,    0,    0,
    1407         0, 1056,  882,  882,  882,  882,  882,  882,  882,  882,
    1408 
    1409       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    1410       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    1411       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    1412       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    1413       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    1414       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    1415       882,  882,  882,  882,  882,  882,  882,  882,  882,  882,
    1416       882,  882,  882,  882,  882,  882,  882
     1407        0, 1056, 1057,    0, 1057,    0,    0,    0, 1057, 1058,
     1408        0, 1058,    0,    0,    0, 1058, 1059,    0, 1059,    0,
     1409        0,    0, 1059, 1060,    0, 1060,    0,    0,    0, 1060,
     1410     1061,    0, 1061,    0,    0,    0, 1061,  887,  887,  887,
     1411
     1412      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1413      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1414      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1415      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1416      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1417      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1418      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1419      887,  887,  887,  887,  887,  887,  887,  887,  887,  887,
     1420      887,  887
    14171421    } ;
    14181422
     
    14571461 * Created On       : Sat Sep 22 08:58:10 2001
    14581462 * Last Modified By : Peter A. Buhr
    1459  * Last Modified On : Thu Feb 25 16:18:14 2016
    1460  * Update Count     : 427
     1463 * Last Modified On : Wed Mar  2 18:07:20 2016
     1464 * Update Count     : 434
    14611465 */
    14621466#line 20 "lex.ll"
     
    15161520
    15171521
    1518 #line 1519 "Parser/lex.cc"
     1522#line 1523 "Parser/lex.cc"
    15191523
    15201524#define INITIAL 0
     
    17111715
    17121716                                   /* line directives */
    1713 #line 1714 "Parser/lex.cc"
     1717#line 1718 "Parser/lex.cc"
    17141718
    17151719        if ( !(yy_init) )
     
    17651769                                {
    17661770                                yy_current_state = (int) yy_def[yy_current_state];
    1767                                 if ( yy_current_state >= 883 )
     1771                                if ( yy_current_state >= 888 )
    17681772                                        yy_c = yy_meta[(unsigned int) yy_c];
    17691773                                }
     
    17711775                        ++yy_cp;
    17721776                        }
    1773                 while ( yy_base[yy_current_state] != 2793 );
     1777                while ( yy_base[yy_current_state] != 2798 );
    17741778
    17751779yy_find_action:
     
    20082012YY_RULE_SETUP
    20092013#line 203 "lex.ll"
    2010 { KEYWORD_RETURN(CONTEXT); }                    // CFA
     2014{ KEYWORD_RETURN(CONTINUE); }
    20112015        YY_BREAK
    20122016case 36:
    20132017YY_RULE_SETUP
    20142018#line 204 "lex.ll"
    2015 { KEYWORD_RETURN(CONTINUE); }
     2019{ KEYWORD_RETURN(DEFAULT); }
    20162020        YY_BREAK
    20172021case 37:
    20182022YY_RULE_SETUP
    20192023#line 205 "lex.ll"
    2020 { KEYWORD_RETURN(DEFAULT); }
     2024{ KEYWORD_RETURN(DISABLE); }                    // CFA
    20212025        YY_BREAK
    20222026case 38:
    20232027YY_RULE_SETUP
    20242028#line 206 "lex.ll"
    2025 { KEYWORD_RETURN(DISABLE); }                    // CFA
     2029{ KEYWORD_RETURN(DO); }
    20262030        YY_BREAK
    20272031case 39:
    20282032YY_RULE_SETUP
    20292033#line 207 "lex.ll"
    2030 { KEYWORD_RETURN(DO); }
     2034{ KEYWORD_RETURN(DOUBLE); }
    20312035        YY_BREAK
    20322036case 40:
    20332037YY_RULE_SETUP
    20342038#line 208 "lex.ll"
    2035 { KEYWORD_RETURN(DOUBLE); }
     2039{ KEYWORD_RETURN(DTYPE); }                              // CFA
    20362040        YY_BREAK
    20372041case 41:
    20382042YY_RULE_SETUP
    20392043#line 209 "lex.ll"
    2040 { KEYWORD_RETURN(DTYPE); }                              // CFA
     2044{ KEYWORD_RETURN(ELSE); }
    20412045        YY_BREAK
    20422046case 42:
    20432047YY_RULE_SETUP
    20442048#line 210 "lex.ll"
    2045 { KEYWORD_RETURN(ELSE); }
     2049{ KEYWORD_RETURN(ENABLE); }                             // CFA
    20462050        YY_BREAK
    20472051case 43:
    20482052YY_RULE_SETUP
    20492053#line 211 "lex.ll"
    2050 { KEYWORD_RETURN(ENABLE); }                             // CFA
     2054{ KEYWORD_RETURN(ENUM); }
    20512055        YY_BREAK
    20522056case 44:
    20532057YY_RULE_SETUP
    20542058#line 212 "lex.ll"
    2055 { KEYWORD_RETURN(ENUM); }
     2059{ KEYWORD_RETURN(EXTENSION); }                  // GCC
    20562060        YY_BREAK
    20572061case 45:
    20582062YY_RULE_SETUP
    20592063#line 213 "lex.ll"
    2060 { KEYWORD_RETURN(EXTENSION); }                  // GCC
     2064{ KEYWORD_RETURN(EXTERN); }
    20612065        YY_BREAK
    20622066case 46:
    20632067YY_RULE_SETUP
    20642068#line 214 "lex.ll"
    2065 { KEYWORD_RETURN(EXTERN); }
     2069{ KEYWORD_RETURN(FALLTHRU); }                   // CFA
    20662070        YY_BREAK
    20672071case 47:
    20682072YY_RULE_SETUP
    20692073#line 215 "lex.ll"
    2070 { KEYWORD_RETURN(FALLTHRU); }                   // CFA
     2074{ KEYWORD_RETURN(FINALLY); }                    // CFA
    20712075        YY_BREAK
    20722076case 48:
    20732077YY_RULE_SETUP
    20742078#line 216 "lex.ll"
    2075 { KEYWORD_RETURN(FINALLY); }                    // CFA
     2079{ KEYWORD_RETURN(FLOAT); }
    20762080        YY_BREAK
    20772081case 49:
    20782082YY_RULE_SETUP
    20792083#line 217 "lex.ll"
    2080 { KEYWORD_RETURN(FLOAT); }
     2084{ KEYWORD_RETURN(FLOAT); }                              // GCC
    20812085        YY_BREAK
    20822086case 50:
    20832087YY_RULE_SETUP
    20842088#line 218 "lex.ll"
    2085 { KEYWORD_RETURN(FLOAT); }                              // GCC
     2089{ KEYWORD_RETURN(FOR); }
    20862090        YY_BREAK
    20872091case 51:
    20882092YY_RULE_SETUP
    20892093#line 219 "lex.ll"
    2090 { KEYWORD_RETURN(FOR); }
     2094{ KEYWORD_RETURN(FORALL); }                             // CFA
    20912095        YY_BREAK
    20922096case 52:
    20932097YY_RULE_SETUP
    20942098#line 220 "lex.ll"
    2095 { KEYWORD_RETURN(FORALL); }                             // CFA
     2099{ KEYWORD_RETURN(FORTRAN); }
    20962100        YY_BREAK
    20972101case 53:
    20982102YY_RULE_SETUP
    20992103#line 221 "lex.ll"
    2100 { KEYWORD_RETURN(FORTRAN); }
     2104{ KEYWORD_RETURN(FTYPE); }                              // CFA
    21012105        YY_BREAK
    21022106case 54:
    21032107YY_RULE_SETUP
    21042108#line 222 "lex.ll"
    2105 { KEYWORD_RETURN(FTYPE); }                              // CFA
     2109{ KEYWORD_RETURN(GENERIC); }                    // C11
    21062110        YY_BREAK
    21072111case 55:
    21082112YY_RULE_SETUP
    21092113#line 223 "lex.ll"
    2110 { KEYWORD_RETURN(GENERIC); }                    // C11
     2114{ KEYWORD_RETURN(GOTO); }
    21112115        YY_BREAK
    21122116case 56:
    21132117YY_RULE_SETUP
    21142118#line 224 "lex.ll"
    2115 { KEYWORD_RETURN(GOTO); }
     2119{ KEYWORD_RETURN(IF); }
    21162120        YY_BREAK
    21172121case 57:
    21182122YY_RULE_SETUP
    21192123#line 225 "lex.ll"
    2120 { KEYWORD_RETURN(IF); }
     2124{ KEYWORD_RETURN(IMAGINARY); }                  // C99
    21212125        YY_BREAK
    21222126case 58:
    21232127YY_RULE_SETUP
    21242128#line 226 "lex.ll"
    2125 { KEYWORD_RETURN(IMAGINARY); }                  // C99
     2129{ KEYWORD_RETURN(IMAGINARY); }                  // GCC
    21262130        YY_BREAK
    21272131case 59:
     
    21332137YY_RULE_SETUP
    21342138#line 228 "lex.ll"
    2135 { KEYWORD_RETURN(IMAGINARY); }                  // GCC
     2139{ KEYWORD_RETURN(INLINE); }                             // C99
    21362140        YY_BREAK
    21372141case 61:
    21382142YY_RULE_SETUP
    21392143#line 229 "lex.ll"
    2140 { KEYWORD_RETURN(INLINE); }                             // C99
     2144{ KEYWORD_RETURN(INLINE); }                             // GCC
    21412145        YY_BREAK
    21422146case 62:
     
    21482152YY_RULE_SETUP
    21492153#line 231 "lex.ll"
    2150 { KEYWORD_RETURN(INLINE); }                             // GCC
     2154{ KEYWORD_RETURN(INT); }
    21512155        YY_BREAK
    21522156case 64:
    21532157YY_RULE_SETUP
    21542158#line 232 "lex.ll"
    2155 { KEYWORD_RETURN(INT); }
     2159{ KEYWORD_RETURN(INT); }                                // GCC
    21562160        YY_BREAK
    21572161case 65:
    21582162YY_RULE_SETUP
    21592163#line 233 "lex.ll"
    2160 { KEYWORD_RETURN(INT); }                                // GCC
     2164{ KEYWORD_RETURN(LABEL); }                              // GCC
    21612165        YY_BREAK
    21622166case 66:
    21632167YY_RULE_SETUP
    21642168#line 234 "lex.ll"
    2165 { KEYWORD_RETURN(LABEL); }                              // GCC
     2169{ KEYWORD_RETURN(LONG); }
    21662170        YY_BREAK
    21672171case 67:
    21682172YY_RULE_SETUP
    21692173#line 235 "lex.ll"
    2170 { KEYWORD_RETURN(LONG); }
     2174{ KEYWORD_RETURN(LVALUE); }                             // CFA
    21712175        YY_BREAK
    21722176case 68:
    21732177YY_RULE_SETUP
    21742178#line 236 "lex.ll"
    2175 { KEYWORD_RETURN(LVALUE); }                             // CFA
     2179{ KEYWORD_RETURN(NORETURN); }                   // C11
    21762180        YY_BREAK
    21772181case 69:
    21782182YY_RULE_SETUP
    21792183#line 237 "lex.ll"
    2180 { KEYWORD_RETURN(NORETURN); }                   // C11
     2184{ KEYWORD_RETURN(OFFSETOF); }           // GCC
    21812185        YY_BREAK
    21822186case 70:
    21832187YY_RULE_SETUP
    21842188#line 238 "lex.ll"
    2185 { KEYWORD_RETURN(OFFSETOF); }           // GCC
     2189{ KEYWORD_RETURN(OTYPE); }                              // CFA
    21862190        YY_BREAK
    21872191case 71:
     
    22732277YY_RULE_SETUP
    22742278#line 256 "lex.ll"
     2279{ KEYWORD_RETURN(TRAIT); }                              // CFA
     2280        YY_BREAK
     2281case 89:
     2282YY_RULE_SETUP
     2283#line 257 "lex.ll"
    22752284{ KEYWORD_RETURN(TRY); }                                // CFA
    2276         YY_BREAK
    2277 case 89:
    2278 YY_RULE_SETUP
    2279 #line 257 "lex.ll"
    2280 { KEYWORD_RETURN(TYPE); }                               // CFA
    22812285        YY_BREAK
    22822286case 90:
     
    27852789ECHO;
    27862790        YY_BREAK
    2787 #line 2788 "Parser/lex.cc"
     2791#line 2792 "Parser/lex.cc"
    27882792case YY_STATE_EOF(INITIAL):
    27892793case YY_STATE_EOF(COMMENT):
     
    30823086                        {
    30833087                        yy_current_state = (int) yy_def[yy_current_state];
    3084                         if ( yy_current_state >= 883 )
     3088                        if ( yy_current_state >= 888 )
    30853089                                yy_c = yy_meta[(unsigned int) yy_c];
    30863090                        }
     
    31103114                {
    31113115                yy_current_state = (int) yy_def[yy_current_state];
    3112                 if ( yy_current_state >= 883 )
     3116                if ( yy_current_state >= 888 )
    31133117                        yy_c = yy_meta[(unsigned int) yy_c];
    31143118                }
    31153119        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
    3116         yy_is_jam = (yy_current_state == 882);
     3120        yy_is_jam = (yy_current_state == 887);
    31173121
    31183122        return yy_is_jam ? 0 : yy_current_state;
  • src/Parser/lex.ll

    r8f610e85 r4040425  
    1010 * Created On       : Sat Sep 22 08:58:10 2001
    1111 * Last Modified By : Peter A. Buhr
    12  * Last Modified On : Thu Feb 25 16:18:14 2016
    13  * Update Count     : 427
     12 * Last Modified On : Wed Mar  2 18:07:20 2016
     13 * Update Count     : 434
    1414 */
    1515
     
    137137%%
    138138                                   /* line directives */
    139 ^{h_white}*"#"{h_white}*[0-9]+{h_white}*["][^"\n]+["][^\n]*"\n" {
     139^{h_white}*"#"{h_white}*[0-9]+{h_white}*["][^"\n]+["].*"\n" {
    140140        /* " stop highlighting */
    141141        char *end_num;
     
    201201__const                 { KEYWORD_RETURN(CONST); }                              // GCC
    202202__const__               { KEYWORD_RETURN(CONST); }                              // GCC
    203 context                 { KEYWORD_RETURN(CONTEXT); }                    // CFA
    204203continue                { KEYWORD_RETURN(CONTINUE); }
    205204default                 { KEYWORD_RETURN(DEFAULT); }
     
    237236_Noreturn               { KEYWORD_RETURN(NORETURN); }                   // C11
    238237__builtin_offsetof { KEYWORD_RETURN(OFFSETOF); }                // GCC
     238otype                   { KEYWORD_RETURN(OTYPE); }                              // CFA
    239239register                { KEYWORD_RETURN(REGISTER); }
    240240restrict                { KEYWORD_RETURN(RESTRICT); }                   // C99
     
    254254throw                   { KEYWORD_RETURN(THROW); }                              // CFA
    255255throwResume             { KEYWORD_RETURN(THROWRESUME); }                // CFA
     256trait                   { KEYWORD_RETURN(TRAIT); }                              // CFA
    256257try                             { KEYWORD_RETURN(TRY); }                                // CFA
    257 type                    { KEYWORD_RETURN(TYPE); }                               // CFA
    258258typedef                 { KEYWORD_RETURN(TYPEDEF); }
    259259typeof                  { KEYWORD_RETURN(TYPEOF); }                             // GCC
  • src/Parser/parser.cc

    r8f610e85 r4040425  
    147147     STRUCT = 286,
    148148     UNION = 287,
    149      TYPE = 288,
     149     OTYPE = 288,
    150150     FTYPE = 289,
    151151     DTYPE = 290,
    152      CONTEXT = 291,
     152     TRAIT = 291,
    153153     SIZEOF = 292,
    154154     OFFSETOF = 293,
     
    256256#define STRUCT 286
    257257#define UNION 287
    258 #define TYPE 288
     258#define OTYPE 288
    259259#define FTYPE 289
    260260#define DTYPE 290
    261 #define CONTEXT 291
     261#define TRAIT 291
    262262#define SIZEOF 292
    263263#define OFFSETOF 293
     
    11031103  "LVALUE", "VOID", "CHAR", "SHORT", "INT", "LONG", "FLOAT", "DOUBLE",
    11041104  "SIGNED", "UNSIGNED", "VALIST", "BOOL", "COMPLEX", "IMAGINARY", "TYPEOF",
    1105   "LABEL", "ENUM", "STRUCT", "UNION", "TYPE", "FTYPE", "DTYPE", "CONTEXT",
     1105  "LABEL", "ENUM", "STRUCT", "UNION", "OTYPE", "FTYPE", "DTYPE", "TRAIT",
    11061106  "SIZEOF", "OFFSETOF", "ATTRIBUTE", "EXTENSION", "IF", "ELSE", "SWITCH",
    11071107  "CASE", "DEFAULT", "DO", "WHILE", "FOR", "BREAK", "CONTINUE", "GOTO",
     
    11721172  "type_parameter", "$@2", "type_class", "assertion_list_opt", "assertion",
    11731173  "type_name_list", "type_declaring_list", "type_declarator",
    1174   "type_declarator_name", "context_specifier", "$@3",
    1175   "context_declaration_list", "context_declaration",
    1176   "new_context_declaring_list", "context_declaring_list",
    1177   "translation_unit", "external_definition_list",
    1178   "external_definition_list_opt", "external_definition", "$@4",
    1179   "external_function_definition", "function_definition", "declarator",
    1180   "subrange", "asm_name_opt", "attribute_list_opt", "attribute_list",
    1181   "attribute", "attribute_parameter_list", "attrib", "any_word",
    1182   "variable_declarator", "paren_identifier", "variable_ptr",
    1183   "variable_array", "variable_function", "function_declarator",
    1184   "function_no_ptr", "function_ptr", "function_array",
    1185   "old_function_declarator", "old_function_no_ptr", "old_function_ptr",
    1186   "old_function_array", "type_redeclarator", "paren_type", "type_ptr",
    1187   "type_array", "type_function", "identifier_parameter_declarator",
     1174  "type_declarator_name", "trait_specifier", "$@3",
     1175  "trait_declaration_list", "trait_declaration",
     1176  "new_trait_declaring_list", "trait_declaring_list", "translation_unit",
     1177  "external_definition_list", "external_definition_list_opt",
     1178  "external_definition", "$@4", "external_function_definition",
     1179  "function_definition", "declarator", "subrange", "asm_name_opt",
     1180  "attribute_list_opt", "attribute_list", "attribute",
     1181  "attribute_parameter_list", "attrib", "any_word", "variable_declarator",
     1182  "paren_identifier", "variable_ptr", "variable_array",
     1183  "variable_function", "function_declarator", "function_no_ptr",
     1184  "function_ptr", "function_array", "old_function_declarator",
     1185  "old_function_no_ptr", "old_function_ptr", "old_function_array",
     1186  "type_redeclarator", "paren_type", "type_ptr", "type_array",
     1187  "type_function", "identifier_parameter_declarator",
    11881188  "identifier_parameter_ptr", "identifier_parameter_array",
    11891189  "identifier_parameter_function", "type_parameter_redeclarator",
     
    76187618#line 1825 "parser.yy"
    76197619    {
    7620                         typedefTable.openContext( *(yyvsp[(2) - (5)].tok) );
    7621                         (yyval.decl) = DeclarationNode::newContextUse( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) );
     7620                        typedefTable.openTrait( *(yyvsp[(2) - (5)].tok) );
     7621                        (yyval.decl) = DeclarationNode::newTraitUse( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) );
    76227622                }
    76237623    break;
     
    77197719    {
    77207720                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (9)].tok), TypedefTable::ID );
    7721                         (yyval.decl) = DeclarationNode::newContext( (yyvsp[(2) - (9)].tok), (yyvsp[(5) - (9)].decl), 0 );
     7721                        (yyval.decl) = DeclarationNode::newTrait( (yyvsp[(2) - (9)].tok), (yyvsp[(5) - (9)].decl), 0 );
    77227722                }
    77237723    break;
     
    77287728#line 1881 "parser.yy"
    77297729    {
    7730                         typedefTable.enterContext( *(yyvsp[(2) - (8)].tok) );
     7730                        typedefTable.enterTrait( *(yyvsp[(2) - (8)].tok) );
    77317731                        typedefTable.enterScope();
    77327732                }
     
    77387738#line 1886 "parser.yy"
    77397739    {
    7740                         typedefTable.leaveContext();
     7740                        typedefTable.leaveTrait();
    77417741                        typedefTable.addToEnclosingScope( *(yyvsp[(2) - (11)].tok), TypedefTable::ID );
    7742                         (yyval.decl) = DeclarationNode::newContext( (yyvsp[(2) - (11)].tok), (yyvsp[(5) - (11)].decl), (yyvsp[(10) - (11)].decl) );
     7742                        (yyval.decl) = DeclarationNode::newTrait( (yyvsp[(2) - (11)].tok), (yyvsp[(5) - (11)].decl), (yyvsp[(10) - (11)].decl) );
    77437743                }
    77447744    break;
  • src/Parser/parser.h

    r8f610e85 r4040425  
    6868     STRUCT = 286,
    6969     UNION = 287,
    70      TYPE = 288,
     70     OTYPE = 288,
    7171     FTYPE = 289,
    7272     DTYPE = 290,
    73      CONTEXT = 291,
     73     TRAIT = 291,
    7474     SIZEOF = 292,
    7575     OFFSETOF = 293,
     
    177177#define STRUCT 286
    178178#define UNION 287
    179 #define TYPE 288
     179#define OTYPE 288
    180180#define FTYPE 289
    181181#define DTYPE 290
    182 #define CONTEXT 291
     182#define TRAIT 291
    183183#define SIZEOF 292
    184184#define OFFSETOF 293
  • src/Parser/parser.yy

    r8f610e85 r4040425  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sun Feb 28 11:49:18 2016
    13 // Update Count     : 1492
     12// Last Modified On : Wed Mar  2 17:24:45 2016
     13// Update Count     : 1495
    1414//
    1515
     
    7878%token TYPEOF LABEL                                                                             // GCC
    7979%token ENUM STRUCT UNION
    80 %token TYPE FTYPE DTYPE CONTEXT                                                 // CFA
     80%token OTYPE FTYPE DTYPE TRAIT                                          // CFA
    8181%token SIZEOF OFFSETOF
    8282%token ATTRIBUTE EXTENSION                                                              // GCC
     
    172172%type<decl> basic_declaration_specifier basic_type_name basic_type_specifier direct_type_name indirect_type_name
    173173
    174 %type<decl> context_declaration context_declaration_list context_declaring_list context_specifier
     174%type<decl> trait_declaration trait_declaration_list trait_declaring_list trait_specifier
    175175
    176176%type<decl> declaration declaration_list declaration_list_opt declaration_qualifier_list
     
    198198%type<decl> new_array_parameter_1st_dimension
    199199
    200 %type<decl> new_context_declaring_list new_declaration new_field_declaring_list
     200%type<decl> new_trait_declaring_list new_declaration new_field_declaring_list
    201201%type<decl> new_function_declaration new_function_return new_function_specifier
    202202
     
    10211021        | new_function_declaration pop ';'
    10221022        | type_declaring_list pop ';'
    1023         | context_specifier pop ';'
     1023        | trait_specifier pop ';'
    10241024        ;
    10251025
     
    18061806
    18071807type_class:                                                                                             // CFA
    1808         TYPE
     1808        OTYPE
    18091809                { $$ = DeclarationNode::Type; }
    18101810        | DTYPE
     
    18241824        '|' no_attr_identifier_or_type_name '(' type_name_list ')'
    18251825                {
    1826                         typedefTable.openContext( *$2 );
    1827                         $$ = DeclarationNode::newContextUse( $2, $4 );
    1828                 }
    1829         | '|' '{' push context_declaration_list '}'
     1826                        typedefTable.openTrait( *$2 );
     1827                        $$ = DeclarationNode::newTraitUse( $2, $4 );
     1828                }
     1829        | '|' '{' push trait_declaration_list '}'
    18301830                { $$ = $4; }
    1831         | '|' '(' push type_parameter_list pop ')' '{' push context_declaration_list '}' '(' type_name_list ')'
     1831        | '|' '(' push type_parameter_list pop ')' '{' push trait_declaration_list '}' '(' type_name_list ')'
    18321832                { $$ = 0; }
    18331833        ;
     
    18441844
    18451845type_declaring_list:                                                                    // CFA
    1846         TYPE type_declarator
    1847                 { $$ = $2; }
    1848         | storage_class_list TYPE type_declarator
     1846        OTYPE type_declarator
     1847                { $$ = $2; }
     1848        | storage_class_list OTYPE type_declarator
    18491849                { $$ = $3->addQualifiers( $1 ); }
    18501850        | type_declaring_list ',' type_declarator
     
    18721872        ;
    18731873
    1874 context_specifier:                                                                              // CFA
    1875         CONTEXT no_attr_identifier_or_type_name '(' push type_parameter_list pop ')' '{' '}'
     1874trait_specifier:                                                                                // CFA
     1875        TRAIT no_attr_identifier_or_type_name '(' push type_parameter_list pop ')' '{' '}'
    18761876                {
    18771877                        typedefTable.addToEnclosingScope( *$2, TypedefTable::ID );
    1878                         $$ = DeclarationNode::newContext( $2, $5, 0 );
    1879                 }
    1880         | CONTEXT no_attr_identifier_or_type_name '(' push type_parameter_list pop ')' '{'
    1881                 {
    1882                         typedefTable.enterContext( *$2 );
     1878                        $$ = DeclarationNode::newTrait( $2, $5, 0 );
     1879                }
     1880        | TRAIT no_attr_identifier_or_type_name '(' push type_parameter_list pop ')' '{'
     1881                {
     1882                        typedefTable.enterTrait( *$2 );
    18831883                        typedefTable.enterScope();
    18841884                }
    1885           context_declaration_list '}'
    1886                 {
    1887                         typedefTable.leaveContext();
     1885          trait_declaration_list '}'
     1886                {
     1887                        typedefTable.leaveTrait();
    18881888                        typedefTable.addToEnclosingScope( *$2, TypedefTable::ID );
    1889                         $$ = DeclarationNode::newContext( $2, $5, $10 );
    1890                 }
    1891         ;
    1892 
    1893 context_declaration_list:                                                               // CFA
    1894         context_declaration
    1895         | context_declaration_list push context_declaration
     1889                        $$ = DeclarationNode::newTrait( $2, $5, $10 );
     1890                }
     1891        ;
     1892
     1893trait_declaration_list:                                                         // CFA
     1894        trait_declaration
     1895        | trait_declaration_list push trait_declaration
    18961896                { $$ = $1->appendList( $3 ); }
    18971897        ;
    18981898
    1899 context_declaration:                                                                    // CFA
    1900         new_context_declaring_list pop ';'
    1901         | context_declaring_list pop ';'
    1902         ;
    1903 
    1904 new_context_declaring_list:                                                             // CFA
     1899trait_declaration:                                                                      // CFA
     1900        new_trait_declaring_list pop ';'
     1901        | trait_declaring_list pop ';'
     1902        ;
     1903
     1904new_trait_declaring_list:                                                               // CFA
    19051905        new_variable_specifier
    19061906                {
     
    19131913                        $$ = $1;
    19141914                }
    1915         | new_context_declaring_list pop ',' push identifier_or_type_name
     1915        | new_trait_declaring_list pop ',' push identifier_or_type_name
    19161916                {
    19171917                        typedefTable.addToEnclosingScope2( *$5, TypedefTable::ID );
     
    19201920        ;
    19211921
    1922 context_declaring_list:                                                                 // CFA
     1922trait_declaring_list:                                                                   // CFA
    19231923        type_specifier declarator
    19241924                {
     
    19261926                        $$ = $2->addType( $1 );
    19271927                }
    1928         | context_declaring_list pop ',' push declarator
     1928        | trait_declaring_list pop ',' push declarator
    19291929                {
    19301930                        typedefTable.addToEnclosingScope2( TypedefTable::ID );
Note: See TracChangeset for help on using the changeset viewer.