diff options
Diffstat (limited to 'test/racc')
88 files changed, 0 insertions, 83080 deletions
diff --git a/test/racc/assets/cadenza.y b/test/racc/assets/cadenza.y deleted file mode 100644 index 1940ead225..0000000000 --- a/test/racc/assets/cadenza.y +++ /dev/null @@ -1,170 +0,0 @@ -# This grammar is released under an MIT license -# Author: William Howard (http://github.com/whoward) -# Source: https://github.com/whoward/cadenza/blob/master/src/cadenza.y - -class Cadenza::RaccParser - -/* expect this many shift/reduce conflicts */ -expect 37 - -rule - target - : document - | /* none */ { result = nil } - ; - - parameter_list - : logical_expression { result = [val[0]] } - | parameter_list ',' logical_expression { result = val[0].push(val[2]) } - ; - - /* this has a shift/reduce conflict but since Racc will shift in this case it is the correct behavior */ - primary_expression - : IDENTIFIER { result = VariableNode.new(val[0].value) } - | IDENTIFIER parameter_list { result = VariableNode.new(val[0].value, val[1]) } - | INTEGER { result = ConstantNode.new(val[0].value) } - | REAL { result = ConstantNode.new(val[0].value) } - | STRING { result = ConstantNode.new(val[0].value) } - | '(' filtered_expression ')' { result = val[1] } - ; - - multiplicative_expression - : primary_expression - | multiplicative_expression '*' primary_expression { result = OperationNode.new(val[0], "*", val[2]) } - | multiplicative_expression '/' primary_expression { result = OperationNode.new(val[0], "/", val[2]) } - ; - - additive_expression - : multiplicative_expression - | additive_expression '+' multiplicative_expression { result = OperationNode.new(val[0], "+", val[2]) } - | additive_expression '-' multiplicative_expression { result = OperationNode.new(val[0], "-", val[2]) } - ; - - boolean_expression - : additive_expression - | boolean_expression OP_EQ additive_expression { result = OperationNode.new(val[0], "==", val[2]) } - | boolean_expression OP_NEQ additive_expression { result = OperationNode.new(val[0], "!=", val[2]) } - | boolean_expression OP_LEQ additive_expression { result = OperationNode.new(val[0], "<=", val[2]) } - | boolean_expression OP_GEQ additive_expression { result = OperationNode.new(val[0], ">=", val[2]) } - | boolean_expression '>' additive_expression { result = OperationNode.new(val[0], ">", val[2]) } - | boolean_expression '<' additive_expression { result = OperationNode.new(val[0], "<", val[2]) } - ; - - inverse_expression - : boolean_expression - | NOT boolean_expression { result = BooleanInverseNode.new(val[1]) } - ; - - logical_expression - : inverse_expression - | logical_expression AND inverse_expression { result = OperationNode.new(val[0], "and", val[2]) } - | logical_expression OR inverse_expression { result = OperationNode.new(val[0], "or", val[2]) } - ; - - filter - : IDENTIFIER { result = FilterNode.new(val[0].value) } - | IDENTIFIER ':' parameter_list { result = FilterNode.new(val[0].value, val[2]) } - ; - - filter_list - : filter { result = [val[0]] } - | filter_list '|' filter { result = val[0].push(val[2]) } - ; - - filtered_expression - : logical_expression - | logical_expression '|' filter_list { result = FilteredValueNode.new(val[0], val[2]) } - ; - - inject_statement - : VAR_OPEN filtered_expression VAR_CLOSE { result = val[1] } - ; - - if_tag - : STMT_OPEN IF logical_expression STMT_CLOSE { open_scope!; result = val[2] } - | STMT_OPEN UNLESS logical_expression STMT_CLOSE { open_scope!; result = BooleanInverseNode.new(val[2]) } - ; - - else_tag - : STMT_OPEN ELSE STMT_CLOSE { result = close_scope!; open_scope! } - ; - - end_if_tag - : STMT_OPEN ENDIF STMT_CLOSE { result = close_scope! } - | STMT_OPEN ENDUNLESS STMT_CLOSE { result = close_scope! } - ; - - if_block - : if_tag end_if_tag { result = IfNode.new(val[0], val[1]) } - | if_tag document end_if_tag { result = IfNode.new(val[0], val[2]) } - | if_tag else_tag document end_if_tag { result = IfNode.new(val[0], val[1], val[3]) } - | if_tag document else_tag end_if_tag { result = IfNode.new(val[0], val[2], val[3]) } - | if_tag document else_tag document end_if_tag { result = IfNode.new(val[0], val[2], val[4]) } - ; - - for_tag - : STMT_OPEN FOR IDENTIFIER IN filtered_expression STMT_CLOSE { open_scope!; result = [val[2].value, val[4]] } - ; - - end_for_tag - : STMT_OPEN ENDFOR STMT_CLOSE { result = close_scope! } - ; - - /* this has a shift/reduce conflict but since Racc will shift in this case it is the correct behavior */ - for_block - : for_tag end_for_tag { result = ForNode.new(VariableNode.new(val[0].first), val[0].last, val[1]) } - | for_tag document end_for_tag { result = ForNode.new(VariableNode.new(val[0].first), val[0].last, val[2]) } - ; - - block_tag - : STMT_OPEN BLOCK IDENTIFIER STMT_CLOSE { result = open_block_scope!(val[2].value) } - ; - - end_block_tag - : STMT_OPEN ENDBLOCK STMT_CLOSE { result = close_block_scope! } - ; - - /* this has a shift/reduce conflict but since Racc will shift in this case it is the correct behavior */ - block_block - : block_tag end_block_tag { result = BlockNode.new(val[0], val[1]) } - | block_tag document end_block_tag { result = BlockNode.new(val[0], val[2]) } - ; - - generic_block_tag - : STMT_OPEN IDENTIFIER STMT_CLOSE { open_scope!; result = [val[1].value, []] } - | STMT_OPEN IDENTIFIER parameter_list STMT_CLOSE { open_scope!; result = [val[1].value, val[2]] } - ; - - end_generic_block_tag - : STMT_OPEN END STMT_CLOSE { result = close_scope! } - ; - - generic_block - : generic_block_tag document end_generic_block_tag { result = GenericBlockNode.new(val[0].first, val[2], val[0].last) } - ; - - extends_statement - : STMT_OPEN EXTENDS STRING STMT_CLOSE { result = val[2].value } - | STMT_OPEN EXTENDS IDENTIFIER STMT_CLOSE { result = VariableNode.new(val[2].value) } - ; - - document_component - : TEXT_BLOCK { result = TextNode.new(val[0].value) } - | inject_statement - | if_block - | for_block - | generic_block - | block_block - ; - - document - : document_component { push val[0] } - | document document_component { push val[1] } - | extends_statement { document.extends = val[0] } - | document extends_statement { document.extends = val[1] } - ; - ----- header ---- -# racc_parser.rb : generated by racc - ----- inner ---- diff --git a/test/racc/assets/cast.y b/test/racc/assets/cast.y deleted file mode 100644 index d180c09e14..0000000000 --- a/test/racc/assets/cast.y +++ /dev/null @@ -1,926 +0,0 @@ -# The MIT License -# -# Copyright (c) George Ogata -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -class C::Parser -# shift/reduce conflict on "if (c) if (c) ; else ; else ;" -expect 1 -rule - -# A.2.4 External definitions - -# Returns TranslationUnit -translation_unit - : external_declaration {result = TranslationUnit.new_at(val[0].pos, NodeChain[val[0]])} - | translation_unit external_declaration {result = val[0]; result.entities << val[1]} - -# Returns Declaration|FunctionDef -external_declaration - : function_definition {result = val[0]} - | declaration {result = val[0]} - -# Returns FunctionDef -function_definition - : declaration_specifiers declarator declaration_list compound_statement {result = make_function_def(val[0][0], val[0][1], val[1], val[2], val[3])} - | declaration_specifiers declarator compound_statement {result = make_function_def(val[0][0], val[0][1], val[1], nil , val[2])} - -# Returns [Declaration] -declaration_list - : declaration {result = [val[0]]} - | declaration_list declaration {result = val[0] << val[1]} - -# A.2.3 Statements - -# Returns Statement -statement - : labeled_statement {result = val[0]} - | compound_statement {result = val[0]} - | expression_statement {result = val[0]} - | selection_statement {result = val[0]} - | iteration_statement {result = val[0]} - | jump_statement {result = val[0]} - -# Returns Statement -labeled_statement - : identifier COLON statement {val[2].labels.unshift(PlainLabel.new_at(val[0].pos, val[0].val)); result = val[2]} - | CASE constant_expression COLON statement {val[3].labels.unshift(Case .new_at(val[0].pos, val[1] )); result = val[3]} - | DEFAULT COLON statement {val[2].labels.unshift(Default .new_at(val[0].pos )); result = val[2]} - # type names can also be used as labels - | typedef_name COLON statement {val[2].labels.unshift(PlainLabel.new_at(val[0].pos, val[0].name)); result = val[2]} - -# Returns Block -compound_statement - : LBRACE block_item_list RBRACE {result = Block.new_at(val[0].pos, val[1])} - | LBRACE RBRACE {result = Block.new_at(val[0].pos )} - -# Returns NodeChain[Declaration|Statement] -block_item_list - : block_item {result = NodeChain[val[0]]} - | block_item_list block_item {result = val[0] << val[1]} - -# Returns Declaration|Statement -block_item - : declaration {result = val[0]} - | statement {result = val[0]} - -# Returns ExpressionStatement -expression_statement - : expression SEMICOLON {result = ExpressionStatement.new_at(val[0].pos, val[0])} - | SEMICOLON {result = ExpressionStatement.new_at(val[0].pos )} - -# Returns Statement -selection_statement - : IF LPAREN expression RPAREN statement {result = If .new_at(val[0].pos, val[2], val[4] )} - | IF LPAREN expression RPAREN statement ELSE statement {result = If .new_at(val[0].pos, val[2], val[4], val[6])} - | SWITCH LPAREN expression RPAREN statement {result = Switch.new_at(val[0].pos, val[2], val[4] )} - -# Returns Statement -iteration_statement - : WHILE LPAREN expression RPAREN statement {result = While.new_at(val[0].pos, val[2], val[4] )} - | DO statement WHILE LPAREN expression RPAREN SEMICOLON {result = While.new_at(val[0].pos, val[4], val[1], :do => true )} - | FOR LPAREN expression SEMICOLON expression SEMICOLON expression RPAREN statement {result = For.new_at(val[0].pos, val[2], val[4], val[6], val[8])} - | FOR LPAREN expression SEMICOLON expression SEMICOLON RPAREN statement {result = For.new_at(val[0].pos, val[2], val[4], nil , val[7])} - | FOR LPAREN expression SEMICOLON SEMICOLON expression RPAREN statement {result = For.new_at(val[0].pos, val[2], nil , val[5], val[7])} - | FOR LPAREN expression SEMICOLON SEMICOLON RPAREN statement {result = For.new_at(val[0].pos, val[2], nil , nil , val[6])} - | FOR LPAREN SEMICOLON expression SEMICOLON expression RPAREN statement {result = For.new_at(val[0].pos, nil , val[3], val[5], val[7])} - | FOR LPAREN SEMICOLON expression SEMICOLON RPAREN statement {result = For.new_at(val[0].pos, nil , val[3], nil , val[6])} - | FOR LPAREN SEMICOLON SEMICOLON expression RPAREN statement {result = For.new_at(val[0].pos, nil , nil , val[4], val[6])} - | FOR LPAREN SEMICOLON SEMICOLON RPAREN statement {result = For.new_at(val[0].pos, nil , nil , nil , val[5])} - | FOR LPAREN declaration expression SEMICOLON expression RPAREN statement {result = For.new_at(val[0].pos, val[2], val[3], val[5], val[7])} - | FOR LPAREN declaration expression SEMICOLON RPAREN statement {result = For.new_at(val[0].pos, val[2], val[3], nil , val[6])} - | FOR LPAREN declaration SEMICOLON expression RPAREN statement {result = For.new_at(val[0].pos, val[2], nil , val[4], val[6])} - | FOR LPAREN declaration SEMICOLON RPAREN statement {result = For.new_at(val[0].pos, val[2], nil , nil , val[5])} - -# Returns Statement -jump_statement - : GOTO identifier SEMICOLON {result = Goto .new_at(val[0].pos, val[1].val)} - | CONTINUE SEMICOLON {result = Continue.new_at(val[0].pos )} - | BREAK SEMICOLON {result = Break .new_at(val[0].pos )} - | RETURN expression SEMICOLON {result = Return .new_at(val[0].pos, val[1] )} - | RETURN SEMICOLON {result = Return .new_at(val[0].pos )} - # type names can also be used as labels - | GOTO typedef_name SEMICOLON {result = Goto .new_at(val[0].pos, val[1].name)} - -# A.2.2 Declarations - -# Returns Declaration -declaration - : declaration_specifiers init_declarator_list SEMICOLON {result = make_declaration(val[0][0], val[0][1], val[1])} - | declaration_specifiers SEMICOLON {result = make_declaration(val[0][0], val[0][1], NodeArray[])} - -# Returns {Pos, [Symbol]} -declaration_specifiers - : storage_class_specifier declaration_specifiers {val[1][1] << val[0][1]; result = val[1]} - | storage_class_specifier {result = [val[0][0], [val[0][1]]]} - | type_specifier declaration_specifiers {val[1][1] << val[0][1]; result = val[1]} - | type_specifier {result = [val[0][0], [val[0][1]]]} - | type_qualifier declaration_specifiers {val[1][1] << val[0][1]; result = val[1]} - | type_qualifier {result = [val[0][0], [val[0][1]]]} - | function_specifier declaration_specifiers {val[1][1] << val[0][1]; result = val[1]} - | function_specifier {result = [val[0][0], [val[0][1]]]} - -# Returns NodeArray[Declarator] -init_declarator_list - : init_declarator {result = NodeArray[val[0]]} - | init_declarator_list COMMA init_declarator {result = val[0] << val[2]} - -# Returns Declarator -init_declarator - : declarator {result = val[0]} - | declarator EQ initializer {val[0].init = val[2]; result = val[0]} - -# Returns [Pos, Symbol] -storage_class_specifier - : TYPEDEF {result = [val[0].pos, :typedef ]} - | EXTERN {result = [val[0].pos, :extern ]} - | STATIC {result = [val[0].pos, :static ]} - | AUTO {result = [val[0].pos, :auto ]} - | REGISTER {result = [val[0].pos, :register]} - -# Returns [Pos, Type|Symbol] -type_specifier - : VOID {result = [val[0].pos, :void ]} - | CHAR {result = [val[0].pos, :char ]} - | SHORT {result = [val[0].pos, :short ]} - | INT {result = [val[0].pos, :int ]} - | LONG {result = [val[0].pos, :long ]} - | FLOAT {result = [val[0].pos, :float ]} - | DOUBLE {result = [val[0].pos, :double ]} - | SIGNED {result = [val[0].pos, :signed ]} - | UNSIGNED {result = [val[0].pos, :unsigned ]} - | BOOL {result = [val[0].pos, :_Bool ]} - | COMPLEX {result = [val[0].pos, :_Complex ]} - | IMAGINARY {result = [val[0].pos, :_Imaginary]} - | struct_or_union_specifier {result = [val[0].pos, val[0] ]} - | enum_specifier {result = [val[0].pos, val[0] ]} - | typedef_name {result = [val[0].pos, val[0] ]} - -# Returns Struct|Union -struct_or_union_specifier - : struct_or_union identifier LBRACE struct_declaration_list RBRACE {result = val[0][1].new_at(val[0][0], val[1].val, val[3])} - | struct_or_union LBRACE struct_declaration_list RBRACE {result = val[0][1].new_at(val[0][0], nil , val[2])} - | struct_or_union identifier {result = val[0][1].new_at(val[0][0], val[1].val, nil )} - # type names can also be used as struct identifiers - | struct_or_union typedef_name LBRACE struct_declaration_list RBRACE {result = val[0][1].new_at(val[0][0], val[1].name, val[3])} - | struct_or_union typedef_name {result = val[0][1].new_at(val[0][0], val[1].name, nil )} - -# Returns [Pos, Class] -struct_or_union - : STRUCT {result = [val[0].pos, Struct]} - | UNION {result = [val[0].pos, Union ]} - -# Returns NodeArray[Declaration] -struct_declaration_list - : struct_declaration {result = NodeArray[val[0]]} - | struct_declaration_list struct_declaration {val[0] << val[1]; result = val[0]} - -# Returns Declaration -struct_declaration - : specifier_qualifier_list struct_declarator_list SEMICOLON {result = make_declaration(val[0][0], val[0][1], val[1])} - -# Returns {Pos, [Symbol]} -specifier_qualifier_list - : type_specifier specifier_qualifier_list {val[1][1] << val[0][1]; result = val[1]} - | type_specifier {result = [val[0][0], [val[0][1]]]} - | type_qualifier specifier_qualifier_list {val[1][1] << val[0][1]; result = val[1]} - | type_qualifier {result = [val[0][0], [val[0][1]]]} - -# Returns NodeArray[Declarator] -struct_declarator_list - : struct_declarator {result = NodeArray[val[0]]} - | struct_declarator_list COMMA struct_declarator {result = val[0] << val[2]} - -# Returns Declarator -struct_declarator - : declarator {result = val[0]} - | declarator COLON constant_expression {result = val[0]; val[0].num_bits = val[2]} - | COLON constant_expression {result = Declarator.new_at(val[0].pos, :num_bits => val[1])} - -# Returns Enum -enum_specifier - : ENUM identifier LBRACE enumerator_list RBRACE {result = Enum.new_at(val[0].pos, val[1].val, val[3])} - | ENUM LBRACE enumerator_list RBRACE {result = Enum.new_at(val[0].pos, nil , val[2])} - | ENUM identifier LBRACE enumerator_list COMMA RBRACE {result = Enum.new_at(val[0].pos, val[1].val, val[3])} - | ENUM LBRACE enumerator_list COMMA RBRACE {result = Enum.new_at(val[0].pos, nil , val[2])} - | ENUM identifier {result = Enum.new_at(val[0].pos, val[1].val, nil )} - # type names can also be used as enum names - | ENUM typedef_name LBRACE enumerator_list RBRACE {result = Enum.new_at(val[0].pos, val[1].name, val[3])} - | ENUM typedef_name LBRACE enumerator_list COMMA RBRACE {result = Enum.new_at(val[0].pos, val[1].name, val[3])} - | ENUM typedef_name {result = Enum.new_at(val[0].pos, val[1].name, nil )} - -# Returns NodeArray[Enumerator] -enumerator_list - : enumerator {result = NodeArray[val[0]]} - | enumerator_list COMMA enumerator {result = val[0] << val[2]} - -# Returns Enumerator -enumerator - : enumeration_constant {result = Enumerator.new_at(val[0].pos, val[0].val, nil )} - | enumeration_constant EQ constant_expression {result = Enumerator.new_at(val[0].pos, val[0].val, val[2])} - -# Returns [Pos, Symbol] -type_qualifier - : CONST {result = [val[0].pos, :const ]} - | RESTRICT {result = [val[0].pos, :restrict]} - | VOLATILE {result = [val[0].pos, :volatile]} - -# Returns [Pos, Symbol] -function_specifier - : INLINE {result = [val[0].pos, :inline]} - -# Returns Declarator -declarator - : pointer direct_declarator {result = add_decl_type(val[1], val[0])} - | direct_declarator {result = val[0]} - -# Returns Declarator -direct_declarator - : identifier {result = Declarator.new_at(val[0].pos, nil, val[0].val)} - | LPAREN declarator RPAREN {result = val[1]} - | direct_declarator LBRACKET type_qualifier_list assignment_expression RBRACKET {result = add_decl_type(val[0], Array.new_at(val[0].pos ))} # TODO - | direct_declarator LBRACKET type_qualifier_list RBRACKET {result = add_decl_type(val[0], Array.new_at(val[0].pos ))} # TODO - | direct_declarator LBRACKET assignment_expression RBRACKET {result = add_decl_type(val[0], Array.new_at(val[0].pos, nil, val[2]))} - | direct_declarator LBRACKET RBRACKET {result = add_decl_type(val[0], Array.new_at(val[0].pos ))} - | direct_declarator LBRACKET STATIC type_qualifier_list assignment_expression RBRACKET {result = add_decl_type(val[0], Array.new_at(val[0].pos ))} # TODO - | direct_declarator LBRACKET STATIC assignment_expression RBRACKET {result = add_decl_type(val[0], Array.new_at(val[0].pos ))} # TODO - | direct_declarator LBRACKET type_qualifier_list STATIC assignment_expression RBRACKET {result = add_decl_type(val[0], Array.new_at(val[0].pos ))} # TODO - | direct_declarator LBRACKET type_qualifier_list MUL RBRACKET {result = add_decl_type(val[0], Array.new_at(val[0].pos ))} # TODO - | direct_declarator LBRACKET MUL RBRACKET {result = add_decl_type(val[0], Array.new_at(val[0].pos ))} # TODO - | direct_declarator LPAREN parameter_type_list RPAREN {result = add_decl_type(val[0], Function.new_at(val[0].pos, nil, param_list(*val[2]), :var_args => val[2][1]))} - | direct_declarator LPAREN identifier_list RPAREN {result = add_decl_type(val[0], Function.new_at(val[0].pos, nil, val[2]))} - | direct_declarator LPAREN RPAREN {result = add_decl_type(val[0], Function.new_at(val[0].pos ))} - -# Returns Pointer -pointer - : MUL type_qualifier_list {result = add_type_quals(Pointer.new_at(val[0].pos), val[1][1]) } - | MUL {result = Pointer.new_at(val[0].pos) } - | MUL type_qualifier_list pointer {p = add_type_quals(Pointer.new_at(val[0].pos), val[1][1]); val[2].direct_type = p; result = val[2]} - | MUL pointer {p = Pointer.new_at(val[0].pos) ; val[1].direct_type = p; result = val[1]} - -# Returns {Pos, [Symbol]} -type_qualifier_list - : type_qualifier {result = [val[0][0], [val[0][1]]]} - | type_qualifier_list type_qualifier {val[0][1] << val[1][1]; result = val[0]} - -# Returns [NodeArray[Parameter], var_args?] -parameter_type_list - : parameter_list {result = [val[0], false]} - | parameter_list COMMA ELLIPSIS {result = [val[0], true ]} - -# Returns NodeArray[Parameter] -parameter_list - : parameter_declaration {result = NodeArray[val[0]]} - | parameter_list COMMA parameter_declaration {result = val[0] << val[2]} - -# Returns Parameter -parameter_declaration - : declaration_specifiers declarator {ind_type = val[1].indirect_type and ind_type.detach - result = make_parameter(val[0][0], val[0][1], ind_type, val[1].name)} - | declaration_specifiers abstract_declarator {result = make_parameter(val[0][0], val[0][1], val[1] , nil )} - | declaration_specifiers {result = make_parameter(val[0][0], val[0][1], nil , nil )} - -# Returns NodeArray[Parameter] -identifier_list - : identifier {result = NodeArray[Parameter.new_at(val[0].pos, nil, val[0].val)]} - | identifier_list COMMA identifier {result = val[0] << Parameter.new_at(val[2].pos, nil, val[2].val)} - -# Returns Type -type_name - : specifier_qualifier_list abstract_declarator {val[1].direct_type = make_direct_type(val[0][0], val[0][1]); result = val[1]} - | specifier_qualifier_list {result = make_direct_type(val[0][0], val[0][1]) } - -# Returns Type -abstract_declarator - : pointer {result = val[0]} - | pointer direct_abstract_declarator {val[1].direct_type = val[0]; result = val[1]} - | direct_abstract_declarator {result = val[0]} - -# Returns Type -direct_abstract_declarator - : LPAREN abstract_declarator RPAREN {result = val[1]} - | direct_abstract_declarator LBRACKET assignment_expression RBRACKET {val[0].direct_type = Array.new_at(val[0].pos, nil, val[2]); result = val[0]} - | direct_abstract_declarator LBRACKET RBRACKET {val[0].direct_type = Array.new_at(val[0].pos, nil, nil ); result = val[0]} - | LBRACKET assignment_expression RBRACKET {result = Array.new_at(val[0].pos, nil, val[1])} - | LBRACKET RBRACKET {result = Array.new_at(val[0].pos )} - | direct_abstract_declarator LBRACKET MUL RBRACKET {val[0].direct_type = Array.new_at(val[0].pos); result = val[0]} # TODO - | LBRACKET MUL RBRACKET {result = Array.new_at(val[0].pos)} # TODO - | direct_abstract_declarator LPAREN parameter_type_list RPAREN {val[0].direct_type = Function.new_at(val[0].pos, nil, param_list(*val[2]), val[2][1]); result = val[0]} - | direct_abstract_declarator LPAREN RPAREN {val[0].direct_type = Function.new_at(val[0].pos ); result = val[0]} - | LPAREN parameter_type_list RPAREN {result = Function.new_at(val[0].pos, nil, param_list(*val[1]), val[1][1])} - | LPAREN RPAREN {result = Function.new_at(val[0].pos )} - -# Returns CustomType -typedef_name - #: identifier -- insufficient since we must distinguish between type - # names and var names (otherwise we have a conflict) - : TYPENAME {result = CustomType.new_at(val[0].pos, val[0].val)} - -# Returns Expression -initializer - : assignment_expression {result = val[0]} - | LBRACE initializer_list RBRACE {result = CompoundLiteral.new_at(val[0].pos, nil, val[1])} - | LBRACE initializer_list COMMA RBRACE {result = CompoundLiteral.new_at(val[0].pos, nil, val[1])} - -# Returns NodeArray[MemberInit] -initializer_list - : designation initializer {result = NodeArray[MemberInit.new_at(val[0][0] , val[0][1], val[1])]} - | initializer {result = NodeArray[MemberInit.new_at(val[0].pos, nil , val[0])]} - | initializer_list COMMA designation initializer {result = val[0] << MemberInit.new_at(val[2][0] , val[2][1], val[3])} - | initializer_list COMMA initializer {result = val[0] << MemberInit.new_at(val[2].pos, nil , val[2])} - -# Returns {Pos, NodeArray[Expression|Token]} -designation - : designator_list EQ {result = val[0]} - -# Returns {Pos, NodeArray[Expression|Token]} -designator_list - : designator {result = val[0]; val[0][1] = NodeArray[val[0][1]]} - | designator_list designator {result = val[0]; val[0][1] << val[1][1]} - -# Returns {Pos, Expression|Member} -designator - : LBRACKET constant_expression RBRACKET {result = [val[1].pos, val[1] ]} - | DOT identifier {result = [val[1].pos, Member.new_at(val[1].pos, val[1].val)]} - -# A.2.1 Expressions - -# Returns Expression -primary_expression - : identifier {result = Variable.new_at(val[0].pos, val[0].val)} - | constant {result = val[0]} - | string_literal {result = val[0]} - # GCC EXTENSION: allow a compound statement in parentheses as an expression - | LPAREN expression RPAREN {result = val[1]} - | LPAREN compound_statement RPAREN {block_expressions_enabled? or parse_error val[0].pos, "compound statement found where expression expected" - result = BlockExpression.new(val[1]); result.pos = val[0].pos} - -# Returns Expression -postfix_expression - : primary_expression {result = val[0]} - | postfix_expression LBRACKET expression RBRACKET {result = Index .new_at(val[0].pos, val[0], val[2])} - | postfix_expression LPAREN argument_expression_list RPAREN {result = Call .new_at(val[0].pos, val[0], val[2] )} - | postfix_expression LPAREN RPAREN {result = Call .new_at(val[0].pos, val[0], NodeArray[])} - | postfix_expression DOT identifier {result = Dot .new_at(val[0].pos, val[0], Member.new(val[2].val))} - | postfix_expression ARROW identifier {result = Arrow .new_at(val[0].pos, val[0], Member.new(val[2].val))} - | postfix_expression INC {result = PostInc .new_at(val[0].pos, val[0] )} - | postfix_expression DEC {result = PostDec .new_at(val[0].pos, val[0] )} - | LPAREN type_name RPAREN LBRACE initializer_list RBRACE {result = CompoundLiteral.new_at(val[0].pos, val[1], val[4])} - | LPAREN type_name RPAREN LBRACE initializer_list COMMA RBRACE {result = CompoundLiteral.new_at(val[0].pos, val[1], val[4])} - -# Returns [Expression|Type] -argument_expression_list - : argument_expression {result = NodeArray[val[0]]} - | argument_expression_list COMMA argument_expression {result = val[0] << val[2]} - -# Returns Expression|Type -- EXTENSION: allow type names here too, to support some standard library macros (e.g., va_arg [7.15.1.1]) -argument_expression - : assignment_expression {result = val[0]} - | type_name {result = val[0]} - -# Returns Expression -unary_expression - : postfix_expression {result = val[0]} - | INC unary_expression {result = PreInc.new_at(val[0].pos, val[1])} - | DEC unary_expression {result = PreDec.new_at(val[0].pos, val[1])} - | unary_operator cast_expression {result = val[0][0].new_at(val[0][1], val[1])} - | SIZEOF unary_expression {result = Sizeof.new_at(val[0].pos, val[1])} - | SIZEOF LPAREN type_name RPAREN {result = Sizeof.new_at(val[0].pos, val[2])} - -# Returns [Class, Pos] -unary_operator - : AND {result = [Address , val[0].pos]} - | MUL {result = [Dereference, val[0].pos]} - | ADD {result = [Positive , val[0].pos]} - | SUB {result = [Negative , val[0].pos]} - | NOT {result = [BitNot , val[0].pos]} - | BANG {result = [Not , val[0].pos]} - -# Returns Expression -cast_expression - : unary_expression {result = val[0]} - | LPAREN type_name RPAREN cast_expression {result = Cast.new_at(val[0].pos, val[1], val[3])} - -# Returns Expression -multiplicative_expression - : cast_expression {result = val[0]} - | multiplicative_expression MUL cast_expression {result = Multiply.new_at(val[0].pos, val[0], val[2])} - | multiplicative_expression DIV cast_expression {result = Divide .new_at(val[0].pos, val[0], val[2])} - | multiplicative_expression MOD cast_expression {result = Mod .new_at(val[0].pos, val[0], val[2])} - -# Returns Expression -additive_expression - : multiplicative_expression {result = val[0]} - | additive_expression ADD multiplicative_expression {result = Add .new_at(val[0].pos, val[0], val[2])} - | additive_expression SUB multiplicative_expression {result = Subtract.new_at(val[0].pos, val[0], val[2])} - -# Returns Expression -shift_expression - : additive_expression {result = val[0]} - | shift_expression LSHIFT additive_expression {result = ShiftLeft .new_at(val[0].pos, val[0], val[2])} - | shift_expression RSHIFT additive_expression {result = ShiftRight.new_at(val[0].pos, val[0], val[2])} - -# Returns Expression -relational_expression - : shift_expression {result = val[0]} - | relational_expression LT shift_expression {result = Less.new_at(val[0].pos, val[0], val[2])} - | relational_expression GT shift_expression {result = More.new_at(val[0].pos, val[0], val[2])} - | relational_expression LEQ shift_expression {result = LessOrEqual.new_at(val[0].pos, val[0], val[2])} - | relational_expression GEQ shift_expression {result = MoreOrEqual.new_at(val[0].pos, val[0], val[2])} - -# Returns Expression -equality_expression - : relational_expression {result = val[0]} - | equality_expression EQEQ relational_expression {result = Equal .new_at(val[0].pos, val[0], val[2])} - | equality_expression NEQ relational_expression {result = NotEqual.new_at(val[0].pos, val[0], val[2])} - -# Returns Expression -and_expression - : equality_expression {result = val[0]} - | and_expression AND equality_expression {result = BitAnd.new_at(val[0].pos, val[0], val[2])} - -# Returns Expression -exclusive_or_expression - : and_expression {result = val[0]} - | exclusive_or_expression XOR and_expression {result = BitXor.new_at(val[0].pos, val[0], val[2])} - -# Returns Expression -inclusive_or_expression - : exclusive_or_expression {result = val[0]} - | inclusive_or_expression OR exclusive_or_expression {result = BitOr.new_at(val[0].pos, val[0], val[2])} - -# Returns Expression -logical_and_expression - : inclusive_or_expression {result = val[0]} - | logical_and_expression ANDAND inclusive_or_expression {result = And.new_at(val[0].pos, val[0], val[2])} - -# Returns Expression -logical_or_expression - : logical_and_expression {result = val[0]} - | logical_or_expression OROR logical_and_expression {result = Or.new_at(val[0].pos, val[0], val[2])} - -# Returns Expression -conditional_expression - : logical_or_expression {result = val[0]} - | logical_or_expression QUESTION expression COLON conditional_expression {result = Conditional.new_at(val[0].pos, val[0], val[2], val[4])} - -# Returns Expression -assignment_expression - : conditional_expression {result = val[0]} - | unary_expression assignment_operator assignment_expression {result = val[1].new_at(val[0].pos, val[0], val[2])} - -# Returns Class -assignment_operator - : EQ {result = Assign} - | MULEQ {result = MultiplyAssign} - | DIVEQ {result = DivideAssign} - | MODEQ {result = ModAssign} - | ADDEQ {result = AddAssign} - | SUBEQ {result = SubtractAssign} - | LSHIFTEQ {result = ShiftLeftAssign} - | RSHIFTEQ {result = ShiftRightAssign} - | ANDEQ {result = BitAndAssign} - | XOREQ {result = BitXorAssign} - | OREQ {result = BitOrAssign} - -# Returns Expression -expression - : assignment_expression {result = val[0]} - | expression COMMA assignment_expression { - if val[0].is_a? Comma - if val[2].is_a? Comma - val[0].exprs.push(*val[2].exprs) - else - val[0].exprs << val[2] - end - result = val[0] - else - if val[2].is_a? Comma - val[2].exprs.unshift(val[0]) - val[2].pos = val[0].pos - result = val[2] - else - result = Comma.new_at(val[0].pos, NodeArray[val[0], val[2]]) - end - end - } - -# Returns Expression -constant_expression - : conditional_expression {result = val[0]} - -# A.1.1 -- Lexical elements -# -# token -# : keyword (raw string) -# | identifier expanded below -# | constant expanded below -# | string_literal expanded below -# | punctuator (raw string) -# -# preprocessing-token (skip) - -# Returns Token -identifier - : ID {result = val[0]} - -# Returns Literal -constant - : ICON {result = val[0].val; result.pos = val[0].pos} - | FCON {result = val[0].val; result.pos = val[0].pos} - #| enumeration_constant -- these are parsed as identifiers at all - # places the `constant' nonterminal appears - | CCON {result = val[0].val; result.pos = val[0].pos} - -# Returns Token -enumeration_constant - : ID {result = val[0]} - -# Returns StringLiteral -# Also handles string literal concatenation (6.4.5.4) -string_literal - : string_literal SCON {val[0].val << val[1].val.val; result = val[0]} - | SCON { result = val[0].val; result.pos = val[0].pos } - ----- inner - # A.1.9 -- Preprocessing numbers -- skip - # A.1.8 -- Header names -- skip - - # A.1.7 -- Puncuators -- we don't bother with {##,#,%:,%:%:} since - # we don't do preprocessing - @@punctuators = %r'\+\+|-[->]|&&|\|\||\.\.\.|(?:<<|>>|[<>=!*/%+\-&^|])=?|[\[\](){}.~?:;,]' - @@digraphs = %r'<[:%]|[:%]>' - - # A.1.6 -- String Literals -- simple for us because we don't decode - # the string (and indeed accept some illegal strings) - @@string_literal = %r'L?"(?:[^\\]|\\.)*?"'m - - # A.1.5 -- Constants - @@decimal_floating_constant = %r'(?:(?:\d*\.\d+|\d+\.)(?:e[-+]?\d+)?|\d+e[-+]?\d+)[fl]?'i - @@hexadecimal_floating_constant = %r'0x(?:(?:[0-9a-f]*\.[0-9a-f]+|[0-9a-f]+\.)|[0-9a-f]+)p[-+]?\d+[fl]?'i - - @@integer_constant = %r'(?:[1-9][0-9]*|0x[0-9a-f]+|0[0-7]*)(?:ul?l?|ll?u?)?'i - @@floating_constant = %r'#{@@decimal_floating_constant}|#{@@hexadecimal_floating_constant}' - @@enumeration_constant = %r'[a-zA-Z_\\][a-zA-Z_\\0-9]*' - @@character_constant = %r"L?'(?:[^\\]|\\.)+?'" - # (note that as with string-literals, we accept some illegal - # character-constants) - - # A.1.4 -- Universal character names -- skip - - # A.1.3 -- Identifiers -- skip, since an identifier is lexically - # identical to an enumeration constant - - # A.1.2 Keywords - keywords = %w'auto break case char const continue default do -double else enum extern float for goto if inline int long register -restrict return short signed sizeof static struct switch typedef union - unsigned void volatile while _Bool _Complex _Imaginary' - @@keywords = %r"#{keywords.join('|')}" - - def initialize - @type_names = ::Set.new - - @warning_proc = lambda{} - @pos = C::Node::Pos.new(nil, 1, 0) - end - def initialize_copy(x) - @pos = x.pos.dup - @type_names = x.type_names.dup - end - attr_accessor :pos, :type_names - - def parse(str) - if str.respond_to? :read - str = str.read - end - @str = str - begin - prepare_lexer(str) - return do_parse - rescue ParseError => e - e.set_backtrace(caller) - raise - end - end - - # - # Error handler, as used by racc. - # - def on_error(error_token_id, error_value, value_stack) - if error_value == '$' - parse_error @pos, "unexpected EOF" - else - parse_error(error_value.pos, - "parse error on #{token_to_str(error_token_id)} (#{error_value.val})") - end - end - - def self.feature(name) - attr_writer "#{name}_enabled" - class_eval <<-EOS - def enable_#{name} - @#{name}_enabled = true - end - def #{name}_enabled? - @#{name}_enabled - end - EOS - end - private_class_method :feature - - # - # Allow blocks in parentheses as expressions, as per the gcc - # extension. [http://rubyurl.com/iB7] - # - feature :block_expressions - - private # --------------------------------------------------------- - - class Token - attr_accessor :pos, :val - def initialize(pos, val) - @pos = pos - @val = val - end - end - def eat(str) - lines = str.split(/\r\n|[\r\n]/, -1) - if lines.length == 1 - @pos.col_num += lines[0].length - else - @pos.line_num += lines.length - 1 - @pos.col_num = lines[-1].length - end - end - - # - # Make a Declaration from the given specs and declarators. - # - def make_declaration(pos, specs, declarators) - specs.all?{|x| x.is_a?(Symbol) || x.is_a?(Type)} or raise specs.map{|x| x.class}.inspect - decl = Declaration.new_at(pos, nil, declarators) - - # set storage class - storage_classes = specs.find_all do |x| - [:typedef, :extern, :static, :auto, :register].include? x - end - # 6.7.1p2: at most, one storage-class specifier may be given in - # the declaration specifiers in a declaration - storage_classes.length <= 1 or - begin - if declarators.length == 0 - for_name = '' - else - for_name = "for `#{declarators[0].name}'" - end - parse_error pos, "multiple or duplicate storage classes given #{for_name}'" - end - decl.storage = storage_classes[0] - - # set type (specifiers, qualifiers) - decl.type = make_direct_type(pos, specs) - - # set function specifiers - decl.inline = specs.include?(:inline) - - # look for new type names - if decl.typedef? - decl.declarators.each do |d| - if d.name - @type_names << d.name - end - end - end - - return decl - end - - def make_function_def(pos, specs, func_declarator, decl_list, defn) - add_decl_type(func_declarator, make_direct_type(pos, specs)) - - # get types from decl_list if necessary - function = func_declarator.indirect_type - function.is_a? Function or - parse_error pos, "non function type for function `#{func_declarator.name}'" - params = function.params - if decl_list - params.all?{|p| p.type.nil?} or - parse_error pos, "both prototype and declaration list given for `#{func_declarator.name}'" - decl_list.each do |declaration| - declaration.declarators.each do |declarator| - param = params.find{|p| p.name == declarator.name} or - parse_error pos, "no parameter named #{declarator.name}" - if declarator.indirect_type - param.type = declarator.indirect_type - param.type.direct_type = declaration.type.dup - else - param.type = declaration.type.dup - end - end - end - params.all?{|p| p.type} or - begin - s = params.find_all{|p| p.type.nil?}.map{|p| "`#{p.name}'"}.join(' and ') - parse_error pos, "types missing for parameters #{s}" - end - end - - fd = FunctionDef.new_at(pos, - function.detach, - func_declarator.name, - defn, - :no_prototype => !decl_list.nil?) - - # set storage class - # 6.9.1p4: only extern or static allowed - specs.each do |s| - [:typedef, :auto, :register].include?(s) and - "`#{s}' illegal for function" - end - storage_classes = specs.find_all do |s| - s == :extern || s == :static - end - # 6.7.1p2: at most, one storage-class specifier may be given in - # the declaration specifiers in a declaration - storage_classes.length <= 1 or - "multiple or duplicate storage classes given for `#{func_declarator.name}'" - fd.storage = storage_classes[0] if storage_classes[0] - - # set function specifiers - # 6.7.4p5 'inline' can be repeated - fd.inline = specs.include?(:inline) - - return fd - end - - # - # Make a direct type from the list of type specifiers and type - # qualifiers. - # - def make_direct_type(pos, specs) - specs_order = [:signed, :unsigned, :short, :long, :double, :void, - :char, :int, :float, :_Bool, :_Complex, :_Imaginary] - - type_specs = specs.find_all do |x| - specs_order.include?(x) || !x.is_a?(Symbol) - end - type_specs.sort! do |a, b| - (specs_order.index(a)||100) <=> (specs_order.index(b)||100) - end - - # set type specifiers - # 6.7.2p2: the specifier list should be one of these - type = - case type_specs - when [:void] - Void.new - when [:char] - Char.new - when [:signed, :char] - Char.new :signed => true - when [:unsigned, :char] - Char.new :signed => false - when [:short], [:signed, :short], [:short, :int], - [:signed, :short, :int] - Int.new :longness => -1 - when [:unsigned, :short], [:unsigned, :short, :int] - Int.new :unsigned => true, :longness => -1 - when [:int], [:signed], [:signed, :int] - Int.new - when [:unsigned], [:unsigned, :int] - Int.new :unsigned => true - when [:long], [:signed, :long], [:long, :int], - [:signed, :long, :int] - Int.new :longness => 1 - when [:unsigned, :long], [:unsigned, :long, :int] - Int.new :longness => 1, :unsigned => true - when [:long, :long], [:signed, :long, :long], - [:long, :long, :int], [:signed, :long, :long, :int] - Int.new :longness => 2 - when [:unsigned, :long, :long], [:unsigned, :long, :long, :int] - Int.new :longness => 2, :unsigned => true - when [:float] - Float.new - when [:double] - Float.new :longness => 1 - when [:long, :double] - Float.new :longness => 2 - when [:_Bool] - Bool.new - when [:float, :_Complex] - Complex.new - when [:double, :_Complex] - Complex.new :longness => 1 - when [:long, :double, :_Complex] - Complex.new :longness => 2 - when [:float, :_Imaginary] - Imaginary.new - when [:double, :_Imaginary] - Imaginary.new :longness => 1 - when [:long, :double, :_Imaginary] - Imaginary.new :longness => 2 - else - if type_specs.length == 1 && - [CustomType, Struct, Union, Enum].any?{|c| type_specs[0].is_a? c} - type_specs[0] - else - if type_specs == [] - parse_error pos, "no type specifiers given" - else - parse_error pos, "invalid type specifier combination: #{type_specs.join(' ')}" - end - end - end - type.pos ||= pos - - # set type qualifiers - # 6.7.3p4: type qualifiers can be repeated - type.const = specs.any?{|x| x.equal? :const } - type.restrict = specs.any?{|x| x.equal? :restrict} - type.volatile = specs.any?{|x| x.equal? :volatile} - - return type - end - - def make_parameter(pos, specs, indirect_type, name) - type = indirect_type - if type - type.direct_type = make_direct_type(pos, specs) - else - type = make_direct_type(pos, specs) - end - [:typedef, :extern, :static, :auto, :inline].each do |sym| - specs.include? sym and - parse_error pos, "parameter `#{declarator.name}' declared `#{sym}'" - end - return Parameter.new_at(pos, type, name, - :register => specs.include?(:register)) - end - - def add_type_quals(type, quals) - type.const = quals.include?(:const ) - type.restrict = quals.include?(:restrict) - type.volatile = quals.include?(:volatile) - return type - end - - # - # Add te given type as the "most direct" type to the given - # declarator. Return the declarator. - # - def add_decl_type(declarator, type) - if declarator.indirect_type - declarator.indirect_type.direct_type = type - else - declarator.indirect_type = type - end - return declarator - end - - def param_list(params, var_args) - if params.length == 1 && - params[0].type.is_a?(Void) && - params[0].name.nil? - return NodeArray[] - elsif params.empty? - return nil - else - return params - end - end - - def parse_error(pos, str) - raise ParseError, "#{pos}: #{str}" - end - ----- header - -require 'set' - -# Error classes -module C - class ParseError < StandardError; end -end - -# Local variables: -# mode: ruby -# end: diff --git a/test/racc/assets/chk.y b/test/racc/assets/chk.y deleted file mode 100644 index 7e0ee20f1e..0000000000 --- a/test/racc/assets/chk.y +++ /dev/null @@ -1,126 +0,0 @@ -# -# racc tester -# - -class Calcp - - prechigh - left '*' '/' - left '+' '-' - preclow - - convert - NUMBER 'Number' - end - -rule - - target : exp | /* none */ { result = 0 } ; - - exp : exp '+' exp { result += val[2]; @plus = 'plus' } - | exp '-' exp { result -= val[2]; @str = "string test" } - | exp '*' exp { result *= val[2] } - | exp '/' exp { result /= val[2] } - | '(' { $emb = true } exp ')' - { - raise 'must not happen' unless $emb - result = val[2] - } - | '-' NUMBER { result = -val[1] } - | NUMBER - ; - -end - -----header - -class Number; end - -----inner - - def parse( src ) - $emb = false - @plus = nil - @str = nil - @src = src - result = do_parse - if @plus - raise 'string parse failed' unless @plus == 'plus' - end - if @str - raise 'string parse failed' unless @str == 'string test' - end - result - end - - def next_token - @src.shift - end - - def initialize - @yydebug = true - end - -----footer - -$parser = Calcp.new -$test_number = 1 - -def chk( src, ans ) - result = $parser.parse(src) - raise "test #{$test_number} fail" unless result == ans - $test_number += 1 -end - -chk( - [ [Number, 9], - [false, false], - [false, false] ], 9 -) - -chk( - [ [Number, 5], - ['*', nil], - [Number, 1], - ['-', nil], - [Number, 1], - ['*', nil], - [Number, 8], - [false, false], - [false, false] ], -3 -) - -chk( - [ [Number, 5], - ['+', nil], - [Number, 2], - ['-', nil], - [Number, 5], - ['+', nil], - [Number, 2], - ['-', nil], - [Number, 5], - [false, false], - [false, false] ], -1 -) - -chk( - [ ['-', nil], - [Number, 4], - [false, false], - [false, false] ], -4 -) - -chk( - [ [Number, 7], - ['*', nil], - ['(', nil], - [Number, 4], - ['+', nil], - [Number, 3], - [')', nil], - ['-', nil], - [Number, 9], - [false, false], - [false, false] ], 40 -) diff --git a/test/racc/assets/conf.y b/test/racc/assets/conf.y deleted file mode 100644 index de9de71d28..0000000000 --- a/test/racc/assets/conf.y +++ /dev/null @@ -1,16 +0,0 @@ - -class A -rule - -a: A c C expr; - -b: A B; # useless - -c: A; -c: A; - -expr: expr '+' expr -expr: expr '-' expr -expr: NUMBER - -end diff --git a/test/racc/assets/csspool.y b/test/racc/assets/csspool.y deleted file mode 100644 index 3d6af25d85..0000000000 --- a/test/racc/assets/csspool.y +++ /dev/null @@ -1,729 +0,0 @@ -class CSSPool::CSS::Parser - -token CHARSET_SYM IMPORT_SYM STRING SEMI IDENT S COMMA LBRACE RBRACE STAR HASH -token LSQUARE RSQUARE EQUAL INCLUDES DASHMATCH LPAREN RPAREN FUNCTION GREATER PLUS -token SLASH NUMBER MINUS LENGTH PERCENTAGE ANGLE TIME FREQ URI -token IMPORTANT_SYM MEDIA_SYM NOT ONLY AND NTH_PSEUDO_CLASS -token DOCUMENT_QUERY_SYM FUNCTION_NO_QUOTE -token TILDE -token PREFIXMATCH SUFFIXMATCH SUBSTRINGMATCH -token NOT_PSEUDO_CLASS -token KEYFRAMES_SYM -token MATCHES_PSEUDO_CLASS -token NAMESPACE_SYM -token MOZ_PSEUDO_ELEMENT -token RESOLUTION -token COLON -token SUPPORTS_SYM -token OR -token VARIABLE_NAME -token CALC_SYM -token FONTFACE_SYM -token UNICODE_RANGE -token RATIO - -rule - document - : { @handler.start_document } - stylesheet - { @handler.end_document } - ; - stylesheet - : charset stylesheet - | import stylesheet - | namespace stylesheet - | charset - | import - | namespace - | body - | - ; - charset - : CHARSET_SYM STRING SEMI { @handler.charset interpret_string(val[1]), {} } - ; - import - : IMPORT_SYM import_location medium SEMI { - @handler.import_style val[2], val[1] - } - | IMPORT_SYM import_location SEMI { - @handler.import_style [], val[1] - } - ; - import_location - : import_location S - | STRING { result = Terms::String.new interpret_string val.first } - | URI { result = Terms::URI.new interpret_uri val.first } - ; - namespace - : NAMESPACE_SYM ident import_location SEMI { - @handler.namespace val[1], val[2] - } - | NAMESPACE_SYM import_location SEMI { - @handler.namespace nil, val[1] - } - ; - medium - : medium COMMA IDENT { - result = val[0] << MediaType.new(val[2]) - } - | IDENT { - result = [MediaType.new(val[0])] - } - ; - media_query_list - : media_query { result = MediaQueryList.new([ val[0] ]) } - | media_query_list COMMA media_query { result = val[0] << val[2] } - | { result = MediaQueryList.new } - ; - media_query - : optional_only_or_not media_type optional_and_exprs { result = MediaQuery.new(val[0], val[1], val[2]) } - | media_expr optional_and_exprs { result = MediaQuery.new(nil, val[0], val[1]) } - ; - optional_only_or_not - : ONLY { result = :only } - | NOT { result = :not } - | { result = nil } - ; - media_type - : IDENT { result = MediaType.new(val[0]) } - ; - media_expr - : LPAREN optional_space IDENT optional_space RPAREN { result = MediaType.new(val[2]) } - | LPAREN optional_space IDENT optional_space COLON optional_space expr RPAREN { result = MediaFeature.new(val[2], val[6][0]) } - ; - optional_space - : S { result = val[0] } - | { result = nil } - ; - optional_and_exprs - : optional_and_exprs AND media_expr { result = val[0] << val[2] } - | { result = [] } - ; - resolution - : RESOLUTION { - unit = val.first.gsub(/[\s\d.]/, '') - number = numeric(val.first) - result = Terms::Resolution.new(number, unit) - } - ; - body - : ruleset body - | conditional_rule body - | keyframes_rule body - | fontface_rule body - | ruleset - | conditional_rule - | keyframes_rule - | fontface_rule - ; - conditional_rule - : media - | document_query - | supports - ; - body_in_media - : body - | empty_ruleset - ; - media - : start_media body_in_media RBRACE { @handler.end_media val.first } - ; - start_media - : MEDIA_SYM media_query_list LBRACE { - result = val[1] - @handler.start_media result - } - ; - document_query - : start_document_query body RBRACE { @handler.end_document_query(before_pos(val), after_pos(val)) } - | start_document_query RBRACE { @handler.end_document_query(before_pos(val), after_pos(val)) } - ; - start_document_query - : start_document_query_pos url_match_fns LBRACE { - @handler.start_document_query(val[1], after_pos(val)) - } - ; - start_document_query_pos - : DOCUMENT_QUERY_SYM { - @handler.node_start_pos = before_pos(val) - } - ; - url_match_fns - : url_match_fn COMMA url_match_fns { - result = [val[0], val[2]].flatten - } - | url_match_fn { - result = val - } - ; - url_match_fn - : function_no_quote - | function - | uri - ; - supports - : start_supports body RBRACE { @handler.end_supports } - | start_supports RBRACE { @handler.end_supports } - ; - start_supports - : SUPPORTS_SYM supports_condition_root LBRACE { - @handler.start_supports val[1] - } - ; - supports_condition_root - : supports_negation { result = val.join('') } - | supports_conjunction_or_disjunction { result = val.join('') } - | supports_condition_in_parens { result = val.join('') } - ; - supports_condition - : supports_negation { result = val.join('') } - | supports_conjunction_or_disjunction { result = val.join('') } - | supports_condition_in_parens { result = val.join('') } - ; - supports_condition_in_parens - : LPAREN supports_condition RPAREN { result = val.join('') } - | supports_declaration_condition { result = val.join('') } - ; - supports_negation - : NOT supports_condition_in_parens { result = val.join('') } - ; - supports_conjunction_or_disjunction - : supports_conjunction - | supports_disjunction - ; - supports_conjunction - : supports_condition_in_parens AND supports_condition_in_parens { result = val.join('') } - | supports_conjunction_or_disjunction AND supports_condition_in_parens { result = val.join('') } - ; - supports_disjunction - : supports_condition_in_parens OR supports_condition_in_parens { result = val.join('') } - | supports_conjunction_or_disjunction OR supports_condition_in_parens { result = val.join('') } - ; - supports_declaration_condition - : LPAREN declaration_internal RPAREN { result = val.join('') } - | LPAREN S declaration_internal RPAREN { result = val.join('') } - ; - keyframes_rule - : start_keyframes_rule keyframes_blocks RBRACE - | start_keyframes_rule RBRACE - ; - start_keyframes_rule - : KEYFRAMES_SYM IDENT LBRACE { - @handler.start_keyframes_rule val[1] - } - ; - keyframes_blocks - : keyframes_block keyframes_blocks - | keyframes_block - ; - keyframes_block - : start_keyframes_block declarations RBRACE { @handler.end_keyframes_block } - | start_keyframes_block RBRACE { @handler.end_keyframes_block } - ; - start_keyframes_block - : keyframes_selectors LBRACE { - @handler.start_keyframes_block val[0] - } - ; - keyframes_selectors - | keyframes_selector COMMA keyframes_selectors { - result = val[0] + ', ' + val[2] - } - | keyframes_selector - ; - keyframes_selector - : IDENT - | PERCENTAGE { result = val[0].strip } - ; - fontface_rule - : start_fontface_rule declarations RBRACE { @handler.end_fontface_rule } - | start_fontface_rule RBRACE { @handler.end_fontface_rule } - ; - start_fontface_rule - : FONTFACE_SYM LBRACE { - @handler.start_fontface_rule - } - ; - ruleset - : start_selector declarations RBRACE { - @handler.end_selector val.first - } - | start_selector RBRACE { - @handler.end_selector val.first - } - ; - empty_ruleset - : optional_space { - start = @handler.start_selector([]) - @handler.end_selector(start) - } - ; - start_selector - : S start_selector { result = val.last } - | selectors LBRACE { - @handler.start_selector val.first - } - ; - selectors - : selector COMMA selectors - { - sel = Selector.new(val.first, {}) - result = [sel].concat(val[2]) - } - | selector - { - result = [Selector.new(val.first, {})] - } - ; - selector - : simple_selector combinator selector - { - val.flatten! - val[2].combinator = val.delete_at 1 - result = val - } - | simple_selector - ; - combinator - : S { result = :s } - | GREATER { result = :> } - | PLUS { result = :+ } - | TILDE { result = :~ } - ; - simple_selector - : element_name hcap { - selector = val.first - selector.additional_selectors = val.last - result = [selector] - } - | element_name { result = val } - | hcap - { - ss = Selectors::Simple.new nil, nil - ss.additional_selectors = val.flatten - result = [ss] - } - ; - simple_selectors - : simple_selector COMMA simple_selectors { result = [val[0], val[2]].flatten } - | simple_selector - ; - ident_with_namespace - : IDENT { result = [interpret_identifier(val[0]), nil] } - | IDENT '|' IDENT { result = [interpret_identifier(val[2]), interpret_identifier(val[0])] } - | '|' IDENT { result = [interpret_identifier(val[1]), nil] } - | STAR '|' IDENT { result = [interpret_identifier(val[2]), '*'] } - ; - element_name - : ident_with_namespace { result = Selectors::Type.new val.first[0], nil, val.first[1] } - | STAR { result = Selectors::Universal.new val.first } - | '|' STAR { result = Selectors::Universal.new val[1] } - | STAR '|' STAR { result = Selectors::Universal.new val[2], nil, val[0] } - | IDENT '|' STAR { result = Selectors::Universal.new val[2], nil, interpret_identifier(val[0]) } - ; - hcap - : hash { result = val } - | class { result = val } - | attrib { result = val } - | pseudo { result = val } - | hash hcap { result = val.flatten } - | class hcap { result = val.flatten } - | attrib hcap { result = val.flatten } - | pseudo hcap { result = val.flatten } - ; - hash - : HASH { - result = Selectors::Id.new interpret_identifier val.first.sub(/^#/, '') - } - class - : '.' IDENT { - result = Selectors::Class.new interpret_identifier val.last - } - ; - attrib - : LSQUARE ident_with_namespace EQUAL IDENT RSQUARE { - result = Selectors::Attribute.new( - val[1][0], - interpret_identifier(val[3]), - Selectors::Attribute::EQUALS, - val[1][1] - ) - } - | LSQUARE ident_with_namespace EQUAL STRING RSQUARE { - result = Selectors::Attribute.new( - val[1][0], - interpret_string(val[3]), - Selectors::Attribute::EQUALS, - val[1][1] - ) - } - | LSQUARE ident_with_namespace INCLUDES STRING RSQUARE { - result = Selectors::Attribute.new( - val[1][0], - interpret_string(val[3]), - Selectors::Attribute::INCLUDES, - val[1][1] - ) - } - | LSQUARE ident_with_namespace INCLUDES IDENT RSQUARE { - result = Selectors::Attribute.new( - val[1][0], - interpret_identifier(val[3]), - Selectors::Attribute::INCLUDES, - val[1][1] - ) - } - | LSQUARE ident_with_namespace DASHMATCH IDENT RSQUARE { - result = Selectors::Attribute.new( - val[1][0], - interpret_identifier(val[3]), - Selectors::Attribute::DASHMATCH, - val[1][1] - ) - } - | LSQUARE ident_with_namespace DASHMATCH STRING RSQUARE { - result = Selectors::Attribute.new( - val[1][0], - interpret_string(val[3]), - Selectors::Attribute::DASHMATCH, - val[1][1] - ) - } - | LSQUARE ident_with_namespace PREFIXMATCH IDENT RSQUARE { - result = Selectors::Attribute.new( - val[1][0], - interpret_identifier(val[3]), - Selectors::Attribute::PREFIXMATCH, - val[1][1] - ) - } - | LSQUARE ident_with_namespace PREFIXMATCH STRING RSQUARE { - result = Selectors::Attribute.new( - val[1][0], - interpret_string(val[3]), - Selectors::Attribute::PREFIXMATCH, - val[1][1] - ) - } - | LSQUARE ident_with_namespace SUFFIXMATCH IDENT RSQUARE { - result = Selectors::Attribute.new( - val[1][0], - interpret_identifier(val[3]), - Selectors::Attribute::SUFFIXMATCH, - val[1][1] - ) - } - | LSQUARE ident_with_namespace SUFFIXMATCH STRING RSQUARE { - result = Selectors::Attribute.new( - val[1][0], - interpret_string(val[3]), - Selectors::Attribute::SUFFIXMATCH, - val[1][1] - ) - } - | LSQUARE ident_with_namespace SUBSTRINGMATCH IDENT RSQUARE { - result = Selectors::Attribute.new( - val[1][0], - interpret_identifier(val[3]), - Selectors::Attribute::SUBSTRINGMATCH, - val[1][1] - ) - } - | LSQUARE ident_with_namespace SUBSTRINGMATCH STRING RSQUARE { - result = Selectors::Attribute.new( - val[1][0], - interpret_string(val[3]), - Selectors::Attribute::SUBSTRINGMATCH, - val[1][1] - ) - } - | LSQUARE ident_with_namespace RSQUARE { - result = Selectors::Attribute.new( - val[1][0], - nil, - Selectors::Attribute::SET, - val[1][1] - ) - } - ; - pseudo - : COLON IDENT { - result = Selectors::pseudo interpret_identifier(val[1]) - } - | COLON COLON IDENT { - result = Selectors::PseudoElement.new( - interpret_identifier(val[2]) - ) - } - | COLON FUNCTION RPAREN { - result = Selectors::PseudoClass.new( - interpret_identifier(val[1].sub(/\($/, '')), - '' - ) - } - | COLON FUNCTION IDENT RPAREN { - result = Selectors::PseudoClass.new( - interpret_identifier(val[1].sub(/\($/, '')), - interpret_identifier(val[2]) - ) - } - | COLON NOT_PSEUDO_CLASS simple_selector RPAREN { - result = Selectors::PseudoClass.new( - 'not', - val[2].first.to_s - ) - } - | COLON NTH_PSEUDO_CLASS { - result = Selectors::PseudoClass.new( - interpret_identifier(val[1].sub(/\(.*/, '')), - interpret_identifier(val[1].sub(/.*\(/, '').sub(/\).*/, '')) - ) - } - | COLON MATCHES_PSEUDO_CLASS simple_selectors RPAREN { - result = Selectors::PseudoClass.new( - val[1].split('(').first.strip, - val[2].join(', ') - ) - } - | COLON MOZ_PSEUDO_ELEMENT optional_space any_number_of_idents optional_space RPAREN { - result = Selectors::PseudoElement.new( - interpret_identifier(val[1].sub(/\($/, '')) - ) - } - | COLON COLON MOZ_PSEUDO_ELEMENT optional_space any_number_of_idents optional_space RPAREN { - result = Selectors::PseudoElement.new( - interpret_identifier(val[2].sub(/\($/, '')) - ) - } - ; - any_number_of_idents - : - | multiple_idents - ; - multiple_idents - : IDENT - | IDENT COMMA multiple_idents - ; - # declarations can be separated by one *or more* semicolons. semi-colons at the start or end of a ruleset are also allowed - one_or_more_semis - : SEMI - | SEMI one_or_more_semis - ; - declarations - : declaration one_or_more_semis declarations - | one_or_more_semis declarations - | declaration one_or_more_semis - | declaration - | one_or_more_semis - ; - declaration - : declaration_internal { @handler.property val.first } - ; - declaration_internal - : property COLON expr prio - { result = Declaration.new(val.first, val[2], val[3]) } - | property COLON S expr prio - { result = Declaration.new(val.first, val[3], val[4]) } - | property S COLON expr prio - { result = Declaration.new(val.first, val[3], val[4]) } - | property S COLON S expr prio - { result = Declaration.new(val.first, val[4], val[5]) } - ; - prio - : IMPORTANT_SYM { result = true } - | { result = false } - ; - property - : IDENT { result = interpret_identifier val[0] } - | STAR IDENT { result = interpret_identifier val.join } - | VARIABLE_NAME { result = interpret_identifier val[0] } - ; - operator - : COMMA - | SLASH - | EQUAL - ; - expr - : term operator expr { - result = [val.first, val.last].flatten - val.last.first.operator = val[1] - } - | term expr { result = val.flatten } - | term { result = val } - ; - term - : ident - | ratio - | numeric - | string - | uri - | hexcolor - | calc - | function - | resolution - | VARIABLE_NAME - | uranges - ; - function - : function S { result = val.first } - | FUNCTION expr RPAREN { - name = interpret_identifier val.first.sub(/\($/, '') - if name == 'rgb' - result = Terms::Rgb.new(*val[1]) - else - result = Terms::Function.new name, val[1] - end - } - | FUNCTION RPAREN { - name = interpret_identifier val.first.sub(/\($/, '') - result = Terms::Function.new name - } - ; - function_no_quote - : function_no_quote S { result = val.first } - | FUNCTION_NO_QUOTE { - parts = val.first.split('(') - name = interpret_identifier parts.first - result = Terms::Function.new(name, [Terms::String.new(interpret_string_no_quote(parts.last))]) - } - ; - uranges - : UNICODE_RANGE COMMA uranges - | UNICODE_RANGE - ; - calc - : CALC_SYM calc_sum RPAREN optional_space { - result = Terms::Math.new(val.first.split('(').first, val[1]) - } - ; - # plus and minus are supposed to have whitespace around them, per http://dev.w3.org/csswg/css-values/#calc-syntax, but the numbers are eating trailing whitespace, so we inject it back in - calc_sum - : calc_product - | calc_product PLUS calc_sum { val.insert(1, ' '); result = val.join('') } - | calc_product MINUS calc_sum { val.insert(1, ' '); result = val.join('') } - ; - calc_product - : calc_value - | calc_value optional_space STAR calc_value { result = val.join('') } - | calc_value optional_space SLASH calc_value { result = val.join('') } - ; - calc_value - : numeric { result = val.join('') } - | function { result = val.join('') } # for var() variable references - | LPAREN calc_sum RPAREN { result = val.join('') } - ; - hexcolor - : hexcolor S { result = val.first } - | HASH { result = Terms::Hash.new val.first.sub(/^#/, '') } - ; - uri - : uri S { result = val.first } - | URI { result = Terms::URI.new interpret_uri val.first } - ; - string - : string S { result = val.first } - | STRING { result = Terms::String.new interpret_string val.first } - ; - numeric - : unary_operator numeric { - result = val[1] - val[1].unary_operator = val.first - } - | NUMBER { - result = Terms::Number.new numeric val.first - } - | PERCENTAGE { - result = Terms::Number.new numeric(val.first), nil, '%' - } - | LENGTH { - unit = val.first.gsub(/[\s\d.]/, '') - result = Terms::Number.new numeric(val.first), nil, unit - } - | ANGLE { - unit = val.first.gsub(/[\s\d.]/, '') - result = Terms::Number.new numeric(val.first), nil, unit - } - | TIME { - unit = val.first.gsub(/[\s\d.]/, '') - result = Terms::Number.new numeric(val.first), nil, unit - } - | FREQ { - unit = val.first.gsub(/[\s\d.]/, '') - result = Terms::Number.new numeric(val.first), nil, unit - } - ; - ratio - : RATIO { - result = Terms::Ratio.new(val[0], val[1]) - } - ; - unary_operator - : MINUS { result = :minus } - | PLUS { result = :plus } - ; - ident - : ident S { result = val.first } - | IDENT { result = Terms::Ident.new interpret_identifier val.first } - ; - ----- inner - -def numeric thing - thing = thing.gsub(/[^\d.]/, '') - Integer(thing) rescue Float(thing) -end - -def interpret_identifier s - interpret_escapes s -end - -def interpret_uri s - interpret_escapes s.match(/^url\((.*)\)$/mui)[1].strip.match(/^(['"]?)((?:\\.|.)*)\1$/mu)[2] -end - -def interpret_string_no_quote s - interpret_escapes s.match(/^(.*)\)$/mu)[1].strip.match(/^(['"]?)((?:\\.|.)*)\1$/mu)[2] -end - -def interpret_string s - interpret_escapes s.match(/^(['"])((?:\\.|.)*)\1$/mu)[2] -end - -def interpret_escapes s - token_exp = /\\(?:([0-9a-fA-F]{1,6}(?:\r\n|\s)?)|(.))/mu - return s.gsub(token_exp) do |escape_sequence| - if !$1.nil? - code = $1.chomp.to_i 16 - code = 0xFFFD if code > 0x10FFFF - next [code].pack('U') - end - next '' if $2 == "\n" - next $2 - end -end - -# override racc's on_error so we can have context in our error messages -def on_error(t, val, vstack) - errcontext = (@ss.pre_match[-10..-1] || @ss.pre_match) + - @ss.matched + @ss.post_match[0..9] - line_number = @ss.pre_match.lines.count - raise ParseError, sprintf("parse error on value %s (%s) " + - "on line %s around \"%s\"", - val.inspect, token_to_str(t) || '?', - line_number, errcontext) -end - -def before_pos(val) - # don't include leading whitespace - return current_pos - val.last.length + val.last[/\A\s*/].size -end - -def after_pos(val) - # don't include trailing whitespace - return current_pos - val.last[/\s*\z/].size -end - -# charpos will work with multibyte strings but is not available until ruby 2 -def current_pos - @ss.respond_to?('charpos') ? @ss.charpos : @ss.pos -end diff --git a/test/racc/assets/digraph.y b/test/racc/assets/digraph.y deleted file mode 100644 index 17a034ee54..0000000000 --- a/test/racc/assets/digraph.y +++ /dev/null @@ -1,29 +0,0 @@ -# ? detect digraph bug - -class P - token A B C D -rule - target : a b c d - a : A - | - b : B - | - c : C - | - d : D - | -end - ----- inner - - def parse - do_parse - end - - def next_token - [false, '$'] - end - ----- footer - -P.new.parse diff --git a/test/racc/assets/echk.y b/test/racc/assets/echk.y deleted file mode 100644 index 0fda2685aa..0000000000 --- a/test/racc/assets/echk.y +++ /dev/null @@ -1,118 +0,0 @@ -# -# racc tester -# - -class Calcp - - prechigh - left '*' '/' - left '+' '-' - preclow - - convert - NUMBER 'Number' - end - -rule - - target : exp | /* none */ { result = 0 } ; - - exp : exp '+' exp { result += val[2]; a = 'plus' } - | exp '-' exp { result -= val[2]; "string test" } - | exp '*' exp { result *= val[2] } - | exp '/' exp { result /= val[2] } - | '(' { $emb = true } exp ')' - { - raise 'must not happen' unless $emb - result = val[2] - } - | '-' NUMBER { result = -val[1] } - | NUMBER - ; - -end - -----header - -class Number ; end - -----inner - - def parse( src ) - @src = src - do_parse - end - - def next_token - @src.shift - end - - def initialize - @yydebug = true - end - -----footer - -$parser = Calcp.new -$tidx = 1 - -def chk( src, ans ) - ret = $parser.parse( src ) - unless ret == ans then - bug! "test #{$tidx} fail" - end - $tidx += 1 -end - -chk( - [ [Number, 9], - [false, false], - [false, false] ], 9 -) - -chk( - [ [Number, 5], - ['*', nil], - [Number, 1], - ['-', nil], - [Number, 1], - ['*', nil], - [Number, 8], - [false, false], - [false, false] ], -3 -) - -chk( - [ [Number, 5], - ['+', nil], - [Number, 2], - ['-', nil], - [Number, 5], - ['+', nil], - [Number, 2], - ['-', nil], - [Number, 5], - [false, false], - [false, false] ], -1 -) - -chk( - [ ['-', nil], - [Number, 4], - [false, false], - [false, false] ], -4 -) - -chk( - [ [Number, 7], - ['*', nil], - ['(', nil], - [Number, 4], - ['+', nil], - [Number, 3], - [')', nil], - ['-', nil], - [Number, 9], - [false, false], - [false, false] ], 40 -) diff --git a/test/racc/assets/edtf.y b/test/racc/assets/edtf.y deleted file mode 100644 index 4f5f6bb4fd..0000000000 --- a/test/racc/assets/edtf.y +++ /dev/null @@ -1,583 +0,0 @@ -# -*- racc -*- - -# Copyright 2011 Sylvester Keil. All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# 1. Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY EXPRESS OR -# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -# EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -# The views and conclusions contained in the software and documentation are -# those of the authors and should not be interpreted as representing official -# policies, either expressed or implied, of the copyright holder. - -class EDTF::Parser - -token T Z E X U UNKNOWN OPEN LONGYEAR UNMATCHED DOTS UA PUA - -expect 0 - -rule - - edtf : level_0_expression - | level_1_expression - | level_2_expression - ; - - # ---- Level 0 / ISO 8601 Rules ---- - - # NB: level 0 intervals are covered by the level 1 interval rules - level_0_expression : date - | date_time - ; - - date : positive_date - | negative_date - ; - - positive_date : - year { result = Date.new(val[0]).year_precision! } - | year_month { result = Date.new(*val.flatten).month_precision! } - | year_month_day { result = Date.new(*val.flatten).day_precision! } - ; - - negative_date : '-' positive_date { result = -val[1] } - - - date_time : date T time { - result = DateTime.new(val[0].year, val[0].month, val[0].day, *val[2]) - result.skip_timezone = (val[2].length == 3) - } - - time : base_time - | base_time zone_offset { result = val.flatten } - - base_time : hour ':' minute ':' second { result = val.values_at(0, 2, 4) } - | midnight - - midnight : '2' '4' ':' '0' '0' ':' '0' '0' { result = [24, 0, 0] } - - zone_offset : Z { result = 0 } - | '-' zone_offset_hour { result = -1 * val[1] } - | '+' positive_zone_offset { result = val[1] } - ; - - positive_zone_offset : zone_offset_hour - | '0' '0' ':' '0' '0' { result = 0 } - ; - - - zone_offset_hour : d01_13 ':' minute { result = Rational(val[0] * 60 + val[2], 1440) } - | '1' '4' ':' '0' '0' { result = Rational(840, 1440) } - | '0' '0' ':' d01_59 { result = Rational(val[3], 1440) } - ; - - year : digit digit digit digit { - result = val.zip([1000,100,10,1]).reduce(0) { |s,(a,b)| s += a * b } - } - - month : d01_12 - day : d01_31 - - year_month : year '-' month { result = [val[0], val[2]] } - - # We raise an exception if there are two many days for the month, but - # do not consider leap years, as the EDTF BNF did not either. - # NB: an exception will be raised regardless, because the Ruby Date - # implementation calculates leap years. - year_month_day : year_month '-' day { - result = val[0] << val[2] - if result[2] > 31 || (result[2] > 30 && [2,4,6,9,11].include?(result[1])) || (result[2] > 29 && result[1] == 2) - raise ArgumentError, "invalid date (invalid days #{result[2]} for month #{result[1]})" - end - } - - hour : d00_23 - minute : d00_59 - second : d00_59 - - # Completely covered by level_1_interval - # level_0_interval : date '/' date { result = Interval.new(val[0], val[1]) } - - - # ---- Level 1 Extension Rules ---- - - # NB: Uncertain/approximate Dates are covered by the Level 2 rules - level_1_expression : unspecified | level_1_interval | long_year_simple | season - - # uncertain_or_approximate_date : date UA { result = uoa(val[0], val[1]) } - - unspecified : unspecified_year - { - result = Date.new(val[0][0]).year_precision! - result.unspecified.year[2,2] = val[0][1] - } - | unspecified_month - | unspecified_day - | unspecified_day_and_month - ; - - unspecified_year : - digit digit digit U - { - result = [val[0,3].zip([1000,100,10]).reduce(0) { |s,(a,b)| s += a * b }, [false,true]] - } - | digit digit U U - { - result = [val[0,2].zip([1000,100]).reduce(0) { |s,(a,b)| s += a * b }, [true, true]] - } - - unspecified_month : year '-' U U { - result = Date.new(val[0]).unspecified!(:month) - result.precision = :month - } - - unspecified_day : year_month '-' U U { - result = Date.new(*val[0]).unspecified!(:day) - } - - unspecified_day_and_month : year '-' U U '-' U U { - result = Date.new(val[0]).unspecified!([:day,:month]) - } - - - level_1_interval : level_1_start '/' level_1_end { - result = Interval.new(val[0], val[2]) - } - - level_1_start : date | partial_uncertain_or_approximate | unspecified | partial_unspecified | UNKNOWN - - level_1_end : level_1_start | OPEN - - - long_year_simple : - LONGYEAR long_year - { - result = Date.new(val[1]) - result.precision = :year - } - | LONGYEAR '-' long_year - { - result = Date.new(-1 * val[2]) - result.precision = :year - } - ; - - long_year : - positive_digit digit digit digit digit { - result = val.zip([10000,1000,100,10,1]).reduce(0) { |s,(a,b)| s += a * b } - } - | long_year digit { result = 10 * val[0] + val[1] } - ; - - - season : year '-' season_number ua { - result = Season.new(val[0], val[2]) - val[3].each { |ua| result.send(ua) } - } - - season_number : '2' '1' { result = 21 } - | '2' '2' { result = 22 } - | '2' '3' { result = 23 } - | '2' '4' { result = 24 } - ; - - - # ---- Level 2 Extension Rules ---- - - # NB: Level 2 Intervals are covered by the Level 1 Interval rules. - level_2_expression : season_qualified - | partial_uncertain_or_approximate - | partial_unspecified - | choice_list - | inclusive_list - | masked_precision - | date_and_calendar - | long_year_scientific - ; - - - season_qualified : season '^' { result = val[0]; result.qualifier = val[1] } - - - long_year_scientific : - long_year_simple E integer - { - result = Date.new(val[0].year * 10 ** val[2]).year_precision! - } - | LONGYEAR int1_4 E integer - { - result = Date.new(val[1] * 10 ** val[3]).year_precision! - } - | LONGYEAR '-' int1_4 E integer - { - result = Date.new(-1 * val[2] * 10 ** val[4]).year_precision! - } - ; - - - date_and_calendar : date '^' { result = val[0]; result.calendar = val[1] } - - - masked_precision : - digit digit digit X - { - d = val[0,3].zip([1000,100,10]).reduce(0) { |s,(a,b)| s += a * b } - result = EDTF::Decade.new(d) - } - | digit digit X X - { - d = val[0,2].zip([1000,100]).reduce(0) { |s,(a,b)| s += a * b } - result = EDTF::Century.new(d) - } - ; - - - choice_list : '[' list ']' { result = val[1].choice! } - - inclusive_list : '{' list '}' { result = val[1] } - - list : earlier { result = EDTF::Set.new(val[0]).earlier! } - | earlier ',' list_elements ',' later { result = EDTF::Set.new([val[0]] + val[2] + [val[4]]).earlier!.later! } - | earlier ',' list_elements { result = EDTF::Set.new([val[0]] + val[2]).earlier! } - | earlier ',' later { result = EDTF::Set.new([val[0]] + [val[2]]).earlier!.later! } - | list_elements ',' later { result = EDTF::Set.new(val[0] + [val[2]]).later! } - | list_elements { result = EDTF::Set.new(*val[0]) } - | later { result = EDTF::Set.new(val[0]).later! } - ; - - list_elements : list_element { result = [val[0]].flatten } - | list_elements ',' list_element { result = val[0] + [val[2]].flatten } - ; - - list_element : atomic - | consecutives - ; - - atomic : date - | partial_uncertain_or_approximate - | unspecified - ; - - earlier : DOTS date { result = val[1] } - - later : year_month_day DOTS { result = Date.new(*val[0]).year_precision! } - | year_month DOTS { result = Date.new(*val[0]).month_precision! } - | year DOTS { result = Date.new(val[0]).year_precision! } - ; - - consecutives : year_month_day DOTS year_month_day { result = (Date.new(val[0]).day_precision! .. Date.new(val[2]).day_precision!) } - | year_month DOTS year_month { result = (Date.new(val[0]).month_precision! .. Date.new(val[2]).month_precision!) } - | year DOTS year { result = (Date.new(val[0]).year_precision! .. Date.new(val[2]).year_precision!) } - ; - - partial_unspecified : - unspecified_year '-' month '-' day - { - result = Date.new(val[0][0], val[2], val[4]) - result.unspecified.year[2,2] = val[0][1] - } - | unspecified_year '-' U U '-' day - { - result = Date.new(val[0][0], 1, val[5]) - result.unspecified.year[2,2] = val[0][1] - result.unspecified!(:month) - } - | unspecified_year '-' U U '-' U U - { - result = Date.new(val[0][0], 1, 1) - result.unspecified.year[2,2] = val[0][1] - result.unspecified!([:month, :day]) - } - | unspecified_year '-' month '-' U U - { - result = Date.new(val[0][0], val[2], 1) - result.unspecified.year[2,2] = val[0][1] - result.unspecified!(:day) - } - | year '-' U U '-' day - { - result = Date.new(val[0], 1, val[5]) - result.unspecified!(:month) - } - ; - - - partial_uncertain_or_approximate : pua_base - | '(' pua_base ')' UA { result = uoa(val[1], val[3]) } - - pua_base : - pua_year { result = val[0].year_precision! } - | pua_year_month { result = val[0][0].month_precision! } - | pua_year_month_day { result = val[0].day_precision! } - - pua_year : year UA { result = uoa(Date.new(val[0]), val[1], :year) } - - pua_year_month : - pua_year '-' month ua { - result = [uoa(val[0].change(:month => val[2]), val[3], [:month, :year])] - } - | year '-' month UA { - result = [uoa(Date.new(val[0], val[2]), val[3], [:year, :month])] - } - | year '-(' month ')' UA { - result = [uoa(Date.new(val[0], val[2]), val[4], [:month]), true] - } - | pua_year '-(' month ')' UA { - result = [uoa(val[0].change(:month => val[2]), val[4], [:month]), true] - } - ; - - pua_year_month_day : - pua_year_month '-' day ua { - result = uoa(val[0][0].change(:day => val[2]), val[3], val[0][1] ? [:day] : nil) - } - | pua_year_month '-(' day ')' UA { - result = uoa(val[0][0].change(:day => val[2]), val[4], [:day]) - } - | year '-(' month ')' UA day ua { - result = uoa(uoa(Date.new(val[0], val[2], val[5]), val[4], :month), val[6], :day) - } - | year_month '-' day UA { - result = uoa(Date.new(val[0][0], val[0][1], val[2]), val[3]) - } - | year_month '-(' day ')' UA { - result = uoa(Date.new(val[0][0], val[0][1], val[2]), val[4], [:day]) - } - | year '-(' month '-' day ')' UA { - result = uoa(Date.new(val[0], val[2], val[4]), val[6], [:month, :day]) - } - | year '-(' month '-(' day ')' UA ')' UA { - result = Date.new(val[0], val[2], val[4]) - result = uoa(result, val[6], [:day]) - result = uoa(result, val[8], [:month, :day]) - } - | pua_year '-(' month '-' day ')' UA { - result = val[0].change(:month => val[2], :day => val[4]) - result = uoa(result, val[6], [:month, :day]) - } - | pua_year '-(' month '-(' day ')' UA ')' UA { - result = val[0].change(:month => val[2], :day => val[4]) - result = uoa(result, val[6], [:day]) - result = uoa(result, val[8], [:month, :day]) - } - # | '(' pua_year '-(' month ')' UA ')' UA '-' day ua { - # result = val[1].change(:month => val[3], :day => val[9]) - # result = uoa(result, val[5], [:month]) - # result = [uoa(result, val[7], [:year]), true] - # } - ; - - ua : { result = [] } | UA - - # ---- Auxiliary Rules ---- - - digit : '0' { result = 0 } - | positive_digit - ; - - positive_digit : '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' - - d01_12 : '0' positive_digit { result = val[1] } - | '1' '0' { result = 10 } - | '1' '1' { result = 11 } - | '1' '2' { result = 12 } - ; - - d01_13 : d01_12 - | '1' '3' { result = 13 } - ; - - d01_23 : '0' positive_digit { result = val[1] } - | '1' digit { result = 10 + val[1] } - | '2' '0' { result = 20 } - | '2' '1' { result = 21 } - | '2' '2' { result = 22 } - | '2' '3' { result = 23 } - ; - - d00_23 : '0' '0' - | d01_23 - ; - - d01_29 : d01_23 - | '2' '4' { result = 24 } - | '2' '5' { result = 25 } - | '2' '6' { result = 26 } - | '2' '7' { result = 27 } - | '2' '8' { result = 28 } - | '2' '9' { result = 29 } - ; - - d01_30 : d01_29 - | '3' '0' { result = 30 } - ; - - d01_31 : d01_30 - | '3' '1' { result = 31 } - ; - - d01_59 : d01_29 - | '3' digit { result = 30 + val[1] } - | '4' digit { result = 40 + val[1] } - | '5' digit { result = 50 + val[1] } - ; - - d00_59 : '0' '0' - | d01_59 - ; - - int1_4 : positive_digit { result = val[0] } - | positive_digit digit { result = 10 * val[0] + val[1] } - | positive_digit digit digit - { - result = val.zip([100,10,1]).reduce(0) { |s,(a,b)| s += a * b } - } - | positive_digit digit digit digit - { - result = val.zip([1000,100,10,1]).reduce(0) { |s,(a,b)| s += a * b } - } - ; - - integer : positive_digit { result = val[0] } - | integer digit { result = 10 * val[0] + val[1] } - ; - - - ----- header -require 'strscan' - ----- inner - - @defaults = { - :level => 2, - :debug => false - }.freeze - - class << self; attr_reader :defaults; end - - attr_reader :options - - def initialize(options = {}) - @options = Parser.defaults.merge(options) - end - - def debug? - !!(options[:debug] || ENV['DEBUG']) - end - - def parse(input) - parse!(input) - rescue => e - warn e.message if debug? - nil - end - - def parse!(input) - @yydebug = debug? - @src = StringScanner.new(input) - do_parse - end - - def on_error(tid, value, stack) - raise ArgumentError, - "failed to parse date: unexpected '#{value}' at #{stack.inspect}" - end - - def apply_uncertainty(date, uncertainty, scope = nil) - uncertainty.each do |u| - scope.nil? ? date.send(u) : date.send(u, scope) - end - date - end - - alias uoa apply_uncertainty - - def next_token - case - when @src.eos? - nil - # when @src.scan(/\s+/) - # ignore whitespace - when @src.scan(/\(/) - ['(', @src.matched] - # when @src.scan(/\)\?~-/) - # [:PUA, [:uncertain!, :approximate!]] - # when @src.scan(/\)\?-/) - # [:PUA, [:uncertain!]] - # when @src.scan(/\)~-/) - # [:PUA, [:approximate!]] - when @src.scan(/\)/) - [')', @src.matched] - when @src.scan(/\[/) - ['[', @src.matched] - when @src.scan(/\]/) - [']', @src.matched] - when @src.scan(/\{/) - ['{', @src.matched] - when @src.scan(/\}/) - ['}', @src.matched] - when @src.scan(/T/) - [:T, @src.matched] - when @src.scan(/Z/) - [:Z, @src.matched] - when @src.scan(/\?~/) - [:UA, [:uncertain!, :approximate!]] - when @src.scan(/\?/) - [:UA, [:uncertain!]] - when @src.scan(/~/) - [:UA, [:approximate!]] - when @src.scan(/open/i) - [:OPEN, :open] - when @src.scan(/unkn?own/i) # matches 'unkown' typo too - [:UNKNOWN, :unknown] - when @src.scan(/u/) - [:U, @src.matched] - when @src.scan(/x/i) - [:X, @src.matched] - when @src.scan(/y/) - [:LONGYEAR, @src.matched] - when @src.scan(/e/) - [:E, @src.matched] - when @src.scan(/\+/) - ['+', @src.matched] - when @src.scan(/-\(/) - ['-(', @src.matched] - when @src.scan(/-/) - ['-', @src.matched] - when @src.scan(/:/) - [':', @src.matched] - when @src.scan(/\//) - ['/', @src.matched] - when @src.scan(/\s*\.\.\s*/) - [:DOTS, '..'] - when @src.scan(/\s*,\s*/) - [',', ','] - when @src.scan(/\^\w+/) - ['^', @src.matched[1..-1]] - when @src.scan(/\d/) - [@src.matched, @src.matched.to_i] - else @src.scan(/./) - [:UNMATCHED, @src.rest] - end - end - - -# -*- racc -*- diff --git a/test/racc/assets/err.y b/test/racc/assets/err.y deleted file mode 100644 index ae280957cc..0000000000 --- a/test/racc/assets/err.y +++ /dev/null @@ -1,60 +0,0 @@ - -class ErrTestp - -rule - -target: lines - ; - -lines: line - | lines line - ; - -line: A B C D E - | error E - ; - -end - ----- inner - -def initialize - @yydebug = false - @q = [ - [:A, 'a'], - # [:B, 'b'], - [:C, 'c'], - [:D, 'd'], - [:E, 'e'], - - [:A, 'a'], - [:B, 'b'], - [:C, 'c'], - [:D, 'd'], - [:E, 'e'], - - [:A, 'a'], - [:B, 'b'], - # [:C, 'c'], - [:D, 'd'], - [:E, 'e'], - [false, nil] - ] -end - -def next_token - @q.shift -end - -def on_error( t, val, values ) - $stderr.puts "error on token '#{val}'(#{t})" -end - -def parse - do_parse -end - ----- footer - -p = ErrTestp.new -p.parse diff --git a/test/racc/assets/error_recovery.y b/test/racc/assets/error_recovery.y deleted file mode 100644 index 1fd21ac7d0..0000000000 --- a/test/racc/assets/error_recovery.y +++ /dev/null @@ -1,35 +0,0 @@ -# Regression test case for the bug discussed here: -# https://github.com/whitequark/parser/issues/93 -# In short, a Racc-generated parser could go into an infinite loop when -# attempting error recovery at EOF - -class InfiniteLoop - -rule - - stmts: stmt - | error stmt - - stmt: '%' stmt - -end - ----- inner - - def parse - @errors = [] - do_parse - end - - def next_token - nil - end - - def on_error(error_token, error_value, value_stack) - # oh my, an error - @errors << [error_token, error_value] - end - ----- footer - -InfiniteLoop.new.parse
\ No newline at end of file diff --git a/test/racc/assets/expect.y b/test/racc/assets/expect.y deleted file mode 100644 index 24c27443e2..0000000000 --- a/test/racc/assets/expect.y +++ /dev/null @@ -1,7 +0,0 @@ -class E - expect 1 -rule - list: inlist inlist - inlist: - | A -end diff --git a/test/racc/assets/firstline.y b/test/racc/assets/firstline.y deleted file mode 100644 index ab0692e543..0000000000 --- a/test/racc/assets/firstline.y +++ /dev/null @@ -1,4 +0,0 @@ -class T -rule - a: A B C -end diff --git a/test/racc/assets/huia.y b/test/racc/assets/huia.y deleted file mode 100644 index de9d45150c..0000000000 --- a/test/racc/assets/huia.y +++ /dev/null @@ -1,318 +0,0 @@ -# Copyright (c) 2014 James Harton -# -# MIT License -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -class Huia::Parser - - token - IDENTIFIER EQUAL PLUS MINUS ASTERISK FWD_SLASH COLON FLOAT INTEGER STRING - EXPO INDENT OUTDENT OPAREN CPAREN DOT SIGNATURE NL EOF PIPE COMMA NIL TRUE - FALSE EQUALITY CALL SELF CONSTANT CHAR DOUBLE_TICK_STRING - DOUBLE_TICK_STRING_END INTERPOLATE_START INTERPOLATE_END BOX LSQUARE - RSQUARE FACES LFACE RFACE BANG TILDE RETURN NOT_EQUALITY OR AND GT LT - GTE LTE AT - - prechigh - left EXPO - left BANG TILDE - left ASTERISK FWD_SLASH PERCENT - left PLUS MINUS - - right EQUAL - preclow - - rule - statements: statement - | statements statement { return scope } - - statement: expr eol { return scope.append val[0] } - | expr { return scope.append val[0] } - | eol { return scope } - - eol: NL | EOF - nlq: NL | - - expr: literal - | grouped_expr - | binary_op - | unary_op - | method_call - | constant - | variable - | array - | hash - | return - - return: return_expr - | return_nil - return_expr: RETURN expr { return n(:Return, val[1]) } - return_nil: RETURN { return n(:Return, n(:Nil)) } - - array: empty_array - | array_list - - empty_array: BOX { return n :Array } - - array_list: LSQUARE array_items RSQUARE { return val[1] } - array_items: expr { return n :Array, [val[0]] } - | array_items COMMA expr { val[0].append(val[2]); return val[0] } - - hash: empty_hash - | hash_list - empty_hash: FACES { return n :Hash } - hash_list: LFACE hash_items RFACE { return val[1] } - hash_items: hash_item { return n :Hash, val[0] } - | hash_items COMMA hash_item { val[0].append(val[2]); return val[0] } - hash_item: expr COLON expr { return n :HashItem, val[0], val[2] } - - constant: CONSTANT { return constant val[0] } - - indented: indented_w_stmts - | indented_w_expr - | indented_wo_stmts - indented_w_stmts: indent statements outdent { return val[0] } - indented_w_expr: indent expr outdent { return val[0].append(val[1]) } - indented_wo_stmts: indent outdent { return val[0] } - outdent: OUTDENT { return pop_scope } - - - indent_w_args: indent_pipe indent_args PIPE nlq INDENT { return val[0] } - indent_pipe: PIPE { return push_scope } - indent_wo_args: INDENT { return push_scope } - indent: indent_w_args - | indent_wo_args - - indent_args: indent_arg - | indent_args COMMA indent_arg - indent_arg: arg_var { return scope.add_argument val[0] } - | arg_var EQUAL expr { return n :Assignment, val[0], val[2] } - arg_var: IDENTIFIER { return n :Variable, val[0] } - - method_call: method_call_on_object - | method_call_on_self - | method_call_on_closure - method_call_on_object: expr DOT call_signature { return n :MethodCall, val[0], val[2] } - | expr DOT IDENTIFIER { return n :MethodCall, val[0], n(:CallSignature, val[2]) } - method_call_on_self: call_signature { return n :MethodCall, scope_instance, val[0] } - - method_call_on_closure: AT call_signature { return n :MethodCall, this_closure, val[1] } - | AT IDENTIFIER { return n :MethodCall, this_closure, n(:CallSignature, val[1]) } - - call_signature: call_arguments - | call_simple_name - call_simple_name: CALL { return n :CallSignature, val[0] } - call_argument: SIGNATURE call_passed_arg { return n :CallSignature, val[0], [val[1]] } - call_passed_arg: call_passed_simple - | call_passed_indented - call_passed_simple: expr - | expr NL - call_passed_indented: indented - | indented NL - call_arguments: call_argument { return val[0] } - | call_arguments call_argument { return val[0].concat_signature val[1] } - - grouped_expr: OPAREN expr CPAREN { return n :Expression, val[1] } - - variable: IDENTIFIER { return allocate_local val[0] } - - binary_op: assignment - | addition - | subtraction - | multiplication - | division - | exponentiation - | modulo - | equality - | not_equality - | logical_or - | logical_and - | greater_than - | less_than - | greater_or_eq - | less_or_eq - - assignment: IDENTIFIER EQUAL expr { return allocate_local_assignment val[0], val[2] } - addition: expr PLUS expr { return binary val[0], val[2], 'plus:' } - subtraction: expr MINUS expr { return binary val[0], val[2], 'minus:' } - multiplication: expr ASTERISK expr { return binary val[0], val[2], 'multiplyBy:' } - division: expr FWD_SLASH expr { return binary val[0], val[2], 'divideBy:' } - exponentiation: expr EXPO expr { return binary val[0], val[2], 'toThePowerOf:' } - modulo: expr PERCENT expr { return binary val[0], val[2], 'moduloOf:' } - equality: expr EQUALITY expr { return binary val[0], val[2], 'isEqualTo:' } - not_equality: expr NOT_EQUALITY expr { return binary val[0], val[2], 'isNotEqualTo:' } - logical_or: expr OR expr { return binary val[0], val[2], 'logicalOr:' } - logical_and: expr AND expr { return binary val[0], val[2], 'logicalAnd:' } - greater_than: expr GT expr { return binary val[0], val[2], 'isGreaterThan:' } - less_than: expr LT expr { return binary val[0], val[2], 'isLessThan:' } - greater_or_eq: expr GTE expr { return binary val[0], val[2], 'isGreaterOrEqualTo:' } - less_or_eq: expr LTE expr { return binary val[0], val[2], 'isLessOrEqualTo:' } - - unary_op: unary_not - | unary_plus - | unary_minus - | unary_complement - - unary_not: BANG expr { return unary val[1], 'unaryNot' } - unary_plus: PLUS expr { return unary val[1], 'unaryPlus' } - unary_minus: MINUS expr { return unary val[1], 'unaryMinus' } - unary_complement: TILDE expr { return unary val[1], 'unaryComplement' } - - literal: integer - | float - | string - | nil - | true - | false - | self - - float: FLOAT { return n :Float, val[0] } - integer: INTEGER { return n :Integer, val[0] } - nil: NIL { return n :Nil } - true: TRUE { return n :True } - false: FALSE { return n :False } - self: SELF { return n :Self } - - string: STRING { return n :String, val[0] } - | interpolated_string - | empty_string - - interpolated_string: DOUBLE_TICK_STRING interpolated_string_contents DOUBLE_TICK_STRING_END { return val[1] } - interpolation: INTERPOLATE_START expr INTERPOLATE_END { return val[1] } - interpolated_string_contents: interpolated_string_chunk { return n :InterpolatedString, val[0] } - | interpolated_string_contents interpolated_string_chunk { val[0].append(val[1]); return val[0] } - interpolated_string_chunk: chars { return val[0] } - | interpolation { return to_string(val[0]) } - empty_string: DOUBLE_TICK_STRING DOUBLE_TICK_STRING_END { return n :String, '' } - - chars: CHAR { return n :String, val[0] } - | chars CHAR { val[0].append(val[1]); return val[0] } -end - ----- inner - -attr_accessor :lexer, :scopes, :state - -def initialize lexer - @lexer = lexer - @state = [] - @scopes = [] - push_scope -end - -def ast - @ast ||= do_parse - @scopes.first -end - -def on_error t, val, vstack - line = lexer.line - col = lexer.column - message = "Unexpected #{token_to_str t} at #{lexer.filename} line #{line}:#{col}:\n\n" - - start = line - 5 > 0 ? line - 5 : 0 - i_size = line.to_s.size - (start..(start + 5)).each do |i| - message << sprintf("\t%#{i_size}d: %s\n", i, lexer.get_line(i)) - message << "\t#{' ' * i_size} #{'-' * (col - 1)}^\n" if i == line - end - - raise SyntaxError, message -end - -def next_token - nt = lexer.next_computed_token - # just use a state stack for now, we'll have to do something - # more sophisticated soon. - if nt && nt.first == :state - if nt.last - state.push << nt.last - else - state.pop - end - next_token - else - nt - end -end - -def push_scope - new_scope = Huia::AST::Scope.new scope - new_scope.file = lexer.filename - new_scope.line = lexer.line - new_scope.column = lexer.column - scopes.push new_scope - new_scope -end - -def pop_scope - scopes.pop -end - -def scope - scopes.last -end - -def binary left, right, method - node(:MethodCall, left, node(:CallSignature, method, [right])) -end - -def unary left, method - node(:MethodCall, left, node(:CallSignature, method)) -end - -def node type, *args - Huia::AST.const_get(type).new(*args).tap do |n| - n.file = lexer.filename - n.line = lexer.line - n.column = lexer.column - end -end -alias n node - -def allocate_local name - node(:Variable, name).tap do |n| - scope.allocate_local n - end -end - -def allocate_local_assignment name, value - node(:Assignment, name, value).tap do |n| - scope.allocate_local n - end -end - -def this_closure - allocate_local('@') -end - -def scope_instance - node(:ScopeInstance, scope) -end - -def constant name - return scope_instance if name == 'self' - node(:Constant, name) -end - -def to_string expr - node(:MethodCall, expr, node(:CallSignature, 'toString')) -end diff --git a/test/racc/assets/ichk.y b/test/racc/assets/ichk.y deleted file mode 100644 index 1d359df83e..0000000000 --- a/test/racc/assets/ichk.y +++ /dev/null @@ -1,102 +0,0 @@ -class Calculator - - prechigh - left '*' '/' - left '+' '-' - preclow - - convert - NUMBER 'Number' - end - -rule - - target : exp - | /* none */ { result = 0 } - - exp : exp '+' exp { result += val[2]; a = 'plus' } - | exp '-' exp { result -= val[2]; a = "string test" } - | exp '*' exp { result *= val[2] } - | exp '/' exp { result /= val[2] } - | '(' { $emb = true } exp ')' - { - raise 'must not happen' unless $emb - result = val[2] - } - | '-' NUMBER { result = -val[1] } - | NUMBER - -----header - -class Number -end - -----inner - - def initialize - @racc_debug_out = $stdout - @yydebug = false - end - - def validate(expected, src) - result = parse(src) - unless result == expected - raise "test #{@test_number} fail" - end - @test_number += 1 - end - - def parse(src) - @src = src - @test_number = 1 - yyparse self, :scan - end - - def scan(&block) - @src.each(&block) - end - -----footer - -calc = Calculator.new - -calc.validate(9, [[Number, 9], nil]) - -calc.validate(-3, - [[Number, 5], - ['*', '*'], - [Number, 1], - ['-', '*'], - [Number, 1], - ['*', '*'], - [Number, 8], - nil]) - -calc.validate(-1, - [[Number, 5], - ['+', '+'], - [Number, 2], - ['-', '-'], - [Number, 5], - ['+', '+'], - [Number, 2], - ['-', '-'], - [Number, 5], - nil]) - -calc.validate(-4, - [['-', 'UMINUS'], - [Number, 4], - nil]) - -calc.validate(40, - [[Number, 7], - ['*', '*'], - ['(', '('], - [Number, 4], - ['+', '+'], - [Number, 3], - [')', ')'], - ['-', '-'], - [Number, 9], - nil]) diff --git a/test/racc/assets/ifelse.y b/test/racc/assets/ifelse.y deleted file mode 100644 index 18dbe4b1a7..0000000000 --- a/test/racc/assets/ifelse.y +++ /dev/null @@ -1,14 +0,0 @@ -class C::Parser -token tSOMETHING -rule - statement - : tSOMETHING - | 'if' statement 'then' statement - | 'if' statement 'then' statement 'else' statement - ; - - dummy - : tSOMETHING '+' tSOMETHING - | tSOMETHING '-' tSOMETHING - ; - diff --git a/test/racc/assets/intp.y b/test/racc/assets/intp.y deleted file mode 100644 index 39e42afd74..0000000000 --- a/test/racc/assets/intp.y +++ /dev/null @@ -1,546 +0,0 @@ -# -# intp -# - -class Intp::Parser - -prechigh - nonassoc UMINUS - left '*' '/' - left '+' '-' - nonassoc EQ -preclow - -rule - - program : stmt_list - { - result = RootNode.new( val[0] ) - } - - stmt_list : - { - result = [] - } - | stmt_list stmt EOL - { - result.push val[1] - } - | stmt_list EOL - - stmt : expr - | assign - | IDENT realprim - { - result = FuncallNode.new( @fname, val[0][0], - val[0][1], [val[1]] ) - } - | if_stmt - | while_stmt - | defun - - if_stmt : IF stmt THEN EOL stmt_list else_stmt END - { - result = IfNode.new( @fname, val[0][0], - val[1], val[4], val[5] ) - } - - else_stmt : ELSE EOL stmt_list - { - result = val[2] - } - | - { - result = nil - } - - while_stmt: WHILE stmt DO EOL stmt_list END - { - result = WhileNode.new(@fname, val[0][0], - val[1], val[4]) - } - - defun : DEF IDENT param EOL stmt_list END - { - result = DefNode.new(@fname, val[0][0], val[1][1], - Function.new(@fname, val[0][0], val[2], val[4])) - } - - param : '(' name_list ')' - { - result = val[1] - } - | '(' ')' - { - result = [] - } - | - { - result = [] - } - - name_list : IDENT - { - result = [ val[0][1] ] - } - | name_list ',' IDENT - { - result.push val[2][1] - } - - assign : IDENT '=' expr - { - result = AssignNode.new(@fname, val[0][0], val[0][1], val[2]) - } - - expr : expr '+' expr - { - result = FuncallNode.new(@fname, val[0].lineno, '+', [val[0], val[2]]) - } - | expr '-' expr - { - result = FuncallNode.new(@fname, val[0].lineno, '-', [val[0], val[2]]) - } - | expr '*' expr - { - result = FuncallNode.new(@fname, val[0].lineno, '*', [val[0], val[2]]) - } - | expr '/' expr - { - result = FuncallNode.new(@fname, val[0].lineno, - '/', [val[0], val[2]]) - } - | expr EQ expr - { - result = FuncallNode.new(@fname, val[0].lineno, '==', [val[0], val[2]]) - } - | primary - - primary : realprim - | '(' expr ')' - { - result = val[1] - } - | '-' expr =UMINUS - { - result = FuncallNode.new(@fname, val[0][0], '-@', [val[1]]) - } - - realprim : IDENT - { - result = VarRefNode.new(@fname, val[0][0], - val[0][1]) - } - | NUMBER - { - result = LiteralNode.new(@fname, *val[0]) - } - | STRING - { - result = StringNode.new(@fname, *val[0]) - } - | TRUE - { - result = LiteralNode.new(@fname, *val[0]) - } - | FALSE - { - result = LiteralNode.new(@fname, *val[0]) - } - | NIL - { - result = LiteralNode.new(@fname, *val[0]) - } - | funcall - - funcall : IDENT '(' args ')' - { - result = FuncallNode.new(@fname, val[0][0], val[0][1], val[2]) - } - | IDENT '(' ')' - { - result = FuncallNode.new(@fname, val[0][0], val[0][1], []) - } - - args : expr - { - result = val - } - | args ',' expr - { - result.push val[2] - } - -end - ----- header -# -# intp/parser.rb -# - ----- inner - - def initialize - @scope = {} - end - - RESERVED = { - 'if' => :IF, - 'else' => :ELSE, - 'while' => :WHILE, - 'then' => :THEN, - 'do' => :DO, - 'def' => :DEF, - 'true' => :TRUE, - 'false' => :FALSE, - 'nil' => :NIL, - 'end' => :END - } - - RESERVED_V = { - 'true' => true, - 'false' => false, - 'nil' => nil - } - - def parse(f, fname) - @q = [] - @fname = fname - lineno = 1 - f.each do |line| - line.strip! - until line.empty? - case line - when /\A\s+/, /\A\#.*/ - ; - when /\A[a-zA-Z_]\w*/ - word = $& - @q.push [(RESERVED[word] || :IDENT), - [lineno, RESERVED_V.key?(word) ? RESERVED_V[word] : word.intern]] - when /\A\d+/ - @q.push [:NUMBER, [lineno, $&.to_i]] - when /\A"(?:[^"\\]+|\\.)*"/, /\A'(?:[^'\\]+|\\.)*'/ - @q.push [:STRING, [lineno, eval($&)]] - when /\A==/ - @q.push [:EQ, [lineno, '==']] - when /\A./ - @q.push [$&, [lineno, $&]] - else - raise RuntimeError, 'must not happen' - end - line = $' - end - @q.push [:EOL, [lineno, nil]] - lineno += 1 - end - @q.push [false, '$'] - do_parse - end - - def next_token - @q.shift - end - - def on_error(t, v, values) - if v - line = v[0] - v = v[1] - else - line = 'last' - end - raise Racc::ParseError, "#{@fname}:#{line}: syntax error on #{v.inspect}" - end - ----- footer -# intp/node.rb - -module Intp - - class IntpError < StandardError; end - class IntpArgumentError < IntpError; end - - class Core - - def initialize - @ftab = {} - @obj = Object.new - @stack = [] - @stack.push Frame.new '(toplevel)' - end - - def frame - @stack[-1] - end - - def define_function(fname, node) - raise IntpError, "function #{fname} defined twice" if @ftab.key?(fname) - @ftab[fname] = node - end - - def call_function_or(fname, args) - call_intp_function_or(fname, args) { - call_ruby_toplevel_or(fname, args) { - yield - } - } - end - - def call_intp_function_or(fname, args) - if func = @ftab[fname] - frame = Frame.new(fname) - @stack.push frame - func.call self, frame, args - @stack.pop - else - yield - end - end - - def call_ruby_toplevel_or(fname, args) - if @obj.respond_to? fname, true - @obj.send fname, *args - else - yield - end - end - - end - - class Frame - - def initialize(fname) - @fname = fname - @lvars = {} - end - - attr :fname - - def lvar?(name) - @lvars.key? name - end - - def [](key) - @lvars[key] - end - - def []=(key, val) - @lvars[key] = val - end - - end - - - class Node - - def initialize(fname, lineno) - @filename = fname - @lineno = lineno - end - - attr_reader :filename - attr_reader :lineno - - def exec_list(intp, nodes) - v = nil - nodes.each {|i| v = i.evaluate(intp) } - v - end - - def intp_error!(msg) - raise IntpError, "in #{filename}:#{lineno}: #{msg}" - end - - def inspect - "#{self.class.name}/#{lineno}" - end - - end - - - class RootNode < Node - - def initialize(tree) - super nil, nil - @tree = tree - end - - def evaluate - exec_list Core.new, @tree - end - - end - - - class DefNode < Node - - def initialize(file, lineno, fname, func) - super file, lineno - @funcname = fname - @funcobj = func - end - - def evaluate(intp) - intp.define_function @funcname, @funcobj - end - - end - - class FuncallNode < Node - - def initialize(file, lineno, func, args) - super file, lineno - @funcname = func - @args = args - end - - def evaluate(intp) - args = @args.map {|i| i.evaluate intp } - begin - intp.call_intp_function_or(@funcname, args) { - if args.empty? or not args[0].respond_to?(@funcname) - intp.call_ruby_toplevel_or(@funcname, args) { - intp_error! "undefined function #{@funcname.id2name}" - } - else - recv = args.shift - recv.send @funcname, *args - end - } - rescue IntpArgumentError, ArgumentError - intp_error! $!.message - end - end - - end - - class Function < Node - - def initialize(file, lineno, params, body) - super file, lineno - @params = params - @body = body - end - - def call(intp, frame, args) - unless args.size == @params.size - raise IntpArgumentError, - "wrong # of arg for #{frame.fname}() (#{args.size} for #{@params.size})" - end - args.each_with_index do |v,i| - frame[@params[i]] = v - end - exec_list intp, @body - end - - end - - - class IfNode < Node - - def initialize(fname, lineno, cond, tstmt, fstmt) - super fname, lineno - @condition = cond - @tstmt = tstmt - @fstmt = fstmt - end - - def evaluate(intp) - if @condition.evaluate(intp) - exec_list intp, @tstmt - else - exec_list intp, @fstmt if @fstmt - end - end - - end - - class WhileNode < Node - - def initialize(fname, lineno, cond, body) - super fname, lineno - @condition = cond - @body = body - end - - def evaluate(intp) - while @condition.evaluate(intp) - exec_list intp, @body - end - end - - end - - - class AssignNode < Node - - def initialize(fname, lineno, vname, val) - super fname, lineno - @vname = vname - @val = val - end - - def evaluate(intp) - intp.frame[@vname] = @val.evaluate(intp) - end - - end - - class VarRefNode < Node - - def initialize(fname, lineno, vname) - super fname, lineno - @vname = vname - end - - def evaluate(intp) - if intp.frame.lvar?(@vname) - intp.frame[@vname] - else - intp.call_function_or(@vname, []) { - intp_error! "unknown method or local variable #{@vname.id2name}" - } - end - end - - end - - class StringNode < Node - - def initialize(fname, lineno, str) - super fname, lineno - @val = str - end - - def evaluate(intp) - @val.dup - end - - end - - class LiteralNode < Node - - def initialize(fname, lineno, val) - super fname, lineno - @val = val - end - - def evaluate(intp) - @val - end - - end - -end # module Intp - -begin - tree = nil - fname = 'src.intp' - File.open(fname) {|f| - tree = Intp::Parser.new.parse(f, fname) - } - tree.evaluate -rescue Racc::ParseError, Intp::IntpError, Errno::ENOENT - raise #### - $stderr.puts "#{File.basename $0}: #{$!}" - exit 1 -end diff --git a/test/racc/assets/journey.y b/test/racc/assets/journey.y deleted file mode 100644 index c2640f3339..0000000000 --- a/test/racc/assets/journey.y +++ /dev/null @@ -1,47 +0,0 @@ -class Journey::Parser - -token SLASH LITERAL SYMBOL LPAREN RPAREN DOT STAR OR - -rule - expressions - : expressions expression { result = Cat.new(val.first, val.last) } - | expression { result = val.first } - | or - ; - expression - : terminal - | group - | star - ; - group - : LPAREN expressions RPAREN { result = Group.new(val[1]) } - ; - or - : expressions OR expression { result = Or.new([val.first, val.last]) } - ; - star - : STAR { result = Star.new(Symbol.new(val.last)) } - ; - terminal - : symbol - | literal - | slash - | dot - ; - slash - : SLASH { result = Slash.new('/') } - ; - symbol - : SYMBOL { result = Symbol.new(val.first) } - ; - literal - : LITERAL { result = Literal.new(val.first) } - dot - : DOT { result = Dot.new(val.first) } - ; - -end - ----- header - -require 'journey/parser_extras' diff --git a/test/racc/assets/liquor.y b/test/racc/assets/liquor.y deleted file mode 100644 index 8045a072a4..0000000000 --- a/test/racc/assets/liquor.y +++ /dev/null @@ -1,313 +0,0 @@ -# Copyright (c) 2012-2013 Peter Zotov <whitequark@whitequark.org> -# 2012 Yaroslav Markin <yaroslav@markin.net> -# 2012 Nate Gadgibalaev <nat@xnsv.ru> -# -# MIT License -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -class Liquor::Parser - token comma dot endtag ident integer keyword lblock lblock2 lbracket - linterp lparen op_div op_eq op_gt op_geq op_lt op_leq op_minus - op_mod op_mul op_neq op_not op_plus pipe plaintext rblock - rbracket rinterp rparen string tag_ident - - prechigh - left dot - nonassoc op_uminus op_not - left op_mul op_div op_mod - left op_plus op_minus - left op_eq op_neq op_lt op_leq op_gt op_geq - left op_and - left op_or - preclow - - expect 15 - - start block - -rule - block: /* empty */ - { result = [] } - | plaintext block - { result = [ val[0], *val[1] ] } - | interp block - { result = [ val[0], *val[1] ] } - | tag block - { result = [ val[0], *val[1] ] } - - interp: - linterp expr rinterp - { result = [ :interp, retag(val), val[1] ] } - | linterp filter_chain rinterp - { result = [ :interp, retag(val), val[1] ] } - - primary_expr: - ident - | lparen expr rparen - { result = [ val[1][0], retag(val), *val[1][2..-1] ] } - - expr: - integer - | string - | tuple - | ident function_args - { result = [ :call, retag(val), val[0], val[1] ] } - | expr lbracket expr rbracket - { result = [ :index, retag(val), val[0], val[2] ] } - | expr dot ident function_args - { result = [ :external, retag(val), val[0], val[2], val[3] ] } - | expr dot ident - { result = [ :external, retag(val), val[0], val[2], nil ] } - | op_minus expr =op_uminus - { result = [ :uminus, retag(val), val[1] ] } - | op_not expr - { result = [ :not, retag(val), val[1] ] } - | expr op_mul expr - { result = [ :mul, retag(val), val[0], val[2] ] } - | expr op_div expr - { result = [ :div, retag(val), val[0], val[2] ] } - | expr op_mod expr - { result = [ :mod, retag(val), val[0], val[2] ] } - | expr op_plus expr - { result = [ :plus, retag(val), val[0], val[2] ] } - | expr op_minus expr - { result = [ :minus, retag(val), val[0], val[2] ] } - | expr op_eq expr - { result = [ :eq, retag(val), val[0], val[2] ] } - | expr op_neq expr - { result = [ :neq, retag(val), val[0], val[2] ] } - | expr op_lt expr - { result = [ :lt, retag(val), val[0], val[2] ] } - | expr op_leq expr - { result = [ :leq, retag(val), val[0], val[2] ] } - | expr op_gt expr - { result = [ :gt, retag(val), val[0], val[2] ] } - | expr op_geq expr - { result = [ :geq, retag(val), val[0], val[2] ] } - | expr op_and expr - { result = [ :and, retag(val), val[0], val[2] ] } - | expr op_or expr - { result = [ :or, retag(val), val[0], val[2] ] } - | primary_expr - - tuple: - lbracket tuple_content rbracket - { result = [ :tuple, retag(val), val[1].compact ] } - - tuple_content: - expr comma tuple_content - { result = [ val[0], *val[2] ] } - | expr - { result = [ val[0] ] } - | /* empty */ - { result = [ ] } - - function_args: - lparen function_args_inside rparen - { result = [ :args, retag(val), *val[1] ] } - - function_args_inside: - expr function_keywords - { result = [ val[0], val[1][2] ] } - | function_keywords - { result = [ nil, val[0][2] ] } - - function_keywords: - keyword expr function_keywords - { name = val[0][2].to_sym - tail = val[2][2] - loc = retag([ val[0], val[1] ]) - - if tail.include? name - @errors << SyntaxError.new("duplicate keyword argument `#{val[0][2]}'", - tail[name][1]) - end - - hash = { - name => [ val[1][0], loc, *val[1][2..-1] ] - }.merge(tail) - - result = [ :keywords, retag([ loc, val[2] ]), hash ] - } - | /* empty */ - { result = [ :keywords, nil, {} ] } - - filter_chain: - expr pipe filter_chain_cont - { result = [ val[0], *val[2] ]. - reduce { |tree, node| node[3][2] = tree; node } - } - - filter_chain_cont: - filter_call pipe filter_chain_cont - { result = [ val[0], *val[2] ] } - | filter_call - { result = [ val[0] ] } - - filter_call: - ident function_keywords - { ident_loc = val[0][1] - empty_args_loc = { line: ident_loc[:line], - start: ident_loc[:end] + 1, - end: ident_loc[:end] + 1, } - result = [ :call, val[0][1], val[0], - [ :args, val[1][1] || empty_args_loc, nil, val[1][2] ] ] - } - - tag: - lblock ident expr tag_first_cont - { result = [ :tag, retag(val), val[1], val[2], *reduce_tag_args(val[3][2]) ] } - | lblock ident tag_first_cont - { result = [ :tag, retag(val), val[1], nil, *reduce_tag_args(val[2][2]) ] } - - # Racc cannot do lookahead across rules. I had to add states - # explicitly to avoid S/R conflicts. You are not expected to - # understand this. - - tag_first_cont: - rblock - { result = [ :cont, retag(val), [] ] } - | keyword tag_first_cont2 - { result = [ :cont, retag(val), [ val[0], *val[1][2] ] ] } - - tag_first_cont2: - rblock block lblock2 tag_next_cont - { result = [ :cont2, val[0][1], [ [:block, val[0][1], val[1] ], *val[3] ] ] } - | expr tag_first_cont - { result = [ :cont2, retag(val), [ val[0], *val[1][2] ] ] } - - tag_next_cont: - endtag rblock - { result = [] } - | keyword tag_next_cont2 - { result = [ val[0], *val[1] ] } - - tag_next_cont2: - rblock block lblock2 tag_next_cont - { result = [ [:block, val[0][1], val[1] ], *val[3] ] } - | expr keyword tag_next_cont3 - { result = [ val[0], val[1], *val[2] ] } - - tag_next_cont3: - rblock block lblock2 tag_next_cont - { result = [ [:block, val[0][1], val[1] ], *val[3] ] } - | expr tag_next_cont - { result = [ val[0], *val[1] ] } - ----- inner - attr_reader :errors, :ast - - def initialize(tags={}) - super() - - @errors = [] - @ast = nil - @tags = tags - end - - def success? - @errors.empty? - end - - def parse(string, name='(code)') - @errors.clear - @name = name - @ast = nil - - begin - @stream = Lexer.lex(string, @name, @tags) - @ast = do_parse - rescue Liquor::SyntaxError => e - @errors << e - end - - success? - end - - def next_token - tok = @stream.shift - [ tok[0], tok ] if tok - end - - TOKEN_NAME_MAP = { - :comma => ',', - :dot => '.', - :lblock => '{%', - :rblock => '%}', - :linterp => '{{', - :rinterp => '}}', - :lbracket => '[', - :rbracket => ']', - :lparen => '(', - :rparen => ')', - :pipe => '|', - :op_not => '!', - :op_mul => '*', - :op_div => '/', - :op_mod => '%', - :op_plus => '+', - :op_minus => '-', - :op_eq => '==', - :op_neq => '!=', - :op_lt => '<', - :op_leq => '<=', - :op_gt => '>', - :op_geq => '>=', - :keyword => 'keyword argument name', - :kwarg => 'keyword argument', - :ident => 'identifier', - } - - def on_error(error_token_id, error_token, value_stack) - if token_to_str(error_token_id) == "$end" - raise Liquor::SyntaxError.new("unexpected end of program", { - file: @name - }) - else - type, (loc, value) = error_token - type = TOKEN_NAME_MAP[type] || type - - raise Liquor::SyntaxError.new("unexpected token `#{type}'", loc) - end - end - - def retag(nodes) - loc = nodes.map { |node| node[1] }.compact - first, *, last = loc - return first if last.nil? - - { - file: first[:file], - line: first[:line], - start: first[:start], - end: last[:end], - } - end - - def reduce_tag_args(list) - list.each_slice(2).reduce([]) { |args, (k, v)| - if v[0] == :block - args << [ :blockarg, retag([ k, v ]), k, v[2] || [] ] - else - args << [ :kwarg, retag([ k, v ]), k, v ] - end - } - end
\ No newline at end of file diff --git a/test/racc/assets/machete.y b/test/racc/assets/machete.y deleted file mode 100644 index ea92d47a69..0000000000 --- a/test/racc/assets/machete.y +++ /dev/null @@ -1,423 +0,0 @@ -# Copyright (c) 2011 SUSE -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation -# files (the "Software"), to deal in the Software without -# restriction, including without limitation the rights to use, -# copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the -# Software is furnished to do so, subject to the following -# conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -# OTHER DEALINGS IN THE SOFTWARE. - -class Machete::Parser - -token NIL -token TRUE -token FALSE -token INTEGER -token SYMBOL -token STRING -token REGEXP -token ANY -token EVEN -token ODD -token METHOD_NAME -token CLASS_NAME - -start expression - -rule - -expression : primary - | expression "|" primary { - result = if val[0].is_a?(ChoiceMatcher) - ChoiceMatcher.new(val[0].alternatives << val[2]) - else - ChoiceMatcher.new([val[0], val[2]]) - end - } - -primary : node - | array - | literal - | any - -node : CLASS_NAME { - result = NodeMatcher.new(val[0].to_sym) - } - | CLASS_NAME "<" attrs ">" { - result = NodeMatcher.new(val[0].to_sym, val[2]) - } - -attrs : attr - | attrs "," attr { result = val[0].merge(val[2]) } - -attr : method_name "=" expression { result = { val[0].to_sym => val[2] } } - | method_name "^=" SYMBOL { - result = { - val[0].to_sym => SymbolRegexpMatcher.new( - Regexp.new("^" + Regexp.escape(symbol_value(val[2]).to_s)) - ) - } - } - | method_name "$=" SYMBOL { - result = { - val[0].to_sym => SymbolRegexpMatcher.new( - Regexp.new(Regexp.escape(symbol_value(val[2]).to_s) + "$") - ) - } - } - | method_name "*=" SYMBOL { - result = { - val[0].to_sym => SymbolRegexpMatcher.new( - Regexp.new(Regexp.escape(symbol_value(val[2]).to_s)) - ) - } - } - | method_name "^=" STRING { - result = { - val[0].to_sym => StringRegexpMatcher.new( - Regexp.new("^" + Regexp.escape(string_value(val[2]))) - ) - } - } - | method_name "$=" STRING { - result = { - val[0].to_sym => StringRegexpMatcher.new( - Regexp.new(Regexp.escape(string_value(val[2])) + "$") - ) - } - } - | method_name "*=" STRING { - result = { - val[0].to_sym => StringRegexpMatcher.new( - Regexp.new(Regexp.escape(string_value(val[2]))) - ) - } - } - | method_name "*=" REGEXP { - result = { - val[0].to_sym => IndifferentRegexpMatcher.new( - Regexp.new(regexp_value(val[2])) - ) - } - } - -# Hack to overcome the fact that some tokens will lex as simple tokens, not -# METHOD_NAME tokens, and that "reserved words" will lex as separate kinds of -# tokens. -method_name : METHOD_NAME - | NIL - | TRUE - | FALSE - | ANY - | EVEN - | ODD - | "*" - | "+" - | "<" - | ">" - | "^" - | "|" - -array : "[" items_opt "]" { result = ArrayMatcher.new(val[1]) } - -items_opt : /* empty */ { result = [] } - | items - -items : item { result = [val[0]] } - | items "," item { result = val[0] << val[2] } - -item : expression - | expression quantifier { result = Quantifier.new(val[0], *val[1]) } - -quantifier : "*" { result = [0, nil, 1] } - | "+" { result = [1, nil, 1] } - | "?" { result = [0, 1, 1] } - | "{" INTEGER "}" { - result = [integer_value(val[1]), integer_value(val[1]), 1] - } - | "{" INTEGER "," "}" { - result = [integer_value(val[1]), nil, 1] - } - | "{" "," INTEGER "}" { - result = [0, integer_value(val[2]), 1] - } - | "{" INTEGER "," INTEGER "}" { - result = [integer_value(val[1]), integer_value(val[3]), 1] - } - | "{" EVEN "}" { result = [0, nil, 2] } - | "{" ODD "}" { result = [1, nil, 2] } - -literal : NIL { result = LiteralMatcher.new(nil) } - | TRUE { result = LiteralMatcher.new(true) } - | FALSE { result = LiteralMatcher.new(false) } - | INTEGER { result = LiteralMatcher.new(integer_value(val[0])) } - | SYMBOL { result = LiteralMatcher.new(symbol_value(val[0])) } - | STRING { result = LiteralMatcher.new(string_value(val[0])) } - | REGEXP { result = LiteralMatcher.new(regexp_value(val[0])) } - -any : ANY { result = AnyMatcher.new } - ----- inner - -include Matchers - -class SyntaxError < StandardError; end - -def parse(input) - @input = input - @pos = 0 - - do_parse -end - -private - -def integer_value(value) - if value =~ /^0[bB]/ - value[2..-1].to_i(2) - elsif value =~ /^0[oO]/ - value[2..-1].to_i(8) - elsif value =~ /^0[dD]/ - value[2..-1].to_i(10) - elsif value =~ /^0[xX]/ - value[2..-1].to_i(16) - elsif value =~ /^0/ - value.to_i(8) - else - value.to_i - end -end - -def symbol_value(value) - value[1..-1].to_sym -end - -def string_value(value) - quote = value[0..0] - if quote == "'" - value[1..-2].gsub("\\\\", "\\").gsub("\\'", "'") - elsif quote == '"' - value[1..-2]. - gsub("\\\\", "\\"). - gsub('\\"', '"'). - gsub("\\n", "\n"). - gsub("\\t", "\t"). - gsub("\\r", "\r"). - gsub("\\f", "\f"). - gsub("\\v", "\v"). - gsub("\\a", "\a"). - gsub("\\e", "\e"). - gsub("\\b", "\b"). - gsub("\\s", "\s"). - gsub(/\\([0-7]{1,3})/) { $1.to_i(8).chr }. - gsub(/\\x([0-9a-fA-F]{1,2})/) { $1.to_i(16).chr } - else - raise "Unknown quote: #{quote.inspect}." - end -end - -REGEXP_OPTIONS = { - 'i' => Regexp::IGNORECASE, - 'm' => Regexp::MULTILINE, - 'x' => Regexp::EXTENDED -} - -def regexp_value(value) - /\A\/(.*)\/([imx]*)\z/ =~ value - pattern, options = $1, $2 - - Regexp.new(pattern, options.chars.map { |ch| REGEXP_OPTIONS[ch] }.inject(:|)) -end - -# "^" needs to be here because if it were among operators recognized by -# METHOD_NAME, "^=" would be recognized as two tokens. -SIMPLE_TOKENS = [ - "|", - "<", - ">", - ",", - "=", - "^=", - "^", - "$=", - "[", - "]", - "*=", - "*", - "+", - "?", - "{", - "}" -] - -COMPLEX_TOKENS = [ - [:NIL, /^nil/], - [:TRUE, /^true/], - [:FALSE, /^false/], - # INTEGER needs to be before METHOD_NAME, otherwise e.g. "+1" would be - # recognized as two tokens. - [ - :INTEGER, - /^ - [+-]? # sign - ( - 0[bB][01]+(_[01]+)* # binary (prefixed) - | - 0[oO][0-7]+(_[0-7]+)* # octal (prefixed) - | - 0[dD]\d+(_\d+)* # decimal (prefixed) - | - 0[xX][0-9a-fA-F]+(_[0-9a-fA-F]+)* # hexadecimal (prefixed) - | - 0[0-7]*(_[0-7]+)* # octal (unprefixed) - | - [1-9]\d*(_\d+)* # decimal (unprefixed) - ) - /x - ], - [ - :SYMBOL, - /^ - : - ( - # class name - [A-Z][a-zA-Z0-9_]* - | - # regular method name - [a-z_][a-zA-Z0-9_]*[?!=]? - | - # instance variable name - @[a-zA-Z_][a-zA-Z0-9_]* - | - # class variable name - @@[a-zA-Z_][a-zA-Z0-9_]* - | - # operator (sorted by length, then alphabetically) - (<=>|===|\[\]=|\*\*|\+@|-@|<<|<=|==|=~|>=|>>|\[\]|[%&*+\-\/<>^`|~]) - ) - /x - ], - [ - :STRING, - /^ - ( - ' # sinqle-quoted string - ( - \\[\\'] # escape - | - [^'] # regular character - )* - ' - | - " # double-quoted string - ( - \\ # escape - ( - [\\"ntrfvaebs] # one-character escape - | - [0-7]{1,3} # octal number escape - | - x[0-9a-fA-F]{1,2} # hexadecimal number escape - ) - | - [^"] # regular character - )* - " - ) - /x - ], - [ - :REGEXP, - /^ - \/ - ( - \\ # escape - ( - [\\\/ntrfvaebs\(\)\[\]\{\}\-\.\?\*\+\|\^\$] # one-character escape - | - [0-7]{2,3} # octal number escape - | - x[0-9a-fA-F]{1,2} # hexadecimal number escape - ) - | - [^\/] # regular character - )* - \/ - [imx]* - /x - ], - # ANY, EVEN and ODD need to be before METHOD_NAME, otherwise they would be - # recognized as method names. - [:ANY, /^any/], - [:EVEN, /^even/], - [:ODD, /^odd/], - # We exclude "*", "+", "<", ">", "^" and "|" from method names since they are - # lexed as simple tokens. This is because they have also other meanings in - # Machette patterns beside Ruby method names. - [ - :METHOD_NAME, - /^ - ( - # regular name - [a-z_][a-zA-Z0-9_]*[?!=]? - | - # operator (sorted by length, then alphabetically) - (<=>|===|\[\]=|\*\*|\+@|-@|<<|<=|==|=~|>=|>>|\[\]|[%&\-\/`~]) - ) - /x - ], - [:CLASS_NAME, /^[A-Z][a-zA-Z0-9_]*/] -] - -def next_token - skip_whitespace - - return false if remaining_input.empty? - - # Complex tokens need to be before simple tokens, otherwise e.g. "<<" would be - # recognized as two tokens. - - COMPLEX_TOKENS.each do |type, regexp| - if remaining_input =~ regexp - @pos += $&.length - return [type, $&] - end - end - - SIMPLE_TOKENS.each do |token| - if remaining_input[0...token.length] == token - @pos += token.length - return [token, token] - end - end - - raise SyntaxError, "Unexpected character: #{remaining_input[0..0].inspect}." -end - -def skip_whitespace - if remaining_input =~ /\A^[ \t\r\n]+/ - @pos += $&.length - end -end - -def remaining_input - @input[@pos..-1] -end - -def on_error(error_token_id, error_value, value_stack) - raise SyntaxError, "Unexpected token: #{error_value.inspect}." -end diff --git a/test/racc/assets/macruby.y b/test/racc/assets/macruby.y deleted file mode 100644 index 5ede008308..0000000000 --- a/test/racc/assets/macruby.y +++ /dev/null @@ -1,2197 +0,0 @@ -# Copyright (c) 2013 Peter Zotov <whitequark@whitequark.org> -# -# Parts of the source are derived from ruby_parser: -# Copyright (c) Ryan Davis, seattle.rb -# -# MIT License -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -class Parser::MacRuby - -token kCLASS kMODULE kDEF kUNDEF kBEGIN kRESCUE kENSURE kEND kIF kUNLESS - kTHEN kELSIF kELSE kCASE kWHEN kWHILE kUNTIL kFOR kBREAK kNEXT - kREDO kRETRY kIN kDO kDO_COND kDO_BLOCK kDO_LAMBDA kRETURN kYIELD kSUPER - kSELF kNIL kTRUE kFALSE kAND kOR kNOT kIF_MOD kUNLESS_MOD kWHILE_MOD - kUNTIL_MOD kRESCUE_MOD kALIAS kDEFINED klBEGIN klEND k__LINE__ - k__FILE__ k__ENCODING__ tIDENTIFIER tFID tGVAR tIVAR tCONSTANT - tLABEL tCVAR tNTH_REF tBACK_REF tSTRING_CONTENT tINTEGER tFLOAT - tREGEXP_END tUPLUS tUMINUS tUMINUS_NUM tPOW tCMP tEQ tEQQ tNEQ - tGEQ tLEQ tANDOP tOROP tMATCH tNMATCH tDOT tDOT2 tDOT3 tAREF - tASET tLSHFT tRSHFT tCOLON2 tCOLON3 tOP_ASGN tASSOC tLPAREN - tLPAREN2 tRPAREN tLPAREN_ARG tLBRACK tLBRACK2 tRBRACK tLBRACE - tLBRACE_ARG tSTAR tSTAR2 tAMPER tAMPER2 tTILDE tPERCENT tDIVIDE - tPLUS tMINUS tLT tGT tPIPE tBANG tCARET tLCURLY tRCURLY - tBACK_REF2 tSYMBEG tSTRING_BEG tXSTRING_BEG tREGEXP_BEG tREGEXP_OPT - tWORDS_BEG tQWORDS_BEG tSTRING_DBEG tSTRING_DVAR tSTRING_END - tSTRING tSYMBOL tNL tEH tCOLON tCOMMA tSPACE tSEMI tLAMBDA tLAMBEG - tCHARACTER - -prechigh - right tBANG tTILDE tUPLUS - right tPOW - right tUMINUS_NUM tUMINUS - left tSTAR2 tDIVIDE tPERCENT - left tPLUS tMINUS - left tLSHFT tRSHFT - left tAMPER2 - left tPIPE tCARET - left tGT tGEQ tLT tLEQ - nonassoc tCMP tEQ tEQQ tNEQ tMATCH tNMATCH - left tANDOP - left tOROP - nonassoc tDOT2 tDOT3 - right tEH tCOLON - left kRESCUE_MOD - right tEQL tOP_ASGN - nonassoc kDEFINED - right kNOT - left kOR kAND - nonassoc kIF_MOD kUNLESS_MOD kWHILE_MOD kUNTIL_MOD - nonassoc tLBRACE_ARG - nonassoc tLOWEST -preclow - -rule - - program: top_compstmt - - top_compstmt: top_stmts opt_terms - { - result = @builder.compstmt(val[0]) - } - - top_stmts: # nothing - { - result = [] - } - | top_stmt - { - result = [ val[0] ] - } - | top_stmts terms top_stmt - { - result = val[0] << val[2] - } - | error top_stmt - { - result = [ val[1] ] - } - - top_stmt: stmt - | klBEGIN tLCURLY top_compstmt tRCURLY - { - result = @builder.preexe(val[0], val[1], val[2], val[3]) - } - - bodystmt: compstmt opt_rescue opt_else opt_ensure - { - rescue_bodies = val[1] - else_t, else_ = val[2] - ensure_t, ensure_ = val[3] - - if rescue_bodies.empty? && !else_.nil? - diagnostic :warning, :useless_else, nil, else_t - end - - result = @builder.begin_body(val[0], - rescue_bodies, - else_t, else_, - ensure_t, ensure_) - } - - compstmt: stmts opt_terms - { - result = @builder.compstmt(val[0]) - } - - stmts: # nothing - { - result = [] - } - | stmt - { - result = [ val[0] ] - } - | stmts terms stmt - { - result = val[0] << val[2] - } - | error stmt - { - result = [ val[1] ] - } - - stmt: kALIAS fitem - { - @lexer.state = :expr_fname - } - fitem - { - result = @builder.alias(val[0], val[1], val[3]) - } - | kALIAS tGVAR tGVAR - { - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.gvar(val[2])) - } - | kALIAS tGVAR tBACK_REF - { - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.back_ref(val[2])) - } - | kALIAS tGVAR tNTH_REF - { - diagnostic :error, :nth_ref_alias, nil, val[2] - } - | kUNDEF undef_list - { - result = @builder.undef_method(val[0], val[1]) - } - | stmt kIF_MOD expr_value - { - result = @builder.condition_mod(val[0], nil, - val[1], val[2]) - } - | stmt kUNLESS_MOD expr_value - { - result = @builder.condition_mod(nil, val[0], - val[1], val[2]) - } - | stmt kWHILE_MOD expr_value - { - result = @builder.loop_mod(:while, val[0], val[1], val[2]) - } - | stmt kUNTIL_MOD expr_value - { - result = @builder.loop_mod(:until, val[0], val[1], val[2]) - } - | stmt kRESCUE_MOD stmt - { - rescue_body = @builder.rescue_body(val[1], - nil, nil, nil, - nil, val[2]) - - result = @builder.begin_body(val[0], [ rescue_body ]) - } - | klEND tLCURLY compstmt tRCURLY - { - result = @builder.postexe(val[0], val[1], val[2], val[3]) - } - | lhs tEQL command_call - { - result = @builder.assign(val[0], val[1], val[2]) - } - | mlhs tEQL command_call - { - result = @builder.multi_assign(val[0], val[1], val[2]) - } - | var_lhs tOP_ASGN command_call - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | primary_value tLBRACK2 opt_call_args rbracket tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - } - | primary_value tDOT tIDENTIFIER tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tCONSTANT tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | backref tOP_ASGN command_call - { - @builder.op_assign(val[0], val[1], val[2]) - } - | lhs tEQL mrhs - { - result = @builder.assign(val[0], val[1], - @builder.array(nil, val[2], nil)) - } - | mlhs tEQL arg_value - { - result = @builder.multi_assign(val[0], val[1], val[2]) - } - | mlhs tEQL mrhs - { - result = @builder.multi_assign(val[0], val[1], - @builder.array(nil, val[2], nil)) - } - | expr - - expr: command_call - | expr kAND expr - { - result = @builder.logical_op(:and, val[0], val[1], val[2]) - } - | expr kOR expr - { - result = @builder.logical_op(:or, val[0], val[1], val[2]) - } - | kNOT opt_nl expr - { - result = @builder.not_op(val[0], nil, val[2], nil) - } - | tBANG command_call - { - result = @builder.not_op(val[0], nil, val[1], nil) - } - | arg - - expr_value: expr - - command_call: command - | block_command - - block_command: block_call - | block_call tDOT operation2 command_args - { - result = @builder.call_method(val[0], val[1], val[2], - *val[3]) - } - | block_call tCOLON2 operation2 command_args - { - result = @builder.call_method(val[0], val[1], val[2], - *val[3]) - } - - cmd_brace_block: tLBRACE_ARG - { - @static_env.extend_dynamic - } - opt_block_param compstmt tRCURLY - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - command: operation command_args =tLOWEST - { - result = @builder.call_method(nil, nil, val[0], - *val[1]) - } - | operation command_args cmd_brace_block - { - method_call = @builder.call_method(nil, nil, val[0], - *val[1]) - - begin_t, args, body, end_t = val[2] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | primary_value tDOT operation2 command_args =tLOWEST - { - result = @builder.call_method(val[0], val[1], val[2], - *val[3]) - } - | primary_value tDOT operation2 command_args cmd_brace_block - { - method_call = @builder.call_method(val[0], val[1], val[2], - *val[3]) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | primary_value tCOLON2 operation2 command_args =tLOWEST - { - result = @builder.call_method(val[0], val[1], val[2], - *val[3]) - } - | primary_value tCOLON2 operation2 command_args cmd_brace_block - { - method_call = @builder.call_method(val[0], val[1], val[2], - *val[3]) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | kSUPER command_args - { - result = @builder.keyword_cmd(:super, val[0], - *val[1]) - } - | kYIELD command_args - { - result = @builder.keyword_cmd(:yield, val[0], - *val[1]) - } - | kRETURN call_args - { - result = @builder.keyword_cmd(:return, val[0], - nil, val[1], nil) - } - | kBREAK call_args - { - result = @builder.keyword_cmd(:break, val[0], - nil, val[1], nil) - } - | kNEXT call_args - { - result = @builder.keyword_cmd(:next, val[0], - nil, val[1], nil) - } - - mlhs: mlhs_basic - { - result = @builder.multi_lhs(nil, val[0], nil) - } - | tLPAREN mlhs_inner rparen - { - result = @builder.begin(val[0], val[1], val[2]) - } - - mlhs_inner: mlhs_basic - { - result = @builder.multi_lhs(nil, val[0], nil) - } - | tLPAREN mlhs_inner rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - mlhs_basic: mlhs_head - | mlhs_head mlhs_item - { - result = val[0]. - push(val[1]) - } - | mlhs_head tSTAR mlhs_node - { - result = val[0]. - push(@builder.splat(val[1], val[2])) - } - | mlhs_head tSTAR mlhs_node tCOMMA mlhs_post - { - result = val[0]. - push(@builder.splat(val[1], val[2])). - concat(val[4]) - } - | mlhs_head tSTAR - { - result = val[0]. - push(@builder.splat(val[1])) - } - | mlhs_head tSTAR tCOMMA mlhs_post - { - result = val[0]. - push(@builder.splat(val[1])). - concat(val[3]) - } - | tSTAR mlhs_node - { - result = [ @builder.splat(val[0], val[1]) ] - } - | tSTAR mlhs_node tCOMMA mlhs_post - { - result = [ @builder.splat(val[0], val[1]), - *val[3] ] - } - | tSTAR - { - result = [ @builder.splat(val[0]) ] - } - | tSTAR tCOMMA mlhs_post - { - result = [ @builder.splat(val[0]), - *val[2] ] - } - - mlhs_item: mlhs_node - | tLPAREN mlhs_inner rparen - { - result = @builder.begin(val[0], val[1], val[2]) - } - - mlhs_head: mlhs_item tCOMMA - { - result = [ val[0] ] - } - | mlhs_head mlhs_item tCOMMA - { - result = val[0] << val[1] - } - - mlhs_post: mlhs_item - { - result = [ val[0] ] - } - | mlhs_post tCOMMA mlhs_item - { - result = val[0] << val[2] - } - - mlhs_node: variable - { - result = @builder.assignable(val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - } - | primary_value tDOT tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tDOT tCONSTANT - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - } - | tCOLON3 tCONSTANT - { - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - } - | backref - { - result = @builder.assignable(val[0]) - } - - lhs: variable - { - result = @builder.assignable(val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - } - | primary_value tDOT tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tDOT tCONSTANT - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - } - | tCOLON3 tCONSTANT - { - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - } - | backref - { - result = @builder.assignable(val[0]) - } - - cname: tIDENTIFIER - { - diagnostic :error, :module_name_const, nil, val[0] - } - | tCONSTANT - - cpath: tCOLON3 cname - { - result = @builder.const_global(val[0], val[1]) - } - | cname - { - result = @builder.const(val[0]) - } - | primary_value tCOLON2 cname - { - result = @builder.const_fetch(val[0], val[1], val[2]) - } - - fname: tIDENTIFIER | tCONSTANT | tFID - | op - | reswords - - fsym: fname - { - result = @builder.symbol(val[0]) - } - | symbol - - fitem: fsym - | dsym - - undef_list: fitem - { - result = [ val[0] ] - } - | undef_list tCOMMA - { - @lexer.state = :expr_fname - } - fitem - { - result = val[0] << val[3] - } - - op: tPIPE | tCARET | tAMPER2 | tCMP | tEQ | tEQQ - | tMATCH | tNMATCH | tGT | tGEQ | tLT | tLEQ - | tNEQ | tLSHFT | tRSHFT | tPLUS | tMINUS | tSTAR2 - | tSTAR | tDIVIDE | tPERCENT | tPOW | tBANG | tTILDE - | tUPLUS | tUMINUS | tAREF | tASET | tBACK_REF2 - - reswords: k__LINE__ | k__FILE__ | k__ENCODING__ | klBEGIN | klEND - | kALIAS | kAND | kBEGIN | kBREAK | kCASE - | kCLASS | kDEF | kDEFINED | kDO | kELSE - | kELSIF | kEND | kENSURE | kFALSE | kFOR - | kIN | kMODULE | kNEXT | kNIL | kNOT - | kOR | kREDO | kRESCUE | kRETRY | kRETURN - | kSELF | kSUPER | kTHEN | kTRUE | kUNDEF - | kWHEN | kYIELD | kIF | kUNLESS | kWHILE - | kUNTIL - - arg: lhs tEQL arg - { - result = @builder.assign(val[0], val[1], val[2]) - } - | lhs tEQL arg kRESCUE_MOD arg - { - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.assign(val[0], val[1], rescue_) - } - | var_lhs tOP_ASGN arg - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | var_lhs tOP_ASGN arg kRESCUE_MOD arg - { - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.op_assign(val[0], val[1], rescue_) - } - | primary_value tLBRACK2 opt_call_args rbracket tOP_ASGN arg - { - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - } - | primary_value tDOT tIDENTIFIER tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tCONSTANT tOP_ASGN arg - { - diagnostic :error, :dynamic_const, nil, val[2], [ val[3] ] - } - | tCOLON3 tCONSTANT tOP_ASGN arg - { - diagnostic :error, :dynamic_const, nil, val[1], [ val[2] ] - } - | backref tOP_ASGN arg - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | arg tDOT2 arg - { - result = @builder.range_inclusive(val[0], val[1], val[2]) - } - | arg tDOT3 arg - { - result = @builder.range_exclusive(val[0], val[1], val[2]) - } - | arg tPLUS arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tMINUS arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tSTAR2 arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tDIVIDE arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tPERCENT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tPOW arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | tUMINUS_NUM tINTEGER tPOW arg - { - result = @builder.unary_op(val[0], - @builder.binary_op( - @builder.integer(val[1]), - val[2], val[3])) - } - | tUMINUS_NUM tFLOAT tPOW arg - { - result = @builder.unary_op(val[0], - @builder.binary_op( - @builder.float(val[1]), - val[2], val[3])) - } - | tUPLUS arg - { - result = @builder.unary_op(val[0], val[1]) - } - | tUMINUS arg - { - result = @builder.unary_op(val[0], val[1]) - } - | arg tPIPE arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tCARET arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tAMPER2 arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tCMP arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tGT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tGEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tLT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tLEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tEQQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tNEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tMATCH arg - { - result = @builder.match_op(val[0], val[1], val[2]) - } - | arg tNMATCH arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | tBANG arg - { - result = @builder.not_op(val[0], nil, val[1], nil) - } - | tTILDE arg - { - result = @builder.unary_op(val[0], val[1]) - } - | arg tLSHFT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tRSHFT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tANDOP arg - { - result = @builder.logical_op(:and, val[0], val[1], val[2]) - } - | arg tOROP arg - { - result = @builder.logical_op(:or, val[0], val[1], val[2]) - } - | kDEFINED opt_nl arg - { - result = @builder.keyword_cmd(:defined?, val[0], nil, [ val[2] ], nil) - } - - | arg tEH arg opt_nl tCOLON arg - { - result = @builder.ternary(val[0], val[1], - val[2], val[4], val[5]) - } - | primary - - arg_value: arg - - aref_args: none - | args trailer - | args tCOMMA assocs trailer - { - result = val[0] << @builder.associate(nil, val[2], nil) - } - | assocs trailer - { - result = [ @builder.associate(nil, val[0], nil) ] - } - - paren_args: tLPAREN2 opt_call_args rparen - { - result = val - } - - opt_paren_args: # nothing - { - result = [ nil, [], nil ] - } - | paren_args - - opt_call_args: # nothing - { - result = [] - } - | call_args - - call_args: command - { - result = [ val[0] ] - } - | args opt_block_arg - { - result = val[0].concat(val[1]) - } - | assocs opt_block_arg - { - result = [ @builder.associate(nil, val[0], nil) ] - result.concat(val[1]) - } - | args tCOMMA assocs opt_block_arg - { - assocs = @builder.associate(nil, val[2], nil) - result = val[0] << assocs - result.concat(val[3]) - } - | args tCOMMA assocs tCOMMA args opt_block_arg - { - val[2][-1] = @builder.objc_varargs(val[2][-1], val[4]) - assocs = @builder.associate(nil, val[2], nil) - result = val[0] << assocs - result.concat(val[5]) - } - | block_arg - { - result = [ val[0] ] - } - - call_args2: arg_value tCOMMA args opt_block_arg - { - result = [ val[0], *val[2].concat(val[3]) ] - } - | arg_value tCOMMA block_arg - { - result = [ val[0], val[2] ] - } - | assocs opt_block_arg - { - result = [ @builder.associate(nil, val[0], nil), - *val[1] ] - } - | arg_value tCOMMA assocs opt_block_arg - { - result = [ val[0], - @builder.associate(nil, val[2], nil), - *val[3] ] - } - | arg_value tCOMMA args tCOMMA assocs opt_block_arg - { - result = [ val[0], - *val[2]. - push(@builder.associate(nil, val[4], nil)). - concat(val[5]) ] - } - | block_arg - { - result = [ val[0] ] - } - - command_args: { - result = @lexer.cmdarg.dup - @lexer.cmdarg.push(true) - } - open_args - { - @lexer.cmdarg = val[0] - - result = val[1] - } - - open_args: call_args - { - result = [ nil, val[0], nil ] - } - | tLPAREN_ARG - { - @lexer.state = :expr_endarg - } - rparen - { - result = [ val[0], [], val[2] ] - } - | tLPAREN_ARG call_args2 - { - @lexer.state = :expr_endarg - } - rparen - { - result = [ val[0], val[1], val[3] ] - } - - block_arg: tAMPER arg_value - { - result = @builder.block_pass(val[0], val[1]) - } - - opt_block_arg: tCOMMA block_arg - { - result = [ val[1] ] - } - | tCOMMA - { - result = [] - } - | # nothing - { - result = [] - } - - args: arg_value - { - result = [ val[0] ] - } - | tSTAR arg_value - { - result = [ @builder.splat(val[0], val[1]) ] - } - | args tCOMMA arg_value - { - result = val[0] << val[2] - } - | args tCOMMA tSTAR arg_value - { - result = val[0] << @builder.splat(val[2], val[3]) - } - - mrhs: args tCOMMA arg_value - { - result = val[0] << val[2] - } - | args tCOMMA tSTAR arg_value - { - result = val[0] << @builder.splat(val[2], val[3]) - } - | tSTAR arg_value - { - result = [ @builder.splat(val[0], val[1]) ] - } - - primary: literal - | strings - | xstring - | regexp - | words - | qwords - | var_ref - | backref - | tFID - { - result = @builder.call_method(nil, nil, val[0]) - } - | kBEGIN bodystmt kEND - { - result = @builder.begin_keyword(val[0], val[1], val[2]) - } - | tLPAREN_ARG expr - { - @lexer.state = :expr_endarg - } - rparen - { - result = @builder.begin(val[0], val[1], val[3]) - } - | tLPAREN compstmt tRPAREN - { - result = @builder.begin(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.const_fetch(val[0], val[1], val[2]) - } - | tCOLON3 tCONSTANT - { - result = @builder.const_global(val[0], val[1]) - } - | tLBRACK aref_args tRBRACK - { - result = @builder.array(val[0], val[1], val[2]) - } - | tLBRACE assoc_list tRCURLY - { - result = @builder.associate(val[0], val[1], val[2]) - } - | kRETURN - { - result = @builder.keyword_cmd(:return, val[0]) - } - | kYIELD tLPAREN2 call_args rparen - { - result = @builder.keyword_cmd(:yield, val[0], val[1], val[2], val[3]) - } - | kYIELD tLPAREN2 rparen - { - result = @builder.keyword_cmd(:yield, val[0], val[1], [], val[2]) - } - | kYIELD - { - result = @builder.keyword_cmd(:yield, val[0]) - } - | kDEFINED opt_nl tLPAREN2 expr rparen - { - result = @builder.keyword_cmd(:defined?, val[0], - val[2], [ val[3] ], val[4]) - } - | kNOT tLPAREN2 expr rparen - { - result = @builder.not_op(val[0], val[1], val[2], val[3]) - } - | kNOT tLPAREN2 rparen - { - result = @builder.not_op(val[0], val[1], nil, val[2]) - } - | operation brace_block - { - method_call = @builder.call_method(nil, nil, val[0]) - - begin_t, args, body, end_t = val[1] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | method_call - | method_call brace_block - { - begin_t, args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, args, body, end_t) - } - | tLAMBDA lambda - { - lambda_call = @builder.call_lambda(val[0]) - - args, (begin_t, body, end_t) = val[1] - result = @builder.block(lambda_call, - begin_t, args, body, end_t) - } - | kIF expr_value then compstmt if_tail kEND - { - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, val[5]) - } - | kUNLESS expr_value then compstmt opt_else kEND - { - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - else_, else_t, - val[3], val[5]) - } - | kWHILE - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.loop(:while, val[0], val[2], val[3], - val[5], val[6]) - } - | kUNTIL - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.loop(:until, val[0], val[2], val[3], - val[5], val[6]) - } - | kCASE expr_value opt_terms case_body kEND - { - *when_bodies, (else_t, else_body) = *val[3] - - result = @builder.case(val[0], val[1], - when_bodies, else_t, else_body, - val[4]) - } - | kCASE opt_terms case_body kEND - { - *when_bodies, (else_t, else_body) = *val[2] - - result = @builder.case(val[0], nil, - when_bodies, else_t, else_body, - val[3]) - } - | kFOR for_var kIN - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.for(val[0], val[1], - val[2], val[4], - val[5], val[7], val[8]) - } - | kCLASS cpath superclass - { - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - if in_def? - diagnostic :error, :class_in_def, nil, val[0] - end - - lt_t, superclass = val[2] - result = @builder.def_class(val[0], val[1], - lt_t, superclass, - val[4], val[5]) - - @lexer.pop_cmdarg - @static_env.unextend - } - | kCLASS tLSHFT expr term - { - result = @def_level - @def_level = 0 - - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - result = @builder.def_sclass(val[0], val[1], val[2], - val[5], val[6]) - - @lexer.pop_cmdarg - @static_env.unextend - - @def_level = val[4] - } - | kMODULE cpath - { - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - if in_def? - diagnostic :error, :module_in_def, nil, val[0] - end - - result = @builder.def_module(val[0], val[1], - val[3], val[4]) - - @lexer.pop_cmdarg - @static_env.unextend - } - | kDEF fname - { - @def_level += 1 - @static_env.extend_static - @lexer.push_cmdarg - } - f_arglist bodystmt kEND - { - result = @builder.def_method(val[0], val[1], - val[3], val[4], val[5]) - - @lexer.pop_cmdarg - @static_env.unextend - @def_level -= 1 - } - | kDEF singleton dot_or_colon - { - @lexer.state = :expr_fname - } - fname - { - @def_level += 1 - @static_env.extend_static - @lexer.push_cmdarg - } - f_arglist bodystmt kEND - { - result = @builder.def_singleton(val[0], val[1], val[2], - val[4], val[6], val[7], val[8]) - - @lexer.pop_cmdarg - @static_env.unextend - @def_level -= 1 - } - | kBREAK - { - result = @builder.keyword_cmd(:break, val[0]) - } - | kNEXT - { - result = @builder.keyword_cmd(:next, val[0]) - } - | kREDO - { - result = @builder.keyword_cmd(:redo, val[0]) - } - | kRETRY - { - result = @builder.keyword_cmd(:retry, val[0]) - } - - primary_value: primary - - then: term - | kTHEN - | term kTHEN - { - result = val[1] - } - - do: term - | kDO_COND - - if_tail: opt_else - | kELSIF expr_value then compstmt if_tail - { - else_t, else_ = val[4] - result = [ val[0], - @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, nil), - ] - } - - opt_else: none - | kELSE compstmt - { - result = val - } - - for_var: lhs - | mlhs - - f_marg: f_norm_arg - | tLPAREN f_margs rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - f_marg_list: f_marg - { - result = [ val[0] ] - } - | f_marg_list tCOMMA f_marg - { - result = val[0] << val[2] - } - - f_margs: f_marg_list - | f_marg_list tCOMMA tSTAR f_norm_arg - { - result = val[0]. - push(@builder.objc_restarg(val[2], val[3])) - } - | f_marg_list tCOMMA tSTAR f_norm_arg tCOMMA f_marg_list - { - result = val[0]. - push(@builder.objc_restarg(val[2], val[3])). - concat(val[5]) - } - | f_marg_list tCOMMA tSTAR - { - result = val[0]. - push(@builder.objc_restarg(val[2])) - } - | f_marg_list tCOMMA tSTAR tCOMMA f_marg_list - { - result = val[0]. - push(@builder.objc_restarg(val[2])). - concat(val[4]) - } - | tSTAR f_norm_arg - { - result = [ @builder.objc_restarg(val[0], val[1]) ] - } - | tSTAR f_norm_arg tCOMMA f_marg_list - { - result = [ @builder.objc_restarg(val[0], val[1]), - *val[3] ] - } - | tSTAR - { - result = [ @builder.objc_restarg(val[0]) ] - } - | tSTAR tCOMMA f_marg_list - { - result = [ @builder.objc_restarg(val[0]), - *val[2] ] - } - - block_param: f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[6]). - concat(val[7]) - } - | f_arg tCOMMA f_block_optarg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_block_optarg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA - | f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_block_optarg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_block_optarg opt_f_block_arg - { - result = val[0]. - concat(val[1]) - } - | f_block_optarg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[1]) - } - | f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_block_arg - { - result = [ val[0] ] - } - - opt_block_param: # nothing - { - result = @builder.args(nil, [], nil) - } - | block_param_def - { - @lexer.state = :expr_value - } - - block_param_def: tPIPE opt_bv_decl tPIPE - { - result = @builder.args(val[0], val[1], val[2]) - } - | tOROP - { - result = @builder.args(val[0], [], val[0]) - } - | tPIPE block_param opt_bv_decl tPIPE - { - result = @builder.args(val[0], val[1].concat(val[2]), val[3]) - } - - opt_bv_decl: # nothing - { - result = [] - } - | tSEMI bv_decls - { - result = val[1] - } - - bv_decls: bvar - { - result = [ val[0] ] - } - | bv_decls tCOMMA bvar - { - result = val[0] << val[2] - } - - bvar: tIDENTIFIER - { - result = @builder.shadowarg(val[0]) - } - | f_bad_arg - - lambda: { - @static_env.extend_dynamic - } - f_larglist lambda_body - { - result = [ val[1], val[2] ] - - @static_env.unextend - } - - f_larglist: tLPAREN2 f_args opt_bv_decl rparen - { - result = @builder.args(val[0], val[1].concat(val[2]), val[3]) - } - | f_args - { - result = @builder.args(nil, val[0], nil) - } - - lambda_body: tLAMBEG compstmt tRCURLY - { - result = [ val[0], val[1], val[2] ] - } - | kDO_LAMBDA compstmt kEND - { - result = [ val[0], val[1], val[2] ] - } - - do_block: kDO_BLOCK - { - @static_env.extend_dynamic - } - opt_block_param compstmt kEND - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - block_call: command do_block - { - begin_t, block_args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, block_args, body, end_t) - } - | block_call tDOT operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | block_call tCOLON2 operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - - method_call: operation paren_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.call_method(nil, nil, val[0], - lparen_t, args, rparen_t) - } - | primary_value tDOT operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 operation2 paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 operation3 - { - result = @builder.call_method(val[0], val[1], val[2]) - } - | primary_value tDOT paren_args - { - lparen_t, args, rparen_t = val[2] - result = @builder.call_method(val[0], val[1], nil, - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 paren_args - { - lparen_t, args, rparen_t = val[2] - result = @builder.call_method(val[0], val[1], nil, - lparen_t, args, rparen_t) - } - | kSUPER paren_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.keyword_cmd(:super, val[0], - lparen_t, args, rparen_t) - } - | kSUPER - { - result = @builder.keyword_cmd(:zsuper, val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index(val[0], val[1], val[2], val[3]) - } - - brace_block: tLCURLY - { - @static_env.extend_dynamic - } - opt_block_param compstmt tRCURLY - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - | kDO - { - @static_env.extend_dynamic - } - opt_block_param compstmt kEND - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - case_body: kWHEN args then compstmt cases - { - result = [ @builder.when(val[0], val[1], val[2], val[3]), - *val[4] ] - } - - cases: opt_else - { - result = [ val[0] ] - } - | case_body - - opt_rescue: kRESCUE exc_list exc_var then compstmt opt_rescue - { - assoc_t, exc_var = val[2] - - if val[1] - exc_list = @builder.array(nil, val[1], nil) - end - - result = [ @builder.rescue_body(val[0], - exc_list, assoc_t, exc_var, - val[3], val[4]), - *val[5] ] - } - | - { - result = [] - } - - exc_list: arg_value - { - result = [ val[0] ] - } - | mrhs - | none - - exc_var: tASSOC lhs - { - result = [ val[0], val[1] ] - } - | none - - opt_ensure: kENSURE compstmt - { - result = [ val[0], val[1] ] - } - | none - - literal: numeric - | symbol - | dsym - - strings: string - { - result = @builder.string_compose(nil, val[0], nil) - } - - string: string1 - { - result = [ val[0] ] - } - | string string1 - { - result = val[0] << val[1] - } - - string1: tSTRING_BEG string_contents tSTRING_END - { - result = @builder.string_compose(val[0], val[1], val[2]) - } - | tSTRING - { - result = @builder.string(val[0]) - } - | tCHARACTER - { - result = @builder.character(val[0]) - } - - xstring: tXSTRING_BEG xstring_contents tSTRING_END - { - result = @builder.xstring_compose(val[0], val[1], val[2]) - } - - regexp: tREGEXP_BEG regexp_contents tSTRING_END tREGEXP_OPT - { - opts = @builder.regexp_options(val[3]) - result = @builder.regexp_compose(val[0], val[1], val[2], opts) - } - - words: tWORDS_BEG word_list tSTRING_END - { - result = @builder.words_compose(val[0], val[1], val[2]) - } - - word_list: # nothing - { - result = [] - } - | word_list word tSPACE - { - result = val[0] << @builder.word(val[1]) - } - - word: string_content - { - result = [ val[0] ] - } - | word string_content - { - result = val[0] << val[1] - } - - qwords: tQWORDS_BEG qword_list tSTRING_END - { - result = @builder.words_compose(val[0], val[1], val[2]) - } - - qword_list: # nothing - { - result = [] - } - | qword_list tSTRING_CONTENT tSPACE - { - result = val[0] << @builder.string_internal(val[1]) - } - - string_contents: # nothing - { - result = [] - } - | string_contents string_content - { - result = val[0] << val[1] - } - -xstring_contents: # nothing - { - result = [] - } - | xstring_contents string_content - { - result = val[0] << val[1] - } - -regexp_contents: # nothing - { - result = [] - } - | regexp_contents string_content - { - result = val[0] << val[1] - } - - string_content: tSTRING_CONTENT - { - result = @builder.string_internal(val[0]) - } - | tSTRING_DVAR string_dvar - { - result = val[1] - } - | tSTRING_DBEG - { - @lexer.cond.push(false) - @lexer.cmdarg.push(false) - } - compstmt tRCURLY - { - @lexer.cond.lexpop - @lexer.cmdarg.lexpop - - result = @builder.begin(val[0], val[2], val[3]) - } - - string_dvar: tGVAR - { - result = @builder.gvar(val[0]) - } - | tIVAR - { - result = @builder.ivar(val[0]) - } - | tCVAR - { - result = @builder.cvar(val[0]) - } - | backref - - - symbol: tSYMBOL - { - result = @builder.symbol(val[0]) - } - - dsym: tSYMBEG xstring_contents tSTRING_END - { - result = @builder.symbol_compose(val[0], val[1], val[2]) - } - - numeric: tINTEGER - { - result = @builder.integer(val[0]) - } - | tFLOAT - { - result = @builder.float(val[0]) - } - | tUMINUS_NUM tINTEGER =tLOWEST - { - result = @builder.negate(val[0], - @builder.integer(val[1])) - } - | tUMINUS_NUM tFLOAT =tLOWEST - { - result = @builder.negate(val[0], - @builder.float(val[1])) - } - - variable: tIDENTIFIER - { - result = @builder.ident(val[0]) - } - | tIVAR - { - result = @builder.ivar(val[0]) - } - | tGVAR - { - result = @builder.gvar(val[0]) - } - | tCONSTANT - { - result = @builder.const(val[0]) - } - | tCVAR - { - result = @builder.cvar(val[0]) - } - | kNIL - { - result = @builder.nil(val[0]) - } - | kSELF - { - result = @builder.self(val[0]) - } - | kTRUE - { - result = @builder.true(val[0]) - } - | kFALSE - { - result = @builder.false(val[0]) - } - | k__FILE__ - { - result = @builder.__FILE__(val[0]) - } - | k__LINE__ - { - result = @builder.__LINE__(val[0]) - } - | k__ENCODING__ - { - result = @builder.__ENCODING__(val[0]) - } - - var_ref: variable - { - result = @builder.accessible(val[0]) - } - - var_lhs: variable - { - result = @builder.assignable(val[0]) - } - - backref: tNTH_REF - { - result = @builder.nth_ref(val[0]) - } - | tBACK_REF - { - result = @builder.back_ref(val[0]) - } - - superclass: term - { - result = nil - } - | tLT expr_value term - { - result = [ val[0], val[1] ] - } - | error term - { - yyerrok - result = nil - } - - f_arglist: tLPAREN2 f_args rparen - { - result = @builder.args(val[0], val[1], val[2]) - - @lexer.state = :expr_value - } - | f_args term - { - result = @builder.args(nil, val[0], nil) - } - - f_args: f_arg tCOMMA f_optarg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[6]). - concat(val[7]) - } - | f_arg tCOMMA f_optarg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_optarg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg opt_f_block_arg - { - result = val[0]. - concat(val[1]) - } - | f_optarg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_optarg opt_f_block_arg - { - result = val[0]. - concat(val[1]) - } - | f_optarg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[1]) - } - | f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_block_arg - { - result = [ val[0] ] - } - | # nothing - { - result = [] - } - - f_bad_arg: tCONSTANT - { - diagnostic :error, :argument_const, nil, val[0] - } - | tIVAR - { - diagnostic :error, :argument_ivar, nil, val[0] - } - | tGVAR - { - diagnostic :error, :argument_gvar, nil, val[0] - } - | tCVAR - { - diagnostic :error, :argument_cvar, nil, val[0] - } - - f_norm_arg: f_bad_arg - | tIDENTIFIER - { - @static_env.declare val[0][0] - - result = @builder.arg(val[0]) - } - | tIDENTIFIER tASSOC tIDENTIFIER - { - @static_env.declare val[2][0] - - result = @builder.objc_kwarg(val[0], val[1], val[2]) - } - | tLABEL tIDENTIFIER - { - @static_env.declare val[1][0] - - result = @builder.objc_kwarg(val[0], nil, val[1]) - } - - f_arg_item: f_norm_arg - | tLPAREN f_margs rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - f_arg: f_arg_item - { - result = [ val[0] ] - } - | f_arg tCOMMA f_arg_item - { - result = val[0] << val[2] - } - - f_opt: tIDENTIFIER tEQL arg_value - { - @static_env.declare val[0][0] - - result = @builder.optarg(val[0], val[1], val[2]) - } - - f_block_opt: tIDENTIFIER tEQL primary_value - { - @static_env.declare val[0][0] - - result = @builder.optarg(val[0], val[1], val[2]) - } - - f_block_optarg: f_block_opt - { - result = [ val[0] ] - } - | f_block_optarg tCOMMA f_block_opt - { - result = val[0] << val[2] - } - - f_optarg: f_opt - { - result = [ val[0] ] - } - | f_optarg tCOMMA f_opt - { - result = val[0] << val[2] - } - - restarg_mark: tSTAR2 | tSTAR - - f_rest_arg: restarg_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = [ @builder.restarg(val[0], val[1]) ] - } - | restarg_mark - { - result = [ @builder.restarg(val[0]) ] - } - - blkarg_mark: tAMPER2 | tAMPER - - f_block_arg: blkarg_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = @builder.blockarg(val[0], val[1]) - } - - opt_f_block_arg: tCOMMA f_block_arg - { - result = [ val[1] ] - } - | # nothing - { - result = [] - } - - singleton: var_ref - | tLPAREN2 expr rparen - { - result = val[1] - } - - assoc_list: # nothing - { - result = [] - } - | assocs trailer - - assocs: assoc - { - result = [ val[0] ] - } - | assocs tCOMMA assoc - { - result = val[0] << val[2] - } - - assoc: arg_value tASSOC arg_value - { - result = @builder.pair(val[0], val[1], val[2]) - } - | tLABEL arg_value - { - result = @builder.pair_keyword(val[0], val[1]) - } - - operation: tIDENTIFIER | tCONSTANT | tFID - operation2: tIDENTIFIER | tCONSTANT | tFID | op - operation3: tIDENTIFIER | tFID | op - dot_or_colon: tDOT | tCOLON2 - opt_terms: | terms - opt_nl: | tNL - rparen: opt_nl tRPAREN - { - result = val[1] - } - rbracket: opt_nl tRBRACK - { - result = val[1] - } - trailer: | tNL | tCOMMA - - term: tSEMI - { - yyerrok - } - | tNL - - terms: term - | terms tSEMI - - none: # nothing - { - result = nil - } -end - ----- header - -require 'parser' - -Parser.check_for_encoding_support - ----- inner - - def version - 19 # closest released match: v1_9_0_2 - end - - def default_encoding - Encoding::BINARY - end diff --git a/test/racc/assets/mailp.y b/test/racc/assets/mailp.y deleted file mode 100644 index eb7d4d529d..0000000000 --- a/test/racc/assets/mailp.y +++ /dev/null @@ -1,437 +0,0 @@ -# -# mailp for test -# - -class Testp - -rule - - content : DateH datetime { @field.date = val[1] } - | RecvH received - | RetpathH returnpath - | MaddrH addrs { @field.addrs.replace val[1] } - | SaddrH addr { @field.addr = val[1] } - | MmboxH mboxes { @field.addrs.replace val[1] } - | SmboxH mbox { @field.addr = val[1] } - | MsgidH msgid { @field.msgid = val[1] } - | KeyH keys { @field.keys.replace val[1] } - | EncH enc - | VersionH version - | CTypeH ctype - | CEncodingH cencode - | CDispositionH cdisp - | Mbox mbox - { - mb = val[1] - @field.phrase = mb.phrase - @field.setroute mb.route - @field.local = mb.local - @field.domain = mb.domain - } - | Spec spec - { - mb = val[1] - @field.local = mb.local - @field.domain = mb.domain - } - ; - - datetime : day DIGIT ATOM DIGIT hour zone - # 0 1 2 3 4 5 - # day month year - { - t = Time.gm( val[3].to_i, val[2], val[1].to_i, 0, 0, 0 ) - result = (t + val[4] - val[5]).localtime - } - ; - - day : /* none */ - | ATOM ',' - ; - - hour : DIGIT ':' DIGIT - { - result = (result.to_i * 60 * 60) + (val[2].to_i * 60) - } - | DIGIT ':' DIGIT ':' DIGIT - { - result = (result.to_i * 60 * 60) + - (val[2].to_i * 60) - + val[4].to_i - } - ; - - zone : ATOM - { - result = ::TMail.zonestr2i( val[0] ) * 60 - } - ; - - received : from by via with id for recvdatetime - ; - - from : /* none */ - | FROM domain - { - @field.from = Address.join( val[1] ) - } - | FROM domain '@' domain - { - @field.from = Address.join( val[3] ) - } - | FROM domain DOMLIT - { - @field.from = Address.join( val[1] ) - } - ; - - by : /* none */ - | BY domain - { - @field.by = Address.join( val[1] ) - } - ; - - via : /* none */ - | VIA ATOM - { - @field.via = val[1] - } - ; - - with : /* none */ - | WITH ATOM - { - @field.with.push val[1] - } - ; - - id : /* none */ - | ID msgid - { - @field.msgid = val[1] - } - | ID ATOM - { - @field.msgid = val[1] - } - ; - - for : /* none */ - | FOR addr - { - @field.for_ = val[1].address - } - ; - - recvdatetime - : /* none */ - | ';' datetime - { - @field.date = val[1] - } - ; - - returnpath: '<' '>' - | routeaddr - { - @field.route.replace result.route - @field.addr = result.addr - } - ; - - addrs : addr { result = val } - | addrs ',' addr { result.push val[2] } - ; - - addr : mbox - | group - ; - - mboxes : mbox - { - result = val - } - | mboxes ',' mbox - { - result.push val[2] - } - ; - - mbox : spec - | routeaddr - | phrase routeaddr - { - val[1].phrase = HFdecoder.decode( result ) - result = val[1] - } - ; - - group : phrase ':' mboxes ';' - { - result = AddressGroup.new( result, val[2] ) - } - # | phrase ':' ';' { result = AddressGroup.new( result ) } - ; - - routeaddr : '<' route spec '>' - { - result = val[2] - result.route = val[1] - } - | '<' spec '>' - { - result = val[1] - } - ; - - route : at_domains ':' - ; - - at_domains: '@' domain { result = [ val[1] ] } - | at_domains ',' '@' domain { result.push val[3] } - ; - - spec : local '@' domain { result = Address.new( val[0], val[2] ) } - | local { result = Address.new( result, nil ) } - ; - - local : word { result = val } - | local '.' word { result.push val[2] } - ; - - domain : domword { result = val } - | domain '.' domword { result.push val[2] } - ; - - domword : atom - | DOMLIT - | DIGIT - ; - - msgid : '<' spec '>' - { - val[1] = val[1].addr - result = val.join('') - } - ; - - phrase : word - | phrase word { result << ' ' << val[1] } - ; - - word : atom - | QUOTED - | DIGIT - ; - - keys : phrase - | keys ',' phrase - ; - - enc : word - { - @field.encrypter = val[0] - } - | word word - { - @field.encrypter = val[0] - @field.keyword = val[1] - } - ; - - version : DIGIT '.' DIGIT - { - @field.major = val[0].to_i - @field.minor = val[2].to_i - } - ; - - ctype : TOKEN '/' TOKEN params - { - @field.main = val[0] - @field.sub = val[2] - } - | TOKEN params - { - @field.main = val[0] - @field.sub = '' - } - ; - - params : /* none */ - | params ';' TOKEN '=' value - { - @field.params[ val[2].downcase ] = val[4] - } - ; - - value : TOKEN - | QUOTED - ; - - cencode : TOKEN - { - @field.encoding = val[0] - } - ; - - cdisp : TOKEN disp_params - { - @field.disposition = val[0] - } - ; - - disp_params - : /* none */ - | disp_params ';' disp_param - ; - - disp_param: /* none */ - | TOKEN '=' value - { - @field.params[ val[0].downcase ] = val[2] - } - ; - - atom : ATOM - | FROM - | BY - | VIA - | WITH - | ID - | FOR - ; - -end - - ----- header -# -# mailp for test -# - -require 'tmail/mails' - - -module TMail - ----- inner - - MAILP_DEBUG = false - - def initialize - self.debug = MAILP_DEBUG - end - - def debug=( flag ) - @yydebug = flag && Racc_debug_parser - @scanner_debug = flag - end - - def debug - @yydebug - end - - - def Mailp.parse( str, obj, ident ) - new.parse( str, obj, ident ) - end - - - NATIVE_ROUTINE = { - 'TMail::MsgidH' => :msgid_parse, - 'TMail::RefH' => :refs_parse - } - - def parse( str, obj, ident ) - return if /\A\s*\z/ === str - - @field = obj - - if mid = NATIVE_ROUTINE[ obj.type.name ] then - send mid, str - else - unless ident then - ident = obj.type.name.split('::')[-1].to_s - cmt = [] - obj.comments.replace cmt - else - cmt = nil - end - - @scanner = MailScanner.new( str, ident, cmt ) - @scanner.debug = @scanner_debug - @first = [ ident.intern, ident ] - @pass_array = [nil, nil] - - do_parse - end - end - - - private - - - def next_token - if @first then - ret = @first - @first = nil - ret - else - @scanner.scan @pass_array - end - end - - def on_error( tok, val, vstack ) - raise ParseError, - "\nparse error in '#{@field.name}' header, on token #{val.inspect}" - end - - - - def refs_parse( str ) - arr = [] - - while mdata = ::TMail::MSGID.match( str ) do - str = mdata.post_match - - pre = mdata.pre_match - pre.strip! - proc_phrase pre, arr unless pre.empty? - arr.push mdata.to_s - end - str.strip! - proc_phrase str, arr if not pre or pre.empty? - - @field.refs.replace arr - end - - def proc_phrase( str, arr ) - while mdata = /"([^\\]*(?:\\.[^"\\]*)*)"/.match( str ) do - str = mdata.post_match - - pre = mdata.pre_match - pre.strip! - arr.push pre unless pre.empty? - arr.push mdata[1] - end - str.strip! - arr.push unless str.empty? - end - - - def msgid_parse( str ) - if mdata = ::TMail::MSGID.match( str ) then - @field.msgid = mdata.to_s - else - raise ParseError, "wrong Message-ID format: #{str}" - end - end - ----- footer - -end # module TMail - -mp = TMail::Testp.new -mp.parse diff --git a/test/racc/assets/mediacloth.y b/test/racc/assets/mediacloth.y deleted file mode 100644 index 94cc411ea7..0000000000 --- a/test/racc/assets/mediacloth.y +++ /dev/null @@ -1,599 +0,0 @@ -# Copyright (c) 2006 Pluron Inc. -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -# The parser for the MediaWiki language. -# -# Usage together with a lexer: -# inputFile = File.new("data/input1", "r") -# input = inputFile.read -# parser = MediaWikiParser.new -# parser.lexer = MediaWikiLexer.new -# parser.parse(input) - -class MediaWikiParser - -token TEXT BOLD_START BOLD_END ITALIC_START ITALIC_END LINK_START LINK_END LINKSEP - INTLINK_START INTLINK_END INTLINKSEP RESOURCESEP CHAR_ENT - PRE_START PRE_END PREINDENT_START PREINDENT_END - SECTION_START SECTION_END HLINE SIGNATURE_NAME SIGNATURE_DATE SIGNATURE_FULL - PARA_START PARA_END UL_START UL_END OL_START OL_END LI_START LI_END - DL_START DL_END DT_START DT_END DD_START DD_END TAG_START TAG_END ATTR_NAME ATTR_VALUE - TABLE_START TABLE_END ROW_START ROW_END HEAD_START HEAD_END CELL_START CELL_END - KEYWORD TEMPLATE_START TEMPLATE_END CATEGORY PASTE_START PASTE_END - - -rule - -wiki: - repeated_contents - { - @nodes.push WikiAST.new(0, @wiki_ast_length) - #@nodes.last.children.insert(0, val[0]) - #puts val[0] - @nodes.last.children += val[0] - } - ; - -contents: - text - { - result = val[0] - } - | bulleted_list - { - result = val[0] - } - | numbered_list - { - result = val[0] - } - | dictionary_list - { - list = ListAST.new(@ast_index, @ast_length) - list.list_type = :Dictionary - list.children = val[0] - result = list - } - | preformatted - { - result = val[0] - } - | section - { - result = val[0] - } - | tag - { - result = val[0] - } - | template - { - result = val[0] - } - | KEYWORD - { - k = KeywordAST.new(@ast_index, @ast_length) - k.text = val[0] - result = k - } - | PARA_START para_contents PARA_END - { - p = ParagraphAST.new(@ast_index, @ast_length) - p.children = val[1] - result = p - } - | LINK_START link_contents LINK_END - { - l = LinkAST.new(@ast_index, @ast_length) - l.link_type = val[0] - l.url = val[1][0] - l.children += val[1][1..-1] if val[1].length > 1 - result = l - } - | PASTE_START para_contents PASTE_END - { - p = PasteAST.new(@ast_index, @ast_length) - p.children = val[1] - result = p - } - | INTLINK_START TEXT RESOURCESEP TEXT reslink_repeated_contents INTLINK_END - { - l = ResourceLinkAST.new(@ast_index, @ast_length) - l.prefix = val[1] - l.locator = val[3] - l.children = val[4] unless val[4].nil? or val[4].empty? - result = l - } - | INTLINK_START TEXT intlink_repeated_contents INTLINK_END - { - l = InternalLinkAST.new(@ast_index, @ast_length) - l.locator = val[1] - l.children = val[2] unless val[2].nil? or val[2].empty? - result = l - } - | INTLINK_START CATEGORY TEXT cat_sort_contents INTLINK_END - { - l = CategoryAST.new(@ast_index, @ast_length) - l.locator = val[2] - l.sort_as = val[3] - result = l - } - | INTLINK_START RESOURCESEP CATEGORY TEXT intlink_repeated_contents INTLINK_END - { - l = CategoryLinkAST.new(@ast_index, @ast_length) - l.locator = val[3] - l.children = val[4] unless val[4].nil? or val[4].empty? - result = l - } - | table - ; - -para_contents: - { - result = nil - } - | repeated_contents - { - result = val[0] - } - ; - -tag: - TAG_START tag_attributes TAG_END - { - if val[0] != val[2] - raise Racc::ParseError.new("XHTML end tag #{val[2]} does not match start tag #{val[0]}") - end - elem = ElementAST.new(@ast_index, @ast_length) - elem.name = val[0] - elem.attributes = val[1] - result = elem - } - | TAG_START tag_attributes repeated_contents TAG_END - { - if val[0] != val[3] - raise Racc::ParseError.new("XHTML end tag #{val[3]} does not match start tag #{val[0]}") - end - elem = ElementAST.new(@ast_index, @ast_length) - elem.name = val[0] - elem.attributes = val[1] - elem.children += val[2] - result = elem - } - ; - -tag_attributes: - { - result = nil - } - | ATTR_NAME tag_attributes - { - attr_map = val[2] ? val[2] : {} - attr_map[val[0]] = true - result = attr_map - } - | ATTR_NAME ATTR_VALUE tag_attributes - { - attr_map = val[2] ? val[2] : {} - attr_map[val[0]] = val[1] - result = attr_map - } - ; - - -link_contents: - TEXT - { - result = val - } - | TEXT LINKSEP link_repeated_contents - { - result = [val[0]] - result += val[2] - } - ; - - -link_repeated_contents: - repeated_contents - { - result = val[0] - } - | repeated_contents LINKSEP link_repeated_contents - { - result = val[0] - result += val[2] if val[2] - } - ; - - -intlink_repeated_contents: - { - result = nil - } - | INTLINKSEP repeated_contents - { - result = val[1] - } - ; - -cat_sort_contents: - { - result = nil - } - | INTLINKSEP TEXT - { - result = val[1] - } - ; - -reslink_repeated_contents: - { - result = nil - } - | INTLINKSEP reslink_repeated_contents - { - result = val[1] - } - | INTLINKSEP repeated_contents reslink_repeated_contents - { - i = InternalLinkItemAST.new(@ast_index, @ast_length) - i.children = val[1] - result = [i] - result += val[2] if val[2] - } - ; - -repeated_contents: contents - { - result = [] - result << val[0] - } - | repeated_contents contents - { - result = [] - result += val[0] - result << val[1] - } - ; - -text: element - { - p = TextAST.new(@ast_index, @ast_length) - p.formatting = val[0][0] - p.contents = val[0][1] - result = p - } - | formatted_element - { - result = val[0] - } - ; - -table: - TABLE_START table_contents TABLE_END - { - table = TableAST.new(@ast_index, @ast_length) - table.children = val[1] unless val[1].nil? or val[1].empty? - result = table - } - | TABLE_START TEXT table_contents TABLE_END - { - table = TableAST.new(@ast_index, @ast_length) - table.options = val[1] - table.children = val[2] unless val[2].nil? or val[2].empty? - result = table - } - -table_contents: - { - result = nil - } - | ROW_START row_contents ROW_END table_contents - { - row = TableRowAST.new(@ast_index, @ast_length) - row.children = val[1] unless val[1].nil? or val[1].empty? - result = [row] - result += val[3] unless val[3].nil? or val[3].empty? - } - | ROW_START TEXT row_contents ROW_END table_contents - { - row = TableRowAST.new(@ast_index, @ast_length) - row.children = val[2] unless val[2].nil? or val[2].empty? - row.options = val[1] - result = [row] - result += val[4] unless val[4].nil? or val[4].empty? - } - -row_contents: - { - result = nil - } - | HEAD_START HEAD_END row_contents - { - cell = TableCellAST.new(@ast_index, @ast_length) - cell.type = :head - result = [cell] - result += val[2] unless val[2].nil? or val[2].empty? - } - | HEAD_START repeated_contents HEAD_END row_contents - { - cell = TableCellAST.new(@ast_index, @ast_length) - cell.children = val[1] unless val[1].nil? or val[1].empty? - cell.type = :head - result = [cell] - result += val[3] unless val[3].nil? or val[3].empty? - } - | CELL_START CELL_END row_contents - { - cell = TableCellAST.new(@ast_index, @ast_length) - cell.type = :body - result = [cell] - result += val[2] unless val[2].nil? or val[2].empty? - } - | CELL_START repeated_contents CELL_END row_contents - { - if val[2] == 'attributes' - result = [] - else - cell = TableCellAST.new(@ast_index, @ast_length) - cell.children = val[1] unless val[1].nil? or val[1].empty? - cell.type = :body - result = [cell] - end - result += val[3] unless val[3].nil? or val[3].empty? - if val[2] == 'attributes' and val[3] and val[3].first.class == TableCellAST - val[3].first.attributes = val[1] - end - result - } - - -element: - TEXT - { return [:None, val[0]] } - | HLINE - { return [:HLine, val[0]] } - | CHAR_ENT - { return [:CharacterEntity, val[0]] } - | SIGNATURE_DATE - { return [:SignatureDate, val[0]] } - | SIGNATURE_NAME - { return [:SignatureName, val[0]] } - | SIGNATURE_FULL - { return [:SignatureFull, val[0]] } - ; - -formatted_element: - BOLD_START BOLD_END - { - result = FormattedAST.new(@ast_index, @ast_length) - result.formatting = :Bold - result - } - | ITALIC_START ITALIC_END - { - result = FormattedAST.new(@ast_index, @ast_length) - result.formatting = :Italic - result - } - | BOLD_START repeated_contents BOLD_END - { - p = FormattedAST.new(@ast_index, @ast_length) - p.formatting = :Bold - p.children += val[1] - result = p - } - | ITALIC_START repeated_contents ITALIC_END - { - p = FormattedAST.new(@ast_index, @ast_length) - p.formatting = :Italic - p.children += val[1] - result = p - } - ; - -bulleted_list: UL_START list_item list_contents UL_END - { - list = ListAST.new(@ast_index, @ast_length) - list.list_type = :Bulleted - list.children << val[1] - list.children += val[2] - result = list - } - ; - -numbered_list: OL_START list_item list_contents OL_END - { - list = ListAST.new(@ast_index, @ast_length) - list.list_type = :Numbered - list.children << val[1] - list.children += val[2] - result = list - } - ; - -list_contents: - { result = [] } - list_item list_contents - { - result << val[1] - result += val[2] - } - | - { result = [] } - ; - -list_item: - LI_START LI_END - { - result = ListItemAST.new(@ast_index, @ast_length) - } - | LI_START repeated_contents LI_END - { - li = ListItemAST.new(@ast_index, @ast_length) - li.children += val[1] - result = li - } - ; - -dictionary_list: - DL_START dictionary_term dictionary_contents DL_END - { - result = [val[1]] - result += val[2] - } - | DL_START dictionary_contents DL_END - { - result = val[1] - } - ; - -dictionary_term: - DT_START DT_END - { - result = ListTermAST.new(@ast_index, @ast_length) - } - | DT_START repeated_contents DT_END - { - term = ListTermAST.new(@ast_index, @ast_length) - term.children += val[1] - result = term - } - -dictionary_contents: - dictionary_definition dictionary_contents - { - result = [val[0]] - result += val[1] if val[1] - } - | - { - result = [] - } - -dictionary_definition: - DD_START DD_END - { - result = ListDefinitionAST.new(@ast_index, @ast_length) - } - | DD_START repeated_contents DD_END - { - term = ListDefinitionAST.new(@ast_index, @ast_length) - term.children += val[1] - result = term - } - -preformatted: PRE_START repeated_contents PRE_END - { - p = PreformattedAST.new(@ast_index, @ast_length) - p.children += val[1] - result = p - } - | PREINDENT_START repeated_contents PREINDENT_END - { - p = PreformattedAST.new(@ast_index, @ast_length) - p.indented = true - p.children += val[1] - result = p - } - ; - -section: SECTION_START repeated_contents SECTION_END - { result = [val[1], val[0].length] - s = SectionAST.new(@ast_index, @ast_length) - s.children = val[1] - s.level = val[0].length - result = s - } - ; - -template: TEMPLATE_START TEXT template_parameters TEMPLATE_END - { - t = TemplateAST.new(@ast_index, @ast_length) - t.template_name = val[1] - t.children = val[2] unless val[2].nil? or val[2].empty? - result = t - } - ; - -template_parameters: - { - result = nil - } - | INTLINKSEP TEXT template_parameters - { - p = TemplateParameterAST.new(@ast_index, @ast_length) - p.parameter_value = val[1] - result = [p] - result += val[2] if val[2] - } - | INTLINKSEP template template_parameters - { - p = TemplateParameterAST.new(@ast_index, @ast_length) - p.children << val[1] - result = [p] - result += val[2] if val[2] - } - ; - -end - ----- header ---- -require 'mediacloth/mediawikiast' - ----- inner ---- - -attr_accessor :lexer - -def initialize - @nodes = [] - @context = [] - @wiki_ast_length = 0 - super -end - -#Tokenizes input string and parses it. -def parse(input) - @yydebug=true - lexer.tokenize(input) - do_parse - return @nodes.last -end - -#Asks the lexer to return the next token. -def next_token - token = @lexer.lex - if token[0].to_s.upcase.include? "_START" - @context << token[2..3] - elsif token[0].to_s.upcase.include? "_END" - @ast_index = @context.last[0] - @ast_length = token[2] + token[3] - @context.last[0] - @context.pop - else - @ast_index = token[2] - @ast_length = token[3] - end - - @wiki_ast_length += token[3] - - return token[0..1] -end diff --git a/test/racc/assets/mof.y b/test/racc/assets/mof.y deleted file mode 100644 index 2e83c79b6f..0000000000 --- a/test/racc/assets/mof.y +++ /dev/null @@ -1,649 +0,0 @@ -# Distributed under the Ruby license -# See http://www.ruby-lang.org/en/LICENSE.txt for the full license text -# Copyright (c) 2010 Klaus Kämpf <kkaempf@suse.de> - -/* - * According to appendix A of - * http://www.dmtf.org/standards/cim/cim_spec_v22 - */ - -class MOF::Parser - prechigh -/* nonassoc UMINUS */ - left '*' '/' - left '+' '-' - preclow - - token PRAGMA INCLUDE IDENTIFIER CLASS ASSOCIATION INDICATION - AMENDED ENABLEOVERRIDE DISABLEOVERRIDE RESTRICTED TOSUBCLASS TOINSTANCE - TRANSLATABLE QUALIFIER SCOPE SCHEMA PROPERTY REFERENCE - METHOD PARAMETER FLAVOR INSTANCE - AS REF ANY OF - DT_VOID - DT_UINT8 DT_SINT8 DT_UINT16 DT_SINT16 DT_UINT32 DT_SINT32 - DT_UINT64 DT_SINT64 DT_REAL32 DT_REAL64 DT_CHAR16 DT_STR - DT_BOOLEAN DT_DATETIME - positiveDecimalValue - stringValue - realValue - charValue - booleanValue - nullValue - binaryValue - octalValue - decimalValue - hexValue - -rule - - /* Returns a Hash of filename and MofResult */ - mofSpecification - : /* empty */ - { result = Hash.new } - | mofProduction - { result = { @name => @result } } - | mofSpecification mofProduction - { result = val[0] - result[@name] = @result - } - ; - - mofProduction - : compilerDirective - | classDeclaration - { #puts "Class '#{val[0].name}'" - @result.classes << val[0] - } - | qualifierDeclaration - { @result.qualifiers << val[0] - @qualifiers[val[0].name.downcase] = val[0] - } - | instanceDeclaration - { @result.instances << val[0] } - ; - -/*** - * compilerDirective - * - */ - - compilerDirective - : "#" PRAGMA INCLUDE pragmaParameters_opt - { raise MOF::Helper::Error.new(@name,@lineno,@line,"Missing filename after '#pragma include'") unless val[3] - open val[3], :pragma - } - | "#" PRAGMA pragmaName pragmaParameters_opt - | "#" INCLUDE pragmaParameters_opt - { raise StyleError.new(@name,@lineno,@line,"Use '#pragma include' instead of '#include'") unless @style == :wmi - raise MOF::Helper::Error.new(@name,@lineno,@line,"Missing filename after '#include'") unless val[2] - open val[2], :pragma - } - ; - - pragmaName - : IDENTIFIER - ; - - pragmaParameters_opt - : /* empty */ - { raise StyleError.new(@name,@lineno,@line,"#pragma parameter missing") unless @style == :wmi } - | "(" pragmaParameterValues ")" - { result = val[1] } - ; - - pragmaParameterValues - : pragmaParameterValue - | pragmaParameterValues "," pragmaParameterValue - ; - - pragmaParameterValue - : string - | integerValue - { raise StyleError.new(@name,@lineno,@line,"#pragma parameter missing") unless @style == :wmi } - | IDENTIFIER - ; - -/*** - * classDeclaration - * - */ - - classDeclaration - : qualifierList_opt CLASS className alias_opt superClass_opt "{" classFeatures "}" ";" - { qualifiers = val[0] - features = val[6] - # FIXME: features must not include references - result = CIM::Class.new(val[2],qualifiers,val[3],val[4],features) - } - ; - - classFeatures - : /* empty */ - { result = [] } - | classFeatures classFeature - { result = val[0] << val[1] } - ; - - classFeature - : propertyDeclaration - | methodDeclaration - | referenceDeclaration /* must have association qualifier */ - ; - - - qualifierList_opt - : /* empty */ - | qualifierList - { result = CIM::QualifierSet.new val[0] } - ; - - qualifierList - : "[" qualifier qualifiers "]" - { result = val[2] - result.unshift val[1] if val[1] } - ; - - qualifiers - : /* empty */ - { result = [] } - | qualifiers "," qualifier - { result = val[0] - result << val[2] if val[2] - } - ; - - qualifier - : qualifierName qualifierParameter_opt flavor_opt - { # Get qualifier decl - qualifier = case val[0] - when CIM::Qualifier then val[0].definition - when CIM::QualifierDeclaration then val[0] - when String then @qualifiers[val[0].downcase] - else - nil - end - raise MOF::Helper::Error.new(@name,@lineno,@line,"'#{val[0]}' is not a valid qualifier") unless qualifier - value = val[1] - raise MOF::Helper::Error.new(@name,@lineno,@line,"#{value.inspect} does not match qualifier type '#{qualifier.type}'") unless qualifier.type.matches?(value)||@style == :wmi - # Don't propagate a boolean 'false' - if qualifier.type == :boolean && value == false - result = nil - else - result = CIM::Qualifier.new(qualifier,value,val[2]) - end - } - ; - - flavor_opt - : /* empty */ - | ":" flavor - { result = CIM::QualifierFlavors.new val[1] } - ; - - qualifierParameter_opt - : /* empty */ - | qualifierParameter - ; - - qualifierParameter - : "(" constantValue ")" - { result = val[1] } - | arrayInitializer - ; - - /* CIM::Flavors */ - flavor - : AMENDED | ENABLEOVERRIDE | DISABLEOVERRIDE | RESTRICTED | TOSUBCLASS | TRANSLATABLE | TOINSTANCE - { case val[0].to_sym - when :amended, :toinstance - raise StyleError.new(@name,@lineno,@line,"'#{val[0]}' is not a valid flavor") unless @style == :wmi - end - } - ; - - alias_opt - : /* empty */ - | alias - ; - - superClass_opt - : /* empty */ - | superClass - ; - - className - : IDENTIFIER /* must be <schema>_<classname> in CIM v2.x */ - { raise ParseError.new("Class name must be prefixed by '<schema>_'") unless val[0].include?("_") || @style == :wmi } - ; - - alias - : AS aliasIdentifier - { result = val[1] } - ; - - aliasIdentifier - : "$" IDENTIFIER /* NO whitespace ! */ - { result = val[1] } - ; - - superClass - : ":" className - { result = val[1] } - ; - - - propertyDeclaration - : qualifierList_opt dataType propertyName array_opt defaultValue_opt ";" - { if val[3] - type = CIM::Array.new val[3],val[1] - else - type = val[1] - end - result = CIM::Property.new(type,val[2],val[0],val[4]) - } - ; - - referenceDeclaration - : qualifierList_opt objectRef referenceName array_opt defaultValue_opt ";" - { if val[4] - raise StyleError.new(@name,@lineno,@line,"Array not allowed in reference declaration") unless @style == :wmi - end - result = CIM::Reference.new(val[1],val[2],val[0],val[4]) } - ; - - methodDeclaration - : qualifierList_opt dataType methodName "(" parameterList_opt ")" ";" - { result = CIM::Method.new(val[1],val[2],val[0],val[4]) } - ; - - propertyName - : IDENTIFIER - | PROPERTY - { # tmplprov.mof has 'string Property;' - raise StyleError.new(@name,@lineno,@line,"Invalid keyword '#{val[0]}' used for property name") unless @style == :wmi - } - ; - - referenceName - : IDENTIFIER - | INDICATION - { result = "Indication" } - ; - - methodName - : IDENTIFIER - ; - - dataType - : DT_UINT8 - | DT_SINT8 - | DT_UINT16 - | DT_SINT16 - | DT_UINT32 - | DT_SINT32 - | DT_UINT64 - | DT_SINT64 - | DT_REAL32 - | DT_REAL64 - | DT_CHAR16 - | DT_STR - | DT_BOOLEAN - | DT_DATETIME - | DT_VOID - { raise StyleError.new(@name,@lineno,@line,"'void' is not a valid datatype") unless @style == :wmi } - ; - - objectRef - : className - { # WMI uses class names as data types (without REF ?!) - raise StyleError.new(@name,@lineno,@line,"Expected 'ref' keyword after classname '#{val[0]}'") unless @style == :wmi - result = CIM::ReferenceType.new val[0] - } - - | className REF - { result = CIM::ReferenceType.new val[0] } - ; - - parameterList_opt - : /* empty */ - | parameterList - ; - - parameterList - : parameter parameters - { result = val[1].unshift val[0] } - ; - - parameters - : /* empty */ - { result = [] } - | parameters "," parameter - { result = val[0] << val[2] } - ; - - parameter - : qualifierList_opt typespec parameterName array_opt parameterValue_opt - { if val[3] - type = CIM::Array.new val[3], val[1] - else - type = val[1] - end - result = CIM::Property.new(type,val[2],val[0]) - } - ; - - typespec - : dataType - | objectRef - ; - - parameterName - : IDENTIFIER - ; - - array_opt - : /* empty */ - | array - ; - - parameterValue_opt - : /* empty */ - | defaultValue - { raise "Default parameter value not allowed in syntax style '{@style}'" unless @style == :wmi } - ; - - array - : "[" positiveDecimalValue_opt "]" - { result = val[1] } - ; - - positiveDecimalValue_opt - : /* empty */ - { result = -1 } - | positiveDecimalValue - ; - - defaultValue_opt - : /* empty */ - | defaultValue - ; - - defaultValue - : "=" initializer - { result = val[1] } - ; - - initializer - : constantValue - | arrayInitializer - | referenceInitializer - ; - - arrayInitializer - : "{" constantValues "}" - { result = val[1] } - ; - - constantValues - : /* empty */ - | constantValue - { result = [ val[0] ] } - | constantValues "," constantValue - { result = val[0] << val[2] } - ; - - constantValue - : integerValue - | realValue - | charValue - | string - | booleanValue - | nullValue - | instance - { raise "Instance as property value not allowed in syntax style '{@style}'" unless @style == :wmi } - ; - - integerValue - : binaryValue - | octalValue - | decimalValue - | positiveDecimalValue - | hexValue - ; - - string - : stringValue - | string stringValue - { result = val[0] + val[1] } - ; - - referenceInitializer - : objectHandle - | aliasIdentifier - ; - - objectHandle - : namespace_opt modelPath - ; - - namespace_opt - : /* empty */ - | namespaceHandle ":" - ; - - namespaceHandle - : IDENTIFIER - ; - - /* - * Note - : structure depends on type of namespace - */ - - modelPath - : className "." keyValuePairList - ; - - keyValuePairList - : keyValuePair keyValuePairs - ; - - keyValuePairs - : /* empty */ - | keyValuePairs "," keyValuePair - ; - - keyValuePair - : keyname "=" initializer - ; - - keyname - : propertyName | referenceName - ; - -/*** - * qualifierDeclaration - * - */ - - qualifierDeclaration - /* 0 1 2 3 4 */ - : QUALIFIER qualifierName qualifierType scope defaultFlavor_opt ";" - { result = CIM::QualifierDeclaration.new( val[1], val[2][0], val[2][1], val[3], val[4]) } - ; - - defaultFlavor_opt - : /* empty */ - | defaultFlavor - ; - - qualifierName - : IDENTIFIER - | ASSOCIATION /* meta qualifier */ - | INDICATION /* meta qualifier */ - | REFERENCE /* Added in DSP0004 2.7.0 */ - | SCHEMA - ; - - /* [type, value] */ - qualifierType - : ":" dataType array_opt defaultValue_opt - { type = val[2].nil? ? val[1] : CIM::Array.new(val[2],val[1]) - result = [ type, val[3] ] - } - ; - - scope - : "," SCOPE "(" metaElements ")" - { result = CIM::QualifierScopes.new(val[3]) } - ; - - metaElements - : metaElement - { result = [ val[0] ] } - | metaElements "," metaElement - { result = val[0] << val[2] } - ; - - metaElement - : SCHEMA - | CLASS - | ASSOCIATION - | INDICATION - | QUALIFIER - | PROPERTY - | REFERENCE - | METHOD - | PARAMETER - | ANY - ; - - defaultFlavor - : "," FLAVOR "(" flavors ")" - { result = CIM::QualifierFlavors.new val[3] } - ; - - flavors - : flavor - { result = [ val[0] ] } - | flavors "," flavor - { result = val[0] << val[2] } - ; - -/*** - * instanceDeclaration - * - */ - - instanceDeclaration - : instance ";" - ; - - instance - : qualifierList_opt INSTANCE OF className alias_opt "{" valueInitializers "}" - ; - - valueInitializers - : valueInitializer - | valueInitializers valueInitializer - ; - - valueInitializer - : qualifierList_opt keyname "=" initializer ";" - | qualifierList_opt keyname ";" - { raise "Instance property '#{val[1]} must have a value" unless @style == :wmi } - ; - -end # class Parser - ----- header ---- - -# parser.rb - generated by racc - -require 'strscan' -require 'rubygems' -require 'cim' -require File.join(__dir__, 'result') -require File.join(__dir__, 'scanner') -require File.join(__dir__, 'case') - ----- inner ---- - -# -# Initialize MOF::Parser -# MOF::Parser.new options = {} -# -# options -> Hash of options -# :debug -> boolean -# :includes -> array of include dirs -# :style -> :cim or :wmi -# -def initialize options = {} - @yydebug = options[:debug] - @includes = options[:includes] || [] - @quiet = options[:quiet] - @style = options[:style] || :cim # default to style CIM v2.2 syntax - - @lineno = 1 - @file = nil - @iconv = nil - @eol = "\n" - @fname = nil - @fstack = [] - @in_comment = false - @seen_files = [] - @qualifiers = {} -end - -# -# Make options hash from argv -# -# returns [ files, options ] -# - - def self.argv_handler name, argv - files = [] - options = { :namespace => "" } - while argv.size > 0 - case opt = argv.shift - when "-h" - $stderr.puts "Ruby MOF compiler" - $stderr.puts "#{name} [-h] [-d] [-I <dir>] [<moffiles>]" - $stderr.puts "Compiles <moffile>" - $stderr.puts "\t-d debug" - $stderr.puts "\t-h this help" - $stderr.puts "\t-I <dir> include dir" - $stderr.puts "\t-f force" - $stderr.puts "\t-n <namespace>" - $stderr.puts "\t-o <output>" - $stderr.puts "\t-s <style> syntax style (wmi,cim)" - $stderr.puts "\t-q quiet" - $stderr.puts "\t<moffiles> file(s) to read (else use $stdin)" - exit 0 - when "-f" then options[:force] = true - when "-s" then options[:style] = argv.shift.to_sym - when "-d" then options[:debug] = true - when "-q" then options[:quiet] = true - when "-I" - options[:includes] ||= [] - dirname = argv.shift - unless File.directory?(dirname) - files << dirname - dirname = File.dirname(dirname) - end - options[:includes] << Pathname.new(dirname) - when "-n" then options[:namespace] = argv.shift - when "-o" then options[:output] = argv.shift - when /^-.+/ - $stderr.puts "Undefined option #{opt}" - else - files << opt - end - end - [ files, options ] - end - -include Helper -include Scanner - ----- footer ---- diff --git a/test/racc/assets/namae.y b/test/racc/assets/namae.y deleted file mode 100644 index 0378345fef..0000000000 --- a/test/racc/assets/namae.y +++ /dev/null @@ -1,302 +0,0 @@ -# -*- ruby -*- -# vi: set ft=ruby : - -# Copyright (C) 2012 President and Fellows of Harvard College -# Copyright (C) 2013-2014 Sylvester Keil -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# 1. Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER ``AS IS'' AND ANY EXPRESS OR -# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO -# EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY -# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -# The views and conclusions contained in the software and documentation are -# those of the authors and should not be interpreted as representing official -# policies, either expressed or implied, of the copyright holder. - -class Namae::Parser - -token COMMA UWORD LWORD PWORD NICK AND APPELLATION TITLE SUFFIX - -expect 0 - -rule - - names : { result = [] } - | name { result = [val[0]] } - | names AND name { result = val[0] << val[2] } - - name : word { result = Name.new(:given => val[0]) } - | display_order - | honorific word { result = val[0].merge(:family => val[1]) } - | honorific display_order { result = val[1].merge(val[0]) } - | sort_order - - honorific : APPELLATION { result = Name.new(:appellation => val[0]) } - | TITLE { result = Name.new(:title => val[0]) } - - display_order : u_words word opt_suffices opt_titles - { - result = Name.new(:given => val[0], :family => val[1], - :suffix => val[2], :title => val[3]) - } - | u_words NICK last opt_suffices opt_titles - { - result = Name.new(:given => val[0], :nick => val[1], - :family => val[2], :suffix => val[3], :title => val[4]) - } - | u_words NICK von last opt_suffices opt_titles - { - result = Name.new(:given => val[0], :nick => val[1], - :particle => val[2], :family => val[3], - :suffix => val[4], :title => val[5]) - } - | u_words von last - { - result = Name.new(:given => val[0], :particle => val[1], - :family => val[2]) - } - | von last - { - result = Name.new(:particle => val[0], :family => val[1]) - } - - sort_order : last COMMA first - { - result = Name.new({ :family => val[0], :suffix => val[2][0], - :given => val[2][1] }, !!val[2][0]) - } - | von last COMMA first - { - result = Name.new({ :particle => val[0], :family => val[1], - :suffix => val[3][0], :given => val[3][1] }, !!val[3][0]) - } - | u_words von last COMMA first - { - result = Name.new({ :particle => val[0,2].join(' '), :family => val[2], - :suffix => val[4][0], :given => val[4][1] }, !!val[4][0]) - } - ; - - von : LWORD - | von LWORD { result = val.join(' ') } - | von u_words LWORD { result = val.join(' ') } - - last : LWORD | u_words - - first : opt_words { result = [nil,val[0]] } - | words opt_comma suffices { result = [val[2],val[0]] } - | suffices { result = [val[0],nil] } - | suffices COMMA words { result = [val[0],val[2]] } - - u_words : u_word - | u_words u_word { result = val.join(' ') } - - u_word : UWORD | PWORD - - words : word - | words word { result = val.join(' ') } - - opt_comma : /* empty */ | COMMA - opt_words : /* empty */ | words - - word : LWORD | UWORD | PWORD - - opt_suffices : /* empty */ | suffices - - suffices : SUFFIX - | suffices SUFFIX { result = val.join(' ') } - - opt_titles : /* empty */ | titles - - titles : TITLE - | titles TITLE { result = val.join(' ') } - ----- header -require 'singleton' -require 'strscan' - ----- inner - - include Singleton - - attr_reader :options, :input - - def initialize - @input, @options = StringScanner.new(''), { - :debug => false, - :prefer_comma_as_separator => false, - :comma => ',', - :stops => ',;', - :separator => /\s*(\band\b|\&|;)\s*/i, - :title => /\s*\b(sir|lord|count(ess)?|(gen|adm|col|maj|capt|cmdr|lt|sgt|cpl|pvt|prof|dr|md|ph\.?d)\.?)(\s+|$)/i, - :suffix => /\s*\b(JR|Jr|jr|SR|Sr|sr|[IVX]{2,})(\.|\b)/, - :appellation => /\s*\b((mrs?|ms|fr|hr)\.?|miss|herr|frau)(\s+|$)/i - } - end - - def debug? - options[:debug] || ENV['DEBUG'] - end - - def separator - options[:separator] - end - - def comma - options[:comma] - end - - def stops - options[:stops] - end - - def title - options[:title] - end - - def suffix - options[:suffix] - end - - def appellation - options[:appellation] - end - - def prefer_comma_as_separator? - options[:prefer_comma_as_separator] - end - - def parse(input) - parse!(input) - rescue => e - warn e.message if debug? - [] - end - - def parse!(string) - input.string = normalize(string) - reset - do_parse - end - - def normalize(string) - string = string.strip - string - end - - def reset - @commas, @words, @initials, @suffices, @yydebug = 0, 0, 0, 0, debug? - self - end - - private - - def stack - @vstack || @racc_vstack || [] - end - - def last_token - stack[-1] - end - - def consume_separator - return next_token if seen_separator? - @commas, @words, @initials, @suffices = 0, 0, 0, 0 - [:AND, :AND] - end - - def consume_comma - @commas += 1 - [:COMMA, :COMMA] - end - - def consume_word(type, word) - @words += 1 - - case type - when :UWORD - @initials += 1 if word =~ /^[[:upper:]]+\b/ - when :SUFFIX - @suffices += 1 - end - - [type, word] - end - - def seen_separator? - !stack.empty? && last_token == :AND - end - - def suffix? - !@suffices.zero? || will_see_suffix? - end - - def will_see_suffix? - input.peek(8).to_s.strip.split(/\s+/)[0] =~ suffix - end - - def will_see_initial? - input.peek(6).to_s.strip.split(/\s+/)[0] =~ /^[[:upper:]]+\b/ - end - - def seen_full_name? - prefer_comma_as_separator? && @words > 1 && - (@initials > 0 || !will_see_initial?) && !will_see_suffix? - end - - def next_token - case - when input.nil?, input.eos? - nil - when input.scan(separator) - consume_separator - when input.scan(/\s*#{comma}\s*/) - if @commas.zero? && !seen_full_name? || @commas == 1 && suffix? - consume_comma - else - consume_separator - end - when input.scan(/\s+/) - next_token - when input.scan(title) - consume_word(:TITLE, input.matched.strip) - when input.scan(suffix) - consume_word(:SUFFIX, input.matched.strip) - when input.scan(appellation) - [:APPELLATION, input.matched.strip] - when input.scan(/((\\\w+)?\{[^\}]*\})*[[:upper:]][^\s#{stops}]*/) - consume_word(:UWORD, input.matched) - when input.scan(/((\\\w+)?\{[^\}]*\})*[[:lower:]][^\s#{stops}]*/) - consume_word(:LWORD, input.matched) - when input.scan(/(\\\w+)?\{[^\}]*\}[^\s#{stops}]*/) - consume_word(:PWORD, input.matched) - when input.scan(/('[^'\n]+')|("[^"\n]+")/) - consume_word(:NICK, input.matched[1...-1]) - else - raise ArgumentError, - "Failed to parse name #{input.string.inspect}: unmatched data at offset #{input.pos}" - end - end - - def on_error(tid, value, stack) - raise ArgumentError, - "Failed to parse name: unexpected '#{value}' at #{stack.inspect}" - end - -# -*- racc -*- diff --git a/test/racc/assets/nasl.y b/test/racc/assets/nasl.y deleted file mode 100644 index c7b8e46551..0000000000 --- a/test/racc/assets/nasl.y +++ /dev/null @@ -1,626 +0,0 @@ -################################################################################ -# Copyright (c) 2011-2014, Tenable Network Security -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# 1. Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -################################################################################ - -class Nasl::Grammar - -preclow - right ASS_EQ ADD_EQ SUB_EQ MUL_EQ DIV_EQ MOD_EQ SLL_EQ SRA_EQ SRL_EQ - left OR - left AND - left CMP_LT CMP_GT CMP_EQ CMP_NE CMP_GE CMP_LE SUBSTR_EQ SUBSTR_NE REGEX_EQ REGEX_NE - left BIT_OR - left BIT_XOR - left AMPERSAND - left BIT_SRA BIT_SRL BIT_SLL - left ADD SUB - left MUL DIV MOD - right NOT - right UMINUS BIT_NOT - right EXP - right INCR DECR -prechigh - -# Tell the parser generator that we don't wish to use the result variable in the -# action section of rules. Instead, the result of the rule will be the value of -# evaluating the action block. -options no_result_var - -# Tell the parser generator that we expect one shift/reduce conflict due to the -# well-known dangling else problem. We could make the grammar solve this -# problem, but this is how the NASL YACC file solves it, so we'll follow suit. -expect 1 - -rule - ############################################################################## - # Aggregate Statements - ############################################################################## - - start : roots - { val[0] } - | /* Blank */ - { [] } - ; - - roots : root roots - { [val[0]] + val[1] } - | root - { [val[0]] } - ; - - root : COMMENT export - { c(*val) } - | export - { val[0] } - | COMMENT function - { c(*val) } - | function - { val[0] } - | statement - { val[0] } - ; - - statement : simple - { val[0] } - | compound - { val[0] } - ; - - ############################################################################## - # Root Statements - ############################################################################## - - export : EXPORT function - { n(:Export, *val) } - ; - - function : FUNCTION ident LPAREN params RPAREN block - { n(:Function, *val) } - | FUNCTION ident LPAREN RPAREN block - { n(:Function, *val) } - ; - - simple : assign - { val[0] } - | break - { val[0] } - | call - { val[0] } - | continue - { val[0] } - | decr - { val[0] } - | empty - { val[0] } - | COMMENT global - { c(*val) } - | global - { val[0] } - | import - { val[0] } - | include - { val[0] } - | incr - { val[0] } - | local - { val[0] } - | rep - { val[0] } - | return - { val[0] } - ; - - compound : block - { val[0] } - | for - { val[0] } - | foreach - { val[0] } - | if - { val[0] } - | repeat - { val[0] } - | while - { val[0] } - ; - - ############################################################################## - # Simple Statements - ############################################################################## - - assign : assign_exp SEMICOLON - { val[0] } - ; - - break : BREAK SEMICOLON - { n(:Break, *val) } - ; - - call : call_exp SEMICOLON - { val[0] } - ; - - continue : CONTINUE SEMICOLON - { n(:Continue, *val) } - ; - - decr : decr_exp SEMICOLON - { val[0] } - ; - - empty : SEMICOLON - { n(:Empty, *val) } - ; - - global : GLOBAL var_decls SEMICOLON - { n(:Global, *val) } - ; - - incr : incr_exp SEMICOLON - { val[0] } - ; - - import : IMPORT LPAREN string RPAREN SEMICOLON - { n(:Import, *val) } - ; - - include : INCLUDE LPAREN string RPAREN SEMICOLON - { n(:Include, *val) } - ; - - local : LOCAL var_decls SEMICOLON - { n(:Local, *val) } - ; - - rep : call_exp REP expr SEMICOLON - { n(:Repetition, *val[0..-1]) } - ; - - return : RETURN expr SEMICOLON - { n(:Return, *val) } - | RETURN ref SEMICOLON - { n(:Return, *val) } - | RETURN SEMICOLON - { n(:Return, *val) } - ; - - ############################################################################## - # Compound Statements - ############################################################################## - - block : LBRACE statements RBRACE - { n(:Block, *val) } - | LBRACE RBRACE - { n(:Block, *val) } - ; - - for : FOR LPAREN field SEMICOLON expr SEMICOLON field RPAREN statement - { n(:For, *val) } - ; - - foreach : FOREACH ident LPAREN expr RPAREN statement - { n(:Foreach, val[0], val[1], val[3], val[5]) } - | FOREACH LPAREN ident IN expr RPAREN statement - { n(:Foreach, val[0], val[2], val[4], val[6]) } - ; - - if : IF LPAREN expr RPAREN statement - { n(:If, *val) } - | IF LPAREN expr RPAREN statement ELSE statement - { n(:If, *val) } - ; - - repeat : REPEAT statement UNTIL expr SEMICOLON - { n(:Repeat, *val) } - ; - - while : WHILE LPAREN expr RPAREN statement - { n(:While, *val) } - ; - - ############################################################################## - # Expressions - ############################################################################## - - assign_exp : lval ASS_EQ expr - { n(:Assignment, *val) } - | lval ASS_EQ ref - { n(:Assignment, *val) } - | lval ADD_EQ expr - { n(:Assignment, *val) } - | lval SUB_EQ expr - { n(:Assignment, *val) } - | lval MUL_EQ expr - { n(:Assignment, *val) } - | lval DIV_EQ expr - { n(:Assignment, *val) } - | lval MOD_EQ expr - { n(:Assignment, *val) } - | lval SRL_EQ expr - { n(:Assignment, *val) } - | lval SRA_EQ expr - { n(:Assignment, *val) } - | lval SLL_EQ expr - { n(:Assignment, *val) } - ; - - call_exp : lval LPAREN args RPAREN - { n(:Call, *val) } - | lval LPAREN RPAREN - { n(:Call, *val) } - ; - - decr_exp : DECR lval - { n(:Decrement, val[0]) } - | lval DECR - { n(:Decrement, val[0]) } - ; - - incr_exp : INCR lval - { n(:Increment, val[0]) } - | lval INCR - { n(:Increment, val[0]) } - ; - - expr : LPAREN expr RPAREN - { n(:Expression, *val) } - | expr AND expr - { n(:Expression, *val) } - | NOT expr - { n(:Expression, *val) } - | expr OR expr - { n(:Expression, *val) } - | expr ADD expr - { n(:Expression, *val) } - | expr SUB expr - { n(:Expression, *val) } - | SUB expr =UMINUS - { n(:Expression, *val) } - | BIT_NOT expr - { n(:Expression, *val) } - | expr MUL expr - { n(:Expression, *val) } - | expr EXP expr - { n(:Expression, *val) } - | expr DIV expr - { n(:Expression, *val) } - | expr MOD expr - { n(:Expression, *val) } - | expr AMPERSAND expr - { n(:Expression, *val) } - | expr BIT_XOR expr - { n(:Expression, *val) } - | expr BIT_OR expr - { n(:Expression, *val) } - | expr BIT_SRA expr - { n(:Expression, *val) } - | expr BIT_SRL expr - { n(:Expression, *val) } - | expr BIT_SLL expr - { n(:Expression, *val) } - | incr_exp - { val[0] } - | decr_exp - { val[0] } - | expr SUBSTR_EQ expr - { n(:Expression, *val) } - | expr SUBSTR_NE expr - { n(:Expression, *val) } - | expr REGEX_EQ expr - { n(:Expression, *val) } - | expr REGEX_NE expr - { n(:Expression, *val) } - | expr CMP_LT expr - { n(:Expression, *val) } - | expr CMP_GT expr - { n(:Expression, *val) } - | expr CMP_EQ expr - { n(:Expression, *val) } - | expr CMP_NE expr - { n(:Expression, *val) } - | expr CMP_GE expr - { n(:Expression, *val) } - | expr CMP_LE expr - { n(:Expression, *val) } - | assign_exp - { val[0] } - | string - { val[0] } - | call_exp - { val[0] } - | lval - { val[0] } - | ip - { val[0] } - | int - { val[0] } - | undef - { val[0] } - | list_expr - { val[0] } - | array_expr - { val[0] } - ; - - ############################################################################## - # Named Components - ############################################################################## - - arg : ident COLON expr - { n(:Argument, *val) } - | ident COLON ref - { n(:Argument, *val) } - | expr - { n(:Argument, *val) } - | ref - { n(:Argument, *val) } - ; - - kv_pair : string COLON expr - { n(:KeyValuePair, *val) } - | int COLON expr - { n(:KeyValuePair, *val) } - | ident COLON expr - { n(:KeyValuePair, *val) } - | string COLON ref - { n(:KeyValuePair, *val) } - | int COLON ref - { n(:KeyValuePair, *val) } - | ident COLON ref - { n(:KeyValuePair, *val) } - ; - - kv_pairs : kv_pair COMMA kv_pairs - { [val[0]] + val[2] } - | kv_pair COMMA - { [val[0]] } - | kv_pair - { [val[0]] } - ; - - lval : ident indexes - { n(:Lvalue, *val) } - | ident - { n(:Lvalue, *val) } - ; - - ref : AT_SIGN ident - { n(:Reference, val[1]) } - ; - - ############################################################################## - # Anonymous Components - ############################################################################## - - args : arg COMMA args - { [val[0]] + val[2] } - | arg - { [val[0]] } - ; - - array_expr : LBRACE kv_pairs RBRACE - { n(:Array, *val) } - | LBRACE RBRACE - { n(:Array, *val) } - ; - - field : assign_exp - { val[0] } - | call_exp - { val[0] } - | decr_exp - { val[0] } - | incr_exp - { val[0] } - | /* Blank */ - { nil } - ; - - index : LBRACK expr RBRACK - { val[1] } - | PERIOD ident - { val[1] } - ; - - indexes : index indexes - { [val[0]] + val[1] } - | index - { [val[0]] } - ; - - list_elem : expr - { val[0] } - | ref - { val[0] } - ; - - list_elems : list_elem COMMA list_elems - { [val[0]] + val[2] } - | list_elem - { [val[0]] } - ; - - list_expr : LBRACK list_elems RBRACK - { n(:List, *val) } - | LBRACK RBRACK - { n(:List, *val) } - ; - - param : AMPERSAND ident - { n(:Parameter, val[1], 'reference') } - | ident - { n(:Parameter, val[0], 'value') } - ; - - params : param COMMA params - { [val[0]] + val[2] } - | param - { [val[0]] } - ; - - statements : statement statements - { [val[0]] + val[1] } - | statement - { [val[0]] } - ; - - var_decl : ident ASS_EQ expr - { n(:Assignment, *val) } - | ident ASS_EQ ref - { n(:Assignment, *val) } - | ident - { val[0] } - ; - - var_decls : var_decl COMMA var_decls - { [val[0]] + val[2] } - | var_decl - { [val[0]] } - ; - - ############################################################################## - # Literals - ############################################################################## - - ident : IDENT - { n(:Identifier, *val) } - | REP - { n(:Identifier, *val) } - | IN - { n(:Identifier, *val) } - ; - - int : INT_DEC - { n(:Integer, *val) } - | INT_HEX - { n(:Integer, *val) } - | INT_OCT - { n(:Integer, *val) } - | FALSE - { n(:Integer, *val) } - | TRUE - { n(:Integer, *val) } - ; - - ip : int PERIOD int PERIOD int PERIOD int - { n(:Ip, *val) } - - string : DATA - { n(:String, *val) } - | STRING - { n(:String, *val) } - ; - - undef : UNDEF - { n(:Undefined, *val) } - ; -end - ----- header ---- - -require 'nasl/parser/tree' - -require 'nasl/parser/argument' -require 'nasl/parser/array' -require 'nasl/parser/assigment' -require 'nasl/parser/block' -require 'nasl/parser/break' -require 'nasl/parser/call' -require 'nasl/parser/comment' -require 'nasl/parser/continue' -require 'nasl/parser/decrement' -require 'nasl/parser/empty' -require 'nasl/parser/export' -require 'nasl/parser/expression' -require 'nasl/parser/for' -require 'nasl/parser/foreach' -require 'nasl/parser/function' -require 'nasl/parser/global' -require 'nasl/parser/identifier' -require 'nasl/parser/if' -require 'nasl/parser/import' -require 'nasl/parser/include' -require 'nasl/parser/increment' -require 'nasl/parser/integer' -require 'nasl/parser/ip' -require 'nasl/parser/key_value_pair' -require 'nasl/parser/list' -require 'nasl/parser/local' -require 'nasl/parser/lvalue' -require 'nasl/parser/parameter' -require 'nasl/parser/reference' -require 'nasl/parser/repeat' -require 'nasl/parser/repetition' -require 'nasl/parser/return' -require 'nasl/parser/string' -require 'nasl/parser/undefined' -require 'nasl/parser/while' - ----- inner ---- - -def n(cls, *args) - begin - Nasl.const_get(cls).new(@tree, *args) - rescue - puts "An exception occurred during the creation of a #{cls} instance." - puts - puts "The arguments passed to the constructor were:" - puts args - puts - puts @tok.last.context - puts - raise - end -end - -def c(*args) - n(:Comment, *args) - args[1] -end - -def on_error(type, value, stack) - raise ParseException, "The language's grammar does not permit #{value.name} to appear here", value.context -end - -def next_token - @tok = @tkz.get_token - - if @first && @tok.first == :COMMENT - n(:Comment, @tok.last) - @tok = @tkz.get_token - end - @first = false - - return @tok -end - -def parse(env, code, path) - @first = true - @tree = Tree.new(env) - @tkz = Tokenizer.new(code, path) - @tree.concat(do_parse) -end - ----- footer ---- diff --git a/test/racc/assets/newsyn.y b/test/racc/assets/newsyn.y deleted file mode 100644 index 5b670c966a..0000000000 --- a/test/racc/assets/newsyn.y +++ /dev/null @@ -1,25 +0,0 @@ - -class A - - preclow - left preclow prechigh right left nonassoc token - right preclow prechigh right left nonassoc token - nonassoc preclow prechigh right left nonassoc token - prechigh - - convert - left 'a' - right 'b' - preclow 'c' - nonassoc 'd' - preclow 'e' - prechigh 'f' - end - -rule - - left: right nonassoc preclow prechigh - - right: A B C - -end diff --git a/test/racc/assets/noend.y b/test/racc/assets/noend.y deleted file mode 100644 index 5aa0670be0..0000000000 --- a/test/racc/assets/noend.y +++ /dev/null @@ -1,4 +0,0 @@ -class MyParser -rule -input: A B C -end diff --git a/test/racc/assets/nokogiri-css.y b/test/racc/assets/nokogiri-css.y deleted file mode 100644 index 24dfbf3b1b..0000000000 --- a/test/racc/assets/nokogiri-css.y +++ /dev/null @@ -1,255 +0,0 @@ -class Nokogiri::CSS::Parser - -token FUNCTION INCLUDES DASHMATCH LBRACE HASH PLUS GREATER S STRING IDENT -token COMMA NUMBER PREFIXMATCH SUFFIXMATCH SUBSTRINGMATCH TILDE NOT_EQUAL -token SLASH DOUBLESLASH NOT EQUAL RPAREN LSQUARE RSQUARE HAS - -rule - selector - : selector COMMA simple_selector_1toN { - result = [val.first, val.last].flatten - } - | prefixless_combinator_selector { result = val.flatten } - | optional_S simple_selector_1toN { result = [val.last].flatten } - ; - combinator - : PLUS { result = :DIRECT_ADJACENT_SELECTOR } - | GREATER { result = :CHILD_SELECTOR } - | TILDE { result = :FOLLOWING_SELECTOR } - | DOUBLESLASH { result = :DESCENDANT_SELECTOR } - | SLASH { result = :CHILD_SELECTOR } - ; - simple_selector - : element_name hcap_0toN { - result = if val[1].nil? - val.first - else - Node.new(:CONDITIONAL_SELECTOR, [val.first, val[1]]) - end - } - | function - | function pseudo { - result = Node.new(:CONDITIONAL_SELECTOR, val) - } - | function attrib { - result = Node.new(:CONDITIONAL_SELECTOR, val) - } - | hcap_1toN { - result = Node.new(:CONDITIONAL_SELECTOR, - [Node.new(:ELEMENT_NAME, ['*']), val.first] - ) - } - ; - prefixless_combinator_selector - : combinator simple_selector_1toN { - result = Node.new(val.first, [nil, val.last]) - } - ; - simple_selector_1toN - : simple_selector combinator simple_selector_1toN { - result = Node.new(val[1], [val.first, val.last]) - } - | simple_selector S simple_selector_1toN { - result = Node.new(:DESCENDANT_SELECTOR, [val.first, val.last]) - } - | simple_selector - ; - class - : '.' IDENT { result = Node.new(:CLASS_CONDITION, [val[1]]) } - ; - element_name - : namespaced_ident - | '*' { result = Node.new(:ELEMENT_NAME, val) } - ; - namespaced_ident - : namespace '|' IDENT { - result = Node.new(:ELEMENT_NAME, - [[val.first, val.last].compact.join(':')] - ) - } - | IDENT { - name = @namespaces.key?('xmlns') ? "xmlns:#{val.first}" : val.first - result = Node.new(:ELEMENT_NAME, [name]) - } - ; - namespace - : IDENT { result = val[0] } - | - ; - attrib - : LSQUARE attrib_name attrib_val_0or1 RSQUARE { - result = Node.new(:ATTRIBUTE_CONDITION, - [val[1]] + (val[2] || []) - ) - } - | LSQUARE function attrib_val_0or1 RSQUARE { - result = Node.new(:ATTRIBUTE_CONDITION, - [val[1]] + (val[2] || []) - ) - } - | LSQUARE NUMBER RSQUARE { - # Non standard, but hpricot supports it. - result = Node.new(:PSEUDO_CLASS, - [Node.new(:FUNCTION, ['nth-child(', val[1]])] - ) - } - ; - attrib_name - : namespace '|' IDENT { - result = Node.new(:ELEMENT_NAME, - [[val.first, val.last].compact.join(':')] - ) - } - | IDENT { - # Default namespace is not applied to attributes. - # So we don't add prefix "xmlns:" as in namespaced_ident. - result = Node.new(:ELEMENT_NAME, [val.first]) - } - ; - function - : FUNCTION RPAREN { - result = Node.new(:FUNCTION, [val.first.strip]) - } - | FUNCTION expr RPAREN { - result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten) - } - | FUNCTION nth RPAREN { - result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten) - } - | NOT expr RPAREN { - result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten) - } - | HAS selector RPAREN { - result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten) - } - ; - expr - : NUMBER COMMA expr { result = [val.first, val.last] } - | STRING COMMA expr { result = [val.first, val.last] } - | IDENT COMMA expr { result = [val.first, val.last] } - | NUMBER - | STRING - | IDENT # even, odd - { - case val[0] - when 'even' - result = Node.new(:NTH, ['2','n','+','0']) - when 'odd' - result = Node.new(:NTH, ['2','n','+','1']) - when 'n' - result = Node.new(:NTH, ['1','n','+','0']) - else - # This is not CSS standard. It allows us to support this: - # assert_xpath("//a[foo(., @href)]", @parser.parse('a:foo(@href)')) - # assert_xpath("//a[foo(., @a, b)]", @parser.parse('a:foo(@a, b)')) - # assert_xpath("//a[foo(., a, 10)]", @parser.parse('a:foo(a, 10)')) - result = val - end - } - ; - nth - : NUMBER IDENT PLUS NUMBER # 5n+3 -5n+3 - { - if val[1] == 'n' - result = Node.new(:NTH, val) - else - raise Racc::ParseError, "parse error on IDENT '#{val[1]}'" - end - } - | IDENT PLUS NUMBER { # n+3, -n+3 - if val[0] == 'n' - val.unshift("1") - result = Node.new(:NTH, val) - elsif val[0] == '-n' - val[0] = 'n' - val.unshift("-1") - result = Node.new(:NTH, val) - else - raise Racc::ParseError, "parse error on IDENT '#{val[1]}'" - end - } - | NUMBER IDENT { # 5n, -5n, 10n-1 - n = val[1] - if n[0, 2] == 'n-' - val[1] = 'n' - val << "-" - # b is contained in n as n is the string "n-b" - val << n[2, n.size] - result = Node.new(:NTH, val) - elsif n == 'n' - val << "+" - val << "0" - result = Node.new(:NTH, val) - else - raise Racc::ParseError, "parse error on IDENT '#{val[1]}'" - end - } - ; - pseudo - : ':' function { - result = Node.new(:PSEUDO_CLASS, [val[1]]) - } - | ':' IDENT { result = Node.new(:PSEUDO_CLASS, [val[1]]) } - ; - hcap_0toN - : hcap_1toN - | - ; - hcap_1toN - : attribute_id hcap_1toN { - result = Node.new(:COMBINATOR, val) - } - | class hcap_1toN { - result = Node.new(:COMBINATOR, val) - } - | attrib hcap_1toN { - result = Node.new(:COMBINATOR, val) - } - | pseudo hcap_1toN { - result = Node.new(:COMBINATOR, val) - } - | negation hcap_1toN { - result = Node.new(:COMBINATOR, val) - } - | attribute_id - | class - | attrib - | pseudo - | negation - ; - attribute_id - : HASH { result = Node.new(:ID, val) } - ; - attrib_val_0or1 - : eql_incl_dash IDENT { result = [val.first, val[1]] } - | eql_incl_dash STRING { result = [val.first, val[1]] } - | - ; - eql_incl_dash - : EQUAL { result = :equal } - | PREFIXMATCH { result = :prefix_match } - | SUFFIXMATCH { result = :suffix_match } - | SUBSTRINGMATCH { result = :substring_match } - | NOT_EQUAL { result = :not_equal } - | INCLUDES { result = :includes } - | DASHMATCH { result = :dash_match } - ; - negation - : NOT negation_arg RPAREN { - result = Node.new(:NOT, [val[1]]) - } - ; - negation_arg - : element_name - | element_name hcap_1toN - | hcap_1toN - ; - optional_S - : S - | - ; -end - ----- header - -require 'nokogiri/css/parser_extras' diff --git a/test/racc/assets/nonass.y b/test/racc/assets/nonass.y deleted file mode 100644 index b9a35a2626..0000000000 --- a/test/racc/assets/nonass.y +++ /dev/null @@ -1,41 +0,0 @@ -# -# nonassoc test -# - -class P - -preclow - nonassoc N - left P -prechigh - -rule - -target : exp -exp : exp N exp - | exp P exp - | T - -end - ----- inner - - def parse - @src = [[:T,'T'], [:N,'N'], [:T,'T'], [:N,'N'], [:T,'T']] - do_parse - end - - def next_token - @src.shift - end - ----- footer - -begin - P.new.parse -rescue ParseError - exit 0 -else - $stderr.puts 'parse error not raised: nonassoc not work' - exit 1 -end diff --git a/test/racc/assets/normal.y b/test/racc/assets/normal.y deleted file mode 100644 index 96ae352c82..0000000000 --- a/test/racc/assets/normal.y +++ /dev/null @@ -1,27 +0,0 @@ - -class Testp - - convert - A '2' - B '3' - end - - prechigh - left B - preclow - -rule - -/* comment */ - target: A B C nonterminal { action "string" == /regexp/o - 1 /= 3 } - ; # comment - - nonterminal: A '+' B = A; - -/* end */ -end - ----- driver - - # driver is old name diff --git a/test/racc/assets/norule.y b/test/racc/assets/norule.y deleted file mode 100644 index e50a4b3472..0000000000 --- a/test/racc/assets/norule.y +++ /dev/null @@ -1,4 +0,0 @@ - -class A -rule -end diff --git a/test/racc/assets/nullbug1.y b/test/racc/assets/nullbug1.y deleted file mode 100644 index 4b267ba0ea..0000000000 --- a/test/racc/assets/nullbug1.y +++ /dev/null @@ -1,25 +0,0 @@ -# -# number of conflicts must be ZERO. -# - -class T - -rule - -targ : dummy - | a b c - -dummy : V v - -V : E e - | F f - | - ; - -E : - ; - -F : - ; - -end diff --git a/test/racc/assets/nullbug2.y b/test/racc/assets/nullbug2.y deleted file mode 100644 index 0c1d43bf3e..0000000000 --- a/test/racc/assets/nullbug2.y +++ /dev/null @@ -1,15 +0,0 @@ -# -# number of conflicts must be ZERO. -# - -class A -rule - targ: operation voidhead - | variable - - voidhead : void B - void: - - operation: A - variable : A -end diff --git a/test/racc/assets/opal.y b/test/racc/assets/opal.y deleted file mode 100644 index ae6a5a6bdd..0000000000 --- a/test/racc/assets/opal.y +++ /dev/null @@ -1,1807 +0,0 @@ -# Copyright (C) 2013 by Adam Beynon -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. - -class Opal::Parser - -token kCLASS kMODULE kDEF kUNDEF kBEGIN kRESCUE kENSURE kEND kIF kUNLESS - kTHEN kELSIF kELSE kCASE kWHEN kWHILE kUNTIL kFOR kBREAK kNEXT - kREDO kRETRY kIN kDO kDO_COND kDO_BLOCK kDO_LAMBDA kRETURN kYIELD kSUPER - kSELF kNIL kTRUE kFALSE kAND kOR kNOT kIF_MOD kUNLESS_MOD kWHILE_MOD - kUNTIL_MOD kRESCUE_MOD kALIAS kDEFINED klBEGIN klEND k__LINE__ - k__FILE__ k__ENCODING__ tIDENTIFIER tFID tGVAR tIVAR tCONSTANT - tLABEL tCVAR tNTH_REF tBACK_REF tSTRING_CONTENT tINTEGER tFLOAT - tREGEXP_END tUPLUS tUMINUS tUMINUS_NUM tPOW tCMP tEQ tEQQ tNEQ tGEQ tLEQ tANDOP - tOROP tMATCH tNMATCH tJSDOT tDOT tDOT2 tDOT3 tAREF tASET tLSHFT tRSHFT - tCOLON2 tCOLON3 tOP_ASGN tASSOC tLPAREN tLPAREN2 tRPAREN tLPAREN_ARG - ARRAY_BEG tRBRACK tLBRACE tLBRACE_ARG tSTAR tSTAR2 tAMPER tAMPER2 - tTILDE tPERCENT tDIVIDE tPLUS tMINUS tLT tGT tPIPE tBANG tCARET - tLCURLY tRCURLY tBACK_REF2 tSYMBEG tSTRING_BEG tXSTRING_BEG tREGEXP_BEG - tWORDS_BEG tAWORDS_BEG tSTRING_DBEG tSTRING_DVAR tSTRING_END tSTRING - tSYMBOL tNL tEH tCOLON tCOMMA tSPACE tSEMI tLAMBDA tLAMBEG - tLBRACK2 tLBRACK tJSLBRACK tDSTAR - -prechigh - right tBANG tTILDE tUPLUS - right tPOW - right tUMINUS_NUM tUMINUS - left tSTAR2 tDIVIDE tPERCENT - left tPLUS tMINUS - left tLSHFT tRSHFT - left tAMPER2 - left tPIPE tCARET - left tGT tGEQ tLT tLEQ - nonassoc tCMP tEQ tEQQ tNEQ tMATCH tNMATCH - left tANDOP - left tOROP - nonassoc tDOT2 tDOT3 - right tEH tCOLON - left kRESCUE_MOD - right tEQL tOP_ASGN - nonassoc kDEFINED - right kNOT - left kOR kAND - nonassoc kIF_MOD kUNLESS_MOD kWHILE_MOD kUNTIL_MOD - nonassoc tLBRACE_ARG - nonassoc tLOWEST -preclow - -rule - - program: top_compstmt - - top_compstmt: top_stmts opt_terms - { - result = new_compstmt val[0] - } - - top_stmts: # none - { - result = new_block - } - | top_stmt - { - result = new_block val[0] - } - | top_stmts terms top_stmt - { - val[0] << val[2] - result = val[0] - } - - top_stmt: stmt - | klBEGIN tLCURLY top_compstmt tRCURLY - { - result = val[2] - } - - bodystmt: compstmt opt_rescue opt_else opt_ensure - { - result = new_body(val[0], val[1], val[2], val[3]) - } - - compstmt: stmts opt_terms - { - result = new_compstmt val[0] - } - - stmts: # none - { - result = new_block - } - | stmt - { - result = new_block val[0] - } - | stmts terms stmt - { - val[0] << val[2] - result = val[0] - } - - stmt: kALIAS fitem - { - lexer.lex_state = :expr_fname - } - fitem - { - result = new_alias(val[0], val[1], val[3]) - } - | kALIAS tGVAR tGVAR - { - result = s(:valias, value(val[1]).to_sym, value(val[2]).to_sym) - } - | kALIAS tGVAR tBACK_REF - | kALIAS tGVAR tNTH_REF - { - result = s(:valias, value(val[1]).to_sym, value(val[2]).to_sym) - } - | kUNDEF undef_list - { - result = val[1] - } - | stmt kIF_MOD expr_value - { - result = new_if(val[1], val[2], val[0], nil) - } - | stmt kUNLESS_MOD expr_value - { - result = new_if(val[1], val[2], nil, val[0]) - } - | stmt kWHILE_MOD expr_value - { - result = new_while(val[1], val[2], val[0]) - } - | stmt kUNTIL_MOD expr_value - { - result = new_until(val[1], val[2], val[0]) - } - | stmt kRESCUE_MOD stmt - { - result = new_rescue_mod(val[1], val[0], val[2]) - } - | klEND tLCURLY compstmt tRCURLY - | lhs tEQL command_call - { - result = new_assign(val[0], val[1], val[2]) - } - | mlhs tEQL command_call - { - result = s(:masgn, val[0], s(:to_ary, val[2])) - } - | var_lhs tOP_ASGN command_call - { - result = new_op_asgn val[1], val[0], val[2] - } - | primary_value tLBRACK2 aref_args tRBRACK tOP_ASGN command_call - | primary_value tJSLBRACK aref_args tRBRACK tOP_ASGN command_call - | primary_value tDOT tIDENTIFIER tOP_ASGN command_call - { - result = s(:op_asgn2, val[0], op_to_setter(val[2]), value(val[3]).to_sym, val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN command_call - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN command_call - | backref tOP_ASGN command_call - | lhs tEQL mrhs - { - result = new_assign val[0], val[1], s(:svalue, val[2]) - } - | mlhs tEQL arg_value - { - result = s(:masgn, val[0], s(:to_ary, val[2])) - } - | mlhs tEQL mrhs - { - result = s(:masgn, val[0], val[2]) - } - | expr - - expr: command_call - | expr kAND expr - { - result = s(:and, val[0], val[2]) - } - | expr kOR expr - { - result = s(:or, val[0], val[2]) - } - | kNOT expr - { - result = new_unary_call(['!', []], val[1]) - } - | tBANG command_call - { - result = new_unary_call(val[0], val[1]) - } - | arg - - expr_value: expr - - command_call: command - | block_command - | kRETURN call_args - { - result = new_return(val[0], val[1]) - } - | kBREAK call_args - { - result = new_break(val[0], val[1]) - } - | kNEXT call_args - { - result = new_next(val[0], val[1]) - } - - block_command: block_call - | block_call tJSDOT operation2 command_args - | block_call tDOT operation2 command_args - | block_call tCOLON2 operation2 command_args - - cmd_brace_block: tLBRACE_ARG opt_block_var compstmt tRCURLY - - command: operation command_args =tLOWEST - { - result = new_call(nil, val[0], val[1]) - } - | operation command_args cmd_brace_block - | primary_value tJSDOT operation2 command_args =tLOWEST - { - result = new_js_call(val[0], val[2], val[3]) - } - | primary_value tJSDOT operation2 command_args cmd_brace_block - | primary_value tDOT operation2 command_args =tLOWEST - { - result = new_call(val[0], val[2], val[3]) - } - | primary_value tDOT operation2 command_args cmd_brace_block - | primary_value tCOLON2 operation2 command_args =tLOWEST - { - result = new_call(val[0], val[2], val[3]) - } - | primary_value tCOLON2 operation2 command_args cmd_brace_block - | kSUPER command_args - { - result = new_super(val[0], val[1]) - } - | kYIELD command_args - { - result = new_yield val[1] - } - - mlhs: mlhs_basic - { - result = val[0] - } - | tLPAREN mlhs_entry tRPAREN - { - result = val[1] - } - - mlhs_entry: mlhs_basic - { - result = val[0] - } - | tLPAREN mlhs_entry tRPAREN - { - result = val[1] - } - - mlhs_basic: mlhs_head - { - result = val[0] - } - | mlhs_head mlhs_item - { - result = val[0] << val[1] - } - | mlhs_head tSTAR mlhs_node - { - result = val[0] << s(:splat, val[2]) - } - | mlhs_head tSTAR mlhs_node tCOMMA mlhs_post - | mlhs_head tSTAR - { - result = val[0] << s(:splat) - } - | mlhs_head tSTAR tCOMMA mlhs_post - | tSTAR mlhs_node - { - result = s(:array, s(:splat, val[1])) - } - | tSTAR - { - result = s(:array, s(:splat)) - } - | tSTAR tCOMMA mlhs_post - - mlhs_item: mlhs_node - { - result = val[0] - } - | tLPAREN mlhs_entry tRPAREN - { - result = val[1] - } - - mlhs_head: mlhs_item tCOMMA - { - result = s(:array, val[0]) - } - | mlhs_head mlhs_item tCOMMA - { - result = val[0] << val[1] - } - - mlhs_post: mlhs_item - | mlhs_post tCOMMA mlhs_item - - mlhs_node: variable - { - result = new_assignable val[0] - } - | primary_value tLBRACK2 aref_args tRBRACK - { - args = val[2] ? val[2] : [] - result = s(:attrasgn, val[0], :[]=, s(:arglist, *args)) - } - | primary_value tDOT tIDENTIFIER - { - result = new_call val[0], val[2], [] - } - | primary_value tCOLON2 tIDENTIFIER - | primary_value tDOT tCONSTANT - | primary_value tCOLON2 tCONSTANT - | tCOLON3 tCONSTANT - | backref - - lhs: variable - { - result = new_assignable val[0] - } - | primary_value tJSLBRACK aref_args tRBRACK - { - result = new_js_attrasgn(val[0], val[2]) - } - | primary_value tLBRACK2 aref_args tRBRACK - { - result = new_attrasgn(val[0], :[]=, val[2]) - } - | primary_value tDOT tIDENTIFIER - { - result = new_attrasgn(val[0], op_to_setter(val[2])) - } - | primary_value tCOLON2 tIDENTIFIER - { - result = new_attrasgn(val[0], op_to_setter(val[2])) - } - | primary_value tDOT tCONSTANT - { - result = new_attrasgn(val[0], op_to_setter(val[2])) - } - | primary_value tCOLON2 tCONSTANT - { - result = new_colon2(val[0], val[1], val[2]) - } - | tCOLON3 tCONSTANT - { - result = new_colon3(val[0], val[1]) - } - | backref - - cname: tCONSTANT - - cpath: tCOLON3 cname - { - result = new_colon3(val[0], val[1]) - } - | cname - { - result = new_const(val[0]) - } - | primary_value tCOLON2 cname - { - result = new_colon2(val[0], val[1], val[2]) - } - - fname: tIDENTIFIER - | tCONSTANT - | tFID - | op - { - lexer.lex_state = :expr_end - result = val[0] - } - | reswords - { - lexer.lex_state = :expr_end - result = val[0] - } - - fitem: fname - { - result = new_sym(val[0]) - } - | symbol - - undef_list: fitem - { - result = s(:undef, val[0]) - } - | undef_list tCOMMA fitem - { - result = val[0] << val[2] - } - - op: tPIPE | tCARET | tAMPER2 | tCMP | tEQ | tEQQ - | tMATCH | tNMATCH | tGT | tGEQ | tLT | tLEQ - | tNEQ | tLSHFT | tRSHFT | tPLUS | tMINUS | tSTAR2 - | tSTAR | tDIVIDE | tPERCENT | tPOW | tBANG | tTILDE - | tUPLUS | tUMINUS | tAREF | tASET | tBACK_REF2 - - reswords: k__LINE__ | k__FILE__ | klBEGIN | klEND | kALIAS | kAND - | kBEGIN | kBREAK | kCASE | kCLASS | kDEF | kDEFINED - | kDO | kELSE | kELSIF | kEND | kENSURE | kFALSE - | kFOR | kIN | kMODULE | kNEXT | kNIL | kNOT - | kOR | kREDO | kRESCUE | kRETRY | kRETURN | kSELF - | kSUPER | kTHEN | kTRUE | kUNDEF | kWHEN | kYIELD - | kIF_MOD | kUNLESS_MOD | kWHILE_MOD | kUNTIL_MOD | kRESCUE_MOD - | kIF | kWHILE | kUNTIL | kUNLESS - - arg: lhs tEQL arg - { - result = new_assign(val[0], val[1], val[2]) - } - | lhs tEQL arg kRESCUE_MOD arg - { - result = new_assign val[0], val[1], s(:rescue_mod, val[2], val[4]) - } - | var_lhs tOP_ASGN arg - { - result = new_op_asgn val[1], val[0], val[2] - } - | primary_value tLBRACK2 aref_args tRBRACK tOP_ASGN arg - { - result = new_op_asgn1(val[0], val[2], val[4], val[5]) - } - | primary_value tJSLBRACK aref_args tRBRACK tOP_ASGN arg - { - raise ".JS[...] #{val[4]} is not supported" - } - | primary_value tDOT tIDENTIFIER tOP_ASGN arg - { - result = s(:op_asgn2, val[0], op_to_setter(val[2]), value(val[3]).to_sym, val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN arg - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN arg - | primary_value tCOLON2 tCONSTANT tOP_ASGN arg - | tCOLON3 tCONSTANT tOP_ASGN arg - | backref tOP_ASGN arg - | arg tDOT2 arg - { - result = new_irange(val[0], val[1], val[2]) - } - | arg tDOT3 arg - { - result = new_erange(val[0], val[1], val[2]) - } - | arg tPLUS arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tMINUS arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tSTAR2 arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tDIVIDE arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tPERCENT arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tPOW arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | '-@NUM' tINTEGER tPOW arg - { - result = new_call new_binary_call(new_int(val[1]), val[2], val[3]), [:"-@", []], [] - } - | '-@NUM' tFLOAT tPOW arg - { - result = new_call new_binary_call(new_float(val[1]), val[2], val[3]), [:"-@", []], [] - } - | tUPLUS arg - { - result = new_call val[1], [:"+@", []], [] - if [:int, :float].include? val[1].type - result = val[1] - end - } - | tUMINUS arg - { - result = new_call val[1], [:"-@", []], [] - if val[1].type == :int - val[1][1] = -val[1][1] - result = val[1] - elsif val[1].type == :float - val[1][1] = -val[1][1].to_f - result = val[1] - end - } - | arg tPIPE arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tCARET arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tAMPER2 arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tCMP arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tGT arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tGEQ arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tLT arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tLEQ arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tEQ arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tEQQ arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tNEQ arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tMATCH arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tNMATCH arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | tBANG arg - { - result = new_unary_call(val[0], val[1]) - } - | tTILDE arg - { - result = new_unary_call(val[0], val[1]) - } - | arg tLSHFT arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tRSHFT arg - { - result = new_binary_call(val[0], val[1], val[2]) - } - | arg tANDOP arg - { - result = new_and(val[0], val[1], val[2]) - } - | arg tOROP arg - { - result = new_or(val[0], val[1], val[2]) - } - | kDEFINED opt_nl arg - { - result = s(:defined, val[2]) - } - | arg tEH arg tCOLON arg - { - result = new_if(val[1], val[0], val[2], val[4]) - } - | primary - - arg_value: arg - - aref_args: none - { - result = nil - } - | command opt_nl - { - result = [val[0]] - } - | args trailer - { - result = val[0] - } - | args tCOMMA assocs trailer - { - val[0] << s(:hash, *val[2]) - result = val[0] - } - | assocs trailer - { - result = [s(:hash, *val[0])] - } - - paren_args: tLPAREN2 opt_call_args rparen - { - result = val[1] - } - - rparen: opt_nl tRPAREN - - opt_paren_args: none - { - result = [] - } - | paren_args - - opt_call_args: none - { - result = [] - } - | call_args - | args tCOMMA - { - result = val[0] - } - | args tCOMMA assocs tCOMMA - { - result = val[0] - result << new_hash(nil, val[2], nil) - } - | assocs tCOMMA - { - result = [new_hash(nil, val[0], nil)] - } - - call_args: command - { - result = [val[0]] - } - | args opt_block_arg - { - result = val[0] - add_block_pass val[0], val[1] - } - | assocs opt_block_arg - { - result = [new_hash(nil, val[0], nil)] - add_block_pass result, val[1] - } - | args tCOMMA assocs opt_block_arg - { - result = val[0] - result << new_hash(nil, val[2], nil) - result << val[3] if val[3] - } - | block_arg - { - result = [] - add_block_pass result, val[0] - } - - call_args2: arg_value tCOMMA args opt_block_arg - | block_arg - - command_args: { - lexer.cmdarg_push 1 - } - open_args - { - lexer.cmdarg_pop - result = val[1] - } - - open_args: call_args - | tLPAREN_ARG tRPAREN - { - result = nil - } - | tLPAREN_ARG call_args2 tRPAREN - { - result = val[1] - } - - block_arg: tAMPER arg_value - { - result = new_block_pass(val[0], val[1]) - } - - opt_block_arg: tCOMMA block_arg - { - result = val[1] - } - | # none - { - result = nil - } - - args: arg_value - { - result = [val[0]] - } - | tSTAR arg_value - { - result = [new_splat(val[0], val[1])] - } - | args tCOMMA arg_value - { - result = val[0] << val[2] - } - | args tCOMMA tSTAR arg_value - { - result = val[0] << new_splat(val[2], val[3]) - } - - mrhs: args tCOMMA arg_value - { - val[0] << val[2] - result = s(:array, *val[0]) - } - | args tCOMMA tSTAR arg_value - { - val[0] << s(:splat, val[3]) - result = s(:array, *val[0]) - } - | tSTAR arg_value - { - result = s(:splat, val[1]) - } - - primary: literal - | strings - | xstring - | regexp - | words - | awords - | var_ref - | backref - | tFID - | kBEGIN - { - result = lexer.line - } - bodystmt kEND - { - result = s(:begin, val[2]) - } - | tLPAREN_ARG expr opt_nl tRPAREN - { - result = val[1] - } - | tLPAREN compstmt tRPAREN - { - result = new_paren(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = new_colon2(val[0], val[1], val[2]) - } - | tCOLON3 tCONSTANT - { - result = new_colon3(val[0], val[1]) - } - | primary_value tLBRACK2 aref_args tRBRACK - { - result = new_call val[0], [:[], []], val[2] - } - | primary_value tJSLBRACK aref_args tRBRACK - { - result = new_js_call val[0], [:[], []], val[2] - } - | tLBRACK aref_args tRBRACK - { - result = new_array(val[0], val[1], val[2]) - } - | tLBRACE assoc_list tRCURLY - { - result = new_hash(val[0], val[1], val[2]) - } - | kRETURN - { - result = new_return(val[0]) - } - | kYIELD tLPAREN2 call_args tRPAREN - { - result = new_yield val[2] - } - | kYIELD tLPAREN2 tRPAREN - { - result = s(:yield) - } - | kYIELD - { - result = s(:yield) - } - | kDEFINED opt_nl tLPAREN2 expr tRPAREN - { - result = s(:defined, val[3]) - } - | kNOT tLPAREN2 expr tRPAREN - { - result = new_unary_call(['!', []], val[2]) - } - | kNOT tLPAREN2 tRPAREN - { - result = new_unary_call(['!', []], new_nil(val[0])) - } - | operation brace_block - { - result = new_call(nil, val[0], []) - result << val[1] - } - | method_call - | method_call brace_block - { - val[0] << val[1] - result = val[0] - } - | tLAMBDA lambda - { - result = val[1] - } - | kIF expr_value then compstmt if_tail kEND - { - result = new_if(val[0], val[1], val[3], val[4]) - } - | kUNLESS expr_value then compstmt opt_else kEND - { - result = new_if(val[0], val[1], val[4], val[3]) - } - | kWHILE - { - lexer.cond_push 1 - result = lexer.line - } - expr_value do - { - lexer.cond_pop - } - compstmt kEND - { - result = s(:while, val[2], val[5]) - } - | kUNTIL - { - lexer.cond_push 1 - result = lexer.line - } - expr_value do - { - lexer.cond_pop - } - compstmt kEND - { - result = s(:until, val[2], val[5]) - } - | kCASE expr_value opt_terms case_body kEND - { - result = s(:case, val[1], *val[3]) - } - | kCASE opt_terms case_body kEND - { - result = s(:case, nil, *val[2]) - } - | kCASE opt_terms kELSE compstmt kEND - { - result = s(:case, nil, val[3]) - } - | kFOR for_var kIN - { - lexer.cond_push 1 - result = lexer.line - } - expr_value do - { - lexer.cond_pop - } - compstmt kEND - { - result = s(:for, val[4], val[1], val[7]) - } - | kCLASS cpath superclass - { - # ... - } - bodystmt kEND - { - result = new_class val[0], val[1], val[2], val[4], val[5] - } - | kCLASS tLSHFT - { - result = lexer.line - } - expr term - { - # ... - } - bodystmt kEND - { - result = new_sclass(val[0], val[3], val[6], val[7]) - } - | kMODULE - { - result = lexer.line - } - cpath - { - # ... - } - bodystmt kEND - { - result = new_module(val[0], val[2], val[4], val[5]) - } - | kDEF fname - { - push_scope - lexer.lex_state = :expr_endfn - } - f_arglist bodystmt kEND - { - result = new_def(val[0], nil, val[1], val[3], val[4], val[5]) - pop_scope - } - | kDEF singleton dot_or_colon - { - lexer.lex_state = :expr_fname - } - fname - { - push_scope - lexer.lex_state = :expr_endfn - } - f_arglist bodystmt kEND - { - result = new_def(val[0], val[1], val[4], val[6], val[7], val[8]) - pop_scope - } - | kBREAK - { - result = new_break(val[0]) - } - | kNEXT - { - result = s(:next) - } - | kREDO - { - result = s(:redo) - } - | kRETRY - - primary_value: primary - - then: term - | tCOLON - | kTHEN - | term kTHEN - - do: term - | tCOLON - | kDO_COND - - lambda: f_larglist lambda_body - { - result = new_call nil, [:lambda, []], [] - result << new_iter(val[0], val[1]) - } - - f_larglist: tLPAREN2 block_param tRPAREN - { - result = val[1] - } - | tLPAREN2 tRPAREN - { - result = nil - } - | block_param - | none - - lambda_body: tLAMBEG compstmt tRCURLY - { - result = val[1] - } - | kDO_LAMBDA compstmt kEND - { - result = val[1] - } - - if_tail: opt_else - { - result = val[0] - } - | kELSIF expr_value then compstmt if_tail - { - result = new_if(val[0], val[1], val[3], val[4]) - } - - opt_else: none - | kELSE compstmt - { - result = val[1] - } - - f_block_optarg: f_block_opt - { - result = s(:block, val[0]) - } - | f_block_optarg tCOMMA f_block_opt - { - val[0] << val[2] - result = val[0] - } - - f_block_opt: tIDENTIFIER tEQL primary_value - { - result = new_assign(new_assignable(new_ident( - val[0])), val[1], val[2]) - } - - opt_block_var: none - | tPIPE tPIPE - { - result = nil - } - | tOROP - { - result = nil - } - | tPIPE block_param tPIPE - { - result = val[1] - } - - block_args_tail: f_block_arg - { - result = val[0] - } - -opt_block_args_tail: tCOMMA block_args_tail - { - result = val[1] - } - | none - { - nil - } - - block_param: f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg opt_block_args_tail - { - result = new_block_args(val[0], val[2], val[4], val[5]) - } - | f_arg tCOMMA f_block_optarg opt_block_args_tail - { - result = new_block_args(val[0], val[2], nil, val[3]) - } - | f_arg tCOMMA f_rest_arg opt_block_args_tail - { - result = new_block_args(val[0], nil, val[2], val[3]) - } - | f_arg tCOMMA - { - result = new_block_args(val[0], nil, nil, nil) - } - | f_arg opt_block_args_tail - { - result = new_block_args(val[0], nil, nil, val[1]) - } - | f_block_optarg tCOMMA f_rest_arg opt_block_args_tail - { - result = new_block_args(nil, val[0], val[2], val[3]) - } - | f_block_optarg opt_block_args_tail - { - result = new_block_args(nil, val[0], nil, val[1]) - } - | f_rest_arg opt_block_args_tail - { - result = new_block_args(nil, nil, val[0], val[1]) - } - | block_args_tail - { - result = new_block_args(nil, nil, nil, val[0]) - } - - do_block: kDO_BLOCK - { - push_scope :block - result = lexer.line - } - opt_block_var compstmt kEND - { - result = new_iter val[2], val[3] - pop_scope - } - - block_call: command do_block - { - val[0] << val[1] - result = val[0] - } - | block_call tJSDOT operation2 opt_paren_args - | block_call tDOT operation2 opt_paren_args - | block_call tCOLON2 operation2 opt_paren_args - - method_call: operation paren_args - { - result = new_call(nil, val[0], val[1]) - } - | primary_value tDOT operation2 opt_paren_args - { - result = new_call(val[0], val[2], val[3]) - } - | primary_value tJSDOT operation2 opt_paren_args - { - result = new_js_call(val[0], val[2], val[3]) - } - | primary_value tDOT paren_args - { - result = new_call(val[0], [:call, []], val[2]) - } - | primary_value tCOLON2 operation2 paren_args - { - result = new_call(val[0], val[2], val[3]) - } - | primary_value tCOLON2 operation3 - { - result = new_call(val[0], val[2]) - } - | kSUPER paren_args - { - result = new_super(val[0], val[1]) - } - | kSUPER - { - result = new_super(val[0], nil) - } - - brace_block: tLCURLY - { - push_scope :block - result = lexer.line - } - opt_block_var compstmt tRCURLY - { - result = new_iter val[2], val[3] - pop_scope - } - | kDO - { - push_scope :block - result = lexer.line - } - opt_block_var compstmt kEND - { - result = new_iter val[2], val[3] - pop_scope - } - - case_body: kWHEN - { - result = lexer.line - } - args then compstmt cases - { - part = s(:when, s(:array, *val[2]), val[4]) - result = [part] - result.push(*val[5]) if val[5] - } - - cases: opt_else - { - result = [val[0]] - } - | case_body - - opt_rescue: kRESCUE exc_list exc_var then compstmt opt_rescue - { - exc = val[1] || s(:array) - exc << new_assign(val[2], val[2], s(:gvar, '$!'.intern)) if val[2] - result = [s(:resbody, exc, val[4])] - result.push val[5].first if val[5] - } - | # none - { - result = nil - } - - exc_list: arg_value - { - result = s(:array, val[0]) - } - | mrhs - | none - - exc_var: tASSOC lhs - { - result = val[1] - } - | none - { - result = nil - } - - opt_ensure: kENSURE compstmt - { - result = val[1].nil? ? s(:nil) : val[1] - } - | none - - literal: numeric - | symbol - | dsym - - strings: string - { - result = new_str val[0] - } - - string: string1 - | string string1 - { - result = str_append val[0], val[1] - } - - string1: tSTRING_BEG string_contents tSTRING_END - { - result = val[1] - } - | tSTRING - { - result = s(:str, value(val[0])) - } - - xstring: tXSTRING_BEG xstring_contents tSTRING_END - { - result = new_xstr(val[0], val[1], val[2]) - } - - regexp: tREGEXP_BEG xstring_contents tREGEXP_END - { - result = new_regexp val[1], val[2] - } - - words: tWORDS_BEG tSPACE tSTRING_END - { - result = s(:array) - } - | tWORDS_BEG word_list tSTRING_END - { - result = val[1] - } - - word_list: none - { - result = s(:array) - } - | word_list word tSPACE - { - part = val[1] - part = s(:dstr, "", val[1]) if part.type == :evstr - result = val[0] << part - } - - word: string_content - { - result = val[0] - } - | word string_content - { - result = val[0].concat([val[1]]) - } - - awords: tAWORDS_BEG tSPACE tSTRING_END - { - result = s(:array) - } - | tAWORDS_BEG qword_list tSTRING_END - { - result = val[1] - } - - qword_list: none - { - result = s(:array) - } - | qword_list tSTRING_CONTENT tSPACE - { - result = val[0] << s(:str, value(val[1])) - } - - string_contents: none - { - result = nil - } - | string_contents string_content - { - result = str_append val[0], val[1] - } - -xstring_contents: none - { - result = nil - } - | xstring_contents string_content - { - result = str_append val[0], val[1] - } - - string_content: tSTRING_CONTENT - { - result = new_str_content(val[0]) - } - | tSTRING_DVAR - { - result = lexer.strterm - lexer.strterm = nil - } - string_dvar - { - lexer.strterm = val[1] - result = new_evstr(val[2]) - } - | tSTRING_DBEG - { - lexer.cond_push 0 - lexer.cmdarg_push 0 - result = lexer.strterm - lexer.strterm = nil - lexer.lex_state = :expr_beg - } - compstmt tRCURLY - { - lexer.strterm = val[1] - lexer.cond_lexpop - lexer.cmdarg_lexpop - result = new_evstr(val[2]) - } - - string_dvar: tGVAR - { - result = new_gvar(val[0]) - } - | tIVAR - { - result = new_ivar(val[0]) - } - | tCVAR - { - result = new_cvar(val[0]) - } - | backref - - - symbol: tSYMBEG sym - { - result = new_sym(val[1]) - lexer.lex_state = :expr_end - } - | tSYMBOL - { - result = new_sym(val[0]) - } - - sym: fname - | tIVAR - | tGVAR - | tCVAR - - dsym: tSYMBEG xstring_contents tSTRING_END - { - result = new_dsym val[1] - } - - numeric: tINTEGER - { - result = new_int(val[0]) - } - | tFLOAT - { - result = new_float(val[0]) - } - | '-@NUM' tINTEGER =tLOWEST - { - result = negate_num(new_int(val[1])) - } - | '-@NUM' tFLOAT =tLOWEST - { - result = negate_num(new_float(val[1])) - } - | '+@NUM' tINTEGER =tLOWEST - { - result = new_int(val[1]) - } - | '+@NUM' tFLOAT =tLOWEST - { - result = new_float(val[1]) - } - - variable: tIDENTIFIER - { - result = new_ident(val[0]) - } - | tIVAR - { - result = new_ivar(val[0]) - } - | tGVAR - { - result = new_gvar(val[0]) - } - | tCONSTANT - { - result = new_const(val[0]) - } - | tCVAR - { - result = new_cvar(val[0]) - } - | kNIL - { - result = new_nil(val[0]) - } - | kSELF - { - result = new_self(val[0]) - } - | kTRUE - { - result = new_true(val[0]) - } - | kFALSE - { - result = new_false(val[0]) - } - | k__FILE__ - { - result = new___FILE__(val[0]) - } - | k__LINE__ - { - result = new___LINE__(val[0]) - } - - var_ref: variable - { - result = new_var_ref(val[0]) - } - - var_lhs: variable - { - result = new_assignable val[0] - } - - backref: tNTH_REF - { - result = s(:nth_ref, value(val[0])) - } - | tBACK_REF - - superclass: term - { - result = nil - } - | tLT expr_value term - { - result = val[1] - } - | error term - { - result = nil - } - - f_arglist: tLPAREN2 f_args opt_nl tRPAREN - { - result = val[1] - lexer.lex_state = :expr_beg - } - | f_args term - { - result = val[0] - lexer.lex_state = :expr_beg - } - - kwrest_mark: tPOW - | tDSTAR - - f_kwrest: kwrest_mark tIDENTIFIER - { - result = new_kwrestarg(val[1]) - } - | kwrest_mark - { - result = new_kwrestarg() - } - - f_label: tLABEL - { - result = new_sym(val[0]) - } - - f_kw: f_label arg_value - { - result = new_kwoptarg(val[0], val[1]) - } - | f_label - { - result = new_kwarg(val[0]) - } - - f_kwarg: f_kw - { - result = [val[0]] - } - | f_kwarg tCOMMA f_kw - { - result = val[0] - result << val[2] - } - - args_tail: f_kwarg tCOMMA f_kwrest opt_f_block_arg - { - result = new_args_tail(val[0], val[2], val[3]) - } - | f_kwarg opt_f_block_arg - { - result = new_args_tail(val[0], nil, val[1]) - } - | f_kwrest opt_f_block_arg - { - result = new_args_tail(nil, val[0], val[1]) - } - | f_block_arg - { - result = new_args_tail(nil, nil, val[0]) - } - - opt_args_tail: tCOMMA args_tail - { - result = val[1] - } - | # none - { - result = new_args_tail(nil, nil, nil) - } - - f_args: f_arg tCOMMA f_optarg tCOMMA f_rest_arg opt_args_tail - { - result = new_args(val[0], val[2], val[4], val[5]) - } - | f_arg tCOMMA f_optarg opt_args_tail - { - result = new_args(val[0], val[2], nil, val[3]) - } - | f_arg tCOMMA f_rest_arg opt_args_tail - { - result = new_args(val[0], nil, val[2], val[3]) - } - | f_arg opt_args_tail - { - result = new_args(val[0], nil, nil, val[1]) - } - | f_optarg tCOMMA f_rest_arg opt_args_tail - { - result = new_args(nil, val[0], val[2], val[3]) - } - | f_optarg opt_args_tail - { - result = new_args(nil, val[0], nil, val[1]) - } - | f_rest_arg opt_args_tail - { - result = new_args(nil, nil, val[0], val[1]) - } - | args_tail - { - result = new_args(nil, nil, nil, val[0]) - } - | # none - { - result = new_args(nil, nil, nil, nil) - } - - f_norm_arg: f_bad_arg - | tIDENTIFIER - { - result = value(val[0]).to_sym - scope.add_local result - } - - f_bad_arg: tCONSTANT - { - raise 'formal argument cannot be a constant' - } - | tIVAR - { - raise 'formal argument cannot be an instance variable' - } - | tCVAR - { - raise 'formal argument cannot be a class variable' - } - | tGVAR - { - raise 'formal argument cannot be a global variable' - } - - f_arg_item: f_norm_arg - { - result = val[0] - } - | tLPAREN f_margs tRPAREN - { - result = val[1] - } - - for_var: lhs - | mlhs - - f_marg: f_norm_arg - { - result = s(:lasgn, val[0]) - } - | tLPAREN f_margs tRPAREN - - f_marg_list: f_marg - { - result = s(:array, val[0]) - } - | f_marg_list tCOMMA f_marg - { - val[0] << val[2] - result = val[0] - } - - f_margs: f_marg_list - | f_marg_list tCOMMA tSTAR f_norm_arg - | f_marg_list tCOMMA tSTAR - | tSTAR f_norm_arg - | tSTAR - - f_arg: f_arg_item - { - result = [val[0]] - } - | f_arg tCOMMA f_arg_item - { - val[0] << val[2] - result = val[0] - } - - f_opt: tIDENTIFIER tEQL arg_value - { - result = new_assign(new_assignable(new_ident(val[0])), val[1], val[2]) - } - - f_optarg: f_opt - { - result = s(:block, val[0]) - } - | f_optarg tCOMMA f_opt - { - result = val[0] - val[0] << val[2] - } - - restarg_mark: tSTAR2 - | tSTAR - - f_rest_arg: restarg_mark tIDENTIFIER - { - result = "*#{value(val[1])}".to_sym - } - | restarg_mark - { - result = :"*" - } - - blkarg_mark: tAMPER2 - | tAMPER - - f_block_arg: blkarg_mark tIDENTIFIER - { - result = "&#{value(val[1])}".to_sym - } - - opt_f_block_arg: tCOMMA f_block_arg - { - result = val[1] - } - | # none - { - result = nil - } - - singleton: var_ref - { - result = val[0] - } - | tLPAREN2 expr opt_nl tRPAREN - { - result = val[1] - } - - assoc_list: # none - { - result = [] - } - | assocs trailer - { - result = val[0] - } - - assocs: assoc - { - result = val[0] - } - | assocs tCOMMA assoc - { - result = val[0].push(*val[2]) - } - - assoc: arg_value tASSOC arg_value - { - result = [val[0], val[2]] - } - | tLABEL arg_value - { - result = [new_sym(val[0]), val[1]] - } - - operation: tIDENTIFIER - | tCONSTANT - | tFID - - operation2: tIDENTIFIER - | tCONSTANT - | tFID - | op - - operation3: tIDENTIFIER - | tFID - | op - - dot_or_colon: tDOT - | tCOLON2 - - opt_terms: # none - | terms - - opt_nl: # none - | tNL - - trailer: # none - | tNL - | tCOMMA - - term: tSEMI - | tNL - - terms: term - | terms tSEMI - - none: # none - { - result = nil - } -end - ----- inner diff --git a/test/racc/assets/opt.y b/test/racc/assets/opt.y deleted file mode 100644 index a011953a51..0000000000 --- a/test/racc/assets/opt.y +++ /dev/null @@ -1,123 +0,0 @@ -# -# check options working -# - -class Calcp - - prechigh - left '*' '/' - left '+' '-' - preclow - - convert - NUMBER 'Number' - end - - options no_omit_action_call no_result_var - -rule - - target : exp | /* none */ { 0 } ; - - exp : exp '+' exp { chk(val[0] + val[2]) } - | exp '-' exp { chk(val[0] - val[2]) } - | exp '*' exp { chk(val[0] * val[2]) } - | exp '/' exp { chk(val[0] / val[2]) } - | '(' { $emb = true } exp ')' - { - raise 'must not happen' unless $emb - val[2] - } - | '-' NUMBER { -val[1] } - | NUMBER - ; - -end - -----header - -class Number; end - -----inner - - def parse( src ) - @src = src - do_parse - end - - def next_token - @src.shift - end - - def initialize - @yydebug = true - end - - def chk( i ) - # p i - i - end - -----footer - -$parser = Calcp.new -$test_number = 1 - -def chk( src, ans ) - result = $parser.parse(src) - raise "test #{$test_number} failed" unless result == ans - $test_number += 1 -end - -chk( - [ [Number, 9], - [false, false], - [false, false] ], 9 -) - -chk( - [ [Number, 5], - ['*', nil], - [Number, 1], - ['-', nil], - [Number, 1], - ['*', nil], - [Number, 8], - [false, false], - [false, false] ], -3 -) - -chk( - [ [Number, 5], - ['+', nil], - [Number, 2], - ['-', nil], - [Number, 5], - ['+', nil], - [Number, 2], - ['-', nil], - [Number, 5], - [false, false], - [false, false] ], -1 -) - -chk( - [ ['-', nil], - [Number, 4], - [false, false], - [false, false] ], -4 -) - -chk( - [ [Number, 7], - ['*', nil], - ['(', nil], - [Number, 4], - ['+', nil], - [Number, 3], - [')', nil], - ['-', nil], - [Number, 9], - [false, false], - [false, false] ], 40 -) diff --git a/test/racc/assets/percent.y b/test/racc/assets/percent.y deleted file mode 100644 index 68d63583ca..0000000000 --- a/test/racc/assets/percent.y +++ /dev/null @@ -1,35 +0,0 @@ -class ScannerChecker -rule - target: A - { - i = 7 - i %= 4 - raise 'assert failed' unless i == 3 - tmp = %-This is percent string.- - raise 'assert failed' unless tmp == 'This is percent string.' - a = 5; b = 3 - assert_equal(2,(a%b)) #A - # assert_equal(2,(a %b)) # is %-string - assert_equal(2,(a% b)) #B - assert_equal(2,(a % b)) #C - } -end - ----- inner ---- - - def parse - @q = [[:A, 'A'], [false, '$']] - do_parse - end - - def next_token - @q.shift - end - - def assert_equal( expect, real ) - raise "expect #{expect.inspect} but #{real.inspect}" unless expect == real - end - ----- footer ---- - -parser = ScannerChecker.new.parse diff --git a/test/racc/assets/php_serialization.y b/test/racc/assets/php_serialization.y deleted file mode 100644 index 99f78f2081..0000000000 --- a/test/racc/assets/php_serialization.y +++ /dev/null @@ -1,98 +0,0 @@ -# MIT License -# See https://github.com/divoxx/ruby-php-serialization/blob/master/LICENSE.txt - -class PhpSerialization::Unserializer -rule - - data : null ';' { @object = val[0] } - | bool ';' { @object = val[0] } - | integer ';' { @object = val[0] } - | double ';' { @object = val[0] } - | string ';' { @object = val[0] } - | assoc_array { @object = val[0] } - | object { @object = val[0] } - ; - - null : 'N' { result = nil } - ; - - bool : 'b' ':' NUMBER { result = Integer(val[2]) > 0 } - ; - - integer : 'i' ':' NUMBER { result = Integer(val[2]) } - ; - - double : 'd' ':' NUMBER { result = Float(val[2]) } - ; - - string : 's' ':' NUMBER ':' STRING { result = val[4] } - ; - - object : 'O' ':' NUMBER ':' STRING ':' NUMBER ':' '{' attribute_list '}' - { - if eval("defined?(#{val[4]})") - result = Object.const_get(val[4]).new - - val[9].each do |(attr_name, value)| - # Protected and private attributes will have a \0..\0 prefix - attr_name = attr_name.gsub(/\A\\0[^\\]+\\0/, '') - result.instance_variable_set("@#{attr_name}", value) - end - else - klass_name = val[4].gsub(/^Struct::/, '') - attr_names, values = [], [] - - val[9].each do |(attr_name, value)| - # Protected and private attributes will have a \0..\0 prefix - attr_names << attr_name.gsub(/\A\\0[^\\]+\\0/, '') - values << value - end - - result = Struct.new(klass_name, *attr_names).new(*values) - result.instance_variable_set("@_php_class", klass_name) - end - } - ; - - attribute_list : attribute_list attribute { result = val[0] << val[1] } - | { result = [] } - ; - - attribute : data data { result = val } - ; - - assoc_array : 'a' ':' NUMBER ':' '{' attribute_list '}' - { - # Checks if the keys are a sequence of integers - idx = -1 - arr = val[5].all? { |(k,v)| k == (idx += 1) } - - if arr - result = val[5].map { |(k,v)| v } - else - result = Hash[val[5]] - end - } - ; - -end - ----- header ---- -require 'php_serialization/tokenizer' - ----- inner ---- - def initialize(tokenizer_klass = Tokenizer) - @tokenizer_klass = tokenizer_klass - end - - def run(string) - @tokenizer = @tokenizer_klass.new(string) - yyparse(@tokenizer, :each) - return @object - ensure - @tokenizer = nil - end - - def next_token - @tokenizer.next_token - end diff --git a/test/racc/assets/recv.y b/test/racc/assets/recv.y deleted file mode 100644 index b6e849dda9..0000000000 --- a/test/racc/assets/recv.y +++ /dev/null @@ -1,97 +0,0 @@ -# s/r 5, r/r 10 -class A -rule - - content: RecvH received - ; - - datetime: day - ; - - msgid: '<' spec '>'; - - day: - | ATOM ',' - ; - - received: recvitem_list recvdatetime - ; - - recvitem_list: - | recvitem_list recvitem - ; - - recvitem: by | via | with | for ; - - by: - | BY domain - ; - - via: - | VIA ATOM - ; - - with: WITH ATOM - ; - - for: - | FOR addr - ; - - recvdatetime: - | ';' datetime - ; - - addr: mbox | group ; - - mboxes: mbox - | mboxes ',' mbox - ; - - mbox: spec - | routeaddr - | phrase routeaddr - ; - - group: phrase ':' mboxes ';' - ; - - routeaddr: '<' route spec '>' - | '<' spec '>' - ; - - route: at_domains ':' ; - - at_domains: '@' domain - | at_domains ',' '@' domain - ; - - spec: local '@' domain - | local - ; - - local: word - | local '.' word - ; - - domain: domword - | domain '.' domword - ; - - domword: atom - | DOMLIT - | DIGIT - ; - - phrase: word - | phrase word - ; - - word: atom - | QUOTED - | DIGIT - ; - - atom: ATOM | FROM | BY | VIA | WITH | ID | FOR ; - -end diff --git a/test/racc/assets/riml.y b/test/racc/assets/riml.y deleted file mode 100644 index 1d99b0fdb8..0000000000 --- a/test/racc/assets/riml.y +++ /dev/null @@ -1,665 +0,0 @@ -# Copyright (c) 2012-2014 by Luke Gruber -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be included -# in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -class Riml::Parser - -token IF ELSE ELSEIF THEN UNLESS END -token WHILE UNTIL BREAK CONTINUE -token TRY CATCH FINALLY -token FOR IN -token DEF DEF_BANG SPLAT_PARAM SPLAT_ARG CALL BUILTIN_COMMAND # such as echo "hi" -token CLASS NEW DEFM DEFM_BANG SUPER -token RIML_FILE_COMMAND RIML_CLASS_COMMAND -token RETURN -token NEWLINE -token NUMBER -token STRING_D STRING_S # single- and double-quoted -token EX_LITERAL -token REGEXP -token TRUE FALSE -token LET UNLET UNLET_BANG IDENTIFIER -token DICT_VAL # like dict.key, 'key' is a DICT_VAL -token SCOPE_MODIFIER SCOPE_MODIFIER_LITERAL SPECIAL_VAR_PREFIX -token FINISH - -prechigh - right '!' - left '*' '/' '%' - left '+' '-' '.' - left '>' '>#' '>?' '<' '<#' '<?' '>=' '>=#' '>=?' '<=' '<=#' '<=?' - left '==' '==?' '==#' '=~' '=~?' '=~#' '!~' '!~?' '!~#' '!=' '!=?' '!=#' - left IS ISNOT - left '&&' - left '||' - right '?' - right '=' '+=' '-=' '.=' - left ',' - left IF UNLESS -preclow - -# All rules -rule - - Root: - /* nothing */ { result = make_node(val) { |_| Riml::Nodes.new([]) } } - | Terminator { result = make_node(val) { |_| Riml::Nodes.new([]) } } - | Statements { result = val[0] } - ; - - # any list of expressions - Statements: - Statement { result = make_node(val) { |v| Riml::Nodes.new([ v[0] ]) } } - | Statements Terminator Statement { result = val[0] << val[2] } - | Statements Terminator { result = val[0] } - | Terminator Statements { result = make_node(val) { |v| Riml::Nodes.new(v[1]) } } - ; - - # All types of expressions in Riml - Statement: - ExplicitCall { result = val[0] } - | Def { result = val[0] } - | Return { result = val[0] } - | UnletVariable { result = val[0] } - | ExLiteral { result = val[0] } - | For { result = val[0] } - | While { result = val[0] } - | Until { result = val[0] } - | Try { result = val[0] } - | ClassDefinition { result = val[0] } - | LoopKeyword { result = val[0] } - | EndScript { result = val[0] } - | RimlFileCommand { result = val[0] } - | RimlClassCommand { result = val[0] } - | MultiAssign { result = val[0] } - | If { result = val[0] } - | Unless { result = val[0] } - | Expression { result = val[0] } - ; - - Expression: - ExpressionWithoutDictLiteral { result = val[0] } - | Dictionary { result = val[0] } - | Dictionary DictGetWithDotLiteral { result = make_node(val) { |v| Riml::DictGetDotNode.new(v[0], v[1]) } } - | BinaryOperator { result = val[0] } - | Ternary { result = val[0] } - | Assign { result = val[0] } - | Super { result = val[0] } - | '(' Expression ')' { result = make_node(val) { |v| Riml::WrapInParensNode.new(v[1]) } } - ; - - ExpressionWithoutDictLiteral: - UnaryOperator { result = val[0] } - | DictGet { result = val[0] } - | ListOrDictGet { result = val[0] } - | AllVariableRetrieval { result = val[0] } - | LiteralWithoutDictLiteral { result = val[0] } - | Call { result = val[0] } - | ObjectInstantiation { result = val[0] } - | '(' ExpressionWithoutDictLiteral ')' { result = make_node(val) { |v| Riml::WrapInParensNode.new(v[1]) } } - ; - - # for inside curly-brace variable names - PossibleStringValue: - String { result = val[0] } - | DictGet { result = val[0] } - | ListOrDictGet { result = val[0] } - | AllVariableRetrieval { result = val[0] } - | BinaryOperator { result = val[0] } - | Ternary { result = val[0] } - | Call { result = val[0] } - ; - - Terminator: - NEWLINE { result = nil } - | ';' { result = nil } - ; - - LiteralWithoutDictLiteral: - Number { result = val[0] } - | String { result = val[0] } - | Regexp { result = val[0] } - | List { result = val[0] } - | ScopeModifierLiteral { result = val[0] } - | TRUE { result = make_node(val) { |_| Riml::TrueNode.new } } - | FALSE { result = make_node(val) { |_| Riml::FalseNode.new } } - ; - - Number: - NUMBER { result = make_node(val) { |v| Riml::NumberNode.new(v[0]) } } - ; - - String: - STRING_S { result = make_node(val) { |v| Riml::StringNode.new(v[0], :s) } } - | STRING_D { result = make_node(val) { |v| Riml::StringNode.new(v[0], :d) } } - | String STRING_S { result = make_node(val) { |v| Riml::StringLiteralConcatNode.new(v[0], Riml::StringNode.new(v[1], :s)) } } - | String STRING_D { result = make_node(val) { |v| Riml::StringLiteralConcatNode.new(v[0], Riml::StringNode.new(v[1], :d)) } } - ; - - Regexp: - REGEXP { result = make_node(val) { |v| Riml::RegexpNode.new(v[0]) } } - ; - - ScopeModifierLiteral: - SCOPE_MODIFIER_LITERAL { result = make_node(val) { |v| Riml::ScopeModifierLiteralNode.new(v[0]) } } - ; - - List: - ListLiteral { result = make_node(val) { |v| Riml::ListNode.new(v[0]) } } - ; - - ListUnpack: - '[' ListItems ';' Expression ']' { result = make_node(val) { |v| Riml::ListUnpackNode.new(v[1] << v[3]) } } - ; - - ListLiteral: - '[' ListItems ']' { result = val[1] } - | '[' ListItems ',' ']' { result = val[1] } - ; - - ListItems: - /* nothing */ { result = [] } - | Expression { result = [val[0]] } - | ListItems ',' Expression { result = val[0] << val[2] } - ; - - Dictionary: - DictionaryLiteral { result = make_node(val) { |v| Riml::DictionaryNode.new(v[0]) } } - ; - - # {'key': 'value', 'key2': 'value2'} - # Save as [['key', 'value'], ['key2', 'value2']] because ruby-1.8.7 offers - # no guarantee for key-value pair ordering. - DictionaryLiteral: - '{' DictItems '}' { result = val[1] } - | '{' DictItems ',' '}' { result = val[1] } - ; - - # [[key, value], [key, value]] - DictItems: - /* nothing */ { result = [] } - | DictItem { result = val } - | DictItems ',' DictItem { result = val[0] << val[2] } - ; - - # [key, value] - DictItem: - Expression ':' Expression { result = [val[0], val[2]] } - ; - - DictGet: - AllVariableRetrieval DictGetWithDot { result = make_node(val) { |v| Riml::DictGetDotNode.new(v[0], v[1]) } } - | ListOrDictGet DictGetWithDot { result = make_node(val) { |v| Riml::DictGetDotNode.new(v[0], v[1]) } } - | Call DictGetWithDot { result = make_node(val) { |v| Riml::DictGetDotNode.new(v[0], v[1]) } } - | '(' Expression ')' DictGetWithDot { result = make_node(val) { |v| Riml::DictGetDotNode.new(Riml::WrapInParensNode.new(v[1]), v[3]) } } - ; - - ListOrDictGet: - ExpressionWithoutDictLiteral ListOrDictGetWithBrackets { result = make_node(val) { |v| Riml::ListOrDictGetNode.new(v[0], v[1]) } } - | '(' Expression ')' ListOrDictGetWithBrackets { result = make_node(val) { |v| Riml::ListOrDictGetNode.new(Riml::WrapInParensNode.new(v[1]), v[3]) } } - ; - - ListOrDictGetAssign: - ExpressionWithoutDictLiteral ListOrDictGetWithBrackets { result = make_node(val) { |v| Riml::ListOrDictGetNode.new(v[0], v[1]) } } - ; - - ListOrDictGetWithBrackets: - '[' Expression ']' { result = [val[1]] } - | '[' SubList ']' { result = [val[1]] } - | ListOrDictGetWithBrackets '[' Expression ']' { result = val[0] << val[2] } - | ListOrDictGetWithBrackets '[' SubList ']' { result = val[0] << val[2] } - ; - - SubList: - Expression ':' Expression { result = make_node(val) { |v| Riml::SublistNode.new([v[0], Riml::LiteralNode.new(' : '), v[2]]) } } - | Expression ':' { result = make_node(val) { |v| Riml::SublistNode.new([v[0], Riml::LiteralNode.new(' :')]) } } - | ':' Expression { result = make_node(val) { |v| Riml::SublistNode.new([Riml::LiteralNode.new(': '), v[1]]) } } - | ':' { result = make_node(val) { |_| Riml::SublistNode.new([Riml::LiteralNode.new(':')]) } } - ; - - DictGetWithDot: - DICT_VAL { result = [val[0]] } - | DictGetWithDot DICT_VAL { result = val[0] << val[1] } - ; - - DictGetWithDotLiteral: - '.' IDENTIFIER { result = [val[1]] } - | DictGetWithDotLiteral DICT_VAL { result = val[0] << val[1] } - ; - - Call: - Scope DefCallIdentifier '(' ArgList ')' { result = make_node(val) { |v| Riml::CallNode.new(v[0], v[1], v[3]) } } - | DictGet '(' ArgList ')' { result = make_node(val) { |v| Riml::CallNode.new(nil, v[0], v[2]) } } - | BUILTIN_COMMAND '(' ArgList ')' { result = make_node(val) { |v| Riml::CallNode.new(nil, v[0], v[2]) } } - | BUILTIN_COMMAND ArgListWithoutNothing { result = make_node(val) { |v| Riml::CallNode.new(nil, v[0], v[1]) } } - | BUILTIN_COMMAND NEWLINE { result = make_node(val) { |v| Riml::CallNode.new(nil, v[0], []) } } - | CALL '(' ArgList ')' { result = make_node(val) { |v| Riml::ExplicitCallNode.new(nil, nil, v[2]) } } - ; - - ObjectInstantiationCall: - Scope DefCallIdentifier '(' ArgList ')' { result = make_node(val) { |v| Riml::CallNode.new(v[0], v[1], v[3]) } } - | Scope DefCallIdentifier { result = make_node(val) { |v| Riml::CallNode.new(v[0], v[1], []) } } - ; - - RimlFileCommand: - RIML_FILE_COMMAND '(' ArgList ')' { result = make_node(val) { |v| Riml::RimlFileCommandNode.new(nil, v[0], v[2]) } } - | RIML_FILE_COMMAND ArgList { result = make_node(val) { |v| Riml::RimlFileCommandNode.new(nil, v[0], v[1]) } } - ; - - RimlClassCommand: - RIML_CLASS_COMMAND '(' ClassArgList ')' { result = make_node(val) { |v| Riml::RimlClassCommandNode.new(nil, v[0], v[2]) } } - | RIML_CLASS_COMMAND ClassArgList { result = make_node(val) { |v| Riml::RimlClassCommandNode.new(nil, v[0], v[1]) } } - ; - - ClassArgList: - Scope IDENTIFIER { result = ["#{val[0]}#{val[1]}"] } - | String { result = val } - | ClassArgList ',' Scope IDENTIFIER { result = val[0].concat ["#{val[2]}#{val[3]}"] } - ; - - ExplicitCall: - CALL Scope DefCallIdentifier '(' ArgList ')' { result = make_node(val) { |v| Riml::ExplicitCallNode.new(v[1], v[2], v[4]) } } - | CALL DictGet '(' ArgList ')' { result = make_node(val) { |v| Riml::ExplicitCallNode.new(nil, v[1], v[3]) } } - ; - - Scope: - SCOPE_MODIFIER { result = val[0] } - | /* nothing */ { result = nil } - ; - - # [SID, scope_modifier] - SIDAndScope: - Scope { result = [ nil, val[0] ] } - | '<' IDENTIFIER '>' Scope { result = [ make_node(val) { |v| Riml::SIDNode.new(v[1]) }, val[3] ] } - ; - - ArgList: - /* nothing */ { result = [] } - | ArgListWithoutNothingWithSplat { result = val[0] } - ; - - ArgListWithSplat: - /* nothing */ { result = [] } - | ArgListWithoutNothingWithSplat { result = val[0] } - ; - - ArgListWithoutNothingWithSplat: - Expression { result = val } - | SPLAT_ARG Expression { result = [ make_node(val) { |v| Riml::SplatNode.new(v[1]) } ] } - | ArgListWithoutNothingWithSplat "," Expression { result = val[0] << val[2] } - | ArgListWithoutNothingWithSplat "," SPLAT_ARG Expression { result = val[0] << make_node(val) { |v| Riml::SplatNode.new(v[3]) } } - ; - - ArgListWithoutNothing: - Expression { result = val } - | ArgListWithoutNothing "," Expression { result = val[0] << val[2] } - ; - - BinaryOperator: - Expression '||' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '&&' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - - | Expression '==' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '==#' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '==?' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - - # added by riml - | Expression '===' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - - | Expression '!=' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '!=#' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '!=?' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - - | Expression '=~' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '=~#' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '=~?' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - - | Expression '!~' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '!~#' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '!~?' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - - | Expression '>' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '>#' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '>?' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - - | Expression '>=' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '>=#' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '>=?' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - - | Expression '<' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '<#' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '<?' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - - | Expression '<=' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '<=#' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '<=?' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - - | Expression '+' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '-' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '*' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '/' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '.' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression '%' Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - - | Expression IS Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - | Expression ISNOT Expression { result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } } - ; - - UnaryOperator: - '!' Expression { result = make_node(val) { |v| Riml::UnaryOperatorNode.new(val[0], [val[1]]) } } - | '+' Expression { result = make_node(val) { |v| Riml::UnaryOperatorNode.new(val[0], [val[1]]) } } - | '-' Expression { result = make_node(val) { |v| Riml::UnaryOperatorNode.new(val[0], [val[1]]) } } - ; - - # ['=', LHS, RHS] - Assign: - LET AssignExpression { result = make_node(val) { |v| Riml::AssignNode.new(v[1][0], v[1][1], v[1][2]) } } - | AssignExpression { result = make_node(val) { |v| Riml::AssignNode.new(v[0][0], v[0][1], v[0][2]) } } - ; - - MultiAssign: - Assign ',' Assign { result = make_node(val) { |v| Riml::MultiAssignNode.new([v[0], v[2]]) } } - | MultiAssign ',' Assign { val[0].assigns << val[2]; result = val[0] } - ; - - # ['=', AssignLHS, Expression] - AssignExpression: - AssignLHS '=' Expression { result = [val[1], val[0], val[2]] } - | AssignLHS '+=' Expression { result = [val[1], val[0], val[2]] } - | AssignLHS '-=' Expression { result = [val[1], val[0], val[2]] } - | AssignLHS '.=' Expression { result = [val[1], val[0], val[2]] } - ; - - AssignLHS: - AllVariableRetrieval { result = val[0] } - | List { result = val[0] } - | ListUnpack { result = val[0] } - | DictGet { result = val[0] } - | ListOrDictGetAssign { result = val[0] } - ; - - # retrieving the value of a variable - VariableRetrieval: - SimpleVariableRetrieval { result = val[0] } - | SPECIAL_VAR_PREFIX IDENTIFIER { result = make_node(val) { |v| Riml::GetSpecialVariableNode.new(v[0], v[1]) } } - | ScopeModifierLiteral ListOrDictGetWithBrackets { result = make_node(val) { |v| Riml::GetVariableByScopeAndDictNameNode.new(v[0], v[1]) } } - ; - - SimpleVariableRetrieval: - Scope IDENTIFIER { result = make_node(val) { |v| Riml::GetVariableNode.new(v[0], v[1]) } } - ; - - AllVariableRetrieval: - VariableRetrieval { result = val[0] } - | Scope CurlyBraceName { result = make_node(val) { |v| Riml::GetCurlyBraceNameNode.new(v[0], v[1]) } } - ; - - UnletVariable: - UNLET VariableRetrieval { result = make_node(val) { |v| Riml::UnletVariableNode.new('!', [ v[1] ]) } } - | UNLET_BANG VariableRetrieval { result = make_node(val) { |v| Riml::UnletVariableNode.new('!', [ v[1] ]) } } - | UnletVariable VariableRetrieval { result = val[0] << val[1] } - ; - - CurlyBraceName: - CurlyBraceVarPart { result = make_node(val) { |v| Riml::CurlyBraceVariable.new([ v[0] ]) } } - | IDENTIFIER CurlyBraceName { result = make_node(val) { |v| Riml::CurlyBraceVariable.new([ Riml::CurlyBracePart.new(v[0]), v[1] ]) } } - | CurlyBraceName IDENTIFIER { result = val[0] << make_node(val) { |v| Riml::CurlyBracePart.new(v[1]) } } - | CurlyBraceName CurlyBraceVarPart { result = val[0] << val[1] } - ; - - CurlyBraceVarPart: - '{' PossibleStringValue '}' { result = make_node(val) { |v| Riml::CurlyBracePart.new(v[1]) } } - | '{' PossibleStringValue CurlyBraceVarPart '}' { result = make_node(val) { |v| Riml::CurlyBracePart.new([v[1], v[2]]) } } - | '{' CurlyBraceVarPart PossibleStringValue '}' { result = make_node(val) { |v| Riml::CurlyBracePart.new([v[1], v[2]]) } } - ; - - # Method definition - # [SID, scope_modifier, name, parameters, keyword, expressions] - Def: - FunctionType SIDAndScope DefCallIdentifier DefKeywords Block END { result = make_node(val) { |v| Riml.const_get(val[0]).new('!', v[1][0], v[1][1], v[2], [], v[3], v[4]) } } - | FunctionType SIDAndScope DefCallIdentifier '(' ParamList ')' DefKeywords Block END { result = make_node(val) { |v| Riml.const_get(val[0]).new('!', v[1][0], v[1][1], v[2], v[4], v[6], v[7]) } } - | FunctionType SIDAndScope DefCallIdentifier '(' SPLAT_PARAM ')' DefKeywords Block END { result = make_node(val) { |v| Riml.const_get(val[0]).new('!', v[1][0], v[1][1], v[2], [v[4]], v[6], v[7]) } } - | FunctionType SIDAndScope DefCallIdentifier '(' ParamList ',' SPLAT_PARAM ')' DefKeywords Block END { result = make_node(val) { |v| Riml.const_get(val[0]).new('!', v[1][0], v[1][1], v[2], v[4] << v[6], v[8], v[9]) } } - ; - - FunctionType: - DEF { result = "DefNode" } - | DEF_BANG { result = "DefNode" } - | DEFM { result = "DefMethodNode" } - ; - - DefCallIdentifier: - # use '' for first argument instead of nil in order to avoid a double scope-modifier - CurlyBraceName { result = make_node(val) { |v| Riml::GetCurlyBraceNameNode.new('', v[0]) } } - | IDENTIFIER { result = val[0] } - ; - - # Example: 'range', 'dict' or 'abort' after function definition - DefKeywords: - IDENTIFIER { result = [val[0]] } - | DefKeywords IDENTIFIER { result = val[0] << val[1] } - | /* nothing */ { result = nil } - ; - - ParamList: - /* nothing */ { result = [] } - | IDENTIFIER { result = val } - | DefaultParam { result = val } - | ParamList ',' IDENTIFIER { result = val[0] << val[2] } - | ParamList ',' DefaultParam { result = val[0] << val[2] } - ; - - DefaultParam: - IDENTIFIER '=' Expression { result = make_node(val) { |v| Riml::DefaultParamNode.new(v[0], v[2]) } } - ; - - Return: - RETURN Returnable { result = make_node(val) { |v| Riml::ReturnNode.new(v[1]) } } - | RETURN Returnable IF Expression { result = make_node(val) { |v| Riml::IfNode.new(v[3], Nodes.new([ReturnNode.new(v[1])])) } } - | RETURN Returnable UNLESS Expression { result = make_node(val) { |v| Riml::UnlessNode.new(v[3], Nodes.new([ReturnNode.new(v[1])])) } } - ; - - Returnable: - /* nothing */ { result = nil } - | Expression { result = val[0] } - ; - - EndScript: - FINISH { result = make_node(val) { |_| Riml::FinishNode.new } } - ; - - # [expression, expressions] - If: - IF Expression IfBlock END { result = make_node(val) { |v| Riml::IfNode.new(v[1], v[2]) } } - | IF Expression THEN Expression END { result = make_node(val) { |v| Riml::IfNode.new(v[1], Riml::Nodes.new([v[3]])) } } - | Expression IF Expression { result = make_node(val) { |v| Riml::IfNode.new(v[2], Riml::Nodes.new([v[0]])) } } - ; - - Unless: - UNLESS Expression IfBlock END { result = make_node(val) { |v| Riml::UnlessNode.new(v[1], v[2]) } } - | UNLESS Expression THEN Expression END { result = make_node(val) { |v| Riml::UnlessNode.new(v[1], Riml::Nodes.new([v[3]])) } } - | Expression UNLESS Expression { result = make_node(val) { |v| Riml::UnlessNode.new(v[2], Riml::Nodes.new([v[0]])) } } - ; - - Ternary: - Expression '?' Expression ':' Expression { result = make_node(val) { |v| Riml::TernaryOperatorNode.new([v[0], v[2], v[4]]) } } - ; - - While: - WHILE Expression Block END { result = make_node(val) { |v| Riml::WhileNode.new(v[1], v[2]) } } - ; - - LoopKeyword: - BREAK { result = make_node(val) { |_| Riml::BreakNode.new } } - | CONTINUE { result = make_node(val) { |_| Riml::ContinueNode.new } } - ; - - Until: - UNTIL Expression Block END { result = make_node(val) { |v| Riml::UntilNode.new(v[1], v[2]) } } - ; - - For: - FOR SimpleVariableRetrieval IN Expression Block END { result = make_node(val) { |v| Riml::ForNode.new(v[1], v[3], v[4]) } } - | FOR List IN Expression Block END { result = make_node(val) { |v| Riml::ForNode.new(v[1], v[3], v[4]) } } - | FOR ListUnpack IN Expression Block END { result = make_node(val) { |v| Riml::ForNode.new(v[1], v[3], v[4]) } } - ; - - Try: - TRY Block END { result = make_node(val) { |v| Riml::TryNode.new(v[1], nil, nil) } } - | TRY Block Catch END { result = make_node(val) { |v| Riml::TryNode.new(v[1], v[2], nil) } } - | TRY Block Catch FINALLY Block END { result = make_node(val) { |v| Riml::TryNode.new(v[1], v[2], v[4]) } } - ; - - Catch: - /* nothing */ { result = nil } - | CATCH Block { result = [ make_node(val) { |v| Riml::CatchNode.new(nil, v[1]) } ] } - | CATCH Catchable Block { result = [ make_node(val) { |v| Riml::CatchNode.new(v[1], v[2]) } ] } - | Catch CATCH Block { result = val[0] << make_node(val) { |v| Riml::CatchNode.new(nil, v[2]) } } - | Catch CATCH Catchable Block { result = val[0] << make_node(val) { |v| Riml::CatchNode.new(v[2], v[3]) } } - ; - - Catchable: - Regexp { result = val[0] } - | String { result = val[0] } - ; - - # [expressions] - # expressions list could contain an ElseNode, which contains expressions - # itself - Block: - NEWLINE Statements { result = val[1] } - | NEWLINE { result = make_node(val) { |_| Riml::Nodes.new([]) } } - ; - - IfBlock: - Block { result = val[0] } - | NEWLINE Statements ElseBlock { result = val[1] << val[2] } - | NEWLINE Statements ElseifBlock { result = val[1] << val[2] } - | NEWLINE Statements ElseifBlock ElseBlock { result = val[1] << val[2] << val[3] } - ; - - ElseBlock: - ELSE NEWLINE Statements { result = make_node(val) { |v| Riml::ElseNode.new(v[2]) } } - ; - - ElseifBlock: - ELSEIF Expression NEWLINE Statements { result = make_node(val) { |v| Riml::Nodes.new([Riml::ElseifNode.new(v[1], v[3])]) } } - | ElseifBlock ELSEIF Expression NEWLINE Statements { result = val[0] << make_node(val) { |v| Riml::ElseifNode.new(v[2], v[4]) } } - ; - - ClassDefinition: - CLASS Scope IDENTIFIER Block END { result = make_node(val) { |v| Riml::ClassDefinitionNode.new(v[1], v[2], nil, v[3]) } } - | CLASS Scope IDENTIFIER '<' Scope IDENTIFIER Block END { result = make_node(val) { |v| Riml::ClassDefinitionNode.new(v[1], v[2], (v[4] || ClassDefinitionNode::DEFAULT_SCOPE_MODIFIER) + v[5], v[6]) } } - ; - - ObjectInstantiation: - NEW ObjectInstantiationCall { result = make_node(val) { |v| Riml::ObjectInstantiationNode.new(v[1]) } } - ; - - Super: - SUPER '(' ArgListWithSplat ')' { result = make_node(val) { |v| Riml::SuperNode.new(v[2], true) } } - | SUPER { result = make_node(val) { |_| Riml::SuperNode.new([], false) } } - ; - - ExLiteral: - EX_LITERAL { result = make_node(val) { |v| Riml::ExLiteralNode.new(v[0]) } } - ; -end - ----- header - require File.expand_path("../lexer", __FILE__) - require File.expand_path("../nodes", __FILE__) - require File.expand_path("../errors", __FILE__) - require File.expand_path("../ast_rewriter", __FILE__) ----- inner - # This code will be put as-is in the parser class - - attr_accessor :ast_rewriter - attr_writer :options - - # The Parser and AST_Rewriter share this same hash of options - def options - @options ||= {} - end - - def self.ast_cache - @ast_cache - end - @ast_cache = {} - - # parses tokens or code into output nodes - def parse(object, ast_rewriter = Riml::AST_Rewriter.new, filename = nil, included = false) - if (ast = self.class.ast_cache[filename]) - else - if tokens?(object) - @tokens = object - elsif code?(object) - @lexer = Riml::Lexer.new(object, filename, true) - end - - begin - ast = do_parse - rescue Racc::ParseError => e - raise unless @lexer - if (invalid_token = @lexer.prev_token_is_keyword?) - warning = "#{invalid_token.inspect} is a keyword, and cannot " \ - "be used as a variable name" - end - error_msg = e.message - error_msg << "\nWARNING: #{warning}" if warning - error = Riml::ParseError.new(error_msg, @lexer.filename, @lexer.lineno) - raise error - end - self.class.ast_cache[filename] = ast if filename - end - @ast_rewriter ||= ast_rewriter - return ast unless @ast_rewriter - @ast_rewriter.ast = ast.dup - @ast_rewriter.options ||= options - @ast_rewriter.rewrite(filename, included) - @ast_rewriter.ast - end - - # get the next token from either the list of tokens provided, or - # the lexer getting the next token - def next_token - return @tokens.shift unless @lexer - token = @lexer.next_token - if token && @lexer.parser_info - @current_parser_info = token.pop - end - token - end - - private - - def tokens?(object) - Array === object - end - - def code?(object) - String === object - end - - def make_node(racc_val) - node = yield racc_val - node.parser_info = @current_parser_info - node - end diff --git a/test/racc/assets/rrconf.y b/test/racc/assets/rrconf.y deleted file mode 100644 index baf9249a77..0000000000 --- a/test/racc/assets/rrconf.y +++ /dev/null @@ -1,14 +0,0 @@ -# 1 s/r conflict and 1 r/r conflict - -class A -rule - -target: a - -a : - | a list - -list : - | list ITEM - -end diff --git a/test/racc/assets/ruby18.y b/test/racc/assets/ruby18.y deleted file mode 100644 index eceb253298..0000000000 --- a/test/racc/assets/ruby18.y +++ /dev/null @@ -1,1943 +0,0 @@ -# Copyright (c) 2013 Peter Zotov <whitequark@whitequark.org> -# -# Parts of the source are derived from ruby_parser: -# Copyright (c) Ryan Davis, seattle.rb -# -# MIT License -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -class Parser::Ruby18 - -token kCLASS kMODULE kDEF kUNDEF kBEGIN kRESCUE kENSURE kEND kIF kUNLESS - kTHEN kELSIF kELSE kCASE kWHEN kWHILE kUNTIL kFOR kBREAK kNEXT - kREDO kRETRY kIN kDO kDO_COND kDO_BLOCK kRETURN kYIELD kSUPER - kSELF kNIL kTRUE kFALSE kAND kOR kNOT kIF_MOD kUNLESS_MOD kWHILE_MOD - kUNTIL_MOD kRESCUE_MOD kALIAS kDEFINED klBEGIN klEND k__LINE__ - k__FILE__ tIDENTIFIER tFID tGVAR tIVAR tCONSTANT tCVAR tNTH_REF - tBACK_REF tSTRING_CONTENT tINTEGER tFLOAT tREGEXP_END tUPLUS - tUMINUS tUMINUS_NUM tPOW tCMP tEQ tEQQ tNEQ tGEQ tLEQ tANDOP - tOROP tMATCH tNMATCH tDOT tDOT2 tDOT3 tAREF tASET tLSHFT tRSHFT - tCOLON2 tCOLON3 tOP_ASGN tASSOC tLPAREN tLPAREN2 tRPAREN tLPAREN_ARG - tLBRACK tLBRACK2 tRBRACK tLBRACE tLBRACE_ARG tSTAR tSTAR2 tAMPER tAMPER2 - tTILDE tPERCENT tDIVIDE tPLUS tMINUS tLT tGT tPIPE tBANG tCARET - tLCURLY tRCURLY tBACK_REF2 tSYMBEG tSTRING_BEG tXSTRING_BEG tREGEXP_BEG - tWORDS_BEG tQWORDS_BEG tSTRING_DBEG tSTRING_DVAR tSTRING_END tSTRING - tSYMBOL tREGEXP_OPT tNL tEH tCOLON tCOMMA tSPACE tSEMI - -prechigh - right tBANG tTILDE tUPLUS - right tPOW - right tUMINUS_NUM tUMINUS - left tSTAR2 tDIVIDE tPERCENT - left tPLUS tMINUS - left tLSHFT tRSHFT - left tAMPER2 - left tPIPE tCARET - left tGT tGEQ tLT tLEQ - nonassoc tCMP tEQ tEQQ tNEQ tMATCH tNMATCH - left tANDOP - left tOROP - nonassoc tDOT2 tDOT3 - right tEH tCOLON - left kRESCUE_MOD - right tEQL tOP_ASGN - nonassoc kDEFINED - right kNOT - left kOR kAND - nonassoc kIF_MOD kUNLESS_MOD kWHILE_MOD kUNTIL_MOD - nonassoc tLBRACE_ARG - nonassoc tLOWEST -preclow - -rule - - program: compstmt - { - result = val[0] - } - - bodystmt: compstmt opt_rescue opt_else opt_ensure - { - rescue_bodies = val[1] - else_t, else_ = val[2] - ensure_t, ensure_ = val[3] - - if rescue_bodies.empty? && !else_.nil? - diagnostic :warning, :useless_else, nil, else_t - end - - result = @builder.begin_body(val[0], - rescue_bodies, - else_t, else_, - ensure_t, ensure_) - } - - compstmt: stmts opt_terms - { - result = @builder.compstmt(val[0]) - } - - stmts: # nothing - { - result = [] - } - | stmt - { - result = [ val[0] ] - } - | error stmt - { - result = [ val[1] ] - } - | stmts terms stmt - { - result = val[0] << val[2] - } - - stmt: kALIAS fitem - { - @lexer.state = :expr_fname - } - fitem - { - result = @builder.alias(val[0], val[1], val[3]) - } - | kALIAS tGVAR tGVAR - { - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.gvar(val[2])) - } - | kALIAS tGVAR tBACK_REF - { - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.back_ref(val[2])) - } - | kALIAS tGVAR tNTH_REF - { - diagnostic :error, :nth_ref_alias, nil, val[2] - } - | kUNDEF undef_list - { - result = @builder.undef_method(val[0], val[1]) - } - | stmt kIF_MOD expr_value - { - result = @builder.condition_mod(val[0], nil, - val[1], val[2]) - } - | stmt kUNLESS_MOD expr_value - { - result = @builder.condition_mod(nil, val[0], - val[1], val[2]) - } - | stmt kWHILE_MOD expr_value - { - result = @builder.loop_mod(:while, val[0], val[1], val[2]) - } - | stmt kUNTIL_MOD expr_value - { - result = @builder.loop_mod(:until, val[0], val[1], val[2]) - } - | stmt kRESCUE_MOD stmt - { - rescue_body = @builder.rescue_body(val[1], - nil, nil, nil, - nil, val[2]) - - result = @builder.begin_body(val[0], [ rescue_body ]) - } - | klBEGIN tLCURLY compstmt tRCURLY - { - if in_def? - diagnostic :error, :begin_in_method, nil, val[0] - end - - result = @builder.preexe(val[0], val[1], val[2], val[3]) - } - | klEND tLCURLY compstmt tRCURLY - { - result = @builder.postexe(val[0], val[1], val[2], val[3]) - } - | lhs tEQL command_call - { - result = @builder.assign(val[0], val[1], val[2]) - } - | mlhs tEQL command_call - { - result = @builder.multi_assign(val[0], val[1], val[2]) - } - | var_lhs tOP_ASGN command_call - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | primary_value tLBRACK2 aref_args tRBRACK tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - } - | primary_value tDOT tIDENTIFIER tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | backref tOP_ASGN command_call - { - @builder.op_assign(val[0], val[1], val[2]) - } - | lhs tEQL mrhs - { - result = @builder.assign(val[0], val[1], - @builder.array(nil, val[2], nil)) - } - | mlhs tEQL arg_value - { - result = @builder.multi_assign(val[0], val[1], val[2]) - } - | mlhs tEQL mrhs - { - result = @builder.multi_assign(val[0], val[1], - @builder.array(nil, val[2], nil)) - } - | expr - - expr: command_call - | expr kAND expr - { - result = @builder.logical_op(:and, val[0], val[1], val[2]) - } - | expr kOR expr - { - result = @builder.logical_op(:or, val[0], val[1], val[2]) - } - | kNOT expr - { - result = @builder.not_op(val[0], nil, val[1], nil) - } - | tBANG command_call - { - result = @builder.not_op(val[0], nil, val[1], nil) - } - | arg - - expr_value: expr - - command_call: command - | block_command - | kRETURN call_args - { - result = @builder.keyword_cmd(:return, val[0], - nil, val[1], nil) - } - | kBREAK call_args - { - result = @builder.keyword_cmd(:break, val[0], - nil, val[1], nil) - } - | kNEXT call_args - { - result = @builder.keyword_cmd(:next, val[0], - nil, val[1], nil) - } - - block_command: block_call - | block_call tDOT operation2 command_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | block_call tCOLON2 operation2 command_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - - cmd_brace_block: tLBRACE_ARG - { - @static_env.extend_dynamic - } - opt_block_var compstmt tRCURLY - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - command: operation command_args =tLOWEST - { - lparen_t, args, rparen_t = val[1] - result = @builder.call_method(nil, nil, val[0], - lparen_t, args, rparen_t) - } - | operation command_args cmd_brace_block - { - lparen_t, args, rparen_t = val[1] - method_call = @builder.call_method(nil, nil, val[0], - lparen_t, args, rparen_t) - - begin_t, block_args, body, end_t = val[2] - result = @builder.block(method_call, - begin_t, block_args, body, end_t) - } - | primary_value tDOT operation2 command_args =tLOWEST - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - } - | primary_value tDOT operation2 command_args cmd_brace_block - { - lparen_t, args, rparen_t = val[3] - method_call = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - begin_t, block_args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, block_args, body, end_t) - } - | primary_value tCOLON2 operation2 command_args =tLOWEST - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 operation2 command_args cmd_brace_block - { - lparen_t, args, rparen_t = val[3] - method_call = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - begin_t, block_args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, block_args, body, end_t) - } - | kSUPER command_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.keyword_cmd(:super, val[0], - lparen_t, args, rparen_t) - } - | kYIELD command_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.keyword_cmd(:yield, val[0], - lparen_t, args, rparen_t) - } - - mlhs: mlhs_basic - { - result = @builder.multi_lhs(nil, val[0], nil) - } - | tLPAREN mlhs_entry tRPAREN - { - result = @builder.begin(val[0], val[1], val[2]) - } - - mlhs_entry: mlhs_basic - { - result = @builder.multi_lhs(nil, val[0], nil) - } - | tLPAREN mlhs_entry tRPAREN - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - mlhs_basic: mlhs_head - { - result = val[0] - } - | mlhs_head mlhs_item - { - result = val[0] << val[1] - } - | mlhs_head tSTAR mlhs_node - { - result = val[0] << @builder.splat(val[1], val[2]) - } - | mlhs_head tSTAR - { - result = val[0] << @builder.splat(val[1]) - } - | tSTAR mlhs_node - { - result = [ @builder.splat(val[0], val[1]) ] - } - | tSTAR - { - result = [ @builder.splat(val[0]) ] - } - - mlhs_item: mlhs_node - | tLPAREN mlhs_entry tRPAREN - { - result = @builder.begin(val[0], val[1], val[2]) - } - - mlhs_head: mlhs_item tCOMMA - { - result = [ val[0] ] - } - | mlhs_head mlhs_item tCOMMA - { - result = val[0] << val[1] - } - - mlhs_node: variable - { - result = @builder.assignable(val[0]) - } - | primary_value tLBRACK2 aref_args tRBRACK - { - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - } - | primary_value tDOT tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tDOT tCONSTANT - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - } - | tCOLON3 tCONSTANT - { - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - } - | backref - { - result = @builder.assignable(val[0]) - } - - lhs: variable - { - result = @builder.assignable(val[0]) - } - | primary_value tLBRACK2 aref_args tRBRACK - { - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - } - | primary_value tDOT tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tDOT tCONSTANT - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - } - | tCOLON3 tCONSTANT - { - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - } - | backref - { - result = @builder.assignable(val[0]) - } - - cname: tIDENTIFIER - { - diagnostic :error, :module_name_const, nil, val[0] - } - | tCONSTANT - - cpath: tCOLON3 cname - { - result = @builder.const_global(val[0], val[1]) - } - | cname - { - result = @builder.const(val[0]) - } - | primary_value tCOLON2 cname - { - result = @builder.const_fetch(val[0], val[1], val[2]) - } - - fname: tIDENTIFIER | tCONSTANT | tFID - | op - | reswords - - fsym: fname - { - result = @builder.symbol(val[0]) - } - | symbol - - fitem: fsym - | dsym - - undef_list: fitem - { - result = [ val[0] ] - } - | undef_list tCOMMA - { - @lexer.state = :expr_fname - } - fitem - { - result = val[0] << val[3] - } - - op: tPIPE | tCARET | tAMPER2 | tCMP | tEQ | tEQQ - | tMATCH | tGT | tGEQ | tLT | tLEQ | tLSHFT - | tRSHFT | tPLUS | tMINUS | tSTAR2 | tSTAR | tDIVIDE - | tPERCENT | tPOW | tTILDE | tUPLUS | tUMINUS | tAREF - | tASET | tBACK_REF2 - - reswords: k__LINE__ | k__FILE__ | klBEGIN | klEND | kALIAS | kAND - | kBEGIN | kBREAK | kCASE | kCLASS | kDEF | kDEFINED - | kDO | kELSE | kELSIF | kEND | kENSURE | kFALSE - | kFOR | kIN | kMODULE | kNEXT | kNIL | kNOT - | kOR | kREDO | kRESCUE | kRETRY | kRETURN | kSELF - | kSUPER | kTHEN | kTRUE | kUNDEF | kWHEN | kYIELD - | kIF | kUNLESS | kWHILE | kUNTIL - - arg: lhs tEQL arg - { - result = @builder.assign(val[0], val[1], val[2]) - } - | lhs tEQL arg kRESCUE_MOD arg - { - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.assign(val[0], val[1], rescue_) - } - | var_lhs tOP_ASGN arg - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | primary_value tLBRACK2 aref_args tRBRACK tOP_ASGN arg - { - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - } - | primary_value tDOT tIDENTIFIER tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tCONSTANT tOP_ASGN arg - { - diagnostic :error, :dynamic_const, nil, val[2], [ val[3] ] - } - | tCOLON3 tCONSTANT tOP_ASGN arg - { - diagnostic :error, :dynamic_const, nil, val[1], [ val[2] ] - } - | backref tOP_ASGN arg - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | arg tDOT2 arg - { - result = @builder.range_inclusive(val[0], val[1], val[2]) - } - | arg tDOT3 arg - { - result = @builder.range_exclusive(val[0], val[1], val[2]) - } - | arg tPLUS arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tMINUS arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tSTAR2 arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tDIVIDE arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tPERCENT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tPOW arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | tUMINUS_NUM tINTEGER tPOW arg - { - result = @builder.unary_op(val[0], - @builder.binary_op( - @builder.integer(val[1]), - val[2], val[3])) - } - | tUMINUS_NUM tFLOAT tPOW arg - { - result = @builder.unary_op(val[0], - @builder.binary_op( - @builder.float(val[1]), - val[2], val[3])) - } - | tUPLUS arg - { - result = @builder.unary_op(val[0], val[1]) - } - | tUMINUS arg - { - result = @builder.unary_op(val[0], val[1]) - } - | arg tPIPE arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tCARET arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tAMPER2 arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tCMP arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tGT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tGEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tLT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tLEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tEQQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tNEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tMATCH arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tNMATCH arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | tBANG arg - { - result = @builder.not_op(val[0], nil, val[1], nil) - } - | tTILDE arg - { - result = @builder.unary_op(val[0], val[1]) - } - | arg tLSHFT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tRSHFT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tANDOP arg - { - result = @builder.logical_op(:and, val[0], val[1], val[2]) - } - | arg tOROP arg - { - result = @builder.logical_op(:or, val[0], val[1], val[2]) - } - | kDEFINED opt_nl arg - { - result = @builder.keyword_cmd(:defined?, val[0], nil, [ val[2] ], nil) - } - | arg tEH arg tCOLON arg - { - result = @builder.ternary(val[0], val[1], - val[2], val[3], val[4]) - } - | primary - - arg_value: arg - - aref_args: none - | command opt_nl - { - result = [ val[0] ] - } - | args trailer - { - result = val[0] - } - | args tCOMMA tSTAR arg opt_nl - { - result = val[0] << @builder.splat(val[2], val[3]) - } - | assocs trailer - { - result = [ @builder.associate(nil, val[0], nil) ] - } - | tSTAR arg opt_nl - { - result = [ @builder.splat(val[0], val[1]) ] - } - - paren_args: tLPAREN2 none tRPAREN - { - result = [ val[0], [], val[2] ] - } - | tLPAREN2 call_args opt_nl tRPAREN - { - result = [ val[0], val[1], val[3] ] - } - | tLPAREN2 block_call opt_nl tRPAREN - { - result = [ val[0], [ val[1] ], val[3] ] - } - | tLPAREN2 args tCOMMA block_call opt_nl tRPAREN - { - result = [ val[0], val[1] << val[3], val[5] ] - } - - opt_paren_args: # nothing - { - result = [ nil, [], nil ] - } - | paren_args - - call_args: command - { - result = [ val[0] ] - } - | args opt_block_arg - { - result = val[0].concat(val[1]) - } - | args tCOMMA tSTAR arg_value opt_block_arg - { - result = val[0].concat( - [ @builder.splat(val[2], val[3]), - *val[4] ]) - } - | assocs opt_block_arg - { - result = [ @builder.associate(nil, val[0], nil), - *val[1] ] - } - | assocs tCOMMA tSTAR arg_value opt_block_arg - { - result = [ @builder.associate(nil, val[0], nil), - @builder.splat(val[2], val[3]), - *val[4] ] - } - | args tCOMMA assocs opt_block_arg - { - result = val[0].concat( - [ @builder.associate(nil, val[2], nil), - *val[3] ]) - } - | args tCOMMA assocs tCOMMA tSTAR arg opt_block_arg - { - result = val[0].concat( - [ @builder.associate(nil, val[2], nil), - @builder.splat(val[4], val[5]), - *val[6] ]) - } - | tSTAR arg_value opt_block_arg - { - result = [ @builder.splat(val[0], val[1]), - *val[2] ] - } - | block_arg - { - result = [ val[0] ] - } - - call_args2: arg_value tCOMMA args opt_block_arg - { - result = [ val[0], *val[2].concat(val[3]) ] - } - | arg_value tCOMMA block_arg - { - result = [ val[0], val[2] ] - } - | arg_value tCOMMA tSTAR arg_value opt_block_arg - { - result = [ val[0], - @builder.splat(val[2], val[3]), - *val[4] ] - } - | arg_value tCOMMA args tCOMMA tSTAR arg_value opt_block_arg - { - result = [ val[0], - *val[2]. - push(@builder.splat(val[4], val[5])). - concat(val[6]) ] - } - | assocs opt_block_arg - { - result = [ @builder.associate(nil, val[0], nil), - *val[1] ] - } - | assocs tCOMMA tSTAR arg_value opt_block_arg - { - result = [ @builder.associate(nil, val[0], nil), - @builder.splat(val[2], val[3]), - *val[4] ] - } - | arg_value tCOMMA assocs opt_block_arg - { - result = [ val[0], - @builder.associate(nil, val[2], nil), - *val[3] ] - } - | arg_value tCOMMA args tCOMMA assocs opt_block_arg - { - result = [ val[0], - *val[2]. - push(@builder.associate(nil, val[4], nil)). - concat(val[5]) ] - } - | arg_value tCOMMA assocs tCOMMA tSTAR arg_value opt_block_arg - { - result = [ val[0], - @builder.associate(nil, val[2], nil), - @builder.splat(val[4], val[5]), - *val[6] ] - } - | arg_value tCOMMA args tCOMMA assocs tCOMMA tSTAR arg_value opt_block_arg - { - result = [ val[0], - *val[2]. - push(@builder.associate(nil, val[4], nil)). - push(@builder.splat(val[6], val[7])). - concat(val[8]) ] - } - | tSTAR arg_value opt_block_arg - { - result = [ @builder.splat(val[0], val[1]), - *val[2] ] - } - | block_arg - { - result = [ val[0] ] - } - - command_args: { - result = @lexer.cmdarg.dup - @lexer.cmdarg.push(true) - } - open_args - { - @lexer.cmdarg = val[0] - - result = val[1] - } - - open_args: call_args - { - result = [ nil, val[0], nil ] - } - | tLPAREN_ARG - { - @lexer.state = :expr_endarg - } - tRPAREN - { - result = [ val[0], [], val[2] ] - } - | tLPAREN_ARG call_args2 - { - @lexer.state = :expr_endarg - } - tRPAREN - { - result = [ val[0], val[1], val[3] ] - } - - block_arg: tAMPER arg_value - { - result = @builder.block_pass(val[0], val[1]) - } - - opt_block_arg: tCOMMA block_arg - { - result = [ val[1] ] - } - | # nothing - { - result = [] - } - - args: arg_value - { - result = [ val[0] ] - } - | args tCOMMA arg_value - { - result = val[0] << val[2] - } - - mrhs: args tCOMMA arg_value - { - result = val[0] << val[2] - } - | args tCOMMA tSTAR arg_value - { - result = val[0] << @builder.splat(val[2], val[3]) - } - | tSTAR arg_value - { - result = [ @builder.splat(val[0], val[1]) ] - } - - primary: literal - | strings - | xstring - | regexp - | words - | qwords - | var_ref - | backref - | tFID - { - result = @builder.call_method(nil, nil, val[0]) - } - | kBEGIN bodystmt kEND - { - result = @builder.begin_keyword(val[0], val[1], val[2]) - } - | tLPAREN_ARG expr - { - @lexer.state = :expr_endarg - } - opt_nl tRPAREN - { - result = @builder.begin(val[0], val[1], val[4]) - } - | tLPAREN compstmt tRPAREN - { - result = @builder.begin(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.const_fetch(val[0], val[1], val[2]) - } - | tCOLON3 tCONSTANT - { - result = @builder.const_global(val[0], val[1]) - } - | primary_value tLBRACK2 aref_args tRBRACK - { - result = @builder.index(val[0], val[1], val[2], val[3]) - } - | tLBRACK aref_args tRBRACK - { - result = @builder.array(val[0], val[1], val[2]) - } - | tLBRACE assoc_list tRCURLY - { - result = @builder.associate(val[0], val[1], val[2]) - } - | kRETURN - { - result = @builder.keyword_cmd(:return, val[0]) - } - | kYIELD tLPAREN2 call_args tRPAREN - { - result = @builder.keyword_cmd(:yield, val[0], val[1], val[2], val[3]) - } - | kYIELD tLPAREN2 tRPAREN - { - result = @builder.keyword_cmd(:yield, val[0], val[1], [], val[2]) - } - | kYIELD - { - result = @builder.keyword_cmd(:yield, val[0]) - } - | kDEFINED opt_nl tLPAREN2 expr tRPAREN - { - result = @builder.keyword_cmd(:defined?, val[0], - val[2], [ val[3] ], val[4]) - } - | operation brace_block - { - method_call = @builder.call_method(nil, nil, val[0]) - - begin_t, args, body, end_t = val[1] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | method_call - | method_call brace_block - { - begin_t, args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, args, body, end_t) - } - | kIF expr_value then compstmt if_tail kEND - { - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, val[5]) - } - | kUNLESS expr_value then compstmt opt_else kEND - { - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - else_, else_t, - val[3], val[5]) - } - | kWHILE - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.loop(:while, val[0], val[2], val[3], - val[5], val[6]) - } - | kUNTIL - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.loop(:until, val[0], val[2], val[3], - val[5], val[6]) - } - | kCASE expr_value opt_terms case_body kEND - { - when_bodies = val[3][0..-2] - else_t, else_body = val[3][-1] - - result = @builder.case(val[0], val[1], - when_bodies, else_t, else_body, - val[4]) - } - | kCASE opt_terms case_body kEND - { - when_bodies = val[2][0..-2] - else_t, else_body = val[2][-1] - - result = @builder.case(val[0], nil, - when_bodies, else_t, else_body, - val[3]) - } - | kCASE opt_terms kELSE compstmt kEND - { - result = @builder.case(val[0], nil, - [], val[2], val[3], - val[4]) - } - | kFOR for_var kIN - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.for(val[0], val[1], - val[2], val[4], - val[5], val[7], val[8]) - } - | kCLASS cpath superclass - { - @static_env.extend_static - } - bodystmt kEND - { - if in_def? - diagnostic :error, :class_in_def, nil, val[0] - end - - lt_t, superclass = val[2] - result = @builder.def_class(val[0], val[1], - lt_t, superclass, - val[4], val[5]) - - @static_env.unextend - } - | kCLASS tLSHFT expr term - { - result = @def_level - @def_level = 0 - - @static_env.extend_static - } - bodystmt kEND - { - result = @builder.def_sclass(val[0], val[1], val[2], - val[5], val[6]) - - @static_env.unextend - - @def_level = val[4] - } - | kMODULE cpath - { - @static_env.extend_static - } - bodystmt kEND - { - if in_def? - diagnostic :error, :module_in_def, nil, val[0] - end - - result = @builder.def_module(val[0], val[1], - val[3], val[4]) - - @static_env.unextend - } - | kDEF fname - { - @def_level += 1 - @static_env.extend_static - } - f_arglist bodystmt kEND - { - result = @builder.def_method(val[0], val[1], - val[3], val[4], val[5]) - - @static_env.unextend - @def_level -= 1 - } - | kDEF singleton dot_or_colon - { - @lexer.state = :expr_fname - } - fname - { - @def_level += 1 - @static_env.extend_static - } - f_arglist bodystmt kEND - { - result = @builder.def_singleton(val[0], val[1], val[2], - val[4], val[6], val[7], val[8]) - - @static_env.unextend - @def_level -= 1 - } - | kBREAK - { - result = @builder.keyword_cmd(:break, val[0]) - } - | kNEXT - { - result = @builder.keyword_cmd(:next, val[0]) - } - | kREDO - { - result = @builder.keyword_cmd(:redo, val[0]) - } - | kRETRY - { - result = @builder.keyword_cmd(:retry, val[0]) - } - - primary_value: primary - - then: term - | tCOLON - | kTHEN - | term kTHEN - { - result = val[1] - } - - do: term - | tCOLON - | kDO_COND - - if_tail: opt_else - | kELSIF expr_value then compstmt if_tail - { - else_t, else_ = val[4] - result = [ val[0], - @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, nil), - ] - } - - opt_else: none - | kELSE compstmt - { - result = val - } - - for_var: lhs - | mlhs - - block_par: mlhs_item - { - result = [ @builder.arg_expr(val[0]) ] - } - | block_par tCOMMA mlhs_item - { - result = val[0] << @builder.arg_expr(val[2]) - } - - block_var: block_par - | block_par tCOMMA - | block_par tCOMMA tAMPER lhs - { - result = val[0]. - push(@builder.blockarg_expr(val[2], val[3])) - } - | block_par tCOMMA tSTAR lhs tCOMMA tAMPER lhs - { - result = val[0]. - push(@builder.restarg_expr(val[2], val[3])). - push(@builder.blockarg_expr(val[5], val[6])) - } - | block_par tCOMMA tSTAR tCOMMA tAMPER lhs - { - result = val[0]. - push(@builder.restarg_expr(val[2])). - push(@builder.blockarg_expr(val[4], val[5])) - } - | block_par tCOMMA tSTAR lhs - { - result = val[0]. - push(@builder.restarg_expr(val[2], val[3])) - } - | block_par tCOMMA tSTAR - { - result = val[0]. - push(@builder.restarg_expr(val[2])) - } - | tSTAR lhs tCOMMA tAMPER lhs - { - result = [ @builder.restarg_expr(val[0], val[1]), - @builder.blockarg_expr(val[3], val[4]) ] - } - | tSTAR tCOMMA tAMPER lhs - { - result = [ @builder.restarg_expr(val[0]), - @builder.blockarg_expr(val[2], val[3]) ] - } - | tSTAR lhs - { - result = [ @builder.restarg_expr(val[0], val[1]) ] - } - | tSTAR - { - result = [ @builder.restarg_expr(val[0]) ] - } - | tAMPER lhs - { - result = [ @builder.blockarg_expr(val[0], val[1]) ] - } - ; - - opt_block_var: # nothing - { - result = @builder.args(nil, [], nil) - } - | tPIPE tPIPE - { - result = @builder.args(val[0], [], val[1]) - } - | tOROP - { - result = @builder.args(val[0], [], val[0]) - } - | tPIPE block_var tPIPE - { - result = @builder.args(val[0], val[1], val[2], false) - } - - do_block: kDO_BLOCK - { - @static_env.extend_dynamic - } - opt_block_var compstmt kEND - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - block_call: command do_block - { - begin_t, block_args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, block_args, body, end_t) - } - | block_call tDOT operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | block_call tCOLON2 operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - - method_call: operation paren_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.call_method(nil, nil, val[0], - lparen_t, args, rparen_t) - } - | primary_value tDOT operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 operation2 paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 operation3 - { - result = @builder.call_method(val[0], val[1], val[2]) - } - | kSUPER paren_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.keyword_cmd(:super, val[0], - lparen_t, args, rparen_t) - } - | kSUPER - { - result = @builder.keyword_cmd(:zsuper, val[0]) - } - - brace_block: tLCURLY - { - @static_env.extend_dynamic - } - opt_block_var compstmt tRCURLY - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - | kDO - { - @static_env.extend_dynamic - } - opt_block_var compstmt kEND - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - case_body: kWHEN when_args then compstmt cases - { - result = [ @builder.when(val[0], val[1], val[2], val[3]), - *val[4] ] - } - - when_args: args - | args tCOMMA tSTAR arg_value - { - result = val[0] << @builder.splat(val[2], val[3]) - } - | tSTAR arg_value - { - result = [ @builder.splat(val[0], val[1]) ] - } - - cases: opt_else - { - result = [ val[0] ] - } - | case_body - - opt_rescue: kRESCUE exc_list exc_var then compstmt opt_rescue - { - assoc_t, exc_var = val[2] - - if val[1] - exc_list = @builder.array(nil, val[1], nil) - end - - result = [ @builder.rescue_body(val[0], - exc_list, assoc_t, exc_var, - val[3], val[4]), - *val[5] ] - } - | # nothing - { - result = [] - } - - exc_list: arg_value - { - result = [ val[0] ] - } - | mrhs - | none - - exc_var: tASSOC lhs - { - result = [ val[0], val[1] ] - } - | none - - opt_ensure: kENSURE compstmt - { - result = [ val[0], val[1] ] - } - | none - - literal: numeric - | symbol - | dsym - - strings: string - { - result = @builder.string_compose(nil, val[0], nil) - } - - string: string1 - { - result = [ val[0] ] - } - | string string1 - { - result = val[0] << val[1] - } - - string1: tSTRING_BEG string_contents tSTRING_END - { - result = @builder.string_compose(val[0], val[1], val[2]) - } - | tSTRING - { - result = @builder.string(val[0]) - } - - xstring: tXSTRING_BEG xstring_contents tSTRING_END - { - result = @builder.xstring_compose(val[0], val[1], val[2]) - } - - regexp: tREGEXP_BEG xstring_contents tSTRING_END tREGEXP_OPT - { - opts = @builder.regexp_options(val[3]) - result = @builder.regexp_compose(val[0], val[1], val[2], opts) - } - - words: tWORDS_BEG word_list tSTRING_END - { - result = @builder.words_compose(val[0], val[1], val[2]) - } - - word_list: # nothing - { - result = [] - } - | word_list word tSPACE - { - result = val[0] << @builder.word(val[1]) - } - - word: string_content - { - result = [ val[0] ] - } - | word string_content - { - result = val[0] << val[1] - } - - qwords: tQWORDS_BEG qword_list tSTRING_END - { - result = @builder.words_compose(val[0], val[1], val[2]) - } - - qword_list: # nothing - { - result = [] - } - | qword_list tSTRING_CONTENT tSPACE - { - result = val[0] << @builder.string_internal(val[1]) - } - - string_contents: # nothing - { - result = [] - } - | string_contents string_content - { - result = val[0] << val[1] - } - -xstring_contents: # nothing - { - result = [] - } - | xstring_contents string_content - { - result = val[0] << val[1] - } - - string_content: tSTRING_CONTENT - { - result = @builder.string_internal(val[0]) - } - | tSTRING_DVAR string_dvar - { - result = val[1] - } - | tSTRING_DBEG - { - @lexer.cond.push(false) - @lexer.cmdarg.push(false) - } - compstmt tRCURLY - { - @lexer.cond.lexpop - @lexer.cmdarg.lexpop - - result = @builder.begin(val[0], val[2], val[3]) - } - - string_dvar: tGVAR - { - result = @builder.gvar(val[0]) - } - | tIVAR - { - result = @builder.ivar(val[0]) - } - | tCVAR - { - result = @builder.cvar(val[0]) - } - | backref - - - symbol: tSYMBOL - { - result = @builder.symbol(val[0]) - } - - dsym: tSYMBEG xstring_contents tSTRING_END - { - result = @builder.symbol_compose(val[0], val[1], val[2]) - } - - numeric: tINTEGER - { - result = @builder.integer(val[0]) - } - | tFLOAT - { - result = @builder.float(val[0]) - } - | tUMINUS_NUM tINTEGER =tLOWEST - { - result = @builder.negate(val[0], - @builder.integer(val[1])) - } - | tUMINUS_NUM tFLOAT =tLOWEST - { - result = @builder.negate(val[0], - @builder.float(val[1])) - } - - variable: tIDENTIFIER - { - result = @builder.ident(val[0]) - } - | tIVAR - { - result = @builder.ivar(val[0]) - } - | tGVAR - { - result = @builder.gvar(val[0]) - } - | tCVAR - { - result = @builder.cvar(val[0]) - } - | tCONSTANT - { - result = @builder.const(val[0]) - } - | kNIL - { - result = @builder.nil(val[0]) - } - | kSELF - { - result = @builder.self(val[0]) - } - | kTRUE - { - result = @builder.true(val[0]) - } - | kFALSE - { - result = @builder.false(val[0]) - } - | k__FILE__ - { - result = @builder.__FILE__(val[0]) - } - | k__LINE__ - { - result = @builder.__LINE__(val[0]) - } - - var_ref: variable - { - result = @builder.accessible(val[0]) - } - - var_lhs: variable - { - result = @builder.assignable(val[0]) - } - - backref: tNTH_REF - { - result = @builder.nth_ref(val[0]) - } - | tBACK_REF - { - result = @builder.back_ref(val[0]) - } - - superclass: term - { - result = nil - } - | tLT expr_value term - { - result = [ val[0], val[1] ] - } - | error term - { - yyerrok - result = nil - } - - f_arglist: tLPAREN2 f_args opt_nl tRPAREN - { - result = @builder.args(val[0], val[1], val[3]) - - @lexer.state = :expr_beg - } - | f_args term - { - result = @builder.args(nil, val[0], nil) - } - - f_args: f_arg tCOMMA f_optarg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_optarg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg opt_f_block_arg - { - result = val[0]. - concat(val[1]) - } - | f_optarg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_optarg opt_f_block_arg - { - result = val[0]. - concat(val[1]) - } - | f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[1]) - } - | f_block_arg - { - result = [ val[0] ] - } - | # nothing - { - result = [] - } - - f_norm_arg: tCONSTANT - { - diagnostic :error, :argument_const, nil, val[0] - } - | tIVAR - { - diagnostic :error, :argument_ivar, nil, val[0] - } - | tGVAR - { - diagnostic :error, :argument_gvar, nil, val[0] - } - | tCVAR - { - diagnostic :error, :argument_cvar, nil, val[0] - } - | tIDENTIFIER - { - @static_env.declare val[0][0] - - result = @builder.arg(val[0]) - } - - f_arg: f_norm_arg - { - result = [ val[0] ] - } - | f_arg tCOMMA f_norm_arg - { - result = val[0] << val[2] - } - - f_opt: tIDENTIFIER tEQL arg_value - { - @static_env.declare val[0][0] - - result = @builder.optarg(val[0], val[1], val[2]) - } - - f_optarg: f_opt - { - result = [ val[0] ] - } - | f_optarg tCOMMA f_opt - { - result = val[0] << val[2] - } - - restarg_mark: tSTAR2 | tSTAR - - f_rest_arg: restarg_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = [ @builder.restarg(val[0], val[1]) ] - } - | restarg_mark - { - result = [ @builder.restarg(val[0]) ] - } - - blkarg_mark: tAMPER2 | tAMPER - - f_block_arg: blkarg_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = @builder.blockarg(val[0], val[1]) - } - - opt_f_block_arg: tCOMMA f_block_arg - { - result = [ val[1] ] - } - | # nothing - { - result = [] - } - - singleton: var_ref - | tLPAREN2 expr opt_nl tRPAREN - { - result = val[1] - } - - assoc_list: # nothing - { - result = [] - } - | assocs trailer - { - result = val[0] - } - | args trailer - { - result = @builder.pair_list_18(val[0]) - } - - assocs: assoc - { - result = [ val[0] ] - } - | assocs tCOMMA assoc - { - result = val[0] << val[2] - } - - assoc: arg_value tASSOC arg_value - { - result = @builder.pair(val[0], val[1], val[2]) - } - - operation: tIDENTIFIER | tCONSTANT | tFID - operation2: tIDENTIFIER | tCONSTANT | tFID | op - operation3: tIDENTIFIER | tFID | op - dot_or_colon: tDOT | tCOLON2 - opt_terms: | terms - opt_nl: | tNL - trailer: | tNL | tCOMMA - - term: tSEMI - { - yyerrok - } - | tNL - - terms: term - | terms tSEMI - - none: # nothing - { - result = nil - } - -end - ----- header - -require 'parser' - ----- inner - - def version - 18 - end - - def default_encoding - Encoding::BINARY if defined? Encoding - end diff --git a/test/racc/assets/ruby19.y b/test/racc/assets/ruby19.y deleted file mode 100644 index b405c952e7..0000000000 --- a/test/racc/assets/ruby19.y +++ /dev/null @@ -1,2174 +0,0 @@ -# Copyright (c) 2013 Peter Zotov <whitequark@whitequark.org> -# -# Parts of the source are derived from ruby_parser: -# Copyright (c) Ryan Davis, seattle.rb -# -# MIT License -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -class Parser::Ruby19 - -token kCLASS kMODULE kDEF kUNDEF kBEGIN kRESCUE kENSURE kEND kIF kUNLESS - kTHEN kELSIF kELSE kCASE kWHEN kWHILE kUNTIL kFOR kBREAK kNEXT - kREDO kRETRY kIN kDO kDO_COND kDO_BLOCK kDO_LAMBDA kRETURN kYIELD kSUPER - kSELF kNIL kTRUE kFALSE kAND kOR kNOT kIF_MOD kUNLESS_MOD kWHILE_MOD - kUNTIL_MOD kRESCUE_MOD kALIAS kDEFINED klBEGIN klEND k__LINE__ - k__FILE__ k__ENCODING__ tIDENTIFIER tFID tGVAR tIVAR tCONSTANT - tLABEL tCVAR tNTH_REF tBACK_REF tSTRING_CONTENT tINTEGER tFLOAT - tREGEXP_END tUPLUS tUMINUS tUMINUS_NUM tPOW tCMP tEQ tEQQ tNEQ - tGEQ tLEQ tANDOP tOROP tMATCH tNMATCH tDOT tDOT2 tDOT3 tAREF - tASET tLSHFT tRSHFT tCOLON2 tCOLON3 tOP_ASGN tASSOC tLPAREN - tLPAREN2 tRPAREN tLPAREN_ARG tLBRACK tLBRACK2 tRBRACK tLBRACE - tLBRACE_ARG tSTAR tSTAR2 tAMPER tAMPER2 tTILDE tPERCENT tDIVIDE - tPLUS tMINUS tLT tGT tPIPE tBANG tCARET tLCURLY tRCURLY - tBACK_REF2 tSYMBEG tSTRING_BEG tXSTRING_BEG tREGEXP_BEG tREGEXP_OPT - tWORDS_BEG tQWORDS_BEG tSTRING_DBEG tSTRING_DVAR tSTRING_END - tSTRING tSYMBOL tNL tEH tCOLON tCOMMA tSPACE tSEMI tLAMBDA tLAMBEG - tCHARACTER - -prechigh - right tBANG tTILDE tUPLUS - right tPOW - right tUMINUS_NUM tUMINUS - left tSTAR2 tDIVIDE tPERCENT - left tPLUS tMINUS - left tLSHFT tRSHFT - left tAMPER2 - left tPIPE tCARET - left tGT tGEQ tLT tLEQ - nonassoc tCMP tEQ tEQQ tNEQ tMATCH tNMATCH - left tANDOP - left tOROP - nonassoc tDOT2 tDOT3 - right tEH tCOLON - left kRESCUE_MOD - right tEQL tOP_ASGN - nonassoc kDEFINED - right kNOT - left kOR kAND - nonassoc kIF_MOD kUNLESS_MOD kWHILE_MOD kUNTIL_MOD - nonassoc tLBRACE_ARG - nonassoc tLOWEST -preclow - -rule - - program: top_compstmt - - top_compstmt: top_stmts opt_terms - { - result = @builder.compstmt(val[0]) - } - - top_stmts: # nothing - { - result = [] - } - | top_stmt - { - result = [ val[0] ] - } - | top_stmts terms top_stmt - { - result = val[0] << val[2] - } - | error top_stmt - { - result = [ val[1] ] - } - - top_stmt: stmt - | klBEGIN tLCURLY top_compstmt tRCURLY - { - result = @builder.preexe(val[0], val[1], val[2], val[3]) - } - - bodystmt: compstmt opt_rescue opt_else opt_ensure - { - rescue_bodies = val[1] - else_t, else_ = val[2] - ensure_t, ensure_ = val[3] - - if rescue_bodies.empty? && !else_.nil? - diagnostic :warning, :useless_else, nil, else_t - end - - result = @builder.begin_body(val[0], - rescue_bodies, - else_t, else_, - ensure_t, ensure_) - } - - compstmt: stmts opt_terms - { - result = @builder.compstmt(val[0]) - } - - stmts: # nothing - { - result = [] - } - | stmt - { - result = [ val[0] ] - } - | stmts terms stmt - { - result = val[0] << val[2] - } - | error stmt - { - result = [ val[1] ] - } - - stmt: kALIAS fitem - { - @lexer.state = :expr_fname - } - fitem - { - result = @builder.alias(val[0], val[1], val[3]) - } - | kALIAS tGVAR tGVAR - { - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.gvar(val[2])) - } - | kALIAS tGVAR tBACK_REF - { - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.back_ref(val[2])) - } - | kALIAS tGVAR tNTH_REF - { - diagnostic :error, :nth_ref_alias, nil, val[2] - } - | kUNDEF undef_list - { - result = @builder.undef_method(val[0], val[1]) - } - | stmt kIF_MOD expr_value - { - result = @builder.condition_mod(val[0], nil, - val[1], val[2]) - } - | stmt kUNLESS_MOD expr_value - { - result = @builder.condition_mod(nil, val[0], - val[1], val[2]) - } - | stmt kWHILE_MOD expr_value - { - result = @builder.loop_mod(:while, val[0], val[1], val[2]) - } - | stmt kUNTIL_MOD expr_value - { - result = @builder.loop_mod(:until, val[0], val[1], val[2]) - } - | stmt kRESCUE_MOD stmt - { - rescue_body = @builder.rescue_body(val[1], - nil, nil, nil, - nil, val[2]) - - result = @builder.begin_body(val[0], [ rescue_body ]) - } - | klEND tLCURLY compstmt tRCURLY - { - result = @builder.postexe(val[0], val[1], val[2], val[3]) - } - | command_asgn - | mlhs tEQL command_call - { - result = @builder.multi_assign(val[0], val[1], val[2]) - } - | var_lhs tOP_ASGN command_call - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | primary_value tLBRACK2 opt_call_args rbracket tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - } - | primary_value tDOT tIDENTIFIER tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tCONSTANT tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | backref tOP_ASGN command_call - { - @builder.op_assign(val[0], val[1], val[2]) - } - | lhs tEQL mrhs - { - result = @builder.assign(val[0], val[1], - @builder.array(nil, val[2], nil)) - } - | mlhs tEQL arg_value - { - result = @builder.multi_assign(val[0], val[1], val[2]) - } - | mlhs tEQL mrhs - { - result = @builder.multi_assign(val[0], val[1], - @builder.array(nil, val[2], nil)) - } - | expr - - command_asgn: lhs tEQL command_call - { - result = @builder.assign(val[0], val[1], val[2]) - } - | lhs tEQL command_asgn - { - result = @builder.assign(val[0], val[1], val[2]) - } - - expr: command_call - | expr kAND expr - { - result = @builder.logical_op(:and, val[0], val[1], val[2]) - } - | expr kOR expr - { - result = @builder.logical_op(:or, val[0], val[1], val[2]) - } - | kNOT opt_nl expr - { - result = @builder.not_op(val[0], nil, val[2], nil) - } - | tBANG command_call - { - result = @builder.not_op(val[0], nil, val[1], nil) - } - | arg - - expr_value: expr - - command_call: command - | block_command - - block_command: block_call - | block_call tDOT operation2 command_args - { - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - } - | block_call tCOLON2 operation2 command_args - { - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - } - - cmd_brace_block: tLBRACE_ARG - { - @static_env.extend_dynamic - } - opt_block_param compstmt tRCURLY - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - command: operation command_args =tLOWEST - { - result = @builder.call_method(nil, nil, val[0], - nil, val[1], nil) - } - | operation command_args cmd_brace_block - { - method_call = @builder.call_method(nil, nil, val[0], - nil, val[1], nil) - - begin_t, args, body, end_t = val[2] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | primary_value tDOT operation2 command_args =tLOWEST - { - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - } - | primary_value tDOT operation2 command_args cmd_brace_block - { - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | primary_value tCOLON2 operation2 command_args =tLOWEST - { - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - } - | primary_value tCOLON2 operation2 command_args cmd_brace_block - { - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | kSUPER command_args - { - result = @builder.keyword_cmd(:super, val[0], - nil, val[1], nil) - } - | kYIELD command_args - { - result = @builder.keyword_cmd(:yield, val[0], - nil, val[1], nil) - } - | kRETURN call_args - { - result = @builder.keyword_cmd(:return, val[0], - nil, val[1], nil) - } - | kBREAK call_args - { - result = @builder.keyword_cmd(:break, val[0], - nil, val[1], nil) - } - | kNEXT call_args - { - result = @builder.keyword_cmd(:next, val[0], - nil, val[1], nil) - } - - mlhs: mlhs_basic - { - result = @builder.multi_lhs(nil, val[0], nil) - } - | tLPAREN mlhs_inner rparen - { - result = @builder.begin(val[0], val[1], val[2]) - } - - mlhs_inner: mlhs_basic - { - result = @builder.multi_lhs(nil, val[0], nil) - } - | tLPAREN mlhs_inner rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - mlhs_basic: mlhs_head - | mlhs_head mlhs_item - { - result = val[0]. - push(val[1]) - } - | mlhs_head tSTAR mlhs_node - { - result = val[0]. - push(@builder.splat(val[1], val[2])) - } - | mlhs_head tSTAR mlhs_node tCOMMA mlhs_post - { - result = val[0]. - push(@builder.splat(val[1], val[2])). - concat(val[4]) - } - | mlhs_head tSTAR - { - result = val[0]. - push(@builder.splat(val[1])) - } - | mlhs_head tSTAR tCOMMA mlhs_post - { - result = val[0]. - push(@builder.splat(val[1])). - concat(val[3]) - } - | tSTAR mlhs_node - { - result = [ @builder.splat(val[0], val[1]) ] - } - | tSTAR mlhs_node tCOMMA mlhs_post - { - result = [ @builder.splat(val[0], val[1]), - *val[3] ] - } - | tSTAR - { - result = [ @builder.splat(val[0]) ] - } - | tSTAR tCOMMA mlhs_post - { - result = [ @builder.splat(val[0]), - *val[2] ] - } - - mlhs_item: mlhs_node - | tLPAREN mlhs_inner rparen - { - result = @builder.begin(val[0], val[1], val[2]) - } - - mlhs_head: mlhs_item tCOMMA - { - result = [ val[0] ] - } - | mlhs_head mlhs_item tCOMMA - { - result = val[0] << val[1] - } - - mlhs_post: mlhs_item - { - result = [ val[0] ] - } - | mlhs_post tCOMMA mlhs_item - { - result = val[0] << val[2] - } - - mlhs_node: user_variable - { - result = @builder.assignable(val[0]) - } - | keyword_variable - { - result = @builder.assignable(val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - } - | primary_value tDOT tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tDOT tCONSTANT - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - } - | tCOLON3 tCONSTANT - { - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - } - | backref - { - result = @builder.assignable(val[0]) - } - - lhs: user_variable - { - result = @builder.assignable(val[0]) - } - | keyword_variable - { - result = @builder.assignable(val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - } - | primary_value tDOT tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tDOT tCONSTANT - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - } - | tCOLON3 tCONSTANT - { - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - } - | backref - { - result = @builder.assignable(val[0]) - } - - cname: tIDENTIFIER - { - diagnostic :error, :module_name_const, nil, val[0] - } - | tCONSTANT - - cpath: tCOLON3 cname - { - result = @builder.const_global(val[0], val[1]) - } - | cname - { - result = @builder.const(val[0]) - } - | primary_value tCOLON2 cname - { - result = @builder.const_fetch(val[0], val[1], val[2]) - } - - fname: tIDENTIFIER | tCONSTANT | tFID - | op - | reswords - - fsym: fname - { - result = @builder.symbol(val[0]) - } - | symbol - - fitem: fsym - | dsym - - undef_list: fitem - { - result = [ val[0] ] - } - | undef_list tCOMMA - { - @lexer.state = :expr_fname - } - fitem - { - result = val[0] << val[3] - } - - op: tPIPE | tCARET | tAMPER2 | tCMP | tEQ | tEQQ - | tMATCH | tNMATCH | tGT | tGEQ | tLT | tLEQ - | tNEQ | tLSHFT | tRSHFT | tPLUS | tMINUS | tSTAR2 - | tSTAR | tDIVIDE | tPERCENT | tPOW | tBANG | tTILDE - | tUPLUS | tUMINUS | tAREF | tASET | tBACK_REF2 - - reswords: k__LINE__ | k__FILE__ | k__ENCODING__ | klBEGIN | klEND - | kALIAS | kAND | kBEGIN | kBREAK | kCASE - | kCLASS | kDEF | kDEFINED | kDO | kELSE - | kELSIF | kEND | kENSURE | kFALSE | kFOR - | kIN | kMODULE | kNEXT | kNIL | kNOT - | kOR | kREDO | kRESCUE | kRETRY | kRETURN - | kSELF | kSUPER | kTHEN | kTRUE | kUNDEF - | kWHEN | kYIELD | kIF | kUNLESS | kWHILE - | kUNTIL - - arg: lhs tEQL arg - { - result = @builder.assign(val[0], val[1], val[2]) - } - | lhs tEQL arg kRESCUE_MOD arg - { - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.assign(val[0], val[1], rescue_) - } - | var_lhs tOP_ASGN arg - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | var_lhs tOP_ASGN arg kRESCUE_MOD arg - { - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.op_assign(val[0], val[1], rescue_) - } - | primary_value tLBRACK2 opt_call_args rbracket tOP_ASGN arg - { - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - } - | primary_value tDOT tIDENTIFIER tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tCONSTANT tOP_ASGN arg - { - diagnostic :error, :dynamic_const, nil, val[2], [ val[3] ] - } - | tCOLON3 tCONSTANT tOP_ASGN arg - { - diagnostic :error, :dynamic_const, nil, val[1], [ val[2] ] - } - | backref tOP_ASGN arg - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | arg tDOT2 arg - { - result = @builder.range_inclusive(val[0], val[1], val[2]) - } - | arg tDOT3 arg - { - result = @builder.range_exclusive(val[0], val[1], val[2]) - } - | arg tPLUS arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tMINUS arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tSTAR2 arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tDIVIDE arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tPERCENT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tPOW arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | tUMINUS_NUM tINTEGER tPOW arg - { - result = @builder.unary_op(val[0], - @builder.binary_op( - @builder.integer(val[1]), - val[2], val[3])) - } - | tUMINUS_NUM tFLOAT tPOW arg - { - result = @builder.unary_op(val[0], - @builder.binary_op( - @builder.float(val[1]), - val[2], val[3])) - } - | tUPLUS arg - { - result = @builder.unary_op(val[0], val[1]) - } - | tUMINUS arg - { - result = @builder.unary_op(val[0], val[1]) - } - | arg tPIPE arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tCARET arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tAMPER2 arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tCMP arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tGT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tGEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tLT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tLEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tEQQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tNEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tMATCH arg - { - result = @builder.match_op(val[0], val[1], val[2]) - } - | arg tNMATCH arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | tBANG arg - { - result = @builder.not_op(val[0], nil, val[1], nil) - } - | tTILDE arg - { - result = @builder.unary_op(val[0], val[1]) - } - | arg tLSHFT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tRSHFT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tANDOP arg - { - result = @builder.logical_op(:and, val[0], val[1], val[2]) - } - | arg tOROP arg - { - result = @builder.logical_op(:or, val[0], val[1], val[2]) - } - | kDEFINED opt_nl arg - { - result = @builder.keyword_cmd(:defined?, val[0], nil, [ val[2] ], nil) - } - - | arg tEH arg opt_nl tCOLON arg - { - result = @builder.ternary(val[0], val[1], - val[2], val[4], val[5]) - } - | primary - - arg_value: arg - - aref_args: none - | args trailer - | args tCOMMA assocs trailer - { - result = val[0] << @builder.associate(nil, val[2], nil) - } - | assocs trailer - { - result = [ @builder.associate(nil, val[0], nil) ] - } - - paren_args: tLPAREN2 opt_call_args rparen - { - result = val - } - - opt_paren_args: # nothing - { - result = [ nil, [], nil ] - } - | paren_args - - opt_call_args: # nothing - { - result = [] - } - | call_args - | args tCOMMA - | args tCOMMA assocs tCOMMA - { - result = val[0] << @builder.associate(nil, val[2], nil) - } - | assocs tCOMMA - { - result = [ @builder.associate(nil, val[0], nil) ] - } - - call_args: command - { - result = [ val[0] ] - } - | args opt_block_arg - { - result = val[0].concat(val[1]) - } - | assocs opt_block_arg - { - result = [ @builder.associate(nil, val[0], nil) ] - result.concat(val[1]) - } - | args tCOMMA assocs opt_block_arg - { - assocs = @builder.associate(nil, val[2], nil) - result = val[0] << assocs - result.concat(val[3]) - } - | block_arg - { - result = [ val[0] ] - } - - command_args: { - result = @lexer.cmdarg.dup - @lexer.cmdarg.push(true) - } - call_args - { - @lexer.cmdarg = val[0] - - result = val[1] - } - - block_arg: tAMPER arg_value - { - result = @builder.block_pass(val[0], val[1]) - } - - opt_block_arg: tCOMMA block_arg - { - result = [ val[1] ] - } - | # nothing - { - result = [] - } - - args: arg_value - { - result = [ val[0] ] - } - | tSTAR arg_value - { - result = [ @builder.splat(val[0], val[1]) ] - } - | args tCOMMA arg_value - { - result = val[0] << val[2] - } - | args tCOMMA tSTAR arg_value - { - result = val[0] << @builder.splat(val[2], val[3]) - } - - mrhs: args tCOMMA arg_value - { - result = val[0] << val[2] - } - | args tCOMMA tSTAR arg_value - { - result = val[0] << @builder.splat(val[2], val[3]) - } - | tSTAR arg_value - { - result = [ @builder.splat(val[0], val[1]) ] - } - - primary: literal - | strings - | xstring - | regexp - | words - | qwords - | var_ref - | backref - | tFID - { - result = @builder.call_method(nil, nil, val[0]) - } - | kBEGIN bodystmt kEND - { - result = @builder.begin_keyword(val[0], val[1], val[2]) - } - | tLPAREN_ARG - { - result = @lexer.cmdarg.dup - @lexer.cmdarg.clear - } - expr - { - @lexer.state = :expr_endarg - } - opt_nl tRPAREN - { - @lexer.cmdarg = val[1] - - result = @builder.begin(val[0], val[2], val[5]) - } - | tLPAREN compstmt tRPAREN - { - result = @builder.begin(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.const_fetch(val[0], val[1], val[2]) - } - | tCOLON3 tCONSTANT - { - result = @builder.const_global(val[0], val[1]) - } - | tLBRACK aref_args tRBRACK - { - result = @builder.array(val[0], val[1], val[2]) - } - | tLBRACE assoc_list tRCURLY - { - result = @builder.associate(val[0], val[1], val[2]) - } - | kRETURN - { - result = @builder.keyword_cmd(:return, val[0]) - } - | kYIELD tLPAREN2 call_args rparen - { - result = @builder.keyword_cmd(:yield, val[0], val[1], val[2], val[3]) - } - | kYIELD tLPAREN2 rparen - { - result = @builder.keyword_cmd(:yield, val[0], val[1], [], val[2]) - } - | kYIELD - { - result = @builder.keyword_cmd(:yield, val[0]) - } - | kDEFINED opt_nl tLPAREN2 expr rparen - { - result = @builder.keyword_cmd(:defined?, val[0], - val[2], [ val[3] ], val[4]) - } - | kNOT tLPAREN2 expr rparen - { - result = @builder.not_op(val[0], val[1], val[2], val[3]) - } - | kNOT tLPAREN2 rparen - { - result = @builder.not_op(val[0], val[1], nil, val[2]) - } - | operation brace_block - { - method_call = @builder.call_method(nil, nil, val[0]) - - begin_t, args, body, end_t = val[1] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | method_call - | method_call brace_block - { - begin_t, args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, args, body, end_t) - } - | tLAMBDA lambda - { - lambda_call = @builder.call_lambda(val[0]) - - args, (begin_t, body, end_t) = val[1] - result = @builder.block(lambda_call, - begin_t, args, body, end_t) - } - | kIF expr_value then compstmt if_tail kEND - { - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, val[5]) - } - | kUNLESS expr_value then compstmt opt_else kEND - { - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - else_, else_t, - val[3], val[5]) - } - | kWHILE - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.loop(:while, val[0], val[2], val[3], - val[5], val[6]) - } - | kUNTIL - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.loop(:until, val[0], val[2], val[3], - val[5], val[6]) - } - | kCASE expr_value opt_terms case_body kEND - { - *when_bodies, (else_t, else_body) = *val[3] - - result = @builder.case(val[0], val[1], - when_bodies, else_t, else_body, - val[4]) - } - | kCASE opt_terms case_body kEND - { - *when_bodies, (else_t, else_body) = *val[2] - - result = @builder.case(val[0], nil, - when_bodies, else_t, else_body, - val[3]) - } - | kFOR for_var kIN - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.for(val[0], val[1], - val[2], val[4], - val[5], val[7], val[8]) - } - | kCLASS cpath superclass - { - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - if in_def? - diagnostic :error, :class_in_def, nil, val[0] - end - - lt_t, superclass = val[2] - result = @builder.def_class(val[0], val[1], - lt_t, superclass, - val[4], val[5]) - - @lexer.pop_cmdarg - @static_env.unextend - } - | kCLASS tLSHFT expr term - { - result = @def_level - @def_level = 0 - - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - result = @builder.def_sclass(val[0], val[1], val[2], - val[5], val[6]) - - @lexer.pop_cmdarg - @static_env.unextend - - @def_level = val[4] - } - | kMODULE cpath - { - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - if in_def? - diagnostic :error, :module_in_def, nil, val[0] - end - - result = @builder.def_module(val[0], val[1], - val[3], val[4]) - - @lexer.pop_cmdarg - @static_env.unextend - } - | kDEF fname - { - @def_level += 1 - @static_env.extend_static - @lexer.push_cmdarg - } - f_arglist bodystmt kEND - { - result = @builder.def_method(val[0], val[1], - val[3], val[4], val[5]) - - @lexer.pop_cmdarg - @static_env.unextend - @def_level -= 1 - } - | kDEF singleton dot_or_colon - { - @lexer.state = :expr_fname - } - fname - { - @def_level += 1 - @static_env.extend_static - @lexer.push_cmdarg - } - f_arglist bodystmt kEND - { - result = @builder.def_singleton(val[0], val[1], val[2], - val[4], val[6], val[7], val[8]) - - @lexer.pop_cmdarg - @static_env.unextend - @def_level -= 1 - } - | kBREAK - { - result = @builder.keyword_cmd(:break, val[0]) - } - | kNEXT - { - result = @builder.keyword_cmd(:next, val[0]) - } - | kREDO - { - result = @builder.keyword_cmd(:redo, val[0]) - } - | kRETRY - { - result = @builder.keyword_cmd(:retry, val[0]) - } - - primary_value: primary - - then: term - | kTHEN - | term kTHEN - { - result = val[1] - } - - do: term - | kDO_COND - - if_tail: opt_else - | kELSIF expr_value then compstmt if_tail - { - else_t, else_ = val[4] - result = [ val[0], - @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, nil), - ] - } - - opt_else: none - | kELSE compstmt - { - result = val - } - - for_var: lhs - | mlhs - - f_marg: f_norm_arg - { - @static_env.declare val[0][0] - - result = @builder.arg(val[0]) - } - | tLPAREN f_margs rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - f_marg_list: f_marg - { - result = [ val[0] ] - } - | f_marg_list tCOMMA f_marg - { - result = val[0] << val[2] - } - - f_margs: f_marg_list - | f_marg_list tCOMMA tSTAR f_norm_arg - { - @static_env.declare val[3][0] - - result = val[0]. - push(@builder.restarg(val[2], val[3])) - } - | f_marg_list tCOMMA tSTAR f_norm_arg tCOMMA f_marg_list - { - @static_env.declare val[3][0] - - result = val[0]. - push(@builder.restarg(val[2], val[3])). - concat(val[5]) - } - | f_marg_list tCOMMA tSTAR - { - result = val[0]. - push(@builder.restarg(val[2])) - } - | f_marg_list tCOMMA tSTAR tCOMMA f_marg_list - { - result = val[0]. - push(@builder.restarg(val[2])). - concat(val[4]) - } - | tSTAR f_norm_arg - { - @static_env.declare val[1][0] - - result = [ @builder.restarg(val[0], val[1]) ] - } - | tSTAR f_norm_arg tCOMMA f_marg_list - { - @static_env.declare val[1][0] - - result = [ @builder.restarg(val[0], val[1]), - *val[3] ] - } - | tSTAR - { - result = [ @builder.restarg(val[0]) ] - } - | tSTAR tCOMMA f_marg_list - { - result = [ @builder.restarg(val[0]), - *val[2] ] - } - - block_param: f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[6]). - concat(val[7]) - } - | f_arg tCOMMA f_block_optarg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_block_optarg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA - | f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_block_optarg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_block_optarg opt_f_block_arg - { - result = val[0]. - concat(val[1]) - } - | f_block_optarg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[1]) - } - | f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_block_arg - { - result = [ val[0] ] - } - - opt_block_param: # nothing - { - result = @builder.args(nil, [], nil) - } - | block_param_def - { - @lexer.state = :expr_value - } - - block_param_def: tPIPE opt_bv_decl tPIPE - { - result = @builder.args(val[0], val[1], val[2]) - } - | tOROP - { - result = @builder.args(val[0], [], val[0]) - } - | tPIPE block_param opt_bv_decl tPIPE - { - result = @builder.args(val[0], val[1].concat(val[2]), val[3]) - } - - opt_bv_decl: # nothing - { - result = [] - } - | tSEMI bv_decls - { - result = val[1] - } - - bv_decls: bvar - { - result = [ val[0] ] - } - | bv_decls tCOMMA bvar - { - result = val[0] << val[2] - } - - bvar: tIDENTIFIER - { - result = @builder.shadowarg(val[0]) - } - | f_bad_arg - - lambda: { - @static_env.extend_dynamic - } - f_larglist lambda_body - { - result = [ val[1], val[2] ] - - @static_env.unextend - } - - f_larglist: tLPAREN2 f_args opt_bv_decl rparen - { - result = @builder.args(val[0], val[1].concat(val[2]), val[3]) - } - | f_args - { - result = @builder.args(nil, val[0], nil) - } - - lambda_body: tLAMBEG compstmt tRCURLY - { - result = [ val[0], val[1], val[2] ] - } - | kDO_LAMBDA compstmt kEND - { - result = [ val[0], val[1], val[2] ] - } - - do_block: kDO_BLOCK - { - @static_env.extend_dynamic - } - opt_block_param compstmt kEND - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - block_call: command do_block - { - begin_t, block_args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, block_args, body, end_t) - } - | block_call tDOT operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | block_call tCOLON2 operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - - method_call: operation paren_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.call_method(nil, nil, val[0], - lparen_t, args, rparen_t) - } - | primary_value tDOT operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 operation2 paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 operation3 - { - result = @builder.call_method(val[0], val[1], val[2]) - } - | primary_value tDOT paren_args - { - lparen_t, args, rparen_t = val[2] - result = @builder.call_method(val[0], val[1], nil, - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 paren_args - { - lparen_t, args, rparen_t = val[2] - result = @builder.call_method(val[0], val[1], nil, - lparen_t, args, rparen_t) - } - | kSUPER paren_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.keyword_cmd(:super, val[0], - lparen_t, args, rparen_t) - } - | kSUPER - { - result = @builder.keyword_cmd(:zsuper, val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index(val[0], val[1], val[2], val[3]) - } - - brace_block: tLCURLY - { - @static_env.extend_dynamic - } - opt_block_param compstmt tRCURLY - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - | kDO - { - @static_env.extend_dynamic - } - opt_block_param compstmt kEND - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - case_body: kWHEN args then compstmt cases - { - result = [ @builder.when(val[0], val[1], val[2], val[3]), - *val[4] ] - } - - cases: opt_else - { - result = [ val[0] ] - } - | case_body - - opt_rescue: kRESCUE exc_list exc_var then compstmt opt_rescue - { - assoc_t, exc_var = val[2] - - if val[1] - exc_list = @builder.array(nil, val[1], nil) - end - - result = [ @builder.rescue_body(val[0], - exc_list, assoc_t, exc_var, - val[3], val[4]), - *val[5] ] - } - | - { - result = [] - } - - exc_list: arg_value - { - result = [ val[0] ] - } - | mrhs - | none - - exc_var: tASSOC lhs - { - result = [ val[0], val[1] ] - } - | none - - opt_ensure: kENSURE compstmt - { - result = [ val[0], val[1] ] - } - | none - - literal: numeric - | symbol - | dsym - - strings: string - { - result = @builder.string_compose(nil, val[0], nil) - } - - string: string1 - { - result = [ val[0] ] - } - | string string1 - { - result = val[0] << val[1] - } - - string1: tSTRING_BEG string_contents tSTRING_END - { - result = @builder.string_compose(val[0], val[1], val[2]) - } - | tSTRING - { - result = @builder.string(val[0]) - } - | tCHARACTER - { - result = @builder.character(val[0]) - } - - xstring: tXSTRING_BEG xstring_contents tSTRING_END - { - result = @builder.xstring_compose(val[0], val[1], val[2]) - } - - regexp: tREGEXP_BEG regexp_contents tSTRING_END tREGEXP_OPT - { - opts = @builder.regexp_options(val[3]) - result = @builder.regexp_compose(val[0], val[1], val[2], opts) - } - - words: tWORDS_BEG word_list tSTRING_END - { - result = @builder.words_compose(val[0], val[1], val[2]) - } - - word_list: # nothing - { - result = [] - } - | word_list word tSPACE - { - result = val[0] << @builder.word(val[1]) - } - - word: string_content - { - result = [ val[0] ] - } - | word string_content - { - result = val[0] << val[1] - } - - qwords: tQWORDS_BEG qword_list tSTRING_END - { - result = @builder.words_compose(val[0], val[1], val[2]) - } - - qword_list: # nothing - { - result = [] - } - | qword_list tSTRING_CONTENT tSPACE - { - result = val[0] << @builder.string_internal(val[1]) - } - - string_contents: # nothing - { - result = [] - } - | string_contents string_content - { - result = val[0] << val[1] - } - -xstring_contents: # nothing - { - result = [] - } - | xstring_contents string_content - { - result = val[0] << val[1] - } - -regexp_contents: # nothing - { - result = [] - } - | regexp_contents string_content - { - result = val[0] << val[1] - } - - string_content: tSTRING_CONTENT - { - result = @builder.string_internal(val[0]) - } - | tSTRING_DVAR string_dvar - { - result = val[1] - } - | tSTRING_DBEG - { - @lexer.cond.push(false) - @lexer.cmdarg.push(false) - } - compstmt tRCURLY - { - @lexer.cond.lexpop - @lexer.cmdarg.lexpop - - result = @builder.begin(val[0], val[2], val[3]) - } - - string_dvar: tGVAR - { - result = @builder.gvar(val[0]) - } - | tIVAR - { - result = @builder.ivar(val[0]) - } - | tCVAR - { - result = @builder.cvar(val[0]) - } - | backref - - - symbol: tSYMBOL - { - result = @builder.symbol(val[0]) - } - - dsym: tSYMBEG xstring_contents tSTRING_END - { - result = @builder.symbol_compose(val[0], val[1], val[2]) - } - - numeric: tINTEGER - { - result = @builder.integer(val[0]) - } - | tFLOAT - { - result = @builder.float(val[0]) - } - | tUMINUS_NUM tINTEGER =tLOWEST - { - result = @builder.negate(val[0], - @builder.integer(val[1])) - } - | tUMINUS_NUM tFLOAT =tLOWEST - { - result = @builder.negate(val[0], - @builder.float(val[1])) - } - - user_variable: tIDENTIFIER - { - result = @builder.ident(val[0]) - } - | tIVAR - { - result = @builder.ivar(val[0]) - } - | tGVAR - { - result = @builder.gvar(val[0]) - } - | tCONSTANT - { - result = @builder.const(val[0]) - } - | tCVAR - { - result = @builder.cvar(val[0]) - } - -keyword_variable: kNIL - { - result = @builder.nil(val[0]) - } - | kSELF - { - result = @builder.self(val[0]) - } - | kTRUE - { - result = @builder.true(val[0]) - } - | kFALSE - { - result = @builder.false(val[0]) - } - | k__FILE__ - { - result = @builder.__FILE__(val[0]) - } - | k__LINE__ - { - result = @builder.__LINE__(val[0]) - } - | k__ENCODING__ - { - result = @builder.__ENCODING__(val[0]) - } - - var_ref: user_variable - { - result = @builder.accessible(val[0]) - } - | keyword_variable - { - result = @builder.accessible(val[0]) - } - - var_lhs: user_variable - { - result = @builder.assignable(val[0]) - } - | keyword_variable - { - result = @builder.assignable(val[0]) - } - - backref: tNTH_REF - { - result = @builder.nth_ref(val[0]) - } - | tBACK_REF - { - result = @builder.back_ref(val[0]) - } - - superclass: term - { - result = nil - } - | tLT expr_value term - { - result = [ val[0], val[1] ] - } - | error term - { - yyerrok - result = nil - } - - f_arglist: tLPAREN2 f_args rparen - { - result = @builder.args(val[0], val[1], val[2]) - - @lexer.state = :expr_value - } - | f_args term - { - result = @builder.args(nil, val[0], nil) - } - - f_args: f_arg tCOMMA f_optarg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[6]). - concat(val[7]) - } - | f_arg tCOMMA f_optarg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_optarg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg opt_f_block_arg - { - result = val[0]. - concat(val[1]) - } - | f_optarg tCOMMA f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_optarg opt_f_block_arg - { - result = val[0]. - concat(val[1]) - } - | f_optarg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_rest_arg opt_f_block_arg - { - result = val[0]. - concat(val[1]) - } - | f_rest_arg tCOMMA f_arg opt_f_block_arg - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_block_arg - { - result = [ val[0] ] - } - | # nothing - { - result = [] - } - - f_bad_arg: tCONSTANT - { - diagnostic :error, :argument_const, nil, val[0] - } - | tIVAR - { - diagnostic :error, :argument_ivar, nil, val[0] - } - | tGVAR - { - diagnostic :error, :argument_gvar, nil, val[0] - } - | tCVAR - { - diagnostic :error, :argument_cvar, nil, val[0] - } - - f_norm_arg: f_bad_arg - | tIDENTIFIER - - f_arg_item: f_norm_arg - { - @static_env.declare val[0][0] - - result = @builder.arg(val[0]) - } - | tLPAREN f_margs rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - f_arg: f_arg_item - { - result = [ val[0] ] - } - | f_arg tCOMMA f_arg_item - { - result = val[0] << val[2] - } - - f_opt: tIDENTIFIER tEQL arg_value - { - @static_env.declare val[0][0] - - result = @builder.optarg(val[0], val[1], val[2]) - } - - f_block_opt: tIDENTIFIER tEQL primary_value - { - @static_env.declare val[0][0] - - result = @builder.optarg(val[0], val[1], val[2]) - } - - f_block_optarg: f_block_opt - { - result = [ val[0] ] - } - | f_block_optarg tCOMMA f_block_opt - { - result = val[0] << val[2] - } - - f_optarg: f_opt - { - result = [ val[0] ] - } - | f_optarg tCOMMA f_opt - { - result = val[0] << val[2] - } - - restarg_mark: tSTAR2 | tSTAR - - f_rest_arg: restarg_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = [ @builder.restarg(val[0], val[1]) ] - } - | restarg_mark - { - result = [ @builder.restarg(val[0]) ] - } - - blkarg_mark: tAMPER2 | tAMPER - - f_block_arg: blkarg_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = @builder.blockarg(val[0], val[1]) - } - - opt_f_block_arg: tCOMMA f_block_arg - { - result = [ val[1] ] - } - | # nothing - { - result = [] - } - - singleton: var_ref - | tLPAREN2 expr rparen - { - result = val[1] - } - - assoc_list: # nothing - { - result = [] - } - | assocs trailer - - assocs: assoc - { - result = [ val[0] ] - } - | assocs tCOMMA assoc - { - result = val[0] << val[2] - } - - assoc: arg_value tASSOC arg_value - { - result = @builder.pair(val[0], val[1], val[2]) - } - | tLABEL arg_value - { - result = @builder.pair_keyword(val[0], val[1]) - } - - operation: tIDENTIFIER | tCONSTANT | tFID - operation2: tIDENTIFIER | tCONSTANT | tFID | op - operation3: tIDENTIFIER | tFID | op - dot_or_colon: tDOT | tCOLON2 - opt_terms: | terms - opt_nl: | tNL - rparen: opt_nl tRPAREN - { - result = val[1] - } - rbracket: opt_nl tRBRACK - { - result = val[1] - } - trailer: | tNL | tCOMMA - - term: tSEMI - { - yyerrok - } - | tNL - - terms: term - | terms tSEMI - - none: # nothing - { - result = nil - } -end - ----- header - -require 'parser' - -Parser.check_for_encoding_support - ----- inner - - def version - 19 - end - - def default_encoding - Encoding::BINARY - end diff --git a/test/racc/assets/ruby20.y b/test/racc/assets/ruby20.y deleted file mode 100644 index 6e07734778..0000000000 --- a/test/racc/assets/ruby20.y +++ /dev/null @@ -1,2350 +0,0 @@ -# Copyright (c) 2013 Peter Zotov <whitequark@whitequark.org> -# -# Parts of the source are derived from ruby_parser: -# Copyright (c) Ryan Davis, seattle.rb -# -# MIT License -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -class Parser::Ruby20 - -token kCLASS kMODULE kDEF kUNDEF kBEGIN kRESCUE kENSURE kEND kIF kUNLESS - kTHEN kELSIF kELSE kCASE kWHEN kWHILE kUNTIL kFOR kBREAK kNEXT - kREDO kRETRY kIN kDO kDO_COND kDO_BLOCK kDO_LAMBDA kRETURN kYIELD kSUPER - kSELF kNIL kTRUE kFALSE kAND kOR kNOT kIF_MOD kUNLESS_MOD kWHILE_MOD - kUNTIL_MOD kRESCUE_MOD kALIAS kDEFINED klBEGIN klEND k__LINE__ - k__FILE__ k__ENCODING__ tIDENTIFIER tFID tGVAR tIVAR tCONSTANT - tLABEL tCVAR tNTH_REF tBACK_REF tSTRING_CONTENT tINTEGER tFLOAT - tREGEXP_END tUPLUS tUMINUS tUMINUS_NUM tPOW tCMP tEQ tEQQ tNEQ - tGEQ tLEQ tANDOP tOROP tMATCH tNMATCH tDOT tDOT2 tDOT3 tAREF - tASET tLSHFT tRSHFT tCOLON2 tCOLON3 tOP_ASGN tASSOC tLPAREN - tLPAREN2 tRPAREN tLPAREN_ARG tLBRACK tLBRACK2 tRBRACK tLBRACE - tLBRACE_ARG tSTAR tSTAR2 tAMPER tAMPER2 tTILDE tPERCENT tDIVIDE - tDSTAR tPLUS tMINUS tLT tGT tPIPE tBANG tCARET tLCURLY tRCURLY - tBACK_REF2 tSYMBEG tSTRING_BEG tXSTRING_BEG tREGEXP_BEG tREGEXP_OPT - tWORDS_BEG tQWORDS_BEG tSYMBOLS_BEG tQSYMBOLS_BEG tSTRING_DBEG - tSTRING_DVAR tSTRING_END tSTRING_DEND tSTRING tSYMBOL - tNL tEH tCOLON tCOMMA tSPACE tSEMI tLAMBDA tLAMBEG tCHARACTER - -prechigh - right tBANG tTILDE tUPLUS - right tPOW - right tUMINUS_NUM tUMINUS - left tSTAR2 tDIVIDE tPERCENT - left tPLUS tMINUS - left tLSHFT tRSHFT - left tAMPER2 - left tPIPE tCARET - left tGT tGEQ tLT tLEQ - nonassoc tCMP tEQ tEQQ tNEQ tMATCH tNMATCH - left tANDOP - left tOROP - nonassoc tDOT2 tDOT3 - right tEH tCOLON - left kRESCUE_MOD - right tEQL tOP_ASGN - nonassoc kDEFINED - right kNOT - left kOR kAND - nonassoc kIF_MOD kUNLESS_MOD kWHILE_MOD kUNTIL_MOD - nonassoc tLBRACE_ARG - nonassoc tLOWEST -preclow - -rule - - program: top_compstmt - - top_compstmt: top_stmts opt_terms - { - result = @builder.compstmt(val[0]) - } - - top_stmts: # nothing - { - result = [] - } - | top_stmt - { - result = [ val[0] ] - } - | top_stmts terms top_stmt - { - result = val[0] << val[2] - } - | error top_stmt - { - result = [ val[1] ] - } - - top_stmt: stmt - | klBEGIN tLCURLY top_compstmt tRCURLY - { - result = @builder.preexe(val[0], val[1], val[2], val[3]) - } - - bodystmt: compstmt opt_rescue opt_else opt_ensure - { - rescue_bodies = val[1] - else_t, else_ = val[2] - ensure_t, ensure_ = val[3] - - if rescue_bodies.empty? && !else_.nil? - diagnostic :warning, :useless_else, nil, else_t - end - - result = @builder.begin_body(val[0], - rescue_bodies, - else_t, else_, - ensure_t, ensure_) - } - - compstmt: stmts opt_terms - { - result = @builder.compstmt(val[0]) - } - - stmts: # nothing - { - result = [] - } - | stmt_or_begin - { - result = [ val[0] ] - } - | stmts terms stmt_or_begin - { - result = val[0] << val[2] - } - | error stmt - { - result = [ val[1] ] - } - - stmt_or_begin: stmt - | klBEGIN tLCURLY top_compstmt tRCURLY - { - if in_def? - diagnostic :error, :begin_in_method, nil, val[0] - end - - result = @builder.preexe(val[0], val[1], val[2], val[3]) - } - - stmt: kALIAS fitem - { - @lexer.state = :expr_fname - } - fitem - { - result = @builder.alias(val[0], val[1], val[3]) - } - | kALIAS tGVAR tGVAR - { - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.gvar(val[2])) - } - | kALIAS tGVAR tBACK_REF - { - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.back_ref(val[2])) - } - | kALIAS tGVAR tNTH_REF - { - diagnostic :error, :nth_ref_alias, nil, val[2] - } - | kUNDEF undef_list - { - result = @builder.undef_method(val[0], val[1]) - } - | stmt kIF_MOD expr_value - { - result = @builder.condition_mod(val[0], nil, - val[1], val[2]) - } - | stmt kUNLESS_MOD expr_value - { - result = @builder.condition_mod(nil, val[0], - val[1], val[2]) - } - | stmt kWHILE_MOD expr_value - { - result = @builder.loop_mod(:while, val[0], val[1], val[2]) - } - | stmt kUNTIL_MOD expr_value - { - result = @builder.loop_mod(:until, val[0], val[1], val[2]) - } - | stmt kRESCUE_MOD stmt - { - rescue_body = @builder.rescue_body(val[1], - nil, nil, nil, - nil, val[2]) - - result = @builder.begin_body(val[0], [ rescue_body ]) - } - | klEND tLCURLY compstmt tRCURLY - { - result = @builder.postexe(val[0], val[1], val[2], val[3]) - } - | command_asgn - | mlhs tEQL command_call - { - result = @builder.multi_assign(val[0], val[1], val[2]) - } - | var_lhs tOP_ASGN command_call - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | primary_value tLBRACK2 opt_call_args rbracket tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - } - | primary_value tDOT tIDENTIFIER tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tCONSTANT tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | backref tOP_ASGN command_call - { - @builder.op_assign(val[0], val[1], val[2]) - } - | lhs tEQL mrhs - { - result = @builder.assign(val[0], val[1], - @builder.array(nil, val[2], nil)) - } - | mlhs tEQL arg_value - { - result = @builder.multi_assign(val[0], val[1], val[2]) - } - | mlhs tEQL mrhs - { - result = @builder.multi_assign(val[0], val[1], - @builder.array(nil, val[2], nil)) - } - | expr - - command_asgn: lhs tEQL command_call - { - result = @builder.assign(val[0], val[1], val[2]) - } - | lhs tEQL command_asgn - { - result = @builder.assign(val[0], val[1], val[2]) - } - - expr: command_call - | expr kAND expr - { - result = @builder.logical_op(:and, val[0], val[1], val[2]) - } - | expr kOR expr - { - result = @builder.logical_op(:or, val[0], val[1], val[2]) - } - | kNOT opt_nl expr - { - result = @builder.not_op(val[0], nil, val[2], nil) - } - | tBANG command_call - { - result = @builder.not_op(val[0], nil, val[1], nil) - } - | arg - - expr_value: expr - - command_call: command - | block_command - - block_command: block_call - | block_call dot_or_colon operation2 command_args - { - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - } - - cmd_brace_block: tLBRACE_ARG - { - @static_env.extend_dynamic - } - opt_block_param compstmt tRCURLY - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - fcall: operation - - command: fcall command_args =tLOWEST - { - result = @builder.call_method(nil, nil, val[0], - nil, val[1], nil) - } - | fcall command_args cmd_brace_block - { - method_call = @builder.call_method(nil, nil, val[0], - nil, val[1], nil) - - begin_t, args, body, end_t = val[2] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | primary_value tDOT operation2 command_args =tLOWEST - { - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - } - | primary_value tDOT operation2 command_args cmd_brace_block - { - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | primary_value tCOLON2 operation2 command_args =tLOWEST - { - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - } - | primary_value tCOLON2 operation2 command_args cmd_brace_block - { - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | kSUPER command_args - { - result = @builder.keyword_cmd(:super, val[0], - nil, val[1], nil) - } - | kYIELD command_args - { - result = @builder.keyword_cmd(:yield, val[0], - nil, val[1], nil) - } - | kRETURN call_args - { - result = @builder.keyword_cmd(:return, val[0], - nil, val[1], nil) - } - | kBREAK call_args - { - result = @builder.keyword_cmd(:break, val[0], - nil, val[1], nil) - } - | kNEXT call_args - { - result = @builder.keyword_cmd(:next, val[0], - nil, val[1], nil) - } - - mlhs: mlhs_basic - { - result = @builder.multi_lhs(nil, val[0], nil) - } - | tLPAREN mlhs_inner rparen - { - result = @builder.begin(val[0], val[1], val[2]) - } - - mlhs_inner: mlhs_basic - { - result = @builder.multi_lhs(nil, val[0], nil) - } - | tLPAREN mlhs_inner rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - mlhs_basic: mlhs_head - | mlhs_head mlhs_item - { - result = val[0]. - push(val[1]) - } - | mlhs_head tSTAR mlhs_node - { - result = val[0]. - push(@builder.splat(val[1], val[2])) - } - | mlhs_head tSTAR mlhs_node tCOMMA mlhs_post - { - result = val[0]. - push(@builder.splat(val[1], val[2])). - concat(val[4]) - } - | mlhs_head tSTAR - { - result = val[0]. - push(@builder.splat(val[1])) - } - | mlhs_head tSTAR tCOMMA mlhs_post - { - result = val[0]. - push(@builder.splat(val[1])). - concat(val[3]) - } - | tSTAR mlhs_node - { - result = [ @builder.splat(val[0], val[1]) ] - } - | tSTAR mlhs_node tCOMMA mlhs_post - { - result = [ @builder.splat(val[0], val[1]), - *val[3] ] - } - | tSTAR - { - result = [ @builder.splat(val[0]) ] - } - | tSTAR tCOMMA mlhs_post - { - result = [ @builder.splat(val[0]), - *val[2] ] - } - - mlhs_item: mlhs_node - | tLPAREN mlhs_inner rparen - { - result = @builder.begin(val[0], val[1], val[2]) - } - - mlhs_head: mlhs_item tCOMMA - { - result = [ val[0] ] - } - | mlhs_head mlhs_item tCOMMA - { - result = val[0] << val[1] - } - - mlhs_post: mlhs_item - { - result = [ val[0] ] - } - | mlhs_post tCOMMA mlhs_item - { - result = val[0] << val[2] - } - - mlhs_node: user_variable - { - result = @builder.assignable(val[0]) - } - | keyword_variable - { - result = @builder.assignable(val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - } - | primary_value tDOT tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tDOT tCONSTANT - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - } - | tCOLON3 tCONSTANT - { - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - } - | backref - { - result = @builder.assignable(val[0]) - } - - lhs: user_variable - { - result = @builder.assignable(val[0]) - } - | keyword_variable - { - result = @builder.assignable(val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - } - | primary_value tDOT tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tDOT tCONSTANT - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - } - | tCOLON3 tCONSTANT - { - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - } - | backref - { - result = @builder.assignable(val[0]) - } - - cname: tIDENTIFIER - { - diagnostic :error, :module_name_const, nil, val[0] - } - | tCONSTANT - - cpath: tCOLON3 cname - { - result = @builder.const_global(val[0], val[1]) - } - | cname - { - result = @builder.const(val[0]) - } - | primary_value tCOLON2 cname - { - result = @builder.const_fetch(val[0], val[1], val[2]) - } - - fname: tIDENTIFIER | tCONSTANT | tFID - | op - | reswords - - fsym: fname - { - result = @builder.symbol(val[0]) - } - | symbol - - fitem: fsym - | dsym - - undef_list: fitem - { - result = [ val[0] ] - } - | undef_list tCOMMA - { - @lexer.state = :expr_fname - } - fitem - { - result = val[0] << val[3] - } - - op: tPIPE | tCARET | tAMPER2 | tCMP | tEQ | tEQQ - | tMATCH | tNMATCH | tGT | tGEQ | tLT | tLEQ - | tNEQ | tLSHFT | tRSHFT | tPLUS | tMINUS | tSTAR2 - | tSTAR | tDIVIDE | tPERCENT | tPOW | tBANG | tTILDE - | tUPLUS | tUMINUS | tAREF | tASET | tDSTAR | tBACK_REF2 - - reswords: k__LINE__ | k__FILE__ | k__ENCODING__ | klBEGIN | klEND - | kALIAS | kAND | kBEGIN | kBREAK | kCASE - | kCLASS | kDEF | kDEFINED | kDO | kELSE - | kELSIF | kEND | kENSURE | kFALSE | kFOR - | kIN | kMODULE | kNEXT | kNIL | kNOT - | kOR | kREDO | kRESCUE | kRETRY | kRETURN - | kSELF | kSUPER | kTHEN | kTRUE | kUNDEF - | kWHEN | kYIELD | kIF | kUNLESS | kWHILE - | kUNTIL - - arg: lhs tEQL arg - { - result = @builder.assign(val[0], val[1], val[2]) - } - | lhs tEQL arg kRESCUE_MOD arg - { - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.assign(val[0], val[1], rescue_) - } - | var_lhs tOP_ASGN arg - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | var_lhs tOP_ASGN arg kRESCUE_MOD arg - { - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.op_assign(val[0], val[1], rescue_) - } - | primary_value tLBRACK2 opt_call_args rbracket tOP_ASGN arg - { - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - } - | primary_value tDOT tIDENTIFIER tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tCONSTANT tOP_ASGN arg - { - const = @builder.const_op_assignable( - @builder.const_fetch(val[0], val[1], val[2])) - result = @builder.op_assign(const, val[3], val[4]) - } - | tCOLON3 tCONSTANT tOP_ASGN arg - { - const = @builder.const_op_assignable( - @builder.const_global(val[0], val[1])) - result = @builder.op_assign(const, val[2], val[3]) - } - | backref tOP_ASGN arg - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | arg tDOT2 arg - { - result = @builder.range_inclusive(val[0], val[1], val[2]) - } - | arg tDOT3 arg - { - result = @builder.range_exclusive(val[0], val[1], val[2]) - } - | arg tPLUS arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tMINUS arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tSTAR2 arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tDIVIDE arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tPERCENT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tPOW arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | tUMINUS_NUM tINTEGER tPOW arg - { - result = @builder.unary_op(val[0], - @builder.binary_op( - @builder.integer(val[1]), - val[2], val[3])) - } - | tUMINUS_NUM tFLOAT tPOW arg - { - result = @builder.unary_op(val[0], - @builder.binary_op( - @builder.float(val[1]), - val[2], val[3])) - } - | tUPLUS arg - { - result = @builder.unary_op(val[0], val[1]) - } - | tUMINUS arg - { - result = @builder.unary_op(val[0], val[1]) - } - | arg tPIPE arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tCARET arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tAMPER2 arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tCMP arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tGT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tGEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tLT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tLEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tEQQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tNEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tMATCH arg - { - result = @builder.match_op(val[0], val[1], val[2]) - } - | arg tNMATCH arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | tBANG arg - { - result = @builder.not_op(val[0], nil, val[1], nil) - } - | tTILDE arg - { - result = @builder.unary_op(val[0], val[1]) - } - | arg tLSHFT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tRSHFT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tANDOP arg - { - result = @builder.logical_op(:and, val[0], val[1], val[2]) - } - | arg tOROP arg - { - result = @builder.logical_op(:or, val[0], val[1], val[2]) - } - | kDEFINED opt_nl arg - { - result = @builder.keyword_cmd(:defined?, val[0], nil, [ val[2] ], nil) - } - - | arg tEH arg opt_nl tCOLON arg - { - result = @builder.ternary(val[0], val[1], - val[2], val[4], val[5]) - } - | primary - - arg_value: arg - - aref_args: none - | args trailer - | args tCOMMA assocs trailer - { - result = val[0] << @builder.associate(nil, val[2], nil) - } - | assocs trailer - { - result = [ @builder.associate(nil, val[0], nil) ] - } - - paren_args: tLPAREN2 opt_call_args rparen - { - result = val - } - - opt_paren_args: # nothing - { - result = [ nil, [], nil ] - } - | paren_args - - opt_call_args: # nothing - { - result = [] - } - | call_args - | args tCOMMA - | args tCOMMA assocs tCOMMA - { - result = val[0] << @builder.associate(nil, val[2], nil) - } - | assocs tCOMMA - { - result = [ @builder.associate(nil, val[0], nil) ] - } - - call_args: command - { - result = [ val[0] ] - } - | args opt_block_arg - { - result = val[0].concat(val[1]) - } - | assocs opt_block_arg - { - result = [ @builder.associate(nil, val[0], nil) ] - result.concat(val[1]) - } - | args tCOMMA assocs opt_block_arg - { - assocs = @builder.associate(nil, val[2], nil) - result = val[0] << assocs - result.concat(val[3]) - } - | block_arg - { - result = [ val[0] ] - } - - command_args: { - result = @lexer.cmdarg.dup - @lexer.cmdarg.push(true) - } - call_args - { - @lexer.cmdarg = val[0] - - result = val[1] - } - - block_arg: tAMPER arg_value - { - result = @builder.block_pass(val[0], val[1]) - } - - opt_block_arg: tCOMMA block_arg - { - result = [ val[1] ] - } - | # nothing - { - result = [] - } - - args: arg_value - { - result = [ val[0] ] - } - | tSTAR arg_value - { - result = [ @builder.splat(val[0], val[1]) ] - } - | args tCOMMA arg_value - { - result = val[0] << val[2] - } - | args tCOMMA tSTAR arg_value - { - result = val[0] << @builder.splat(val[2], val[3]) - } - - mrhs: args tCOMMA arg_value - { - result = val[0] << val[2] - } - | args tCOMMA tSTAR arg_value - { - result = val[0] << @builder.splat(val[2], val[3]) - } - | tSTAR arg_value - { - result = [ @builder.splat(val[0], val[1]) ] - } - - primary: literal - | strings - | xstring - | regexp - | words - | qwords - | symbols - | qsymbols - | var_ref - | backref - | tFID - { - result = @builder.call_method(nil, nil, val[0]) - } - | kBEGIN - { - result = @lexer.cmdarg.dup - @lexer.cmdarg.clear - } - bodystmt kEND - { - @lexer.cmdarg = val[1] - - result = @builder.begin_keyword(val[0], val[2], val[3]) - } - | tLPAREN_ARG - { - result = @lexer.cmdarg.dup - @lexer.cmdarg.clear - } - expr - { - @lexer.state = :expr_endarg - } - opt_nl tRPAREN - { - @lexer.cmdarg = val[1] - - result = @builder.begin(val[0], val[2], val[5]) - } - | tLPAREN_ARG - { - @lexer.state = :expr_endarg - } - opt_nl tRPAREN - { - result = @builder.begin(val[0], nil, val[3]) - } - | tLPAREN compstmt tRPAREN - { - result = @builder.begin(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.const_fetch(val[0], val[1], val[2]) - } - | tCOLON3 tCONSTANT - { - result = @builder.const_global(val[0], val[1]) - } - | tLBRACK aref_args tRBRACK - { - result = @builder.array(val[0], val[1], val[2]) - } - | tLBRACE assoc_list tRCURLY - { - result = @builder.associate(val[0], val[1], val[2]) - } - | kRETURN - { - result = @builder.keyword_cmd(:return, val[0]) - } - | kYIELD tLPAREN2 call_args rparen - { - result = @builder.keyword_cmd(:yield, val[0], val[1], val[2], val[3]) - } - | kYIELD tLPAREN2 rparen - { - result = @builder.keyword_cmd(:yield, val[0], val[1], [], val[2]) - } - | kYIELD - { - result = @builder.keyword_cmd(:yield, val[0]) - } - | kDEFINED opt_nl tLPAREN2 expr rparen - { - result = @builder.keyword_cmd(:defined?, val[0], - val[2], [ val[3] ], val[4]) - } - | kNOT tLPAREN2 expr rparen - { - result = @builder.not_op(val[0], val[1], val[2], val[3]) - } - | kNOT tLPAREN2 rparen - { - result = @builder.not_op(val[0], val[1], nil, val[2]) - } - | fcall brace_block - { - method_call = @builder.call_method(nil, nil, val[0]) - - begin_t, args, body, end_t = val[1] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | method_call - | method_call brace_block - { - begin_t, args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, args, body, end_t) - } - | tLAMBDA lambda - { - lambda_call = @builder.call_lambda(val[0]) - - args, (begin_t, body, end_t) = val[1] - result = @builder.block(lambda_call, - begin_t, args, body, end_t) - } - | kIF expr_value then compstmt if_tail kEND - { - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, val[5]) - } - | kUNLESS expr_value then compstmt opt_else kEND - { - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - else_, else_t, - val[3], val[5]) - } - | kWHILE - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.loop(:while, val[0], val[2], val[3], - val[5], val[6]) - } - | kUNTIL - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.loop(:until, val[0], val[2], val[3], - val[5], val[6]) - } - | kCASE expr_value opt_terms case_body kEND - { - *when_bodies, (else_t, else_body) = *val[3] - - result = @builder.case(val[0], val[1], - when_bodies, else_t, else_body, - val[4]) - } - | kCASE opt_terms case_body kEND - { - *when_bodies, (else_t, else_body) = *val[2] - - result = @builder.case(val[0], nil, - when_bodies, else_t, else_body, - val[3]) - } - | kFOR for_var kIN - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.for(val[0], val[1], - val[2], val[4], - val[5], val[7], val[8]) - } - | kCLASS cpath superclass - { - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - if in_def? - diagnostic :error, :class_in_def, nil, val[0] - end - - lt_t, superclass = val[2] - result = @builder.def_class(val[0], val[1], - lt_t, superclass, - val[4], val[5]) - - @lexer.pop_cmdarg - @static_env.unextend - } - | kCLASS tLSHFT expr term - { - result = @def_level - @def_level = 0 - - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - result = @builder.def_sclass(val[0], val[1], val[2], - val[5], val[6]) - - @lexer.pop_cmdarg - @static_env.unextend - - @def_level = val[4] - } - | kMODULE cpath - { - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - if in_def? - diagnostic :error, :module_in_def, nil, val[0] - end - - result = @builder.def_module(val[0], val[1], - val[3], val[4]) - - @lexer.pop_cmdarg - @static_env.unextend - } - | kDEF fname - { - @def_level += 1 - @static_env.extend_static - @lexer.push_cmdarg - } - f_arglist bodystmt kEND - { - result = @builder.def_method(val[0], val[1], - val[3], val[4], val[5]) - - @lexer.pop_cmdarg - @static_env.unextend - @def_level -= 1 - } - | kDEF singleton dot_or_colon - { - @lexer.state = :expr_fname - } - fname - { - @def_level += 1 - @static_env.extend_static - @lexer.push_cmdarg - } - f_arglist bodystmt kEND - { - result = @builder.def_singleton(val[0], val[1], val[2], - val[4], val[6], val[7], val[8]) - - @lexer.pop_cmdarg - @static_env.unextend - @def_level -= 1 - } - | kBREAK - { - result = @builder.keyword_cmd(:break, val[0]) - } - | kNEXT - { - result = @builder.keyword_cmd(:next, val[0]) - } - | kREDO - { - result = @builder.keyword_cmd(:redo, val[0]) - } - | kRETRY - { - result = @builder.keyword_cmd(:retry, val[0]) - } - - primary_value: primary - - then: term - | kTHEN - | term kTHEN - { - result = val[1] - } - - do: term - | kDO_COND - - if_tail: opt_else - | kELSIF expr_value then compstmt if_tail - { - else_t, else_ = val[4] - result = [ val[0], - @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, nil), - ] - } - - opt_else: none - | kELSE compstmt - { - result = val - } - - for_var: lhs - | mlhs - - f_marg: f_norm_arg - { - @static_env.declare val[0][0] - - result = @builder.arg(val[0]) - } - | tLPAREN f_margs rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - f_marg_list: f_marg - { - result = [ val[0] ] - } - | f_marg_list tCOMMA f_marg - { - result = val[0] << val[2] - } - - f_margs: f_marg_list - | f_marg_list tCOMMA tSTAR f_norm_arg - { - @static_env.declare val[3][0] - - result = val[0]. - push(@builder.restarg(val[2], val[3])) - } - | f_marg_list tCOMMA tSTAR f_norm_arg tCOMMA f_marg_list - { - @static_env.declare val[3][0] - - result = val[0]. - push(@builder.restarg(val[2], val[3])). - concat(val[5]) - } - | f_marg_list tCOMMA tSTAR - { - result = val[0]. - push(@builder.restarg(val[2])) - } - | f_marg_list tCOMMA tSTAR tCOMMA f_marg_list - { - result = val[0]. - push(@builder.restarg(val[2])). - concat(val[4]) - } - | tSTAR f_norm_arg - { - @static_env.declare val[1][0] - - result = [ @builder.restarg(val[0], val[1]) ] - } - | tSTAR f_norm_arg tCOMMA f_marg_list - { - @static_env.declare val[1][0] - - result = [ @builder.restarg(val[0], val[1]), - *val[3] ] - } - | tSTAR - { - result = [ @builder.restarg(val[0]) ] - } - | tSTAR tCOMMA f_marg_list - { - result = [ @builder.restarg(val[0]), - *val[2] ] - } - - block_args_tail: f_block_kwarg tCOMMA f_kwrest opt_f_block_arg - { - result = val[0].concat(val[2]).concat(val[3]) - } - | f_block_kwarg opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_kwrest opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_block_arg - { - result = [ val[0] ] - } - -opt_block_args_tail: - tCOMMA block_args_tail - { - result = val[1] - } - | # nothing - { - result = [] - } - - block_param: f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[6]). - concat(val[7]) - } - | f_arg tCOMMA f_block_optarg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_block_optarg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_rest_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA - | f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg opt_block_args_tail - { - result = val[0].concat(val[1]) - } - | f_block_optarg tCOMMA f_rest_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_block_optarg opt_block_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_block_optarg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_rest_arg opt_block_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_rest_arg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | block_args_tail - - opt_block_param: # nothing - { - result = @builder.args(nil, [], nil) - } - | block_param_def - { - @lexer.state = :expr_value - } - - block_param_def: tPIPE opt_bv_decl tPIPE - { - result = @builder.args(val[0], val[1], val[2]) - } - | tOROP - { - result = @builder.args(val[0], [], val[0]) - } - | tPIPE block_param opt_bv_decl tPIPE - { - result = @builder.args(val[0], val[1].concat(val[2]), val[3]) - } - - opt_bv_decl: opt_nl - { - result = [] - } - | opt_nl tSEMI bv_decls opt_nl - { - result = val[2] - } - - bv_decls: bvar - { - result = [ val[0] ] - } - | bv_decls tCOMMA bvar - { - result = val[0] << val[2] - } - - bvar: tIDENTIFIER - { - result = @builder.shadowarg(val[0]) - } - | f_bad_arg - - lambda: { - @static_env.extend_dynamic - } - f_larglist lambda_body - { - result = [ val[1], val[2] ] - - @static_env.unextend - } - - f_larglist: tLPAREN2 f_args opt_bv_decl tRPAREN - { - result = @builder.args(val[0], val[1].concat(val[2]), val[3]) - } - | f_args - { - result = @builder.args(nil, val[0], nil) - } - - lambda_body: tLAMBEG compstmt tRCURLY - { - result = [ val[0], val[1], val[2] ] - } - | kDO_LAMBDA compstmt kEND - { - result = [ val[0], val[1], val[2] ] - } - - do_block: kDO_BLOCK - { - @static_env.extend_dynamic - } - opt_block_param compstmt kEND - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - block_call: command do_block - { - begin_t, block_args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, block_args, body, end_t) - } - | block_call dot_or_colon operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | block_call dot_or_colon operation2 opt_paren_args brace_block - { - lparen_t, args, rparen_t = val[3] - method_call = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | block_call dot_or_colon operation2 command_args do_block - { - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - - method_call: fcall paren_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.call_method(nil, nil, val[0], - lparen_t, args, rparen_t) - } - | primary_value tDOT operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 operation2 paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 operation3 - { - result = @builder.call_method(val[0], val[1], val[2]) - } - | primary_value tDOT paren_args - { - lparen_t, args, rparen_t = val[2] - result = @builder.call_method(val[0], val[1], nil, - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 paren_args - { - lparen_t, args, rparen_t = val[2] - result = @builder.call_method(val[0], val[1], nil, - lparen_t, args, rparen_t) - } - | kSUPER paren_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.keyword_cmd(:super, val[0], - lparen_t, args, rparen_t) - } - | kSUPER - { - result = @builder.keyword_cmd(:zsuper, val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index(val[0], val[1], val[2], val[3]) - } - - brace_block: tLCURLY - { - @static_env.extend_dynamic - } - opt_block_param compstmt tRCURLY - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - | kDO - { - @static_env.extend_dynamic - } - opt_block_param compstmt kEND - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - case_body: kWHEN args then compstmt cases - { - result = [ @builder.when(val[0], val[1], val[2], val[3]), - *val[4] ] - } - - cases: opt_else - { - result = [ val[0] ] - } - | case_body - - opt_rescue: kRESCUE exc_list exc_var then compstmt opt_rescue - { - assoc_t, exc_var = val[2] - - if val[1] - exc_list = @builder.array(nil, val[1], nil) - end - - result = [ @builder.rescue_body(val[0], - exc_list, assoc_t, exc_var, - val[3], val[4]), - *val[5] ] - } - | - { - result = [] - } - - exc_list: arg_value - { - result = [ val[0] ] - } - | mrhs - | none - - exc_var: tASSOC lhs - { - result = [ val[0], val[1] ] - } - | none - - opt_ensure: kENSURE compstmt - { - result = [ val[0], val[1] ] - } - | none - - literal: numeric - | symbol - | dsym - - strings: string - { - result = @builder.string_compose(nil, val[0], nil) - } - - string: string1 - { - result = [ val[0] ] - } - | string string1 - { - result = val[0] << val[1] - } - - string1: tSTRING_BEG string_contents tSTRING_END - { - result = @builder.string_compose(val[0], val[1], val[2]) - } - | tSTRING - { - result = @builder.string(val[0]) - } - | tCHARACTER - { - result = @builder.character(val[0]) - } - - xstring: tXSTRING_BEG xstring_contents tSTRING_END - { - result = @builder.xstring_compose(val[0], val[1], val[2]) - } - - regexp: tREGEXP_BEG regexp_contents tSTRING_END tREGEXP_OPT - { - opts = @builder.regexp_options(val[3]) - result = @builder.regexp_compose(val[0], val[1], val[2], opts) - } - - words: tWORDS_BEG word_list tSTRING_END - { - result = @builder.words_compose(val[0], val[1], val[2]) - } - - word_list: # nothing - { - result = [] - } - | word_list word tSPACE - { - result = val[0] << @builder.word(val[1]) - } - - word: string_content - { - result = [ val[0] ] - } - | word string_content - { - result = val[0] << val[1] - } - - symbols: tSYMBOLS_BEG symbol_list tSTRING_END - { - result = @builder.symbols_compose(val[0], val[1], val[2]) - } - - symbol_list: # nothing - { - result = [] - } - | symbol_list word tSPACE - { - result = val[0] << @builder.word(val[1]) - } - - qwords: tQWORDS_BEG qword_list tSTRING_END - { - result = @builder.words_compose(val[0], val[1], val[2]) - } - - qsymbols: tQSYMBOLS_BEG qsym_list tSTRING_END - { - result = @builder.symbols_compose(val[0], val[1], val[2]) - } - - qword_list: # nothing - { - result = [] - } - | qword_list tSTRING_CONTENT tSPACE - { - result = val[0] << @builder.string_internal(val[1]) - } - - qsym_list: # nothing - { - result = [] - } - | qsym_list tSTRING_CONTENT tSPACE - { - result = val[0] << @builder.symbol_internal(val[1]) - } - - string_contents: # nothing - { - result = [] - } - | string_contents string_content - { - result = val[0] << val[1] - } - -xstring_contents: # nothing - { - result = [] - } - | xstring_contents string_content - { - result = val[0] << val[1] - } - -regexp_contents: # nothing - { - result = [] - } - | regexp_contents string_content - { - result = val[0] << val[1] - } - - string_content: tSTRING_CONTENT - { - result = @builder.string_internal(val[0]) - } - | tSTRING_DVAR string_dvar - { - result = val[1] - } - | tSTRING_DBEG - { - @lexer.cond.push(false) - @lexer.cmdarg.push(false) - } - compstmt tSTRING_DEND - { - @lexer.cond.lexpop - @lexer.cmdarg.lexpop - - result = @builder.begin(val[0], val[2], val[3]) - } - - string_dvar: tGVAR - { - result = @builder.gvar(val[0]) - } - | tIVAR - { - result = @builder.ivar(val[0]) - } - | tCVAR - { - result = @builder.cvar(val[0]) - } - | backref - - - symbol: tSYMBOL - { - result = @builder.symbol(val[0]) - } - - dsym: tSYMBEG xstring_contents tSTRING_END - { - result = @builder.symbol_compose(val[0], val[1], val[2]) - } - - numeric: tINTEGER - { - result = @builder.integer(val[0]) - } - | tFLOAT - { - result = @builder.float(val[0]) - } - | tUMINUS_NUM tINTEGER =tLOWEST - { - result = @builder.negate(val[0], - @builder.integer(val[1])) - } - | tUMINUS_NUM tFLOAT =tLOWEST - { - result = @builder.negate(val[0], - @builder.float(val[1])) - } - - user_variable: tIDENTIFIER - { - result = @builder.ident(val[0]) - } - | tIVAR - { - result = @builder.ivar(val[0]) - } - | tGVAR - { - result = @builder.gvar(val[0]) - } - | tCONSTANT - { - result = @builder.const(val[0]) - } - | tCVAR - { - result = @builder.cvar(val[0]) - } - -keyword_variable: kNIL - { - result = @builder.nil(val[0]) - } - | kSELF - { - result = @builder.self(val[0]) - } - | kTRUE - { - result = @builder.true(val[0]) - } - | kFALSE - { - result = @builder.false(val[0]) - } - | k__FILE__ - { - result = @builder.__FILE__(val[0]) - } - | k__LINE__ - { - result = @builder.__LINE__(val[0]) - } - | k__ENCODING__ - { - result = @builder.__ENCODING__(val[0]) - } - - var_ref: user_variable - { - result = @builder.accessible(val[0]) - } - | keyword_variable - { - result = @builder.accessible(val[0]) - } - - var_lhs: user_variable - { - result = @builder.assignable(val[0]) - } - | keyword_variable - { - result = @builder.assignable(val[0]) - } - - backref: tNTH_REF - { - result = @builder.nth_ref(val[0]) - } - | tBACK_REF - { - result = @builder.back_ref(val[0]) - } - - superclass: term - { - result = nil - } - | tLT - { - @lexer.state = :expr_value - } - expr_value term - { - result = [ val[0], val[2] ] - } - | error term - { - yyerrok - result = nil - } - - f_arglist: tLPAREN2 f_args rparen - { - result = @builder.args(val[0], val[1], val[2]) - - @lexer.state = :expr_value - } - | f_args term - { - result = @builder.args(nil, val[0], nil) - } - - args_tail: f_kwarg tCOMMA f_kwrest opt_f_block_arg - { - result = val[0].concat(val[2]).concat(val[3]) - } - | f_kwarg opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_kwrest opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_block_arg - { - result = [ val[0] ] - } - - opt_args_tail: tCOMMA args_tail - { - result = val[1] - } - | # nothing - { - result = [] - } - - f_args: f_arg tCOMMA f_optarg tCOMMA f_rest_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[6]). - concat(val[7]) - } - | f_arg tCOMMA f_optarg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_optarg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_rest_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg opt_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_optarg tCOMMA f_rest_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_optarg opt_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_optarg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_rest_arg opt_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_rest_arg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | args_tail - { - result = val[0] - } - | # nothing - { - result = [] - } - - f_bad_arg: tCONSTANT - { - diagnostic :error, :argument_const, nil, val[0] - } - | tIVAR - { - diagnostic :error, :argument_ivar, nil, val[0] - } - | tGVAR - { - diagnostic :error, :argument_gvar, nil, val[0] - } - | tCVAR - { - diagnostic :error, :argument_cvar, nil, val[0] - } - - f_norm_arg: f_bad_arg - | tIDENTIFIER - - f_arg_item: f_norm_arg - { - @static_env.declare val[0][0] - - result = @builder.arg(val[0]) - } - | tLPAREN f_margs rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - f_arg: f_arg_item - { - result = [ val[0] ] - } - | f_arg tCOMMA f_arg_item - { - result = val[0] << val[2] - } - - f_kw: tLABEL arg_value - { - check_kwarg_name(val[0]) - - @static_env.declare val[0][0] - - result = @builder.kwoptarg(val[0], val[1]) - } - - f_block_kw: tLABEL primary_value - { - check_kwarg_name(val[0]) - - @static_env.declare val[0][0] - - result = @builder.kwoptarg(val[0], val[1]) - } - - f_block_kwarg: f_block_kw - { - result = [ val[0] ] - } - | f_block_kwarg tCOMMA f_block_kw - { - result = val[0] << val[2] - } - - f_kwarg: f_kw - { - result = [ val[0] ] - } - | f_kwarg tCOMMA f_kw - { - result = val[0] << val[2] - } - - kwrest_mark: tPOW | tDSTAR - - f_kwrest: kwrest_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = [ @builder.kwrestarg(val[0], val[1]) ] - } - | kwrest_mark - { - result = [ @builder.kwrestarg(val[0]) ] - } - - f_opt: tIDENTIFIER tEQL arg_value - { - @static_env.declare val[0][0] - - result = @builder.optarg(val[0], val[1], val[2]) - } - - f_block_opt: tIDENTIFIER tEQL primary_value - { - @static_env.declare val[0][0] - - result = @builder.optarg(val[0], val[1], val[2]) - } - - f_block_optarg: f_block_opt - { - result = [ val[0] ] - } - | f_block_optarg tCOMMA f_block_opt - { - result = val[0] << val[2] - } - - f_optarg: f_opt - { - result = [ val[0] ] - } - | f_optarg tCOMMA f_opt - { - result = val[0] << val[2] - } - - restarg_mark: tSTAR2 | tSTAR - - f_rest_arg: restarg_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = [ @builder.restarg(val[0], val[1]) ] - } - | restarg_mark - { - result = [ @builder.restarg(val[0]) ] - } - - blkarg_mark: tAMPER2 | tAMPER - - f_block_arg: blkarg_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = @builder.blockarg(val[0], val[1]) - } - - opt_f_block_arg: tCOMMA f_block_arg - { - result = [ val[1] ] - } - | - { - result = [] - } - - singleton: var_ref - | tLPAREN2 expr rparen - { - result = val[1] - } - - assoc_list: # nothing - { - result = [] - } - | assocs trailer - - assocs: assoc - { - result = [ val[0] ] - } - | assocs tCOMMA assoc - { - result = val[0] << val[2] - } - - assoc: arg_value tASSOC arg_value - { - result = @builder.pair(val[0], val[1], val[2]) - } - | tLABEL arg_value - { - result = @builder.pair_keyword(val[0], val[1]) - } - | tDSTAR arg_value - { - result = @builder.kwsplat(val[0], val[1]) - } - - operation: tIDENTIFIER | tCONSTANT | tFID - operation2: tIDENTIFIER | tCONSTANT | tFID | op - operation3: tIDENTIFIER | tFID | op - dot_or_colon: tDOT | tCOLON2 - opt_terms: | terms - opt_nl: | tNL - rparen: opt_nl tRPAREN - { - result = val[1] - } - rbracket: opt_nl tRBRACK - { - result = val[1] - } - trailer: | tNL | tCOMMA - - term: tSEMI - { - yyerrok - } - | tNL - - terms: term - | terms tSEMI - - none: # nothing - { - result = nil - } -end - ----- header - -require 'parser' - -Parser.check_for_encoding_support - ----- inner - - def version - 20 - end - - def default_encoding - Encoding::UTF_8 - end diff --git a/test/racc/assets/ruby21.y b/test/racc/assets/ruby21.y deleted file mode 100644 index 2ac94afb0c..0000000000 --- a/test/racc/assets/ruby21.y +++ /dev/null @@ -1,2359 +0,0 @@ -# Copyright (c) 2013 Peter Zotov <whitequark@whitequark.org> -# -# Parts of the source are derived from ruby_parser: -# Copyright (c) Ryan Davis, seattle.rb -# -# MIT License -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -class Parser::Ruby21 - -token kCLASS kMODULE kDEF kUNDEF kBEGIN kRESCUE kENSURE kEND kIF kUNLESS - kTHEN kELSIF kELSE kCASE kWHEN kWHILE kUNTIL kFOR kBREAK kNEXT - kREDO kRETRY kIN kDO kDO_COND kDO_BLOCK kDO_LAMBDA kRETURN kYIELD kSUPER - kSELF kNIL kTRUE kFALSE kAND kOR kNOT kIF_MOD kUNLESS_MOD kWHILE_MOD - kUNTIL_MOD kRESCUE_MOD kALIAS kDEFINED klBEGIN klEND k__LINE__ - k__FILE__ k__ENCODING__ tIDENTIFIER tFID tGVAR tIVAR tCONSTANT - tLABEL tCVAR tNTH_REF tBACK_REF tSTRING_CONTENT tINTEGER tFLOAT - tREGEXP_END tUPLUS tUMINUS tUMINUS_NUM tPOW tCMP tEQ tEQQ tNEQ - tGEQ tLEQ tANDOP tOROP tMATCH tNMATCH tDOT tDOT2 tDOT3 tAREF - tASET tLSHFT tRSHFT tCOLON2 tCOLON3 tOP_ASGN tASSOC tLPAREN - tLPAREN2 tRPAREN tLPAREN_ARG tLBRACK tLBRACK2 tRBRACK tLBRACE - tLBRACE_ARG tSTAR tSTAR2 tAMPER tAMPER2 tTILDE tPERCENT tDIVIDE - tDSTAR tPLUS tMINUS tLT tGT tPIPE tBANG tCARET tLCURLY tRCURLY - tBACK_REF2 tSYMBEG tSTRING_BEG tXSTRING_BEG tREGEXP_BEG tREGEXP_OPT - tWORDS_BEG tQWORDS_BEG tSYMBOLS_BEG tQSYMBOLS_BEG tSTRING_DBEG - tSTRING_DVAR tSTRING_END tSTRING_DEND tSTRING tSYMBOL - tNL tEH tCOLON tCOMMA tSPACE tSEMI tLAMBDA tLAMBEG tCHARACTER - tRATIONAL tIMAGINARY - -prechigh - right tBANG tTILDE tUPLUS - right tPOW - right tUMINUS_NUM tUMINUS - left tSTAR2 tDIVIDE tPERCENT - left tPLUS tMINUS - left tLSHFT tRSHFT - left tAMPER2 - left tPIPE tCARET - left tGT tGEQ tLT tLEQ - nonassoc tCMP tEQ tEQQ tNEQ tMATCH tNMATCH - left tANDOP - left tOROP - nonassoc tDOT2 tDOT3 - right tEH tCOLON - left kRESCUE_MOD - right tEQL tOP_ASGN - nonassoc kDEFINED - right kNOT - left kOR kAND - nonassoc kIF_MOD kUNLESS_MOD kWHILE_MOD kUNTIL_MOD - nonassoc tLBRACE_ARG - nonassoc tLOWEST -preclow - -rule - - program: top_compstmt - - top_compstmt: top_stmts opt_terms - { - result = @builder.compstmt(val[0]) - } - - top_stmts: # nothing - { - result = [] - } - | top_stmt - { - result = [ val[0] ] - } - | top_stmts terms top_stmt - { - result = val[0] << val[2] - } - | error top_stmt - { - result = [ val[1] ] - } - - top_stmt: stmt - | klBEGIN tLCURLY top_compstmt tRCURLY - { - result = @builder.preexe(val[0], val[1], val[2], val[3]) - } - - bodystmt: compstmt opt_rescue opt_else opt_ensure - { - rescue_bodies = val[1] - else_t, else_ = val[2] - ensure_t, ensure_ = val[3] - - if rescue_bodies.empty? && !else_.nil? - diagnostic :warning, :useless_else, nil, else_t - end - - result = @builder.begin_body(val[0], - rescue_bodies, - else_t, else_, - ensure_t, ensure_) - } - - compstmt: stmts opt_terms - { - result = @builder.compstmt(val[0]) - } - - stmts: # nothing - { - result = [] - } - | stmt_or_begin - { - result = [ val[0] ] - } - | stmts terms stmt_or_begin - { - result = val[0] << val[2] - } - | error stmt - { - result = [ val[1] ] - } - - stmt_or_begin: stmt - | klBEGIN tLCURLY top_compstmt tRCURLY - { - diagnostic :error, :begin_in_method, nil, val[0] - } - - stmt: kALIAS fitem - { - @lexer.state = :expr_fname - } - fitem - { - result = @builder.alias(val[0], val[1], val[3]) - } - | kALIAS tGVAR tGVAR - { - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.gvar(val[2])) - } - | kALIAS tGVAR tBACK_REF - { - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.back_ref(val[2])) - } - | kALIAS tGVAR tNTH_REF - { - diagnostic :error, :nth_ref_alias, nil, val[2] - } - | kUNDEF undef_list - { - result = @builder.undef_method(val[0], val[1]) - } - | stmt kIF_MOD expr_value - { - result = @builder.condition_mod(val[0], nil, - val[1], val[2]) - } - | stmt kUNLESS_MOD expr_value - { - result = @builder.condition_mod(nil, val[0], - val[1], val[2]) - } - | stmt kWHILE_MOD expr_value - { - result = @builder.loop_mod(:while, val[0], val[1], val[2]) - } - | stmt kUNTIL_MOD expr_value - { - result = @builder.loop_mod(:until, val[0], val[1], val[2]) - } - | stmt kRESCUE_MOD stmt - { - rescue_body = @builder.rescue_body(val[1], - nil, nil, nil, - nil, val[2]) - - result = @builder.begin_body(val[0], [ rescue_body ]) - } - | klEND tLCURLY compstmt tRCURLY - { - result = @builder.postexe(val[0], val[1], val[2], val[3]) - } - | command_asgn - | mlhs tEQL command_call - { - result = @builder.multi_assign(val[0], val[1], val[2]) - } - | var_lhs tOP_ASGN command_call - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | primary_value tLBRACK2 opt_call_args rbracket tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - } - | primary_value tDOT tIDENTIFIER tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tCONSTANT tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | backref tOP_ASGN command_call - { - @builder.op_assign(val[0], val[1], val[2]) - } - | lhs tEQL mrhs - { - result = @builder.assign(val[0], val[1], - @builder.array(nil, val[2], nil)) - } - | mlhs tEQL mrhs_arg - { - result = @builder.multi_assign(val[0], val[1], val[2]) - } - | expr - - command_asgn: lhs tEQL command_call - { - result = @builder.assign(val[0], val[1], val[2]) - } - | lhs tEQL command_asgn - { - result = @builder.assign(val[0], val[1], val[2]) - } - - expr: command_call - | expr kAND expr - { - result = @builder.logical_op(:and, val[0], val[1], val[2]) - } - | expr kOR expr - { - result = @builder.logical_op(:or, val[0], val[1], val[2]) - } - | kNOT opt_nl expr - { - result = @builder.not_op(val[0], nil, val[2], nil) - } - | tBANG command_call - { - result = @builder.not_op(val[0], nil, val[1], nil) - } - | arg - - expr_value: expr - - command_call: command - | block_command - - block_command: block_call - | block_call dot_or_colon operation2 command_args - { - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - } - - cmd_brace_block: tLBRACE_ARG - { - @static_env.extend_dynamic - } - opt_block_param compstmt tRCURLY - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - fcall: operation - - command: fcall command_args =tLOWEST - { - result = @builder.call_method(nil, nil, val[0], - nil, val[1], nil) - } - | fcall command_args cmd_brace_block - { - method_call = @builder.call_method(nil, nil, val[0], - nil, val[1], nil) - - begin_t, args, body, end_t = val[2] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | primary_value tDOT operation2 command_args =tLOWEST - { - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - } - | primary_value tDOT operation2 command_args cmd_brace_block - { - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | primary_value tCOLON2 operation2 command_args =tLOWEST - { - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - } - | primary_value tCOLON2 operation2 command_args cmd_brace_block - { - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | kSUPER command_args - { - result = @builder.keyword_cmd(:super, val[0], - nil, val[1], nil) - } - | kYIELD command_args - { - result = @builder.keyword_cmd(:yield, val[0], - nil, val[1], nil) - } - | kRETURN call_args - { - result = @builder.keyword_cmd(:return, val[0], - nil, val[1], nil) - } - | kBREAK call_args - { - result = @builder.keyword_cmd(:break, val[0], - nil, val[1], nil) - } - | kNEXT call_args - { - result = @builder.keyword_cmd(:next, val[0], - nil, val[1], nil) - } - - mlhs: mlhs_basic - { - result = @builder.multi_lhs(nil, val[0], nil) - } - | tLPAREN mlhs_inner rparen - { - result = @builder.begin(val[0], val[1], val[2]) - } - - mlhs_inner: mlhs_basic - { - result = @builder.multi_lhs(nil, val[0], nil) - } - | tLPAREN mlhs_inner rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - mlhs_basic: mlhs_head - | mlhs_head mlhs_item - { - result = val[0]. - push(val[1]) - } - | mlhs_head tSTAR mlhs_node - { - result = val[0]. - push(@builder.splat(val[1], val[2])) - } - | mlhs_head tSTAR mlhs_node tCOMMA mlhs_post - { - result = val[0]. - push(@builder.splat(val[1], val[2])). - concat(val[4]) - } - | mlhs_head tSTAR - { - result = val[0]. - push(@builder.splat(val[1])) - } - | mlhs_head tSTAR tCOMMA mlhs_post - { - result = val[0]. - push(@builder.splat(val[1])). - concat(val[3]) - } - | tSTAR mlhs_node - { - result = [ @builder.splat(val[0], val[1]) ] - } - | tSTAR mlhs_node tCOMMA mlhs_post - { - result = [ @builder.splat(val[0], val[1]), - *val[3] ] - } - | tSTAR - { - result = [ @builder.splat(val[0]) ] - } - | tSTAR tCOMMA mlhs_post - { - result = [ @builder.splat(val[0]), - *val[2] ] - } - - mlhs_item: mlhs_node - | tLPAREN mlhs_inner rparen - { - result = @builder.begin(val[0], val[1], val[2]) - } - - mlhs_head: mlhs_item tCOMMA - { - result = [ val[0] ] - } - | mlhs_head mlhs_item tCOMMA - { - result = val[0] << val[1] - } - - mlhs_post: mlhs_item - { - result = [ val[0] ] - } - | mlhs_post tCOMMA mlhs_item - { - result = val[0] << val[2] - } - - mlhs_node: user_variable - { - result = @builder.assignable(val[0]) - } - | keyword_variable - { - result = @builder.assignable(val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - } - | primary_value tDOT tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tDOT tCONSTANT - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - } - | tCOLON3 tCONSTANT - { - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - } - | backref - { - result = @builder.assignable(val[0]) - } - - lhs: user_variable - { - result = @builder.assignable(val[0]) - } - | keyword_variable - { - result = @builder.assignable(val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - } - | primary_value tDOT tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tDOT tCONSTANT - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - } - | tCOLON3 tCONSTANT - { - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - } - | backref - { - result = @builder.assignable(val[0]) - } - - cname: tIDENTIFIER - { - diagnostic :error, :module_name_const, nil, val[0] - } - | tCONSTANT - - cpath: tCOLON3 cname - { - result = @builder.const_global(val[0], val[1]) - } - | cname - { - result = @builder.const(val[0]) - } - | primary_value tCOLON2 cname - { - result = @builder.const_fetch(val[0], val[1], val[2]) - } - - fname: tIDENTIFIER | tCONSTANT | tFID - | op - | reswords - - fsym: fname - { - result = @builder.symbol(val[0]) - } - | symbol - - fitem: fsym - | dsym - - undef_list: fitem - { - result = [ val[0] ] - } - | undef_list tCOMMA - { - @lexer.state = :expr_fname - } - fitem - { - result = val[0] << val[3] - } - - op: tPIPE | tCARET | tAMPER2 | tCMP | tEQ | tEQQ - | tMATCH | tNMATCH | tGT | tGEQ | tLT | tLEQ - | tNEQ | tLSHFT | tRSHFT | tPLUS | tMINUS | tSTAR2 - | tSTAR | tDIVIDE | tPERCENT | tPOW | tBANG | tTILDE - | tUPLUS | tUMINUS | tAREF | tASET | tDSTAR | tBACK_REF2 - - reswords: k__LINE__ | k__FILE__ | k__ENCODING__ | klBEGIN | klEND - | kALIAS | kAND | kBEGIN | kBREAK | kCASE - | kCLASS | kDEF | kDEFINED | kDO | kELSE - | kELSIF | kEND | kENSURE | kFALSE | kFOR - | kIN | kMODULE | kNEXT | kNIL | kNOT - | kOR | kREDO | kRESCUE | kRETRY | kRETURN - | kSELF | kSUPER | kTHEN | kTRUE | kUNDEF - | kWHEN | kYIELD | kIF | kUNLESS | kWHILE - | kUNTIL - - arg: lhs tEQL arg - { - result = @builder.assign(val[0], val[1], val[2]) - } - | lhs tEQL arg kRESCUE_MOD arg - { - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.assign(val[0], val[1], rescue_) - } - | var_lhs tOP_ASGN arg - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | var_lhs tOP_ASGN arg kRESCUE_MOD arg - { - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.op_assign(val[0], val[1], rescue_) - } - | primary_value tLBRACK2 opt_call_args rbracket tOP_ASGN arg - { - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - } - | primary_value tDOT tIDENTIFIER tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tCONSTANT tOP_ASGN arg - { - const = @builder.const_op_assignable( - @builder.const_fetch(val[0], val[1], val[2])) - result = @builder.op_assign(const, val[3], val[4]) - } - | tCOLON3 tCONSTANT tOP_ASGN arg - { - const = @builder.const_op_assignable( - @builder.const_global(val[0], val[1])) - result = @builder.op_assign(const, val[2], val[3]) - } - | backref tOP_ASGN arg - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | arg tDOT2 arg - { - result = @builder.range_inclusive(val[0], val[1], val[2]) - } - | arg tDOT3 arg - { - result = @builder.range_exclusive(val[0], val[1], val[2]) - } - | arg tPLUS arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tMINUS arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tSTAR2 arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tDIVIDE arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tPERCENT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tPOW arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | tUMINUS_NUM simple_numeric tPOW arg - { - result = @builder.unary_op(val[0], - @builder.binary_op( - val[1], val[2], val[3])) - } - | tUPLUS arg - { - result = @builder.unary_op(val[0], val[1]) - } - | tUMINUS arg - { - result = @builder.unary_op(val[0], val[1]) - } - | arg tPIPE arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tCARET arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tAMPER2 arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tCMP arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tGT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tGEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tLT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tLEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tEQQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tNEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tMATCH arg - { - result = @builder.match_op(val[0], val[1], val[2]) - } - | arg tNMATCH arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | tBANG arg - { - result = @builder.not_op(val[0], nil, val[1], nil) - } - | tTILDE arg - { - result = @builder.unary_op(val[0], val[1]) - } - | arg tLSHFT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tRSHFT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tANDOP arg - { - result = @builder.logical_op(:and, val[0], val[1], val[2]) - } - | arg tOROP arg - { - result = @builder.logical_op(:or, val[0], val[1], val[2]) - } - | kDEFINED opt_nl arg - { - result = @builder.keyword_cmd(:defined?, val[0], nil, [ val[2] ], nil) - } - - | arg tEH arg opt_nl tCOLON arg - { - result = @builder.ternary(val[0], val[1], - val[2], val[4], val[5]) - } - | primary - - arg_value: arg - - aref_args: none - | args trailer - | args tCOMMA assocs trailer - { - result = val[0] << @builder.associate(nil, val[2], nil) - } - | assocs trailer - { - result = [ @builder.associate(nil, val[0], nil) ] - } - - paren_args: tLPAREN2 opt_call_args rparen - { - result = val - } - - opt_paren_args: # nothing - { - result = [ nil, [], nil ] - } - | paren_args - - opt_call_args: # nothing - { - result = [] - } - | call_args - | args tCOMMA - | args tCOMMA assocs tCOMMA - { - result = val[0] << @builder.associate(nil, val[2], nil) - } - | assocs tCOMMA - { - result = [ @builder.associate(nil, val[0], nil) ] - } - - call_args: command - { - result = [ val[0] ] - } - | args opt_block_arg - { - result = val[0].concat(val[1]) - } - | assocs opt_block_arg - { - result = [ @builder.associate(nil, val[0], nil) ] - result.concat(val[1]) - } - | args tCOMMA assocs opt_block_arg - { - assocs = @builder.associate(nil, val[2], nil) - result = val[0] << assocs - result.concat(val[3]) - } - | block_arg - { - result = [ val[0] ] - } - - command_args: { - result = @lexer.cmdarg.dup - @lexer.cmdarg.push(true) - } - call_args - { - @lexer.cmdarg = val[0] - - result = val[1] - } - - block_arg: tAMPER arg_value - { - result = @builder.block_pass(val[0], val[1]) - } - - opt_block_arg: tCOMMA block_arg - { - result = [ val[1] ] - } - | # nothing - { - result = [] - } - - args: arg_value - { - result = [ val[0] ] - } - | tSTAR arg_value - { - result = [ @builder.splat(val[0], val[1]) ] - } - | args tCOMMA arg_value - { - result = val[0] << val[2] - } - | args tCOMMA tSTAR arg_value - { - result = val[0] << @builder.splat(val[2], val[3]) - } - - mrhs_arg: mrhs - { - result = @builder.array(nil, val[0], nil) - } - | arg_value - - mrhs: args tCOMMA arg_value - { - result = val[0] << val[2] - } - | args tCOMMA tSTAR arg_value - { - result = val[0] << @builder.splat(val[2], val[3]) - } - | tSTAR arg_value - { - result = [ @builder.splat(val[0], val[1]) ] - } - - primary: literal - | strings - | xstring - | regexp - | words - | qwords - | symbols - | qsymbols - | var_ref - | backref - | tFID - { - result = @builder.call_method(nil, nil, val[0]) - } - | kBEGIN - { - result = @lexer.cmdarg.dup - @lexer.cmdarg.clear - } - bodystmt kEND - { - @lexer.cmdarg = val[1] - - result = @builder.begin_keyword(val[0], val[2], val[3]) - } - | tLPAREN_ARG - { - result = @lexer.cmdarg.dup - @lexer.cmdarg.clear - } - expr - { - @lexer.state = :expr_endarg - } - opt_nl tRPAREN - { - @lexer.cmdarg = val[1] - - result = @builder.begin(val[0], val[2], val[5]) - } - | tLPAREN_ARG - { - @lexer.state = :expr_endarg - } - opt_nl tRPAREN - { - result = @builder.begin(val[0], nil, val[3]) - } - | tLPAREN compstmt tRPAREN - { - result = @builder.begin(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.const_fetch(val[0], val[1], val[2]) - } - | tCOLON3 tCONSTANT - { - result = @builder.const_global(val[0], val[1]) - } - | tLBRACK aref_args tRBRACK - { - result = @builder.array(val[0], val[1], val[2]) - } - | tLBRACE assoc_list tRCURLY - { - result = @builder.associate(val[0], val[1], val[2]) - } - | kRETURN - { - result = @builder.keyword_cmd(:return, val[0]) - } - | kYIELD tLPAREN2 call_args rparen - { - result = @builder.keyword_cmd(:yield, val[0], val[1], val[2], val[3]) - } - | kYIELD tLPAREN2 rparen - { - result = @builder.keyword_cmd(:yield, val[0], val[1], [], val[2]) - } - | kYIELD - { - result = @builder.keyword_cmd(:yield, val[0]) - } - | kDEFINED opt_nl tLPAREN2 expr rparen - { - result = @builder.keyword_cmd(:defined?, val[0], - val[2], [ val[3] ], val[4]) - } - | kNOT tLPAREN2 expr rparen - { - result = @builder.not_op(val[0], val[1], val[2], val[3]) - } - | kNOT tLPAREN2 rparen - { - result = @builder.not_op(val[0], val[1], nil, val[2]) - } - | fcall brace_block - { - method_call = @builder.call_method(nil, nil, val[0]) - - begin_t, args, body, end_t = val[1] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | method_call - | method_call brace_block - { - begin_t, args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, args, body, end_t) - } - | tLAMBDA lambda - { - lambda_call = @builder.call_lambda(val[0]) - - args, (begin_t, body, end_t) = val[1] - result = @builder.block(lambda_call, - begin_t, args, body, end_t) - } - | kIF expr_value then compstmt if_tail kEND - { - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, val[5]) - } - | kUNLESS expr_value then compstmt opt_else kEND - { - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - else_, else_t, - val[3], val[5]) - } - | kWHILE - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.loop(:while, val[0], val[2], val[3], - val[5], val[6]) - } - | kUNTIL - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.loop(:until, val[0], val[2], val[3], - val[5], val[6]) - } - | kCASE expr_value opt_terms case_body kEND - { - *when_bodies, (else_t, else_body) = *val[3] - - result = @builder.case(val[0], val[1], - when_bodies, else_t, else_body, - val[4]) - } - | kCASE opt_terms case_body kEND - { - *when_bodies, (else_t, else_body) = *val[2] - - result = @builder.case(val[0], nil, - when_bodies, else_t, else_body, - val[3]) - } - | kFOR for_var kIN - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.for(val[0], val[1], - val[2], val[4], - val[5], val[7], val[8]) - } - | kCLASS cpath superclass - { - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - if in_def? - diagnostic :error, :class_in_def, nil, val[0] - end - - lt_t, superclass = val[2] - result = @builder.def_class(val[0], val[1], - lt_t, superclass, - val[4], val[5]) - - @lexer.pop_cmdarg - @static_env.unextend - } - | kCLASS tLSHFT expr term - { - result = @def_level - @def_level = 0 - - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - result = @builder.def_sclass(val[0], val[1], val[2], - val[5], val[6]) - - @lexer.pop_cmdarg - @static_env.unextend - - @def_level = val[4] - } - | kMODULE cpath - { - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - if in_def? - diagnostic :error, :module_in_def, nil, val[0] - end - - result = @builder.def_module(val[0], val[1], - val[3], val[4]) - - @lexer.pop_cmdarg - @static_env.unextend - } - | kDEF fname - { - @def_level += 1 - @static_env.extend_static - @lexer.push_cmdarg - } - f_arglist bodystmt kEND - { - result = @builder.def_method(val[0], val[1], - val[3], val[4], val[5]) - - @lexer.pop_cmdarg - @static_env.unextend - @def_level -= 1 - } - | kDEF singleton dot_or_colon - { - @lexer.state = :expr_fname - } - fname - { - @def_level += 1 - @static_env.extend_static - @lexer.push_cmdarg - } - f_arglist bodystmt kEND - { - result = @builder.def_singleton(val[0], val[1], val[2], - val[4], val[6], val[7], val[8]) - - @lexer.pop_cmdarg - @static_env.unextend - @def_level -= 1 - } - | kBREAK - { - result = @builder.keyword_cmd(:break, val[0]) - } - | kNEXT - { - result = @builder.keyword_cmd(:next, val[0]) - } - | kREDO - { - result = @builder.keyword_cmd(:redo, val[0]) - } - | kRETRY - { - result = @builder.keyword_cmd(:retry, val[0]) - } - - primary_value: primary - - then: term - | kTHEN - | term kTHEN - { - result = val[1] - } - - do: term - | kDO_COND - - if_tail: opt_else - | kELSIF expr_value then compstmt if_tail - { - else_t, else_ = val[4] - result = [ val[0], - @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, nil), - ] - } - - opt_else: none - | kELSE compstmt - { - result = val - } - - for_var: lhs - | mlhs - - f_marg: f_norm_arg - { - result = @builder.arg(val[0]) - } - | tLPAREN f_margs rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - f_marg_list: f_marg - { - result = [ val[0] ] - } - | f_marg_list tCOMMA f_marg - { - result = val[0] << val[2] - } - - f_margs: f_marg_list - | f_marg_list tCOMMA tSTAR f_norm_arg - { - result = val[0]. - push(@builder.restarg(val[2], val[3])) - } - | f_marg_list tCOMMA tSTAR f_norm_arg tCOMMA f_marg_list - { - result = val[0]. - push(@builder.restarg(val[2], val[3])). - concat(val[5]) - } - | f_marg_list tCOMMA tSTAR - { - result = val[0]. - push(@builder.restarg(val[2])) - } - | f_marg_list tCOMMA tSTAR tCOMMA f_marg_list - { - result = val[0]. - push(@builder.restarg(val[2])). - concat(val[4]) - } - | tSTAR f_norm_arg - { - result = [ @builder.restarg(val[0], val[1]) ] - } - | tSTAR f_norm_arg tCOMMA f_marg_list - { - result = [ @builder.restarg(val[0], val[1]), - *val[3] ] - } - | tSTAR - { - result = [ @builder.restarg(val[0]) ] - } - | tSTAR tCOMMA f_marg_list - { - result = [ @builder.restarg(val[0]), - *val[2] ] - } - - block_args_tail: f_block_kwarg tCOMMA f_kwrest opt_f_block_arg - { - result = val[0].concat(val[2]).concat(val[3]) - } - | f_block_kwarg opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_kwrest opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_block_arg - { - result = [ val[0] ] - } - -opt_block_args_tail: - tCOMMA block_args_tail - { - result = val[1] - } - | # nothing - { - result = [] - } - - block_param: f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[6]). - concat(val[7]) - } - | f_arg tCOMMA f_block_optarg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_block_optarg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_rest_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA - | f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg opt_block_args_tail - { - result = val[0].concat(val[1]) - } - | f_block_optarg tCOMMA f_rest_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_block_optarg opt_block_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_block_optarg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_rest_arg opt_block_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_rest_arg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | block_args_tail - - opt_block_param: # nothing - { - result = @builder.args(nil, [], nil) - } - | block_param_def - { - @lexer.state = :expr_value - } - - block_param_def: tPIPE opt_bv_decl tPIPE - { - result = @builder.args(val[0], val[1], val[2]) - } - | tOROP - { - result = @builder.args(val[0], [], val[0]) - } - | tPIPE block_param opt_bv_decl tPIPE - { - result = @builder.args(val[0], val[1].concat(val[2]), val[3]) - } - - opt_bv_decl: opt_nl - { - result = [] - } - | opt_nl tSEMI bv_decls opt_nl - { - result = val[2] - } - - bv_decls: bvar - { - result = [ val[0] ] - } - | bv_decls tCOMMA bvar - { - result = val[0] << val[2] - } - - bvar: tIDENTIFIER - { - result = @builder.shadowarg(val[0]) - } - | f_bad_arg - - lambda: { - @static_env.extend_dynamic - } - f_larglist - { - result = @lexer.cmdarg.dup - @lexer.cmdarg.clear - } - lambda_body - { - @lexer.cmdarg = val[2] - @lexer.cmdarg.lexpop - - result = [ val[1], val[3] ] - - @static_env.unextend - } - - f_larglist: tLPAREN2 f_args opt_bv_decl tRPAREN - { - result = @builder.args(val[0], val[1].concat(val[2]), val[3]) - } - | f_args - { - result = @builder.args(nil, val[0], nil) - } - - lambda_body: tLAMBEG compstmt tRCURLY - { - result = [ val[0], val[1], val[2] ] - } - | kDO_LAMBDA compstmt kEND - { - result = [ val[0], val[1], val[2] ] - } - - do_block: kDO_BLOCK - { - @static_env.extend_dynamic - } - opt_block_param compstmt kEND - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - block_call: command do_block - { - begin_t, block_args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, block_args, body, end_t) - } - | block_call dot_or_colon operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | block_call dot_or_colon operation2 opt_paren_args brace_block - { - lparen_t, args, rparen_t = val[3] - method_call = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | block_call dot_or_colon operation2 command_args do_block - { - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - - method_call: fcall paren_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.call_method(nil, nil, val[0], - lparen_t, args, rparen_t) - } - | primary_value tDOT operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 operation2 paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 operation3 - { - result = @builder.call_method(val[0], val[1], val[2]) - } - | primary_value tDOT paren_args - { - lparen_t, args, rparen_t = val[2] - result = @builder.call_method(val[0], val[1], nil, - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 paren_args - { - lparen_t, args, rparen_t = val[2] - result = @builder.call_method(val[0], val[1], nil, - lparen_t, args, rparen_t) - } - | kSUPER paren_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.keyword_cmd(:super, val[0], - lparen_t, args, rparen_t) - } - | kSUPER - { - result = @builder.keyword_cmd(:zsuper, val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index(val[0], val[1], val[2], val[3]) - } - - brace_block: tLCURLY - { - @static_env.extend_dynamic - } - opt_block_param compstmt tRCURLY - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - | kDO - { - @static_env.extend_dynamic - } - opt_block_param compstmt kEND - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - case_body: kWHEN args then compstmt cases - { - result = [ @builder.when(val[0], val[1], val[2], val[3]), - *val[4] ] - } - - cases: opt_else - { - result = [ val[0] ] - } - | case_body - - opt_rescue: kRESCUE exc_list exc_var then compstmt opt_rescue - { - assoc_t, exc_var = val[2] - - if val[1] - exc_list = @builder.array(nil, val[1], nil) - end - - result = [ @builder.rescue_body(val[0], - exc_list, assoc_t, exc_var, - val[3], val[4]), - *val[5] ] - } - | - { - result = [] - } - - exc_list: arg_value - { - result = [ val[0] ] - } - | mrhs - | none - - exc_var: tASSOC lhs - { - result = [ val[0], val[1] ] - } - | none - - opt_ensure: kENSURE compstmt - { - result = [ val[0], val[1] ] - } - | none - - literal: numeric - | symbol - | dsym - - strings: string - { - result = @builder.string_compose(nil, val[0], nil) - } - - string: string1 - { - result = [ val[0] ] - } - | string string1 - { - result = val[0] << val[1] - } - - string1: tSTRING_BEG string_contents tSTRING_END - { - result = @builder.string_compose(val[0], val[1], val[2]) - } - | tSTRING - { - result = @builder.string(val[0]) - } - | tCHARACTER - { - result = @builder.character(val[0]) - } - - xstring: tXSTRING_BEG xstring_contents tSTRING_END - { - result = @builder.xstring_compose(val[0], val[1], val[2]) - } - - regexp: tREGEXP_BEG regexp_contents tSTRING_END tREGEXP_OPT - { - opts = @builder.regexp_options(val[3]) - result = @builder.regexp_compose(val[0], val[1], val[2], opts) - } - - words: tWORDS_BEG word_list tSTRING_END - { - result = @builder.words_compose(val[0], val[1], val[2]) - } - - word_list: # nothing - { - result = [] - } - | word_list word tSPACE - { - result = val[0] << @builder.word(val[1]) - } - - word: string_content - { - result = [ val[0] ] - } - | word string_content - { - result = val[0] << val[1] - } - - symbols: tSYMBOLS_BEG symbol_list tSTRING_END - { - result = @builder.symbols_compose(val[0], val[1], val[2]) - } - - symbol_list: # nothing - { - result = [] - } - | symbol_list word tSPACE - { - result = val[0] << @builder.word(val[1]) - } - - qwords: tQWORDS_BEG qword_list tSTRING_END - { - result = @builder.words_compose(val[0], val[1], val[2]) - } - - qsymbols: tQSYMBOLS_BEG qsym_list tSTRING_END - { - result = @builder.symbols_compose(val[0], val[1], val[2]) - } - - qword_list: # nothing - { - result = [] - } - | qword_list tSTRING_CONTENT tSPACE - { - result = val[0] << @builder.string_internal(val[1]) - } - - qsym_list: # nothing - { - result = [] - } - | qsym_list tSTRING_CONTENT tSPACE - { - result = val[0] << @builder.symbol_internal(val[1]) - } - - string_contents: # nothing - { - result = [] - } - | string_contents string_content - { - result = val[0] << val[1] - } - -xstring_contents: # nothing - { - result = [] - } - | xstring_contents string_content - { - result = val[0] << val[1] - } - -regexp_contents: # nothing - { - result = [] - } - | regexp_contents string_content - { - result = val[0] << val[1] - } - - string_content: tSTRING_CONTENT - { - result = @builder.string_internal(val[0]) - } - | tSTRING_DVAR string_dvar - { - result = val[1] - } - | tSTRING_DBEG - { - @lexer.cond.push(false) - @lexer.cmdarg.push(false) - } - compstmt tSTRING_DEND - { - @lexer.cond.lexpop - @lexer.cmdarg.lexpop - - result = @builder.begin(val[0], val[2], val[3]) - } - - string_dvar: tGVAR - { - result = @builder.gvar(val[0]) - } - | tIVAR - { - result = @builder.ivar(val[0]) - } - | tCVAR - { - result = @builder.cvar(val[0]) - } - | backref - - - symbol: tSYMBOL - { - result = @builder.symbol(val[0]) - } - - dsym: tSYMBEG xstring_contents tSTRING_END - { - result = @builder.symbol_compose(val[0], val[1], val[2]) - } - - numeric: simple_numeric - { - result = val[0] - } - | tUMINUS_NUM simple_numeric =tLOWEST - { - result = @builder.negate(val[0], val[1]) - } - - simple_numeric: tINTEGER - { - result = @builder.integer(val[0]) - } - | tFLOAT - { - result = @builder.float(val[0]) - } - | tRATIONAL - { - result = @builder.rational(val[0]) - } - | tIMAGINARY - { - result = @builder.complex(val[0]) - } - - user_variable: tIDENTIFIER - { - result = @builder.ident(val[0]) - } - | tIVAR - { - result = @builder.ivar(val[0]) - } - | tGVAR - { - result = @builder.gvar(val[0]) - } - | tCONSTANT - { - result = @builder.const(val[0]) - } - | tCVAR - { - result = @builder.cvar(val[0]) - } - -keyword_variable: kNIL - { - result = @builder.nil(val[0]) - } - | kSELF - { - result = @builder.self(val[0]) - } - | kTRUE - { - result = @builder.true(val[0]) - } - | kFALSE - { - result = @builder.false(val[0]) - } - | k__FILE__ - { - result = @builder.__FILE__(val[0]) - } - | k__LINE__ - { - result = @builder.__LINE__(val[0]) - } - | k__ENCODING__ - { - result = @builder.__ENCODING__(val[0]) - } - - var_ref: user_variable - { - result = @builder.accessible(val[0]) - } - | keyword_variable - { - result = @builder.accessible(val[0]) - } - - var_lhs: user_variable - { - result = @builder.assignable(val[0]) - } - | keyword_variable - { - result = @builder.assignable(val[0]) - } - - backref: tNTH_REF - { - result = @builder.nth_ref(val[0]) - } - | tBACK_REF - { - result = @builder.back_ref(val[0]) - } - - superclass: term - { - result = nil - } - | tLT - { - @lexer.state = :expr_value - } - expr_value term - { - result = [ val[0], val[2] ] - } - | error term - { - yyerrok - result = nil - } - - f_arglist: tLPAREN2 f_args rparen - { - result = @builder.args(val[0], val[1], val[2]) - - @lexer.state = :expr_value - } - | { - result = @lexer.in_kwarg - @lexer.in_kwarg = true - } - f_args term - { - @lexer.in_kwarg = val[0] - result = @builder.args(nil, val[1], nil) - } - - - args_tail: f_kwarg tCOMMA f_kwrest opt_f_block_arg - { - result = val[0].concat(val[2]).concat(val[3]) - } - | f_kwarg opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_kwrest opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_block_arg - { - result = [ val[0] ] - } - - opt_args_tail: tCOMMA args_tail - { - result = val[1] - } - | # nothing - { - result = [] - } - - f_args: f_arg tCOMMA f_optarg tCOMMA f_rest_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[6]). - concat(val[7]) - } - | f_arg tCOMMA f_optarg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_optarg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_rest_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg opt_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_optarg tCOMMA f_rest_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_optarg opt_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_optarg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_rest_arg opt_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_rest_arg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | args_tail - { - result = val[0] - } - | # nothing - { - result = [] - } - - f_bad_arg: tCONSTANT - { - diagnostic :error, :argument_const, nil, val[0] - } - | tIVAR - { - diagnostic :error, :argument_ivar, nil, val[0] - } - | tGVAR - { - diagnostic :error, :argument_gvar, nil, val[0] - } - | tCVAR - { - diagnostic :error, :argument_cvar, nil, val[0] - } - - f_norm_arg: f_bad_arg - | tIDENTIFIER - { - @static_env.declare val[0][0] - - result = val[0] - } - - f_arg_item: f_norm_arg - { - result = @builder.arg(val[0]) - } - | tLPAREN f_margs rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - f_arg: f_arg_item - { - result = [ val[0] ] - } - | f_arg tCOMMA f_arg_item - { - result = val[0] << val[2] - } - - f_label: tLABEL - { - check_kwarg_name(val[0]) - - @static_env.declare val[0][0] - - result = val[0] - } - - f_kw: f_label arg_value - { - result = @builder.kwoptarg(val[0], val[1]) - } - | f_label - { - result = @builder.kwarg(val[0]) - } - - f_block_kw: f_label primary_value - { - result = @builder.kwoptarg(val[0], val[1]) - } - | f_label - { - result = @builder.kwarg(val[0]) - } - - f_block_kwarg: f_block_kw - { - result = [ val[0] ] - } - | f_block_kwarg tCOMMA f_block_kw - { - result = val[0] << val[2] - } - - f_kwarg: f_kw - { - result = [ val[0] ] - } - | f_kwarg tCOMMA f_kw - { - result = val[0] << val[2] - } - - kwrest_mark: tPOW | tDSTAR - - f_kwrest: kwrest_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = [ @builder.kwrestarg(val[0], val[1]) ] - } - | kwrest_mark - { - result = [ @builder.kwrestarg(val[0]) ] - } - - f_opt: f_norm_arg tEQL arg_value - { - result = @builder.optarg(val[0], val[1], val[2]) - } - - f_block_opt: f_norm_arg tEQL primary_value - { - result = @builder.optarg(val[0], val[1], val[2]) - } - - f_block_optarg: f_block_opt - { - result = [ val[0] ] - } - | f_block_optarg tCOMMA f_block_opt - { - result = val[0] << val[2] - } - - f_optarg: f_opt - { - result = [ val[0] ] - } - | f_optarg tCOMMA f_opt - { - result = val[0] << val[2] - } - - restarg_mark: tSTAR2 | tSTAR - - f_rest_arg: restarg_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = [ @builder.restarg(val[0], val[1]) ] - } - | restarg_mark - { - result = [ @builder.restarg(val[0]) ] - } - - blkarg_mark: tAMPER2 | tAMPER - - f_block_arg: blkarg_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = @builder.blockarg(val[0], val[1]) - } - - opt_f_block_arg: tCOMMA f_block_arg - { - result = [ val[1] ] - } - | - { - result = [] - } - - singleton: var_ref - | tLPAREN2 expr rparen - { - result = val[1] - } - - assoc_list: # nothing - { - result = [] - } - | assocs trailer - - assocs: assoc - { - result = [ val[0] ] - } - | assocs tCOMMA assoc - { - result = val[0] << val[2] - } - - assoc: arg_value tASSOC arg_value - { - result = @builder.pair(val[0], val[1], val[2]) - } - | tLABEL arg_value - { - result = @builder.pair_keyword(val[0], val[1]) - } - | tDSTAR arg_value - { - result = @builder.kwsplat(val[0], val[1]) - } - - operation: tIDENTIFIER | tCONSTANT | tFID - operation2: tIDENTIFIER | tCONSTANT | tFID | op - operation3: tIDENTIFIER | tFID | op - dot_or_colon: tDOT | tCOLON2 - opt_terms: | terms - opt_nl: | tNL - rparen: opt_nl tRPAREN - { - result = val[1] - } - rbracket: opt_nl tRBRACK - { - result = val[1] - } - trailer: | tNL | tCOMMA - - term: tSEMI - { - yyerrok - } - | tNL - - terms: term - | terms tSEMI - - none: # nothing - { - result = nil - } -end - ----- header - -require 'parser' - -Parser.check_for_encoding_support - ----- inner - - def version - 21 - end - - def default_encoding - Encoding::UTF_8 - end diff --git a/test/racc/assets/ruby22.y b/test/racc/assets/ruby22.y deleted file mode 100644 index 751c0e866b..0000000000 --- a/test/racc/assets/ruby22.y +++ /dev/null @@ -1,2381 +0,0 @@ -# Copyright (c) 2013 Peter Zotov <whitequark@whitequark.org> -# -# Parts of the source are derived from ruby_parser: -# Copyright (c) Ryan Davis, seattle.rb -# -# MIT License -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -class Parser::Ruby22 - -token kCLASS kMODULE kDEF kUNDEF kBEGIN kRESCUE kENSURE kEND kIF kUNLESS - kTHEN kELSIF kELSE kCASE kWHEN kWHILE kUNTIL kFOR kBREAK kNEXT - kREDO kRETRY kIN kDO kDO_COND kDO_BLOCK kDO_LAMBDA kRETURN kYIELD kSUPER - kSELF kNIL kTRUE kFALSE kAND kOR kNOT kIF_MOD kUNLESS_MOD kWHILE_MOD - kUNTIL_MOD kRESCUE_MOD kALIAS kDEFINED klBEGIN klEND k__LINE__ - k__FILE__ k__ENCODING__ tIDENTIFIER tFID tGVAR tIVAR tCONSTANT - tLABEL tCVAR tNTH_REF tBACK_REF tSTRING_CONTENT tINTEGER tFLOAT - tREGEXP_END tUPLUS tUMINUS tUMINUS_NUM tPOW tCMP tEQ tEQQ tNEQ - tGEQ tLEQ tANDOP tOROP tMATCH tNMATCH tDOT tDOT2 tDOT3 tAREF - tASET tLSHFT tRSHFT tCOLON2 tCOLON3 tOP_ASGN tASSOC tLPAREN - tLPAREN2 tRPAREN tLPAREN_ARG tLBRACK tLBRACK2 tRBRACK tLBRACE - tLBRACE_ARG tSTAR tSTAR2 tAMPER tAMPER2 tTILDE tPERCENT tDIVIDE - tDSTAR tPLUS tMINUS tLT tGT tPIPE tBANG tCARET tLCURLY tRCURLY - tBACK_REF2 tSYMBEG tSTRING_BEG tXSTRING_BEG tREGEXP_BEG tREGEXP_OPT - tWORDS_BEG tQWORDS_BEG tSYMBOLS_BEG tQSYMBOLS_BEG tSTRING_DBEG - tSTRING_DVAR tSTRING_END tSTRING_DEND tSTRING tSYMBOL - tNL tEH tCOLON tCOMMA tSPACE tSEMI tLAMBDA tLAMBEG tCHARACTER - tRATIONAL tIMAGINARY tLABEL_END - -prechigh - right tBANG tTILDE tUPLUS - right tPOW - right tUMINUS_NUM tUMINUS - left tSTAR2 tDIVIDE tPERCENT - left tPLUS tMINUS - left tLSHFT tRSHFT - left tAMPER2 - left tPIPE tCARET - left tGT tGEQ tLT tLEQ - nonassoc tCMP tEQ tEQQ tNEQ tMATCH tNMATCH - left tANDOP - left tOROP - nonassoc tDOT2 tDOT3 - right tEH tCOLON - left kRESCUE_MOD - right tEQL tOP_ASGN - nonassoc kDEFINED - right kNOT - left kOR kAND - nonassoc kIF_MOD kUNLESS_MOD kWHILE_MOD kUNTIL_MOD - nonassoc tLBRACE_ARG - nonassoc tLOWEST -preclow - -rule - - program: top_compstmt - - top_compstmt: top_stmts opt_terms - { - result = @builder.compstmt(val[0]) - } - - top_stmts: # nothing - { - result = [] - } - | top_stmt - { - result = [ val[0] ] - } - | top_stmts terms top_stmt - { - result = val[0] << val[2] - } - | error top_stmt - { - result = [ val[1] ] - } - - top_stmt: stmt - | klBEGIN tLCURLY top_compstmt tRCURLY - { - result = @builder.preexe(val[0], val[1], val[2], val[3]) - } - - bodystmt: compstmt opt_rescue opt_else opt_ensure - { - rescue_bodies = val[1] - else_t, else_ = val[2] - ensure_t, ensure_ = val[3] - - if rescue_bodies.empty? && !else_.nil? - diagnostic :warning, :useless_else, nil, else_t - end - - result = @builder.begin_body(val[0], - rescue_bodies, - else_t, else_, - ensure_t, ensure_) - } - - compstmt: stmts opt_terms - { - result = @builder.compstmt(val[0]) - } - - stmts: # nothing - { - result = [] - } - | stmt_or_begin - { - result = [ val[0] ] - } - | stmts terms stmt_or_begin - { - result = val[0] << val[2] - } - | error stmt - { - result = [ val[1] ] - } - - stmt_or_begin: stmt - | klBEGIN tLCURLY top_compstmt tRCURLY - { - diagnostic :error, :begin_in_method, nil, val[0] - } - - stmt: kALIAS fitem - { - @lexer.state = :expr_fname - } - fitem - { - result = @builder.alias(val[0], val[1], val[3]) - } - | kALIAS tGVAR tGVAR - { - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.gvar(val[2])) - } - | kALIAS tGVAR tBACK_REF - { - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.back_ref(val[2])) - } - | kALIAS tGVAR tNTH_REF - { - diagnostic :error, :nth_ref_alias, nil, val[2] - } - | kUNDEF undef_list - { - result = @builder.undef_method(val[0], val[1]) - } - | stmt kIF_MOD expr_value - { - result = @builder.condition_mod(val[0], nil, - val[1], val[2]) - } - | stmt kUNLESS_MOD expr_value - { - result = @builder.condition_mod(nil, val[0], - val[1], val[2]) - } - | stmt kWHILE_MOD expr_value - { - result = @builder.loop_mod(:while, val[0], val[1], val[2]) - } - | stmt kUNTIL_MOD expr_value - { - result = @builder.loop_mod(:until, val[0], val[1], val[2]) - } - | stmt kRESCUE_MOD stmt - { - rescue_body = @builder.rescue_body(val[1], - nil, nil, nil, - nil, val[2]) - - result = @builder.begin_body(val[0], [ rescue_body ]) - } - | klEND tLCURLY compstmt tRCURLY - { - result = @builder.postexe(val[0], val[1], val[2], val[3]) - } - | command_asgn - | mlhs tEQL command_call - { - result = @builder.multi_assign(val[0], val[1], val[2]) - } - | var_lhs tOP_ASGN command_call - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | primary_value tLBRACK2 opt_call_args rbracket tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - } - | primary_value tDOT tIDENTIFIER tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tCONSTANT tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN command_call - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | backref tOP_ASGN command_call - { - @builder.op_assign(val[0], val[1], val[2]) - } - | lhs tEQL mrhs - { - result = @builder.assign(val[0], val[1], - @builder.array(nil, val[2], nil)) - } - | mlhs tEQL mrhs_arg - { - result = @builder.multi_assign(val[0], val[1], val[2]) - } - | expr - - command_asgn: lhs tEQL command_call - { - result = @builder.assign(val[0], val[1], val[2]) - } - | lhs tEQL command_asgn - { - result = @builder.assign(val[0], val[1], val[2]) - } - - expr: command_call - | expr kAND expr - { - result = @builder.logical_op(:and, val[0], val[1], val[2]) - } - | expr kOR expr - { - result = @builder.logical_op(:or, val[0], val[1], val[2]) - } - | kNOT opt_nl expr - { - result = @builder.not_op(val[0], nil, val[2], nil) - } - | tBANG command_call - { - result = @builder.not_op(val[0], nil, val[1], nil) - } - | arg - - expr_value: expr - - command_call: command - | block_command - - block_command: block_call - | block_call dot_or_colon operation2 command_args - { - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - } - - cmd_brace_block: tLBRACE_ARG - { - @static_env.extend_dynamic - } - opt_block_param compstmt tRCURLY - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - fcall: operation - - command: fcall command_args =tLOWEST - { - result = @builder.call_method(nil, nil, val[0], - nil, val[1], nil) - } - | fcall command_args cmd_brace_block - { - method_call = @builder.call_method(nil, nil, val[0], - nil, val[1], nil) - - begin_t, args, body, end_t = val[2] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | primary_value tDOT operation2 command_args =tLOWEST - { - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - } - | primary_value tDOT operation2 command_args cmd_brace_block - { - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | primary_value tCOLON2 operation2 command_args =tLOWEST - { - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - } - | primary_value tCOLON2 operation2 command_args cmd_brace_block - { - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | kSUPER command_args - { - result = @builder.keyword_cmd(:super, val[0], - nil, val[1], nil) - } - | kYIELD command_args - { - result = @builder.keyword_cmd(:yield, val[0], - nil, val[1], nil) - } - | kRETURN call_args - { - result = @builder.keyword_cmd(:return, val[0], - nil, val[1], nil) - } - | kBREAK call_args - { - result = @builder.keyword_cmd(:break, val[0], - nil, val[1], nil) - } - | kNEXT call_args - { - result = @builder.keyword_cmd(:next, val[0], - nil, val[1], nil) - } - - mlhs: mlhs_basic - { - result = @builder.multi_lhs(nil, val[0], nil) - } - | tLPAREN mlhs_inner rparen - { - result = @builder.begin(val[0], val[1], val[2]) - } - - mlhs_inner: mlhs_basic - { - result = @builder.multi_lhs(nil, val[0], nil) - } - | tLPAREN mlhs_inner rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - mlhs_basic: mlhs_head - | mlhs_head mlhs_item - { - result = val[0]. - push(val[1]) - } - | mlhs_head tSTAR mlhs_node - { - result = val[0]. - push(@builder.splat(val[1], val[2])) - } - | mlhs_head tSTAR mlhs_node tCOMMA mlhs_post - { - result = val[0]. - push(@builder.splat(val[1], val[2])). - concat(val[4]) - } - | mlhs_head tSTAR - { - result = val[0]. - push(@builder.splat(val[1])) - } - | mlhs_head tSTAR tCOMMA mlhs_post - { - result = val[0]. - push(@builder.splat(val[1])). - concat(val[3]) - } - | tSTAR mlhs_node - { - result = [ @builder.splat(val[0], val[1]) ] - } - | tSTAR mlhs_node tCOMMA mlhs_post - { - result = [ @builder.splat(val[0], val[1]), - *val[3] ] - } - | tSTAR - { - result = [ @builder.splat(val[0]) ] - } - | tSTAR tCOMMA mlhs_post - { - result = [ @builder.splat(val[0]), - *val[2] ] - } - - mlhs_item: mlhs_node - | tLPAREN mlhs_inner rparen - { - result = @builder.begin(val[0], val[1], val[2]) - } - - mlhs_head: mlhs_item tCOMMA - { - result = [ val[0] ] - } - | mlhs_head mlhs_item tCOMMA - { - result = val[0] << val[1] - } - - mlhs_post: mlhs_item - { - result = [ val[0] ] - } - | mlhs_post tCOMMA mlhs_item - { - result = val[0] << val[2] - } - - mlhs_node: user_variable - { - result = @builder.assignable(val[0]) - } - | keyword_variable - { - result = @builder.assignable(val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - } - | primary_value tDOT tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tDOT tCONSTANT - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - } - | tCOLON3 tCONSTANT - { - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - } - | backref - { - result = @builder.assignable(val[0]) - } - - lhs: user_variable - { - result = @builder.assignable(val[0]) - } - | keyword_variable - { - result = @builder.assignable(val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - } - | primary_value tDOT tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tIDENTIFIER - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tDOT tCONSTANT - { - result = @builder.attr_asgn(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - } - | tCOLON3 tCONSTANT - { - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - } - | backref - { - result = @builder.assignable(val[0]) - } - - cname: tIDENTIFIER - { - diagnostic :error, :module_name_const, nil, val[0] - } - | tCONSTANT - - cpath: tCOLON3 cname - { - result = @builder.const_global(val[0], val[1]) - } - | cname - { - result = @builder.const(val[0]) - } - | primary_value tCOLON2 cname - { - result = @builder.const_fetch(val[0], val[1], val[2]) - } - - fname: tIDENTIFIER | tCONSTANT | tFID - | op - | reswords - - fsym: fname - { - result = @builder.symbol(val[0]) - } - | symbol - - fitem: fsym - | dsym - - undef_list: fitem - { - result = [ val[0] ] - } - | undef_list tCOMMA - { - @lexer.state = :expr_fname - } - fitem - { - result = val[0] << val[3] - } - - op: tPIPE | tCARET | tAMPER2 | tCMP | tEQ | tEQQ - | tMATCH | tNMATCH | tGT | tGEQ | tLT | tLEQ - | tNEQ | tLSHFT | tRSHFT | tPLUS | tMINUS | tSTAR2 - | tSTAR | tDIVIDE | tPERCENT | tPOW | tBANG | tTILDE - | tUPLUS | tUMINUS | tAREF | tASET | tDSTAR | tBACK_REF2 - - reswords: k__LINE__ | k__FILE__ | k__ENCODING__ | klBEGIN | klEND - | kALIAS | kAND | kBEGIN | kBREAK | kCASE - | kCLASS | kDEF | kDEFINED | kDO | kELSE - | kELSIF | kEND | kENSURE | kFALSE | kFOR - | kIN | kMODULE | kNEXT | kNIL | kNOT - | kOR | kREDO | kRESCUE | kRETRY | kRETURN - | kSELF | kSUPER | kTHEN | kTRUE | kUNDEF - | kWHEN | kYIELD | kIF | kUNLESS | kWHILE - | kUNTIL - - arg: lhs tEQL arg - { - result = @builder.assign(val[0], val[1], val[2]) - } - | lhs tEQL arg kRESCUE_MOD arg - { - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.assign(val[0], val[1], rescue_) - } - | var_lhs tOP_ASGN arg - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | var_lhs tOP_ASGN arg kRESCUE_MOD arg - { - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.op_assign(val[0], val[1], rescue_) - } - | primary_value tLBRACK2 opt_call_args rbracket tOP_ASGN arg - { - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - } - | primary_value tDOT tIDENTIFIER tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tDOT tCONSTANT tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tIDENTIFIER tOP_ASGN arg - { - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - } - | primary_value tCOLON2 tCONSTANT tOP_ASGN arg - { - const = @builder.const_op_assignable( - @builder.const_fetch(val[0], val[1], val[2])) - result = @builder.op_assign(const, val[3], val[4]) - } - | tCOLON3 tCONSTANT tOP_ASGN arg - { - const = @builder.const_op_assignable( - @builder.const_global(val[0], val[1])) - result = @builder.op_assign(const, val[2], val[3]) - } - | backref tOP_ASGN arg - { - result = @builder.op_assign(val[0], val[1], val[2]) - } - | arg tDOT2 arg - { - result = @builder.range_inclusive(val[0], val[1], val[2]) - } - | arg tDOT3 arg - { - result = @builder.range_exclusive(val[0], val[1], val[2]) - } - | arg tPLUS arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tMINUS arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tSTAR2 arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tDIVIDE arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tPERCENT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tPOW arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | tUMINUS_NUM simple_numeric tPOW arg - { - result = @builder.unary_op(val[0], - @builder.binary_op( - val[1], val[2], val[3])) - } - | tUPLUS arg - { - result = @builder.unary_op(val[0], val[1]) - } - | tUMINUS arg - { - result = @builder.unary_op(val[0], val[1]) - } - | arg tPIPE arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tCARET arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tAMPER2 arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tCMP arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tGT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tGEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tLT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tLEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tEQQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tNEQ arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tMATCH arg - { - result = @builder.match_op(val[0], val[1], val[2]) - } - | arg tNMATCH arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | tBANG arg - { - result = @builder.not_op(val[0], nil, val[1], nil) - } - | tTILDE arg - { - result = @builder.unary_op(val[0], val[1]) - } - | arg tLSHFT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tRSHFT arg - { - result = @builder.binary_op(val[0], val[1], val[2]) - } - | arg tANDOP arg - { - result = @builder.logical_op(:and, val[0], val[1], val[2]) - } - | arg tOROP arg - { - result = @builder.logical_op(:or, val[0], val[1], val[2]) - } - | kDEFINED opt_nl arg - { - result = @builder.keyword_cmd(:defined?, val[0], nil, [ val[2] ], nil) - } - - # Note: MRI eventually came to rely on disambiguation based on - # the lexer state, but it is too contrived with the Ragel lexer, - # so we kept this approach. See ruby/ruby@b0c03f63e5 for - # the initial commit, and ruby/ruby@23352f62a for MRI revert, - # which we decided not to track. - | arg tEH - { - @lexer.push_cond - @lexer.cond.push(true) - } - arg opt_nl tCOLON - { - @lexer.pop_cond - } - arg - { - result = @builder.ternary(val[0], val[1], - val[3], val[5], val[7]) - } - | primary - - arg_value: arg - - aref_args: none - | args trailer - | args tCOMMA assocs trailer - { - result = val[0] << @builder.associate(nil, val[2], nil) - } - | assocs trailer - { - result = [ @builder.associate(nil, val[0], nil) ] - } - - paren_args: tLPAREN2 opt_call_args rparen - { - result = val - } - - opt_paren_args: # nothing - { - result = [ nil, [], nil ] - } - | paren_args - - opt_call_args: # nothing - { - result = [] - } - | call_args - | args tCOMMA - | args tCOMMA assocs tCOMMA - { - result = val[0] << @builder.associate(nil, val[2], nil) - } - | assocs tCOMMA - { - result = [ @builder.associate(nil, val[0], nil) ] - } - - call_args: command - { - result = [ val[0] ] - } - | args opt_block_arg - { - result = val[0].concat(val[1]) - } - | assocs opt_block_arg - { - result = [ @builder.associate(nil, val[0], nil) ] - result.concat(val[1]) - } - | args tCOMMA assocs opt_block_arg - { - assocs = @builder.associate(nil, val[2], nil) - result = val[0] << assocs - result.concat(val[3]) - } - | block_arg - { - result = [ val[0] ] - } - - command_args: { - result = @lexer.cmdarg.dup - @lexer.cmdarg.push(true) - } - call_args - { - @lexer.cmdarg = val[0] - - result = val[1] - } - - block_arg: tAMPER arg_value - { - result = @builder.block_pass(val[0], val[1]) - } - - opt_block_arg: tCOMMA block_arg - { - result = [ val[1] ] - } - | # nothing - { - result = [] - } - - args: arg_value - { - result = [ val[0] ] - } - | tSTAR arg_value - { - result = [ @builder.splat(val[0], val[1]) ] - } - | args tCOMMA arg_value - { - result = val[0] << val[2] - } - | args tCOMMA tSTAR arg_value - { - result = val[0] << @builder.splat(val[2], val[3]) - } - - mrhs_arg: mrhs - { - result = @builder.array(nil, val[0], nil) - } - | arg_value - - mrhs: args tCOMMA arg_value - { - result = val[0] << val[2] - } - | args tCOMMA tSTAR arg_value - { - result = val[0] << @builder.splat(val[2], val[3]) - } - | tSTAR arg_value - { - result = [ @builder.splat(val[0], val[1]) ] - } - - primary: literal - | strings - | xstring - | regexp - | words - | qwords - | symbols - | qsymbols - | var_ref - | backref - | tFID - { - result = @builder.call_method(nil, nil, val[0]) - } - | kBEGIN - { - result = @lexer.cmdarg.dup - @lexer.cmdarg.clear - } - bodystmt kEND - { - @lexer.cmdarg = val[1] - - result = @builder.begin_keyword(val[0], val[2], val[3]) - } - | tLPAREN_ARG - { - result = @lexer.cmdarg.dup - @lexer.cmdarg.clear - } - expr - { - @lexer.state = :expr_endarg - } - opt_nl tRPAREN - { - @lexer.cmdarg = val[1] - - result = @builder.begin(val[0], val[2], val[5]) - } - | tLPAREN_ARG - { - @lexer.state = :expr_endarg - } - opt_nl tRPAREN - { - result = @builder.begin(val[0], nil, val[3]) - } - | tLPAREN compstmt tRPAREN - { - result = @builder.begin(val[0], val[1], val[2]) - } - | primary_value tCOLON2 tCONSTANT - { - result = @builder.const_fetch(val[0], val[1], val[2]) - } - | tCOLON3 tCONSTANT - { - result = @builder.const_global(val[0], val[1]) - } - | tLBRACK aref_args tRBRACK - { - result = @builder.array(val[0], val[1], val[2]) - } - | tLBRACE assoc_list tRCURLY - { - result = @builder.associate(val[0], val[1], val[2]) - } - | kRETURN - { - result = @builder.keyword_cmd(:return, val[0]) - } - | kYIELD tLPAREN2 call_args rparen - { - result = @builder.keyword_cmd(:yield, val[0], val[1], val[2], val[3]) - } - | kYIELD tLPAREN2 rparen - { - result = @builder.keyword_cmd(:yield, val[0], val[1], [], val[2]) - } - | kYIELD - { - result = @builder.keyword_cmd(:yield, val[0]) - } - | kDEFINED opt_nl tLPAREN2 expr rparen - { - result = @builder.keyword_cmd(:defined?, val[0], - val[2], [ val[3] ], val[4]) - } - | kNOT tLPAREN2 expr rparen - { - result = @builder.not_op(val[0], val[1], val[2], val[3]) - } - | kNOT tLPAREN2 rparen - { - result = @builder.not_op(val[0], val[1], nil, val[2]) - } - | fcall brace_block - { - method_call = @builder.call_method(nil, nil, val[0]) - - begin_t, args, body, end_t = val[1] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | method_call - | method_call brace_block - { - begin_t, args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, args, body, end_t) - } - | tLAMBDA lambda - { - lambda_call = @builder.call_lambda(val[0]) - - args, (begin_t, body, end_t) = val[1] - result = @builder.block(lambda_call, - begin_t, args, body, end_t) - } - | kIF expr_value then compstmt if_tail kEND - { - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, val[5]) - } - | kUNLESS expr_value then compstmt opt_else kEND - { - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - else_, else_t, - val[3], val[5]) - } - | kWHILE - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.loop(:while, val[0], val[2], val[3], - val[5], val[6]) - } - | kUNTIL - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.loop(:until, val[0], val[2], val[3], - val[5], val[6]) - } - | kCASE expr_value opt_terms case_body kEND - { - *when_bodies, (else_t, else_body) = *val[3] - - result = @builder.case(val[0], val[1], - when_bodies, else_t, else_body, - val[4]) - } - | kCASE opt_terms case_body kEND - { - *when_bodies, (else_t, else_body) = *val[2] - - result = @builder.case(val[0], nil, - when_bodies, else_t, else_body, - val[3]) - } - | kFOR for_var kIN - { - @lexer.cond.push(true) - } - expr_value do - { - @lexer.cond.pop - } - compstmt kEND - { - result = @builder.for(val[0], val[1], - val[2], val[4], - val[5], val[7], val[8]) - } - | kCLASS cpath superclass - { - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - if in_def? - diagnostic :error, :class_in_def, nil, val[0] - end - - lt_t, superclass = val[2] - result = @builder.def_class(val[0], val[1], - lt_t, superclass, - val[4], val[5]) - - @lexer.pop_cmdarg - @static_env.unextend - } - | kCLASS tLSHFT expr term - { - result = @def_level - @def_level = 0 - - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - result = @builder.def_sclass(val[0], val[1], val[2], - val[5], val[6]) - - @lexer.pop_cmdarg - @static_env.unextend - - @def_level = val[4] - } - | kMODULE cpath - { - @static_env.extend_static - @lexer.push_cmdarg - } - bodystmt kEND - { - if in_def? - diagnostic :error, :module_in_def, nil, val[0] - end - - result = @builder.def_module(val[0], val[1], - val[3], val[4]) - - @lexer.pop_cmdarg - @static_env.unextend - } - | kDEF fname - { - @def_level += 1 - @static_env.extend_static - @lexer.push_cmdarg - } - f_arglist bodystmt kEND - { - result = @builder.def_method(val[0], val[1], - val[3], val[4], val[5]) - - @lexer.pop_cmdarg - @static_env.unextend - @def_level -= 1 - } - | kDEF singleton dot_or_colon - { - @lexer.state = :expr_fname - } - fname - { - @def_level += 1 - @static_env.extend_static - @lexer.push_cmdarg - } - f_arglist bodystmt kEND - { - result = @builder.def_singleton(val[0], val[1], val[2], - val[4], val[6], val[7], val[8]) - - @lexer.pop_cmdarg - @static_env.unextend - @def_level -= 1 - } - | kBREAK - { - result = @builder.keyword_cmd(:break, val[0]) - } - | kNEXT - { - result = @builder.keyword_cmd(:next, val[0]) - } - | kREDO - { - result = @builder.keyword_cmd(:redo, val[0]) - } - | kRETRY - { - result = @builder.keyword_cmd(:retry, val[0]) - } - - primary_value: primary - - then: term - | kTHEN - | term kTHEN - { - result = val[1] - } - - do: term - | kDO_COND - - if_tail: opt_else - | kELSIF expr_value then compstmt if_tail - { - else_t, else_ = val[4] - result = [ val[0], - @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, nil), - ] - } - - opt_else: none - | kELSE compstmt - { - result = val - } - - for_var: lhs - | mlhs - - f_marg: f_norm_arg - { - result = @builder.arg(val[0]) - } - | tLPAREN f_margs rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - f_marg_list: f_marg - { - result = [ val[0] ] - } - | f_marg_list tCOMMA f_marg - { - result = val[0] << val[2] - } - - f_margs: f_marg_list - | f_marg_list tCOMMA tSTAR f_norm_arg - { - result = val[0]. - push(@builder.restarg(val[2], val[3])) - } - | f_marg_list tCOMMA tSTAR f_norm_arg tCOMMA f_marg_list - { - result = val[0]. - push(@builder.restarg(val[2], val[3])). - concat(val[5]) - } - | f_marg_list tCOMMA tSTAR - { - result = val[0]. - push(@builder.restarg(val[2])) - } - | f_marg_list tCOMMA tSTAR tCOMMA f_marg_list - { - result = val[0]. - push(@builder.restarg(val[2])). - concat(val[4]) - } - | tSTAR f_norm_arg - { - result = [ @builder.restarg(val[0], val[1]) ] - } - | tSTAR f_norm_arg tCOMMA f_marg_list - { - result = [ @builder.restarg(val[0], val[1]), - *val[3] ] - } - | tSTAR - { - result = [ @builder.restarg(val[0]) ] - } - | tSTAR tCOMMA f_marg_list - { - result = [ @builder.restarg(val[0]), - *val[2] ] - } - - block_args_tail: f_block_kwarg tCOMMA f_kwrest opt_f_block_arg - { - result = val[0].concat(val[2]).concat(val[3]) - } - | f_block_kwarg opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_kwrest opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_block_arg - { - result = [ val[0] ] - } - -opt_block_args_tail: - tCOMMA block_args_tail - { - result = val[1] - } - | # nothing - { - result = [] - } - - block_param: f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[6]). - concat(val[7]) - } - | f_arg tCOMMA f_block_optarg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_block_optarg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_rest_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA - | f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg opt_block_args_tail - { - result = val[0].concat(val[1]) - } - | f_block_optarg tCOMMA f_rest_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_block_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_block_optarg opt_block_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_block_optarg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_rest_arg opt_block_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_rest_arg tCOMMA f_arg opt_block_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | block_args_tail - - opt_block_param: # nothing - { - result = @builder.args(nil, [], nil) - } - | block_param_def - { - @lexer.state = :expr_value - } - - block_param_def: tPIPE opt_bv_decl tPIPE - { - result = @builder.args(val[0], val[1], val[2]) - } - | tOROP - { - result = @builder.args(val[0], [], val[0]) - } - | tPIPE block_param opt_bv_decl tPIPE - { - result = @builder.args(val[0], val[1].concat(val[2]), val[3]) - } - - opt_bv_decl: opt_nl - { - result = [] - } - | opt_nl tSEMI bv_decls opt_nl - { - result = val[2] - } - - bv_decls: bvar - { - result = [ val[0] ] - } - | bv_decls tCOMMA bvar - { - result = val[0] << val[2] - } - - bvar: tIDENTIFIER - { - result = @builder.shadowarg(val[0]) - } - | f_bad_arg - - lambda: { - @static_env.extend_dynamic - } - f_larglist - { - result = @lexer.cmdarg.dup - @lexer.cmdarg.clear - } - lambda_body - { - @lexer.cmdarg = val[2] - @lexer.cmdarg.lexpop - - result = [ val[1], val[3] ] - - @static_env.unextend - } - - f_larglist: tLPAREN2 f_args opt_bv_decl tRPAREN - { - result = @builder.args(val[0], val[1].concat(val[2]), val[3]) - } - | f_args - { - result = @builder.args(nil, val[0], nil) - } - - lambda_body: tLAMBEG compstmt tRCURLY - { - result = [ val[0], val[1], val[2] ] - } - | kDO_LAMBDA compstmt kEND - { - result = [ val[0], val[1], val[2] ] - } - - do_block: kDO_BLOCK - { - @static_env.extend_dynamic - } - opt_block_param compstmt kEND - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - block_call: command do_block - { - begin_t, block_args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, block_args, body, end_t) - } - | block_call dot_or_colon operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | block_call dot_or_colon operation2 opt_paren_args brace_block - { - lparen_t, args, rparen_t = val[3] - method_call = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - | block_call dot_or_colon operation2 command_args do_block - { - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - } - - method_call: fcall paren_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.call_method(nil, nil, val[0], - lparen_t, args, rparen_t) - } - | primary_value tDOT operation2 opt_paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 operation2 paren_args - { - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 operation3 - { - result = @builder.call_method(val[0], val[1], val[2]) - } - | primary_value tDOT paren_args - { - lparen_t, args, rparen_t = val[2] - result = @builder.call_method(val[0], val[1], nil, - lparen_t, args, rparen_t) - } - | primary_value tCOLON2 paren_args - { - lparen_t, args, rparen_t = val[2] - result = @builder.call_method(val[0], val[1], nil, - lparen_t, args, rparen_t) - } - | kSUPER paren_args - { - lparen_t, args, rparen_t = val[1] - result = @builder.keyword_cmd(:super, val[0], - lparen_t, args, rparen_t) - } - | kSUPER - { - result = @builder.keyword_cmd(:zsuper, val[0]) - } - | primary_value tLBRACK2 opt_call_args rbracket - { - result = @builder.index(val[0], val[1], val[2], val[3]) - } - - brace_block: tLCURLY - { - @static_env.extend_dynamic - } - opt_block_param compstmt tRCURLY - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - | kDO - { - @static_env.extend_dynamic - } - opt_block_param compstmt kEND - { - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - } - - case_body: kWHEN args then compstmt cases - { - result = [ @builder.when(val[0], val[1], val[2], val[3]), - *val[4] ] - } - - cases: opt_else - { - result = [ val[0] ] - } - | case_body - - opt_rescue: kRESCUE exc_list exc_var then compstmt opt_rescue - { - assoc_t, exc_var = val[2] - - if val[1] - exc_list = @builder.array(nil, val[1], nil) - end - - result = [ @builder.rescue_body(val[0], - exc_list, assoc_t, exc_var, - val[3], val[4]), - *val[5] ] - } - | - { - result = [] - } - - exc_list: arg_value - { - result = [ val[0] ] - } - | mrhs - | none - - exc_var: tASSOC lhs - { - result = [ val[0], val[1] ] - } - | none - - opt_ensure: kENSURE compstmt - { - result = [ val[0], val[1] ] - } - | none - - literal: numeric - | symbol - | dsym - - strings: string - { - result = @builder.string_compose(nil, val[0], nil) - } - - string: string1 - { - result = [ val[0] ] - } - | string string1 - { - result = val[0] << val[1] - } - - string1: tSTRING_BEG string_contents tSTRING_END - { - result = @builder.string_compose(val[0], val[1], val[2]) - } - | tSTRING - { - result = @builder.string(val[0]) - } - | tCHARACTER - { - result = @builder.character(val[0]) - } - - xstring: tXSTRING_BEG xstring_contents tSTRING_END - { - result = @builder.xstring_compose(val[0], val[1], val[2]) - } - - regexp: tREGEXP_BEG regexp_contents tSTRING_END tREGEXP_OPT - { - opts = @builder.regexp_options(val[3]) - result = @builder.regexp_compose(val[0], val[1], val[2], opts) - } - - words: tWORDS_BEG word_list tSTRING_END - { - result = @builder.words_compose(val[0], val[1], val[2]) - } - - word_list: # nothing - { - result = [] - } - | word_list word tSPACE - { - result = val[0] << @builder.word(val[1]) - } - - word: string_content - { - result = [ val[0] ] - } - | word string_content - { - result = val[0] << val[1] - } - - symbols: tSYMBOLS_BEG symbol_list tSTRING_END - { - result = @builder.symbols_compose(val[0], val[1], val[2]) - } - - symbol_list: # nothing - { - result = [] - } - | symbol_list word tSPACE - { - result = val[0] << @builder.word(val[1]) - } - - qwords: tQWORDS_BEG qword_list tSTRING_END - { - result = @builder.words_compose(val[0], val[1], val[2]) - } - - qsymbols: tQSYMBOLS_BEG qsym_list tSTRING_END - { - result = @builder.symbols_compose(val[0], val[1], val[2]) - } - - qword_list: # nothing - { - result = [] - } - | qword_list tSTRING_CONTENT tSPACE - { - result = val[0] << @builder.string_internal(val[1]) - } - - qsym_list: # nothing - { - result = [] - } - | qsym_list tSTRING_CONTENT tSPACE - { - result = val[0] << @builder.symbol_internal(val[1]) - } - - string_contents: # nothing - { - result = [] - } - | string_contents string_content - { - result = val[0] << val[1] - } - -xstring_contents: # nothing - { - result = [] - } - | xstring_contents string_content - { - result = val[0] << val[1] - } - -regexp_contents: # nothing - { - result = [] - } - | regexp_contents string_content - { - result = val[0] << val[1] - } - - string_content: tSTRING_CONTENT - { - result = @builder.string_internal(val[0]) - } - | tSTRING_DVAR string_dvar - { - result = val[1] - } - | tSTRING_DBEG - { - @lexer.cond.push(false) - @lexer.cmdarg.push(false) - } - compstmt tSTRING_DEND - { - @lexer.cond.lexpop - @lexer.cmdarg.lexpop - - result = @builder.begin(val[0], val[2], val[3]) - } - - string_dvar: tGVAR - { - result = @builder.gvar(val[0]) - } - | tIVAR - { - result = @builder.ivar(val[0]) - } - | tCVAR - { - result = @builder.cvar(val[0]) - } - | backref - - - symbol: tSYMBOL - { - result = @builder.symbol(val[0]) - } - - dsym: tSYMBEG xstring_contents tSTRING_END - { - result = @builder.symbol_compose(val[0], val[1], val[2]) - } - - numeric: simple_numeric - { - result = val[0] - } - | tUMINUS_NUM simple_numeric =tLOWEST - { - result = @builder.negate(val[0], val[1]) - } - - simple_numeric: tINTEGER - { - result = @builder.integer(val[0]) - } - | tFLOAT - { - result = @builder.float(val[0]) - } - | tRATIONAL - { - result = @builder.rational(val[0]) - } - | tIMAGINARY - { - result = @builder.complex(val[0]) - } - - user_variable: tIDENTIFIER - { - result = @builder.ident(val[0]) - } - | tIVAR - { - result = @builder.ivar(val[0]) - } - | tGVAR - { - result = @builder.gvar(val[0]) - } - | tCONSTANT - { - result = @builder.const(val[0]) - } - | tCVAR - { - result = @builder.cvar(val[0]) - } - -keyword_variable: kNIL - { - result = @builder.nil(val[0]) - } - | kSELF - { - result = @builder.self(val[0]) - } - | kTRUE - { - result = @builder.true(val[0]) - } - | kFALSE - { - result = @builder.false(val[0]) - } - | k__FILE__ - { - result = @builder.__FILE__(val[0]) - } - | k__LINE__ - { - result = @builder.__LINE__(val[0]) - } - | k__ENCODING__ - { - result = @builder.__ENCODING__(val[0]) - } - - var_ref: user_variable - { - result = @builder.accessible(val[0]) - } - | keyword_variable - { - result = @builder.accessible(val[0]) - } - - var_lhs: user_variable - { - result = @builder.assignable(val[0]) - } - | keyword_variable - { - result = @builder.assignable(val[0]) - } - - backref: tNTH_REF - { - result = @builder.nth_ref(val[0]) - } - | tBACK_REF - { - result = @builder.back_ref(val[0]) - } - - superclass: term - { - result = nil - } - | tLT - { - @lexer.state = :expr_value - } - expr_value term - { - result = [ val[0], val[2] ] - } - | error term - { - yyerrok - result = nil - } - - f_arglist: tLPAREN2 f_args rparen - { - result = @builder.args(val[0], val[1], val[2]) - - @lexer.state = :expr_value - } - | { - result = @lexer.in_kwarg - @lexer.in_kwarg = true - } - f_args term - { - @lexer.in_kwarg = val[0] - result = @builder.args(nil, val[1], nil) - } - - args_tail: f_kwarg tCOMMA f_kwrest opt_f_block_arg - { - result = val[0].concat(val[2]).concat(val[3]) - } - | f_kwarg opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_kwrest opt_f_block_arg - { - result = val[0].concat(val[1]) - } - | f_block_arg - { - result = [ val[0] ] - } - - opt_args_tail: tCOMMA args_tail - { - result = val[1] - } - | # nothing - { - result = [] - } - - f_args: f_arg tCOMMA f_optarg tCOMMA f_rest_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[6]). - concat(val[7]) - } - | f_arg tCOMMA f_optarg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_optarg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg tCOMMA f_rest_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_arg tCOMMA f_rest_arg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_arg opt_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_optarg tCOMMA f_rest_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_optarg tCOMMA f_rest_arg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - } - | f_optarg opt_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_optarg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | f_rest_arg opt_args_tail - { - result = val[0]. - concat(val[1]) - } - | f_rest_arg tCOMMA f_arg opt_args_tail - { - result = val[0]. - concat(val[2]). - concat(val[3]) - } - | args_tail - { - result = val[0] - } - | # nothing - { - result = [] - } - - f_bad_arg: tCONSTANT - { - diagnostic :error, :argument_const, nil, val[0] - } - | tIVAR - { - diagnostic :error, :argument_ivar, nil, val[0] - } - | tGVAR - { - diagnostic :error, :argument_gvar, nil, val[0] - } - | tCVAR - { - diagnostic :error, :argument_cvar, nil, val[0] - } - - f_norm_arg: f_bad_arg - | tIDENTIFIER - { - @static_env.declare val[0][0] - - result = val[0] - } - - f_arg_asgn: f_norm_arg - { - result = val[0] - } - - f_arg_item: f_arg_asgn - { - result = @builder.arg(val[0]) - } - | tLPAREN f_margs rparen - { - result = @builder.multi_lhs(val[0], val[1], val[2]) - } - - f_arg: f_arg_item - { - result = [ val[0] ] - } - | f_arg tCOMMA f_arg_item - { - result = val[0] << val[2] - } - - f_label: tLABEL - { - check_kwarg_name(val[0]) - - @static_env.declare val[0][0] - - result = val[0] - } - - f_kw: f_label arg_value - { - result = @builder.kwoptarg(val[0], val[1]) - } - | f_label - { - result = @builder.kwarg(val[0]) - } - - f_block_kw: f_label primary_value - { - result = @builder.kwoptarg(val[0], val[1]) - } - | f_label - { - result = @builder.kwarg(val[0]) - } - - f_block_kwarg: f_block_kw - { - result = [ val[0] ] - } - | f_block_kwarg tCOMMA f_block_kw - { - result = val[0] << val[2] - } - - f_kwarg: f_kw - { - result = [ val[0] ] - } - | f_kwarg tCOMMA f_kw - { - result = val[0] << val[2] - } - - kwrest_mark: tPOW | tDSTAR - - f_kwrest: kwrest_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = [ @builder.kwrestarg(val[0], val[1]) ] - } - | kwrest_mark - { - result = [ @builder.kwrestarg(val[0]) ] - } - - f_opt: f_arg_asgn tEQL arg_value - { - result = @builder.optarg(val[0], val[1], val[2]) - } - - f_block_opt: f_arg_asgn tEQL primary_value - { - result = @builder.optarg(val[0], val[1], val[2]) - } - - f_block_optarg: f_block_opt - { - result = [ val[0] ] - } - | f_block_optarg tCOMMA f_block_opt - { - result = val[0] << val[2] - } - - f_optarg: f_opt - { - result = [ val[0] ] - } - | f_optarg tCOMMA f_opt - { - result = val[0] << val[2] - } - - restarg_mark: tSTAR2 | tSTAR - - f_rest_arg: restarg_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = [ @builder.restarg(val[0], val[1]) ] - } - | restarg_mark - { - result = [ @builder.restarg(val[0]) ] - } - - blkarg_mark: tAMPER2 | tAMPER - - f_block_arg: blkarg_mark tIDENTIFIER - { - @static_env.declare val[1][0] - - result = @builder.blockarg(val[0], val[1]) - } - - opt_f_block_arg: tCOMMA f_block_arg - { - result = [ val[1] ] - } - | - { - result = [] - } - - singleton: var_ref - | tLPAREN2 expr rparen - { - result = val[1] - } - - assoc_list: # nothing - { - result = [] - } - | assocs trailer - - assocs: assoc - { - result = [ val[0] ] - } - | assocs tCOMMA assoc - { - result = val[0] << val[2] - } - - assoc: arg_value tASSOC arg_value - { - result = @builder.pair(val[0], val[1], val[2]) - } - | tLABEL arg_value - { - result = @builder.pair_keyword(val[0], val[1]) - } - | tSTRING_BEG string_contents tLABEL_END arg_value - { - result = @builder.pair_quoted(val[0], val[1], val[2], val[3]) - } - | tDSTAR arg_value - { - result = @builder.kwsplat(val[0], val[1]) - } - - operation: tIDENTIFIER | tCONSTANT | tFID - operation2: tIDENTIFIER | tCONSTANT | tFID | op - operation3: tIDENTIFIER | tFID | op - dot_or_colon: tDOT | tCOLON2 - opt_terms: | terms - opt_nl: | tNL - rparen: opt_nl tRPAREN - { - result = val[1] - } - rbracket: opt_nl tRBRACK - { - result = val[1] - } - trailer: | tNL | tCOMMA - - term: tSEMI - { - yyerrok - } - | tNL - - terms: term - | terms tSEMI - - none: # nothing - { - result = nil - } -end - ----- header - -require 'parser' - -Parser.check_for_encoding_support - ----- inner - - def version - 22 - end - - def default_encoding - Encoding::UTF_8 - end diff --git a/test/racc/assets/scan.y b/test/racc/assets/scan.y deleted file mode 100644 index 709254ed66..0000000000 --- a/test/racc/assets/scan.y +++ /dev/null @@ -1,72 +0,0 @@ -class P - -rule - - a: A - { - # comment test - - # comment test - - # string - @sstring = 'squote string' - @dstring = 'dquote string' - - # regexp - @regexp = /some regexp with spaces/ - - # gvar - /regexp/ === 'some regexp matches to this string' - @pre_match = $` - @matched = $& - @post_match = $' - @m = $~ - - # braces - @array = [] - [1,2,3].each {|i| - @array.push i - } - 3.times { @array.push 10 } - } - -end - ----- inner - - def parse - @sstring = @dstring = nil - @regexp = nil - @pre_match = @matched = @post_match = @m = nil - - @src = [[:A, 'A'], [false, '$']] - do_parse - - assert_equal 'squote string', @sstring - assert_equal 'dquote string', @dstring - assert_equal(/some regexp with spaces/, @regexp) - assert_equal 'some ', @pre_match - assert_equal 'regexp', @matched - assert_equal ' matches to this string', @post_match - assert_instance_of MatchData, @m - end - - def assert_equal(ok, data) - unless ok == data - raise "expected <#{ok.inspect}> but is <#{data.inspect}>" - end - end - - def assert_instance_of(klass, obj) - unless obj.instance_of?(klass) - raise "expected #{klass} but is #{obj.class}" - end - end - - def next_token - @src.shift - end - ----- footer - -P.new.parse diff --git a/test/racc/assets/syntax.y b/test/racc/assets/syntax.y deleted file mode 100644 index 727f74a29d..0000000000 --- a/test/racc/assets/syntax.y +++ /dev/null @@ -1,50 +0,0 @@ -# -# racc syntax checker -# - -class M1::M2::ParserClass < S1::S2::SuperClass - - token A - | B C - - convert - A '5' - end - - prechigh - left B - preclow - - start target - - expect 0 - -rule - - target: A B C - { - print 'abc' - } - | B C A - | C B A - { - print 'cba' - } - | cont - - cont : A c2 B c2 C - - c2 : C C C C C - -end - ----- inner - - junk code !!!! - -kjaljlajrlaolanbla /// %%% (*((( token rule -akiurtlajluealjflaj @@@@ end end end end __END__ - laieu2o879urkq96ga(Q#*&%Q# - #&lkji END - - q395q?/// liutjqlkr7 diff --git a/test/racc/assets/tp_plus.y b/test/racc/assets/tp_plus.y deleted file mode 100644 index 388ed1302d..0000000000 --- a/test/racc/assets/tp_plus.y +++ /dev/null @@ -1,622 +0,0 @@ -# Released under an MIT License (http://www.opensource.org/licenses/MIT) -# By Jay Strybis (https://github.com/unreal) - -class TPPlus::Parser -token ASSIGN AT_SYM COMMENT JUMP IO_METHOD INPUT OUTPUT -token NUMREG POSREG VREG SREG TIME_SEGMENT ARG UALM -token MOVE DOT TO AT TERM OFFSET SKIP GROUP -token SEMICOLON NEWLINE STRING -token REAL DIGIT WORD EQUAL -token EEQUAL NOTEQUAL GTE LTE LT GT BANG -token PLUS MINUS STAR SLASH DIV AND OR MOD -token IF ELSE END UNLESS FOR IN WHILE -token WAIT_FOR WAIT_UNTIL TIMEOUT AFTER -token FANUC_USE SET_SKIP_CONDITION NAMESPACE -token CASE WHEN INDIRECT POSITION -token EVAL TIMER TIMER_METHOD RAISE ABORT -token POSITION_DATA TRUE_FALSE RUN TP_HEADER PAUSE -token LPAREN RPAREN COLON COMMA LBRACK RBRACK LBRACE RBRACE -token LABEL ADDRESS -token false - -prechigh - right BANG - left STAR SLASH DIV MOD - left PLUS MINUS - left GT GTE LT LTE - left EEQUAL NOTEQUAL - left AND - left OR - right EQUAL -preclow - -rule - program - #: statements { @interpreter.nodes = val[0].flatten } - : statements { @interpreter.nodes = val[0] } - | - ; - - - statements - : statement terminator { - result = [val[0]] - result << val[1] unless val[1].nil? - } - | statements statement terminator { - result = val[0] << val[1] - result << val[2] unless val[2].nil? - } - ; - - block - : NEWLINE statements { result = val[1] } - ; - - optional_newline - : NEWLINE - | - ; - - statement - : comment - | definition - | namespace - #| assignment - | motion_statement - #| jump - #| io_method - | label_definition - | address - | conditional - | inline_conditional - | forloop - | while_loop - #| program_call - | use_statement - | set_skip_statement - | wait_statement - | case_statement - | fanuc_eval - | timer_method - | position_data - | raise - | tp_header_definition - | empty_stmt - | PAUSE { result = PauseNode.new } - | ABORT { result = AbortNode.new } - ; - - empty_stmt - : NEWLINE { result = EmptyStmtNode.new() } - ; - - tp_header_definition - : TP_HEADER EQUAL tp_header_value { result = HeaderNode.new(val[0],val[2]) } - ; - - tp_header_value - : STRING - | TRUE_FALSE - ; - - raise - : RAISE var_or_indirect { result = RaiseNode.new(val[1]) } - ; - - timer_method - : TIMER_METHOD var_or_indirect { result = TimerMethodNode.new(val[0],val[1]) } - ; - - fanuc_eval - : EVAL STRING { result = EvalNode.new(val[1]) } - ; - - wait_statement - : WAIT_FOR LPAREN indirectable COMMA STRING RPAREN - { result = WaitForNode.new(val[2], val[4]) } - | WAIT_UNTIL LPAREN expression RPAREN - { result = WaitUntilNode.new(val[2], nil) } - | WAIT_UNTIL LPAREN expression RPAREN DOT wait_modifier - { result = WaitUntilNode.new(val[2],val[5]) } - | WAIT_UNTIL LPAREN expression RPAREN DOT wait_modifier DOT wait_modifier - { result = WaitUntilNode.new(val[2],val[5].merge(val[7])) } - ; - - wait_modifier - : timeout_modifier - | after_modifier - ; - - timeout_modifier - : swallow_newlines TIMEOUT LPAREN label RPAREN - { result = { label: val[3] } } - ; - - after_modifier - : swallow_newlines AFTER LPAREN indirectable COMMA STRING RPAREN - { result = { timeout: [val[3],val[5]] } } - ; - - label - : LABEL { result = val[0] } - ; - - use_statement - : FANUC_USE indirectable { result = UseNode.new(val[0],val[1]) } - ; - - # set_skip_condition x - set_skip_statement - : SET_SKIP_CONDITION expression { result = SetSkipNode.new(val[1]) } - ; - - program_call - : WORD LPAREN args RPAREN { result = CallNode.new(val[0],val[2]) } - | RUN WORD LPAREN args RPAREN { result = CallNode.new(val[1],val[3],async: true) } - ; - - args - : arg { result = [val[0]] } - | args COMMA arg { result = val[0] << val[2] } - | { result = [] } - ; - - arg - : number - | var - | string - | address - ; - - string - : STRING { result = StringNode.new(val[0]) } - ; - - io_method - : IO_METHOD var_or_indirect { result = IOMethodNode.new(val[0],val[1]) } - | IO_METHOD LPAREN var_or_indirect RPAREN - { result = IOMethodNode.new(val[0],val[2]) } - | IO_METHOD LPAREN var_or_indirect COMMA number COMMA STRING RPAREN - { result = IOMethodNode.new(val[0],val[2],{ pulse_time: val[4], pulse_units: val[6] }) } - ; - - var_or_indirect - : var - | indirect_thing - ; - - - jump - : JUMP label { result = JumpNode.new(val[1]) } - ; - - conditional - : IF expression block else_block END - { result = ConditionalNode.new("if",val[1],val[2],val[3]) } - | UNLESS expression block else_block END - { result = ConditionalNode.new("unless",val[1],val[2],val[3]) } - ; - - forloop - : FOR var IN LPAREN minmax_val TO minmax_val RPAREN block END - { result = ForNode.new(val[1],val[4],val[6],val[8]) } - ; - - while_loop - : WHILE expression block END { result = WhileNode.new(val[1],val[2]) } - ; - - minmax_val - : integer - | var - ; - - namespace - : NAMESPACE WORD block END { result = NamespaceNode.new(val[1],val[2]) } - ; - - case_statement - : CASE var swallow_newlines - case_conditions - case_else - END { result = CaseNode.new(val[1],val[3],val[4]) } - ; - - case_conditions - : case_condition { result = val } - | case_conditions case_condition - { result = val[0] << val[1] << val[2] } - ; - - case_condition - : WHEN case_allowed_condition swallow_newlines case_allowed_statement - terminator { result = CaseConditionNode.new(val[1],val[3]) } - ; - - case_allowed_condition - : number - | var - ; - - case_else - : ELSE swallow_newlines case_allowed_statement terminator - { result = CaseConditionNode.new(nil,val[2]) } - | - ; - - case_allowed_statement - : program_call - | jump - ; - - inline_conditional - : inlineable - | inlineable IF expression { result = InlineConditionalNode.new(val[1], val[2], val[0]) } - | inlineable UNLESS expression { result = InlineConditionalNode.new(val[1], val[2], val[0]) } - ; - - inlineable - : jump - | assignment - | io_method - | program_call - ; - - else_block - : ELSE block { result = val[1] } - | { result = [] } - ; - - motion_statement - : MOVE DOT swallow_newlines TO LPAREN var RPAREN motion_modifiers - { result = MotionNode.new(val[0],val[5],val[7]) } - ; - - motion_modifiers - : motion_modifier { result = val } - | motion_modifiers motion_modifier - { result = val[0] << val[1] } - ; - - motion_modifier - : DOT swallow_newlines AT LPAREN speed RPAREN - { result = SpeedNode.new(val[4]) } - | DOT swallow_newlines TERM LPAREN valid_terminations RPAREN - { result = TerminationNode.new(val[4]) } - | DOT swallow_newlines OFFSET LPAREN var RPAREN - { result = OffsetNode.new(val[2],val[4]) } - | DOT swallow_newlines TIME_SEGMENT LPAREN time COMMA time_seg_actions RPAREN - { result = TimeNode.new(val[2],val[4],val[6]) } - | DOT swallow_newlines SKIP LPAREN label optional_lpos_arg RPAREN - { result = SkipNode.new(val[4],val[5]) } - ; - - valid_terminations - : integer - | var - | MINUS DIGIT { - raise Racc::ParseError, sprintf("\ninvalid termination type: (%s)", val[1]) if val[1] != 1 - - result = DigitNode.new(val[1].to_i * -1) - } - ; - - optional_lpos_arg - : COMMA var { result = val[1] } - | - ; - - indirectable - : number - | var - ; - - time_seg_actions - : program_call - | io_method - ; - - time - : var - | number - ; - - speed - : indirectable COMMA STRING { result = { speed: val[0], units: val[2] } } - | STRING { result = { speed: val[0], units: nil } } - ; - - label_definition - : label { result = LabelDefinitionNode.new(val[0]) }#@interpreter.add_label(val[1]) } - ; - - definition - : WORD ASSIGN definable { result = DefinitionNode.new(val[0],val[2]) } - ; - - assignment - : var_or_indirect EQUAL expression { result = AssignmentNode.new(val[0],val[2]) } - | var_or_indirect PLUS EQUAL expression { result = AssignmentNode.new( - val[0], - ExpressionNode.new(val[0],"+",val[3]) - ) - } - | var_or_indirect MINUS EQUAL expression { result = AssignmentNode.new( - val[0], - ExpressionNode.new(val[0],"-",val[3]) - ) - } - ; - - var - : var_without_namespaces - | var_with_namespaces - ; - - var_without_namespaces - : WORD { result = VarNode.new(val[0]) } - | WORD var_method_modifiers { result = VarMethodNode.new(val[0],val[1]) } - ; - - var_with_namespaces - : namespaces var_without_namespaces - { result = NamespacedVarNode.new(val[0],val[1]) } - ; - - var_method_modifiers - : var_method_modifier { result = val[0] } - | var_method_modifiers var_method_modifier - { result = val[0].merge(val[1]) } - ; - - var_method_modifier - : DOT swallow_newlines WORD { result = { method: val[2] } } - | DOT swallow_newlines GROUP LPAREN integer RPAREN - { result = { group: val[4] } } - ; - - namespaces - : ns { result = [val[0]] } - | namespaces ns { result = val[0] << val[1] } - ; - - ns - : WORD COLON COLON { result = val[0] } - ; - - - expression - : unary_expression - | binary_expression - ; - - unary_expression - : factor { result = val[0] } - | address - | BANG factor { result = ExpressionNode.new(val[1], "!", nil) } - ; - - binary_expression - : expression operator expression - { result = ExpressionNode.new(val[0], val[1], val[2]) } - ; - - operator - : EEQUAL { result = "==" } - | NOTEQUAL { result = "<>" } - | LT { result = "<" } - | GT { result = ">" } - | GTE { result = ">=" } - | LTE { result = "<=" } - | PLUS { result = "+" } - | MINUS { result = "-" } - | OR { result = "||" } - | STAR { result = "*" } - | SLASH { result = "/" } - | DIV { result = "DIV" } - | MOD { result = "%" } - | AND { result = "&&" } - ; - - factor - : number - | signed_number - | var - | indirect_thing - | paren_expr - ; - - paren_expr - : LPAREN expression RPAREN { result = ParenExpressionNode.new(val[1]) } - ; - - indirect_thing - : INDIRECT LPAREN STRING COMMA indirectable RPAREN - { result = IndirectNode.new(val[2].to_sym, val[4]) } - ; - - signed_number - : sign DIGIT { - val[1] = val[1].to_i * -1 if val[0] == "-" - result = DigitNode.new(val[1]) - } - | sign REAL { val[1] = val[1].to_f * -1 if val[0] == "-"; result = RealNode.new(val[1]) } - ; - - sign - : MINUS { result = "-" } - ; - - number - : integer - | REAL { result = RealNode.new(val[0]) } - ; - - integer - : DIGIT { result = DigitNode.new(val[0]) } - ; - - definable - : numreg - | output - | input - | posreg - | position - | vreg - | number - | signed_number - | argument - | timer - | ualm - | sreg - ; - - - sreg - : SREG LBRACK DIGIT RBRACK { result = StringRegisterNode.new(val[2].to_i) } - ; - - ualm - : UALM LBRACK DIGIT RBRACK { result = UserAlarmNode.new(val[2].to_i) } - ; - - timer - : TIMER LBRACK DIGIT RBRACK { result = TimerNode.new(val[2].to_i) } - ; - - argument - : ARG LBRACK DIGIT RBRACK { result = ArgumentNode.new(val[2].to_i) } - ; - - vreg - : VREG LBRACK DIGIT RBRACK { result = VisionRegisterNode.new(val[2].to_i) } - ; - - position - : POSITION LBRACK DIGIT RBRACK { result = PositionNode.new(val[2].to_i) } - ; - - numreg - : NUMREG LBRACK DIGIT RBRACK { result = NumregNode.new(val[2].to_i) } - ; - - posreg - : POSREG LBRACK DIGIT RBRACK { result = PosregNode.new(val[2].to_i) } - ; - - output - : OUTPUT LBRACK DIGIT RBRACK { result = IONode.new(val[0], val[2].to_i) } - ; - - input - : INPUT LBRACK DIGIT RBRACK { result = IONode.new(val[0], val[2].to_i) } - ; - - address - : ADDRESS { result = AddressNode.new(val[0]) } - ; - - comment - : COMMENT { result = CommentNode.new(val[0]) } - ; - - terminator - : NEWLINE { result = TerminatorNode.new } - | comment optional_newline { result = val[0] } - # ^-- consume newlines or else we will get an extra space from EmptyStmt in the output - | false - | - ; - - swallow_newlines - : NEWLINE { result = TerminatorNode.new } - | - ; - - position_data - : POSITION_DATA sn hash sn END - { result = PositionDataNode.new(val[2]) } - ; - - sn - : swallow_newlines - ; - - hash - : LBRACE sn hash_attributes sn RBRACE { result = val[2] } - | LBRACE sn RBRACE { result = {} } - ; - - hash_attributes - : hash_attribute { result = val[0] } - | hash_attributes COMMA sn hash_attribute - { result = val[0].merge(val[3]) } - ; - - hash_attribute - : STRING COLON hash_value { result = { val[0].to_sym => val[2] } } - ; - - hash_value - : STRING - | hash - | array - | optional_sign DIGIT { val[1] = val[1].to_i * -1 if val[0] == "-"; result = val[1] } - | optional_sign REAL { val[1] = val[1].to_f * -1 if val[0] == "-"; result = val[1] } - | TRUE_FALSE { result = val[0] == "true" } - ; - - optional_sign - : sign - | - ; - - array - : LBRACK sn array_values sn RBRACK { result = val[2] } - ; - - array_values - : array_value { result = val } - | array_values COMMA sn array_value { result = val[0] << val[3] } - ; - - array_value - : hash_value - ; - - -end - ----- inner - - include TPPlus::Nodes - - attr_reader :interpreter - def initialize(scanner, interpreter = TPPlus::Interpreter.new) - @scanner = scanner - @interpreter = interpreter - super() - end - - def next_token - t = @scanner.next_token - @interpreter.line_count += 1 if t && t[0] == :NEWLINE - - #puts t.inspect - t - end - - def parse - #@yydebug =true - - do_parse - @interpreter - end - - def on_error(t, val, vstack) - raise ParseError, sprintf("Parse error on line #{@scanner.tok_line} column #{@scanner.tok_col}: %s (%s)", - val.inspect, token_to_str(t) || '?') - end - - class ParseError < StandardError ; end diff --git a/test/racc/assets/twowaysql.y b/test/racc/assets/twowaysql.y deleted file mode 100644 index d3bc748d3a..0000000000 --- a/test/racc/assets/twowaysql.y +++ /dev/null @@ -1,278 +0,0 @@ -# Copyright 2008-2015 Takuto Wada -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -class TwoWaySQL::Parser - -rule - -sql : stmt_list - { - result = RootNode.new( val[0] ) - } - -stmt_list : - { - result = [] - } - | stmt_list stmt - { - result.push val[1] - } - -stmt : primary - | if_stmt - | begin_stmt - -begin_stmt : BEGIN stmt_list END - { - result = BeginNode.new( val[1] ) - } - -if_stmt : IF sub_stmt else_stmt END - { - result = IfNode.new( val[0][1], val[1], val[2] ) - } - -else_stmt : ELSE sub_stmt - { - result = val[1] - } - | - { - result = nil - } - -sub_stmt : and_stmt - | or_stmt - | stmt_list - -and_stmt : AND stmt_list - { - result = SubStatementNode.new( val[0][1], val[1] ) - } - -or_stmt : OR stmt_list - { - result = SubStatementNode.new( val[0][1], val[1] ) - } - -primary : IDENT - { - result = LiteralNode.new( val[0][1] ) - } - | STRING_LITERAL - { - result = LiteralNode.new( val[0][1] ) - } - | AND - { - result = LiteralNode.new( val[0][1] ) - } - | OR - { - result = LiteralNode.new( val[0][1] ) - } - | SPACES - { - result = WhiteSpaceNode.new( val[0][1], @preserve_space ) - } - | COMMA - { - result = LiteralNode.new( val[0][1] ) - } - | LPAREN - { - result = LiteralNode.new( val[0][1] ) - } - | RPAREN - { - result = LiteralNode.new( val[0][1] ) - } - | QUESTION - { - @num_questions += 1 - result = QuestionNode.new( @num_questions ) - } - | ACTUAL_COMMENT - { - result = ActualCommentNode.new( val[0][1] , val[0][2] ) - } - | bind_var - | embed_var - -bind_var : BIND_VARIABLE STRING_LITERAL - { - result = BindVariableNode.new( val[0][1] ) - } - | BIND_VARIABLE SPACES STRING_LITERAL - { - result = BindVariableNode.new( val[0][1] ) - } - | BIND_VARIABLE IDENT - { - result = BindVariableNode.new( val[0][1] ) - } - | BIND_VARIABLE SPACES IDENT - { - result = BindVariableNode.new( val[0][1] ) - } - | PAREN_BIND_VARIABLE - { - result = ParenBindVariableNode.new( val[0][1] ) - } - -embed_var : EMBED_VARIABLE IDENT - { - result = EmbedVariableNode.new( val[0][1] ) - } - | EMBED_VARIABLE SPACES IDENT - { - result = EmbedVariableNode.new( val[0][1] ) - } - -end - - ----- inner - -require 'strscan' - -def initialize(opts={}) - opts = { - :debug => false, - :preserve_space => true, - :preserve_comment => false - }.merge(opts) - @yydebug = opts[:debug] - @preserve_space = opts[:preserve_space] - @preserve_comment = opts[:preserve_comment] - @num_questions = 0 -end - - -PAREN_EXAMPLE = '\([^\)]+\)' -BEGIN_BIND_VARIABLE = '(\/|\#)\*([^\*]+)\*\1' -BIND_VARIABLE_PATTERN = /\A#{BEGIN_BIND_VARIABLE}\s*/ -PAREN_BIND_VARIABLE_PATTERN = /\A#{BEGIN_BIND_VARIABLE}\s*#{PAREN_EXAMPLE}/ -EMBED_VARIABLE_PATTERN = /\A(\/|\#)\*\$([^\*]+)\*\1\s*/ - -CONDITIONAL_PATTERN = /\A(\/|\#)\*(IF)\s+([^\*]+)\s*\*\1/ -BEGIN_END_PATTERN = /\A(\/|\#)\*(BEGIN|END)\s*\*\1/ -STRING_LITERAL_PATTERN = /\A(\'(?:[^\']+|\'\')*\')/ ## quoted string -SPLIT_TOKEN_PATTERN = /\A(\S+?)(?=\s*(?:(?:\/|\#)\*|-{2,}|\(|\)|\,))/ ## stop on delimiters --,/*,#*,',',(,) -LITERAL_PATTERN = /\A([^;\s]+)/ -SPACES_PATTERN = /\A(\s+)/ -QUESTION_PATTERN = /\A\?/ -COMMA_PATTERN = /\A\,/ -LPAREN_PATTERN = /\A\(/ -RPAREN_PATTERN = /\A\)/ -ACTUAL_COMMENT_PATTERN = /\A(\/|\#)\*(\s{1,}(?:.*?))\*\1/m ## start with spaces -SEMICOLON_AT_INPUT_END_PATTERN = /\A\;\s*\Z/ -UNMATCHED_COMMENT_START_PATTERN = /\A(?:(?:\/|\#)\*)/ - -#TODO: remove trailing spaces for S2Dao compatibility, but this spec sometimes causes SQL bugs... -ELSE_PATTERN = /\A\-{2,}\s*ELSE\s*/ -AND_PATTERN = /\A(\ *AND)\b/i -OR_PATTERN = /\A(\ *OR)\b/i - - -def parse( io ) - @q = [] - io.each_line(nil) do |whole| - @s = StringScanner.new(whole) - end - scan_str - - # @q.push [ false, nil ] - @q.push [ false, [@s.pos, nil] ] - - ## call racc's private parse method - do_parse -end - - -## called by racc -def next_token - @q.shift -end - - -def scan_str - until @s.eos? do - case - when @s.scan(AND_PATTERN) - @q.push [ :AND, [@s.pos, @s[1]] ] - when @s.scan(OR_PATTERN) - @q.push [ :OR, [@s.pos, @s[1]] ] - when @s.scan(SPACES_PATTERN) - @q.push [ :SPACES, [@s.pos, @s[1]] ] - when @s.scan(QUESTION_PATTERN) - @q.push [ :QUESTION, [@s.pos, nil] ] - when @s.scan(COMMA_PATTERN) - @q.push [ :COMMA, [@s.pos, ','] ] - when @s.scan(LPAREN_PATTERN) - @q.push [ :LPAREN, [@s.pos, '('] ] - when @s.scan(RPAREN_PATTERN) - @q.push [ :RPAREN, [@s.pos, ')'] ] - when @s.scan(ELSE_PATTERN) - @q.push [ :ELSE, [@s.pos, nil] ] - when @s.scan(ACTUAL_COMMENT_PATTERN) - @q.push [ :ACTUAL_COMMENT, [@s.pos, @s[1], @s[2]] ] if @preserve_comment - when @s.scan(BEGIN_END_PATTERN) - @q.push [ @s[2].intern, [@s.pos, nil] ] - when @s.scan(CONDITIONAL_PATTERN) - @q.push [ @s[2].intern, [@s.pos, @s[3]] ] - when @s.scan(EMBED_VARIABLE_PATTERN) - @q.push [ :EMBED_VARIABLE, [@s.pos, @s[2]] ] - when @s.scan(PAREN_BIND_VARIABLE_PATTERN) - @q.push [ :PAREN_BIND_VARIABLE, [@s.pos, @s[2]] ] - when @s.scan(BIND_VARIABLE_PATTERN) - @q.push [ :BIND_VARIABLE, [@s.pos, @s[2]] ] - when @s.scan(STRING_LITERAL_PATTERN) - @q.push [ :STRING_LITERAL, [@s.pos, @s[1]] ] - when @s.scan(SPLIT_TOKEN_PATTERN) - @q.push [ :IDENT, [@s.pos, @s[1]] ] - when @s.scan(UNMATCHED_COMMENT_START_PATTERN) ## unmatched comment start, '/*','#*' - raise Racc::ParseError, "unmatched comment. line:[#{line_no(@s.pos)}], str:[#{@s.rest}]" - when @s.scan(LITERAL_PATTERN) ## other string token - @q.push [ :IDENT, [@s.pos, @s[1]] ] - when @s.scan(SEMICOLON_AT_INPUT_END_PATTERN) - #drop semicolon at input end - else - raise Racc::ParseError, "syntax error at or near line:[#{line_no(@s.pos)}], str:[#{@s.rest}]" - end - end -end - - -## override racc's default on_error method -def on_error(t, v, vstack) - ## cursor in value-stack is an array of two items, - ## that have position value as 0th item. like [731, "ctx[:limit] "] - cursor = vstack.find do |tokens| - tokens.size == 2 and tokens[0].kind_of?(Fixnum) - end - pos = cursor[0] - line = line_no(pos) - rest = @s.string[pos .. -1] - raise Racc::ParseError, "syntax error at or near line:[#{line}], str:[#{rest}]" -end - - -def line_no(pos) - lines = 0 - scanned = @s.string[0..(pos)] - scanned.each_line { lines += 1 } - lines -end diff --git a/test/racc/assets/unterm.y b/test/racc/assets/unterm.y deleted file mode 100644 index 518acc7f31..0000000000 --- a/test/racc/assets/unterm.y +++ /dev/null @@ -1,5 +0,0 @@ -# unterminated action - -class A -rule - a: A { diff --git a/test/racc/assets/useless.y b/test/racc/assets/useless.y deleted file mode 100644 index 3f172e341c..0000000000 --- a/test/racc/assets/useless.y +++ /dev/null @@ -1,12 +0,0 @@ - - -class A -token A B C X -rule - -targ : A list B - | A B C - -list: list X - -end diff --git a/test/racc/assets/yyerr.y b/test/racc/assets/yyerr.y deleted file mode 100644 index 9faae89a79..0000000000 --- a/test/racc/assets/yyerr.y +++ /dev/null @@ -1,46 +0,0 @@ -# -# yyerror/yyerrok/yyaccept test -# - -class A -rule - -target: a b c - -a: - { - yyerror - raise ArgumentError, "yyerror failed" - } - | error - -b: - { - yyerrok - } - -c: - { - yyaccept - raise ArgumentError, "yyaccept failed" - } - -end - ----- inner - - def parse - do_parse - end - - def next_token - [false, '$end'] - end - - def on_error( *args ) - $stderr.puts "on_error called: args=#{args.inspect}" - end - ----- footer - -A.new.parse diff --git a/test/racc/bench.y b/test/racc/bench.y deleted file mode 100644 index c6ba136201..0000000000 --- a/test/racc/bench.y +++ /dev/null @@ -1,36 +0,0 @@ -class BenchmarkParser - -rule - - target: a a a a a a a a a a; - a: b b b b b b b b b b; - b: c c c c c c c c c c; - c: d d d d d d d d d d; - d: e e e e e e e e e e; - -end - ----- inner - -def initialize - @old = [ :e, 'e' ] - @i = 0 -end - -def next_token - return [false, '$'] if @i >= 10_0000 - @i += 1 - @old -end - -def parse - do_parse -end - ----- footer - -require 'benchmark' - -Benchmark.bm do |x| - x.report { BenchmarkParser.new.parse } -end diff --git a/test/racc/case.rb b/test/racc/case.rb deleted file mode 100644 index f4240bfd21..0000000000 --- a/test/racc/case.rb +++ /dev/null @@ -1,110 +0,0 @@ -verbose = $VERBOSE -$VERBOSE = true -begin - -require 'test/unit' -require 'racc/static' -require 'fileutils' -require 'tempfile' -require 'timeout' - -module Racc - class TestCase < Test::Unit::TestCase - PROJECT_DIR = File.expand_path(File.join(__dir__, '..')) - - test_dir = File.join(PROJECT_DIR, 'test') - test_dir = File.join(PROJECT_DIR, 'racc') unless File.exist?(test_dir) - TEST_DIR = test_dir - racc = File.join(PROJECT_DIR, 'bin', 'racc') - racc = File.join(PROJECT_DIR, '..', 'libexec', 'racc') unless File.exist?(racc) - RACC = racc - ASSET_DIR = File.join(TEST_DIR, 'assets') # test grammars - REGRESS_DIR = File.join(TEST_DIR, 'regress') # known-good generated outputs - - INC = [ - File.join(PROJECT_DIR, 'lib'), - File.join(PROJECT_DIR, 'ext'), - ].join(':') - - def setup - @TEMP_DIR = Dir.mktmpdir("racc") - @OUT_DIR = File.join(@TEMP_DIR, 'out') - @TAB_DIR = File.join(@TEMP_DIR, 'tab') # generated parsers go here - @LOG_DIR = File.join(@TEMP_DIR, 'log') - @ERR_DIR = File.join(@TEMP_DIR, 'err') - FileUtils.mkdir_p([@OUT_DIR, @TAB_DIR, @LOG_DIR, @ERR_DIR]) - FileUtils.cp File.join(TEST_DIR, "src.intp"), @TEMP_DIR - end - - def teardown - FileUtils.rm_f(File.join(@TEMP_DIR, "src.intp")) - FileUtils.rm_rf([@OUT_DIR, @TAB_DIR, @LOG_DIR, @ERR_DIR, @TEMP_DIR]) - end - - def assert_compile(asset, args = [], **opt) - file = File.basename(asset, '.y') - args = ([args].flatten) + [ - "#{ASSET_DIR}/#{file}.y", - '-Do', - "-O#{@OUT_DIR}/#{file}", - "-o#{@TAB_DIR}/#{file}", - ] - racc(*args, **opt) - end - - def assert_debugfile(asset, ok) - file = File.basename(asset, '.y') - Dir.chdir(@LOG_DIR) do - File.foreach("#{file}.y") do |line| - line.strip! - case line - when /sr/ then assert_equal "sr#{ok[0]}", line - when /rr/ then assert_equal "rr#{ok[1]}", line - when /un/ then assert_equal "un#{ok[2]}", line - when /ur/ then assert_equal "ur#{ok[3]}", line - when /ex/ then assert_equal "ex#{ok[4]}", line - else - raise TestFailed, 'racc outputs unknown debug report???' - end - end - end - end - - def assert_exec(asset) - lib_path = File.expand_path("../../lib", __FILE__) - file = File.basename(asset, '.y') - ruby "-I#{lib_path}", "#{@TAB_DIR}/#{file}" - end - - def strip_version(source) - source.sub(/This file is automatically generated by Racc \d+\.\d+\.\d+/, '') - end - - def assert_output_unchanged(asset) - file = File.basename(asset, '.y') - - # Code to re-generate the expectation files - # File.write("#{REGRESS_DIR}/#{file}", File.read("#{@TAB_DIR}/#{file}")) - - expected = File.read("#{REGRESS_DIR}/#{file}") - actual = File.read("#{@TAB_DIR}/#{file}") - result = (strip_version(expected) == strip_version(actual)) - - assert(result, "Output of test/assets/#{file}.y differed from " \ - "expectation. Try compiling it and diff with test/regress/#{file}.") - end - - def racc(*arg, **opt) - lib_path = File.expand_path("../../lib", __FILE__) - ruby "-I#{lib_path}", "-S", RACC, *arg, **opt - end - - def ruby(*arg, **opt) - assert_ruby_status(["-C", @TEMP_DIR, *arg], **opt) - end - end -end - -ensure -$VERBOSE = verbose -end diff --git a/test/racc/infini.y b/test/racc/infini.y deleted file mode 100644 index 88b1e1e93b..0000000000 --- a/test/racc/infini.y +++ /dev/null @@ -1,8 +0,0 @@ - -class I - -rule - -list: list X - -end diff --git a/test/racc/regress/README.txt b/test/racc/regress/README.txt deleted file mode 100644 index dcab73260d..0000000000 --- a/test/racc/regress/README.txt +++ /dev/null @@ -1,7 +0,0 @@ -These files are "known-good" compiler output, generated from a stable version of -Racc. Whenever Racc is refactored, or changes are made which should not affect the -compiler output, running "rake test" checks that the compiler output is exactly -the same as these files. - -If a change is made which *should* change the compiler output, these files will -have to be regenerated from the source in test/assets, and the results committed. diff --git a/test/racc/regress/cadenza b/test/racc/regress/cadenza deleted file mode 100644 index dafce3c9f3..0000000000 --- a/test/racc/regress/cadenza +++ /dev/null @@ -1,796 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' - -# racc_parser.rb : generated by racc - -module Cadenza - class RaccParser < Racc::Parser - -module_eval(<<'...end cadenza.y/module_eval...', 'cadenza.y', 171) - -...end cadenza.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - 37, 89, 65, 66, 20, 21, 22, 23, 24, 17, - 106, 37, 3, 76, 4, 3, 75, 4, 50, 37, - 29, 68, 65, 66, 33, 67, 34, 110, 9, 74, - 35, 9, 37, 36, 71, 33, 38, 34, 77, 78, - 79, 35, 72, 33, 36, 34, 37, 38, 3, 35, - 39, 83, 36, 54, 55, 38, 33, 89, 34, 37, - 90, 3, 35, 43, 9, 36, 85, 103, 38, 108, - 33, 109, 34, 56, 57, 111, 35, 9, 3, 36, - 46, 122, 38, 33, 112, 34, 113, 78, 79, 35, - 114, 3, 36, 4, 9, 38, 20, 21, 22, 23, - 24, 20, 21, 22, 23, 24, 115, 9, 65, 66, - 65, 66, 29, 54, 55, 120, 107, 29, 20, 21, - 22, 23, 24, 20, 21, 22, 23, 24, 20, 21, - 22, 23, 24, 3, 29, 39, 3, 121, 4, 29, - 3, 3, 43, 46, 29, 3, 124, 87, 125, 9, - 54, 55, 9, 56, 57, 128, 9, 9, 3, 103, - 116, 9, 20, 21, 22, 23, 24, 20, 21, 22, - 23, 24, 131, 3, 9, 116, 56, 57, 29, 3, - 89, 116, nil, 29, 20, 21, 22, 23, 24, 9, - 20, 21, 22, 23, 24, 9, 56, 57, 56, 57, - 29, 20, 21, 22, 23, 24, 29, 58, 59, 60, - 61, 62, 63, 56, 57, 56, 57, 29, 58, 59, - 60, 61, 62, 63, 20, 21, 22, 23, 24, 20, - 21, 22, 23, 24, 20, 21, 22, 23, 24, 20, - 21, 22, 23, 24, 20, 21, 22, 23, 24, 20, - 21, 22, 23, 24, 20, 21, 22, 23, 24, 20, - 21, 22, 23, 24, 20, 21, 22, 23, 24, 20, - 21, 22, 23, 24, 20, 21, 22, 23, 24, 65, - 66 ] - -racc_action_check = [ - 4, 73, 69, 69, 37, 37, 37, 37, 37, 1, - 69, 39, 0, 38, 0, 2, 38, 2, 17, 43, - 37, 32, 31, 31, 4, 31, 4, 73, 0, 37, - 4, 2, 46, 4, 35, 39, 4, 39, 39, 39, - 39, 39, 36, 43, 39, 43, 87, 39, 5, 43, - 5, 43, 43, 26, 26, 43, 46, 52, 46, 116, - 53, 6, 46, 6, 5, 46, 46, 67, 46, 71, - 87, 72, 87, 27, 27, 75, 87, 6, 7, 87, - 7, 87, 87, 116, 76, 116, 77, 116, 116, 116, - 78, 8, 116, 8, 7, 116, 3, 3, 3, 3, - 3, 20, 20, 20, 20, 20, 79, 8, 70, 70, - 51, 51, 3, 93, 93, 83, 70, 20, 24, 24, - 24, 24, 24, 33, 33, 33, 33, 33, 34, 34, - 34, 34, 34, 41, 24, 41, 42, 85, 42, 33, - 45, 48, 45, 48, 34, 49, 103, 49, 105, 41, - 94, 94, 42, 95, 95, 122, 45, 48, 81, 125, - 81, 49, 65, 65, 65, 65, 65, 66, 66, 66, - 66, 66, 126, 82, 81, 82, 96, 96, 65, 118, - 129, 118, nil, 66, 89, 89, 89, 89, 89, 82, - 108, 108, 108, 108, 108, 118, 97, 97, 98, 98, - 89, 124, 124, 124, 124, 124, 108, 28, 28, 28, - 28, 28, 28, 99, 99, 100, 100, 124, 64, 64, - 64, 64, 64, 64, 29, 29, 29, 29, 29, 54, - 54, 54, 54, 54, 55, 55, 55, 55, 55, 56, - 56, 56, 56, 56, 57, 57, 57, 57, 57, 58, - 58, 58, 58, 58, 59, 59, 59, 59, 59, 60, - 60, 60, 60, 60, 61, 61, 61, 61, 61, 62, - 62, 62, 62, 62, 63, 63, 63, 63, 63, 123, - 123 ] - -racc_action_pointer = [ - -12, 9, -9, 93, -3, 24, 37, 54, 67, nil, - nil, nil, nil, nil, nil, nil, nil, 18, nil, nil, - 98, nil, nil, nil, 115, nil, 44, 62, 194, 221, - nil, 2, -4, 120, 125, 31, 39, 1, 10, 8, - nil, 109, 112, 16, nil, 116, 29, nil, 117, 121, - nil, 90, 55, 52, 226, 231, 236, 241, 246, 251, - 256, 261, 266, 271, 205, 159, 164, 64, nil, -18, - 88, 35, 43, -1, nil, 47, 56, 58, 62, 78, - nil, 134, 149, 87, nil, 109, nil, 43, nil, 181, - nil, nil, nil, 104, 141, 142, 165, 185, 187, 202, - 204, nil, nil, 124, nil, 125, nil, nil, 187, nil, - nil, nil, nil, nil, nil, nil, 56, nil, 155, nil, - nil, nil, 127, 259, 198, 156, 144, nil, nil, 178, - nil, nil ] - -racc_action_default = [ - -2, -70, -1, -70, -70, -70, -70, -70, -70, -60, - -61, -62, -63, -64, -65, -66, -68, -70, -67, -69, - -5, -7, -8, -9, -70, -11, -14, -17, -24, -70, - -26, -33, -70, -70, -70, -70, -70, -70, -70, -70, - -41, -70, -70, -70, -48, -70, -70, -52, -70, -70, - 132, -3, -6, -70, -70, -70, -70, -70, -70, -70, - -70, -70, -70, -70, -25, -70, -70, -70, -35, -70, - -70, -70, -70, -70, -54, -70, -70, -70, -70, -70, - -42, -70, -70, -70, -49, -70, -53, -70, -57, -70, - -10, -12, -13, -15, -16, -18, -19, -20, -21, -22, - -23, -27, -28, -29, -31, -34, -36, -37, -70, -50, - -55, -58, -59, -38, -39, -40, -70, -44, -70, -43, - -47, -51, -70, -4, -70, -70, -70, -45, -56, -30, - -32, -46 ] - -racc_goto_table = [ - 19, 40, 18, 32, 104, 52, 51, 1, 2, 64, - 47, 91, 92, 41, 45, 48, 49, 44, 42, 69, - 70, 105, 73, 51, 53, 95, 96, 97, 98, 99, - 100, 93, 94, 101, 102, 88, nil, 80, nil, 19, - nil, 18, nil, 19, nil, 18, 19, 19, 18, 18, - 82, 86, nil, nil, 81, nil, 84, nil, nil, nil, - nil, nil, 130, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 123, nil, 117, 119, nil, - 19, nil, 18, nil, nil, nil, nil, nil, nil, 118, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 126, 129, - 51, nil, nil, nil, 127, nil, 19, nil, 18 ] - -racc_goto_check = [ - 27, 16, 28, 6, 11, 3, 4, 1, 2, 9, - 22, 5, 5, 2, 2, 2, 2, 19, 15, 4, - 4, 12, 3, 4, 6, 8, 8, 8, 8, 8, - 8, 7, 7, 10, 10, 25, nil, 16, nil, 27, - nil, 28, nil, 27, nil, 28, 27, 27, 28, 28, - 2, 22, nil, nil, 15, nil, 19, nil, nil, nil, - nil, nil, 11, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 4, nil, 16, 16, nil, - 27, nil, 28, nil, nil, nil, nil, nil, nil, 2, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 6, 3, - 4, nil, nil, nil, 16, nil, 27, nil, 28 ] - -racc_goto_pointer = [ - nil, 7, 8, -15, -14, -43, 0, -25, -33, -20, - -32, -63, -46, nil, nil, 13, -4, nil, nil, 11, - nil, nil, 3, nil, nil, -14, nil, -2, 0 ] - -racc_goto_default = [ - nil, nil, nil, nil, 31, 25, nil, 26, 27, 28, - 30, nil, nil, 10, 5, nil, nil, 11, 6, nil, - 12, 7, nil, 14, 8, nil, 13, 16, 15 ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 1, 42, :_reduce_none, - 0, 42, :_reduce_2, - 1, 44, :_reduce_3, - 3, 44, :_reduce_4, - 1, 46, :_reduce_5, - 2, 46, :_reduce_6, - 1, 46, :_reduce_7, - 1, 46, :_reduce_8, - 1, 46, :_reduce_9, - 3, 46, :_reduce_10, - 1, 48, :_reduce_none, - 3, 48, :_reduce_12, - 3, 48, :_reduce_13, - 1, 49, :_reduce_none, - 3, 49, :_reduce_15, - 3, 49, :_reduce_16, - 1, 50, :_reduce_none, - 3, 50, :_reduce_18, - 3, 50, :_reduce_19, - 3, 50, :_reduce_20, - 3, 50, :_reduce_21, - 3, 50, :_reduce_22, - 3, 50, :_reduce_23, - 1, 51, :_reduce_none, - 2, 51, :_reduce_25, - 1, 45, :_reduce_none, - 3, 45, :_reduce_27, - 3, 45, :_reduce_28, - 1, 52, :_reduce_29, - 3, 52, :_reduce_30, - 1, 53, :_reduce_31, - 3, 53, :_reduce_32, - 1, 47, :_reduce_none, - 3, 47, :_reduce_34, - 3, 54, :_reduce_35, - 4, 55, :_reduce_36, - 4, 55, :_reduce_37, - 3, 56, :_reduce_38, - 3, 57, :_reduce_39, - 3, 57, :_reduce_40, - 2, 58, :_reduce_41, - 3, 58, :_reduce_42, - 4, 58, :_reduce_43, - 4, 58, :_reduce_44, - 5, 58, :_reduce_45, - 6, 59, :_reduce_46, - 3, 60, :_reduce_47, - 2, 61, :_reduce_48, - 3, 61, :_reduce_49, - 4, 62, :_reduce_50, - 3, 63, :_reduce_51, - 2, 64, :_reduce_52, - 3, 64, :_reduce_53, - 3, 65, :_reduce_54, - 4, 65, :_reduce_55, - 3, 66, :_reduce_56, - 3, 67, :_reduce_57, - 4, 68, :_reduce_58, - 4, 68, :_reduce_59, - 1, 69, :_reduce_60, - 1, 69, :_reduce_none, - 1, 69, :_reduce_none, - 1, 69, :_reduce_none, - 1, 69, :_reduce_none, - 1, 69, :_reduce_none, - 1, 43, :_reduce_66, - 2, 43, :_reduce_67, - 1, 43, :_reduce_68, - 2, 43, :_reduce_69 ] - -racc_reduce_n = 70 - -racc_shift_n = 132 - -racc_token_table = { - false => 0, - :error => 1, - "," => 2, - :IDENTIFIER => 3, - :INTEGER => 4, - :REAL => 5, - :STRING => 6, - "(" => 7, - ")" => 8, - "*" => 9, - "/" => 10, - "+" => 11, - "-" => 12, - :OP_EQ => 13, - :OP_NEQ => 14, - :OP_LEQ => 15, - :OP_GEQ => 16, - ">" => 17, - "<" => 18, - :NOT => 19, - :AND => 20, - :OR => 21, - ":" => 22, - "|" => 23, - :VAR_OPEN => 24, - :VAR_CLOSE => 25, - :STMT_OPEN => 26, - :IF => 27, - :STMT_CLOSE => 28, - :UNLESS => 29, - :ELSE => 30, - :ENDIF => 31, - :ENDUNLESS => 32, - :FOR => 33, - :IN => 34, - :ENDFOR => 35, - :BLOCK => 36, - :ENDBLOCK => 37, - :END => 38, - :EXTENDS => 39, - :TEXT_BLOCK => 40 } - -racc_nt_base = 41 - -racc_use_result_var = true - -Racc_arg = [ - racc_action_table, - racc_action_check, - racc_action_default, - racc_action_pointer, - racc_goto_table, - racc_goto_check, - racc_goto_default, - racc_goto_pointer, - racc_nt_base, - racc_reduce_table, - racc_token_table, - racc_shift_n, - racc_reduce_n, - racc_use_result_var ] - -Racc_token_to_s_table = [ - "$end", - "error", - "\",\"", - "IDENTIFIER", - "INTEGER", - "REAL", - "STRING", - "\"(\"", - "\")\"", - "\"*\"", - "\"/\"", - "\"+\"", - "\"-\"", - "OP_EQ", - "OP_NEQ", - "OP_LEQ", - "OP_GEQ", - "\">\"", - "\"<\"", - "NOT", - "AND", - "OR", - "\":\"", - "\"|\"", - "VAR_OPEN", - "VAR_CLOSE", - "STMT_OPEN", - "IF", - "STMT_CLOSE", - "UNLESS", - "ELSE", - "ENDIF", - "ENDUNLESS", - "FOR", - "IN", - "ENDFOR", - "BLOCK", - "ENDBLOCK", - "END", - "EXTENDS", - "TEXT_BLOCK", - "$start", - "target", - "document", - "parameter_list", - "logical_expression", - "primary_expression", - "filtered_expression", - "multiplicative_expression", - "additive_expression", - "boolean_expression", - "inverse_expression", - "filter", - "filter_list", - "inject_statement", - "if_tag", - "else_tag", - "end_if_tag", - "if_block", - "for_tag", - "end_for_tag", - "for_block", - "block_tag", - "end_block_tag", - "block_block", - "generic_block_tag", - "end_generic_block_tag", - "generic_block", - "extends_statement", - "document_component" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -# reduce 1 omitted - -module_eval(<<'.,.,', 'cadenza.y', 12) - def _reduce_2(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 16) - def _reduce_3(val, _values, result) - result = [val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 17) - def _reduce_4(val, _values, result) - result = val[0].push(val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 22) - def _reduce_5(val, _values, result) - result = VariableNode.new(val[0].value) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 23) - def _reduce_6(val, _values, result) - result = VariableNode.new(val[0].value, val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 24) - def _reduce_7(val, _values, result) - result = ConstantNode.new(val[0].value) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 25) - def _reduce_8(val, _values, result) - result = ConstantNode.new(val[0].value) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 26) - def _reduce_9(val, _values, result) - result = ConstantNode.new(val[0].value) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 27) - def _reduce_10(val, _values, result) - result = val[1] - result - end -.,., - -# reduce 11 omitted - -module_eval(<<'.,.,', 'cadenza.y', 32) - def _reduce_12(val, _values, result) - result = OperationNode.new(val[0], "*", val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 33) - def _reduce_13(val, _values, result) - result = OperationNode.new(val[0], "/", val[2]) - result - end -.,., - -# reduce 14 omitted - -module_eval(<<'.,.,', 'cadenza.y', 38) - def _reduce_15(val, _values, result) - result = OperationNode.new(val[0], "+", val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 39) - def _reduce_16(val, _values, result) - result = OperationNode.new(val[0], "-", val[2]) - result - end -.,., - -# reduce 17 omitted - -module_eval(<<'.,.,', 'cadenza.y', 44) - def _reduce_18(val, _values, result) - result = OperationNode.new(val[0], "==", val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 45) - def _reduce_19(val, _values, result) - result = OperationNode.new(val[0], "!=", val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 46) - def _reduce_20(val, _values, result) - result = OperationNode.new(val[0], "<=", val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 47) - def _reduce_21(val, _values, result) - result = OperationNode.new(val[0], ">=", val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 48) - def _reduce_22(val, _values, result) - result = OperationNode.new(val[0], ">", val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 49) - def _reduce_23(val, _values, result) - result = OperationNode.new(val[0], "<", val[2]) - result - end -.,., - -# reduce 24 omitted - -module_eval(<<'.,.,', 'cadenza.y', 54) - def _reduce_25(val, _values, result) - result = BooleanInverseNode.new(val[1]) - result - end -.,., - -# reduce 26 omitted - -module_eval(<<'.,.,', 'cadenza.y', 59) - def _reduce_27(val, _values, result) - result = OperationNode.new(val[0], "and", val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 60) - def _reduce_28(val, _values, result) - result = OperationNode.new(val[0], "or", val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 64) - def _reduce_29(val, _values, result) - result = FilterNode.new(val[0].value) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 65) - def _reduce_30(val, _values, result) - result = FilterNode.new(val[0].value, val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 69) - def _reduce_31(val, _values, result) - result = [val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 70) - def _reduce_32(val, _values, result) - result = val[0].push(val[2]) - result - end -.,., - -# reduce 33 omitted - -module_eval(<<'.,.,', 'cadenza.y', 75) - def _reduce_34(val, _values, result) - result = FilteredValueNode.new(val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 79) - def _reduce_35(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 83) - def _reduce_36(val, _values, result) - open_scope!; result = val[2] - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 84) - def _reduce_37(val, _values, result) - open_scope!; result = BooleanInverseNode.new(val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 88) - def _reduce_38(val, _values, result) - result = close_scope!; open_scope! - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 92) - def _reduce_39(val, _values, result) - result = close_scope! - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 93) - def _reduce_40(val, _values, result) - result = close_scope! - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 97) - def _reduce_41(val, _values, result) - result = IfNode.new(val[0], val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 98) - def _reduce_42(val, _values, result) - result = IfNode.new(val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 99) - def _reduce_43(val, _values, result) - result = IfNode.new(val[0], val[1], val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 100) - def _reduce_44(val, _values, result) - result = IfNode.new(val[0], val[2], val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 101) - def _reduce_45(val, _values, result) - result = IfNode.new(val[0], val[2], val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 105) - def _reduce_46(val, _values, result) - open_scope!; result = [val[2].value, val[4]] - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 109) - def _reduce_47(val, _values, result) - result = close_scope! - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 114) - def _reduce_48(val, _values, result) - result = ForNode.new(VariableNode.new(val[0].first), val[0].last, val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 115) - def _reduce_49(val, _values, result) - result = ForNode.new(VariableNode.new(val[0].first), val[0].last, val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 119) - def _reduce_50(val, _values, result) - result = open_block_scope!(val[2].value) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 123) - def _reduce_51(val, _values, result) - result = close_block_scope! - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 128) - def _reduce_52(val, _values, result) - result = BlockNode.new(val[0], val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 129) - def _reduce_53(val, _values, result) - result = BlockNode.new(val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 133) - def _reduce_54(val, _values, result) - open_scope!; result = [val[1].value, []] - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 134) - def _reduce_55(val, _values, result) - open_scope!; result = [val[1].value, val[2]] - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 138) - def _reduce_56(val, _values, result) - result = close_scope! - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 142) - def _reduce_57(val, _values, result) - result = GenericBlockNode.new(val[0].first, val[2], val[0].last) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 146) - def _reduce_58(val, _values, result) - result = val[2].value - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 147) - def _reduce_59(val, _values, result) - result = VariableNode.new(val[2].value) - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 151) - def _reduce_60(val, _values, result) - result = TextNode.new(val[0].value) - result - end -.,., - -# reduce 61 omitted - -# reduce 62 omitted - -# reduce 63 omitted - -# reduce 64 omitted - -# reduce 65 omitted - -module_eval(<<'.,.,', 'cadenza.y', 160) - def _reduce_66(val, _values, result) - push val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 161) - def _reduce_67(val, _values, result) - push val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 162) - def _reduce_68(val, _values, result) - document.extends = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cadenza.y', 163) - def _reduce_69(val, _values, result) - document.extends = val[1] - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class RaccParser -end # module Cadenza diff --git a/test/racc/regress/cast b/test/racc/regress/cast deleted file mode 100644 index 60e92a0abd..0000000000 --- a/test/racc/regress/cast +++ /dev/null @@ -1,3945 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.2 -# from Racc grammar file "". -# - -require 'racc/parser.rb' - - -require 'set' - -# Error classes -module C - class ParseError < StandardError; end -end - -# Local variables: -# mode: ruby -# end: -module C - class Parser < Racc::Parser - -module_eval(<<'...end cast.y/module_eval...', 'cast.y', 564) - # A.1.9 -- Preprocessing numbers -- skip - # A.1.8 -- Header names -- skip - - # A.1.7 -- Puncuators -- we don't bother with {##,#,%:,%:%:} since - # we don't do preprocessing - @@punctuators = %r'\+\+|-[->]|&&|\|\||\.\.\.|(?:<<|>>|[<>=!*/%+\-&^|])=?|[\[\](){}.~?:;,]' - @@digraphs = %r'<[:%]|[:%]>' - - # A.1.6 -- String Literals -- simple for us because we don't decode - # the string (and indeed accept some illegal strings) - @@string_literal = %r'L?"(?:[^\\]|\\.)*?"'m - - # A.1.5 -- Constants - @@decimal_floating_constant = %r'(?:(?:\d*\.\d+|\d+\.)(?:e[-+]?\d+)?|\d+e[-+]?\d+)[fl]?'i - @@hexadecimal_floating_constant = %r'0x(?:(?:[0-9a-f]*\.[0-9a-f]+|[0-9a-f]+\.)|[0-9a-f]+)p[-+]?\d+[fl]?'i - - @@integer_constant = %r'(?:[1-9][0-9]*|0x[0-9a-f]+|0[0-7]*)(?:ul?l?|ll?u?)?'i - @@floating_constant = %r'#{@@decimal_floating_constant}|#{@@hexadecimal_floating_constant}' - @@enumeration_constant = %r'[a-zA-Z_\\][a-zA-Z_\\0-9]*' - @@character_constant = %r"L?'(?:[^\\]|\\.)+?'" - # (note that as with string-literals, we accept some illegal - # character-constants) - - # A.1.4 -- Universal character names -- skip - - # A.1.3 -- Identifiers -- skip, since an identifier is lexically - # identical to an enumeration constant - - # A.1.2 Keywords - keywords = %w'auto break case char const continue default do -double else enum extern float for goto if inline int long register -restrict return short signed sizeof static struct switch typedef union - unsigned void volatile while _Bool _Complex _Imaginary' - @@keywords = %r"#{keywords.join('|')}" - - def initialize - @type_names = ::Set.new - - @warning_proc = lambda{} - @pos = C::Node::Pos.new(nil, 1, 0) - end - def initialize_copy(x) - @pos = x.pos.dup - @type_names = x.type_names.dup - end - attr_accessor :pos, :type_names - - def parse(str) - if str.respond_to? :read - str = str.read - end - @str = str - begin - prepare_lexer(str) - return do_parse - rescue ParseError => e - e.set_backtrace(caller) - raise - end - end - - # - # Error handler, as used by racc. - # - def on_error(error_token_id, error_value, value_stack) - if error_value == '$' - parse_error @pos, "unexpected EOF" - else - parse_error(error_value.pos, - "parse error on #{token_to_str(error_token_id)} (#{error_value.val})") - end - end - - def self.feature(name) - attr_writer "#{name}_enabled" - class_eval <<-EOS - def enable_#{name} - @#{name}_enabled = true - end - def #{name}_enabled? - @#{name}_enabled - end - EOS - end - private_class_method :feature - - # - # Allow blocks in parentheses as expressions, as per the gcc - # extension. [http://rubyurl.com/iB7] - # - feature :block_expressions - - private # --------------------------------------------------------- - - class Token - attr_accessor :pos, :val - def initialize(pos, val) - @pos = pos - @val = val - end - end - def eat(str) - lines = str.split(/\r\n|[\r\n]/, -1) - if lines.length == 1 - @pos.col_num += lines[0].length - else - @pos.line_num += lines.length - 1 - @pos.col_num = lines[-1].length - end - end - - # - # Make a Declaration from the given specs and declarators. - # - def make_declaration(pos, specs, declarators) - specs.all?{|x| x.is_a?(Symbol) || x.is_a?(Type)} or raise specs.map{|x| x.class}.inspect - decl = Declaration.new_at(pos, nil, declarators) - - # set storage class - storage_classes = specs.find_all do |x| - [:typedef, :extern, :static, :auto, :register].include? x - end - # 6.7.1p2: at most, one storage-class specifier may be given in - # the declaration specifiers in a declaration - storage_classes.length <= 1 or - begin - if declarators.length == 0 - for_name = '' - else - for_name = "for `#{declarators[0].name}'" - end - parse_error pos, "multiple or duplicate storage classes given #{for_name}'" - end - decl.storage = storage_classes[0] - - # set type (specifiers, qualifiers) - decl.type = make_direct_type(pos, specs) - - # set function specifiers - decl.inline = specs.include?(:inline) - - # look for new type names - if decl.typedef? - decl.declarators.each do |d| - if d.name - @type_names << d.name - end - end - end - - return decl - end - - def make_function_def(pos, specs, func_declarator, decl_list, defn) - add_decl_type(func_declarator, make_direct_type(pos, specs)) - - # get types from decl_list if necessary - function = func_declarator.indirect_type - function.is_a? Function or - parse_error pos, "non function type for function `#{func_declarator.name}'" - params = function.params - if decl_list - params.all?{|p| p.type.nil?} or - parse_error pos, "both prototype and declaration list given for `#{func_declarator.name}'" - decl_list.each do |declaration| - declaration.declarators.each do |declarator| - param = params.find{|p| p.name == declarator.name} or - parse_error pos, "no parameter named #{declarator.name}" - if declarator.indirect_type - param.type = declarator.indirect_type - param.type.direct_type = declaration.type.dup - else - param.type = declaration.type.dup - end - end - end - params.all?{|p| p.type} or - begin - s = params.find_all{|p| p.type.nil?}.map{|p| "`#{p.name}'"}.join(' and ') - parse_error pos, "types missing for parameters #{s}" - end - end - - fd = FunctionDef.new_at(pos, - function.detach, - func_declarator.name, - defn, - :no_prototype => !decl_list.nil?) - - # set storage class - # 6.9.1p4: only extern or static allowed - specs.each do |s| - [:typedef, :auto, :register].include?(s) and - "`#{s}' illegal for function" - end - storage_classes = specs.find_all do |s| - s == :extern || s == :static - end - # 6.7.1p2: at most, one storage-class specifier may be given in - # the declaration specifiers in a declaration - storage_classes.length <= 1 or - "multiple or duplicate storage classes given for `#{func_declarator.name}'" - fd.storage = storage_classes[0] if storage_classes[0] - - # set function specifiers - # 6.7.4p5 'inline' can be repeated - fd.inline = specs.include?(:inline) - - return fd - end - - # - # Make a direct type from the list of type specifiers and type - # qualifiers. - # - def make_direct_type(pos, specs) - specs_order = [:signed, :unsigned, :short, :long, :double, :void, - :char, :int, :float, :_Bool, :_Complex, :_Imaginary] - - type_specs = specs.find_all do |x| - specs_order.include?(x) || !x.is_a?(Symbol) - end - type_specs.sort! do |a, b| - (specs_order.index(a)||100) <=> (specs_order.index(b)||100) - end - - # set type specifiers - # 6.7.2p2: the specifier list should be one of these - type = - case type_specs - when [:void] - Void.new - when [:char] - Char.new - when [:signed, :char] - Char.new :signed => true - when [:unsigned, :char] - Char.new :signed => false - when [:short], [:signed, :short], [:short, :int], - [:signed, :short, :int] - Int.new :longness => -1 - when [:unsigned, :short], [:unsigned, :short, :int] - Int.new :unsigned => true, :longness => -1 - when [:int], [:signed], [:signed, :int] - Int.new - when [:unsigned], [:unsigned, :int] - Int.new :unsigned => true - when [:long], [:signed, :long], [:long, :int], - [:signed, :long, :int] - Int.new :longness => 1 - when [:unsigned, :long], [:unsigned, :long, :int] - Int.new :longness => 1, :unsigned => true - when [:long, :long], [:signed, :long, :long], - [:long, :long, :int], [:signed, :long, :long, :int] - Int.new :longness => 2 - when [:unsigned, :long, :long], [:unsigned, :long, :long, :int] - Int.new :longness => 2, :unsigned => true - when [:float] - Float.new - when [:double] - Float.new :longness => 1 - when [:long, :double] - Float.new :longness => 2 - when [:_Bool] - Bool.new - when [:float, :_Complex] - Complex.new - when [:double, :_Complex] - Complex.new :longness => 1 - when [:long, :double, :_Complex] - Complex.new :longness => 2 - when [:float, :_Imaginary] - Imaginary.new - when [:double, :_Imaginary] - Imaginary.new :longness => 1 - when [:long, :double, :_Imaginary] - Imaginary.new :longness => 2 - else - if type_specs.length == 1 && - [CustomType, Struct, Union, Enum].any?{|c| type_specs[0].is_a? c} - type_specs[0] - else - if type_specs == [] - parse_error pos, "no type specifiers given" - else - parse_error pos, "invalid type specifier combination: #{type_specs.join(' ')}" - end - end - end - type.pos ||= pos - - # set type qualifiers - # 6.7.3p4: type qualifiers can be repeated - type.const = specs.any?{|x| x.equal? :const } - type.restrict = specs.any?{|x| x.equal? :restrict} - type.volatile = specs.any?{|x| x.equal? :volatile} - - return type - end - - def make_parameter(pos, specs, indirect_type, name) - type = indirect_type - if type - type.direct_type = make_direct_type(pos, specs) - else - type = make_direct_type(pos, specs) - end - [:typedef, :extern, :static, :auto, :inline].each do |sym| - specs.include? sym and - parse_error pos, "parameter `#{declarator.name}' declared `#{sym}'" - end - return Parameter.new_at(pos, type, name, - :register => specs.include?(:register)) - end - - def add_type_quals(type, quals) - type.const = quals.include?(:const ) - type.restrict = quals.include?(:restrict) - type.volatile = quals.include?(:volatile) - return type - end - - # - # Add te given type as the "most direct" type to the given - # declarator. Return the declarator. - # - def add_decl_type(declarator, type) - if declarator.indirect_type - declarator.indirect_type.direct_type = type - else - declarator.indirect_type = type - end - return declarator - end - - def param_list(params, var_args) - if params.length == 1 && - params[0].type.is_a?(Void) && - params[0].name.nil? - return NodeArray[] - elsif params.empty? - return nil - else - return params - end - end - - def parse_error(pos, str) - raise ParseError, "#{pos}: #{str}" - end - -...end cast.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - 99, 100, 65, 103, 108, 109, 120, 312, 61, 110, - 111, 112, 113, 114, 115, 116, 117, 77, 48, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 31, 32, 33, 34, - 35, 36, 37, 72, 281, 128, 49, 38, 196, 391, - 123, 124, 126, 127, 129, 130, 131, 132, 183, 277, - 83, 273, 84, 238, 288, 293, 88, 196, 72, 290, - 38, 274, 184, 372, 373, 386, 239, 240, 289, 294, - 71, 241, 242, 50, 147, 148, 149, 150, 99, 100, - 65, 193, 108, 109, 120, 50, 281, 110, 111, 112, - 113, 114, 115, 116, 117, 71, 50, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 31, 32, 33, 34, 35, 36, - 37, 56, 366, 128, 89, 38, 50, 169, 123, 124, - 126, 127, 129, 130, 131, 132, 99, 100, 65, 88, - 108, 109, 120, 88, 88, 110, 111, 112, 113, 114, - 115, 116, 117, 346, 349, 238, 59, 68, 48, 365, - 195, 50, 147, 148, 149, 150, 38, 347, 239, 240, - 69, 178, 283, 196, 312, 366, 243, 244, 48, 262, - 88, 128, 185, 38, 263, 284, 123, 124, 126, 127, - 129, 130, 131, 132, 99, 100, 65, 49, 108, 109, - 120, 38, 50, 110, 111, 112, 113, 114, 115, 116, - 117, 281, 365, 309, 440, 249, 250, 49, 238, 50, - 147, 148, 149, 150, 313, 379, 196, 227, 439, 178, - 413, 239, 240, 88, 196, 50, 48, 50, 196, 128, - 187, 38, 191, 196, 123, 124, 126, 127, 129, 130, - 131, 132, 99, 100, 65, 50, 108, 109, 120, 416, - 428, 110, 111, 112, 113, 114, 115, 116, 117, 255, - 256, 192, 196, 196, 197, 49, 198, 50, 147, 148, - 149, 150, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 43, 199, 48, 241, 242, 128, 202, 38, - 241, 242, 123, 124, 126, 127, 129, 130, 131, 132, - 99, 100, 65, 50, 108, 109, 120, 375, 376, 110, - 111, 112, 113, 114, 115, 116, 117, 196, 196, 205, - 377, 387, 427, 49, 433, 50, 147, 148, 149, 150, - 196, 388, 196, 437, 196, 206, 445, 209, 447, 450, - 43, 251, 48, 196, 252, 128, 196, 38, 196, 196, - 123, 124, 126, 127, 129, 130, 131, 132, 99, 100, - 65, 50, 108, 109, 120, 454, 253, 110, 111, 112, - 113, 114, 115, 116, 117, 196, 34, 35, 36, 243, - 244, 49, 49, 50, 147, 148, 149, 150, 34, 35, - 36, 243, 244, 254, 49, 245, 246, 247, 248, 67, - 48, 243, 244, 128, 268, 38, 243, 244, 123, 124, - 126, 127, 129, 130, 131, 132, 99, 100, 65, 50, - 108, 109, 120, 249, 250, 110, 111, 112, 113, 114, - 115, 116, 117, 245, 246, 247, 248, 271, 272, 49, - 275, 50, 147, 148, 149, 150, 245, 246, 247, 248, - 285, 296, 192, 303, 307, 308, 314, 315, 277, 50, - 50, 128, 50, 38, 353, 355, 123, 124, 126, 127, - 129, 130, 131, 132, 99, 100, 65, 50, 108, 109, - 120, 357, 50, 110, 111, 112, 113, 114, 115, 116, - 117, 378, 389, 390, 251, 281, 252, 49, 253, 50, - 147, 148, 149, 150, 254, 395, 396, 397, 398, 399, - 405, 406, 384, 384, 423, 424, 425, 426, 442, 128, - nil, 38, nil, nil, 123, 124, 126, 127, 129, 130, - 131, 132, 99, 100, 65, 50, 108, 109, 120, nil, - nil, 110, 111, 112, 113, 114, 115, 116, 117, nil, - nil, nil, nil, nil, nil, nil, nil, 50, 147, 148, - 149, 150, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 128, nil, 38, - nil, nil, 123, 124, 126, 127, 129, 130, 131, 132, - 99, 100, 65, nil, 108, 109, 120, nil, nil, 110, - 111, 112, 113, 114, 115, 116, 117, nil, nil, nil, - nil, nil, nil, nil, nil, 50, 147, 148, 149, 150, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 128, nil, 38, nil, nil, - 123, 124, 126, 127, 129, 130, 131, 132, 99, 100, - 65, nil, 108, 109, 120, nil, nil, 110, 111, 112, - 113, 114, 115, 116, 117, nil, nil, nil, nil, nil, - nil, nil, nil, 50, 147, 148, 149, 150, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 128, nil, 38, nil, nil, 123, 124, - 126, 127, 129, 130, 131, 132, 99, 100, 65, nil, - 108, 109, 120, nil, nil, 110, 111, 112, 113, 114, - 115, 116, 117, nil, nil, nil, nil, nil, nil, nil, - nil, 50, 147, 148, 149, 150, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 128, nil, 38, nil, nil, 123, 124, 126, 127, - 129, 130, 131, 132, 99, 100, 65, nil, 108, 109, - 120, nil, nil, 110, 111, 112, 113, 114, 115, 116, - 117, nil, nil, nil, nil, nil, nil, nil, nil, 50, - 147, 148, 149, 150, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 128, - nil, 38, nil, nil, 123, 124, 126, 127, 129, 130, - 131, 132, 99, 100, 65, nil, 108, 109, 120, nil, - nil, 110, 111, 112, 113, 114, 115, 116, 117, nil, - nil, nil, nil, nil, nil, nil, nil, 50, 147, 148, - 149, 150, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 128, nil, 38, - nil, nil, 123, 124, 126, 127, 129, 130, 131, 132, - 99, 100, 65, nil, 108, 109, 120, nil, nil, 110, - 111, 112, 113, 114, 115, 116, 117, nil, nil, nil, - nil, nil, nil, nil, nil, 50, 147, 148, 149, 150, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 128, nil, 38, nil, nil, - 123, 124, 126, 127, 129, 130, 131, 132, 99, 100, - 65, nil, 108, 109, 120, nil, nil, 110, 111, 112, - 113, 114, 115, 116, 117, nil, nil, nil, nil, nil, - nil, nil, nil, 50, 147, 148, 149, 150, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 128, nil, 38, nil, nil, 123, 124, - 126, 127, 129, 130, 131, 132, 99, 100, 65, nil, - 108, 109, 120, nil, nil, 110, 111, 112, 113, 114, - 115, 116, 117, nil, nil, nil, nil, nil, nil, nil, - nil, 50, 147, 148, 149, 150, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 128, nil, 38, nil, nil, 123, 124, 126, 127, - 129, 130, 131, 132, 99, 100, 65, nil, 108, 109, - 120, nil, nil, 110, 111, 112, 113, 114, 115, 116, - 117, nil, nil, nil, nil, nil, nil, nil, nil, 50, - 147, 148, 149, 150, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 128, - nil, 38, nil, nil, 123, 124, 126, 127, 129, 130, - 131, 132, 99, 100, 65, nil, 108, 109, 120, nil, - nil, 110, 111, 112, 113, 114, 115, 116, 117, nil, - nil, nil, nil, nil, nil, nil, nil, 50, 147, 148, - 149, 150, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 128, nil, 38, - nil, nil, 123, 124, 126, 127, 129, 130, 131, 132, - 99, 100, 65, nil, 108, 109, 120, nil, nil, 110, - 111, 112, 113, 114, 115, 116, 117, nil, nil, nil, - nil, nil, nil, nil, nil, 50, 147, 148, 149, 150, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 128, nil, 38, nil, nil, - 123, 124, 126, 127, 129, 130, 131, 132, 99, 100, - 65, nil, 108, 109, 120, nil, nil, 110, 111, 112, - 113, 114, 115, 116, 117, nil, nil, nil, nil, nil, - nil, nil, nil, 50, 147, 148, 149, 150, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 128, nil, 38, nil, nil, 123, 124, - 126, 127, 129, 130, 131, 132, 99, 100, 65, nil, - 108, 109, 120, nil, nil, 110, 111, 112, 113, 114, - 115, 116, 117, 154, nil, nil, nil, 120, nil, nil, - nil, 50, 147, 148, 149, 150, nil, nil, nil, nil, - nil, nil, 215, nil, nil, nil, nil, nil, nil, nil, - nil, 128, nil, 38, nil, nil, 123, 124, 126, 127, - 129, 130, 131, 132, nil, nil, 128, nil, nil, nil, - nil, 123, 124, 126, 127, 129, 130, 131, 132, 214, - nil, nil, nil, nil, 216, 217, 218, 219, nil, 50, - 147, 148, 149, 150, 65, nil, nil, nil, 120, nil, - nil, nil, nil, nil, 50, 147, 148, 149, 150, 154, - nil, nil, nil, 120, nil, nil, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 31, 32, - 33, 34, 35, 36, nil, nil, nil, 128, nil, 38, - nil, nil, 123, 124, 126, 127, 129, 130, 131, 132, - 262, nil, 128, nil, nil, 263, nil, 123, 124, 126, - 127, 129, 130, 131, 132, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 50, 147, 148, 149, 150, - 65, nil, nil, nil, 120, nil, nil, nil, nil, nil, - 50, 147, 148, 149, 150, nil, nil, nil, nil, nil, - nil, nil, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 31, 32, 33, 34, 35, 36, - nil, nil, nil, 128, nil, 38, nil, nil, 123, 124, - 126, 127, 129, 130, 131, 132, nil, nil, nil, nil, - nil, nil, nil, nil, 65, nil, nil, nil, 120, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 50, 147, 148, 149, 150, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 31, 32, - 33, 34, 35, 36, nil, nil, nil, 128, nil, 38, - nil, nil, 123, 124, 126, 127, 129, 130, 131, 132, - 154, nil, nil, nil, 120, nil, nil, nil, nil, nil, - nil, nil, nil, 384, nil, nil, nil, 120, nil, nil, - nil, nil, nil, nil, nil, 50, 147, 148, 149, 150, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 128, nil, nil, nil, nil, 123, 124, - 126, 127, 129, 130, 131, 132, 128, nil, nil, nil, - nil, 123, 124, 126, 127, 129, 130, 131, 132, 154, - 392, nil, nil, 120, nil, nil, nil, nil, nil, nil, - nil, 50, 147, 148, 149, 150, 154, nil, nil, nil, - 120, nil, nil, nil, 50, 147, 148, 149, 150, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 262, nil, 128, nil, nil, 263, nil, 123, 124, 126, - 127, 129, 130, 131, 132, nil, nil, 262, nil, 128, - nil, nil, 263, nil, 123, 124, 126, 127, 129, 130, - 131, 132, 154, nil, nil, nil, 120, nil, nil, nil, - 50, 147, 148, 149, 150, nil, nil, 154, 453, nil, - nil, 120, nil, nil, nil, nil, nil, 50, 147, 148, - 149, 150, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 128, nil, nil, nil, nil, - 123, 124, 126, 127, 129, 130, 131, 132, 262, nil, - 128, nil, 208, 263, 120, 123, 124, 126, 127, 129, - 130, 131, 132, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 50, 147, 148, 149, 150, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 50, 147, - 148, 149, 150, 128, nil, nil, nil, nil, 123, 124, - 126, 127, 129, 130, 131, 132, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 305, nil, 120, nil, nil, nil, nil, nil, nil, - nil, 50, 147, 148, 149, 150, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 31, 32, 33, 34, 35, 36, 37, - nil, nil, 128, nil, 38, nil, nil, 123, 124, 126, - 127, 129, 130, 131, 132, 381, nil, 120, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 383, nil, - 120, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 50, 147, 148, 149, 150, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 128, nil, nil, nil, - nil, 123, 124, 126, 127, 129, 130, 131, 132, 128, - nil, 412, nil, 120, 123, 124, 126, 127, 129, 130, - 131, 132, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 50, 147, 148, 149, 150, nil, - nil, nil, nil, nil, nil, nil, nil, 50, 147, 148, - 149, 150, 128, nil, nil, nil, nil, 123, 124, 126, - 127, 129, 130, 131, 132, 120, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 120, nil, - 160, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 50, 147, 148, 149, 150, nil, nil, nil, 34, 35, - 36, nil, nil, 159, 161, nil, nil, nil, nil, 123, - 124, 126, 127, 129, 130, 131, 132, 128, nil, nil, - nil, 220, 123, 124, 126, 127, 129, 130, 131, 132, - nil, nil, nil, nil, 220, nil, nil, nil, nil, nil, - nil, nil, 50, 147, 148, 149, 150, nil, nil, nil, - nil, nil, nil, nil, nil, 50, 147, 148, 149, 150, - 128, nil, nil, nil, nil, 123, 124, 126, 127, 129, - 130, 131, 132, 128, nil, nil, nil, 120, 123, 124, - 126, 127, 129, 130, 131, 132, nil, nil, nil, nil, - 224, nil, nil, nil, nil, nil, nil, nil, 50, 147, - 148, 149, 150, nil, nil, nil, nil, nil, nil, nil, - nil, 50, 147, 148, 149, 150, 128, nil, nil, nil, - nil, 123, 124, 126, 127, 129, 130, 131, 132, 128, - nil, nil, nil, nil, 123, 124, 126, 127, 129, 130, - 131, 132, nil, nil, 120, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 50, 147, 148, 149, 150, 266, - nil, nil, nil, 120, nil, nil, nil, 50, 147, 148, - 149, 150, nil, nil, nil, nil, nil, 34, 35, 36, - nil, nil, 265, 267, nil, nil, nil, 120, 123, 124, - 126, 127, 129, 130, 131, 132, 34, 35, 36, nil, - nil, nil, 128, nil, nil, nil, 120, 123, 124, 126, - 127, 129, 130, 131, 132, nil, nil, nil, nil, nil, - nil, 50, 147, 148, 149, 150, 128, nil, nil, nil, - 120, 123, 124, 126, 127, 129, 130, 131, 132, nil, - 50, 147, 148, 149, 150, 128, nil, nil, nil, 120, - 123, 124, 126, 127, 129, 130, 131, 132, nil, nil, - nil, nil, nil, nil, 50, 147, 148, 149, 150, 128, - nil, nil, nil, 120, 123, 124, 126, 127, 129, 130, - 131, 132, nil, 50, 147, 148, 149, 150, 128, nil, - nil, nil, 120, 123, 124, 126, 127, 129, 130, 131, - 132, nil, nil, nil, nil, nil, nil, 50, 147, 148, - 149, 150, 128, nil, nil, nil, 120, 123, 124, 126, - 127, 129, 130, 131, 132, nil, 50, 147, 148, 149, - 150, 128, nil, nil, nil, nil, 123, 124, 126, 127, - 129, 130, 131, 132, nil, nil, nil, nil, nil, nil, - 50, 147, 148, 149, 150, 128, nil, nil, nil, nil, - 123, 124, 126, 127, 129, 130, 131, 132, nil, 50, - 147, 148, 149, 150, nil, nil, nil, nil, nil, nil, - 120, 318, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 50, 147, 148, 149, 150, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 31, 32, 33, 34, 35, 36, nil, nil, nil, 128, - nil, 38, nil, 120, 123, 124, 126, 127, 129, 130, - 131, 132, nil, nil, nil, nil, 120, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 50, 147, 148, - 149, 150, 128, nil, nil, nil, nil, 123, 124, 126, - 127, 129, 130, 131, 132, 128, nil, nil, nil, 120, - 123, 124, 126, 127, 129, 130, 131, 132, nil, nil, - nil, nil, 120, nil, nil, nil, nil, nil, nil, nil, - 50, 147, 148, 149, 150, nil, nil, nil, nil, nil, - nil, nil, nil, 50, 147, 148, 149, 150, 128, nil, - nil, nil, nil, 123, 124, 126, 127, 129, 130, 131, - 132, 128, nil, nil, nil, 120, 123, 124, 126, 127, - 129, 130, 131, 132, nil, nil, nil, nil, 120, nil, - nil, nil, nil, nil, nil, nil, 50, 147, 148, 149, - 150, nil, nil, nil, nil, nil, nil, nil, nil, 50, - 147, 148, 149, 150, 128, nil, nil, nil, nil, 123, - 124, 126, 127, 129, 130, 131, 132, 128, nil, nil, - nil, 120, 123, 124, 126, 127, 129, 130, 131, 132, - nil, nil, nil, nil, 120, nil, nil, nil, nil, nil, - nil, nil, 50, 147, 148, 149, 150, nil, nil, nil, - nil, nil, nil, nil, nil, 50, 147, 148, 149, 150, - 128, nil, nil, nil, nil, 123, 124, 126, 127, 129, - 130, 131, 132, 128, nil, nil, nil, 120, 123, 124, - 126, 127, 129, 130, 131, 132, nil, nil, nil, nil, - 120, nil, nil, nil, nil, nil, nil, nil, 50, 147, - 148, 149, 150, nil, nil, nil, nil, nil, nil, nil, - nil, 50, 147, 148, 149, 150, 128, nil, nil, nil, - nil, 123, 124, 126, 127, 129, 130, 131, 132, 128, - nil, nil, nil, 120, 123, 124, 126, 127, 129, 130, - 131, 132, nil, nil, nil, nil, 120, nil, nil, nil, - nil, nil, nil, nil, 50, 147, 148, 149, 150, nil, - nil, nil, nil, nil, nil, nil, nil, 50, 147, 148, - 149, 150, 128, nil, nil, nil, nil, 123, 124, 126, - 127, 129, 130, 131, 132, 128, nil, nil, nil, 120, - 123, 124, 126, 127, 129, 130, 131, 132, nil, nil, - nil, nil, 120, nil, nil, nil, nil, nil, nil, nil, - 50, 147, 148, 149, 150, nil, nil, nil, nil, nil, - nil, nil, nil, 50, 147, 148, 149, 150, 128, nil, - nil, nil, nil, 123, 124, 126, 127, 129, 130, 131, - 132, 128, nil, nil, nil, 120, 123, 124, 126, 127, - 129, 130, 131, 132, nil, nil, nil, nil, 120, nil, - nil, nil, nil, nil, nil, nil, 50, 147, 148, 149, - 150, nil, nil, nil, nil, nil, nil, nil, nil, 50, - 147, 148, 149, 150, 128, nil, nil, nil, nil, 123, - 124, 126, 127, 129, 130, 131, 132, 128, nil, nil, - nil, 120, 123, 124, 126, 127, 129, 130, 131, 132, - nil, nil, nil, nil, 120, nil, nil, nil, nil, nil, - nil, nil, 50, 147, 148, 149, 150, nil, nil, nil, - nil, nil, nil, nil, nil, 50, 147, 148, 149, 150, - 128, nil, nil, nil, nil, 123, 124, 126, 127, 129, - 130, 131, 132, 128, nil, nil, nil, 120, 123, 124, - 126, 127, 129, 130, 131, 132, nil, nil, nil, nil, - 120, nil, nil, nil, nil, nil, nil, nil, 50, 147, - 148, 149, 150, nil, nil, nil, nil, nil, nil, nil, - nil, 50, 147, 148, 149, 150, 128, nil, nil, nil, - nil, 123, 124, 126, 127, 129, 130, 131, 132, 128, - nil, nil, nil, 120, 123, 124, 126, 127, 129, 130, - 131, 132, nil, nil, nil, nil, 120, nil, nil, nil, - nil, nil, nil, nil, 50, 147, 148, 149, 150, nil, - nil, nil, nil, nil, nil, nil, nil, 50, 147, 148, - 149, 150, 128, nil, nil, nil, nil, 123, 124, 126, - 127, 129, 130, 131, 132, 128, nil, nil, nil, nil, - 123, 124, 126, 127, 129, 130, 131, 132, 120, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 50, 147, 148, 149, 150, 120, nil, nil, nil, nil, - nil, nil, nil, 50, 147, 148, 149, 150, nil, nil, - nil, 34, 35, 36, nil, nil, nil, 128, nil, nil, - nil, nil, 123, 124, 126, 127, 129, 130, 131, 132, - nil, nil, nil, 368, 369, nil, nil, nil, 120, 123, - 124, 126, 127, 129, 130, 131, 132, nil, nil, nil, - nil, nil, 120, nil, nil, 50, 147, 148, 149, 150, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 50, 147, 148, 149, 150, 128, nil, nil, - nil, nil, 123, 124, 126, 127, 129, 130, 131, 132, - 401, 402, nil, nil, nil, 120, 123, 124, 126, 127, - 129, 130, 131, 132, nil, nil, nil, nil, 120, 415, - nil, nil, nil, nil, nil, 50, 147, 148, 149, 150, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 50, - 147, 148, 149, 150, 128, nil, nil, nil, nil, 123, - 124, 126, 127, 129, 130, 131, 132, 128, nil, nil, - nil, nil, 123, 124, 126, 127, 129, 130, 131, 132, - 120, 418, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 50, 147, 148, 149, 150, nil, nil, nil, - nil, nil, nil, nil, nil, 50, 147, 148, 149, 150, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 128, - nil, nil, nil, nil, 123, 124, 126, 127, 129, 130, - 131, 132, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 120, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 50, 147, 148, - 149, 150, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 31, 32, 33, 34, 35, 36, - nil, nil, nil, 128, nil, 38, nil, 120, 123, 124, - 126, 127, 129, 130, 131, 132, nil, nil, nil, nil, - 120, 430, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 50, 147, 148, 149, 150, 128, nil, nil, nil, - nil, 123, 124, 126, 127, 129, 130, 131, 132, 128, - nil, nil, nil, nil, 123, 124, 126, 127, 129, 130, - 131, 132, 120, 432, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 50, 147, 148, 149, 150, 120, - 436, nil, nil, nil, nil, nil, nil, 50, 147, 148, - 149, 150, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 128, nil, nil, nil, nil, 123, 124, 126, 127, - 129, 130, 131, 132, nil, nil, nil, nil, 128, nil, - nil, nil, nil, 123, 124, 126, 127, 129, 130, 131, - 132, 120, 444, nil, nil, nil, nil, nil, nil, 50, - 147, 148, 149, 150, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 50, 147, 148, 149, - 150, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 128, nil, nil, nil, nil, 123, 124, 126, 127, 129, - 130, 131, 132, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 277, 364, nil, nil, nil, nil, nil, nil, 50, 147, - 148, 149, 150, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 31, 32, 33, 34, 35, 36, 37, 281, 164, 49, - nil, 38, nil, nil, nil, nil, nil, nil, nil, nil, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 31, 32, 33, - 34, 35, 36, 37, nil, nil, nil, 50, 38, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 39, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 50, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 31, 32, 33, 34, 35, 36, 37, 65, - nil, nil, nil, 38, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 67, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 31, 32, 33, 34, 35, 36, 37, - 65, nil, nil, nil, 38, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 31, 32, 33, 34, 35, 36, - 37, 173, nil, nil, nil, 38, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 31, 32, 33, 34, 35, 36, - 282, nil, nil, nil, nil, 38, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 31, 32, 33, 34, 35, 36, 287, - nil, nil, nil, nil, 38, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 31, 32, 33, 34, 35, 36, 312, 364, - nil, nil, nil, 38, nil, nil, nil, nil, nil, nil, - nil, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 31, 32, - 33, 34, 35, 36, 37, 281, 404, 49, nil, 38, - nil, nil, nil, nil, nil, nil, nil, nil, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 31, 32, 33, 34, 35, - 36, 37, nil, nil, nil, nil, 38, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 31, 32, 33, 34, 35, 36, - 37, nil, nil, nil, nil, 38, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 31, 32, 33, 34, 35, 36, 37, - nil, nil, nil, nil, 38, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 31, 32, 33, 34, 35, 36, 37, nil, - nil, nil, nil, 38, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 31, 32, 33, 34, 35, 36, 37, nil, nil, - nil, nil, 38, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 31, 32, 33, 34, 35, 36, 37, nil, nil, nil, - nil, 38, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 31, - 32, 33, 34, 35, 36, 37, nil, nil, nil, 359, - 38, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 31, 32, 33, 34, 35, 36, nil, - nil, nil, nil, nil, 38, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 31, 32, 33, - 34, 35, 36, nil, nil, nil, nil, nil, 38, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 31, 32, 33, 34, 35, 36, nil, nil, nil, - nil, nil, 38, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 31, 32, 33, 34, 35, - 36, nil, nil, nil, nil, nil, 38, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 31, - 32, 33, 34, 35, 36, nil, nil, nil, nil, nil, - 38 ] - -racc_action_check = [ - 65, 65, 65, 65, 65, 65, 65, 210, 39, 65, - 65, 65, 65, 65, 65, 65, 65, 55, 45, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 46, 210, 65, 210, 65, 316, 345, - 65, 65, 65, 65, 65, 65, 65, 65, 85, 276, - 57, 163, 58, 135, 182, 186, 59, 345, 70, 184, - 114, 163, 85, 289, 294, 316, 135, 135, 182, 186, - 46, 136, 136, 65, 65, 65, 65, 65, 102, 102, - 102, 102, 102, 102, 102, 45, 276, 102, 102, 102, - 102, 102, 102, 102, 102, 70, 114, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, - 102, 30, 280, 102, 60, 102, 276, 73, 102, 102, - 102, 102, 102, 102, 102, 102, 112, 112, 112, 184, - 112, 112, 112, 289, 294, 112, 112, 112, 112, 112, - 112, 112, 112, 257, 260, 330, 33, 42, 48, 280, - 107, 102, 102, 102, 102, 102, 30, 257, 330, 330, - 42, 80, 175, 107, 311, 361, 137, 137, 80, 260, - 84, 112, 87, 112, 260, 175, 112, 112, 112, 112, - 112, 112, 112, 112, 187, 187, 187, 48, 187, 187, - 187, 33, 30, 187, 187, 187, 187, 187, 187, 187, - 187, 311, 361, 207, 419, 139, 139, 80, 331, 112, - 112, 112, 112, 112, 211, 304, 207, 133, 419, 284, - 380, 331, 331, 89, 211, 48, 284, 33, 304, 187, - 98, 187, 100, 380, 187, 187, 187, 187, 187, 187, - 187, 187, 191, 191, 191, 80, 191, 191, 191, 382, - 411, 191, 191, 191, 191, 191, 191, 191, 191, 144, - 144, 101, 382, 411, 109, 284, 110, 187, 187, 187, - 187, 187, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 5, 111, 5, 332, 332, 191, 113, 191, - 333, 333, 191, 191, 191, 191, 191, 191, 191, 191, - 192, 192, 192, 284, 192, 192, 192, 300, 301, 192, - 192, 192, 192, 192, 192, 192, 192, 300, 301, 115, - 302, 317, 410, 5, 414, 191, 191, 191, 191, 191, - 302, 317, 410, 417, 414, 116, 429, 119, 431, 435, - 66, 140, 66, 417, 141, 192, 429, 192, 431, 435, - 192, 192, 192, 192, 192, 192, 192, 192, 296, 296, - 296, 5, 296, 296, 296, 443, 142, 296, 296, 296, - 296, 296, 296, 296, 296, 443, 49, 49, 49, 334, - 334, 66, 49, 192, 192, 192, 192, 192, 74, 74, - 74, 335, 335, 143, 74, 138, 138, 138, 138, 151, - 69, 336, 336, 296, 158, 296, 337, 337, 296, 296, - 296, 296, 296, 296, 296, 296, 375, 375, 375, 66, - 375, 375, 375, 340, 340, 375, 375, 375, 375, 375, - 375, 375, 375, 338, 338, 338, 338, 161, 162, 69, - 165, 296, 296, 296, 296, 296, 339, 339, 339, 339, - 177, 188, 200, 201, 203, 204, 212, 213, 167, 216, - 217, 375, 263, 375, 264, 267, 375, 375, 375, 375, - 375, 375, 375, 375, 376, 376, 376, 69, 376, 376, - 376, 270, 274, 376, 376, 376, 376, 376, 376, 376, - 376, 303, 324, 325, 341, 167, 342, 167, 343, 375, - 375, 375, 375, 375, 344, 351, 354, 356, 362, 363, - 367, 369, 389, 390, 400, 402, 403, 407, 427, 376, - nil, 376, nil, nil, 376, 376, 376, 376, 376, 376, - 376, 376, 377, 377, 377, 167, 377, 377, 377, nil, - nil, 377, 377, 377, 377, 377, 377, 377, 377, nil, - nil, nil, nil, nil, nil, nil, nil, 376, 376, 376, - 376, 376, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 377, nil, 377, - nil, nil, 377, 377, 377, 377, 377, 377, 377, 377, - 415, 415, 415, nil, 415, 415, 415, nil, nil, 415, - 415, 415, 415, 415, 415, 415, 415, nil, nil, nil, - nil, nil, nil, nil, nil, 377, 377, 377, 377, 377, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 415, nil, 415, nil, nil, - 415, 415, 415, 415, 415, 415, 415, 415, 418, 418, - 418, nil, 418, 418, 418, nil, nil, 418, 418, 418, - 418, 418, 418, 418, 418, nil, nil, nil, nil, nil, - nil, nil, nil, 415, 415, 415, 415, 415, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 418, nil, 418, nil, nil, 418, 418, - 418, 418, 418, 418, 418, 418, 426, 426, 426, nil, - 426, 426, 426, nil, nil, 426, 426, 426, 426, 426, - 426, 426, 426, nil, nil, nil, nil, nil, nil, nil, - nil, 418, 418, 418, 418, 418, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 426, nil, 426, nil, nil, 426, 426, 426, 426, - 426, 426, 426, 426, 430, 430, 430, nil, 430, 430, - 430, nil, nil, 430, 430, 430, 430, 430, 430, 430, - 430, nil, nil, nil, nil, nil, nil, nil, nil, 426, - 426, 426, 426, 426, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 430, - nil, 430, nil, nil, 430, 430, 430, 430, 430, 430, - 430, 430, 432, 432, 432, nil, 432, 432, 432, nil, - nil, 432, 432, 432, 432, 432, 432, 432, 432, nil, - nil, nil, nil, nil, nil, nil, nil, 430, 430, 430, - 430, 430, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 432, nil, 432, - nil, nil, 432, 432, 432, 432, 432, 432, 432, 432, - 433, 433, 433, nil, 433, 433, 433, nil, nil, 433, - 433, 433, 433, 433, 433, 433, 433, nil, nil, nil, - nil, nil, nil, nil, nil, 432, 432, 432, 432, 432, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 433, nil, 433, nil, nil, - 433, 433, 433, 433, 433, 433, 433, 433, 436, 436, - 436, nil, 436, 436, 436, nil, nil, 436, 436, 436, - 436, 436, 436, 436, 436, nil, nil, nil, nil, nil, - nil, nil, nil, 433, 433, 433, 433, 433, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 436, nil, 436, nil, nil, 436, 436, - 436, 436, 436, 436, 436, 436, 437, 437, 437, nil, - 437, 437, 437, nil, nil, 437, 437, 437, 437, 437, - 437, 437, 437, nil, nil, nil, nil, nil, nil, nil, - nil, 436, 436, 436, 436, 436, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 437, nil, 437, nil, nil, 437, 437, 437, 437, - 437, 437, 437, 437, 444, 444, 444, nil, 444, 444, - 444, nil, nil, 444, 444, 444, 444, 444, 444, 444, - 444, nil, nil, nil, nil, nil, nil, nil, nil, 437, - 437, 437, 437, 437, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 444, - nil, 444, nil, nil, 444, 444, 444, 444, 444, 444, - 444, 444, 445, 445, 445, nil, 445, 445, 445, nil, - nil, 445, 445, 445, 445, 445, 445, 445, 445, nil, - nil, nil, nil, nil, nil, nil, nil, 444, 444, 444, - 444, 444, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 445, nil, 445, - nil, nil, 445, 445, 445, 445, 445, 445, 445, 445, - 447, 447, 447, nil, 447, 447, 447, nil, nil, 447, - 447, 447, 447, 447, 447, 447, 447, nil, nil, nil, - nil, nil, nil, nil, nil, 445, 445, 445, 445, 445, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 447, nil, 447, nil, nil, - 447, 447, 447, 447, 447, 447, 447, 447, 450, 450, - 450, nil, 450, 450, 450, nil, nil, 450, 450, 450, - 450, 450, 450, 450, 450, nil, nil, nil, nil, nil, - nil, nil, nil, 447, 447, 447, 447, 447, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 450, nil, 450, nil, nil, 450, 450, - 450, 450, 450, 450, 450, 450, 454, 454, 454, nil, - 454, 454, 454, nil, nil, 454, 454, 454, 454, 454, - 454, 454, 454, 67, nil, nil, nil, 67, nil, nil, - nil, 450, 450, 450, 450, 450, nil, nil, nil, nil, - nil, nil, 122, nil, nil, nil, nil, nil, nil, nil, - nil, 454, nil, 454, nil, nil, 454, 454, 454, 454, - 454, 454, 454, 454, nil, nil, 67, nil, nil, nil, - nil, 67, 67, 67, 67, 67, 67, 67, 67, 122, - nil, nil, nil, nil, 122, 122, 122, 122, nil, 454, - 454, 454, 454, 454, 120, nil, nil, nil, 120, nil, - nil, nil, nil, nil, 67, 67, 67, 67, 67, 154, - nil, nil, nil, 154, nil, nil, 120, 120, 120, 120, - 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, - 120, 120, 120, 120, nil, nil, nil, 120, nil, 120, - nil, nil, 120, 120, 120, 120, 120, 120, 120, 120, - 154, nil, 154, nil, nil, 154, nil, 154, 154, 154, - 154, 154, 154, 154, 154, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 120, 120, 120, 120, 120, - 220, nil, nil, nil, 220, nil, nil, nil, nil, nil, - 154, 154, 154, 154, 154, nil, nil, nil, nil, nil, - nil, nil, 220, 220, 220, 220, 220, 220, 220, 220, - 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, - nil, nil, nil, 220, nil, 220, nil, nil, 220, 220, - 220, 220, 220, 220, 220, 220, nil, nil, nil, nil, - nil, nil, nil, nil, 224, nil, nil, nil, 224, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 220, 220, 220, 220, 220, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, nil, nil, nil, 224, nil, 224, - nil, nil, 224, 224, 224, 224, 224, 224, 224, 224, - 258, nil, nil, nil, 258, nil, nil, nil, nil, nil, - nil, nil, nil, 315, nil, nil, nil, 315, nil, nil, - nil, nil, nil, nil, nil, 224, 224, 224, 224, 224, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 258, nil, nil, nil, nil, 258, 258, - 258, 258, 258, 258, 258, 258, 315, nil, nil, nil, - nil, 315, 315, 315, 315, 315, 315, 315, 315, 347, - 347, nil, nil, 347, nil, nil, nil, nil, nil, nil, - nil, 258, 258, 258, 258, 258, 384, nil, nil, nil, - 384, nil, nil, nil, 315, 315, 315, 315, 315, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 347, nil, 347, nil, nil, 347, nil, 347, 347, 347, - 347, 347, 347, 347, 347, nil, nil, 384, nil, 384, - nil, nil, 384, nil, 384, 384, 384, 384, 384, 384, - 384, 384, 393, nil, nil, nil, 393, nil, nil, nil, - 347, 347, 347, 347, 347, nil, nil, 439, 439, nil, - nil, 439, nil, nil, nil, nil, nil, 384, 384, 384, - 384, 384, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 393, nil, nil, nil, nil, - 393, 393, 393, 393, 393, 393, 393, 393, 439, nil, - 439, nil, 117, 439, 117, 439, 439, 439, 439, 439, - 439, 439, 439, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 393, 393, 393, 393, 393, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 439, 439, - 439, 439, 439, 117, nil, nil, nil, nil, 117, 117, - 117, 117, 117, 117, 117, 117, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 202, nil, 202, nil, nil, nil, nil, nil, nil, - nil, 117, 117, 117, 117, 117, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, - nil, nil, 202, nil, 202, nil, nil, 202, 202, 202, - 202, 202, 202, 202, 202, 305, nil, 305, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 306, nil, - 306, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 202, 202, 202, 202, 202, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 305, nil, nil, nil, - nil, 305, 305, 305, 305, 305, 305, 305, 305, 306, - nil, 379, nil, 379, 306, 306, 306, 306, 306, 306, - 306, 306, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 305, 305, 305, 305, 305, nil, - nil, nil, nil, nil, nil, nil, nil, 306, 306, 306, - 306, 306, 379, nil, nil, nil, nil, 379, 379, 379, - 379, 379, 379, 379, 379, 71, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 99, nil, - 71, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 379, 379, 379, 379, 379, nil, nil, nil, 71, 71, - 71, nil, nil, 71, 71, nil, nil, nil, nil, 71, - 71, 71, 71, 71, 71, 71, 71, 99, nil, nil, - nil, 123, 99, 99, 99, 99, 99, 99, 99, 99, - nil, nil, nil, nil, 124, nil, nil, nil, nil, nil, - nil, nil, 71, 71, 71, 71, 71, nil, nil, nil, - nil, nil, nil, nil, nil, 99, 99, 99, 99, 99, - 123, nil, nil, nil, nil, 123, 123, 123, 123, 123, - 123, 123, 123, 124, nil, nil, nil, 125, 124, 124, - 124, 124, 124, 124, 124, 124, nil, nil, nil, nil, - 126, nil, nil, nil, nil, nil, nil, nil, 123, 123, - 123, 123, 123, nil, nil, nil, nil, nil, nil, nil, - nil, 124, 124, 124, 124, 124, 125, nil, nil, nil, - nil, 125, 125, 125, 125, 125, 125, 125, 125, 126, - nil, nil, nil, nil, 126, 126, 126, 126, 126, 126, - 126, 126, nil, nil, 157, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 125, 125, 125, 125, 125, 157, - nil, nil, nil, 160, nil, nil, nil, 126, 126, 126, - 126, 126, nil, nil, nil, nil, nil, 157, 157, 157, - nil, nil, 157, 157, nil, nil, nil, 178, 157, 157, - 157, 157, 157, 157, 157, 157, 160, 160, 160, nil, - nil, nil, 160, nil, nil, nil, 185, 160, 160, 160, - 160, 160, 160, 160, 160, nil, nil, nil, nil, nil, - nil, 157, 157, 157, 157, 157, 178, nil, nil, nil, - 196, 178, 178, 178, 178, 178, 178, 178, 178, nil, - 160, 160, 160, 160, 160, 185, nil, nil, nil, 197, - 185, 185, 185, 185, 185, 185, 185, 185, nil, nil, - nil, nil, nil, nil, 178, 178, 178, 178, 178, 196, - nil, nil, nil, 198, 196, 196, 196, 196, 196, 196, - 196, 196, nil, 185, 185, 185, 185, 185, 197, nil, - nil, nil, 199, 197, 197, 197, 197, 197, 197, 197, - 197, nil, nil, nil, nil, nil, nil, 196, 196, 196, - 196, 196, 198, nil, nil, nil, 214, 198, 198, 198, - 198, 198, 198, 198, 198, nil, 197, 197, 197, 197, - 197, 199, nil, nil, nil, nil, 199, 199, 199, 199, - 199, 199, 199, 199, nil, nil, nil, nil, nil, nil, - 198, 198, 198, 198, 198, 214, nil, nil, nil, nil, - 214, 214, 214, 214, 214, 214, 214, 214, nil, 199, - 199, 199, 199, 199, nil, nil, nil, nil, nil, nil, - 215, 215, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 214, 214, 214, 214, 214, 215, 215, - 215, 215, 215, 215, 215, 215, 215, 215, 215, 215, - 215, 215, 215, 215, 215, 215, nil, nil, nil, 215, - nil, 215, nil, 226, 215, 215, 215, 215, 215, 215, - 215, 215, nil, nil, nil, nil, 238, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 215, 215, 215, - 215, 215, 226, nil, nil, nil, nil, 226, 226, 226, - 226, 226, 226, 226, 226, 238, nil, nil, nil, 239, - 238, 238, 238, 238, 238, 238, 238, 238, nil, nil, - nil, nil, 240, nil, nil, nil, nil, nil, nil, nil, - 226, 226, 226, 226, 226, nil, nil, nil, nil, nil, - nil, nil, nil, 238, 238, 238, 238, 238, 239, nil, - nil, nil, nil, 239, 239, 239, 239, 239, 239, 239, - 239, 240, nil, nil, nil, 241, 240, 240, 240, 240, - 240, 240, 240, 240, nil, nil, nil, nil, 242, nil, - nil, nil, nil, nil, nil, nil, 239, 239, 239, 239, - 239, nil, nil, nil, nil, nil, nil, nil, nil, 240, - 240, 240, 240, 240, 241, nil, nil, nil, nil, 241, - 241, 241, 241, 241, 241, 241, 241, 242, nil, nil, - nil, 243, 242, 242, 242, 242, 242, 242, 242, 242, - nil, nil, nil, nil, 244, nil, nil, nil, nil, nil, - nil, nil, 241, 241, 241, 241, 241, nil, nil, nil, - nil, nil, nil, nil, nil, 242, 242, 242, 242, 242, - 243, nil, nil, nil, nil, 243, 243, 243, 243, 243, - 243, 243, 243, 244, nil, nil, nil, 245, 244, 244, - 244, 244, 244, 244, 244, 244, nil, nil, nil, nil, - 246, nil, nil, nil, nil, nil, nil, nil, 243, 243, - 243, 243, 243, nil, nil, nil, nil, nil, nil, nil, - nil, 244, 244, 244, 244, 244, 245, nil, nil, nil, - nil, 245, 245, 245, 245, 245, 245, 245, 245, 246, - nil, nil, nil, 247, 246, 246, 246, 246, 246, 246, - 246, 246, nil, nil, nil, nil, 248, nil, nil, nil, - nil, nil, nil, nil, 245, 245, 245, 245, 245, nil, - nil, nil, nil, nil, nil, nil, nil, 246, 246, 246, - 246, 246, 247, nil, nil, nil, nil, 247, 247, 247, - 247, 247, 247, 247, 247, 248, nil, nil, nil, 249, - 248, 248, 248, 248, 248, 248, 248, 248, nil, nil, - nil, nil, 250, nil, nil, nil, nil, nil, nil, nil, - 247, 247, 247, 247, 247, nil, nil, nil, nil, nil, - nil, nil, nil, 248, 248, 248, 248, 248, 249, nil, - nil, nil, nil, 249, 249, 249, 249, 249, 249, 249, - 249, 250, nil, nil, nil, 251, 250, 250, 250, 250, - 250, 250, 250, 250, nil, nil, nil, nil, 252, nil, - nil, nil, nil, nil, nil, nil, 249, 249, 249, 249, - 249, nil, nil, nil, nil, nil, nil, nil, nil, 250, - 250, 250, 250, 250, 251, nil, nil, nil, nil, 251, - 251, 251, 251, 251, 251, 251, 251, 252, nil, nil, - nil, 253, 252, 252, 252, 252, 252, 252, 252, 252, - nil, nil, nil, nil, 254, nil, nil, nil, nil, nil, - nil, nil, 251, 251, 251, 251, 251, nil, nil, nil, - nil, nil, nil, nil, nil, 252, 252, 252, 252, 252, - 253, nil, nil, nil, nil, 253, 253, 253, 253, 253, - 253, 253, 253, 254, nil, nil, nil, 255, 254, 254, - 254, 254, 254, 254, 254, 254, nil, nil, nil, nil, - 256, nil, nil, nil, nil, nil, nil, nil, 253, 253, - 253, 253, 253, nil, nil, nil, nil, nil, nil, nil, - nil, 254, 254, 254, 254, 254, 255, nil, nil, nil, - nil, 255, 255, 255, 255, 255, 255, 255, 255, 256, - nil, nil, nil, 262, 256, 256, 256, 256, 256, 256, - 256, 256, nil, nil, nil, nil, 266, nil, nil, nil, - nil, nil, nil, nil, 255, 255, 255, 255, 255, nil, - nil, nil, nil, nil, nil, nil, nil, 256, 256, 256, - 256, 256, 262, nil, nil, nil, nil, 262, 262, 262, - 262, 262, 262, 262, 262, 266, nil, nil, nil, nil, - 266, 266, 266, 266, 266, 266, 266, 266, 269, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 262, 262, 262, 262, 262, 281, nil, nil, nil, nil, - nil, nil, nil, 266, 266, 266, 266, 266, nil, nil, - nil, 269, 269, 269, nil, nil, nil, 269, nil, nil, - nil, nil, 269, 269, 269, 269, 269, 269, 269, 269, - nil, nil, nil, 281, 281, nil, nil, nil, 285, 281, - 281, 281, 281, 281, 281, 281, 281, nil, nil, nil, - nil, nil, 365, nil, nil, 269, 269, 269, 269, 269, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 281, 281, 281, 281, 281, 285, nil, nil, - nil, nil, 285, 285, 285, 285, 285, 285, 285, 285, - 365, 365, nil, nil, nil, 378, 365, 365, 365, 365, - 365, 365, 365, 365, nil, nil, nil, nil, 381, 381, - nil, nil, nil, nil, nil, 285, 285, 285, 285, 285, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 365, - 365, 365, 365, 365, 378, nil, nil, nil, nil, 378, - 378, 378, 378, 378, 378, 378, 378, 381, nil, nil, - nil, nil, 381, 381, 381, 381, 381, 381, 381, 381, - 383, 383, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 378, 378, 378, 378, 378, nil, nil, nil, - nil, nil, nil, nil, nil, 381, 381, 381, 381, 381, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 383, - nil, nil, nil, nil, 383, 383, 383, 383, 383, 383, - 383, 383, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 388, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 383, 383, 383, - 383, 383, 388, 388, 388, 388, 388, 388, 388, 388, - 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, - nil, nil, nil, 388, nil, 388, nil, 391, 388, 388, - 388, 388, 388, 388, 388, 388, nil, nil, nil, nil, - 412, 412, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 388, 388, 388, 388, 388, 391, nil, nil, nil, - nil, 391, 391, 391, 391, 391, 391, 391, 391, 412, - nil, nil, nil, nil, 412, 412, 412, 412, 412, 412, - 412, 412, 413, 413, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 391, 391, 391, 391, 391, 416, - 416, nil, nil, nil, nil, nil, nil, 412, 412, 412, - 412, 412, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 413, nil, nil, nil, nil, 413, 413, 413, 413, - 413, 413, 413, 413, nil, nil, nil, nil, 416, nil, - nil, nil, nil, 416, 416, 416, 416, 416, 416, 416, - 416, 428, 428, nil, nil, nil, nil, nil, nil, 413, - 413, 413, 413, 413, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 416, 416, 416, 416, - 416, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 428, nil, nil, nil, nil, 428, 428, 428, 428, 428, - 428, 428, 428, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 277, 277, nil, nil, nil, nil, nil, nil, 428, 428, - 428, 428, 428, 277, 277, 277, 277, 277, 277, 277, - 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, - 277, 277, 277, 277, 277, 277, 277, 277, 72, 277, - nil, 277, nil, nil, nil, nil, nil, nil, nil, nil, - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, - 72, 72, 72, 72, nil, nil, nil, 277, 72, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 1, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 72, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 41, - nil, nil, nil, 1, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 41, 41, 41, 41, 41, - 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, - 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, - 62, nil, nil, nil, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - 62, 78, nil, nil, nil, 62, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 78, 78, 78, 78, 78, 78, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, - 172, nil, nil, nil, nil, 78, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 172, 172, 172, 172, 172, 172, 172, 172, 172, - 172, 172, 172, 172, 172, 172, 172, 172, 172, 181, - nil, nil, nil, nil, 172, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 312, 312, - nil, nil, nil, 181, nil, nil, nil, nil, nil, nil, - nil, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 366, 312, nil, 312, - nil, nil, nil, nil, nil, nil, nil, nil, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 366, 366, nil, nil, nil, nil, 366, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, nil, nil, nil, nil, 0, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - nil, nil, nil, nil, 6, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, nil, - nil, nil, nil, 7, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, nil, nil, - nil, nil, 8, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, nil, nil, nil, - nil, 9, 275, 275, 275, 275, 275, 275, 275, 275, - 275, 275, 275, 275, 275, 275, 275, 275, 275, 275, - 275, 275, 275, 275, 275, 275, nil, nil, nil, 275, - 275, 56, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, 56, 56, nil, - nil, nil, nil, nil, 56, 77, 77, 77, 77, 77, - 77, 77, 77, 77, 77, 77, 77, 77, 77, 77, - 77, 77, 77, nil, nil, nil, nil, nil, 77, 81, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 81, - 81, 81, 81, 81, 81, 81, 81, nil, nil, nil, - nil, nil, 81, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, nil, nil, nil, nil, nil, 82, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, nil, nil, nil, nil, nil, - 83 ] - -racc_action_pointer = [ - 4005, 3703, nil, nil, nil, 295, 4034, 4063, 4092, 4121, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 126, nil, nil, 161, nil, nil, nil, nil, nil, 8, - nil, 3744, 160, nil, nil, 9, 34, nil, 159, 354, - nil, nil, nil, nil, nil, 12, 4174, 55, 57, -20, - 129, nil, 3785, nil, nil, -3, 353, 1318, nil, 411, - 59, 2026, 3638, 127, 366, nil, nil, 4198, 3825, nil, - 179, 4222, 4246, 4270, 104, 52, nil, 171, nil, 157, - nil, nil, nil, nil, nil, nil, nil, nil, 248, 2039, - 250, 279, 85, nil, nil, nil, nil, 163, nil, 275, - 277, 294, 143, 299, 20, 332, 348, 1795, nil, 267, - 1389, nil, 1333, 2082, 2095, 2138, 2151, nil, nil, nil, - nil, nil, nil, 216, nil, 15, 24, 123, 350, 156, - 305, 293, 314, 340, 205, nil, nil, nil, nil, nil, - nil, 398, nil, nil, 1404, nil, nil, 2205, 377, nil, - 2224, 410, 448, 51, nil, 440, nil, 469, nil, nil, - nil, nil, 3864, nil, nil, 175, nil, 468, 2248, nil, - nil, 3903, 58, nil, 63, 2267, 59, 201, 469, nil, - nil, 259, 317, nil, nil, nil, 2291, 2310, 2334, 2353, - 470, 460, 1864, 467, 468, nil, nil, 216, nil, nil, - -2, 224, 466, 467, 2377, 2441, 393, 394, nil, nil, - 1475, nil, nil, nil, 1539, nil, 2484, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 2497, 2540, - 2553, 2596, 2609, 2652, 2665, 2708, 2721, 2764, 2777, 2820, - 2833, 2876, 2889, 2932, 2945, 2988, 3001, 157, 1595, nil, - 143, nil, 3044, 396, 437, nil, 3057, 438, nil, 3109, - 454, nil, nil, nil, 416, 4150, 50, 3601, nil, nil, - 123, 3126, nil, nil, 237, 3169, nil, nil, nil, 67, - nil, nil, nil, nil, 68, nil, 375, nil, nil, nil, - 317, 318, 330, 502, 228, 1918, 1931, nil, nil, nil, - nil, 175, 3939, nil, nil, 1608, 28, 331, nil, nil, - nil, nil, nil, nil, 502, 503, nil, nil, nil, nil, - 117, 180, 248, 253, 336, 348, 358, 363, 388, 401, - 374, 458, 445, 446, 451, 47, nil, 1664, nil, nil, - nil, 478, nil, nil, 479, nil, 480, nil, nil, nil, - nil, 176, 518, 519, nil, 3183, 3976, 483, nil, 484, - nil, nil, nil, nil, nil, 433, 491, 549, 3226, 1974, - 233, 3239, 262, 3291, 1681, nil, nil, nil, 3355, 527, - 528, 3398, nil, 1737, nil, nil, nil, nil, nil, nil, - 487, nil, 488, 526, nil, nil, nil, 526, nil, nil, - 332, 263, 3411, 3463, 334, 607, 3480, 343, 665, 218, - nil, nil, nil, nil, nil, nil, 723, 531, 3532, 346, - 781, 348, 839, 897, nil, 349, 955, 1013, nil, 1752, - nil, nil, nil, 375, 1071, 1129, nil, 1187, nil, nil, - 1245, nil, nil, nil, 1303, nil, nil, nil, nil, nil ] - -racc_action_default = [ - -265, -265, -1, -3, -4, -265, -53, -55, -57, -59, - -64, -65, -66, -67, -68, -69, -70, -71, -72, -73, - -74, -75, -76, -77, -78, -79, -80, -81, -82, -83, - -265, -89, -90, -265, -115, -116, -117, -118, -166, -265, - -2, -62, -265, -51, -60, -265, -120, -121, -265, -136, - -258, -52, -54, -56, -58, -86, -265, -88, -107, -265, - -110, 460, -265, -6, -7, -265, -265, -265, -50, -265, - -119, -265, -265, -265, -135, -138, -139, -265, -265, -91, - -265, -95, -97, -265, -265, -265, -111, -113, -262, -265, - -5, -8, -9, -10, -11, -12, -13, -14, -179, -265, - -265, -83, -265, -20, -21, -23, -24, -265, -26, -265, - -265, -265, -265, -265, -265, -265, -265, -265, -180, -181, - -265, -184, -198, -265, -265, -265, -265, -204, -205, -206, - -207, -208, -209, -210, -212, -216, -219, -222, -227, -230, - -232, -234, -236, -238, -240, -242, -255, -259, -260, -261, - -264, -62, -63, -167, -265, -179, -61, -265, -265, -126, - -265, -205, -265, -265, -134, -141, -143, -147, -148, -122, - -137, -140, -265, -85, -92, -265, -98, -100, -265, -94, - -96, -265, -265, -104, -265, -265, -265, -265, -265, -210, - -257, -265, -265, -19, -22, -25, -265, -265, -265, -265, - -265, -265, -265, -265, -265, -45, -46, -265, -48, -263, - -151, -265, -265, -265, -265, -265, -265, -265, -190, -191, - -265, -199, -200, -201, -265, -202, -265, -244, -245, -246, - -247, -248, -249, -250, -251, -252, -253, -254, -265, -265, - -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, - -265, -265, -265, -265, -265, -265, -265, -265, -265, -171, - -265, -175, -265, -265, -265, -124, -265, -205, -125, -265, - -265, -131, -132, -133, -265, -265, -152, -265, -145, -146, - -154, -265, -84, -93, -265, -265, -102, -87, -103, -265, - -106, -112, -114, -108, -265, -15, -265, -17, -18, -256, - -265, -265, -265, -265, -265, -265, -265, -44, -49, -47, - -150, -152, -265, -182, -183, -265, -265, -265, -187, -194, - -196, -197, -188, -189, -265, -265, -243, -213, -214, -215, - -217, -218, -220, -221, -223, -224, -225, -226, -228, -229, - -231, -233, -235, -237, -239, -265, -168, -265, -170, -174, - -176, -265, -178, -123, -265, -130, -265, -128, -149, -142, - -144, -153, -265, -265, -165, -265, -265, -265, -159, -205, - -99, -101, -105, -109, -16, -265, -265, -265, -265, -265, - -265, -265, -265, -265, -265, -211, -185, -186, -265, -265, - -203, -265, -169, -265, -173, -177, -129, -127, -155, -164, - -265, -157, -205, -265, -163, -158, -161, -27, -29, -30, - -265, -265, -265, -265, -265, -265, -265, -265, -265, -265, - -195, -241, -172, -156, -160, -162, -265, -265, -265, -265, - -265, -265, -265, -265, -39, -265, -265, -265, -43, -265, - -192, -28, -31, -265, -265, -265, -35, -265, -37, -38, - -265, -41, -42, -193, -265, -33, -34, -36, -40, -32 ] - -racc_goto_table = [ - 47, 152, 57, 162, 75, 60, 70, 319, 153, 5, - 5, 257, 158, 176, 174, 51, 52, 53, 54, 76, - 393, 291, 279, 361, 74, 55, 82, 1, 58, 170, - 62, 104, 179, 180, 190, 223, 63, 101, 102, 41, - 47, 76, 188, 47, 171, 64, 157, 82, 82, 78, - 156, 82, 82, 82, 213, 85, 175, 90, 361, 163, - 98, 47, 2, 40, 47, 310, 91, 168, 194, 105, - 172, 210, 330, 331, 101, 47, 181, 332, 333, 360, - 182, 167, 338, 339, 200, 186, 204, 350, 317, 340, - 82, 334, 335, 336, 337, 153, 341, 98, 264, 342, - 151, 270, 343, 151, 344, 226, 105, 98, 174, 203, - nil, nil, 393, 190, 177, 212, nil, 174, nil, 81, - 190, 286, 276, nil, nil, nil, 291, 171, 292, nil, - 76, 291, nil, nil, nil, 269, nil, 299, nil, nil, - 81, 81, 82, nil, 81, 81, 81, nil, 327, 328, - 329, 82, nil, nil, 324, nil, 320, nil, 325, 200, - nil, nil, 47, 200, 200, 311, 210, 326, nil, nil, - 201, 210, nil, nil, nil, 210, nil, nil, nil, nil, - 420, nil, 98, 81, nil, 82, 98, 98, nil, nil, - 82, nil, 348, nil, 82, nil, nil, 190, nil, 153, - nil, 278, nil, nil, nil, 351, 306, 354, nil, nil, - 356, 322, 323, nil, nil, 212, nil, 370, nil, 212, - 190, nil, 367, nil, nil, 385, nil, nil, 371, nil, - nil, nil, 276, nil, nil, 81, nil, 70, nil, 171, - nil, 419, nil, nil, 81, 295, nil, nil, nil, 297, - 298, nil, nil, nil, nil, nil, nil, nil, 352, nil, - nil, nil, nil, nil, nil, nil, nil, 311, 200, 358, - nil, 47, 47, nil, nil, nil, nil, nil, 81, 47, - nil, 394, nil, 81, 167, nil, 167, 81, 153, nil, - nil, 98, nil, nil, nil, nil, nil, 403, nil, nil, - nil, nil, nil, nil, 207, nil, 400, 211, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 177, nil, - nil, 167, nil, nil, nil, 153, 421, 422, nil, 320, - nil, nil, nil, nil, 153, nil, nil, nil, nil, 210, - nil, nil, nil, nil, nil, nil, nil, 200, 200, 200, - nil, nil, nil, nil, 374, nil, nil, nil, 82, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 98, 98, 98, 394, nil, 167, nil, nil, nil, nil, - 153, nil, nil, nil, 300, 301, 302, 200, nil, 304, - 200, nil, nil, nil, nil, nil, nil, nil, 200, nil, - nil, 316, 200, nil, 200, 200, nil, 211, 200, 200, - 98, 211, nil, 98, nil, nil, 200, 200, nil, 200, - nil, 98, 200, nil, nil, 98, 200, 98, 98, nil, - nil, 98, 98, 407, 408, 409, nil, nil, 189, 98, - 98, nil, 98, 345, nil, 98, nil, nil, nil, 98, - nil, 81, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 221, 222, 189, 225, nil, nil, nil, nil, - nil, nil, nil, 434, nil, nil, 438, nil, nil, nil, - nil, nil, nil, nil, 441, nil, nil, nil, 446, nil, - 448, 449, 380, 382, 451, 452, nil, nil, nil, nil, - nil, nil, 455, 456, nil, 457, nil, nil, 458, nil, - nil, nil, 459, nil, nil, nil, nil, 189, nil, nil, - nil, nil, nil, nil, 189, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 410, 411, nil, 414, nil, - 417, nil, nil, nil, nil, nil, nil, 189, 189, 189, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, nil, nil, nil, nil, 429, - 431, 189, nil, 435, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 443, nil, nil, nil, nil, - nil, nil, nil, nil, 189, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 189, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 189 ] - -racc_goto_check = [ - 15, 27, 17, 43, 39, 17, 40, 59, 42, 5, - 5, 50, 42, 35, 32, 5, 5, 5, 5, 24, - 51, 37, 47, 49, 41, 15, 24, 1, 15, 39, - 7, 19, 33, 33, 73, 62, 8, 17, 18, 6, - 15, 24, 16, 15, 24, 4, 41, 24, 24, 31, - 26, 24, 24, 24, 48, 36, 34, 8, 49, 44, - 15, 15, 2, 2, 15, 47, 4, 15, 19, 4, - 31, 33, 63, 63, 17, 15, 31, 64, 64, 46, - 36, 5, 66, 66, 17, 36, 17, 53, 58, 67, - 24, 65, 65, 65, 65, 42, 68, 15, 42, 69, - 6, 42, 70, 6, 71, 74, 4, 15, 32, 15, - nil, nil, 51, 73, 6, 8, nil, 32, nil, 23, - 73, 16, 39, nil, nil, nil, 37, 24, 16, nil, - 24, 37, nil, nil, nil, 41, nil, 42, nil, nil, - 23, 23, 24, nil, 23, 23, 23, nil, 62, 62, - 62, 24, nil, nil, 48, nil, 42, nil, 48, 17, - nil, nil, 15, 17, 17, 39, 33, 42, nil, nil, - 9, 33, nil, nil, nil, 33, nil, nil, nil, nil, - 59, nil, 15, 23, nil, 24, 15, 15, nil, nil, - 24, nil, 27, nil, 24, nil, nil, 73, nil, 42, - nil, 6, nil, nil, nil, 16, 4, 42, nil, nil, - 42, 15, 15, nil, nil, 8, nil, 35, nil, 8, - 73, nil, 42, nil, nil, 62, nil, nil, 16, nil, - nil, nil, 39, nil, nil, 23, nil, 40, nil, 24, - nil, 50, nil, nil, 23, 9, nil, nil, nil, 9, - 9, nil, nil, nil, nil, nil, nil, nil, 15, nil, - nil, nil, nil, nil, nil, nil, nil, 39, 17, 15, - nil, 15, 15, nil, nil, nil, nil, nil, 23, 15, - nil, 27, nil, 23, 5, nil, 5, 23, 42, nil, - nil, 15, nil, nil, nil, nil, nil, 43, nil, nil, - nil, nil, nil, nil, 20, nil, 42, 20, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 6, nil, - nil, 5, nil, nil, nil, 42, 73, 27, nil, 42, - nil, nil, nil, nil, 42, nil, nil, nil, nil, 33, - nil, nil, nil, nil, nil, nil, nil, 17, 17, 17, - nil, nil, nil, nil, 9, nil, nil, nil, 24, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 15, 15, 15, 27, nil, 5, nil, nil, nil, nil, - 42, nil, nil, nil, 20, 20, 20, 17, nil, 20, - 17, nil, nil, nil, nil, nil, nil, nil, 17, nil, - nil, 20, 17, nil, 17, 17, nil, 20, 17, 17, - 15, 20, nil, 15, nil, nil, 17, 17, nil, 17, - nil, 15, 17, nil, nil, 15, 17, 15, 15, nil, - nil, 15, 15, 9, 9, 9, nil, nil, 60, 15, - 15, nil, 15, 20, nil, 15, nil, nil, nil, 15, - nil, 23, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 60, 60, 60, 60, nil, nil, nil, nil, - nil, nil, nil, 9, nil, nil, 9, nil, nil, nil, - nil, nil, nil, nil, 9, nil, nil, nil, 9, nil, - 9, 9, 20, 20, 9, 9, nil, nil, nil, nil, - nil, nil, 9, 9, nil, 9, nil, nil, 9, nil, - nil, nil, 9, nil, nil, nil, nil, 60, nil, nil, - nil, nil, nil, nil, 60, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 20, 20, nil, 20, nil, - 20, nil, nil, nil, nil, nil, nil, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, nil, nil, nil, nil, 20, - 20, 60, nil, 20, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 20, nil, nil, nil, nil, - nil, nil, nil, nil, 60, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 60, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 60 ] - -racc_goto_pointer = [ - nil, 27, 62, nil, 4, 9, 34, -11, -5, 58, - nil, nil, nil, nil, nil, -5, -57, -28, -27, -34, - 187, nil, nil, 63, -30, nil, -19, -66, nil, nil, - nil, -7, -64, -49, -24, -67, -4, -163, nil, -45, - -39, -25, -59, -69, -13, nil, -196, -145, -66, -253, - -143, -327, nil, -173, nil, nil, nil, nil, -127, -208, - 339, nil, -90, -169, -166, -154, -167, -162, -156, -154, - -152, -151, nil, -65, -28 ] - -racc_goto_default = [ - nil, nil, nil, 3, 4, 66, 73, nil, 93, 106, - 92, 94, 95, 96, 97, 155, nil, 29, nil, nil, - 107, 42, 6, 7, 8, 9, 44, 259, 27, 28, - 30, nil, 79, 80, nil, nil, nil, 86, 87, 45, - 46, nil, 146, 363, nil, 165, 166, 362, 321, 280, - nil, 258, 260, 261, 121, 118, 119, 122, nil, nil, - 133, 125, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, nil ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 1, 92, :_reduce_1, - 2, 92, :_reduce_2, - 1, 93, :_reduce_3, - 1, 93, :_reduce_4, - 4, 94, :_reduce_5, - 3, 94, :_reduce_6, - 1, 98, :_reduce_7, - 2, 98, :_reduce_8, - 1, 100, :_reduce_9, - 1, 100, :_reduce_10, - 1, 100, :_reduce_11, - 1, 100, :_reduce_12, - 1, 100, :_reduce_13, - 1, 100, :_reduce_14, - 3, 101, :_reduce_15, - 4, 101, :_reduce_16, - 3, 101, :_reduce_17, - 3, 101, :_reduce_18, - 3, 99, :_reduce_19, - 2, 99, :_reduce_20, - 1, 109, :_reduce_21, - 2, 109, :_reduce_22, - 1, 110, :_reduce_23, - 1, 110, :_reduce_24, - 2, 102, :_reduce_25, - 1, 102, :_reduce_26, - 5, 103, :_reduce_27, - 7, 103, :_reduce_28, - 5, 103, :_reduce_29, - 5, 104, :_reduce_30, - 7, 104, :_reduce_31, - 9, 104, :_reduce_32, - 8, 104, :_reduce_33, - 8, 104, :_reduce_34, - 7, 104, :_reduce_35, - 8, 104, :_reduce_36, - 7, 104, :_reduce_37, - 7, 104, :_reduce_38, - 6, 104, :_reduce_39, - 8, 104, :_reduce_40, - 7, 104, :_reduce_41, - 7, 104, :_reduce_42, - 6, 104, :_reduce_43, - 3, 105, :_reduce_44, - 2, 105, :_reduce_45, - 2, 105, :_reduce_46, - 3, 105, :_reduce_47, - 2, 105, :_reduce_48, - 3, 105, :_reduce_49, - 3, 95, :_reduce_50, - 2, 95, :_reduce_51, - 2, 96, :_reduce_52, - 1, 96, :_reduce_53, - 2, 96, :_reduce_54, - 1, 96, :_reduce_55, - 2, 96, :_reduce_56, - 1, 96, :_reduce_57, - 2, 96, :_reduce_58, - 1, 96, :_reduce_59, - 1, 112, :_reduce_60, - 3, 112, :_reduce_61, - 1, 117, :_reduce_62, - 3, 117, :_reduce_63, - 1, 113, :_reduce_64, - 1, 113, :_reduce_65, - 1, 113, :_reduce_66, - 1, 113, :_reduce_67, - 1, 113, :_reduce_68, - 1, 114, :_reduce_69, - 1, 114, :_reduce_70, - 1, 114, :_reduce_71, - 1, 114, :_reduce_72, - 1, 114, :_reduce_73, - 1, 114, :_reduce_74, - 1, 114, :_reduce_75, - 1, 114, :_reduce_76, - 1, 114, :_reduce_77, - 1, 114, :_reduce_78, - 1, 114, :_reduce_79, - 1, 114, :_reduce_80, - 1, 114, :_reduce_81, - 1, 114, :_reduce_82, - 1, 114, :_reduce_83, - 5, 119, :_reduce_84, - 4, 119, :_reduce_85, - 2, 119, :_reduce_86, - 5, 119, :_reduce_87, - 2, 119, :_reduce_88, - 1, 121, :_reduce_89, - 1, 121, :_reduce_90, - 1, 122, :_reduce_91, - 2, 122, :_reduce_92, - 3, 123, :_reduce_93, - 2, 124, :_reduce_94, - 1, 124, :_reduce_95, - 2, 124, :_reduce_96, - 1, 124, :_reduce_97, - 1, 125, :_reduce_98, - 3, 125, :_reduce_99, - 1, 126, :_reduce_100, - 3, 126, :_reduce_101, - 2, 126, :_reduce_102, - 5, 120, :_reduce_103, - 4, 120, :_reduce_104, - 6, 120, :_reduce_105, - 5, 120, :_reduce_106, - 2, 120, :_reduce_107, - 5, 120, :_reduce_108, - 6, 120, :_reduce_109, - 2, 120, :_reduce_110, - 1, 127, :_reduce_111, - 3, 127, :_reduce_112, - 1, 128, :_reduce_113, - 3, 128, :_reduce_114, - 1, 115, :_reduce_115, - 1, 115, :_reduce_116, - 1, 115, :_reduce_117, - 1, 116, :_reduce_118, - 2, 97, :_reduce_119, - 1, 97, :_reduce_120, - 1, 131, :_reduce_121, - 3, 131, :_reduce_122, - 5, 131, :_reduce_123, - 4, 131, :_reduce_124, - 4, 131, :_reduce_125, - 3, 131, :_reduce_126, - 6, 131, :_reduce_127, - 5, 131, :_reduce_128, - 6, 131, :_reduce_129, - 5, 131, :_reduce_130, - 4, 131, :_reduce_131, - 4, 131, :_reduce_132, - 4, 131, :_reduce_133, - 3, 131, :_reduce_134, - 2, 130, :_reduce_135, - 1, 130, :_reduce_136, - 3, 130, :_reduce_137, - 2, 130, :_reduce_138, - 1, 132, :_reduce_139, - 2, 132, :_reduce_140, - 1, 134, :_reduce_141, - 3, 134, :_reduce_142, - 1, 136, :_reduce_143, - 3, 136, :_reduce_144, - 2, 137, :_reduce_145, - 2, 137, :_reduce_146, - 1, 137, :_reduce_147, - 1, 135, :_reduce_148, - 3, 135, :_reduce_149, - 2, 139, :_reduce_150, - 1, 139, :_reduce_151, - 1, 138, :_reduce_152, - 2, 138, :_reduce_153, - 1, 138, :_reduce_154, - 3, 140, :_reduce_155, - 4, 140, :_reduce_156, - 3, 140, :_reduce_157, - 3, 140, :_reduce_158, - 2, 140, :_reduce_159, - 4, 140, :_reduce_160, - 3, 140, :_reduce_161, - 4, 140, :_reduce_162, - 3, 140, :_reduce_163, - 3, 140, :_reduce_164, - 2, 140, :_reduce_165, - 1, 108, :_reduce_166, - 1, 118, :_reduce_167, - 3, 118, :_reduce_168, - 4, 118, :_reduce_169, - 2, 141, :_reduce_170, - 1, 141, :_reduce_171, - 4, 141, :_reduce_172, - 3, 141, :_reduce_173, - 2, 142, :_reduce_174, - 1, 143, :_reduce_175, - 2, 143, :_reduce_176, - 3, 144, :_reduce_177, - 2, 144, :_reduce_178, - 1, 145, :_reduce_179, - 1, 145, :_reduce_180, - 1, 145, :_reduce_181, - 3, 145, :_reduce_182, - 3, 145, :_reduce_183, - 1, 148, :_reduce_184, - 4, 148, :_reduce_185, - 4, 148, :_reduce_186, - 3, 148, :_reduce_187, - 3, 148, :_reduce_188, - 3, 148, :_reduce_189, - 2, 148, :_reduce_190, - 2, 148, :_reduce_191, - 6, 148, :_reduce_192, - 7, 148, :_reduce_193, - 1, 149, :_reduce_194, - 3, 149, :_reduce_195, - 1, 150, :_reduce_196, - 1, 150, :_reduce_197, - 1, 151, :_reduce_198, - 2, 151, :_reduce_199, - 2, 151, :_reduce_200, - 2, 151, :_reduce_201, - 2, 151, :_reduce_202, - 4, 151, :_reduce_203, - 1, 152, :_reduce_204, - 1, 152, :_reduce_205, - 1, 152, :_reduce_206, - 1, 152, :_reduce_207, - 1, 152, :_reduce_208, - 1, 152, :_reduce_209, - 1, 153, :_reduce_210, - 4, 153, :_reduce_211, - 1, 154, :_reduce_212, - 3, 154, :_reduce_213, - 3, 154, :_reduce_214, - 3, 154, :_reduce_215, - 1, 155, :_reduce_216, - 3, 155, :_reduce_217, - 3, 155, :_reduce_218, - 1, 156, :_reduce_219, - 3, 156, :_reduce_220, - 3, 156, :_reduce_221, - 1, 157, :_reduce_222, - 3, 157, :_reduce_223, - 3, 157, :_reduce_224, - 3, 157, :_reduce_225, - 3, 157, :_reduce_226, - 1, 158, :_reduce_227, - 3, 158, :_reduce_228, - 3, 158, :_reduce_229, - 1, 159, :_reduce_230, - 3, 159, :_reduce_231, - 1, 160, :_reduce_232, - 3, 160, :_reduce_233, - 1, 161, :_reduce_234, - 3, 161, :_reduce_235, - 1, 162, :_reduce_236, - 3, 162, :_reduce_237, - 1, 163, :_reduce_238, - 3, 163, :_reduce_239, - 1, 164, :_reduce_240, - 5, 164, :_reduce_241, - 1, 133, :_reduce_242, - 3, 133, :_reduce_243, - 1, 165, :_reduce_244, - 1, 165, :_reduce_245, - 1, 165, :_reduce_246, - 1, 165, :_reduce_247, - 1, 165, :_reduce_248, - 1, 165, :_reduce_249, - 1, 165, :_reduce_250, - 1, 165, :_reduce_251, - 1, 165, :_reduce_252, - 1, 165, :_reduce_253, - 1, 165, :_reduce_254, - 1, 111, :_reduce_255, - 3, 111, :_reduce_256, - 1, 107, :_reduce_257, - 1, 106, :_reduce_258, - 1, 146, :_reduce_259, - 1, 146, :_reduce_260, - 1, 146, :_reduce_261, - 1, 129, :_reduce_262, - 2, 147, :_reduce_263, - 1, 147, :_reduce_264 ] - -racc_reduce_n = 265 - -racc_shift_n = 460 - -racc_token_table = { - false => 0, - :error => 1, - :COLON => 2, - :CASE => 3, - :DEFAULT => 4, - :LBRACE => 5, - :RBRACE => 6, - :SEMICOLON => 7, - :IF => 8, - :LPAREN => 9, - :RPAREN => 10, - :ELSE => 11, - :SWITCH => 12, - :WHILE => 13, - :DO => 14, - :FOR => 15, - :GOTO => 16, - :CONTINUE => 17, - :BREAK => 18, - :RETURN => 19, - :COMMA => 20, - :EQ => 21, - :TYPEDEF => 22, - :EXTERN => 23, - :STATIC => 24, - :AUTO => 25, - :REGISTER => 26, - :VOID => 27, - :CHAR => 28, - :SHORT => 29, - :INT => 30, - :LONG => 31, - :FLOAT => 32, - :DOUBLE => 33, - :SIGNED => 34, - :UNSIGNED => 35, - :BOOL => 36, - :COMPLEX => 37, - :IMAGINARY => 38, - :STRUCT => 39, - :UNION => 40, - :ENUM => 41, - :CONST => 42, - :RESTRICT => 43, - :VOLATILE => 44, - :INLINE => 45, - :LBRACKET => 46, - :RBRACKET => 47, - :MUL => 48, - :ELLIPSIS => 49, - :TYPENAME => 50, - :DOT => 51, - :ARROW => 52, - :INC => 53, - :DEC => 54, - :SIZEOF => 55, - :AND => 56, - :ADD => 57, - :SUB => 58, - :NOT => 59, - :BANG => 60, - :DIV => 61, - :MOD => 62, - :LSHIFT => 63, - :RSHIFT => 64, - :LT => 65, - :GT => 66, - :LEQ => 67, - :GEQ => 68, - :EQEQ => 69, - :NEQ => 70, - :XOR => 71, - :OR => 72, - :ANDAND => 73, - :OROR => 74, - :QUESTION => 75, - :MULEQ => 76, - :DIVEQ => 77, - :MODEQ => 78, - :ADDEQ => 79, - :SUBEQ => 80, - :LSHIFTEQ => 81, - :RSHIFTEQ => 82, - :ANDEQ => 83, - :XOREQ => 84, - :OREQ => 85, - :ID => 86, - :ICON => 87, - :FCON => 88, - :CCON => 89, - :SCON => 90 } - -racc_nt_base = 91 - -racc_use_result_var = true - -Racc_arg = [ - racc_action_table, - racc_action_check, - racc_action_default, - racc_action_pointer, - racc_goto_table, - racc_goto_check, - racc_goto_default, - racc_goto_pointer, - racc_nt_base, - racc_reduce_table, - racc_token_table, - racc_shift_n, - racc_reduce_n, - racc_use_result_var ] - -Racc_token_to_s_table = [ - "$end", - "error", - "COLON", - "CASE", - "DEFAULT", - "LBRACE", - "RBRACE", - "SEMICOLON", - "IF", - "LPAREN", - "RPAREN", - "ELSE", - "SWITCH", - "WHILE", - "DO", - "FOR", - "GOTO", - "CONTINUE", - "BREAK", - "RETURN", - "COMMA", - "EQ", - "TYPEDEF", - "EXTERN", - "STATIC", - "AUTO", - "REGISTER", - "VOID", - "CHAR", - "SHORT", - "INT", - "LONG", - "FLOAT", - "DOUBLE", - "SIGNED", - "UNSIGNED", - "BOOL", - "COMPLEX", - "IMAGINARY", - "STRUCT", - "UNION", - "ENUM", - "CONST", - "RESTRICT", - "VOLATILE", - "INLINE", - "LBRACKET", - "RBRACKET", - "MUL", - "ELLIPSIS", - "TYPENAME", - "DOT", - "ARROW", - "INC", - "DEC", - "SIZEOF", - "AND", - "ADD", - "SUB", - "NOT", - "BANG", - "DIV", - "MOD", - "LSHIFT", - "RSHIFT", - "LT", - "GT", - "LEQ", - "GEQ", - "EQEQ", - "NEQ", - "XOR", - "OR", - "ANDAND", - "OROR", - "QUESTION", - "MULEQ", - "DIVEQ", - "MODEQ", - "ADDEQ", - "SUBEQ", - "LSHIFTEQ", - "RSHIFTEQ", - "ANDEQ", - "XOREQ", - "OREQ", - "ID", - "ICON", - "FCON", - "CCON", - "SCON", - "$start", - "translation_unit", - "external_declaration", - "function_definition", - "declaration", - "declaration_specifiers", - "declarator", - "declaration_list", - "compound_statement", - "statement", - "labeled_statement", - "expression_statement", - "selection_statement", - "iteration_statement", - "jump_statement", - "identifier", - "constant_expression", - "typedef_name", - "block_item_list", - "block_item", - "expression", - "init_declarator_list", - "storage_class_specifier", - "type_specifier", - "type_qualifier", - "function_specifier", - "init_declarator", - "initializer", - "struct_or_union_specifier", - "enum_specifier", - "struct_or_union", - "struct_declaration_list", - "struct_declaration", - "specifier_qualifier_list", - "struct_declarator_list", - "struct_declarator", - "enumerator_list", - "enumerator", - "enumeration_constant", - "pointer", - "direct_declarator", - "type_qualifier_list", - "assignment_expression", - "parameter_type_list", - "identifier_list", - "parameter_list", - "parameter_declaration", - "abstract_declarator", - "type_name", - "direct_abstract_declarator", - "initializer_list", - "designation", - "designator_list", - "designator", - "primary_expression", - "constant", - "string_literal", - "postfix_expression", - "argument_expression_list", - "argument_expression", - "unary_expression", - "unary_operator", - "cast_expression", - "multiplicative_expression", - "additive_expression", - "shift_expression", - "relational_expression", - "equality_expression", - "and_expression", - "exclusive_or_expression", - "inclusive_or_expression", - "logical_and_expression", - "logical_or_expression", - "conditional_expression", - "assignment_operator" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'cast.y', 32) - def _reduce_1(val, _values, result) - result = TranslationUnit.new_at(val[0].pos, NodeChain[val[0]]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 33) - def _reduce_2(val, _values, result) - result = val[0]; result.entities << val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 37) - def _reduce_3(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 38) - def _reduce_4(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 42) - def _reduce_5(val, _values, result) - result = make_function_def(val[0][0], val[0][1], val[1], val[2], val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 43) - def _reduce_6(val, _values, result) - result = make_function_def(val[0][0], val[0][1], val[1], nil , val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 47) - def _reduce_7(val, _values, result) - result = [val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 48) - def _reduce_8(val, _values, result) - result = val[0] << val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 54) - def _reduce_9(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 55) - def _reduce_10(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 56) - def _reduce_11(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 57) - def _reduce_12(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 58) - def _reduce_13(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 59) - def _reduce_14(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 63) - def _reduce_15(val, _values, result) - val[2].labels.unshift(PlainLabel.new_at(val[0].pos, val[0].val)); result = val[2] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 64) - def _reduce_16(val, _values, result) - val[3].labels.unshift(Case .new_at(val[0].pos, val[1] )); result = val[3] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 65) - def _reduce_17(val, _values, result) - val[2].labels.unshift(Default .new_at(val[0].pos )); result = val[2] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 67) - def _reduce_18(val, _values, result) - val[2].labels.unshift(PlainLabel.new_at(val[0].pos, val[0].name)); result = val[2] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 71) - def _reduce_19(val, _values, result) - result = Block.new_at(val[0].pos, val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 72) - def _reduce_20(val, _values, result) - result = Block.new_at(val[0].pos ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 76) - def _reduce_21(val, _values, result) - result = NodeChain[val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 77) - def _reduce_22(val, _values, result) - result = val[0] << val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 81) - def _reduce_23(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 82) - def _reduce_24(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 86) - def _reduce_25(val, _values, result) - result = ExpressionStatement.new_at(val[0].pos, val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 87) - def _reduce_26(val, _values, result) - result = ExpressionStatement.new_at(val[0].pos ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 91) - def _reduce_27(val, _values, result) - result = If .new_at(val[0].pos, val[2], val[4] ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 92) - def _reduce_28(val, _values, result) - result = If .new_at(val[0].pos, val[2], val[4], val[6]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 93) - def _reduce_29(val, _values, result) - result = Switch.new_at(val[0].pos, val[2], val[4] ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 97) - def _reduce_30(val, _values, result) - result = While.new_at(val[0].pos, val[2], val[4] ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 98) - def _reduce_31(val, _values, result) - result = While.new_at(val[0].pos, val[4], val[1], :do => true ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 99) - def _reduce_32(val, _values, result) - result = For.new_at(val[0].pos, val[2], val[4], val[6], val[8]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 100) - def _reduce_33(val, _values, result) - result = For.new_at(val[0].pos, val[2], val[4], nil , val[7]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 101) - def _reduce_34(val, _values, result) - result = For.new_at(val[0].pos, val[2], nil , val[5], val[7]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 102) - def _reduce_35(val, _values, result) - result = For.new_at(val[0].pos, val[2], nil , nil , val[6]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 103) - def _reduce_36(val, _values, result) - result = For.new_at(val[0].pos, nil , val[3], val[5], val[7]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 104) - def _reduce_37(val, _values, result) - result = For.new_at(val[0].pos, nil , val[3], nil , val[6]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 105) - def _reduce_38(val, _values, result) - result = For.new_at(val[0].pos, nil , nil , val[4], val[6]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 106) - def _reduce_39(val, _values, result) - result = For.new_at(val[0].pos, nil , nil , nil , val[5]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 107) - def _reduce_40(val, _values, result) - result = For.new_at(val[0].pos, val[2], val[3], val[5], val[7]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 108) - def _reduce_41(val, _values, result) - result = For.new_at(val[0].pos, val[2], val[3], nil , val[6]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 109) - def _reduce_42(val, _values, result) - result = For.new_at(val[0].pos, val[2], nil , val[4], val[6]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 110) - def _reduce_43(val, _values, result) - result = For.new_at(val[0].pos, val[2], nil , nil , val[5]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 114) - def _reduce_44(val, _values, result) - result = Goto .new_at(val[0].pos, val[1].val) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 115) - def _reduce_45(val, _values, result) - result = Continue.new_at(val[0].pos ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 116) - def _reduce_46(val, _values, result) - result = Break .new_at(val[0].pos ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 117) - def _reduce_47(val, _values, result) - result = Return .new_at(val[0].pos, val[1] ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 118) - def _reduce_48(val, _values, result) - result = Return .new_at(val[0].pos ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 120) - def _reduce_49(val, _values, result) - result = Goto .new_at(val[0].pos, val[1].name) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 126) - def _reduce_50(val, _values, result) - result = make_declaration(val[0][0], val[0][1], val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 127) - def _reduce_51(val, _values, result) - result = make_declaration(val[0][0], val[0][1], NodeArray[]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 131) - def _reduce_52(val, _values, result) - val[1][1] << val[0][1]; result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 132) - def _reduce_53(val, _values, result) - result = [val[0][0], [val[0][1]]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 133) - def _reduce_54(val, _values, result) - val[1][1] << val[0][1]; result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 134) - def _reduce_55(val, _values, result) - result = [val[0][0], [val[0][1]]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 135) - def _reduce_56(val, _values, result) - val[1][1] << val[0][1]; result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 136) - def _reduce_57(val, _values, result) - result = [val[0][0], [val[0][1]]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 137) - def _reduce_58(val, _values, result) - val[1][1] << val[0][1]; result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 138) - def _reduce_59(val, _values, result) - result = [val[0][0], [val[0][1]]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 142) - def _reduce_60(val, _values, result) - result = NodeArray[val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 143) - def _reduce_61(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 147) - def _reduce_62(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 148) - def _reduce_63(val, _values, result) - val[0].init = val[2]; result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 152) - def _reduce_64(val, _values, result) - result = [val[0].pos, :typedef ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 153) - def _reduce_65(val, _values, result) - result = [val[0].pos, :extern ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 154) - def _reduce_66(val, _values, result) - result = [val[0].pos, :static ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 155) - def _reduce_67(val, _values, result) - result = [val[0].pos, :auto ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 156) - def _reduce_68(val, _values, result) - result = [val[0].pos, :register] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 160) - def _reduce_69(val, _values, result) - result = [val[0].pos, :void ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 161) - def _reduce_70(val, _values, result) - result = [val[0].pos, :char ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 162) - def _reduce_71(val, _values, result) - result = [val[0].pos, :short ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 163) - def _reduce_72(val, _values, result) - result = [val[0].pos, :int ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 164) - def _reduce_73(val, _values, result) - result = [val[0].pos, :long ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 165) - def _reduce_74(val, _values, result) - result = [val[0].pos, :float ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 166) - def _reduce_75(val, _values, result) - result = [val[0].pos, :double ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 167) - def _reduce_76(val, _values, result) - result = [val[0].pos, :signed ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 168) - def _reduce_77(val, _values, result) - result = [val[0].pos, :unsigned ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 169) - def _reduce_78(val, _values, result) - result = [val[0].pos, :_Bool ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 170) - def _reduce_79(val, _values, result) - result = [val[0].pos, :_Complex ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 171) - def _reduce_80(val, _values, result) - result = [val[0].pos, :_Imaginary] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 172) - def _reduce_81(val, _values, result) - result = [val[0].pos, val[0] ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 173) - def _reduce_82(val, _values, result) - result = [val[0].pos, val[0] ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 174) - def _reduce_83(val, _values, result) - result = [val[0].pos, val[0] ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 178) - def _reduce_84(val, _values, result) - result = val[0][1].new_at(val[0][0], val[1].val, val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 179) - def _reduce_85(val, _values, result) - result = val[0][1].new_at(val[0][0], nil , val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 180) - def _reduce_86(val, _values, result) - result = val[0][1].new_at(val[0][0], val[1].val, nil ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 182) - def _reduce_87(val, _values, result) - result = val[0][1].new_at(val[0][0], val[1].name, val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 183) - def _reduce_88(val, _values, result) - result = val[0][1].new_at(val[0][0], val[1].name, nil ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 187) - def _reduce_89(val, _values, result) - result = [val[0].pos, Struct] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 188) - def _reduce_90(val, _values, result) - result = [val[0].pos, Union ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 192) - def _reduce_91(val, _values, result) - result = NodeArray[val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 193) - def _reduce_92(val, _values, result) - val[0] << val[1]; result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 197) - def _reduce_93(val, _values, result) - result = make_declaration(val[0][0], val[0][1], val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 201) - def _reduce_94(val, _values, result) - val[1][1] << val[0][1]; result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 202) - def _reduce_95(val, _values, result) - result = [val[0][0], [val[0][1]]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 203) - def _reduce_96(val, _values, result) - val[1][1] << val[0][1]; result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 204) - def _reduce_97(val, _values, result) - result = [val[0][0], [val[0][1]]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 208) - def _reduce_98(val, _values, result) - result = NodeArray[val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 209) - def _reduce_99(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 213) - def _reduce_100(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 214) - def _reduce_101(val, _values, result) - result = val[0]; val[0].num_bits = val[2] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 215) - def _reduce_102(val, _values, result) - result = Declarator.new_at(val[0].pos, :num_bits => val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 219) - def _reduce_103(val, _values, result) - result = Enum.new_at(val[0].pos, val[1].val, val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 220) - def _reduce_104(val, _values, result) - result = Enum.new_at(val[0].pos, nil , val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 221) - def _reduce_105(val, _values, result) - result = Enum.new_at(val[0].pos, val[1].val, val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 222) - def _reduce_106(val, _values, result) - result = Enum.new_at(val[0].pos, nil , val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 223) - def _reduce_107(val, _values, result) - result = Enum.new_at(val[0].pos, val[1].val, nil ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 225) - def _reduce_108(val, _values, result) - result = Enum.new_at(val[0].pos, val[1].name, val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 226) - def _reduce_109(val, _values, result) - result = Enum.new_at(val[0].pos, val[1].name, val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 227) - def _reduce_110(val, _values, result) - result = Enum.new_at(val[0].pos, val[1].name, nil ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 231) - def _reduce_111(val, _values, result) - result = NodeArray[val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 232) - def _reduce_112(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 236) - def _reduce_113(val, _values, result) - result = Enumerator.new_at(val[0].pos, val[0].val, nil ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 237) - def _reduce_114(val, _values, result) - result = Enumerator.new_at(val[0].pos, val[0].val, val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 241) - def _reduce_115(val, _values, result) - result = [val[0].pos, :const ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 242) - def _reduce_116(val, _values, result) - result = [val[0].pos, :restrict] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 243) - def _reduce_117(val, _values, result) - result = [val[0].pos, :volatile] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 247) - def _reduce_118(val, _values, result) - result = [val[0].pos, :inline] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 251) - def _reduce_119(val, _values, result) - result = add_decl_type(val[1], val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 252) - def _reduce_120(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 256) - def _reduce_121(val, _values, result) - result = Declarator.new_at(val[0].pos, nil, val[0].val) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 257) - def _reduce_122(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 258) - def _reduce_123(val, _values, result) - result = add_decl_type(val[0], Array.new_at(val[0].pos )) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 259) - def _reduce_124(val, _values, result) - result = add_decl_type(val[0], Array.new_at(val[0].pos )) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 260) - def _reduce_125(val, _values, result) - result = add_decl_type(val[0], Array.new_at(val[0].pos, nil, val[2])) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 261) - def _reduce_126(val, _values, result) - result = add_decl_type(val[0], Array.new_at(val[0].pos )) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 262) - def _reduce_127(val, _values, result) - result = add_decl_type(val[0], Array.new_at(val[0].pos )) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 263) - def _reduce_128(val, _values, result) - result = add_decl_type(val[0], Array.new_at(val[0].pos )) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 264) - def _reduce_129(val, _values, result) - result = add_decl_type(val[0], Array.new_at(val[0].pos )) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 265) - def _reduce_130(val, _values, result) - result = add_decl_type(val[0], Array.new_at(val[0].pos )) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 266) - def _reduce_131(val, _values, result) - result = add_decl_type(val[0], Array.new_at(val[0].pos )) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 267) - def _reduce_132(val, _values, result) - result = add_decl_type(val[0], Function.new_at(val[0].pos, nil, param_list(*val[2]), :var_args => val[2][1])) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 268) - def _reduce_133(val, _values, result) - result = add_decl_type(val[0], Function.new_at(val[0].pos, nil, val[2])) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 269) - def _reduce_134(val, _values, result) - result = add_decl_type(val[0], Function.new_at(val[0].pos )) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 273) - def _reduce_135(val, _values, result) - result = add_type_quals(Pointer.new_at(val[0].pos), val[1][1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 274) - def _reduce_136(val, _values, result) - result = Pointer.new_at(val[0].pos) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 275) - def _reduce_137(val, _values, result) - p = add_type_quals(Pointer.new_at(val[0].pos), val[1][1]); val[2].direct_type = p; result = val[2] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 276) - def _reduce_138(val, _values, result) - p = Pointer.new_at(val[0].pos) ; val[1].direct_type = p; result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 280) - def _reduce_139(val, _values, result) - result = [val[0][0], [val[0][1]]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 281) - def _reduce_140(val, _values, result) - val[0][1] << val[1][1]; result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 285) - def _reduce_141(val, _values, result) - result = [val[0], false] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 286) - def _reduce_142(val, _values, result) - result = [val[0], true ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 290) - def _reduce_143(val, _values, result) - result = NodeArray[val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 291) - def _reduce_144(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 295) - def _reduce_145(val, _values, result) - ind_type = val[1].indirect_type and ind_type.detach - result = make_parameter(val[0][0], val[0][1], ind_type, val[1].name) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 297) - def _reduce_146(val, _values, result) - result = make_parameter(val[0][0], val[0][1], val[1] , nil ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 298) - def _reduce_147(val, _values, result) - result = make_parameter(val[0][0], val[0][1], nil , nil ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 302) - def _reduce_148(val, _values, result) - result = NodeArray[Parameter.new_at(val[0].pos, nil, val[0].val)] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 303) - def _reduce_149(val, _values, result) - result = val[0] << Parameter.new_at(val[2].pos, nil, val[2].val) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 307) - def _reduce_150(val, _values, result) - val[1].direct_type = make_direct_type(val[0][0], val[0][1]); result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 308) - def _reduce_151(val, _values, result) - result = make_direct_type(val[0][0], val[0][1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 312) - def _reduce_152(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 313) - def _reduce_153(val, _values, result) - val[1].direct_type = val[0]; result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 314) - def _reduce_154(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 318) - def _reduce_155(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 319) - def _reduce_156(val, _values, result) - val[0].direct_type = Array.new_at(val[0].pos, nil, val[2]); result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 320) - def _reduce_157(val, _values, result) - val[0].direct_type = Array.new_at(val[0].pos, nil, nil ); result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 321) - def _reduce_158(val, _values, result) - result = Array.new_at(val[0].pos, nil, val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 322) - def _reduce_159(val, _values, result) - result = Array.new_at(val[0].pos ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 323) - def _reduce_160(val, _values, result) - val[0].direct_type = Array.new_at(val[0].pos); result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 324) - def _reduce_161(val, _values, result) - result = Array.new_at(val[0].pos) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 325) - def _reduce_162(val, _values, result) - val[0].direct_type = Function.new_at(val[0].pos, nil, param_list(*val[2]), val[2][1]); result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 326) - def _reduce_163(val, _values, result) - val[0].direct_type = Function.new_at(val[0].pos ); result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 327) - def _reduce_164(val, _values, result) - result = Function.new_at(val[0].pos, nil, param_list(*val[1]), val[1][1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 328) - def _reduce_165(val, _values, result) - result = Function.new_at(val[0].pos ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 334) - def _reduce_166(val, _values, result) - result = CustomType.new_at(val[0].pos, val[0].val) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 338) - def _reduce_167(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 339) - def _reduce_168(val, _values, result) - result = CompoundLiteral.new_at(val[0].pos, nil, val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 340) - def _reduce_169(val, _values, result) - result = CompoundLiteral.new_at(val[0].pos, nil, val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 344) - def _reduce_170(val, _values, result) - result = NodeArray[MemberInit.new_at(val[0][0] , val[0][1], val[1])] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 345) - def _reduce_171(val, _values, result) - result = NodeArray[MemberInit.new_at(val[0].pos, nil , val[0])] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 346) - def _reduce_172(val, _values, result) - result = val[0] << MemberInit.new_at(val[2][0] , val[2][1], val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 347) - def _reduce_173(val, _values, result) - result = val[0] << MemberInit.new_at(val[2].pos, nil , val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 351) - def _reduce_174(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 355) - def _reduce_175(val, _values, result) - result = val[0]; val[0][1] = NodeArray[val[0][1]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 356) - def _reduce_176(val, _values, result) - result = val[0]; val[0][1] << val[1][1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 360) - def _reduce_177(val, _values, result) - result = [val[1].pos, val[1] ] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 361) - def _reduce_178(val, _values, result) - result = [val[1].pos, Member.new_at(val[1].pos, val[1].val)] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 367) - def _reduce_179(val, _values, result) - result = Variable.new_at(val[0].pos, val[0].val) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 368) - def _reduce_180(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 369) - def _reduce_181(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 371) - def _reduce_182(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 372) - def _reduce_183(val, _values, result) - block_expressions_enabled? or parse_error val[0].pos, "compound statement found where expression expected" - result = BlockExpression.new(val[1]); result.pos = val[0].pos - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 377) - def _reduce_184(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 378) - def _reduce_185(val, _values, result) - result = Index .new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 379) - def _reduce_186(val, _values, result) - result = Call .new_at(val[0].pos, val[0], val[2] ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 380) - def _reduce_187(val, _values, result) - result = Call .new_at(val[0].pos, val[0], NodeArray[]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 381) - def _reduce_188(val, _values, result) - result = Dot .new_at(val[0].pos, val[0], Member.new(val[2].val)) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 382) - def _reduce_189(val, _values, result) - result = Arrow .new_at(val[0].pos, val[0], Member.new(val[2].val)) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 383) - def _reduce_190(val, _values, result) - result = PostInc .new_at(val[0].pos, val[0] ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 384) - def _reduce_191(val, _values, result) - result = PostDec .new_at(val[0].pos, val[0] ) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 385) - def _reduce_192(val, _values, result) - result = CompoundLiteral.new_at(val[0].pos, val[1], val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 386) - def _reduce_193(val, _values, result) - result = CompoundLiteral.new_at(val[0].pos, val[1], val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 390) - def _reduce_194(val, _values, result) - result = NodeArray[val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 391) - def _reduce_195(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 395) - def _reduce_196(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 396) - def _reduce_197(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 400) - def _reduce_198(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 401) - def _reduce_199(val, _values, result) - result = PreInc.new_at(val[0].pos, val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 402) - def _reduce_200(val, _values, result) - result = PreDec.new_at(val[0].pos, val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 403) - def _reduce_201(val, _values, result) - result = val[0][0].new_at(val[0][1], val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 404) - def _reduce_202(val, _values, result) - result = Sizeof.new_at(val[0].pos, val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 405) - def _reduce_203(val, _values, result) - result = Sizeof.new_at(val[0].pos, val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 409) - def _reduce_204(val, _values, result) - result = [Address , val[0].pos] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 410) - def _reduce_205(val, _values, result) - result = [Dereference, val[0].pos] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 411) - def _reduce_206(val, _values, result) - result = [Positive , val[0].pos] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 412) - def _reduce_207(val, _values, result) - result = [Negative , val[0].pos] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 413) - def _reduce_208(val, _values, result) - result = [BitNot , val[0].pos] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 414) - def _reduce_209(val, _values, result) - result = [Not , val[0].pos] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 418) - def _reduce_210(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 419) - def _reduce_211(val, _values, result) - result = Cast.new_at(val[0].pos, val[1], val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 423) - def _reduce_212(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 424) - def _reduce_213(val, _values, result) - result = Multiply.new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 425) - def _reduce_214(val, _values, result) - result = Divide .new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 426) - def _reduce_215(val, _values, result) - result = Mod .new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 430) - def _reduce_216(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 431) - def _reduce_217(val, _values, result) - result = Add .new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 432) - def _reduce_218(val, _values, result) - result = Subtract.new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 436) - def _reduce_219(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 437) - def _reduce_220(val, _values, result) - result = ShiftLeft .new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 438) - def _reduce_221(val, _values, result) - result = ShiftRight.new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 442) - def _reduce_222(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 443) - def _reduce_223(val, _values, result) - result = Less.new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 444) - def _reduce_224(val, _values, result) - result = More.new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 445) - def _reduce_225(val, _values, result) - result = LessOrEqual.new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 446) - def _reduce_226(val, _values, result) - result = MoreOrEqual.new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 450) - def _reduce_227(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 451) - def _reduce_228(val, _values, result) - result = Equal .new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 452) - def _reduce_229(val, _values, result) - result = NotEqual.new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 456) - def _reduce_230(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 457) - def _reduce_231(val, _values, result) - result = BitAnd.new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 461) - def _reduce_232(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 462) - def _reduce_233(val, _values, result) - result = BitXor.new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 466) - def _reduce_234(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 467) - def _reduce_235(val, _values, result) - result = BitOr.new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 471) - def _reduce_236(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 472) - def _reduce_237(val, _values, result) - result = And.new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 476) - def _reduce_238(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 477) - def _reduce_239(val, _values, result) - result = Or.new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 481) - def _reduce_240(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 482) - def _reduce_241(val, _values, result) - result = Conditional.new_at(val[0].pos, val[0], val[2], val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 486) - def _reduce_242(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 487) - def _reduce_243(val, _values, result) - result = val[1].new_at(val[0].pos, val[0], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 491) - def _reduce_244(val, _values, result) - result = Assign - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 492) - def _reduce_245(val, _values, result) - result = MultiplyAssign - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 493) - def _reduce_246(val, _values, result) - result = DivideAssign - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 494) - def _reduce_247(val, _values, result) - result = ModAssign - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 495) - def _reduce_248(val, _values, result) - result = AddAssign - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 496) - def _reduce_249(val, _values, result) - result = SubtractAssign - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 497) - def _reduce_250(val, _values, result) - result = ShiftLeftAssign - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 498) - def _reduce_251(val, _values, result) - result = ShiftRightAssign - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 499) - def _reduce_252(val, _values, result) - result = BitAndAssign - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 500) - def _reduce_253(val, _values, result) - result = BitXorAssign - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 501) - def _reduce_254(val, _values, result) - result = BitOrAssign - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 505) - def _reduce_255(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 507) - def _reduce_256(val, _values, result) - if val[0].is_a? Comma - if val[2].is_a? Comma - val[0].exprs.push(*val[2].exprs) - else - val[0].exprs << val[2] - end - result = val[0] - else - if val[2].is_a? Comma - val[2].exprs.unshift(val[0]) - val[2].pos = val[0].pos - result = val[2] - else - result = Comma.new_at(val[0].pos, NodeArray[val[0], val[2]]) - end - end - - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 527) - def _reduce_257(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 542) - def _reduce_258(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 546) - def _reduce_259(val, _values, result) - result = val[0].val; result.pos = val[0].pos - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 547) - def _reduce_260(val, _values, result) - result = val[0].val; result.pos = val[0].pos - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 550) - def _reduce_261(val, _values, result) - result = val[0].val; result.pos = val[0].pos - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 554) - def _reduce_262(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 559) - def _reduce_263(val, _values, result) - val[0].val << val[1].val.val; result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'cast.y', 560) - def _reduce_264(val, _values, result) - result = val[0].val; result.pos = val[0].pos - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser -end # module C diff --git a/test/racc/regress/csspool b/test/racc/regress/csspool deleted file mode 100644 index a3d14a9b34..0000000000 --- a/test/racc/regress/csspool +++ /dev/null @@ -1,2314 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' -module CSSPool - module CSS - class Parser < Racc::Parser - -module_eval(<<'...end csspool.y/module_eval...', 'csspool.y', 670) - -def numeric thing - thing = thing.gsub(/[^\d.]/, '') - Integer(thing) rescue Float(thing) -end - -def interpret_identifier s - interpret_escapes s -end - -def interpret_uri s - interpret_escapes s.match(/^url\((.*)\)$/mui)[1].strip.match(/^(['"]?)((?:\\.|.)*)\1$/mu)[2] -end - -def interpret_string_no_quote s - interpret_escapes s.match(/^(.*)\)$/mu)[1].strip.match(/^(['"]?)((?:\\.|.)*)\1$/mu)[2] -end - -def interpret_string s - interpret_escapes s.match(/^(['"])((?:\\.|.)*)\1$/mu)[2] -end - -def interpret_escapes s - token_exp = /\\(?:([0-9a-fA-F]{1,6}(?:\r\n|\s)?)|(.))/mu - return s.gsub(token_exp) do |escape_sequence| - if !$1.nil? - code = $1.chomp.to_i 16 - code = 0xFFFD if code > 0x10FFFF - next [code].pack('U') - end - next '' if $2 == "\n" - next $2 - end -end - -# override racc's on_error so we can have context in our error messages -def on_error(t, val, vstack) - errcontext = (@ss.pre_match[-10..-1] || @ss.pre_match) + - @ss.matched + @ss.post_match[0..9] - line_number = @ss.pre_match.lines.count - raise ParseError, sprintf("parse error on value %s (%s) " + - "on line %s around \"%s\"", - val.inspect, token_to_str(t) || '?', - line_number, errcontext) -end - -def before_pos(val) - # don't include leading whitespace - return current_pos - val.last.length + val.last[/\A\s*/].size -end - -def after_pos(val) - # don't include trailing whitespace - return current_pos - val.last[/\s*\z/].size -end - -# charpos will work with multibyte strings but is not available until ruby 2 -def current_pos - @ss.respond_to?('charpos') ? @ss.charpos : @ss.pos -end -...end csspool.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - 9, 10, 137, 129, 37, 31, 55, 139, 130, 39, - 45, 47, 45, 47, 123, 9, 10, 103, 3, 37, - 31, 98, 229, 103, 39, 45, 47, 230, 124, 125, - 224, 20, 113, 56, 37, 31, 23, 114, 104, 39, - 45, 47, 245, 27, 104, 11, 20, 126, 48, 25, - 48, 23, 242, 29, 138, 244, 38, 46, 27, 46, - 11, 108, 113, 48, 25, 9, 10, 114, 29, 37, - 31, 38, 46, 223, 39, 45, 47, 49, 48, 115, - 9, 10, 108, 113, 37, 31, 38, 46, 114, 39, - 45, 47, 55, 339, 243, 155, 20, 108, 113, 37, - 31, 23, 107, 114, 39, 45, 47, 231, 27, 115, - 11, 20, 232, 48, 25, 55, 23, 59, 29, 56, - 344, 38, 46, 27, 340, 11, 20, 53, 48, 25, - 115, 23, 345, 29, 37, 31, 38, 46, 27, 39, - 45, 47, 56, 48, 25, 115, -28, 105, 29, 37, - 31, 38, 46, 116, 39, 45, 47, 250, 75, 120, - 251, 20, 108, 113, 37, 31, 23, 118, 114, 39, - 45, 47, 121, 27, 74, 73, 20, 313, 48, 25, - 314, 23, 128, 29, 108, 113, 38, 46, 27, 215, - 114, 20, 131, 48, 25, 75, 23, 136, 29, 37, - 64, 38, 46, 27, 39, 45, 47, 92, 48, 25, - 115, 74, 73, 29, 37, 31, 38, 46, 77, 39, - 45, 47, 148, 94, 103, 156, 20, -89, 83, 37, - 31, 23, 115, 87, 39, 45, 47, 160, 27, 85, - 153, 20, 151, 48, 25, 104, 23, 84, 29, 157, - 158, 38, 46, 27, 163, 252, 20, 151, 48, 25, - 201, 23, 164, 29, 37, 31, 38, 46, 27, 39, - 45, 47, 203, 48, 25, 188, 202, 59, 29, 37, - 165, 38, 46, 187, 39, 45, 47, 201, 204, 166, - 184, 83, 288, 198, 287, 190, 197, 192, 191, 193, - 194, 195, 85, 202, 37, 45, 47, 37, 48, 39, - 45, 47, 39, 45, 47, 167, 38, 46, 168, 83, - 170, 113, 210, 48, 181, 186, 114, 185, 196, 37, - 85, 38, 46, 92, 39, 45, 47, 203, 84, 150, - 152, 151, 289, 48, 290, 292, 163, 291, 48, 94, - -33, 48, 46, 204, 169, 199, 38, 46, 37, 38, - 46, 200, -33, 39, 45, 47, 92, 188, 115, 59, - 294, 258, 293, 48, 296, 187, 295, 298, 260, 297, - 212, 38, 46, 83, 216, 198, 259, 190, 197, 192, - 191, 193, 194, 195, 85, 45, 47, 45, 47, 45, - 47, 217, 48, 218, 219, 188, 108, 59, 285, 108, - 38, 46, 170, 187, 225, 226, 181, 186, 233, 185, - 196, 83, 129, 198, 234, 190, 197, 192, 191, 193, - 194, 195, 85, 48, 163, 48, 255, 48, 256, 155, - 263, 169, 46, 188, 46, 59, 46, 264, 168, 265, - 170, 187, 266, 92, 181, 186, 92, 185, 196, 83, - 92, 198, 92, 190, 197, 192, 191, 193, 194, 195, - 85, 198, 278, 190, 197, 192, 191, 193, 194, 195, - 279, 188, 281, 59, 241, 235, 236, 237, 170, 187, - 286, 229, 181, 186, 231, 185, 196, 83, 163, 198, - 300, 190, 197, 192, 191, 193, 194, 195, 85, 301, - 302, 238, 239, 240, 303, 306, 307, 255, 141, 188, - 75, 59, 322, 163, 185, 168, 170, 187, 312, 317, - 181, 186, 143, 185, 196, 83, 319, 198, 323, 190, - 197, 192, 191, 193, 194, 195, 85, 324, 325, 145, - 326, 327, 328, 329, 330, 331, 144, 188, 146, 59, - 147, 332, 142, 333, 170, 187, 334, 306, 181, 186, - 163, 185, 196, 83, 338, 198, 163, 190, 197, 192, - 191, 193, 194, 195, 85, 346, 319, 319, 163, 351, - 306, 163, 319, 357, 359, 188, nil, 59, nil, nil, - nil, nil, 170, 187, nil, nil, 181, 186, nil, 185, - 196, 83, nil, 198, nil, 190, 197, 192, 191, 193, - 194, 195, 85, 272, nil, 83, nil, 198, nil, 190, - 197, 192, 191, 193, 194, 195, nil, nil, nil, nil, - 170, nil, nil, nil, 181, 186, nil, 185, 196, 272, - nil, 83, nil, 198, nil, 190, 197, 192, 191, 193, - 194, 195, 272, nil, 83, nil, 198, nil, 190, 197, - 192, 191, 193, 194, 195, 272, nil, 83, nil, 198, - nil, 190, 197, 192, 191, 193, 194, 195, 272, nil, - 83, nil, 198, nil, 190, 197, 192, 191, 193, 194, - 195, 272, nil, 83, nil, 198, nil, 190, 197, 192, - 191, 193, 194, 195 ] - -racc_action_check = [ - 2, 2, 47, 38, 2, 2, 10, 47, 38, 2, - 2, 2, 35, 35, 34, 5, 5, 26, 1, 5, - 5, 26, 128, 217, 5, 5, 5, 128, 34, 34, - 112, 2, 210, 10, 31, 31, 2, 210, 26, 31, - 31, 31, 143, 2, 217, 2, 5, 34, 2, 2, - 35, 5, 142, 2, 47, 143, 2, 2, 5, 35, - 5, 110, 110, 5, 5, 6, 6, 110, 5, 6, - 6, 5, 5, 112, 6, 6, 6, 3, 31, 210, - 7, 7, 221, 221, 7, 7, 31, 31, 221, 7, - 7, 7, 58, 309, 142, 58, 6, 28, 28, 12, - 12, 6, 28, 28, 12, 12, 12, 131, 6, 110, - 6, 7, 131, 6, 6, 11, 7, 11, 6, 58, - 315, 6, 6, 7, 309, 7, 12, 9, 7, 7, - 221, 12, 315, 7, 13, 13, 7, 7, 12, 13, - 13, 13, 11, 12, 12, 28, 20, 27, 12, 14, - 14, 12, 12, 29, 14, 14, 14, 149, 20, 32, - 149, 13, 30, 30, 15, 15, 13, 30, 30, 15, - 15, 15, 33, 13, 20, 20, 14, 269, 13, 13, - 269, 14, 37, 13, 100, 100, 13, 13, 14, 100, - 100, 15, 39, 14, 14, 157, 15, 46, 14, 19, - 19, 14, 14, 15, 19, 19, 19, 25, 15, 15, - 30, 157, 157, 15, 21, 21, 15, 15, 21, 21, - 21, 21, 53, 25, 99, 67, 19, 99, 22, 24, - 24, 19, 100, 24, 24, 24, 24, 71, 19, 22, - 57, 21, 57, 19, 19, 99, 21, 22, 19, 70, - 70, 19, 19, 21, 75, 154, 24, 154, 21, 21, - 90, 24, 76, 21, 64, 64, 21, 21, 24, 64, - 64, 64, 91, 24, 24, 83, 90, 83, 24, 121, - 78, 24, 24, 83, 121, 121, 121, 206, 91, 79, - 83, 83, 235, 83, 235, 83, 83, 83, 83, 83, - 83, 83, 83, 206, 122, 41, 41, 144, 64, 122, - 122, 122, 144, 144, 144, 80, 64, 64, 81, 166, - 83, 92, 92, 121, 83, 83, 92, 83, 83, 146, - 166, 121, 121, 92, 146, 146, 146, 207, 166, 54, - 54, 54, 236, 41, 236, 237, 270, 237, 122, 92, - 270, 144, 41, 207, 82, 86, 122, 122, 302, 144, - 144, 88, 270, 302, 302, 302, 94, 171, 92, 171, - 238, 171, 238, 146, 239, 171, 239, 240, 171, 240, - 97, 146, 146, 171, 101, 171, 171, 171, 171, 171, - 171, 171, 171, 171, 171, 42, 42, 43, 43, 44, - 44, 102, 302, 105, 106, 223, 108, 223, 223, 109, - 302, 302, 171, 223, 114, 117, 171, 171, 137, 171, - 171, 223, 138, 223, 139, 223, 223, 223, 223, 223, - 223, 223, 223, 42, 147, 43, 161, 44, 162, 172, - 175, 176, 42, 261, 43, 261, 44, 177, 179, 183, - 223, 261, 185, 201, 223, 223, 202, 223, 223, 261, - 203, 261, 204, 261, 261, 261, 261, 261, 261, 261, - 261, 189, 208, 189, 189, 189, 189, 189, 189, 189, - 209, 285, 214, 285, 140, 140, 140, 140, 261, 285, - 224, 233, 261, 261, 234, 261, 261, 285, 243, 285, - 245, 285, 285, 285, 285, 285, 285, 285, 285, 246, - 247, 140, 140, 140, 248, 249, 251, 254, 48, 286, - 255, 286, 286, 256, 266, 267, 285, 286, 268, 280, - 285, 285, 48, 285, 285, 286, 284, 286, 287, 286, - 286, 286, 286, 286, 286, 286, 286, 288, 289, 48, - 290, 291, 292, 293, 294, 295, 48, 322, 48, 322, - 48, 296, 48, 297, 286, 322, 298, 299, 286, 286, - 304, 286, 286, 322, 306, 322, 312, 322, 322, 322, - 322, 322, 322, 322, 322, 316, 320, 321, 335, 337, - 338, 340, 349, 350, 358, 353, nil, 353, nil, nil, - nil, nil, 322, 353, nil, nil, 322, 322, nil, 322, - 322, 353, nil, 353, nil, 353, 353, 353, 353, 353, - 353, 353, 353, 186, nil, 186, nil, 186, nil, 186, - 186, 186, 186, 186, 186, 186, nil, nil, nil, nil, - 353, nil, nil, nil, 353, 353, nil, 353, 353, 272, - nil, 272, nil, 272, nil, 272, 272, 272, 272, 272, - 272, 272, 313, nil, 313, nil, 313, nil, 313, 313, - 313, 313, 313, 313, 313, 314, nil, 314, nil, 314, - nil, 314, 314, 314, 314, 314, 314, 314, 344, nil, - 344, nil, 344, nil, 344, 344, 344, 344, 344, 344, - 344, 345, nil, 345, nil, 345, nil, 345, 345, 345, - 345, 345, 345, 345 ] - -racc_action_pointer = [ - nil, 18, -2, 77, nil, 13, 63, 78, nil, 123, - 2, 111, 93, 128, 143, 158, nil, nil, nil, 193, - 140, 208, 208, nil, 223, 189, 11, 141, 92, 144, - 157, 28, 150, 164, 7, 0, nil, 124, -3, 134, - nil, 293, 383, 385, 387, nil, 191, -4, 512, nil, - nil, nil, nil, 217, 334, nil, nil, 235, 88, nil, - nil, nil, nil, nil, 258, nil, nil, 215, nil, nil, - 241, 231, nil, nil, nil, 247, 252, nil, 271, 281, - 308, 311, 347, 271, nil, nil, 345, nil, 352, nil, - 224, 236, 315, nil, 348, nil, nil, 370, nil, 218, - 179, 375, 393, nil, nil, 394, 394, nil, 401, 404, - 56, nil, 23, nil, 408, nil, nil, 405, nil, nil, - nil, 273, 298, nil, nil, nil, nil, nil, 16, nil, - nil, 101, nil, nil, nil, nil, nil, 360, 416, 366, - 470, nil, 46, 36, 301, nil, 323, 427, nil, 152, - nil, nil, nil, nil, 250, nil, nil, 177, nil, nil, - nil, 400, 432, nil, nil, nil, 299, nil, nil, nil, - nil, 363, 432, nil, nil, 433, 434, 440, nil, 441, - nil, nil, nil, 430, nil, 444, 605, nil, nil, 449, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 435, 438, 442, 444, nil, 251, 301, 453, 461, - 26, nil, nil, nil, 472, nil, nil, 17, nil, nil, - nil, 77, nil, 401, 440, nil, nil, nil, nil, nil, - nil, nil, nil, 485, 488, 288, 338, 341, 366, 370, - 373, nil, nil, 491, nil, 481, 490, 502, 495, 509, - nil, 510, nil, nil, 481, 502, 516, nil, nil, nil, - nil, 439, nil, nil, nil, nil, 468, 518, 509, 155, - 339, nil, 631, nil, nil, nil, nil, nil, nil, nil, - 510, nil, nil, nil, 504, 477, 515, 524, 533, 534, - 536, 537, 538, 539, 540, 541, 547, 549, 552, 561, - nil, nil, 352, nil, 563, nil, 566, nil, nil, 74, - nil, nil, 569, 644, 657, 109, 566, nil, nil, nil, - 554, 555, 553, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 581, nil, 570, 584, nil, - 584, nil, nil, nil, 670, 683, nil, nil, nil, 560, - 574, nil, nil, 591, nil, nil, nil, nil, 575, nil ] - -racc_action_default = [ - -1, -229, -10, -229, -2, -6, -7, -8, -9, -229, - -229, -229, -41, -42, -43, -44, -45, -46, -47, -33, - -23, -229, -229, -55, -229, -229, -89, -229, -229, -229, - -229, -229, -229, -103, -105, -111, -112, -115, -229, -120, - -119, -124, -125, -126, -127, -132, -229, -229, -229, 360, - -3, -4, -5, -229, -229, -15, -16, -229, -229, -228, - -37, -38, -39, -40, -32, -48, -49, -229, -99, -21, - -229, -229, -35, -26, -27, -33, -229, -53, -229, -57, - -58, -59, -60, -229, -198, -214, -229, -62, -229, -64, - -65, -66, -229, -71, -229, -73, -74, -229, -82, -85, - -229, -229, -91, -92, -93, -229, -229, -95, -160, -165, - -166, -167, -229, -174, -229, -176, -96, -229, -98, -100, - -101, -229, -229, -106, -107, -108, -109, -110, -229, -117, - -121, -229, -128, -129, -130, -131, -133, -115, -229, -229, - -229, -147, -229, -229, -229, -152, -229, -33, -11, -229, - -13, -14, -20, -18, -229, -227, -50, -28, -51, -35, - -29, -25, -229, -32, -52, -54, -229, -197, -194, -213, - -36, -182, -183, -184, -185, -186, -187, -188, -189, -190, - -191, -192, -193, -229, -196, -200, -229, -212, -216, -229, - -218, -219, -220, -221, -222, -223, -224, -225, -226, -61, - -63, -229, -229, -229, -229, -67, -68, -69, -229, -229, - -229, -72, -81, -84, -229, -87, -88, -89, -83, -94, - -161, -164, -163, -229, -229, -175, -97, -102, -104, -116, - -123, -118, -122, -229, -229, -229, -229, -229, -229, -229, - -229, -146, -148, -33, -149, -229, -229, -114, -229, -156, - -12, -229, -17, -22, -24, -229, -33, -56, -177, -178, - -179, -229, -181, -215, -211, -195, -229, -209, -229, -202, - -205, -208, -229, -217, -76, -78, -75, -77, -70, -79, - -229, -86, -90, -162, -173, -229, -229, -229, -229, -229, - -229, -229, -229, -229, -229, -229, -229, -229, -229, -156, - -150, -151, -229, -153, -33, -157, -158, -19, -34, -229, - -180, -199, -33, -229, -229, -229, -229, -80, -168, -172, - -173, -173, -229, -134, -135, -136, -137, -138, -139, -140, - -141, -142, -143, -144, -145, -33, -113, -229, -229, -30, - -33, -201, -203, -204, -229, -229, -210, -169, -170, -173, - -229, -154, -159, -229, -206, -207, -171, -155, -229, -31 ] - -racc_goto_table = [ - 81, 248, 183, 68, 106, 91, 117, 271, 78, 246, - 273, 247, 82, 69, 209, 161, 97, 89, 268, 304, - 90, 119, 54, 57, 220, 221, 318, 60, 61, 62, - 63, 354, 355, 1, 65, 127, 76, 2, 149, 86, - 58, 132, 133, 134, 135, 4, 70, 159, 50, 51, - 52, 308, 67, 66, 119, 88, 208, 282, 227, 162, - 228, 122, 347, 348, 140, 352, 261, 311, nil, 335, - 154, nil, 207, nil, 211, nil, 214, nil, nil, nil, - nil, nil, nil, nil, 205, nil, 222, 206, nil, 213, - 262, 356, nil, 271, nil, nil, nil, nil, nil, nil, - nil, nil, 254, nil, 316, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 249, 280, nil, 271, 271, nil, nil, nil, nil, - nil, nil, 284, nil, 81, 342, 343, nil, nil, nil, - 253, nil, 257, nil, nil, nil, 82, 336, nil, nil, - nil, nil, nil, nil, 267, 271, 271, 247, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 310, 274, 275, 276, 277, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 283, nil, nil, - nil, nil, nil, nil, 320, 321, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 299, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 309, 349, nil, nil, nil, nil, nil, nil, nil, nil, - 267, nil, nil, nil, 315, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 358, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 337, nil, - nil, 267, 267, nil, nil, nil, 341, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 350, - nil, nil, 267, 267, 353 ] - -racc_goto_check = [ - 35, 62, 18, 17, 51, 41, 51, 77, 32, 58, - 77, 58, 36, 12, 46, 15, 48, 39, 82, 68, - 40, 55, 8, 8, 70, 70, 73, 7, 7, 7, - 7, 84, 84, 1, 7, 61, 7, 3, 9, 7, - 10, 61, 61, 61, 61, 2, 11, 14, 2, 2, - 2, 16, 27, 28, 55, 38, 42, 52, 56, 17, - 57, 59, 73, 73, 63, 69, 74, 81, nil, 68, - 8, nil, 41, nil, 41, nil, 51, nil, nil, nil, - nil, nil, nil, nil, 39, nil, 51, 40, nil, 48, - 18, 73, nil, 77, nil, nil, nil, nil, nil, nil, - nil, nil, 15, nil, 82, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 17, 46, nil, 77, 77, nil, nil, nil, nil, - nil, nil, 18, nil, 35, 82, 82, nil, nil, nil, - 12, nil, 32, nil, nil, nil, 36, 62, nil, nil, - nil, nil, nil, nil, 35, 77, 77, 58, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 18, 41, 41, 41, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 51, nil, nil, - nil, nil, nil, nil, 18, 18, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 17, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 17, 18, nil, nil, nil, nil, nil, nil, nil, nil, - 35, nil, nil, nil, 17, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 18, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 17, nil, - nil, 35, 35, nil, nil, nil, 17, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 17, - nil, nil, 35, 35, 17 ] - -racc_goto_pointer = [ - nil, 33, 43, 37, nil, nil, nil, 15, 12, -16, - 29, 26, -7, nil, -24, -57, -204, -16, -81, nil, - nil, nil, nil, nil, nil, nil, nil, 33, 34, nil, - nil, nil, -14, nil, nil, -22, -10, nil, 30, -8, - -5, -20, -36, nil, nil, nil, -78, nil, -10, nil, - nil, -24, -160, nil, nil, -10, -63, -62, -135, 27, - nil, 0, -145, 17, nil, nil, nil, nil, -230, -273, - -84, nil, nil, -258, -105, nil, nil, -179, nil, nil, - nil, -199, -168, nil, -313, nil ] - -racc_goto_default = [ - nil, nil, nil, nil, 5, 6, 7, 8, nil, nil, - 172, nil, nil, 71, nil, nil, 72, nil, nil, 180, - 12, 13, 14, 15, 16, 17, 18, nil, nil, 19, - 21, 22, nil, 79, 80, 179, 176, 24, nil, nil, - nil, nil, nil, 93, 95, 96, 111, 26, nil, 99, - 100, nil, 101, 102, 28, 30, 32, 33, 34, nil, - 35, 36, nil, 40, 41, 42, 43, 44, nil, 305, - 110, 109, 112, nil, nil, 171, 173, 174, 175, 177, - 178, 182, nil, 269, 270, 189 ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 0, 63, :_reduce_1, - 2, 61, :_reduce_2, - 2, 62, :_reduce_none, - 2, 62, :_reduce_none, - 2, 62, :_reduce_none, - 1, 62, :_reduce_none, - 1, 62, :_reduce_none, - 1, 62, :_reduce_none, - 1, 62, :_reduce_none, - 0, 62, :_reduce_none, - 3, 64, :_reduce_11, - 4, 65, :_reduce_12, - 3, 65, :_reduce_13, - 2, 68, :_reduce_none, - 1, 68, :_reduce_15, - 1, 68, :_reduce_16, - 4, 66, :_reduce_17, - 3, 66, :_reduce_18, - 3, 69, :_reduce_19, - 1, 69, :_reduce_20, - 1, 71, :_reduce_21, - 3, 71, :_reduce_22, - 0, 71, :_reduce_23, - 3, 72, :_reduce_24, - 2, 72, :_reduce_25, - 1, 73, :_reduce_26, - 1, 73, :_reduce_27, - 0, 73, :_reduce_28, - 1, 74, :_reduce_29, - 5, 76, :_reduce_30, - 8, 76, :_reduce_31, - 1, 77, :_reduce_32, - 0, 77, :_reduce_33, - 3, 75, :_reduce_34, - 0, 75, :_reduce_35, - 1, 79, :_reduce_36, - 2, 67, :_reduce_none, - 2, 67, :_reduce_none, - 2, 67, :_reduce_none, - 2, 67, :_reduce_none, - 1, 67, :_reduce_none, - 1, 67, :_reduce_none, - 1, 67, :_reduce_none, - 1, 67, :_reduce_none, - 1, 81, :_reduce_none, - 1, 81, :_reduce_none, - 1, 81, :_reduce_none, - 1, 87, :_reduce_none, - 1, 87, :_reduce_none, - 3, 84, :_reduce_50, - 3, 89, :_reduce_51, - 3, 85, :_reduce_52, - 2, 85, :_reduce_53, - 3, 90, :_reduce_54, - 1, 91, :_reduce_55, - 3, 92, :_reduce_56, - 1, 92, :_reduce_57, - 1, 93, :_reduce_none, - 1, 93, :_reduce_none, - 1, 93, :_reduce_none, - 3, 86, :_reduce_61, - 2, 86, :_reduce_62, - 3, 97, :_reduce_63, - 1, 98, :_reduce_64, - 1, 98, :_reduce_65, - 1, 98, :_reduce_66, - 1, 102, :_reduce_67, - 1, 102, :_reduce_68, - 1, 102, :_reduce_69, - 3, 101, :_reduce_70, - 1, 101, :_reduce_71, - 2, 99, :_reduce_72, - 1, 100, :_reduce_none, - 1, 100, :_reduce_none, - 3, 104, :_reduce_75, - 3, 104, :_reduce_76, - 3, 105, :_reduce_77, - 3, 105, :_reduce_78, - 3, 103, :_reduce_79, - 4, 103, :_reduce_80, - 3, 82, :_reduce_none, - 2, 82, :_reduce_none, - 3, 107, :_reduce_83, - 2, 108, :_reduce_none, - 1, 108, :_reduce_none, - 3, 109, :_reduce_86, - 2, 109, :_reduce_87, - 2, 110, :_reduce_88, - 0, 112, :_reduce_none, - 3, 112, :_reduce_90, - 1, 112, :_reduce_none, - 1, 113, :_reduce_none, - 1, 113, :_reduce_93, - 3, 83, :_reduce_94, - 2, 83, :_reduce_95, - 2, 114, :_reduce_96, - 3, 80, :_reduce_97, - 2, 80, :_reduce_98, - 1, 88, :_reduce_99, - 2, 115, :_reduce_100, - 2, 115, :_reduce_101, - 3, 116, :_reduce_102, - 1, 116, :_reduce_103, - 3, 117, :_reduce_104, - 1, 117, :_reduce_none, - 1, 119, :_reduce_106, - 1, 119, :_reduce_107, - 1, 119, :_reduce_108, - 1, 119, :_reduce_109, - 2, 118, :_reduce_110, - 1, 118, :_reduce_111, - 1, 118, :_reduce_112, - 3, 122, :_reduce_113, - 1, 122, :_reduce_none, - 1, 123, :_reduce_115, - 3, 123, :_reduce_116, - 2, 123, :_reduce_117, - 3, 123, :_reduce_118, - 1, 120, :_reduce_119, - 1, 120, :_reduce_120, - 2, 120, :_reduce_121, - 3, 120, :_reduce_122, - 3, 120, :_reduce_123, - 1, 121, :_reduce_124, - 1, 121, :_reduce_125, - 1, 121, :_reduce_126, - 1, 121, :_reduce_127, - 2, 121, :_reduce_128, - 2, 121, :_reduce_129, - 2, 121, :_reduce_130, - 2, 121, :_reduce_131, - 1, 124, :_reduce_132, - 2, 125, :_reduce_133, - 5, 126, :_reduce_134, - 5, 126, :_reduce_135, - 5, 126, :_reduce_136, - 5, 126, :_reduce_137, - 5, 126, :_reduce_138, - 5, 126, :_reduce_139, - 5, 126, :_reduce_140, - 5, 126, :_reduce_141, - 5, 126, :_reduce_142, - 5, 126, :_reduce_143, - 5, 126, :_reduce_144, - 5, 126, :_reduce_145, - 3, 126, :_reduce_146, - 2, 127, :_reduce_147, - 3, 127, :_reduce_148, - 3, 127, :_reduce_149, - 4, 127, :_reduce_150, - 4, 127, :_reduce_151, - 2, 127, :_reduce_152, - 4, 127, :_reduce_153, - 6, 127, :_reduce_154, - 7, 127, :_reduce_155, - 0, 128, :_reduce_none, - 1, 128, :_reduce_none, - 1, 129, :_reduce_none, - 3, 129, :_reduce_none, - 1, 130, :_reduce_none, - 2, 130, :_reduce_none, - 3, 111, :_reduce_none, - 2, 111, :_reduce_none, - 2, 111, :_reduce_none, - 1, 111, :_reduce_none, - 1, 111, :_reduce_none, - 1, 131, :_reduce_167, - 4, 106, :_reduce_168, - 5, 106, :_reduce_169, - 5, 106, :_reduce_170, - 6, 106, :_reduce_171, - 1, 133, :_reduce_172, - 0, 133, :_reduce_173, - 1, 132, :_reduce_174, - 2, 132, :_reduce_175, - 1, 132, :_reduce_176, - 1, 134, :_reduce_none, - 1, 134, :_reduce_none, - 1, 134, :_reduce_none, - 3, 78, :_reduce_180, - 2, 78, :_reduce_181, - 1, 78, :_reduce_182, - 1, 135, :_reduce_none, - 1, 135, :_reduce_none, - 1, 135, :_reduce_none, - 1, 135, :_reduce_none, - 1, 135, :_reduce_none, - 1, 135, :_reduce_none, - 1, 135, :_reduce_none, - 1, 135, :_reduce_none, - 1, 135, :_reduce_none, - 1, 135, :_reduce_none, - 1, 135, :_reduce_none, - 2, 95, :_reduce_194, - 3, 95, :_reduce_195, - 2, 95, :_reduce_196, - 2, 94, :_reduce_197, - 1, 94, :_reduce_198, - 3, 141, :_reduce_none, - 1, 141, :_reduce_none, - 4, 140, :_reduce_201, - 1, 142, :_reduce_none, - 3, 142, :_reduce_203, - 3, 142, :_reduce_204, - 1, 143, :_reduce_none, - 4, 143, :_reduce_206, - 4, 143, :_reduce_207, - 1, 144, :_reduce_208, - 1, 144, :_reduce_209, - 3, 144, :_reduce_210, - 2, 139, :_reduce_211, - 1, 139, :_reduce_212, - 2, 96, :_reduce_213, - 1, 96, :_reduce_214, - 2, 138, :_reduce_215, - 1, 138, :_reduce_216, - 2, 137, :_reduce_217, - 1, 137, :_reduce_218, - 1, 137, :_reduce_219, - 1, 137, :_reduce_220, - 1, 137, :_reduce_221, - 1, 137, :_reduce_222, - 1, 137, :_reduce_223, - 1, 136, :_reduce_224, - 1, 145, :_reduce_225, - 1, 145, :_reduce_226, - 2, 70, :_reduce_227, - 1, 70, :_reduce_228 ] - -racc_reduce_n = 229 - -racc_shift_n = 360 - -racc_token_table = { - false => 0, - :error => 1, - :CHARSET_SYM => 2, - :IMPORT_SYM => 3, - :STRING => 4, - :SEMI => 5, - :IDENT => 6, - :S => 7, - :COMMA => 8, - :LBRACE => 9, - :RBRACE => 10, - :STAR => 11, - :HASH => 12, - :LSQUARE => 13, - :RSQUARE => 14, - :EQUAL => 15, - :INCLUDES => 16, - :DASHMATCH => 17, - :LPAREN => 18, - :RPAREN => 19, - :FUNCTION => 20, - :GREATER => 21, - :PLUS => 22, - :SLASH => 23, - :NUMBER => 24, - :MINUS => 25, - :LENGTH => 26, - :PERCENTAGE => 27, - :ANGLE => 28, - :TIME => 29, - :FREQ => 30, - :URI => 31, - :IMPORTANT_SYM => 32, - :MEDIA_SYM => 33, - :NOT => 34, - :ONLY => 35, - :AND => 36, - :NTH_PSEUDO_CLASS => 37, - :DOCUMENT_QUERY_SYM => 38, - :FUNCTION_NO_QUOTE => 39, - :TILDE => 40, - :PREFIXMATCH => 41, - :SUFFIXMATCH => 42, - :SUBSTRINGMATCH => 43, - :NOT_PSEUDO_CLASS => 44, - :KEYFRAMES_SYM => 45, - :MATCHES_PSEUDO_CLASS => 46, - :NAMESPACE_SYM => 47, - :MOZ_PSEUDO_ELEMENT => 48, - :RESOLUTION => 49, - :COLON => 50, - :SUPPORTS_SYM => 51, - :OR => 52, - :VARIABLE_NAME => 53, - :CALC_SYM => 54, - :FONTFACE_SYM => 55, - :UNICODE_RANGE => 56, - :RATIO => 57, - "|" => 58, - "." => 59 } - -racc_nt_base = 60 - -racc_use_result_var = true - -Racc_arg = [ - racc_action_table, - racc_action_check, - racc_action_default, - racc_action_pointer, - racc_goto_table, - racc_goto_check, - racc_goto_default, - racc_goto_pointer, - racc_nt_base, - racc_reduce_table, - racc_token_table, - racc_shift_n, - racc_reduce_n, - racc_use_result_var ] - -Racc_token_to_s_table = [ - "$end", - "error", - "CHARSET_SYM", - "IMPORT_SYM", - "STRING", - "SEMI", - "IDENT", - "S", - "COMMA", - "LBRACE", - "RBRACE", - "STAR", - "HASH", - "LSQUARE", - "RSQUARE", - "EQUAL", - "INCLUDES", - "DASHMATCH", - "LPAREN", - "RPAREN", - "FUNCTION", - "GREATER", - "PLUS", - "SLASH", - "NUMBER", - "MINUS", - "LENGTH", - "PERCENTAGE", - "ANGLE", - "TIME", - "FREQ", - "URI", - "IMPORTANT_SYM", - "MEDIA_SYM", - "NOT", - "ONLY", - "AND", - "NTH_PSEUDO_CLASS", - "DOCUMENT_QUERY_SYM", - "FUNCTION_NO_QUOTE", - "TILDE", - "PREFIXMATCH", - "SUFFIXMATCH", - "SUBSTRINGMATCH", - "NOT_PSEUDO_CLASS", - "KEYFRAMES_SYM", - "MATCHES_PSEUDO_CLASS", - "NAMESPACE_SYM", - "MOZ_PSEUDO_ELEMENT", - "RESOLUTION", - "COLON", - "SUPPORTS_SYM", - "OR", - "VARIABLE_NAME", - "CALC_SYM", - "FONTFACE_SYM", - "UNICODE_RANGE", - "RATIO", - "\"|\"", - "\".\"", - "$start", - "document", - "stylesheet", - "@1", - "charset", - "import", - "namespace", - "body", - "import_location", - "medium", - "ident", - "media_query_list", - "media_query", - "optional_only_or_not", - "media_type", - "optional_and_exprs", - "media_expr", - "optional_space", - "expr", - "resolution", - "ruleset", - "conditional_rule", - "keyframes_rule", - "fontface_rule", - "media", - "document_query", - "supports", - "body_in_media", - "empty_ruleset", - "start_media", - "start_document_query", - "start_document_query_pos", - "url_match_fns", - "url_match_fn", - "function_no_quote", - "function", - "uri", - "start_supports", - "supports_condition_root", - "supports_negation", - "supports_conjunction_or_disjunction", - "supports_condition_in_parens", - "supports_condition", - "supports_declaration_condition", - "supports_conjunction", - "supports_disjunction", - "declaration_internal", - "start_keyframes_rule", - "keyframes_blocks", - "keyframes_block", - "start_keyframes_block", - "declarations", - "keyframes_selectors", - "keyframes_selector", - "start_fontface_rule", - "start_selector", - "selectors", - "selector", - "simple_selector", - "combinator", - "element_name", - "hcap", - "simple_selectors", - "ident_with_namespace", - "hash", - "class", - "attrib", - "pseudo", - "any_number_of_idents", - "multiple_idents", - "one_or_more_semis", - "declaration", - "property", - "prio", - "operator", - "term", - "ratio", - "numeric", - "string", - "hexcolor", - "calc", - "uranges", - "calc_sum", - "calc_product", - "calc_value", - "unary_operator" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'csspool.y', 26) - def _reduce_1(val, _values, result) - @handler.start_document - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 28) - def _reduce_2(val, _values, result) - @handler.end_document - result - end -.,., - -# reduce 3 omitted - -# reduce 4 omitted - -# reduce 5 omitted - -# reduce 6 omitted - -# reduce 7 omitted - -# reduce 8 omitted - -# reduce 9 omitted - -# reduce 10 omitted - -module_eval(<<'.,.,', 'csspool.y', 41) - def _reduce_11(val, _values, result) - @handler.charset interpret_string(val[1]), {} - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 45) - def _reduce_12(val, _values, result) - @handler.import_style val[2], val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 48) - def _reduce_13(val, _values, result) - @handler.import_style [], val[1] - - result - end -.,., - -# reduce 14 omitted - -module_eval(<<'.,.,', 'csspool.y', 53) - def _reduce_15(val, _values, result) - result = Terms::String.new interpret_string val.first - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 54) - def _reduce_16(val, _values, result) - result = Terms::URI.new interpret_uri val.first - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 58) - def _reduce_17(val, _values, result) - @handler.namespace val[1], val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 61) - def _reduce_18(val, _values, result) - @handler.namespace nil, val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 66) - def _reduce_19(val, _values, result) - result = val[0] << MediaType.new(val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 69) - def _reduce_20(val, _values, result) - result = [MediaType.new(val[0])] - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 73) - def _reduce_21(val, _values, result) - result = MediaQueryList.new([ val[0] ]) - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 74) - def _reduce_22(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 75) - def _reduce_23(val, _values, result) - result = MediaQueryList.new - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 78) - def _reduce_24(val, _values, result) - result = MediaQuery.new(val[0], val[1], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 79) - def _reduce_25(val, _values, result) - result = MediaQuery.new(nil, val[0], val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 82) - def _reduce_26(val, _values, result) - result = :only - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 83) - def _reduce_27(val, _values, result) - result = :not - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 84) - def _reduce_28(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 87) - def _reduce_29(val, _values, result) - result = MediaType.new(val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 90) - def _reduce_30(val, _values, result) - result = MediaType.new(val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 91) - def _reduce_31(val, _values, result) - result = MediaFeature.new(val[2], val[6][0]) - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 94) - def _reduce_32(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 95) - def _reduce_33(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 98) - def _reduce_34(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 99) - def _reduce_35(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 103) - def _reduce_36(val, _values, result) - unit = val.first.gsub(/[\s\d.]/, '') - number = numeric(val.first) - result = Terms::Resolution.new(number, unit) - - result - end -.,., - -# reduce 37 omitted - -# reduce 38 omitted - -# reduce 39 omitted - -# reduce 40 omitted - -# reduce 41 omitted - -# reduce 42 omitted - -# reduce 43 omitted - -# reduce 44 omitted - -# reduce 45 omitted - -# reduce 46 omitted - -# reduce 47 omitted - -# reduce 48 omitted - -# reduce 49 omitted - -module_eval(<<'.,.,', 'csspool.y', 128) - def _reduce_50(val, _values, result) - @handler.end_media val.first - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 132) - def _reduce_51(val, _values, result) - result = val[1] - @handler.start_media result - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 137) - def _reduce_52(val, _values, result) - @handler.end_document_query(before_pos(val), after_pos(val)) - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 138) - def _reduce_53(val, _values, result) - @handler.end_document_query(before_pos(val), after_pos(val)) - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 142) - def _reduce_54(val, _values, result) - @handler.start_document_query(val[1], after_pos(val)) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 147) - def _reduce_55(val, _values, result) - @handler.node_start_pos = before_pos(val) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 152) - def _reduce_56(val, _values, result) - result = [val[0], val[2]].flatten - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 155) - def _reduce_57(val, _values, result) - result = val - - result - end -.,., - -# reduce 58 omitted - -# reduce 59 omitted - -# reduce 60 omitted - -module_eval(<<'.,.,', 'csspool.y', 164) - def _reduce_61(val, _values, result) - @handler.end_supports - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 165) - def _reduce_62(val, _values, result) - @handler.end_supports - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 169) - def _reduce_63(val, _values, result) - @handler.start_supports val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 173) - def _reduce_64(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 174) - def _reduce_65(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 175) - def _reduce_66(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 178) - def _reduce_67(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 179) - def _reduce_68(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 180) - def _reduce_69(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 183) - def _reduce_70(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 184) - def _reduce_71(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 187) - def _reduce_72(val, _values, result) - result = val.join('') - result - end -.,., - -# reduce 73 omitted - -# reduce 74 omitted - -module_eval(<<'.,.,', 'csspool.y', 194) - def _reduce_75(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 195) - def _reduce_76(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 198) - def _reduce_77(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 199) - def _reduce_78(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 202) - def _reduce_79(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 203) - def _reduce_80(val, _values, result) - result = val.join('') - result - end -.,., - -# reduce 81 omitted - -# reduce 82 omitted - -module_eval(<<'.,.,', 'csspool.y', 211) - def _reduce_83(val, _values, result) - @handler.start_keyframes_rule val[1] - - result - end -.,., - -# reduce 84 omitted - -# reduce 85 omitted - -module_eval(<<'.,.,', 'csspool.y', 219) - def _reduce_86(val, _values, result) - @handler.end_keyframes_block - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 220) - def _reduce_87(val, _values, result) - @handler.end_keyframes_block - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 224) - def _reduce_88(val, _values, result) - @handler.start_keyframes_block val[0] - - result - end -.,., - -# reduce 89 omitted - -module_eval(<<'.,.,', 'csspool.y', 229) - def _reduce_90(val, _values, result) - result = val[0] + ', ' + val[2] - - result - end -.,., - -# reduce 91 omitted - -# reduce 92 omitted - -module_eval(<<'.,.,', 'csspool.y', 235) - def _reduce_93(val, _values, result) - result = val[0].strip - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 238) - def _reduce_94(val, _values, result) - @handler.end_fontface_rule - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 239) - def _reduce_95(val, _values, result) - @handler.end_fontface_rule - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 243) - def _reduce_96(val, _values, result) - @handler.start_fontface_rule - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 248) - def _reduce_97(val, _values, result) - @handler.end_selector val.first - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 251) - def _reduce_98(val, _values, result) - @handler.end_selector val.first - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 256) - def _reduce_99(val, _values, result) - start = @handler.start_selector([]) - @handler.end_selector(start) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 261) - def _reduce_100(val, _values, result) - result = val.last - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 263) - def _reduce_101(val, _values, result) - @handler.start_selector val.first - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 269) - def _reduce_102(val, _values, result) - sel = Selector.new(val.first, {}) - result = [sel].concat(val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 274) - def _reduce_103(val, _values, result) - result = [Selector.new(val.first, {})] - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 280) - def _reduce_104(val, _values, result) - val.flatten! - val[2].combinator = val.delete_at 1 - result = val - - result - end -.,., - -# reduce 105 omitted - -module_eval(<<'.,.,', 'csspool.y', 287) - def _reduce_106(val, _values, result) - result = :s - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 288) - def _reduce_107(val, _values, result) - result = :> - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 289) - def _reduce_108(val, _values, result) - result = :+ - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 290) - def _reduce_109(val, _values, result) - result = :~ - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 294) - def _reduce_110(val, _values, result) - selector = val.first - selector.additional_selectors = val.last - result = [selector] - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 298) - def _reduce_111(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 301) - def _reduce_112(val, _values, result) - ss = Selectors::Simple.new nil, nil - ss.additional_selectors = val.flatten - result = [ss] - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 307) - def _reduce_113(val, _values, result) - result = [val[0], val[2]].flatten - result - end -.,., - -# reduce 114 omitted - -module_eval(<<'.,.,', 'csspool.y', 311) - def _reduce_115(val, _values, result) - result = [interpret_identifier(val[0]), nil] - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 312) - def _reduce_116(val, _values, result) - result = [interpret_identifier(val[2]), interpret_identifier(val[0])] - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 313) - def _reduce_117(val, _values, result) - result = [interpret_identifier(val[1]), nil] - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 314) - def _reduce_118(val, _values, result) - result = [interpret_identifier(val[2]), '*'] - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 317) - def _reduce_119(val, _values, result) - result = Selectors::Type.new val.first[0], nil, val.first[1] - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 318) - def _reduce_120(val, _values, result) - result = Selectors::Universal.new val.first - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 319) - def _reduce_121(val, _values, result) - result = Selectors::Universal.new val[1] - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 320) - def _reduce_122(val, _values, result) - result = Selectors::Universal.new val[2], nil, val[0] - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 321) - def _reduce_123(val, _values, result) - result = Selectors::Universal.new val[2], nil, interpret_identifier(val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 324) - def _reduce_124(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 325) - def _reduce_125(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 326) - def _reduce_126(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 327) - def _reduce_127(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 328) - def _reduce_128(val, _values, result) - result = val.flatten - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 329) - def _reduce_129(val, _values, result) - result = val.flatten - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 330) - def _reduce_130(val, _values, result) - result = val.flatten - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 331) - def _reduce_131(val, _values, result) - result = val.flatten - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 335) - def _reduce_132(val, _values, result) - result = Selectors::Id.new interpret_identifier val.first.sub(/^#/, '') - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 339) - def _reduce_133(val, _values, result) - result = Selectors::Class.new interpret_identifier val.last - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 344) - def _reduce_134(val, _values, result) - result = Selectors::Attribute.new( - val[1][0], - interpret_identifier(val[3]), - Selectors::Attribute::EQUALS, - val[1][1] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 352) - def _reduce_135(val, _values, result) - result = Selectors::Attribute.new( - val[1][0], - interpret_string(val[3]), - Selectors::Attribute::EQUALS, - val[1][1] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 360) - def _reduce_136(val, _values, result) - result = Selectors::Attribute.new( - val[1][0], - interpret_string(val[3]), - Selectors::Attribute::INCLUDES, - val[1][1] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 368) - def _reduce_137(val, _values, result) - result = Selectors::Attribute.new( - val[1][0], - interpret_identifier(val[3]), - Selectors::Attribute::INCLUDES, - val[1][1] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 376) - def _reduce_138(val, _values, result) - result = Selectors::Attribute.new( - val[1][0], - interpret_identifier(val[3]), - Selectors::Attribute::DASHMATCH, - val[1][1] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 384) - def _reduce_139(val, _values, result) - result = Selectors::Attribute.new( - val[1][0], - interpret_string(val[3]), - Selectors::Attribute::DASHMATCH, - val[1][1] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 392) - def _reduce_140(val, _values, result) - result = Selectors::Attribute.new( - val[1][0], - interpret_identifier(val[3]), - Selectors::Attribute::PREFIXMATCH, - val[1][1] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 400) - def _reduce_141(val, _values, result) - result = Selectors::Attribute.new( - val[1][0], - interpret_string(val[3]), - Selectors::Attribute::PREFIXMATCH, - val[1][1] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 408) - def _reduce_142(val, _values, result) - result = Selectors::Attribute.new( - val[1][0], - interpret_identifier(val[3]), - Selectors::Attribute::SUFFIXMATCH, - val[1][1] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 416) - def _reduce_143(val, _values, result) - result = Selectors::Attribute.new( - val[1][0], - interpret_string(val[3]), - Selectors::Attribute::SUFFIXMATCH, - val[1][1] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 424) - def _reduce_144(val, _values, result) - result = Selectors::Attribute.new( - val[1][0], - interpret_identifier(val[3]), - Selectors::Attribute::SUBSTRINGMATCH, - val[1][1] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 432) - def _reduce_145(val, _values, result) - result = Selectors::Attribute.new( - val[1][0], - interpret_string(val[3]), - Selectors::Attribute::SUBSTRINGMATCH, - val[1][1] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 440) - def _reduce_146(val, _values, result) - result = Selectors::Attribute.new( - val[1][0], - nil, - Selectors::Attribute::SET, - val[1][1] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 450) - def _reduce_147(val, _values, result) - result = Selectors::pseudo interpret_identifier(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 453) - def _reduce_148(val, _values, result) - result = Selectors::PseudoElement.new( - interpret_identifier(val[2]) - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 458) - def _reduce_149(val, _values, result) - result = Selectors::PseudoClass.new( - interpret_identifier(val[1].sub(/\($/, '')), - '' - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 464) - def _reduce_150(val, _values, result) - result = Selectors::PseudoClass.new( - interpret_identifier(val[1].sub(/\($/, '')), - interpret_identifier(val[2]) - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 470) - def _reduce_151(val, _values, result) - result = Selectors::PseudoClass.new( - 'not', - val[2].first.to_s - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 476) - def _reduce_152(val, _values, result) - result = Selectors::PseudoClass.new( - interpret_identifier(val[1].sub(/\(.*/, '')), - interpret_identifier(val[1].sub(/.*\(/, '').sub(/\).*/, '')) - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 482) - def _reduce_153(val, _values, result) - result = Selectors::PseudoClass.new( - val[1].split('(').first.strip, - val[2].join(', ') - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 488) - def _reduce_154(val, _values, result) - result = Selectors::PseudoElement.new( - interpret_identifier(val[1].sub(/\($/, '')) - ) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 493) - def _reduce_155(val, _values, result) - result = Selectors::PseudoElement.new( - interpret_identifier(val[2].sub(/\($/, '')) - ) - - result - end -.,., - -# reduce 156 omitted - -# reduce 157 omitted - -# reduce 158 omitted - -# reduce 159 omitted - -# reduce 160 omitted - -# reduce 161 omitted - -# reduce 162 omitted - -# reduce 163 omitted - -# reduce 164 omitted - -# reduce 165 omitted - -# reduce 166 omitted - -module_eval(<<'.,.,', 'csspool.y', 519) - def _reduce_167(val, _values, result) - @handler.property val.first - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 523) - def _reduce_168(val, _values, result) - result = Declaration.new(val.first, val[2], val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 525) - def _reduce_169(val, _values, result) - result = Declaration.new(val.first, val[3], val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 527) - def _reduce_170(val, _values, result) - result = Declaration.new(val.first, val[3], val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 529) - def _reduce_171(val, _values, result) - result = Declaration.new(val.first, val[4], val[5]) - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 532) - def _reduce_172(val, _values, result) - result = true - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 533) - def _reduce_173(val, _values, result) - result = false - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 536) - def _reduce_174(val, _values, result) - result = interpret_identifier val[0] - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 537) - def _reduce_175(val, _values, result) - result = interpret_identifier val.join - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 538) - def _reduce_176(val, _values, result) - result = interpret_identifier val[0] - result - end -.,., - -# reduce 177 omitted - -# reduce 178 omitted - -# reduce 179 omitted - -module_eval(<<'.,.,', 'csspool.y', 547) - def _reduce_180(val, _values, result) - result = [val.first, val.last].flatten - val.last.first.operator = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 550) - def _reduce_181(val, _values, result) - result = val.flatten - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 551) - def _reduce_182(val, _values, result) - result = val - result - end -.,., - -# reduce 183 omitted - -# reduce 184 omitted - -# reduce 185 omitted - -# reduce 186 omitted - -# reduce 187 omitted - -# reduce 188 omitted - -# reduce 189 omitted - -# reduce 190 omitted - -# reduce 191 omitted - -# reduce 192 omitted - -# reduce 193 omitted - -module_eval(<<'.,.,', 'csspool.y', 567) - def _reduce_194(val, _values, result) - result = val.first - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 569) - def _reduce_195(val, _values, result) - name = interpret_identifier val.first.sub(/\($/, '') - if name == 'rgb' - result = Terms::Rgb.new(*val[1]) - else - result = Terms::Function.new name, val[1] - end - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 577) - def _reduce_196(val, _values, result) - name = interpret_identifier val.first.sub(/\($/, '') - result = Terms::Function.new name - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 582) - def _reduce_197(val, _values, result) - result = val.first - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 584) - def _reduce_198(val, _values, result) - parts = val.first.split('(') - name = interpret_identifier parts.first - result = Terms::Function.new(name, [Terms::String.new(interpret_string_no_quote(parts.last))]) - - result - end -.,., - -# reduce 199 omitted - -# reduce 200 omitted - -module_eval(<<'.,.,', 'csspool.y', 595) - def _reduce_201(val, _values, result) - result = Terms::Math.new(val.first.split('(').first, val[1]) - - result - end -.,., - -# reduce 202 omitted - -module_eval(<<'.,.,', 'csspool.y', 601) - def _reduce_203(val, _values, result) - val.insert(1, ' '); result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 602) - def _reduce_204(val, _values, result) - val.insert(1, ' '); result = val.join('') - result - end -.,., - -# reduce 205 omitted - -module_eval(<<'.,.,', 'csspool.y', 606) - def _reduce_206(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 607) - def _reduce_207(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 610) - def _reduce_208(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 611) - def _reduce_209(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 612) - def _reduce_210(val, _values, result) - result = val.join('') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 615) - def _reduce_211(val, _values, result) - result = val.first - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 616) - def _reduce_212(val, _values, result) - result = Terms::Hash.new val.first.sub(/^#/, '') - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 619) - def _reduce_213(val, _values, result) - result = val.first - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 620) - def _reduce_214(val, _values, result) - result = Terms::URI.new interpret_uri val.first - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 623) - def _reduce_215(val, _values, result) - result = val.first - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 624) - def _reduce_216(val, _values, result) - result = Terms::String.new interpret_string val.first - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 628) - def _reduce_217(val, _values, result) - result = val[1] - val[1].unary_operator = val.first - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 632) - def _reduce_218(val, _values, result) - result = Terms::Number.new numeric val.first - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 635) - def _reduce_219(val, _values, result) - result = Terms::Number.new numeric(val.first), nil, '%' - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 638) - def _reduce_220(val, _values, result) - unit = val.first.gsub(/[\s\d.]/, '') - result = Terms::Number.new numeric(val.first), nil, unit - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 642) - def _reduce_221(val, _values, result) - unit = val.first.gsub(/[\s\d.]/, '') - result = Terms::Number.new numeric(val.first), nil, unit - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 646) - def _reduce_222(val, _values, result) - unit = val.first.gsub(/[\s\d.]/, '') - result = Terms::Number.new numeric(val.first), nil, unit - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 650) - def _reduce_223(val, _values, result) - unit = val.first.gsub(/[\s\d.]/, '') - result = Terms::Number.new numeric(val.first), nil, unit - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 656) - def _reduce_224(val, _values, result) - result = Terms::Ratio.new(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 660) - def _reduce_225(val, _values, result) - result = :minus - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 661) - def _reduce_226(val, _values, result) - result = :plus - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 664) - def _reduce_227(val, _values, result) - result = val.first - result - end -.,., - -module_eval(<<'.,.,', 'csspool.y', 665) - def _reduce_228(val, _values, result) - result = Terms::Ident.new interpret_identifier val.first - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser - end # module CSS -end # module CSSPool diff --git a/test/racc/regress/edtf b/test/racc/regress/edtf deleted file mode 100644 index 5947931260..0000000000 --- a/test/racc/regress/edtf +++ /dev/null @@ -1,1794 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' - -require 'strscan' - -module EDTF - class Parser < Racc::Parser - -module_eval(<<'...end edtf.y/module_eval...', 'edtf.y', 468) - - @defaults = { - :level => 2, - :debug => false - }.freeze - - class << self; attr_reader :defaults; end - - attr_reader :options - - def initialize(options = {}) - @options = Parser.defaults.merge(options) - end - - def debug? - !!(options[:debug] || ENV['DEBUG']) - end - - def parse(input) - parse!(input) - rescue => e - warn e.message if debug? - nil - end - - def parse!(input) - @yydebug = debug? - @src = StringScanner.new(input) - do_parse - end - - def on_error(tid, value, stack) - raise ArgumentError, - "failed to parse date: unexpected '#{value}' at #{stack.inspect}" - end - - def apply_uncertainty(date, uncertainty, scope = nil) - uncertainty.each do |u| - scope.nil? ? date.send(u) : date.send(u, scope) - end - date - end - - alias uoa apply_uncertainty - - def next_token - case - when @src.eos? - nil - # when @src.scan(/\s+/) - # ignore whitespace - when @src.scan(/\(/) - ['(', @src.matched] - # when @src.scan(/\)\?~-/) - # [:PUA, [:uncertain!, :approximate!]] - # when @src.scan(/\)\?-/) - # [:PUA, [:uncertain!]] - # when @src.scan(/\)~-/) - # [:PUA, [:approximate!]] - when @src.scan(/\)/) - [')', @src.matched] - when @src.scan(/\[/) - ['[', @src.matched] - when @src.scan(/\]/) - [']', @src.matched] - when @src.scan(/\{/) - ['{', @src.matched] - when @src.scan(/\}/) - ['}', @src.matched] - when @src.scan(/T/) - [:T, @src.matched] - when @src.scan(/Z/) - [:Z, @src.matched] - when @src.scan(/\?~/) - [:UA, [:uncertain!, :approximate!]] - when @src.scan(/\?/) - [:UA, [:uncertain!]] - when @src.scan(/~/) - [:UA, [:approximate!]] - when @src.scan(/open/i) - [:OPEN, :open] - when @src.scan(/unkn?own/i) # matches 'unkown' typo too - [:UNKNOWN, :unknown] - when @src.scan(/u/) - [:U, @src.matched] - when @src.scan(/x/i) - [:X, @src.matched] - when @src.scan(/y/) - [:LONGYEAR, @src.matched] - when @src.scan(/e/) - [:E, @src.matched] - when @src.scan(/\+/) - ['+', @src.matched] - when @src.scan(/-\(/) - ['-(', @src.matched] - when @src.scan(/-/) - ['-', @src.matched] - when @src.scan(/:/) - [':', @src.matched] - when @src.scan(/\//) - ['/', @src.matched] - when @src.scan(/\s*\.\.\s*/) - [:DOTS, '..'] - when @src.scan(/\s*,\s*/) - [',', ','] - when @src.scan(/\^\w+/) - ['^', @src.matched[1..-1]] - when @src.scan(/\d/) - [@src.matched, @src.matched.to_i] - else @src.scan(/./) - [:UNMATCHED, @src.rest] - end - end - - -# -*- racc -*- -...end edtf.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - 129, 128, 52, 111, 51, 112, 149, 208, 207, 57, - -50, 43, 45, 40, 55, 42, 54, 44, 43, 45, - 40, -48, 42, 53, 44, 64, 58, 46, 47, 48, - 49, 50, 128, 56, 46, 47, 48, 49, 50, 207, - 57, 65, 43, 45, 40, 55, 42, 157, 44, 43, - 45, 40, 55, 42, 214, 44, 92, 58, 46, 47, - 48, 49, 50, 66, 56, 46, 47, 48, 49, 50, - 25, 56, 26, 93, 94, 67, 108, 12, -65, 43, - 45, 40, -66, 42, 159, 44, 110, 33, 111, 34, - 112, 95, 36, 25, 141, 46, 47, 48, 49, 50, - 12, 58, 43, 45, 40, 101, 42, 103, 44, 104, - 96, 148, 55, 133, 147, 36, 124, 125, 46, 47, - 48, 49, 50, 87, 165, 111, 12, 112, 43, 45, - 40, 56, 42, 146, 44, 166, 111, 150, 112, 218, - 167, 36, 152, 153, 46, 47, 48, 49, 50, 87, - 108, 111, 12, 112, 43, 45, 40, 188, 42, 186, - 44, 187, 111, 190, 112, 154, 111, 36, 112, 156, - 46, 47, 48, 49, 50, 69, 158, 43, 45, 189, - 191, 42, 12, 44, 43, 45, 40, 200, 42, 201, - 44, 168, 177, 46, 47, 48, 49, 50, 233, 178, - 46, 47, 48, 49, 50, 12, 180, 43, 45, 40, - 111, 42, 112, 44, 232, 234, 111, 240, 112, 239, - 36, 192, 193, 46, 47, 48, 49, 50, 12, 202, - 43, 45, 40, 118, 42, 117, 44, 104, 118, 121, - 117, 209, 104, 36, 121, 210, 46, 47, 48, 49, - 50, 12, 212, 43, 45, 40, 244, 42, 239, 44, - 213, 43, 45, 40, 215, 42, 36, 44, 229, 46, - 47, 48, 49, 50, 180, 180, 236, 46, 47, 48, - 49, 50, 43, 45, 40, 253, 42, 254, 44, 43, - 45, 40, 255, 42, 258, 44, 261, 264, 46, 47, - 48, 49, 50, 124, 125, 46, 47, 48, 49, 50, - 43, 45, 40, 265, 42, 192, 44, 43, 45, 266, - 269, 42, 270, 44, 275, 280, 46, 47, 48, 49, - 50, 284, 285, 46, 47, 48, 49, 50, 43, 45, - 40, 286, 42, 290, 44, 43, 45, 292, 293, 42, - 295, 44, 296, 297, 46, 47, 48, 49, 50, 300, - 301, 46, 47, 48, 49, 50, 43, 45, 40, 180, - 42, 303, 44, 43, 45, 40, 304, 42, 305, 44, - 281, 306, 46, 47, 48, 49, 50, 307, 308, 46, - 47, 48, 49, 50, 43, 45, 175, 311, 42, 312, - 44, 43, 45, 40, 313, 42, 314, 44, 316, 317, - 46, 47, 48, 49, 50, 318, 319, 46, 47, 48, - 49, 50, 43, 45, nil, nil, 42, nil, 44, 43, - 45, nil, nil, 42, nil, 44, nil, nil, 46, 47, - 48, 49, 50, nil, nil, 46, 47, 48, 49, 50, - 172, 194, 170, nil, 171, nil, 173, 43, 45, 40, - nil, 42, nil, 44, nil, nil, 195, 196, 197, 198, - 199, nil, nil, 46, 47, 48, 49, 50, 43, 45, - 40, nil, 42, nil, 44, 43, 45, 40, nil, 42, - nil, 44, nil, nil, 46, 47, 48, 49, 50, nil, - nil, 46, 47, 48, 49, 50, 43, 45, 40, nil, - 42, nil, 44, 43, 45, nil, nil, 42, nil, 44, - nil, nil, 46, 47, 48, 49, 50, nil, nil, 46, - 47, 48, 49, 50, 43, 45, 40, nil, 42, nil, - 44, 43, 45, 40, nil, 42, nil, 44, nil, nil, - 46, 47, 48, 49, 50, nil, nil, 46, 47, 48, - 49, 50, 43, 45, 40, nil, 42, nil, 44, 43, - 45, 40, nil, 42, nil, 44, nil, nil, 46, 47, - 48, 49, 50, nil, nil, 46, 47, 48, 49, 50, - 43, 45, nil, nil, 42, nil, 44, 43, 45, 40, - nil, 42, nil, 44, nil, nil, 46, 47, 48, 49, - 50, nil, nil, 46, 47, 48, 49, 50, 43, 45, - 40, nil, 42, nil, 44, 43, 45, 273, nil, 42, - nil, 44, nil, nil, 46, 47, 48, 49, 50, nil, - nil, 46, 47, 48, 49, 50, 43, 45, 274, nil, - 42, nil, 44, 43, 45, 276, nil, 42, nil, 44, - nil, nil, 46, 47, 48, 49, 50, nil, nil, 46, - 47, 48, 49, 50, 43, 45, 40, nil, 42, nil, - 44, 43, 45, 40, nil, 42, nil, 44, nil, nil, - 46, 47, 48, 49, 50, nil, nil, 46, 47, 48, - 49, 50, 43, 45, 40, nil, 42, nil, 44, 43, - 45, 40, nil, 42, nil, 44, nil, nil, 46, 47, - 48, 49, 50, nil, nil, 46, 47, 48, 49, 50, - 43, 45, 40, nil, 42, nil, 44, 43, 45, 315, - nil, 42, nil, 44, nil, nil, 46, 47, 48, 49, - 50, 116, nil, 46, 47, 48, 49, 50, 118, 250, - 247, 118, 104, 117, 249, 104, 260, 121, nil, 281, - nil, nil, nil, nil, 251, nil, 118, 288, 117, 118, - 104, 117, 121, 104, 118, 121, 117, 118, 104, 117, - 121, 104, nil, 121, 118, 250, 247, nil, 104, nil, - 249, 118, 250, 247, nil, 104, nil, 249, nil, nil, - 251, nil, 118, 250, 117, nil, 104, 251, 249, 118, - 250, 310, nil, 104, nil, 249, nil, nil, 251, nil, - 172, 169, 170, nil, 171, 251, 173, 182, 184, nil, - 118, 181, 117, 183, 104, 118, 121, 117, 118, 104, - 117, 121, 104, 118, 121, 117, 118, 104, 117, 121, - 104, 118, 121, 117, nil, 104, nil, 121, 188, 271, - 186, 118, 187, 117, 272, 104, nil, 121 ] - -racc_action_check = [ - 63, 63, 5, 56, 1, 56, 73, 127, 127, 73, - 14, 63, 63, 63, 9, 63, 9, 63, 127, 127, - 127, 5, 127, 5, 127, 16, 73, 63, 63, 63, - 63, 63, 151, 9, 127, 127, 127, 127, 127, 224, - 10, 17, 151, 151, 151, 89, 151, 89, 151, 224, - 224, 224, 134, 224, 134, 224, 37, 10, 151, 151, - 151, 151, 151, 18, 89, 224, 224, 224, 224, 224, - 0, 134, 0, 37, 38, 22, 54, 0, 23, 0, - 0, 0, 24, 0, 91, 0, 54, 0, 54, 0, - 54, 38, 0, 67, 67, 0, 0, 0, 0, 0, - 67, 91, 67, 67, 67, 52, 67, 52, 67, 52, - 51, 72, 72, 66, 72, 67, 59, 60, 67, 67, - 67, 67, 67, 33, 98, 66, 33, 66, 33, 33, - 33, 72, 33, 71, 33, 98, 92, 74, 92, 147, - 98, 33, 77, 78, 33, 33, 33, 33, 33, 34, - 214, 147, 34, 147, 34, 34, 34, 112, 34, 112, - 34, 112, 214, 113, 214, 79, 93, 34, 93, 88, - 34, 34, 34, 34, 34, 26, 90, 26, 26, 113, - 113, 26, 87, 26, 87, 87, 87, 121, 87, 121, - 87, 99, 107, 26, 26, 26, 26, 26, 161, 108, - 87, 87, 87, 87, 87, 153, 109, 153, 153, 153, - 124, 153, 124, 153, 161, 161, 157, 166, 157, 166, - 153, 115, 116, 153, 153, 153, 153, 153, 154, 123, - 154, 154, 154, 58, 154, 58, 154, 58, 94, 58, - 94, 128, 94, 154, 94, 129, 154, 154, 154, 154, - 154, 265, 132, 265, 265, 265, 167, 265, 167, 265, - 133, 12, 12, 12, 144, 12, 265, 12, 158, 265, - 265, 265, 265, 265, 160, 162, 163, 12, 12, 12, - 12, 12, 13, 13, 13, 169, 13, 178, 13, 36, - 36, 36, 189, 36, 202, 36, 213, 218, 13, 13, - 13, 13, 13, 220, 222, 36, 36, 36, 36, 36, - 62, 62, 62, 225, 62, 230, 62, 64, 64, 232, - 236, 64, 238, 64, 245, 253, 62, 62, 62, 62, - 62, 256, 257, 64, 64, 64, 64, 64, 68, 68, - 68, 260, 68, 264, 68, 69, 69, 267, 268, 69, - 271, 69, 273, 274, 68, 68, 68, 68, 68, 280, - 281, 69, 69, 69, 69, 69, 70, 70, 70, 283, - 70, 284, 70, 75, 75, 75, 285, 75, 288, 75, - 290, 292, 70, 70, 70, 70, 70, 293, 295, 75, - 75, 75, 75, 75, 103, 103, 103, 300, 103, 304, - 103, 104, 104, 104, 307, 104, 308, 104, 311, 312, - 103, 103, 103, 103, 103, 313, 316, 104, 104, 104, - 104, 104, 111, 111, nil, nil, 111, nil, 111, 117, - 117, nil, nil, 117, nil, 117, nil, nil, 111, 111, - 111, 111, 111, nil, nil, 117, 117, 117, 117, 117, - 118, 118, 118, nil, 118, nil, 118, 126, 126, 126, - nil, 126, nil, 126, nil, nil, 118, 118, 118, 118, - 118, nil, nil, 126, 126, 126, 126, 126, 130, 130, - 130, nil, 130, nil, 130, 143, 143, 143, nil, 143, - nil, 143, nil, nil, 130, 130, 130, 130, 130, nil, - nil, 143, 143, 143, 143, 143, 145, 145, 145, nil, - 145, nil, 145, 146, 146, nil, nil, 146, nil, 146, - nil, nil, 145, 145, 145, 145, 145, nil, nil, 146, - 146, 146, 146, 146, 148, 148, 148, nil, 148, nil, - 148, 149, 149, 149, nil, 149, nil, 149, nil, nil, - 148, 148, 148, 148, 148, nil, nil, 149, 149, 149, - 149, 149, 150, 150, 150, nil, 150, nil, 150, 205, - 205, 205, nil, 205, nil, 205, nil, nil, 150, 150, - 150, 150, 150, nil, nil, 205, 205, 205, 205, 205, - 215, 215, nil, nil, 215, nil, 215, 216, 216, 216, - nil, 216, nil, 216, nil, nil, 215, 215, 215, 215, - 215, nil, nil, 216, 216, 216, 216, 216, 217, 217, - 217, nil, 217, nil, 217, 240, 240, 240, nil, 240, - nil, 240, nil, nil, 217, 217, 217, 217, 217, nil, - nil, 240, 240, 240, 240, 240, 244, 244, 244, nil, - 244, nil, 244, 247, 247, 247, nil, 247, nil, 247, - nil, nil, 244, 244, 244, 244, 244, nil, nil, 247, - 247, 247, 247, 247, 249, 249, 249, nil, 249, nil, - 249, 250, 250, 250, nil, 250, nil, 250, nil, nil, - 249, 249, 249, 249, 249, nil, nil, 250, 250, 250, - 250, 250, 251, 251, 251, nil, 251, nil, 251, 262, - 262, 262, nil, 262, nil, 262, nil, nil, 251, 251, - 251, 251, 251, nil, nil, 262, 262, 262, 262, 262, - 263, 263, 263, nil, 263, nil, 263, 310, 310, 310, - nil, 310, nil, 310, nil, nil, 263, 263, 263, 263, - 263, 57, nil, 310, 310, 310, 310, 310, 168, 168, - 168, 57, 168, 57, 168, 57, 212, 57, nil, 254, - nil, nil, nil, nil, 168, nil, 212, 261, 212, 254, - 212, 254, 212, 254, 95, 254, 95, 261, 95, 261, - 95, 261, nil, 261, 270, 270, 270, nil, 270, nil, - 270, 275, 275, 275, nil, 275, nil, 275, nil, nil, - 270, nil, 296, 296, 296, nil, 296, 275, 296, 297, - 297, 297, nil, 297, nil, 297, nil, nil, 296, nil, - 101, 101, 101, nil, 101, 297, 101, 110, 110, nil, - 125, 110, 125, 110, 125, 159, 125, 159, 190, 159, - 190, 159, 190, 191, 190, 191, 233, 191, 233, 191, - 233, 234, 233, 234, nil, 234, nil, 234, 239, 239, - 239, 255, 239, 255, 239, 255, nil, 255 ] - -racc_action_pointer = [ - 63, 4, nil, nil, nil, 0, nil, nil, nil, 2, - 26, nil, 245, 266, -11, nil, 21, 18, 49, nil, - nil, nil, 54, 78, 82, nil, 161, nil, nil, nil, - nil, nil, nil, 112, 138, nil, 273, 42, 60, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 110, 89, nil, 70, nil, -15, 745, 217, 102, - 103, nil, 294, -5, 301, nil, 107, 86, 322, 329, - 350, 129, 100, -5, 126, 357, nil, 117, 115, 137, - nil, nil, nil, nil, nil, nil, nil, 168, 142, 33, - 146, 70, 118, 148, 222, 768, nil, nil, 121, 176, - nil, 814, nil, 378, 385, nil, nil, 180, 193, 194, - 821, 406, 141, 149, nil, 209, 216, 413, 434, nil, - nil, 169, nil, 199, 192, 824, 441, 2, 235, 240, - 462, nil, 238, 254, 40, nil, nil, nil, nil, nil, - nil, nil, nil, 469, 260, 490, 497, 133, 518, 525, - 546, 26, nil, 191, 214, nil, nil, 198, 256, 829, - 262, 184, 263, 246, nil, nil, 199, 238, 742, 270, - nil, nil, nil, nil, nil, nil, nil, nil, 273, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 280, - 832, 837, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 282, nil, nil, 553, nil, nil, nil, nil, - nil, nil, 760, 282, 144, 574, 581, 602, 291, nil, - 289, nil, 290, nil, 33, 285, nil, nil, nil, nil, - 303, nil, 307, 840, 845, nil, 308, nil, 307, 852, - 609, nil, nil, nil, 630, 309, nil, 637, nil, 658, - 665, 686, nil, 307, 763, 855, 301, 302, nil, nil, - 335, 771, 693, 714, 329, 237, nil, 317, 318, nil, - 778, 335, nil, 337, 338, 785, nil, nil, nil, nil, - 341, 354, nil, 357, 359, 364, nil, nil, 372, nil, - 374, nil, 369, 375, nil, 370, 796, 803, nil, nil, - 382, nil, nil, nil, 369, nil, nil, 374, 388, nil, - 721, 390, 397, 403, nil, nil, 398, nil, nil, nil ] - -racc_action_default = [ - -176, -176, -1, -2, -3, -4, -5, -6, -7, -8, - -9, -10, -176, -176, -34, -35, -36, -37, -38, -39, - -40, -41, -176, -49, -51, -52, -176, -64, -67, -68, - -69, -70, -71, -176, -176, -107, -176, -109, -110, -111, - -128, -129, -130, -131, -132, -133, -134, -135, -136, -137, - -138, -176, -176, -76, -176, -112, -176, -176, -176, -8, - -9, -11, -176, -176, -176, -72, -176, -176, -55, -176, - -170, -176, -8, -9, -10, -176, -38, -176, -81, -86, - -87, -88, -90, -91, -92, -93, -94, -176, -176, -176, - -176, -176, -176, -176, -176, -176, 320, -12, -13, -176, - -16, -176, -31, -176, -176, -152, -27, -29, -176, -126, - -176, -176, -176, -176, -28, -30, -176, -176, -176, -153, - -160, -176, -162, -176, -176, -176, -176, -176, -176, -176, - -73, -174, -176, -176, -8, -47, -48, -49, -50, -51, - -53, -54, -58, -56, -176, -171, -176, -176, -98, -97, - -96, -176, -79, -176, -176, -95, -80, -176, -176, -176, - -126, -176, -126, -176, -14, -18, -176, -176, -176, -176, - -147, -148, -149, -150, -145, -151, -146, -114, -44, -59, - -127, -60, -61, -62, -63, -139, -140, -141, -142, -176, - -176, -176, -120, -45, -154, -155, -156, -157, -158, -159, - -161, -163, -176, -29, -30, -176, -26, -42, -77, -43, - -78, -175, -176, -176, -176, -176, -172, -74, -176, -101, - -176, -100, -176, -99, -176, -83, -84, -85, -89, -108, - -176, -113, -176, -176, -176, -117, -176, -19, -176, -176, - -176, -143, -20, -21, -176, -176, -32, -176, -164, -176, - -176, -176, -169, -176, -176, -115, -176, -176, -121, -102, - -176, -176, -75, -173, -44, -176, -116, -176, -176, -118, - -176, -176, -144, -176, -176, -176, -168, -165, -166, -167, - -176, -176, -106, -126, -176, -176, -105, -103, -176, -57, - -176, -82, -176, -176, -23, -176, -176, -176, -15, -33, - -176, -46, -119, -122, -176, -104, -124, -176, -176, -25, - -176, -176, -176, -176, -24, -22, -176, -123, -125, -17 ] - -racc_goto_table = [ - 70, 179, 130, 13, 228, 11, 248, 115, 123, 226, - 227, 113, 245, 5, 14, 9, 63, 11, 68, 10, - 18, 132, 22, 23, 71, 1, 24, 59, 237, 243, - 2, 60, 309, 309, 241, 241, 75, 75, 131, 77, - 88, 3, 4, 70, 162, 163, 6, 160, 161, 61, - 97, 89, 231, 98, 235, 91, 164, 99, 298, 100, - 242, 143, 102, 299, 15, 126, 127, 144, 16, 17, - 75, 142, 11, 145, 135, 204, 109, 174, 151, 203, - 136, 138, 134, 27, 217, 185, 10, 18, 28, 140, - 137, 174, 11, 139, 29, 30, 31, 32, 225, 90, - 155, 105, 59, nil, nil, nil, 60, 176, 248, 230, - nil, nil, nil, 248, 294, 228, nil, nil, nil, nil, - 131, 291, nil, nil, nil, nil, nil, nil, nil, 205, - 206, nil, nil, 211, 248, 248, nil, nil, nil, nil, - 256, 257, nil, nil, nil, nil, 142, nil, 216, nil, - nil, nil, nil, 262, 224, 223, 75, 75, nil, nil, - nil, nil, 259, 219, 220, 220, nil, nil, 221, 222, - nil, nil, nil, nil, nil, 302, nil, nil, nil, nil, - nil, nil, nil, 267, 268, nil, nil, nil, nil, 131, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 282, 283, nil, nil, 206, nil, - nil, 287, nil, nil, 185, nil, nil, nil, 185, 263, - 211, 174, nil, nil, nil, nil, nil, 206, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 277, 278, 279, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 211, 289, nil, 75, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 174 ] - -racc_goto_check = [ - 43, 45, 52, 23, 58, 11, 66, 26, 26, 57, - 57, 24, 16, 5, 30, 9, 23, 11, 42, 10, - 34, 24, 38, 40, 53, 1, 41, 9, 19, 19, - 2, 10, 22, 22, 25, 25, 23, 23, 43, 54, - 54, 3, 4, 43, 26, 26, 6, 24, 24, 7, - 12, 9, 45, 13, 45, 10, 14, 15, 17, 18, - 20, 42, 28, 29, 31, 23, 23, 53, 32, 33, - 23, 23, 11, 23, 39, 26, 44, 43, 23, 24, - 5, 30, 9, 46, 52, 43, 10, 34, 47, 38, - 40, 43, 11, 41, 48, 49, 50, 51, 56, 61, - 5, 65, 9, nil, nil, nil, 10, 23, 66, 26, - nil, nil, nil, 66, 16, 58, nil, nil, nil, nil, - 43, 57, nil, nil, nil, nil, nil, nil, nil, 23, - 23, nil, nil, 23, 66, 66, nil, nil, nil, nil, - 26, 26, nil, nil, nil, nil, 23, nil, 23, nil, - nil, nil, nil, 52, 23, 11, 23, 23, nil, nil, - nil, nil, 26, 9, 9, 9, nil, nil, 10, 10, - nil, nil, nil, nil, nil, 45, nil, nil, nil, nil, - nil, nil, nil, 26, 26, nil, nil, nil, nil, 43, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 26, 26, nil, nil, 23, nil, - nil, 26, nil, nil, 43, nil, nil, nil, 43, 23, - 23, 43, nil, nil, nil, nil, nil, 23, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 23, 23, 23, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 23, 23, nil, 23, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 43 ] - -racc_goto_pointer = [ - nil, 25, 30, 41, 42, 13, 46, 37, nil, 15, - 19, 5, -2, 1, -42, 5, -156, -217, 7, -138, - -107, nil, -264, 3, -45, -132, -50, nil, 10, -212, - 14, 64, 68, 69, 20, nil, nil, nil, 22, 7, - 23, 26, -8, -26, 22, -108, 83, 88, 94, 95, - 96, 97, -62, -2, 6, nil, -55, -144, -150, nil, - nil, 63, nil, nil, nil, 49, -162, nil ] - -racc_goto_default = [ - nil, nil, nil, nil, nil, 84, nil, 7, 8, 72, - 73, 74, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 238, 252, 62, 107, 106, nil, 114, nil, 246, - 86, nil, nil, nil, 76, 19, 20, 21, nil, nil, - 85, nil, nil, 41, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 78, 79, 80, 81, 82, - 83, 35, 37, 38, 39, 119, 120, 122 ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 1, 38, :_reduce_none, - 1, 38, :_reduce_none, - 1, 38, :_reduce_none, - 1, 39, :_reduce_none, - 1, 39, :_reduce_none, - 1, 42, :_reduce_none, - 1, 42, :_reduce_none, - 1, 44, :_reduce_8, - 1, 44, :_reduce_9, - 1, 44, :_reduce_10, - 2, 45, :_reduce_11, - 3, 43, :_reduce_12, - 1, 49, :_reduce_none, - 2, 49, :_reduce_14, - 5, 50, :_reduce_15, - 1, 50, :_reduce_none, - 8, 55, :_reduce_17, - 1, 51, :_reduce_18, - 2, 51, :_reduce_19, - 2, 51, :_reduce_20, - 1, 57, :_reduce_none, - 5, 57, :_reduce_22, - 3, 56, :_reduce_23, - 5, 56, :_reduce_24, - 4, 56, :_reduce_25, - 4, 46, :_reduce_26, - 1, 61, :_reduce_none, - 1, 63, :_reduce_none, - 3, 47, :_reduce_29, - 3, 48, :_reduce_30, - 1, 52, :_reduce_none, - 1, 53, :_reduce_none, - 1, 54, :_reduce_none, - 1, 40, :_reduce_none, - 1, 40, :_reduce_none, - 1, 40, :_reduce_none, - 1, 40, :_reduce_none, - 1, 67, :_reduce_38, - 1, 67, :_reduce_none, - 1, 67, :_reduce_none, - 1, 67, :_reduce_none, - 4, 71, :_reduce_42, - 4, 71, :_reduce_43, - 4, 72, :_reduce_44, - 4, 73, :_reduce_45, - 7, 74, :_reduce_46, - 3, 68, :_reduce_47, - 1, 75, :_reduce_none, - 1, 75, :_reduce_none, - 1, 75, :_reduce_none, - 1, 75, :_reduce_none, - 1, 75, :_reduce_none, - 1, 76, :_reduce_none, - 1, 76, :_reduce_none, - 2, 69, :_reduce_55, - 3, 69, :_reduce_56, - 5, 79, :_reduce_57, - 2, 79, :_reduce_58, - 4, 70, :_reduce_59, - 2, 81, :_reduce_60, - 2, 81, :_reduce_61, - 2, 81, :_reduce_62, - 2, 81, :_reduce_63, - 1, 41, :_reduce_none, - 1, 41, :_reduce_none, - 1, 41, :_reduce_none, - 1, 41, :_reduce_none, - 1, 41, :_reduce_none, - 1, 41, :_reduce_none, - 1, 41, :_reduce_none, - 1, 41, :_reduce_none, - 2, 83, :_reduce_72, - 3, 88, :_reduce_73, - 4, 88, :_reduce_74, - 5, 88, :_reduce_75, - 2, 87, :_reduce_76, - 4, 86, :_reduce_77, - 4, 86, :_reduce_78, - 3, 84, :_reduce_79, - 3, 85, :_reduce_80, - 1, 91, :_reduce_81, - 5, 91, :_reduce_82, - 3, 91, :_reduce_83, - 3, 91, :_reduce_84, - 3, 91, :_reduce_85, - 1, 91, :_reduce_86, - 1, 91, :_reduce_87, - 1, 93, :_reduce_88, - 3, 93, :_reduce_89, - 1, 95, :_reduce_none, - 1, 95, :_reduce_none, - 1, 96, :_reduce_none, - 1, 96, :_reduce_none, - 1, 96, :_reduce_none, - 2, 92, :_reduce_95, - 2, 94, :_reduce_96, - 2, 94, :_reduce_97, - 2, 94, :_reduce_98, - 3, 97, :_reduce_99, - 3, 97, :_reduce_100, - 3, 97, :_reduce_101, - 5, 78, :_reduce_102, - 6, 78, :_reduce_103, - 7, 78, :_reduce_104, - 6, 78, :_reduce_105, - 6, 78, :_reduce_106, - 1, 77, :_reduce_none, - 4, 77, :_reduce_108, - 1, 98, :_reduce_109, - 1, 98, :_reduce_110, - 1, 98, :_reduce_111, - 2, 99, :_reduce_112, - 4, 100, :_reduce_113, - 4, 100, :_reduce_114, - 5, 100, :_reduce_115, - 5, 100, :_reduce_116, - 4, 101, :_reduce_117, - 5, 101, :_reduce_118, - 7, 101, :_reduce_119, - 4, 101, :_reduce_120, - 5, 101, :_reduce_121, - 7, 101, :_reduce_122, - 9, 101, :_reduce_123, - 7, 101, :_reduce_124, - 9, 101, :_reduce_125, - 0, 82, :_reduce_126, - 1, 82, :_reduce_none, - 1, 60, :_reduce_128, - 1, 60, :_reduce_none, - 1, 80, :_reduce_none, - 1, 80, :_reduce_none, - 1, 80, :_reduce_none, - 1, 80, :_reduce_none, - 1, 80, :_reduce_none, - 1, 80, :_reduce_none, - 1, 80, :_reduce_none, - 1, 80, :_reduce_none, - 1, 80, :_reduce_none, - 2, 62, :_reduce_139, - 2, 62, :_reduce_140, - 2, 62, :_reduce_141, - 2, 62, :_reduce_142, - 1, 58, :_reduce_none, - 2, 58, :_reduce_144, - 2, 102, :_reduce_145, - 2, 102, :_reduce_146, - 2, 102, :_reduce_147, - 2, 102, :_reduce_148, - 2, 102, :_reduce_149, - 2, 102, :_reduce_150, - 2, 65, :_reduce_none, - 1, 65, :_reduce_none, - 1, 103, :_reduce_none, - 2, 103, :_reduce_154, - 2, 103, :_reduce_155, - 2, 103, :_reduce_156, - 2, 103, :_reduce_157, - 2, 103, :_reduce_158, - 2, 103, :_reduce_159, - 1, 104, :_reduce_none, - 2, 104, :_reduce_161, - 1, 64, :_reduce_none, - 2, 64, :_reduce_163, - 1, 59, :_reduce_none, - 2, 59, :_reduce_165, - 2, 59, :_reduce_166, - 2, 59, :_reduce_167, - 2, 66, :_reduce_none, - 1, 66, :_reduce_none, - 1, 90, :_reduce_170, - 2, 90, :_reduce_171, - 3, 90, :_reduce_172, - 4, 90, :_reduce_173, - 1, 89, :_reduce_174, - 2, 89, :_reduce_175 ] - -racc_reduce_n = 176 - -racc_shift_n = 320 - -racc_token_table = { - false => 0, - :error => 1, - :T => 2, - :Z => 3, - :E => 4, - :X => 5, - :U => 6, - :UNKNOWN => 7, - :OPEN => 8, - :LONGYEAR => 9, - :UNMATCHED => 10, - :DOTS => 11, - :UA => 12, - :PUA => 13, - "-" => 14, - ":" => 15, - "2" => 16, - "4" => 17, - "0" => 18, - "+" => 19, - "1" => 20, - "/" => 21, - "3" => 22, - "^" => 23, - "[" => 24, - "]" => 25, - "{" => 26, - "}" => 27, - "," => 28, - "(" => 29, - ")" => 30, - "-(" => 31, - "5" => 32, - "6" => 33, - "7" => 34, - "8" => 35, - "9" => 36 } - -racc_nt_base = 37 - -racc_use_result_var = true - -Racc_arg = [ - racc_action_table, - racc_action_check, - racc_action_default, - racc_action_pointer, - racc_goto_table, - racc_goto_check, - racc_goto_default, - racc_goto_pointer, - racc_nt_base, - racc_reduce_table, - racc_token_table, - racc_shift_n, - racc_reduce_n, - racc_use_result_var ] - -Racc_token_to_s_table = [ - "$end", - "error", - "T", - "Z", - "E", - "X", - "U", - "UNKNOWN", - "OPEN", - "LONGYEAR", - "UNMATCHED", - "DOTS", - "UA", - "PUA", - "\"-\"", - "\":\"", - "\"2\"", - "\"4\"", - "\"0\"", - "\"+\"", - "\"1\"", - "\"/\"", - "\"3\"", - "\"^\"", - "\"[\"", - "\"]\"", - "\"{\"", - "\"}\"", - "\",\"", - "\"(\"", - "\")\"", - "\"-(\"", - "\"5\"", - "\"6\"", - "\"7\"", - "\"8\"", - "\"9\"", - "$start", - "edtf", - "level_0_expression", - "level_1_expression", - "level_2_expression", - "date", - "date_time", - "positive_date", - "negative_date", - "year", - "year_month", - "year_month_day", - "time", - "base_time", - "zone_offset", - "hour", - "minute", - "second", - "midnight", - "zone_offset_hour", - "positive_zone_offset", - "d01_13", - "d01_59", - "digit", - "month", - "d01_12", - "day", - "d01_31", - "d00_23", - "d00_59", - "unspecified", - "level_1_interval", - "long_year_simple", - "season", - "unspecified_year", - "unspecified_month", - "unspecified_day", - "unspecified_day_and_month", - "level_1_start", - "level_1_end", - "partial_uncertain_or_approximate", - "partial_unspecified", - "long_year", - "positive_digit", - "season_number", - "ua", - "season_qualified", - "choice_list", - "inclusive_list", - "masked_precision", - "date_and_calendar", - "long_year_scientific", - "integer", - "int1_4", - "list", - "earlier", - "list_elements", - "later", - "list_element", - "atomic", - "consecutives", - "pua_base", - "pua_year", - "pua_year_month", - "pua_year_month_day", - "d01_23", - "d01_29", - "d01_30" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -# reduce 1 omitted - -# reduce 2 omitted - -# reduce 3 omitted - -# reduce 4 omitted - -# reduce 5 omitted - -# reduce 6 omitted - -# reduce 7 omitted - -module_eval(<<'.,.,', 'edtf.y', 54) - def _reduce_8(val, _values, result) - result = Date.new(val[0]).year_precision! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 55) - def _reduce_9(val, _values, result) - result = Date.new(*val.flatten).month_precision! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 56) - def _reduce_10(val, _values, result) - result = Date.new(*val.flatten).day_precision! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 59) - def _reduce_11(val, _values, result) - result = -val[1] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 63) - def _reduce_12(val, _values, result) - result = DateTime.new(val[0].year, val[0].month, val[0].day, *val[2]) - result.skip_timezone = (val[2].length == 3) - - result - end -.,., - -# reduce 13 omitted - -module_eval(<<'.,.,', 'edtf.y', 68) - def _reduce_14(val, _values, result) - result = val.flatten - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 70) - def _reduce_15(val, _values, result) - result = val.values_at(0, 2, 4) - result - end -.,., - -# reduce 16 omitted - -module_eval(<<'.,.,', 'edtf.y', 73) - def _reduce_17(val, _values, result) - result = [24, 0, 0] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 75) - def _reduce_18(val, _values, result) - result = 0 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 76) - def _reduce_19(val, _values, result) - result = -1 * val[1] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 77) - def _reduce_20(val, _values, result) - result = val[1] - result - end -.,., - -# reduce 21 omitted - -module_eval(<<'.,.,', 'edtf.y', 81) - def _reduce_22(val, _values, result) - result = 0 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 85) - def _reduce_23(val, _values, result) - result = Rational(val[0] * 60 + val[2], 1440) - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 86) - def _reduce_24(val, _values, result) - result = Rational(840, 1440) - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 87) - def _reduce_25(val, _values, result) - result = Rational(val[3], 1440) - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 91) - def _reduce_26(val, _values, result) - result = val.zip([1000,100,10,1]).reduce(0) { |s,(a,b)| s += a * b } - - result - end -.,., - -# reduce 27 omitted - -# reduce 28 omitted - -module_eval(<<'.,.,', 'edtf.y', 97) - def _reduce_29(val, _values, result) - result = [val[0], val[2]] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 104) - def _reduce_30(val, _values, result) - result = val[0] << val[2] - if result[2] > 31 || (result[2] > 30 && [2,4,6,9,11].include?(result[1])) || (result[2] > 29 && result[1] == 2) - raise ArgumentError, "invalid date (invalid days #{result[2]} for month #{result[1]})" - end - - result - end -.,., - -# reduce 31 omitted - -# reduce 32 omitted - -# reduce 33 omitted - -# reduce 34 omitted - -# reduce 35 omitted - -# reduce 36 omitted - -# reduce 37 omitted - -module_eval(<<'.,.,', 'edtf.y', 127) - def _reduce_38(val, _values, result) - result = Date.new(val[0][0]).year_precision! - result.unspecified.year[2,2] = val[0][1] - - result - end -.,., - -# reduce 39 omitted - -# reduce 40 omitted - -# reduce 41 omitted - -module_eval(<<'.,.,', 'edtf.y', 138) - def _reduce_42(val, _values, result) - result = [val[0,3].zip([1000,100,10]).reduce(0) { |s,(a,b)| s += a * b }, [false,true]] - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 142) - def _reduce_43(val, _values, result) - result = [val[0,2].zip([1000,100]).reduce(0) { |s,(a,b)| s += a * b }, [true, true]] - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 146) - def _reduce_44(val, _values, result) - result = Date.new(val[0]).unspecified!(:month) - result.precision = :month - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 151) - def _reduce_45(val, _values, result) - result = Date.new(*val[0]).unspecified!(:day) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 155) - def _reduce_46(val, _values, result) - result = Date.new(val[0]).unspecified!([:day,:month]) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 160) - def _reduce_47(val, _values, result) - result = Interval.new(val[0], val[2]) - - result - end -.,., - -# reduce 48 omitted - -# reduce 49 omitted - -# reduce 50 omitted - -# reduce 51 omitted - -# reduce 52 omitted - -# reduce 53 omitted - -# reduce 54 omitted - -module_eval(<<'.,.,', 'edtf.y', 171) - def _reduce_55(val, _values, result) - result = Date.new(val[1]) - result.precision = :year - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 176) - def _reduce_56(val, _values, result) - result = Date.new(-1 * val[2]) - result.precision = :year - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 183) - def _reduce_57(val, _values, result) - result = val.zip([10000,1000,100,10,1]).reduce(0) { |s,(a,b)| s += a * b } - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 185) - def _reduce_58(val, _values, result) - result = 10 * val[0] + val[1] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 190) - def _reduce_59(val, _values, result) - result = Season.new(val[0], val[2]) - val[3].each { |ua| result.send(ua) } - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 194) - def _reduce_60(val, _values, result) - result = 21 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 195) - def _reduce_61(val, _values, result) - result = 22 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 196) - def _reduce_62(val, _values, result) - result = 23 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 197) - def _reduce_63(val, _values, result) - result = 24 - result - end -.,., - -# reduce 64 omitted - -# reduce 65 omitted - -# reduce 66 omitted - -# reduce 67 omitted - -# reduce 68 omitted - -# reduce 69 omitted - -# reduce 70 omitted - -# reduce 71 omitted - -module_eval(<<'.,.,', 'edtf.y', 215) - def _reduce_72(val, _values, result) - result = val[0]; result.qualifier = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 221) - def _reduce_73(val, _values, result) - result = Date.new(val[0].year * 10 ** val[2]).year_precision! - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 225) - def _reduce_74(val, _values, result) - result = Date.new(val[1] * 10 ** val[3]).year_precision! - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 229) - def _reduce_75(val, _values, result) - result = Date.new(-1 * val[2] * 10 ** val[4]).year_precision! - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 234) - def _reduce_76(val, _values, result) - result = val[0]; result.calendar = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 240) - def _reduce_77(val, _values, result) - d = val[0,3].zip([1000,100,10]).reduce(0) { |s,(a,b)| s += a * b } - result = EDTF::Decade.new(d) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 245) - def _reduce_78(val, _values, result) - d = val[0,2].zip([1000,100]).reduce(0) { |s,(a,b)| s += a * b } - result = EDTF::Century.new(d) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 251) - def _reduce_79(val, _values, result) - result = val[1].choice! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 253) - def _reduce_80(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 255) - def _reduce_81(val, _values, result) - result = EDTF::Set.new(val[0]).earlier! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 256) - def _reduce_82(val, _values, result) - result = EDTF::Set.new([val[0]] + val[2] + [val[4]]).earlier!.later! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 257) - def _reduce_83(val, _values, result) - result = EDTF::Set.new([val[0]] + val[2]).earlier! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 258) - def _reduce_84(val, _values, result) - result = EDTF::Set.new([val[0]] + [val[2]]).earlier!.later! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 259) - def _reduce_85(val, _values, result) - result = EDTF::Set.new(val[0] + [val[2]]).later! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 260) - def _reduce_86(val, _values, result) - result = EDTF::Set.new(*val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 261) - def _reduce_87(val, _values, result) - result = EDTF::Set.new(val[0]).later! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 264) - def _reduce_88(val, _values, result) - result = [val[0]].flatten - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 265) - def _reduce_89(val, _values, result) - result = val[0] + [val[2]].flatten - result - end -.,., - -# reduce 90 omitted - -# reduce 91 omitted - -# reduce 92 omitted - -# reduce 93 omitted - -# reduce 94 omitted - -module_eval(<<'.,.,', 'edtf.y', 277) - def _reduce_95(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 279) - def _reduce_96(val, _values, result) - result = Date.new(*val[0]).year_precision! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 280) - def _reduce_97(val, _values, result) - result = Date.new(*val[0]).month_precision! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 281) - def _reduce_98(val, _values, result) - result = Date.new(val[0]).year_precision! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 284) - def _reduce_99(val, _values, result) - result = (Date.new(val[0]).day_precision! .. Date.new(val[2]).day_precision!) - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 285) - def _reduce_100(val, _values, result) - result = (Date.new(val[0]).month_precision! .. Date.new(val[2]).month_precision!) - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 286) - def _reduce_101(val, _values, result) - result = (Date.new(val[0]).year_precision! .. Date.new(val[2]).year_precision!) - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 292) - def _reduce_102(val, _values, result) - result = Date.new(val[0][0], val[2], val[4]) - result.unspecified.year[2,2] = val[0][1] - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 297) - def _reduce_103(val, _values, result) - result = Date.new(val[0][0], 1, val[5]) - result.unspecified.year[2,2] = val[0][1] - result.unspecified!(:month) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 303) - def _reduce_104(val, _values, result) - result = Date.new(val[0][0], 1, 1) - result.unspecified.year[2,2] = val[0][1] - result.unspecified!([:month, :day]) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 309) - def _reduce_105(val, _values, result) - result = Date.new(val[0][0], val[2], 1) - result.unspecified.year[2,2] = val[0][1] - result.unspecified!(:day) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 315) - def _reduce_106(val, _values, result) - result = Date.new(val[0], 1, val[5]) - result.unspecified!(:month) - - result - end -.,., - -# reduce 107 omitted - -module_eval(<<'.,.,', 'edtf.y', 322) - def _reduce_108(val, _values, result) - result = uoa(val[1], val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 325) - def _reduce_109(val, _values, result) - result = val[0].year_precision! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 326) - def _reduce_110(val, _values, result) - result = val[0][0].month_precision! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 327) - def _reduce_111(val, _values, result) - result = val[0].day_precision! - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 329) - def _reduce_112(val, _values, result) - result = uoa(Date.new(val[0]), val[1], :year) - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 333) - def _reduce_113(val, _values, result) - result = [uoa(val[0].change(:month => val[2]), val[3], [:month, :year])] - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 336) - def _reduce_114(val, _values, result) - result = [uoa(Date.new(val[0], val[2]), val[3], [:year, :month])] - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 339) - def _reduce_115(val, _values, result) - result = [uoa(Date.new(val[0], val[2]), val[4], [:month]), true] - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 342) - def _reduce_116(val, _values, result) - result = [uoa(val[0].change(:month => val[2]), val[4], [:month]), true] - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 348) - def _reduce_117(val, _values, result) - result = uoa(val[0][0].change(:day => val[2]), val[3], val[0][1] ? [:day] : nil) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 351) - def _reduce_118(val, _values, result) - result = uoa(val[0][0].change(:day => val[2]), val[4], [:day]) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 354) - def _reduce_119(val, _values, result) - result = uoa(uoa(Date.new(val[0], val[2], val[5]), val[4], :month), val[6], :day) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 357) - def _reduce_120(val, _values, result) - result = uoa(Date.new(val[0][0], val[0][1], val[2]), val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 360) - def _reduce_121(val, _values, result) - result = uoa(Date.new(val[0][0], val[0][1], val[2]), val[4], [:day]) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 363) - def _reduce_122(val, _values, result) - result = uoa(Date.new(val[0], val[2], val[4]), val[6], [:month, :day]) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 366) - def _reduce_123(val, _values, result) - result = Date.new(val[0], val[2], val[4]) - result = uoa(result, val[6], [:day]) - result = uoa(result, val[8], [:month, :day]) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 371) - def _reduce_124(val, _values, result) - result = val[0].change(:month => val[2], :day => val[4]) - result = uoa(result, val[6], [:month, :day]) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 375) - def _reduce_125(val, _values, result) - result = val[0].change(:month => val[2], :day => val[4]) - result = uoa(result, val[6], [:day]) - result = uoa(result, val[8], [:month, :day]) - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 386) - def _reduce_126(val, _values, result) - result = [] - result - end -.,., - -# reduce 127 omitted - -module_eval(<<'.,.,', 'edtf.y', 390) - def _reduce_128(val, _values, result) - result = 0 - result - end -.,., - -# reduce 129 omitted - -# reduce 130 omitted - -# reduce 131 omitted - -# reduce 132 omitted - -# reduce 133 omitted - -# reduce 134 omitted - -# reduce 135 omitted - -# reduce 136 omitted - -# reduce 137 omitted - -# reduce 138 omitted - -module_eval(<<'.,.,', 'edtf.y', 396) - def _reduce_139(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 397) - def _reduce_140(val, _values, result) - result = 10 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 398) - def _reduce_141(val, _values, result) - result = 11 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 399) - def _reduce_142(val, _values, result) - result = 12 - result - end -.,., - -# reduce 143 omitted - -module_eval(<<'.,.,', 'edtf.y', 403) - def _reduce_144(val, _values, result) - result = 13 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 406) - def _reduce_145(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 407) - def _reduce_146(val, _values, result) - result = 10 + val[1] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 408) - def _reduce_147(val, _values, result) - result = 20 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 409) - def _reduce_148(val, _values, result) - result = 21 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 410) - def _reduce_149(val, _values, result) - result = 22 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 411) - def _reduce_150(val, _values, result) - result = 23 - result - end -.,., - -# reduce 151 omitted - -# reduce 152 omitted - -# reduce 153 omitted - -module_eval(<<'.,.,', 'edtf.y', 419) - def _reduce_154(val, _values, result) - result = 24 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 420) - def _reduce_155(val, _values, result) - result = 25 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 421) - def _reduce_156(val, _values, result) - result = 26 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 422) - def _reduce_157(val, _values, result) - result = 27 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 423) - def _reduce_158(val, _values, result) - result = 28 - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 424) - def _reduce_159(val, _values, result) - result = 29 - result - end -.,., - -# reduce 160 omitted - -module_eval(<<'.,.,', 'edtf.y', 428) - def _reduce_161(val, _values, result) - result = 30 - result - end -.,., - -# reduce 162 omitted - -module_eval(<<'.,.,', 'edtf.y', 432) - def _reduce_163(val, _values, result) - result = 31 - result - end -.,., - -# reduce 164 omitted - -module_eval(<<'.,.,', 'edtf.y', 436) - def _reduce_165(val, _values, result) - result = 30 + val[1] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 437) - def _reduce_166(val, _values, result) - result = 40 + val[1] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 438) - def _reduce_167(val, _values, result) - result = 50 + val[1] - result - end -.,., - -# reduce 168 omitted - -# reduce 169 omitted - -module_eval(<<'.,.,', 'edtf.y', 445) - def _reduce_170(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 446) - def _reduce_171(val, _values, result) - result = 10 * val[0] + val[1] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 449) - def _reduce_172(val, _values, result) - result = val.zip([100,10,1]).reduce(0) { |s,(a,b)| s += a * b } - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 453) - def _reduce_173(val, _values, result) - result = val.zip([1000,100,10,1]).reduce(0) { |s,(a,b)| s += a * b } - - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 457) - def _reduce_174(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'edtf.y', 458) - def _reduce_175(val, _values, result) - result = 10 * val[0] + val[1] - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser -end # module EDTF diff --git a/test/racc/regress/huia b/test/racc/regress/huia deleted file mode 100644 index cac22873df..0000000000 --- a/test/racc/regress/huia +++ /dev/null @@ -1,1681 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.2 -# from Racc grammar file "". -# - -require 'racc/parser.rb' -module Huia - class Parser < Racc::Parser - -module_eval(<<'...end huia.y/module_eval...', 'huia.y', 211) - -attr_accessor :lexer, :scopes, :state - -def initialize lexer - @lexer = lexer - @state = [] - @scopes = [] - push_scope -end - -def ast - @ast ||= do_parse - @scopes.first -end - -def on_error t, val, vstack - line = lexer.line - col = lexer.column - message = "Unexpected #{token_to_str t} at #{lexer.filename} line #{line}:#{col}:\n\n" - - start = line - 5 > 0 ? line - 5 : 0 - i_size = line.to_s.size - (start..(start + 5)).each do |i| - message << sprintf("\t%#{i_size}d: %s\n", i, lexer.get_line(i)) - message << "\t#{' ' * i_size} #{'-' * (col - 1)}^\n" if i == line - end - - raise SyntaxError, message -end - -def next_token - nt = lexer.next_computed_token - # just use a state stack for now, we'll have to do something - # more sophisticated soon. - if nt && nt.first == :state - if nt.last - state.push << nt.last - else - state.pop - end - next_token - else - nt - end -end - -def push_scope - new_scope = Huia::AST::Scope.new scope - new_scope.file = lexer.filename - new_scope.line = lexer.line - new_scope.column = lexer.column - scopes.push new_scope - new_scope -end - -def pop_scope - scopes.pop -end - -def scope - scopes.last -end - -def binary left, right, method - node(:MethodCall, left, node(:CallSignature, method, [right])) -end - -def unary left, method - node(:MethodCall, left, node(:CallSignature, method)) -end - -def node type, *args - Huia::AST.const_get(type).new(*args).tap do |n| - n.file = lexer.filename - n.line = lexer.line - n.column = lexer.column - end -end -alias n node - -def allocate_local name - node(:Variable, name).tap do |n| - scope.allocate_local n - end -end - -def allocate_local_assignment name, value - node(:Assignment, name, value).tap do |n| - scope.allocate_local n - end -end - -def this_closure - allocate_local('@') -end - -def scope_instance - node(:ScopeInstance, scope) -end - -def constant name - return scope_instance if name == 'self' - node(:Constant, name) -end - -def to_string expr - node(:MethodCall, expr, node(:CallSignature, 'toString')) -end -...end huia.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - 81, 106, 40, 37, 61, 62, 123, 153, 135, 71, - 72, 77, 155, 178, 179, 39, 164, 37, 37, 5, - 6, 137, 152, 73, 74, 75, 36, 36, 76, 28, - 154, 80, 166, 172, 180, 22, 23, 37, 26, 27, - 182, 60, 63, 19, 164, 40, 36, 61, 62, 186, - nil, 33, 71, 72, 77, nil, nil, 134, 39, 133, - 129, 37, 5, 6, nil, nil, 73, 74, 75, nil, - 36, 76, 28, 134, 80, 169, 129, nil, 22, 23, - nil, 26, 27, nil, 60, 63, 19, nil, 40, nil, - 61, 62, nil, nil, 33, 71, 72, 77, nil, nil, - nil, 39, nil, nil, 37, nil, nil, nil, nil, 73, - 74, 75, nil, 36, 76, 28, nil, 80, nil, nil, - nil, 22, 23, nil, 26, 27, nil, 60, 63, 19, - nil, 40, nil, 61, 62, nil, nil, 33, 71, 72, - 77, nil, nil, nil, 39, nil, nil, 37, nil, nil, - nil, nil, 73, 74, 75, nil, 36, 76, 28, nil, - 80, nil, nil, nil, 22, 23, nil, 26, 27, nil, - 60, 63, 19, nil, 40, nil, 61, 62, nil, nil, - 33, 71, 72, 77, nil, nil, nil, 39, nil, nil, - 37, nil, nil, nil, nil, 73, 74, 75, nil, 36, - 76, 28, nil, 80, nil, nil, nil, 22, 23, nil, - 26, 27, nil, 60, 63, 19, nil, 40, nil, 61, - 62, nil, nil, 33, 71, 72, 77, nil, 114, nil, - 39, nil, nil, 37, nil, nil, 113, nil, 73, 74, - 75, nil, 36, 76, 28, nil, 80, nil, nil, nil, - 22, 23, nil, 26, 27, nil, 60, 63, 19, nil, - 40, nil, 61, 62, nil, nil, 33, 71, 72, 77, - nil, nil, nil, 39, nil, nil, 37, nil, nil, nil, - nil, 73, 74, 75, nil, 36, 76, 28, nil, 80, - nil, nil, nil, 22, 23, nil, 26, 27, nil, 60, - 63, 19, nil, 40, nil, 61, 62, nil, nil, 33, - 71, 72, 77, nil, nil, nil, 39, nil, nil, 37, - nil, nil, nil, nil, 73, 74, 75, nil, 36, 76, - 28, nil, 80, nil, nil, nil, 22, 23, nil, 26, - 27, nil, 60, 63, 19, nil, 40, nil, 61, 62, - nil, nil, 33, 71, 72, 77, nil, nil, nil, 39, - nil, nil, 37, nil, nil, nil, nil, 73, 74, 75, - nil, 36, 76, 28, nil, 80, nil, nil, nil, 22, - 23, nil, 26, 27, nil, 60, 63, 19, nil, 40, - nil, 61, 62, nil, nil, 33, 71, 72, 77, nil, - nil, nil, 39, nil, nil, 37, nil, nil, nil, nil, - 73, 74, 75, nil, 36, 76, 28, nil, 80, nil, - nil, nil, 22, 23, nil, 26, 27, nil, 60, 63, - 19, nil, 40, nil, 61, 62, nil, nil, 33, 71, - 72, 77, nil, nil, nil, 39, nil, nil, 37, nil, - nil, nil, nil, 73, 74, 75, nil, 36, 76, 28, - nil, 80, nil, nil, nil, 22, 23, nil, 26, 27, - nil, 60, 63, 19, nil, 40, nil, 61, 62, nil, - nil, 33, 71, 72, 77, nil, nil, nil, 39, nil, - nil, 37, nil, nil, nil, nil, 73, 74, 75, nil, - 36, 76, 28, nil, 80, nil, nil, nil, 22, 23, - nil, 26, 27, nil, 60, 63, 19, nil, 40, nil, - 61, 62, nil, nil, 33, 71, 72, 77, nil, nil, - nil, 39, nil, nil, 37, nil, nil, nil, nil, 73, - 74, 75, nil, 36, 76, 28, nil, 80, nil, nil, - nil, 22, 23, nil, 26, 27, nil, 60, 63, 19, - nil, 40, nil, 61, 62, nil, nil, 33, 71, 72, - 77, nil, nil, nil, 39, nil, nil, 37, nil, nil, - nil, nil, 73, 74, 75, nil, 36, 76, 28, nil, - 80, nil, nil, nil, 22, 23, nil, 26, 27, nil, - 60, 63, 19, nil, 40, nil, 61, 62, nil, nil, - 33, 71, 72, 77, nil, nil, nil, 39, nil, nil, - 37, nil, nil, nil, nil, 73, 74, 75, nil, 36, - 76, 28, nil, 80, nil, nil, nil, 22, 23, nil, - 26, 27, nil, 60, 63, 19, nil, 40, nil, 61, - 62, nil, nil, 33, 71, 72, 77, nil, nil, nil, - 39, nil, nil, 37, nil, nil, nil, nil, 73, 74, - 75, nil, 36, 76, 28, nil, 80, nil, nil, nil, - 22, 23, nil, 26, 27, nil, 60, 63, 19, nil, - 40, nil, 61, 62, nil, nil, 33, 71, 72, 77, - nil, nil, nil, 39, nil, nil, 37, nil, nil, nil, - nil, 73, 74, 75, nil, 36, 76, 28, nil, 80, - nil, nil, nil, 22, 23, nil, 26, 27, nil, 60, - 63, 19, nil, 40, nil, 61, 62, nil, nil, 33, - 71, 72, 77, nil, nil, nil, 39, nil, nil, 37, - nil, nil, nil, nil, 73, 74, 75, nil, 36, 76, - 28, nil, 80, nil, nil, nil, 22, 23, nil, 26, - 27, nil, 60, 63, 19, nil, 40, nil, 61, 62, - nil, nil, 33, 71, 72, 77, nil, nil, nil, 39, - nil, nil, 37, nil, nil, nil, nil, 73, 74, 75, - nil, 36, 76, 28, nil, 80, nil, nil, nil, 22, - 23, nil, 26, 27, nil, 60, 63, 19, nil, 40, - nil, 61, 62, nil, nil, 33, 71, 72, 77, nil, - nil, nil, 39, nil, nil, 37, nil, nil, nil, nil, - 73, 74, 75, nil, 36, 76, 28, nil, 80, nil, - nil, nil, 22, 23, nil, 26, 27, nil, 60, 63, - 19, nil, 40, nil, 61, 62, nil, nil, 33, 71, - 72, 77, nil, nil, nil, 39, nil, nil, 37, nil, - nil, nil, nil, 73, 74, 75, nil, 36, 76, 28, - nil, 80, nil, nil, nil, 22, 23, nil, 26, 27, - nil, 60, 63, 19, nil, 40, nil, 61, 62, nil, - nil, 33, 71, 72, 77, nil, nil, nil, 39, nil, - nil, 37, nil, nil, nil, nil, 73, 74, 75, nil, - 36, 76, 28, nil, 80, nil, nil, nil, 22, 23, - nil, 26, 27, nil, 60, 63, 19, nil, 40, nil, - 61, 62, nil, nil, 33, 71, 72, 77, nil, nil, - nil, 39, nil, nil, 37, nil, nil, nil, nil, 73, - 74, 75, nil, 36, 76, 28, nil, 80, nil, nil, - nil, 22, 23, nil, 26, 27, nil, 60, 63, 19, - nil, 40, nil, 61, 62, nil, nil, 33, 71, 72, - 77, nil, nil, nil, 39, nil, nil, 37, nil, nil, - nil, nil, 73, 74, 75, nil, 36, 76, 28, nil, - 80, nil, nil, nil, 22, 23, nil, 26, 27, nil, - 60, 63, 19, nil, 40, nil, 61, 62, nil, nil, - 33, 71, 72, 77, nil, nil, nil, 39, nil, nil, - 37, nil, nil, nil, nil, 73, 74, 75, nil, 36, - 76, 28, nil, 80, nil, nil, nil, 22, 23, nil, - 26, 27, nil, 60, 63, 19, nil, 40, nil, 61, - 62, nil, nil, 33, 71, 72, 77, nil, nil, 160, - 39, nil, nil, 37, 5, 6, nil, nil, 73, 74, - 75, nil, 36, 76, 28, nil, 80, nil, nil, nil, - 22, 23, nil, 26, 27, nil, 60, 63, 19, nil, - 40, nil, 61, 62, nil, nil, 33, 71, 72, 77, - nil, nil, nil, 39, nil, nil, 37, nil, nil, nil, - nil, 73, 74, 75, nil, 36, 76, 28, nil, 80, - nil, nil, nil, 22, 23, nil, 26, 27, nil, 60, - 63, 19, nil, 40, nil, 61, 62, nil, nil, 33, - 71, 72, 77, nil, nil, nil, 39, nil, nil, 37, - nil, nil, nil, nil, 73, 74, 75, nil, 36, 76, - 28, nil, 80, nil, nil, nil, 22, 23, nil, 26, - 27, nil, 60, 63, 19, nil, 40, nil, 61, 62, - nil, nil, 33, 71, 72, 77, nil, nil, nil, 39, - nil, nil, 37, nil, nil, nil, nil, 73, 74, 75, - nil, 36, 76, 28, nil, 80, nil, nil, nil, 22, - 23, nil, 26, 27, nil, 60, 63, 19, nil, 40, - nil, 61, 62, nil, nil, 33, 71, 72, 77, nil, - nil, nil, 39, nil, nil, 37, nil, nil, nil, nil, - 73, 74, 75, nil, 36, 76, 28, nil, 80, nil, - nil, nil, 22, 23, nil, 26, 27, nil, 60, 63, - 19, nil, 40, nil, 61, 62, nil, nil, 33, 71, - 72, 77, nil, nil, nil, 39, nil, nil, 37, nil, - nil, nil, nil, 73, 74, 75, nil, 36, 76, 28, - nil, 80, nil, nil, nil, 22, 23, nil, 26, 27, - nil, 60, 63, 19, nil, 40, nil, 61, 62, nil, - nil, 33, 71, 72, 77, nil, nil, 160, 39, nil, - nil, 37, 5, 6, nil, nil, 73, 74, 75, nil, - 36, 76, 28, nil, 80, nil, nil, nil, 22, 23, - nil, 26, 27, nil, 60, 63, 19, nil, 40, nil, - 61, 62, nil, nil, 33, 71, 72, 77, nil, nil, - nil, 39, nil, nil, 37, nil, nil, nil, nil, 73, - 74, 75, nil, 36, 76, 28, nil, 80, nil, nil, - nil, 22, 23, nil, 26, 27, nil, 60, 63, 19, - 85, 86, 87, 88, nil, 84, nil, 33, 89, nil, - nil, nil, nil, 84, 91, 5, 6, 85, 86, 87, - 88, nil, 91, nil, nil, 89, nil, nil, nil, nil, - 84, nil, 92, 93, 94, 95, 96, 97, 98, 91, - 92, 93, 94, 95, 96, 97, 98, nil, 90, nil, - nil, nil, nil, nil, nil, nil, nil, 92, 93, 94, - 95, 96, 97, 98, nil, 90, 85, 86, 87, 88, - nil, nil, nil, nil, 89, nil, nil, nil, nil, 84, - nil, 85, 86, 87, 88, 156, nil, nil, 91, 89, - nil, nil, nil, nil, 84, nil, nil, nil, nil, nil, - nil, nil, nil, 91, nil, nil, 92, 93, 94, 95, - 96, 97, 98, nil, 90, nil, nil, nil, nil, nil, - nil, 92, 93, 94, 95, 96, 97, 98, nil, 90, - 85, 86, 87, 88, nil, nil, nil, nil, 89, nil, - nil, nil, nil, 84, nil, 165, 85, 86, 87, 88, - nil, nil, 91, nil, 89, nil, nil, nil, 167, 84, - nil, nil, nil, nil, nil, nil, nil, nil, 91, nil, - 92, 93, 94, 95, 96, 97, 98, nil, 90, nil, - nil, nil, nil, nil, nil, nil, 92, 93, 94, 95, - 96, 97, 98, nil, 90, 85, 86, 87, 88, nil, - nil, nil, nil, 89, nil, nil, nil, nil, 84, nil, - 85, 86, 87, 88, nil, nil, nil, 91, 89, nil, - nil, nil, nil, 84, nil, nil, nil, nil, nil, nil, - nil, nil, 91, nil, nil, 92, 93, 94, 95, 96, - 97, 98, nil, 90, nil, nil, nil, nil, nil, nil, - 92, 93, 94, 95, 96, 97, 98, nil, 90, 85, - 86, 87, 88, nil, nil, nil, nil, 89, nil, nil, - nil, nil, 84, nil, 85, 86, 87, 88, nil, nil, - nil, 91, 89, nil, nil, nil, nil, 84, nil, nil, - nil, nil, nil, nil, nil, nil, 91, nil, nil, 92, - 93, 94, 95, 96, 97, 98, nil, 90, nil, nil, - nil, nil, nil, nil, 92, 93, 94, 95, 96, 97, - 98, nil, 90, 85, 86, 87, 88, nil, nil, nil, - nil, 89, nil, nil, nil, nil, 84, nil, 85, 86, - 87, 88, nil, nil, nil, 91, 89, nil, nil, nil, - nil, 84, nil, nil, nil, nil, nil, nil, nil, nil, - 91, nil, nil, 92, 93, 94, 95, 96, 97, 98, - nil, 90, nil, nil, nil, nil, nil, nil, 92, 93, - 94, 95, 96, 97, 98, nil, 90, 85, 86, 87, - 88, nil, nil, nil, nil, 89, nil, nil, nil, nil, - 84, nil, 85, 86, 87, 88, nil, nil, nil, 91, - 89, nil, nil, nil, nil, 84, nil, nil, nil, nil, - nil, nil, nil, nil, 91, nil, nil, 92, 93, 94, - 95, 96, 97, 98, nil, 90, nil, nil, nil, nil, - nil, nil, 92, 93, 94, 95, 96, 97, 98, nil, - 90, 85, 86, 87, 88, nil, nil, nil, nil, 89, - nil, 160, nil, nil, 84, nil, 5, 6, 85, 86, - 87, 88, nil, 91, nil, nil, 89, nil, nil, nil, - nil, 84, nil, nil, nil, nil, nil, nil, nil, nil, - 91, 92, 93, 94, 95, 96, 97, 98, nil, 90, - nil, nil, nil, nil, nil, nil, nil, nil, 92, 93, - 94, 95, 96, 97, 98, nil, 90, 85, 86, 87, - 88, nil, nil, nil, nil, 89, nil, nil, nil, nil, - 84, nil, 85, 86, 87, 88, nil, nil, nil, 91, - 89, nil, nil, nil, nil, 84, nil, 181, nil, nil, - nil, nil, nil, nil, 91, nil, nil, 92, 93, 94, - 95, 96, 97, 98, nil, 90, nil, nil, nil, nil, - nil, nil, 92, 93, 94, 95, 96, 97, 98, nil, - 90, 85, 86, 87, 88, nil, nil, nil, nil, 89, - nil, nil, nil, nil, 84, nil, 85, 86, 87, 88, - nil, nil, nil, 91, 89, nil, nil, nil, nil, 84, - nil, nil, nil, nil, nil, nil, nil, nil, 91, nil, - nil, 92, 93, 94, 95, 96, 97, 98, nil, 90, - nil, nil, nil, nil, nil, nil, 92, 93, 94, 95, - 96, 97, 98, nil, 90, 87, 88, nil, nil, nil, - nil, 89, nil, nil, nil, nil, 84, 87, 88, nil, - nil, nil, nil, 89, nil, 91, nil, nil, 84, nil, - 87, 88, nil, nil, nil, nil, 89, 91, nil, nil, - nil, 84, nil, 92, 93, 94, 95, 96, 97, 98, - 91, 90, nil, nil, nil, 92, 93, 94, 95, 96, - 97, 98, nil, 90, nil, nil, nil, nil, 92, 93, - 94, 95, 96, 97, 98, 89, 90, 87, 88, nil, - 84, nil, nil, 89, nil, nil, nil, nil, 84, 91, - nil, nil, nil, nil, nil, nil, nil, 91, nil, nil, - 89, nil, nil, nil, nil, 84, nil, 92, 93, 94, - 95, 96, 97, 98, 91, 92, 93, 94, 95, 96, - 97, 98, nil, 90, nil, 89, nil, nil, nil, nil, - 84, nil, 92, 93, 94, 95, 96, 97, 98, 91, - 89, nil, nil, nil, nil, 84, nil, nil, nil, nil, - 89, nil, nil, nil, 91, 84, nil, 92, 93, 94, - 95, 96, 97, 98, 91, nil, nil, nil, nil, nil, - nil, nil, 92, 93, 94, 95, 96, 97, 98, nil, - nil, nil, 92, 93, 94, 95, 96, 97, 98 ] - -racc_action_check = [ - 1, 33, 1, 34, 1, 1, 40, 100, 81, 1, - 1, 1, 102, 161, 161, 1, 112, 33, 1, 1, - 1, 84, 100, 1, 1, 1, 33, 1, 1, 1, - 102, 1, 121, 131, 163, 1, 1, 84, 1, 1, - 178, 1, 1, 1, 179, 0, 84, 0, 0, 183, - nil, 1, 0, 0, 0, nil, nil, 80, 0, 80, - 80, 0, 0, 0, nil, nil, 0, 0, 0, nil, - 0, 0, 0, 128, 0, 128, 128, nil, 0, 0, - nil, 0, 0, nil, 0, 0, 0, nil, 19, nil, - 19, 19, nil, nil, 0, 19, 19, 19, nil, nil, - nil, 19, nil, nil, 19, nil, nil, nil, nil, 19, - 19, 19, nil, 19, 19, 19, nil, 19, nil, nil, - nil, 19, 19, nil, 19, 19, nil, 19, 19, 19, - nil, 23, nil, 23, 23, nil, nil, 19, 23, 23, - 23, nil, nil, nil, 23, nil, nil, 23, nil, nil, - nil, nil, 23, 23, 23, nil, 23, 23, 23, nil, - 23, nil, nil, nil, 23, 23, nil, 23, 23, nil, - 23, 23, 23, nil, 27, nil, 27, 27, nil, nil, - 23, 27, 27, 27, nil, nil, nil, 27, nil, nil, - 27, nil, nil, nil, nil, 27, 27, 27, nil, 27, - 27, 27, nil, 27, nil, nil, nil, 27, 27, nil, - 27, 27, nil, 27, 27, 27, nil, 37, nil, 37, - 37, nil, nil, 27, 37, 37, 37, nil, 37, nil, - 37, nil, nil, 37, nil, nil, 37, nil, 37, 37, - 37, nil, 37, 37, 37, nil, 37, nil, nil, nil, - 37, 37, nil, 37, 37, nil, 37, 37, 37, nil, - 39, nil, 39, 39, nil, nil, 37, 39, 39, 39, - nil, nil, nil, 39, nil, nil, 39, nil, nil, nil, - nil, 39, 39, 39, nil, 39, 39, 39, nil, 39, - nil, nil, nil, 39, 39, nil, 39, 39, nil, 39, - 39, 39, nil, 60, nil, 60, 60, nil, nil, 39, - 60, 60, 60, nil, nil, nil, 60, nil, nil, 60, - nil, nil, nil, nil, 60, 60, 60, nil, 60, 60, - 60, nil, 60, nil, nil, nil, 60, 60, nil, 60, - 60, nil, 60, 60, 60, nil, 61, nil, 61, 61, - nil, nil, 60, 61, 61, 61, nil, nil, nil, 61, - nil, nil, 61, nil, nil, nil, nil, 61, 61, 61, - nil, 61, 61, 61, nil, 61, nil, nil, nil, 61, - 61, nil, 61, 61, nil, 61, 61, 61, nil, 62, - nil, 62, 62, nil, nil, 61, 62, 62, 62, nil, - nil, nil, 62, nil, nil, 62, nil, nil, nil, nil, - 62, 62, 62, nil, 62, 62, 62, nil, 62, nil, - nil, nil, 62, 62, nil, 62, 62, nil, 62, 62, - 62, nil, 63, nil, 63, 63, nil, nil, 62, 63, - 63, 63, nil, nil, nil, 63, nil, nil, 63, nil, - nil, nil, nil, 63, 63, 63, nil, 63, 63, 63, - nil, 63, nil, nil, nil, 63, 63, nil, 63, 63, - nil, 63, 63, 63, nil, 85, nil, 85, 85, nil, - nil, 63, 85, 85, 85, nil, nil, nil, 85, nil, - nil, 85, nil, nil, nil, nil, 85, 85, 85, nil, - 85, 85, 85, nil, 85, nil, nil, nil, 85, 85, - nil, 85, 85, nil, 85, 85, 85, nil, 86, nil, - 86, 86, nil, nil, 85, 86, 86, 86, nil, nil, - nil, 86, nil, nil, 86, nil, nil, nil, nil, 86, - 86, 86, nil, 86, 86, 86, nil, 86, nil, nil, - nil, 86, 86, nil, 86, 86, nil, 86, 86, 86, - nil, 87, nil, 87, 87, nil, nil, 86, 87, 87, - 87, nil, nil, nil, 87, nil, nil, 87, nil, nil, - nil, nil, 87, 87, 87, nil, 87, 87, 87, nil, - 87, nil, nil, nil, 87, 87, nil, 87, 87, nil, - 87, 87, 87, nil, 88, nil, 88, 88, nil, nil, - 87, 88, 88, 88, nil, nil, nil, 88, nil, nil, - 88, nil, nil, nil, nil, 88, 88, 88, nil, 88, - 88, 88, nil, 88, nil, nil, nil, 88, 88, nil, - 88, 88, nil, 88, 88, 88, nil, 89, nil, 89, - 89, nil, nil, 88, 89, 89, 89, nil, nil, nil, - 89, nil, nil, 89, nil, nil, nil, nil, 89, 89, - 89, nil, 89, 89, 89, nil, 89, nil, nil, nil, - 89, 89, nil, 89, 89, nil, 89, 89, 89, nil, - 90, nil, 90, 90, nil, nil, 89, 90, 90, 90, - nil, nil, nil, 90, nil, nil, 90, nil, nil, nil, - nil, 90, 90, 90, nil, 90, 90, 90, nil, 90, - nil, nil, nil, 90, 90, nil, 90, 90, nil, 90, - 90, 90, nil, 91, nil, 91, 91, nil, nil, 90, - 91, 91, 91, nil, nil, nil, 91, nil, nil, 91, - nil, nil, nil, nil, 91, 91, 91, nil, 91, 91, - 91, nil, 91, nil, nil, nil, 91, 91, nil, 91, - 91, nil, 91, 91, 91, nil, 92, nil, 92, 92, - nil, nil, 91, 92, 92, 92, nil, nil, nil, 92, - nil, nil, 92, nil, nil, nil, nil, 92, 92, 92, - nil, 92, 92, 92, nil, 92, nil, nil, nil, 92, - 92, nil, 92, 92, nil, 92, 92, 92, nil, 93, - nil, 93, 93, nil, nil, 92, 93, 93, 93, nil, - nil, nil, 93, nil, nil, 93, nil, nil, nil, nil, - 93, 93, 93, nil, 93, 93, 93, nil, 93, nil, - nil, nil, 93, 93, nil, 93, 93, nil, 93, 93, - 93, nil, 94, nil, 94, 94, nil, nil, 93, 94, - 94, 94, nil, nil, nil, 94, nil, nil, 94, nil, - nil, nil, nil, 94, 94, 94, nil, 94, 94, 94, - nil, 94, nil, nil, nil, 94, 94, nil, 94, 94, - nil, 94, 94, 94, nil, 95, nil, 95, 95, nil, - nil, 94, 95, 95, 95, nil, nil, nil, 95, nil, - nil, 95, nil, nil, nil, nil, 95, 95, 95, nil, - 95, 95, 95, nil, 95, nil, nil, nil, 95, 95, - nil, 95, 95, nil, 95, 95, 95, nil, 96, nil, - 96, 96, nil, nil, 95, 96, 96, 96, nil, nil, - nil, 96, nil, nil, 96, nil, nil, nil, nil, 96, - 96, 96, nil, 96, 96, 96, nil, 96, nil, nil, - nil, 96, 96, nil, 96, 96, nil, 96, 96, 96, - nil, 97, nil, 97, 97, nil, nil, 96, 97, 97, - 97, nil, nil, nil, 97, nil, nil, 97, nil, nil, - nil, nil, 97, 97, 97, nil, 97, 97, 97, nil, - 97, nil, nil, nil, 97, 97, nil, 97, 97, nil, - 97, 97, 97, nil, 98, nil, 98, 98, nil, nil, - 97, 98, 98, 98, nil, nil, nil, 98, nil, nil, - 98, nil, nil, nil, nil, 98, 98, 98, nil, 98, - 98, 98, nil, 98, nil, nil, nil, 98, 98, nil, - 98, 98, nil, 98, 98, 98, nil, 111, nil, 111, - 111, nil, nil, 98, 111, 111, 111, nil, nil, 111, - 111, nil, nil, 111, 111, 111, nil, nil, 111, 111, - 111, nil, 111, 111, 111, nil, 111, nil, nil, nil, - 111, 111, nil, 111, 111, nil, 111, 111, 111, nil, - 123, nil, 123, 123, nil, nil, 111, 123, 123, 123, - nil, nil, nil, 123, nil, nil, 123, nil, nil, nil, - nil, 123, 123, 123, nil, 123, 123, 123, nil, 123, - nil, nil, nil, 123, 123, nil, 123, 123, nil, 123, - 123, 123, nil, 129, nil, 129, 129, nil, nil, 123, - 129, 129, 129, nil, nil, nil, 129, nil, nil, 129, - nil, nil, nil, nil, 129, 129, 129, nil, 129, 129, - 129, nil, 129, nil, nil, nil, 129, 129, nil, 129, - 129, nil, 129, 129, 129, nil, 153, nil, 153, 153, - nil, nil, 129, 153, 153, 153, nil, nil, nil, 153, - nil, nil, 153, nil, nil, nil, nil, 153, 153, 153, - nil, 153, 153, 153, nil, 153, nil, nil, nil, 153, - 153, nil, 153, 153, nil, 153, 153, 153, nil, 155, - nil, 155, 155, nil, nil, 153, 155, 155, 155, nil, - nil, nil, 155, nil, nil, 155, nil, nil, nil, nil, - 155, 155, 155, nil, 155, 155, 155, nil, 155, nil, - nil, nil, 155, 155, nil, 155, 155, nil, 155, 155, - 155, nil, 156, nil, 156, 156, nil, nil, 155, 156, - 156, 156, nil, nil, nil, 156, nil, nil, 156, nil, - nil, nil, nil, 156, 156, 156, nil, 156, 156, 156, - nil, 156, nil, nil, nil, 156, 156, nil, 156, 156, - nil, 156, 156, 156, nil, 157, nil, 157, 157, nil, - nil, 156, 157, 157, 157, nil, nil, 157, 157, nil, - nil, 157, 157, 157, nil, nil, 157, 157, 157, nil, - 157, 157, 157, nil, 157, nil, nil, nil, 157, 157, - nil, 157, 157, nil, 157, 157, 157, nil, 180, nil, - 180, 180, nil, nil, 157, 180, 180, 180, nil, nil, - nil, 180, nil, nil, 180, nil, nil, nil, nil, 180, - 180, 180, nil, 180, 180, 180, nil, 180, nil, nil, - nil, 180, 180, nil, 180, 180, nil, 180, 180, 180, - 3, 3, 3, 3, nil, 142, nil, 180, 3, nil, - nil, nil, nil, 3, 142, 3, 3, 99, 99, 99, - 99, nil, 3, nil, nil, 99, nil, nil, nil, nil, - 99, nil, 142, 142, 142, 142, 142, 142, 142, 99, - 3, 3, 3, 3, 3, 3, 3, nil, 3, nil, - nil, nil, nil, nil, nil, nil, nil, 99, 99, 99, - 99, 99, 99, 99, nil, 99, 101, 101, 101, 101, - nil, nil, nil, nil, 101, nil, nil, nil, nil, 101, - nil, 104, 104, 104, 104, 104, nil, nil, 101, 104, - nil, nil, nil, nil, 104, nil, nil, nil, nil, nil, - nil, nil, nil, 104, nil, nil, 101, 101, 101, 101, - 101, 101, 101, nil, 101, nil, nil, nil, nil, nil, - nil, 104, 104, 104, 104, 104, 104, 104, nil, 104, - 117, 117, 117, 117, nil, nil, nil, nil, 117, nil, - nil, nil, nil, 117, nil, 117, 122, 122, 122, 122, - nil, nil, 117, nil, 122, nil, nil, nil, 122, 122, - nil, nil, nil, nil, nil, nil, nil, nil, 122, nil, - 117, 117, 117, 117, 117, 117, 117, nil, 117, nil, - nil, nil, nil, nil, nil, nil, 122, 122, 122, 122, - 122, 122, 122, nil, 122, 144, 144, 144, 144, nil, - nil, nil, nil, 144, nil, nil, nil, nil, 144, nil, - 145, 145, 145, 145, nil, nil, nil, 144, 145, nil, - nil, nil, nil, 145, nil, nil, nil, nil, nil, nil, - nil, nil, 145, nil, nil, 144, 144, 144, 144, 144, - 144, 144, nil, 144, nil, nil, nil, nil, nil, nil, - 145, 145, 145, 145, 145, 145, 145, nil, 145, 146, - 146, 146, 146, nil, nil, nil, nil, 146, nil, nil, - nil, nil, 146, nil, 147, 147, 147, 147, nil, nil, - nil, 146, 147, nil, nil, nil, nil, 147, nil, nil, - nil, nil, nil, nil, nil, nil, 147, nil, nil, 146, - 146, 146, 146, 146, 146, 146, nil, 146, nil, nil, - nil, nil, nil, nil, 147, 147, 147, 147, 147, 147, - 147, nil, 147, 148, 148, 148, 148, nil, nil, nil, - nil, 148, nil, nil, nil, nil, 148, nil, 149, 149, - 149, 149, nil, nil, nil, 148, 149, nil, nil, nil, - nil, 149, nil, nil, nil, nil, nil, nil, nil, nil, - 149, nil, nil, 148, 148, 148, 148, 148, 148, 148, - nil, 148, nil, nil, nil, nil, nil, nil, 149, 149, - 149, 149, 149, 149, 149, nil, 149, 150, 150, 150, - 150, nil, nil, nil, nil, 150, nil, nil, nil, nil, - 150, nil, 151, 151, 151, 151, nil, nil, nil, 150, - 151, nil, nil, nil, nil, 151, nil, nil, nil, nil, - nil, nil, nil, nil, 151, nil, nil, 150, 150, 150, - 150, 150, 150, 150, nil, 150, nil, nil, nil, nil, - nil, nil, 151, 151, 151, 151, 151, 151, 151, nil, - 151, 158, 158, 158, 158, nil, nil, nil, nil, 158, - nil, 158, nil, nil, 158, nil, 158, 158, 168, 168, - 168, 168, nil, 158, nil, nil, 168, nil, nil, nil, - nil, 168, nil, nil, nil, nil, nil, nil, nil, nil, - 168, 158, 158, 158, 158, 158, 158, 158, nil, 158, - nil, nil, nil, nil, nil, nil, nil, nil, 168, 168, - 168, 168, 168, 168, 168, nil, 168, 171, 171, 171, - 171, nil, nil, nil, nil, 171, nil, nil, nil, nil, - 171, nil, 173, 173, 173, 173, nil, nil, nil, 171, - 173, nil, nil, nil, nil, 173, nil, 171, nil, nil, - nil, nil, nil, nil, 173, nil, nil, 171, 171, 171, - 171, 171, 171, 171, nil, 171, nil, nil, nil, nil, - nil, nil, 173, 173, 173, 173, 173, 173, 173, nil, - 173, 175, 175, 175, 175, nil, nil, nil, nil, 175, - nil, nil, nil, nil, 175, nil, 185, 185, 185, 185, - nil, nil, nil, 175, 185, nil, nil, nil, nil, 185, - nil, nil, nil, nil, nil, nil, nil, nil, 185, nil, - nil, 175, 175, 175, 175, 175, 175, 175, nil, 175, - nil, nil, nil, nil, nil, nil, 185, 185, 185, 185, - 185, 185, 185, nil, 185, 125, 125, nil, nil, nil, - nil, 125, nil, nil, nil, nil, 125, 126, 126, nil, - nil, nil, nil, 126, nil, 125, nil, nil, 126, nil, - 138, 138, nil, nil, nil, nil, 138, 126, nil, nil, - nil, 138, nil, 125, 125, 125, 125, 125, 125, 125, - 138, 125, nil, nil, nil, 126, 126, 126, 126, 126, - 126, 126, nil, 126, nil, nil, nil, nil, 138, 138, - 138, 138, 138, 138, 138, 124, 138, 139, 139, nil, - 124, nil, nil, 139, nil, nil, nil, nil, 139, 124, - nil, nil, nil, nil, nil, nil, nil, 139, nil, nil, - 127, nil, nil, nil, nil, 127, nil, 124, 124, 124, - 124, 124, 124, 124, 127, 139, 139, 139, 139, 139, - 139, 139, nil, 139, nil, 140, nil, nil, nil, nil, - 140, nil, 127, 127, 127, 127, 127, 127, 127, 140, - 141, nil, nil, nil, nil, 141, nil, nil, nil, nil, - 143, nil, nil, nil, 141, 143, nil, 140, 140, 140, - 140, 140, 140, 140, 143, nil, nil, nil, nil, nil, - nil, nil, 141, 141, 141, 141, 141, 141, 141, nil, - nil, nil, 143, 143, 143, 143, 143, 143, 143 ] - -racc_action_pointer = [ - 43, 0, nil, 1416, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 86, - nil, nil, nil, 129, nil, nil, nil, 172, nil, nil, - nil, nil, nil, -1, -15, nil, nil, 215, nil, 258, - 3, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 301, 344, 387, 430, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 27, 8, nil, nil, 19, 473, 516, 559, 602, 645, - 688, 731, 774, 817, 860, 903, 946, 989, 1032, 1433, - -15, 1482, -10, nil, 1497, nil, nil, nil, nil, nil, - nil, 1075, 14, nil, nil, nil, nil, 1546, nil, nil, - nil, 13, 1562, 1118, 2123, 2059, 2071, 2148, 43, 1161, - nil, 3, nil, nil, nil, nil, nil, nil, 2084, 2131, - 2173, 2188, 1408, 2198, 1611, 1626, 1675, 1690, 1739, 1754, - 1803, 1818, nil, 1204, nil, 1247, 1290, 1333, 1867, nil, - nil, -8, nil, 31, nil, nil, nil, nil, 1884, nil, - nil, 1933, nil, 1948, nil, 1997, nil, nil, 21, 42, - 1376, nil, nil, 36, nil, 2012, nil ] - -racc_action_default = [ - -140, -140, -1, -4, -5, -6, -7, -10, -11, -12, - -13, -14, -15, -16, -17, -18, -19, -20, -21, -23, - -24, -25, -26, -140, -30, -31, -32, -140, -37, -55, - -56, -57, -60, -140, -63, -64, -65, -140, -73, -140, - -76, -77, -78, -79, -80, -81, -82, -83, -84, -85, - -86, -87, -88, -89, -90, -91, -107, -108, -109, -110, - -140, -140, -140, -140, -115, -116, -117, -118, -119, -120, - -121, -122, -123, -124, -125, -126, -127, -128, -129, -130, - -140, -140, -2, -3, -140, -140, -140, -140, -140, -140, - -140, -140, -140, -140, -140, -140, -140, -140, -140, -22, - -140, -28, -140, -34, -140, -61, -62, -74, -38, -39, - -40, -140, -140, -46, -47, -48, -49, -69, -66, -67, - -68, -71, -140, -140, -111, -112, -113, -114, -140, -140, - -133, -135, -136, -137, -138, 187, -58, -59, -93, -94, - -95, -96, -97, -98, -99, -100, -101, -102, -103, -104, - -105, -106, -27, -140, -33, -140, -140, -140, -4, -43, - -44, -140, -50, -52, -54, -70, -72, -75, -92, -131, - -134, -140, -139, -29, -35, -36, -41, -42, -9, -140, - -140, -132, -8, -140, -51, -53, -45 ] - -racc_goto_table = [ - 99, 82, 103, 83, 101, 1, 105, 130, 104, 183, - 100, 102, 159, 162, 121, 108, 109, 110, 117, 111, - 122, 115, 112, 161, 116, 107, 118, 119, 120, 128, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 124, 125, 126, 127, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 170, nil, 136, 176, 177, - nil, nil, nil, nil, nil, nil, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 184, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 158, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 168, nil, nil, nil, nil, nil, - 171, nil, nil, nil, nil, nil, 157, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 174, nil, nil, nil, 173, nil, 104, 175, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 82, 83, nil, - nil, 185 ] - -racc_goto_check = [ - 3, 2, 24, 4, 3, 1, 40, 77, 3, 5, - 20, 23, 30, 35, 25, 26, 27, 28, 3, 29, - 3, 31, 32, 33, 34, 43, 44, 45, 46, 75, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 3, 3, 3, 3, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 77, nil, 40, 30, 30, - nil, nil, nil, nil, nil, nil, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 35, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 3, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 3, nil, nil, nil, nil, nil, - 3, nil, nil, nil, nil, nil, 1, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 24, nil, nil, nil, 3, nil, 3, 3, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 2, 4, nil, - nil, 3 ] - -racc_goto_pointer = [ - nil, 5, 0, -19, 0, -169, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - -13, nil, nil, -16, -25, -23, -22, -21, -20, -18, - -99, -16, -15, -89, -13, -99, nil, nil, nil, nil, - -27, nil, nil, -9, -11, -10, -9, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, -51, nil, -73, nil ] - -racc_goto_default = [ - nil, nil, 2, 3, 4, nil, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, - nil, 24, 25, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 163, 29, 30, 31, - 32, 34, 35, 38, nil, nil, nil, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 64, 65, 66, 67, - 68, 69, 70, 78, 79, nil, 132, nil, 131 ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 1, 54, :_reduce_none, - 2, 54, :_reduce_2, - 2, 55, :_reduce_3, - 1, 55, :_reduce_4, - 1, 55, :_reduce_5, - 1, 57, :_reduce_none, - 1, 57, :_reduce_none, - 1, 58, :_reduce_none, - 0, 58, :_reduce_none, - 1, 56, :_reduce_none, - 1, 56, :_reduce_none, - 1, 56, :_reduce_none, - 1, 56, :_reduce_none, - 1, 56, :_reduce_none, - 1, 56, :_reduce_none, - 1, 56, :_reduce_none, - 1, 56, :_reduce_none, - 1, 56, :_reduce_none, - 1, 56, :_reduce_none, - 1, 68, :_reduce_none, - 1, 68, :_reduce_none, - 2, 69, :_reduce_22, - 1, 70, :_reduce_23, - 1, 66, :_reduce_none, - 1, 66, :_reduce_none, - 1, 71, :_reduce_26, - 3, 72, :_reduce_27, - 1, 73, :_reduce_28, - 3, 73, :_reduce_29, - 1, 67, :_reduce_none, - 1, 67, :_reduce_none, - 1, 74, :_reduce_32, - 3, 75, :_reduce_33, - 1, 76, :_reduce_34, - 3, 76, :_reduce_35, - 3, 77, :_reduce_36, - 1, 64, :_reduce_37, - 1, 78, :_reduce_none, - 1, 78, :_reduce_none, - 1, 78, :_reduce_none, - 3, 79, :_reduce_41, - 3, 80, :_reduce_42, - 2, 81, :_reduce_43, - 1, 83, :_reduce_44, - 5, 84, :_reduce_45, - 1, 85, :_reduce_46, - 1, 87, :_reduce_47, - 1, 82, :_reduce_none, - 1, 82, :_reduce_none, - 1, 86, :_reduce_none, - 3, 86, :_reduce_none, - 1, 88, :_reduce_52, - 3, 88, :_reduce_53, - 1, 89, :_reduce_54, - 1, 63, :_reduce_none, - 1, 63, :_reduce_none, - 1, 63, :_reduce_none, - 3, 90, :_reduce_58, - 3, 90, :_reduce_59, - 1, 91, :_reduce_60, - 2, 92, :_reduce_61, - 2, 92, :_reduce_62, - 1, 93, :_reduce_none, - 1, 93, :_reduce_none, - 1, 95, :_reduce_65, - 2, 96, :_reduce_66, - 1, 97, :_reduce_none, - 1, 97, :_reduce_none, - 1, 98, :_reduce_none, - 2, 98, :_reduce_none, - 1, 99, :_reduce_none, - 2, 99, :_reduce_none, - 1, 94, :_reduce_73, - 2, 94, :_reduce_74, - 3, 60, :_reduce_75, - 1, 65, :_reduce_76, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 1, 61, :_reduce_none, - 3, 100, :_reduce_92, - 3, 101, :_reduce_93, - 3, 102, :_reduce_94, - 3, 103, :_reduce_95, - 3, 104, :_reduce_96, - 3, 105, :_reduce_97, - 3, 106, :_reduce_98, - 3, 107, :_reduce_99, - 3, 108, :_reduce_100, - 3, 109, :_reduce_101, - 3, 110, :_reduce_102, - 3, 111, :_reduce_103, - 3, 112, :_reduce_104, - 3, 113, :_reduce_105, - 3, 114, :_reduce_106, - 1, 62, :_reduce_none, - 1, 62, :_reduce_none, - 1, 62, :_reduce_none, - 1, 62, :_reduce_none, - 2, 115, :_reduce_111, - 2, 116, :_reduce_112, - 2, 117, :_reduce_113, - 2, 118, :_reduce_114, - 1, 59, :_reduce_none, - 1, 59, :_reduce_none, - 1, 59, :_reduce_none, - 1, 59, :_reduce_none, - 1, 59, :_reduce_none, - 1, 59, :_reduce_none, - 1, 59, :_reduce_none, - 1, 120, :_reduce_122, - 1, 119, :_reduce_123, - 1, 122, :_reduce_124, - 1, 123, :_reduce_125, - 1, 124, :_reduce_126, - 1, 125, :_reduce_127, - 1, 121, :_reduce_128, - 1, 121, :_reduce_none, - 1, 121, :_reduce_none, - 3, 126, :_reduce_131, - 3, 129, :_reduce_132, - 1, 128, :_reduce_133, - 2, 128, :_reduce_134, - 1, 130, :_reduce_135, - 1, 130, :_reduce_136, - 2, 127, :_reduce_137, - 1, 131, :_reduce_138, - 2, 131, :_reduce_139 ] - -racc_reduce_n = 140 - -racc_shift_n = 187 - -racc_token_table = { - false => 0, - :error => 1, - :IDENTIFIER => 2, - :EQUAL => 3, - :PLUS => 4, - :MINUS => 5, - :ASTERISK => 6, - :FWD_SLASH => 7, - :COLON => 8, - :FLOAT => 9, - :INTEGER => 10, - :STRING => 11, - :EXPO => 12, - :INDENT => 13, - :OUTDENT => 14, - :OPAREN => 15, - :CPAREN => 16, - :DOT => 17, - :SIGNATURE => 18, - :NL => 19, - :EOF => 20, - :PIPE => 21, - :COMMA => 22, - :NIL => 23, - :TRUE => 24, - :FALSE => 25, - :EQUALITY => 26, - :CALL => 27, - :SELF => 28, - :CONSTANT => 29, - :CHAR => 30, - :DOUBLE_TICK_STRING => 31, - :DOUBLE_TICK_STRING_END => 32, - :INTERPOLATE_START => 33, - :INTERPOLATE_END => 34, - :BOX => 35, - :LSQUARE => 36, - :RSQUARE => 37, - :FACES => 38, - :LFACE => 39, - :RFACE => 40, - :BANG => 41, - :TILDE => 42, - :RETURN => 43, - :NOT_EQUALITY => 44, - :OR => 45, - :AND => 46, - :GT => 47, - :LT => 48, - :GTE => 49, - :LTE => 50, - :AT => 51, - :PERCENT => 52 } - -racc_nt_base = 53 - -racc_use_result_var = true - -Racc_arg = [ - racc_action_table, - racc_action_check, - racc_action_default, - racc_action_pointer, - racc_goto_table, - racc_goto_check, - racc_goto_default, - racc_goto_pointer, - racc_nt_base, - racc_reduce_table, - racc_token_table, - racc_shift_n, - racc_reduce_n, - racc_use_result_var ] - -Racc_token_to_s_table = [ - "$end", - "error", - "IDENTIFIER", - "EQUAL", - "PLUS", - "MINUS", - "ASTERISK", - "FWD_SLASH", - "COLON", - "FLOAT", - "INTEGER", - "STRING", - "EXPO", - "INDENT", - "OUTDENT", - "OPAREN", - "CPAREN", - "DOT", - "SIGNATURE", - "NL", - "EOF", - "PIPE", - "COMMA", - "NIL", - "TRUE", - "FALSE", - "EQUALITY", - "CALL", - "SELF", - "CONSTANT", - "CHAR", - "DOUBLE_TICK_STRING", - "DOUBLE_TICK_STRING_END", - "INTERPOLATE_START", - "INTERPOLATE_END", - "BOX", - "LSQUARE", - "RSQUARE", - "FACES", - "LFACE", - "RFACE", - "BANG", - "TILDE", - "RETURN", - "NOT_EQUALITY", - "OR", - "AND", - "GT", - "LT", - "GTE", - "LTE", - "AT", - "PERCENT", - "$start", - "statements", - "statement", - "expr", - "eol", - "nlq", - "literal", - "grouped_expr", - "binary_op", - "unary_op", - "method_call", - "constant", - "variable", - "array", - "hash", - "return", - "return_expr", - "return_nil", - "empty_array", - "array_list", - "array_items", - "empty_hash", - "hash_list", - "hash_items", - "hash_item", - "indented", - "indented_w_stmts", - "indented_w_expr", - "indented_wo_stmts", - "indent", - "outdent", - "indent_w_args", - "indent_pipe", - "indent_args", - "indent_wo_args", - "indent_arg", - "arg_var", - "method_call_on_object", - "method_call_on_self", - "method_call_on_closure", - "call_signature", - "call_arguments", - "call_simple_name", - "call_argument", - "call_passed_arg", - "call_passed_simple", - "call_passed_indented", - "assignment", - "addition", - "subtraction", - "multiplication", - "division", - "exponentiation", - "modulo", - "equality", - "not_equality", - "logical_or", - "logical_and", - "greater_than", - "less_than", - "greater_or_eq", - "less_or_eq", - "unary_not", - "unary_plus", - "unary_minus", - "unary_complement", - "integer", - "float", - "string", - "nil", - "true", - "false", - "self", - "interpolated_string", - "empty_string", - "interpolated_string_contents", - "interpolation", - "interpolated_string_chunk", - "chars" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -# reduce 1 omitted - -module_eval(<<'.,.,', 'huia.y', 44) - def _reduce_2(val, _values, result) - return scope - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 46) - def _reduce_3(val, _values, result) - return scope.append val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 47) - def _reduce_4(val, _values, result) - return scope.append val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 48) - def _reduce_5(val, _values, result) - return scope - result - end -.,., - -# reduce 6 omitted - -# reduce 7 omitted - -# reduce 8 omitted - -# reduce 9 omitted - -# reduce 10 omitted - -# reduce 11 omitted - -# reduce 12 omitted - -# reduce 13 omitted - -# reduce 14 omitted - -# reduce 15 omitted - -# reduce 16 omitted - -# reduce 17 omitted - -# reduce 18 omitted - -# reduce 19 omitted - -# reduce 20 omitted - -# reduce 21 omitted - -module_eval(<<'.,.,', 'huia.y', 66) - def _reduce_22(val, _values, result) - return n(:Return, val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 67) - def _reduce_23(val, _values, result) - return n(:Return, n(:Nil)) - result - end -.,., - -# reduce 24 omitted - -# reduce 25 omitted - -module_eval(<<'.,.,', 'huia.y', 72) - def _reduce_26(val, _values, result) - return n :Array - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 74) - def _reduce_27(val, _values, result) - return val[1] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 75) - def _reduce_28(val, _values, result) - return n :Array, [val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 76) - def _reduce_29(val, _values, result) - val[0].append(val[2]); return val[0] - result - end -.,., - -# reduce 30 omitted - -# reduce 31 omitted - -module_eval(<<'.,.,', 'huia.y', 80) - def _reduce_32(val, _values, result) - return n :Hash - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 81) - def _reduce_33(val, _values, result) - return val[1] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 82) - def _reduce_34(val, _values, result) - return n :Hash, val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 83) - def _reduce_35(val, _values, result) - val[0].append(val[2]); return val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 84) - def _reduce_36(val, _values, result) - return n :HashItem, val[0], val[2] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 86) - def _reduce_37(val, _values, result) - return constant val[0] - result - end -.,., - -# reduce 38 omitted - -# reduce 39 omitted - -# reduce 40 omitted - -module_eval(<<'.,.,', 'huia.y', 91) - def _reduce_41(val, _values, result) - return val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 92) - def _reduce_42(val, _values, result) - return val[0].append(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 93) - def _reduce_43(val, _values, result) - return val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 94) - def _reduce_44(val, _values, result) - return pop_scope - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 97) - def _reduce_45(val, _values, result) - return val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 98) - def _reduce_46(val, _values, result) - return push_scope - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 99) - def _reduce_47(val, _values, result) - return push_scope - result - end -.,., - -# reduce 48 omitted - -# reduce 49 omitted - -# reduce 50 omitted - -# reduce 51 omitted - -module_eval(<<'.,.,', 'huia.y', 105) - def _reduce_52(val, _values, result) - return scope.add_argument val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 106) - def _reduce_53(val, _values, result) - return n :Assignment, val[0], val[2] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 107) - def _reduce_54(val, _values, result) - return n :Variable, val[0] - result - end -.,., - -# reduce 55 omitted - -# reduce 56 omitted - -# reduce 57 omitted - -module_eval(<<'.,.,', 'huia.y', 112) - def _reduce_58(val, _values, result) - return n :MethodCall, val[0], val[2] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 113) - def _reduce_59(val, _values, result) - return n :MethodCall, val[0], n(:CallSignature, val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 114) - def _reduce_60(val, _values, result) - return n :MethodCall, scope_instance, val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 116) - def _reduce_61(val, _values, result) - return n :MethodCall, this_closure, val[1] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 117) - def _reduce_62(val, _values, result) - return n :MethodCall, this_closure, n(:CallSignature, val[1]) - result - end -.,., - -# reduce 63 omitted - -# reduce 64 omitted - -module_eval(<<'.,.,', 'huia.y', 121) - def _reduce_65(val, _values, result) - return n :CallSignature, val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 122) - def _reduce_66(val, _values, result) - return n :CallSignature, val[0], [val[1]] - result - end -.,., - -# reduce 67 omitted - -# reduce 68 omitted - -# reduce 69 omitted - -# reduce 70 omitted - -# reduce 71 omitted - -# reduce 72 omitted - -module_eval(<<'.,.,', 'huia.y', 129) - def _reduce_73(val, _values, result) - return val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 130) - def _reduce_74(val, _values, result) - return val[0].concat_signature val[1] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 132) - def _reduce_75(val, _values, result) - return n :Expression, val[1] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 134) - def _reduce_76(val, _values, result) - return allocate_local val[0] - result - end -.,., - -# reduce 77 omitted - -# reduce 78 omitted - -# reduce 79 omitted - -# reduce 80 omitted - -# reduce 81 omitted - -# reduce 82 omitted - -# reduce 83 omitted - -# reduce 84 omitted - -# reduce 85 omitted - -# reduce 86 omitted - -# reduce 87 omitted - -# reduce 88 omitted - -# reduce 89 omitted - -# reduce 90 omitted - -# reduce 91 omitted - -module_eval(<<'.,.,', 'huia.y', 152) - def _reduce_92(val, _values, result) - return allocate_local_assignment val[0], val[2] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 153) - def _reduce_93(val, _values, result) - return binary val[0], val[2], 'plus:' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 154) - def _reduce_94(val, _values, result) - return binary val[0], val[2], 'minus:' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 155) - def _reduce_95(val, _values, result) - return binary val[0], val[2], 'multiplyBy:' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 156) - def _reduce_96(val, _values, result) - return binary val[0], val[2], 'divideBy:' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 157) - def _reduce_97(val, _values, result) - return binary val[0], val[2], 'toThePowerOf:' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 158) - def _reduce_98(val, _values, result) - return binary val[0], val[2], 'moduloOf:' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 159) - def _reduce_99(val, _values, result) - return binary val[0], val[2], 'isEqualTo:' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 160) - def _reduce_100(val, _values, result) - return binary val[0], val[2], 'isNotEqualTo:' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 161) - def _reduce_101(val, _values, result) - return binary val[0], val[2], 'logicalOr:' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 162) - def _reduce_102(val, _values, result) - return binary val[0], val[2], 'logicalAnd:' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 163) - def _reduce_103(val, _values, result) - return binary val[0], val[2], 'isGreaterThan:' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 164) - def _reduce_104(val, _values, result) - return binary val[0], val[2], 'isLessThan:' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 165) - def _reduce_105(val, _values, result) - return binary val[0], val[2], 'isGreaterOrEqualTo:' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 166) - def _reduce_106(val, _values, result) - return binary val[0], val[2], 'isLessOrEqualTo:' - result - end -.,., - -# reduce 107 omitted - -# reduce 108 omitted - -# reduce 109 omitted - -# reduce 110 omitted - -module_eval(<<'.,.,', 'huia.y', 173) - def _reduce_111(val, _values, result) - return unary val[1], 'unaryNot' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 174) - def _reduce_112(val, _values, result) - return unary val[1], 'unaryPlus' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 175) - def _reduce_113(val, _values, result) - return unary val[1], 'unaryMinus' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 176) - def _reduce_114(val, _values, result) - return unary val[1], 'unaryComplement' - result - end -.,., - -# reduce 115 omitted - -# reduce 116 omitted - -# reduce 117 omitted - -# reduce 118 omitted - -# reduce 119 omitted - -# reduce 120 omitted - -# reduce 121 omitted - -module_eval(<<'.,.,', 'huia.y', 186) - def _reduce_122(val, _values, result) - return n :Float, val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 187) - def _reduce_123(val, _values, result) - return n :Integer, val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 188) - def _reduce_124(val, _values, result) - return n :Nil - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 189) - def _reduce_125(val, _values, result) - return n :True - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 190) - def _reduce_126(val, _values, result) - return n :False - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 191) - def _reduce_127(val, _values, result) - return n :Self - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 193) - def _reduce_128(val, _values, result) - return n :String, val[0] - result - end -.,., - -# reduce 129 omitted - -# reduce 130 omitted - -module_eval(<<'.,.,', 'huia.y', 197) - def _reduce_131(val, _values, result) - return val[1] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 198) - def _reduce_132(val, _values, result) - return val[1] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 199) - def _reduce_133(val, _values, result) - return n :InterpolatedString, val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 200) - def _reduce_134(val, _values, result) - val[0].append(val[1]); return val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 201) - def _reduce_135(val, _values, result) - return val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 202) - def _reduce_136(val, _values, result) - return to_string(val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 203) - def _reduce_137(val, _values, result) - return n :String, '' - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 205) - def _reduce_138(val, _values, result) - return n :String, val[0] - result - end -.,., - -module_eval(<<'.,.,', 'huia.y', 206) - def _reduce_139(val, _values, result) - val[0].append(val[1]); return val[0] - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser -end # module Huia diff --git a/test/racc/regress/journey b/test/racc/regress/journey deleted file mode 100644 index 3daf81dac0..0000000000 --- a/test/racc/regress/journey +++ /dev/null @@ -1,222 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' - - -require 'journey/parser_extras' -module Journey - class Parser < Racc::Parser -##### State transition tables begin ### - -racc_action_table = [ - 17, 21, 13, 15, 14, 7, nil, 16, 8, 19, - 13, 15, 14, 7, 23, 16, 8, 19, 13, 15, - 14, 7, nil, 16, 8, 13, 15, 14, 7, nil, - 16, 8, 13, 15, 14, 7, nil, 16, 8 ] - -racc_action_check = [ - 1, 17, 1, 1, 1, 1, nil, 1, 1, 1, - 20, 20, 20, 20, 20, 20, 20, 20, 0, 0, - 0, 0, nil, 0, 0, 7, 7, 7, 7, nil, - 7, 7, 19, 19, 19, 19, nil, 19, 19 ] - -racc_action_pointer = [ - 16, 0, nil, nil, nil, nil, nil, 23, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 1, nil, 30, - 8, nil, nil, nil ] - -racc_action_default = [ - -18, -18, -2, -3, -4, -5, -6, -18, -9, -10, - -11, -12, -13, -14, -15, -16, -17, -18, -1, -18, - -18, 24, -8, -7 ] - -racc_goto_table = [ - 18, 1, nil, nil, nil, nil, nil, nil, 20, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 22, 18 ] - -racc_goto_check = [ - 2, 1, nil, nil, nil, nil, nil, nil, 1, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 2, 2 ] - -racc_goto_pointer = [ - nil, 1, -1, nil, nil, nil, nil, nil, nil, nil, - nil ] - -racc_goto_default = [ - nil, nil, 2, 3, 4, 5, 6, 9, 10, 11, - 12 ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 2, 11, :_reduce_1, - 1, 11, :_reduce_2, - 1, 11, :_reduce_none, - 1, 12, :_reduce_none, - 1, 12, :_reduce_none, - 1, 12, :_reduce_none, - 3, 15, :_reduce_7, - 3, 13, :_reduce_8, - 1, 16, :_reduce_9, - 1, 14, :_reduce_none, - 1, 14, :_reduce_none, - 1, 14, :_reduce_none, - 1, 14, :_reduce_none, - 1, 19, :_reduce_14, - 1, 17, :_reduce_15, - 1, 18, :_reduce_16, - 1, 20, :_reduce_17 ] - -racc_reduce_n = 18 - -racc_shift_n = 24 - -racc_token_table = { - false => 0, - :error => 1, - :SLASH => 2, - :LITERAL => 3, - :SYMBOL => 4, - :LPAREN => 5, - :RPAREN => 6, - :DOT => 7, - :STAR => 8, - :OR => 9 } - -racc_nt_base = 10 - -racc_use_result_var = true - -Racc_arg = [ - racc_action_table, - racc_action_check, - racc_action_default, - racc_action_pointer, - racc_goto_table, - racc_goto_check, - racc_goto_default, - racc_goto_pointer, - racc_nt_base, - racc_reduce_table, - racc_token_table, - racc_shift_n, - racc_reduce_n, - racc_use_result_var ] - -Racc_token_to_s_table = [ - "$end", - "error", - "SLASH", - "LITERAL", - "SYMBOL", - "LPAREN", - "RPAREN", - "DOT", - "STAR", - "OR", - "$start", - "expressions", - "expression", - "or", - "terminal", - "group", - "star", - "symbol", - "literal", - "slash", - "dot" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'journey.y', 6) - def _reduce_1(val, _values, result) - result = Cat.new(val.first, val.last) - result - end -.,., - -module_eval(<<'.,.,', 'journey.y', 7) - def _reduce_2(val, _values, result) - result = val.first - result - end -.,., - -# reduce 3 omitted - -# reduce 4 omitted - -# reduce 5 omitted - -# reduce 6 omitted - -module_eval(<<'.,.,', 'journey.y', 16) - def _reduce_7(val, _values, result) - result = Group.new(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'journey.y', 19) - def _reduce_8(val, _values, result) - result = Or.new([val.first, val.last]) - result - end -.,., - -module_eval(<<'.,.,', 'journey.y', 22) - def _reduce_9(val, _values, result) - result = Star.new(Symbol.new(val.last)) - result - end -.,., - -# reduce 10 omitted - -# reduce 11 omitted - -# reduce 12 omitted - -# reduce 13 omitted - -module_eval(<<'.,.,', 'journey.y', 31) - def _reduce_14(val, _values, result) - result = Slash.new('/') - result - end -.,., - -module_eval(<<'.,.,', 'journey.y', 34) - def _reduce_15(val, _values, result) - result = Symbol.new(val.first) - result - end -.,., - -module_eval(<<'.,.,', 'journey.y', 37) - def _reduce_16(val, _values, result) - result = Literal.new(val.first) - result - end -.,., - -module_eval(<<'.,.,', 'journey.y', 39) - def _reduce_17(val, _values, result) - result = Dot.new(val.first) - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser -end # module Journey diff --git a/test/racc/regress/liquor b/test/racc/regress/liquor deleted file mode 100644 index 9fa2ca4da0..0000000000 --- a/test/racc/regress/liquor +++ /dev/null @@ -1,885 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' -module Liquor - class Parser < Racc::Parser - -module_eval(<<'...end liquor.y/module_eval...', 'liquor.y', 216) - attr_reader :errors, :ast - - def initialize(tags={}) - super() - - @errors = [] - @ast = nil - @tags = tags - end - - def success? - @errors.empty? - end - - def parse(string, name='(code)') - @errors.clear - @name = name - @ast = nil - - begin - @stream = Lexer.lex(string, @name, @tags) - @ast = do_parse - rescue Liquor::SyntaxError => e - @errors << e - end - - success? - end - - def next_token - tok = @stream.shift - [ tok[0], tok ] if tok - end - - TOKEN_NAME_MAP = { - :comma => ',', - :dot => '.', - :lblock => '{%', - :rblock => '%}', - :linterp => '{{', - :rinterp => '}}', - :lbracket => '[', - :rbracket => ']', - :lparen => '(', - :rparen => ')', - :pipe => '|', - :op_not => '!', - :op_mul => '*', - :op_div => '/', - :op_mod => '%', - :op_plus => '+', - :op_minus => '-', - :op_eq => '==', - :op_neq => '!=', - :op_lt => '<', - :op_leq => '<=', - :op_gt => '>', - :op_geq => '>=', - :keyword => 'keyword argument name', - :kwarg => 'keyword argument', - :ident => 'identifier', - } - - def on_error(error_token_id, error_token, value_stack) - if token_to_str(error_token_id) == "$end" - raise Liquor::SyntaxError.new("unexpected end of program", { - file: @name - }) - else - type, (loc, value) = error_token - type = TOKEN_NAME_MAP[type] || type - - raise Liquor::SyntaxError.new("unexpected token `#{type}'", loc) - end - end - - def retag(nodes) - loc = nodes.map { |node| node[1] }.compact - first, *, last = loc - return first if last.nil? - - { - file: first[:file], - line: first[:line], - start: first[:start], - end: last[:end], - } - end - - def reduce_tag_args(list) - list.each_slice(2).reduce([]) { |args, (k, v)| - if v[0] == :block - args << [ :blockarg, retag([ k, v ]), k, v[2] || [] ] - else - args << [ :kwarg, retag([ k, v ]), k, v ] - end - } - end -...end liquor.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - 76, 26, 26, 6, 7, 22, 5, 6, 25, 25, - 5, 28, 32, 36, 37, 34, 35, 31, 29, 27, - 33, 2, 30, 26, 26, 2, 6, 23, 41, 5, - 25, 25, 38, 39, 28, 32, 36, 37, 34, 35, - 31, 29, 27, 33, 2, 30, 40, 26, 96, 6, - 24, 97, 5, 43, 25, 38, 39, 28, 32, 36, - 37, 34, 35, 31, 29, 27, 33, 2, 30, 26, - 54, 70, 77, 26, 75, 26, 25, 52, 38, 39, - 25, 43, 25, 28, 32, 36, 37, 34, 35, 31, - 29, 27, 33, 26, 30, 84, 26, 51, 6, 96, - 25, 5, 97, 25, 38, 39, 28, 32, 36, 37, - 34, 35, 31, 29, 27, 33, 2, 30, 74, 26, - 87, 82, 96, 74, 70, 97, 25, 38, 39, 28, - 32, 36, 37, 34, 35, 31, 29, 27, 33, 94, - 30, 98, 26, 107, 6, 111, 52, 5, nil, 25, - 38, 39, 28, 32, 36, 37, 34, 35, 31, 29, - 27, 33, 2, 30, nil, 26, 51, 6, nil, 74, - 5, nil, 25, 38, 39, 28, 32, 36, 37, 34, - 35, 31, 29, 27, 33, 2, 30, nil, 26, nil, - nil, nil, 102, nil, nil, 25, 38, 39, 28, 32, - 36, 37, 34, 35, 31, 29, 27, 33, nil, 30, - nil, 26, 96, nil, nil, 97, nil, nil, 25, 38, - 39, 28, 32, 36, 37, 34, 35, 31, 29, 27, - 33, nil, 30, nil, 26, nil, nil, nil, nil, nil, - nil, 25, 38, 39, 28, 32, 36, 37, 34, 35, - 31, 29, 27, 33, nil, 30, 13, 15, nil, 13, - 15, 21, nil, 14, 21, 38, 14, nil, nil, nil, - 18, nil, nil, 18, 19, nil, nil, 19, nil, 13, - 15, nil, 16, nil, 21, 16, 14, nil, nil, 13, - 15, nil, nil, 18, 21, nil, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, 52, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, 51, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, 74, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, 81, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, nil, 18, 21, 16, 14, 19, nil, 13, - 15, nil, 26, 18, 21, 16, 14, 19, nil, 25, - nil, 101, 28, 18, nil, 16, nil, 19, 31, 29, - 27, 106, 26, 30, nil, 16, nil, nil, nil, 25, - nil, nil, 28, nil, 26, nil, nil, nil, 31, 29, - 27, 25, nil, 30, 28, nil, 26, nil, nil, nil, - 31, 29, 27, 25, nil, 30, 28, nil, 26, nil, - nil, nil, 31, 29, 27, 25, nil, 30, 28, nil, - 26, nil, nil, nil, 31, 29, 27, 25, nil, 30, - 28, nil, 26, nil, nil, nil, 31, 29, 27, 25, - nil, 30, 28, 32, 36, 37, 34, 35, 31, 29, - 27, 33, 26, 30, 26, nil, nil, nil, nil, 25, - nil, 25, 28, nil, 28, nil, nil, nil, nil, 29, - 27, 29, 27 ] - -racc_action_check = [ - 47, 47, 45, 0, 1, 6, 0, 2, 47, 45, - 2, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 0, 47, 46, 11, 2, 3, 7, 12, 3, - 46, 11, 47, 47, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 3, 11, 11, 44, 94, 4, - 11, 94, 4, 13, 44, 11, 11, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 4, 44, 55, - 26, 40, 48, 49, 44, 56, 55, 49, 44, 44, - 49, 54, 56, 49, 49, 49, 49, 49, 49, 49, - 49, 49, 49, 57, 49, 69, 53, 49, 81, 107, - 57, 81, 107, 53, 49, 49, 53, 53, 53, 53, - 53, 53, 53, 53, 53, 53, 81, 53, 70, 71, - 72, 53, 111, 71, 84, 111, 71, 53, 53, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 91, - 71, 96, 79, 103, 101, 109, 79, 101, nil, 79, - 71, 71, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 101, 79, nil, 88, 79, 106, nil, 88, - 106, nil, 88, 79, 79, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 106, 88, nil, 99, nil, - nil, nil, 99, nil, nil, 99, 88, 88, 99, 99, - 99, 99, 99, 99, 99, 99, 99, 99, nil, 99, - nil, 104, 104, nil, nil, 104, nil, nil, 104, 99, - 99, 104, 104, 104, 104, 104, 104, 104, 104, 104, - 104, nil, 104, nil, 67, nil, nil, nil, nil, nil, - nil, 67, 104, 104, 67, 67, 67, 67, 67, 67, - 67, 67, 67, 67, nil, 67, 5, 5, nil, 14, - 14, 5, nil, 5, 14, 67, 14, nil, nil, nil, - 5, nil, nil, 14, 5, nil, nil, 14, nil, 18, - 18, nil, 5, nil, 18, 14, 18, nil, nil, 19, - 19, nil, nil, 18, 19, nil, 19, 18, nil, 21, - 21, nil, nil, 19, 21, 18, 21, 19, nil, 22, - 22, 22, nil, 21, 22, 19, 22, 21, nil, 25, - 25, nil, nil, 22, 25, 21, 25, 22, nil, 27, - 27, 22, nil, 25, 27, 22, 27, 25, nil, 28, - 28, nil, nil, 27, 28, 25, 28, 27, nil, 29, - 29, nil, nil, 28, 29, 27, 29, 28, nil, 30, - 30, nil, nil, 29, 30, 28, 30, 29, nil, 31, - 31, nil, nil, 30, 31, 29, 31, 30, nil, 32, - 32, nil, nil, 31, 32, 30, 32, 31, nil, 33, - 33, nil, nil, 32, 33, 31, 33, 32, nil, 34, - 34, nil, nil, 33, 34, 32, 34, 33, nil, 35, - 35, nil, nil, 34, 35, 33, 35, 34, nil, 36, - 36, nil, nil, 35, 36, 34, 36, 35, nil, 37, - 37, nil, nil, 36, 37, 35, 37, 36, nil, 38, - 38, nil, nil, 37, 38, 36, 38, 37, nil, 39, - 39, nil, nil, 38, 39, 37, 39, 38, nil, 43, - 43, 43, nil, 39, 43, 38, 43, 39, nil, 52, - 52, nil, nil, 43, 52, 39, 52, 43, nil, 74, - 74, nil, nil, 52, 74, 43, 74, 52, nil, 76, - 76, 52, nil, 74, 76, 52, 76, 74, nil, 97, - 97, nil, nil, 76, 97, 74, 97, 76, nil, 102, - 102, nil, 60, 97, 102, 76, 102, 97, nil, 60, - nil, 97, 60, 102, nil, 97, nil, 102, 60, 60, - 60, 102, 61, 60, nil, 102, nil, nil, nil, 61, - nil, nil, 61, nil, 62, nil, nil, nil, 61, 61, - 61, 62, nil, 61, 62, nil, 63, nil, nil, nil, - 62, 62, 62, 63, nil, 62, 63, nil, 64, nil, - nil, nil, 63, 63, 63, 64, nil, 63, 64, nil, - 65, nil, nil, nil, 64, 64, 64, 65, nil, 64, - 65, nil, 66, nil, nil, nil, 65, 65, 65, 66, - nil, 65, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 58, 66, 59, nil, nil, nil, nil, 58, - nil, 59, 58, nil, 59, nil, nil, nil, nil, 58, - 58, 59, 59 ] - -racc_action_pointer = [ - -5, 4, -1, 18, 41, 251, 0, 27, nil, nil, - nil, 21, -1, 41, 254, nil, nil, nil, 274, 284, - nil, 294, 304, nil, nil, 314, 65, 324, 334, 344, - 354, 364, 374, 384, 394, 404, 414, 424, 434, 444, - 66, nil, nil, 454, 44, -1, 20, -2, 44, 70, - nil, nil, 464, 93, 69, 66, 72, 90, 609, 611, - 509, 529, 541, 553, 565, 577, 589, 231, nil, 70, - 111, 116, 90, nil, 474, nil, 484, nil, nil, 139, - nil, 90, nil, nil, 119, nil, nil, nil, 162, nil, - nil, 130, nil, nil, 44, nil, 114, 494, nil, 185, - nil, 136, 504, 134, 208, nil, 159, 95, nil, 136, - nil, 118, nil ] - -racc_action_default = [ - -1, -57, -1, -1, -1, -57, -57, -57, -2, -3, - -4, -57, -57, -7, -57, -9, -10, -11, -57, -57, - -31, -35, -57, 113, -5, -57, -57, -57, -57, -57, - -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, - -57, -6, -12, -40, -57, -16, -17, -34, -57, -57, - -46, -47, -57, -57, -15, -18, -19, -20, -21, -22, - -23, -24, -25, -26, -27, -28, -29, -30, -41, -43, - -40, -40, -57, -38, -57, -8, -35, -32, -45, -57, - -48, -1, -13, -14, -57, -44, -37, -36, -40, -33, - -50, -57, -42, -39, -57, -49, -57, -57, -51, -57, - -52, -1, -57, -57, -57, -54, -1, -57, -56, -57, - -53, -57, -55 ] - -racc_goto_table = [ - 1, 11, 8, 9, 10, 48, 68, 12, 42, 50, - 44, 72, 80, 73, 45, 46, 100, 105, 49, nil, - nil, 53, nil, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 78, nil, nil, 71, - 85, 86, 95, nil, nil, nil, nil, nil, 79, 83, - 92, nil, 108, nil, nil, 110, nil, nil, 93, 112, - 89, nil, nil, nil, nil, nil, 90, nil, nil, nil, - 88, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 91, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 99, nil, nil, nil, nil, 104, nil, - nil, 103, nil, nil, nil, nil, 109 ] - -racc_goto_check = [ - 1, 4, 1, 1, 1, 9, 12, 5, 8, 14, - 4, 10, 15, 11, 4, 4, 17, 18, 4, nil, - nil, 4, nil, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 14, nil, nil, 4, - 11, 11, 16, nil, nil, nil, nil, nil, 4, 8, - 12, nil, 16, nil, nil, 16, nil, nil, 11, 16, - 9, nil, nil, nil, nil, nil, 14, nil, nil, nil, - 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 1, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 4, nil, nil, nil, nil, 4, nil, - nil, 1, nil, nil, nil, nil, 1 ] - -racc_goto_pointer = [ - nil, 0, nil, nil, -4, 2, nil, nil, -5, -16, - -32, -30, -34, nil, -13, -40, -52, -81, -85 ] - -racc_goto_default = [ - nil, nil, 3, 4, 47, nil, 20, 17, nil, nil, - nil, nil, nil, 69, nil, nil, nil, nil, nil ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 0, 37, :_reduce_1, - 2, 37, :_reduce_2, - 2, 37, :_reduce_3, - 2, 37, :_reduce_4, - 3, 38, :_reduce_5, - 3, 38, :_reduce_6, - 1, 42, :_reduce_none, - 3, 42, :_reduce_8, - 1, 40, :_reduce_none, - 1, 40, :_reduce_none, - 1, 40, :_reduce_none, - 2, 40, :_reduce_12, - 4, 40, :_reduce_13, - 4, 40, :_reduce_14, - 3, 40, :_reduce_15, - 2, 40, :_reduce_16, - 2, 40, :_reduce_17, - 3, 40, :_reduce_18, - 3, 40, :_reduce_19, - 3, 40, :_reduce_20, - 3, 40, :_reduce_21, - 3, 40, :_reduce_22, - 3, 40, :_reduce_23, - 3, 40, :_reduce_24, - 3, 40, :_reduce_25, - 3, 40, :_reduce_26, - 3, 40, :_reduce_27, - 3, 40, :_reduce_28, - 3, 40, :_reduce_29, - 3, 40, :_reduce_30, - 1, 40, :_reduce_none, - 3, 43, :_reduce_32, - 3, 45, :_reduce_33, - 1, 45, :_reduce_34, - 0, 45, :_reduce_35, - 3, 44, :_reduce_36, - 2, 46, :_reduce_37, - 1, 46, :_reduce_38, - 3, 47, :_reduce_39, - 0, 47, :_reduce_40, - 3, 41, :_reduce_41, - 3, 48, :_reduce_42, - 1, 48, :_reduce_43, - 2, 49, :_reduce_44, - 4, 39, :_reduce_45, - 3, 39, :_reduce_46, - 1, 50, :_reduce_47, - 2, 50, :_reduce_48, - 4, 51, :_reduce_49, - 2, 51, :_reduce_50, - 2, 52, :_reduce_51, - 2, 52, :_reduce_52, - 4, 53, :_reduce_53, - 3, 53, :_reduce_54, - 4, 54, :_reduce_55, - 2, 54, :_reduce_56 ] - -racc_reduce_n = 57 - -racc_shift_n = 113 - -racc_token_table = { - false => 0, - :error => 1, - :comma => 2, - :dot => 3, - :endtag => 4, - :ident => 5, - :integer => 6, - :keyword => 7, - :lblock => 8, - :lblock2 => 9, - :lbracket => 10, - :linterp => 11, - :lparen => 12, - :op_div => 13, - :op_eq => 14, - :op_gt => 15, - :op_geq => 16, - :op_lt => 17, - :op_leq => 18, - :op_minus => 19, - :op_mod => 20, - :op_mul => 21, - :op_neq => 22, - :op_not => 23, - :op_plus => 24, - :pipe => 25, - :plaintext => 26, - :rblock => 27, - :rbracket => 28, - :rinterp => 29, - :rparen => 30, - :string => 31, - :tag_ident => 32, - :op_uminus => 33, - :op_and => 34, - :op_or => 35 } - -racc_nt_base = 36 - -racc_use_result_var = true - -Racc_arg = [ - racc_action_table, - racc_action_check, - racc_action_default, - racc_action_pointer, - racc_goto_table, - racc_goto_check, - racc_goto_default, - racc_goto_pointer, - racc_nt_base, - racc_reduce_table, - racc_token_table, - racc_shift_n, - racc_reduce_n, - racc_use_result_var ] - -Racc_token_to_s_table = [ - "$end", - "error", - "comma", - "dot", - "endtag", - "ident", - "integer", - "keyword", - "lblock", - "lblock2", - "lbracket", - "linterp", - "lparen", - "op_div", - "op_eq", - "op_gt", - "op_geq", - "op_lt", - "op_leq", - "op_minus", - "op_mod", - "op_mul", - "op_neq", - "op_not", - "op_plus", - "pipe", - "plaintext", - "rblock", - "rbracket", - "rinterp", - "rparen", - "string", - "tag_ident", - "op_uminus", - "op_and", - "op_or", - "$start", - "block", - "interp", - "tag", - "expr", - "filter_chain", - "primary_expr", - "tuple", - "function_args", - "tuple_content", - "function_args_inside", - "function_keywords", - "filter_chain_cont", - "filter_call", - "tag_first_cont", - "tag_first_cont2", - "tag_next_cont", - "tag_next_cont2", - "tag_next_cont3" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'liquor.y', 47) - def _reduce_1(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 49) - def _reduce_2(val, _values, result) - result = [ val[0], *val[1] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 51) - def _reduce_3(val, _values, result) - result = [ val[0], *val[1] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 53) - def _reduce_4(val, _values, result) - result = [ val[0], *val[1] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 57) - def _reduce_5(val, _values, result) - result = [ :interp, retag(val), val[1] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 59) - def _reduce_6(val, _values, result) - result = [ :interp, retag(val), val[1] ] - result - end -.,., - -# reduce 7 omitted - -module_eval(<<'.,.,', 'liquor.y', 64) - def _reduce_8(val, _values, result) - result = [ val[1][0], retag(val), *val[1][2..-1] ] - result - end -.,., - -# reduce 9 omitted - -# reduce 10 omitted - -# reduce 11 omitted - -module_eval(<<'.,.,', 'liquor.y', 71) - def _reduce_12(val, _values, result) - result = [ :call, retag(val), val[0], val[1] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 73) - def _reduce_13(val, _values, result) - result = [ :index, retag(val), val[0], val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 75) - def _reduce_14(val, _values, result) - result = [ :external, retag(val), val[0], val[2], val[3] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 77) - def _reduce_15(val, _values, result) - result = [ :external, retag(val), val[0], val[2], nil ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 79) - def _reduce_16(val, _values, result) - result = [ :uminus, retag(val), val[1] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 81) - def _reduce_17(val, _values, result) - result = [ :not, retag(val), val[1] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 83) - def _reduce_18(val, _values, result) - result = [ :mul, retag(val), val[0], val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 85) - def _reduce_19(val, _values, result) - result = [ :div, retag(val), val[0], val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 87) - def _reduce_20(val, _values, result) - result = [ :mod, retag(val), val[0], val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 89) - def _reduce_21(val, _values, result) - result = [ :plus, retag(val), val[0], val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 91) - def _reduce_22(val, _values, result) - result = [ :minus, retag(val), val[0], val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 93) - def _reduce_23(val, _values, result) - result = [ :eq, retag(val), val[0], val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 95) - def _reduce_24(val, _values, result) - result = [ :neq, retag(val), val[0], val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 97) - def _reduce_25(val, _values, result) - result = [ :lt, retag(val), val[0], val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 99) - def _reduce_26(val, _values, result) - result = [ :leq, retag(val), val[0], val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 101) - def _reduce_27(val, _values, result) - result = [ :gt, retag(val), val[0], val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 103) - def _reduce_28(val, _values, result) - result = [ :geq, retag(val), val[0], val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 105) - def _reduce_29(val, _values, result) - result = [ :and, retag(val), val[0], val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 107) - def _reduce_30(val, _values, result) - result = [ :or, retag(val), val[0], val[2] ] - result - end -.,., - -# reduce 31 omitted - -module_eval(<<'.,.,', 'liquor.y', 112) - def _reduce_32(val, _values, result) - result = [ :tuple, retag(val), val[1].compact ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 116) - def _reduce_33(val, _values, result) - result = [ val[0], *val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 118) - def _reduce_34(val, _values, result) - result = [ val[0] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 120) - def _reduce_35(val, _values, result) - result = [ ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 124) - def _reduce_36(val, _values, result) - result = [ :args, retag(val), *val[1] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 128) - def _reduce_37(val, _values, result) - result = [ val[0], val[1][2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 130) - def _reduce_38(val, _values, result) - result = [ nil, val[0][2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 134) - def _reduce_39(val, _values, result) - name = val[0][2].to_sym - tail = val[2][2] - loc = retag([ val[0], val[1] ]) - - if tail.include? name - @errors << SyntaxError.new("duplicate keyword argument `#{val[0][2]}'", - tail[name][1]) - end - - hash = { - name => [ val[1][0], loc, *val[1][2..-1] ] - }.merge(tail) - - result = [ :keywords, retag([ loc, val[2] ]), hash ] - - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 150) - def _reduce_40(val, _values, result) - result = [ :keywords, nil, {} ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 154) - def _reduce_41(val, _values, result) - result = [ val[0], *val[2] ]. - reduce { |tree, node| node[3][2] = tree; node } - - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 160) - def _reduce_42(val, _values, result) - result = [ val[0], *val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 162) - def _reduce_43(val, _values, result) - result = [ val[0] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 166) - def _reduce_44(val, _values, result) - ident_loc = val[0][1] - empty_args_loc = { line: ident_loc[:line], - start: ident_loc[:end] + 1, - end: ident_loc[:end] + 1, } - result = [ :call, val[0][1], val[0], - [ :args, val[1][1] || empty_args_loc, nil, val[1][2] ] ] - - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 176) - def _reduce_45(val, _values, result) - result = [ :tag, retag(val), val[1], val[2], *reduce_tag_args(val[3][2]) ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 178) - def _reduce_46(val, _values, result) - result = [ :tag, retag(val), val[1], nil, *reduce_tag_args(val[2][2]) ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 186) - def _reduce_47(val, _values, result) - result = [ :cont, retag(val), [] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 188) - def _reduce_48(val, _values, result) - result = [ :cont, retag(val), [ val[0], *val[1][2] ] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 192) - def _reduce_49(val, _values, result) - result = [ :cont2, val[0][1], [ [:block, val[0][1], val[1] ], *val[3] ] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 194) - def _reduce_50(val, _values, result) - result = [ :cont2, retag(val), [ val[0], *val[1][2] ] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 198) - def _reduce_51(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 200) - def _reduce_52(val, _values, result) - result = [ val[0], *val[1] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 204) - def _reduce_53(val, _values, result) - result = [ [:block, val[0][1], val[1] ], *val[3] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 206) - def _reduce_54(val, _values, result) - result = [ val[0], val[1], *val[2] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 210) - def _reduce_55(val, _values, result) - result = [ [:block, val[0][1], val[1] ], *val[3] ] - result - end -.,., - -module_eval(<<'.,.,', 'liquor.y', 212) - def _reduce_56(val, _values, result) - result = [ val[0], *val[1] ] - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser -end # module Liquor diff --git a/test/racc/regress/machete b/test/racc/regress/machete deleted file mode 100644 index 6297fe2ac9..0000000000 --- a/test/racc/regress/machete +++ /dev/null @@ -1,833 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' -module Machete - class Parser < Racc::Parser - -module_eval(<<'...end machete.y/module_eval...', 'machete.y', 175) - -include Matchers - -class SyntaxError < StandardError; end - -def parse(input) - @input = input - @pos = 0 - - do_parse -end - -private - -def integer_value(value) - if value =~ /^0[bB]/ - value[2..-1].to_i(2) - elsif value =~ /^0[oO]/ - value[2..-1].to_i(8) - elsif value =~ /^0[dD]/ - value[2..-1].to_i(10) - elsif value =~ /^0[xX]/ - value[2..-1].to_i(16) - elsif value =~ /^0/ - value.to_i(8) - else - value.to_i - end -end - -def symbol_value(value) - value[1..-1].to_sym -end - -def string_value(value) - quote = value[0..0] - if quote == "'" - value[1..-2].gsub("\\\\", "\\").gsub("\\'", "'") - elsif quote == '"' - value[1..-2]. - gsub("\\\\", "\\"). - gsub('\\"', '"'). - gsub("\\n", "\n"). - gsub("\\t", "\t"). - gsub("\\r", "\r"). - gsub("\\f", "\f"). - gsub("\\v", "\v"). - gsub("\\a", "\a"). - gsub("\\e", "\e"). - gsub("\\b", "\b"). - gsub("\\s", "\s"). - gsub(/\\([0-7]{1,3})/) { $1.to_i(8).chr }. - gsub(/\\x([0-9a-fA-F]{1,2})/) { $1.to_i(16).chr } - else - raise "Unknown quote: #{quote.inspect}." - end -end - -REGEXP_OPTIONS = { - 'i' => Regexp::IGNORECASE, - 'm' => Regexp::MULTILINE, - 'x' => Regexp::EXTENDED -} - -def regexp_value(value) - /\A\/(.*)\/([imx]*)\z/ =~ value - pattern, options = $1, $2 - - Regexp.new(pattern, options.chars.map { |ch| REGEXP_OPTIONS[ch] }.inject(:|)) -end - -# "^" needs to be here because if it were among operators recognized by -# METHOD_NAME, "^=" would be recognized as two tokens. -SIMPLE_TOKENS = [ - "|", - "<", - ">", - ",", - "=", - "^=", - "^", - "$=", - "[", - "]", - "*=", - "*", - "+", - "?", - "{", - "}" -] - -COMPLEX_TOKENS = [ - [:NIL, /^nil/], - [:TRUE, /^true/], - [:FALSE, /^false/], - # INTEGER needs to be before METHOD_NAME, otherwise e.g. "+1" would be - # recognized as two tokens. - [ - :INTEGER, - /^ - [+-]? # sign - ( - 0[bB][01]+(_[01]+)* # binary (prefixed) - | - 0[oO][0-7]+(_[0-7]+)* # octal (prefixed) - | - 0[dD]\d+(_\d+)* # decimal (prefixed) - | - 0[xX][0-9a-fA-F]+(_[0-9a-fA-F]+)* # hexadecimal (prefixed) - | - 0[0-7]*(_[0-7]+)* # octal (unprefixed) - | - [1-9]\d*(_\d+)* # decimal (unprefixed) - ) - /x - ], - [ - :SYMBOL, - /^ - : - ( - # class name - [A-Z][a-zA-Z0-9_]* - | - # regular method name - [a-z_][a-zA-Z0-9_]*[?!=]? - | - # instance variable name - @[a-zA-Z_][a-zA-Z0-9_]* - | - # class variable name - @@[a-zA-Z_][a-zA-Z0-9_]* - | - # operator (sorted by length, then alphabetically) - (<=>|===|\[\]=|\*\*|\+@|-@|<<|<=|==|=~|>=|>>|\[\]|[%&*+\-\/<>^`|~]) - ) - /x - ], - [ - :STRING, - /^ - ( - ' # sinqle-quoted string - ( - \\[\\'] # escape - | - [^'] # regular character - )* - ' - | - " # double-quoted string - ( - \\ # escape - ( - [\\"ntrfvaebs] # one-character escape - | - [0-7]{1,3} # octal number escape - | - x[0-9a-fA-F]{1,2} # hexadecimal number escape - ) - | - [^"] # regular character - )* - " - ) - /x - ], - [ - :REGEXP, - /^ - \/ - ( - \\ # escape - ( - [\\\/ntrfvaebs\(\)\[\]\{\}\-\.\?\*\+\|\^\$] # one-character escape - | - [0-7]{2,3} # octal number escape - | - x[0-9a-fA-F]{1,2} # hexadecimal number escape - ) - | - [^\/] # regular character - )* - \/ - [imx]* - /x - ], - # ANY, EVEN and ODD need to be before METHOD_NAME, otherwise they would be - # recognized as method names. - [:ANY, /^any/], - [:EVEN, /^even/], - [:ODD, /^odd/], - # We exclude "*", "+", "<", ">", "^" and "|" from method names since they are - # lexed as simple tokens. This is because they have also other meanings in - # Machette patterns beside Ruby method names. - [ - :METHOD_NAME, - /^ - ( - # regular name - [a-z_][a-zA-Z0-9_]*[?!=]? - | - # operator (sorted by length, then alphabetically) - (<=>|===|\[\]=|\*\*|\+@|-@|<<|<=|==|=~|>=|>>|\[\]|[%&\-\/`~]) - ) - /x - ], - [:CLASS_NAME, /^[A-Z][a-zA-Z0-9_]*/] -] - -def next_token - skip_whitespace - - return false if remaining_input.empty? - - # Complex tokens need to be before simple tokens, otherwise e.g. "<<" would be - # recognized as two tokens. - - COMPLEX_TOKENS.each do |type, regexp| - if remaining_input =~ regexp - @pos += $&.length - return [type, $&] - end - end - - SIMPLE_TOKENS.each do |token| - if remaining_input[0...token.length] == token - @pos += token.length - return [token, token] - end - end - - raise SyntaxError, "Unexpected character: #{remaining_input[0..0].inspect}." -end - -def skip_whitespace - if remaining_input =~ /\A^[ \t\r\n]+/ - @pos += $&.length - end -end - -def remaining_input - @input[@pos..-1] -end - -def on_error(error_token_id, error_value, value_stack) - raise SyntaxError, "Unexpected token: #{error_value.inspect}." -end -...end machete.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - 75, 19, 9, 10, 11, 12, 13, 14, 15, 16, - 66, 67, 68, 7, 24, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 74, 8, 7, 47, 9, 10, - 11, 12, 13, 14, 15, 16, 48, 18, 8, 7, - 71, 9, 10, 11, 12, 13, 14, 15, 16, 72, - 70, 8, 7, 73, 9, 10, 11, 12, 13, 14, - 15, 16, 69, 18, 8, 7, 30, 31, 32, 51, - 52, 53, 54, 33, 34, 35, 29, 8, 41, 38, - 39, 76, 30, 31, 32, 77, 36, 37, 40, 33, - 34, 35, 29, nil, 41, 38, 39, 18, 49, 50, - 62, 63, 36, 37, 40, 43, 44, 55, 64, 65, - 45, 46, 57, 58, nil, nil, nil, nil, nil, 56 ] - -racc_action_check = [ - 70, 7, 0, 0, 0, 0, 0, 0, 0, 0, - 54, 54, 54, 0, 17, 8, 8, 8, 8, 8, - 8, 8, 8, 1, 70, 0, 8, 21, 18, 18, - 18, 18, 18, 18, 18, 18, 22, 1, 8, 18, - 56, 48, 48, 48, 48, 48, 48, 48, 48, 57, - 55, 18, 48, 58, 51, 51, 51, 51, 51, 51, - 51, 51, 55, 61, 48, 51, 19, 19, 19, 28, - 28, 28, 28, 19, 19, 19, 19, 51, 19, 19, - 19, 71, 50, 50, 50, 75, 19, 19, 19, 50, - 50, 50, 50, nil, 50, 50, 50, 20, 26, 26, - 52, 52, 50, 50, 50, 20, 20, 46, 53, 53, - 20, 20, 46, 46, nil, nil, nil, nil, nil, 46 ] - -racc_action_pointer = [ - 0, 23, nil, nil, nil, nil, nil, -14, 13, nil, - nil, nil, nil, nil, nil, nil, nil, 14, 26, 64, - 83, 1, 19, nil, nil, nil, 82, nil, 51, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 102, nil, 39, nil, - 80, 52, 94, 102, 4, 33, 35, 20, 24, nil, - nil, 49, nil, nil, nil, nil, nil, nil, nil, nil, - -5, 52, nil, nil, nil, 56, nil, nil ] - -racc_action_default = [ - -56, -56, -1, -3, -4, -5, -6, -7, -33, -48, - -49, -50, -51, -52, -53, -54, -55, -56, -56, -56, - -37, -56, -34, -35, 78, -2, -56, -9, -56, -19, - -20, -21, -22, -23, -24, -25, -26, -27, -28, -29, - -30, -31, -38, -39, -40, -41, -56, -32, -56, -8, - -56, -56, -56, -56, -56, -56, -56, -56, -56, -36, - -10, -11, -12, -15, -13, -16, -14, -17, -18, -42, - -56, -56, -46, -47, -43, -56, -44, -45 ] - -racc_goto_table = [ - 1, 23, 27, 25, 26, 21, 22, 42, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 60, nil, nil, nil, nil, nil, nil, - nil, 59, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 61 ] - -racc_goto_check = [ - 1, 12, 8, 2, 7, 10, 11, 13, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 8, nil, nil, nil, nil, nil, nil, - nil, 12, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 1 ] - -racc_goto_pointer = [ - nil, 0, -15, nil, nil, nil, nil, -15, -17, nil, - -3, -2, -7, -13 ] - -racc_goto_default = [ - nil, 20, 2, 3, 4, 5, 6, nil, nil, 28, - nil, nil, nil, nil ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 1, 31, :_reduce_none, - 3, 31, :_reduce_2, - 1, 32, :_reduce_none, - 1, 32, :_reduce_none, - 1, 32, :_reduce_none, - 1, 32, :_reduce_none, - 1, 33, :_reduce_7, - 4, 33, :_reduce_8, - 1, 37, :_reduce_none, - 3, 37, :_reduce_10, - 3, 38, :_reduce_11, - 3, 38, :_reduce_12, - 3, 38, :_reduce_13, - 3, 38, :_reduce_14, - 3, 38, :_reduce_15, - 3, 38, :_reduce_16, - 3, 38, :_reduce_17, - 3, 38, :_reduce_18, - 1, 39, :_reduce_none, - 1, 39, :_reduce_none, - 1, 39, :_reduce_none, - 1, 39, :_reduce_none, - 1, 39, :_reduce_none, - 1, 39, :_reduce_none, - 1, 39, :_reduce_none, - 1, 39, :_reduce_none, - 1, 39, :_reduce_none, - 1, 39, :_reduce_none, - 1, 39, :_reduce_none, - 1, 39, :_reduce_none, - 1, 39, :_reduce_none, - 3, 34, :_reduce_32, - 0, 40, :_reduce_33, - 1, 40, :_reduce_none, - 1, 41, :_reduce_35, - 3, 41, :_reduce_36, - 1, 42, :_reduce_none, - 2, 42, :_reduce_38, - 1, 43, :_reduce_39, - 1, 43, :_reduce_40, - 1, 43, :_reduce_41, - 3, 43, :_reduce_42, - 4, 43, :_reduce_43, - 4, 43, :_reduce_44, - 5, 43, :_reduce_45, - 3, 43, :_reduce_46, - 3, 43, :_reduce_47, - 1, 35, :_reduce_48, - 1, 35, :_reduce_49, - 1, 35, :_reduce_50, - 1, 35, :_reduce_51, - 1, 35, :_reduce_52, - 1, 35, :_reduce_53, - 1, 35, :_reduce_54, - 1, 36, :_reduce_55 ] - -racc_reduce_n = 56 - -racc_shift_n = 78 - -racc_token_table = { - false => 0, - :error => 1, - :NIL => 2, - :TRUE => 3, - :FALSE => 4, - :INTEGER => 5, - :SYMBOL => 6, - :STRING => 7, - :REGEXP => 8, - :ANY => 9, - :EVEN => 10, - :ODD => 11, - :METHOD_NAME => 12, - :CLASS_NAME => 13, - "|" => 14, - "<" => 15, - ">" => 16, - "," => 17, - "=" => 18, - "^=" => 19, - "$=" => 20, - "*=" => 21, - "*" => 22, - "+" => 23, - "^" => 24, - "[" => 25, - "]" => 26, - "?" => 27, - "{" => 28, - "}" => 29 } - -racc_nt_base = 30 - -racc_use_result_var = true - -Racc_arg = [ - racc_action_table, - racc_action_check, - racc_action_default, - racc_action_pointer, - racc_goto_table, - racc_goto_check, - racc_goto_default, - racc_goto_pointer, - racc_nt_base, - racc_reduce_table, - racc_token_table, - racc_shift_n, - racc_reduce_n, - racc_use_result_var ] - -Racc_token_to_s_table = [ - "$end", - "error", - "NIL", - "TRUE", - "FALSE", - "INTEGER", - "SYMBOL", - "STRING", - "REGEXP", - "ANY", - "EVEN", - "ODD", - "METHOD_NAME", - "CLASS_NAME", - "\"|\"", - "\"<\"", - "\">\"", - "\",\"", - "\"=\"", - "\"^=\"", - "\"$=\"", - "\"*=\"", - "\"*\"", - "\"+\"", - "\"^\"", - "\"[\"", - "\"]\"", - "\"?\"", - "\"{\"", - "\"}\"", - "$start", - "expression", - "primary", - "node", - "array", - "literal", - "any", - "attrs", - "attr", - "method_name", - "items_opt", - "items", - "item", - "quantifier" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -# reduce 1 omitted - -module_eval(<<'.,.,', 'machete.y', 44) - def _reduce_2(val, _values, result) - result = if val[0].is_a?(ChoiceMatcher) - ChoiceMatcher.new(val[0].alternatives << val[2]) - else - ChoiceMatcher.new([val[0], val[2]]) - end - - result - end -.,., - -# reduce 3 omitted - -# reduce 4 omitted - -# reduce 5 omitted - -# reduce 6 omitted - -module_eval(<<'.,.,', 'machete.y', 57) - def _reduce_7(val, _values, result) - result = NodeMatcher.new(val[0].to_sym) - - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 60) - def _reduce_8(val, _values, result) - result = NodeMatcher.new(val[0].to_sym, val[2]) - - result - end -.,., - -# reduce 9 omitted - -module_eval(<<'.,.,', 'machete.y', 64) - def _reduce_10(val, _values, result) - result = val[0].merge(val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 66) - def _reduce_11(val, _values, result) - result = { val[0].to_sym => val[2] } - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 68) - def _reduce_12(val, _values, result) - result = { - val[0].to_sym => SymbolRegexpMatcher.new( - Regexp.new("^" + Regexp.escape(symbol_value(val[2]).to_s)) - ) - } - - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 75) - def _reduce_13(val, _values, result) - result = { - val[0].to_sym => SymbolRegexpMatcher.new( - Regexp.new(Regexp.escape(symbol_value(val[2]).to_s) + "$") - ) - } - - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 82) - def _reduce_14(val, _values, result) - result = { - val[0].to_sym => SymbolRegexpMatcher.new( - Regexp.new(Regexp.escape(symbol_value(val[2]).to_s)) - ) - } - - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 89) - def _reduce_15(val, _values, result) - result = { - val[0].to_sym => StringRegexpMatcher.new( - Regexp.new("^" + Regexp.escape(string_value(val[2]))) - ) - } - - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 96) - def _reduce_16(val, _values, result) - result = { - val[0].to_sym => StringRegexpMatcher.new( - Regexp.new(Regexp.escape(string_value(val[2])) + "$") - ) - } - - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 103) - def _reduce_17(val, _values, result) - result = { - val[0].to_sym => StringRegexpMatcher.new( - Regexp.new(Regexp.escape(string_value(val[2]))) - ) - } - - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 110) - def _reduce_18(val, _values, result) - result = { - val[0].to_sym => IndifferentRegexpMatcher.new( - Regexp.new(regexp_value(val[2])) - ) - } - - result - end -.,., - -# reduce 19 omitted - -# reduce 20 omitted - -# reduce 21 omitted - -# reduce 22 omitted - -# reduce 23 omitted - -# reduce 24 omitted - -# reduce 25 omitted - -# reduce 26 omitted - -# reduce 27 omitted - -# reduce 28 omitted - -# reduce 29 omitted - -# reduce 30 omitted - -# reduce 31 omitted - -module_eval(<<'.,.,', 'machete.y', 134) - def _reduce_32(val, _values, result) - result = ArrayMatcher.new(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 136) - def _reduce_33(val, _values, result) - result = [] - result - end -.,., - -# reduce 34 omitted - -module_eval(<<'.,.,', 'machete.y', 139) - def _reduce_35(val, _values, result) - result = [val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 140) - def _reduce_36(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -# reduce 37 omitted - -module_eval(<<'.,.,', 'machete.y', 143) - def _reduce_38(val, _values, result) - result = Quantifier.new(val[0], *val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 145) - def _reduce_39(val, _values, result) - result = [0, nil, 1] - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 146) - def _reduce_40(val, _values, result) - result = [1, nil, 1] - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 147) - def _reduce_41(val, _values, result) - result = [0, 1, 1] - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 149) - def _reduce_42(val, _values, result) - result = [integer_value(val[1]), integer_value(val[1]), 1] - - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 152) - def _reduce_43(val, _values, result) - result = [integer_value(val[1]), nil, 1] - - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 155) - def _reduce_44(val, _values, result) - result = [0, integer_value(val[2]), 1] - - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 158) - def _reduce_45(val, _values, result) - result = [integer_value(val[1]), integer_value(val[3]), 1] - - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 160) - def _reduce_46(val, _values, result) - result = [0, nil, 2] - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 161) - def _reduce_47(val, _values, result) - result = [1, nil, 2] - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 163) - def _reduce_48(val, _values, result) - result = LiteralMatcher.new(nil) - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 164) - def _reduce_49(val, _values, result) - result = LiteralMatcher.new(true) - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 165) - def _reduce_50(val, _values, result) - result = LiteralMatcher.new(false) - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 166) - def _reduce_51(val, _values, result) - result = LiteralMatcher.new(integer_value(val[0])) - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 167) - def _reduce_52(val, _values, result) - result = LiteralMatcher.new(symbol_value(val[0])) - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 168) - def _reduce_53(val, _values, result) - result = LiteralMatcher.new(string_value(val[0])) - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 169) - def _reduce_54(val, _values, result) - result = LiteralMatcher.new(regexp_value(val[0])) - result - end -.,., - -module_eval(<<'.,.,', 'machete.y', 171) - def _reduce_55(val, _values, result) - result = AnyMatcher.new - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser -end # module Machete diff --git a/test/racc/regress/mediacloth b/test/racc/regress/mediacloth deleted file mode 100644 index cca7d3c7e4..0000000000 --- a/test/racc/regress/mediacloth +++ /dev/null @@ -1,1463 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' - -require 'mediacloth/mediawikiast' - -class MediaWikiParser < Racc::Parser - -module_eval(<<'...end mediacloth.y/module_eval...', 'mediacloth.y', 564) - -attr_accessor :lexer - -def initialize - @nodes = [] - @context = [] - @wiki_ast_length = 0 - super -end - -#Tokenizes input string and parses it. -def parse(input) - @yydebug=true - lexer.tokenize(input) - do_parse - return @nodes.last -end - -#Asks the lexer to return the next token. -def next_token - token = @lexer.lex - if token[0].to_s.upcase.include? "_START" - @context << token[2..3] - elsif token[0].to_s.upcase.include? "_END" - @ast_index = @context.last[0] - @ast_length = token[2] + token[3] - @context.last[0] - @context.pop - else - @ast_index = token[2] - @ast_length = token[3] - end - - @wiki_ast_length += token[3] - - return token[0..1] -end -...end mediacloth.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - 22, 28, 50, 29, 61, 13, 63, 132, 15, 86, - 37, 87, 24, 33, 86, 34, 87, 35, 85, 23, - 26, 25, 27, 12, 86, 30, 87, 31, 86, 42, - 87, 32, 44, 86, 48, 87, 57, 17, 57, 22, - 28, 21, 29, 46, 13, 51, 67, 15, 68, 11, - 36, 24, 33, 14, 34, 69, 35, 36, 23, 26, - 25, 27, 12, 86, 30, 87, 31, 75, 73, 70, - 32, 48, 81, 71, 72, 76, 17, 77, 22, 28, - 21, 29, 82, 13, 45, 51, 15, -65, 11, 36, - 24, 33, 14, 34, -65, 35, 63, 23, 26, 25, - 27, 12, 96, 30, 63, 31, 106, 109, 110, 32, - 113, 114, 48, 117, 118, 17, 124, 22, 28, 21, - 29, 57, 13, 127, 128, 15, 131, 11, 36, 24, - 33, 14, 34, 136, 35, 137, 23, 26, 25, 27, - 12, 138, 30, 75, 31, 51, 141, -63, 32, 106, - 106, 150, 153, 51, 17, nil, nil, nil, 21, nil, - 22, 28, 53, 29, nil, 13, 11, 36, 15, nil, - 14, nil, 24, 33, nil, 34, nil, 35, nil, 23, - 26, 25, 27, 12, nil, 30, nil, 31, nil, nil, - nil, 32, nil, nil, nil, nil, nil, 17, nil, 22, - 28, 21, 29, 55, 13, nil, nil, 15, nil, 11, - 36, 24, 33, 14, 34, nil, 35, nil, 23, 26, - 25, 27, 12, nil, 30, nil, 31, nil, nil, nil, - 32, nil, nil, nil, nil, nil, 17, nil, 22, 28, - 21, 29, nil, 13, nil, nil, 15, nil, 11, 36, - 24, 33, 14, 34, nil, 35, nil, 23, 26, 25, - 27, 12, nil, 30, nil, 31, nil, nil, nil, 32, - nil, nil, nil, nil, nil, 17, nil, 22, 28, 21, - 29, nil, 13, nil, nil, 15, nil, 11, 36, 24, - 33, 14, 34, nil, 35, nil, 23, 26, 25, 27, - 12, nil, 30, nil, 31, nil, nil, nil, 32, nil, - nil, nil, nil, nil, 17, nil, 22, 28, 21, 29, - nil, 13, nil, nil, 15, nil, 11, 36, 24, 33, - 14, 34, nil, 35, nil, 23, 26, 25, 27, 12, - nil, 30, nil, 31, nil, nil, nil, 32, nil, nil, - nil, nil, nil, 17, nil, 22, 28, 21, 29, nil, - 13, nil, nil, 15, nil, 11, 36, 24, 33, 14, - 34, nil, 35, nil, 23, 26, 25, 27, 12, nil, - 30, nil, 31, nil, nil, nil, 32, nil, nil, nil, - nil, nil, 17, nil, 22, 28, 21, 29, nil, 13, - nil, nil, 15, nil, 11, 36, 24, 33, 14, 34, - nil, 35, nil, 23, 26, 25, 27, 12, nil, 30, - nil, 31, nil, nil, nil, 32, nil, nil, nil, nil, - nil, 17, 78, nil, nil, 21, nil, 22, 28, 88, - 29, nil, 13, 11, 36, 15, nil, 14, nil, 24, - 33, nil, 34, nil, 35, nil, 23, 26, 25, 27, - 12, nil, 30, nil, 31, nil, nil, nil, 32, nil, - nil, nil, nil, nil, 17, nil, 22, 28, 21, 29, - 89, 13, nil, nil, 15, nil, 11, 36, 24, 33, - 14, 34, nil, 35, nil, 23, 26, 25, 27, 12, - nil, 30, nil, 31, nil, nil, nil, 32, nil, nil, - nil, nil, nil, 17, nil, 22, 28, 21, 29, nil, - 13, nil, nil, 15, nil, 11, 36, 24, 33, 14, - 34, nil, 35, nil, 23, 26, 25, 27, 12, nil, - 30, nil, 31, nil, nil, 93, 32, nil, nil, nil, - nil, nil, 17, nil, 22, 28, 21, 29, nil, 13, - nil, nil, 15, nil, 11, 36, 24, 33, 14, 34, - nil, 35, nil, 23, 26, 25, 27, 12, nil, 30, - nil, 31, nil, nil, nil, 32, nil, nil, 98, nil, - nil, 17, nil, 22, 28, 21, 29, nil, 13, nil, - nil, 15, nil, 11, 36, 24, 33, 14, 34, nil, - 35, nil, 23, 26, 25, 27, 12, nil, 30, nil, - 31, nil, nil, nil, 32, nil, nil, nil, nil, 101, - 17, nil, nil, nil, 21, nil, 22, 28, nil, 29, - nil, 13, 11, 36, 15, nil, 14, nil, 24, 33, - 102, 34, nil, 35, nil, 23, 26, 25, 27, 12, - nil, 30, nil, 31, nil, nil, nil, 32, nil, nil, - nil, nil, nil, 17, nil, 22, 28, 21, 29, nil, - 13, nil, nil, 15, nil, 11, 36, 24, 33, 14, - 34, 103, 35, nil, 23, 26, 25, 27, 12, nil, - 30, nil, 31, nil, nil, nil, 32, nil, nil, nil, - nil, nil, 17, nil, 22, 28, 21, 29, nil, 13, - nil, nil, 15, nil, 11, 36, 24, 33, 14, 34, - nil, 35, 104, 23, 26, 25, 27, 12, nil, 30, - nil, 31, nil, nil, nil, 32, nil, nil, nil, nil, - nil, 17, nil, 22, 28, 21, 29, nil, 13, nil, - nil, 15, nil, 11, 36, 24, 33, 14, 34, nil, - 35, nil, 23, 26, 25, 27, 12, nil, 30, nil, - 31, nil, nil, nil, 32, nil, nil, nil, nil, nil, - 17, nil, 22, 28, 21, 29, nil, 13, nil, nil, - 15, nil, 11, 36, 24, 33, 14, 34, nil, 35, - nil, 23, 26, 25, 27, 12, nil, 30, nil, 31, - nil, nil, nil, 32, nil, nil, nil, nil, nil, 17, - nil, 22, 28, 21, 29, nil, 13, nil, nil, 15, - nil, 11, 36, 24, 33, 14, 34, nil, 35, nil, - 23, 26, 25, 27, 12, nil, 30, nil, 31, nil, - nil, nil, 32, nil, nil, nil, nil, nil, 17, 115, - 22, 28, 21, 29, nil, 13, nil, nil, 15, nil, - 11, 36, 24, 33, 14, 34, nil, 35, nil, 23, - 26, 25, 27, 12, nil, 30, nil, 31, nil, nil, - nil, 32, nil, nil, nil, nil, nil, 17, nil, 22, - 28, 21, 29, nil, 13, nil, 121, 15, nil, 11, - 36, 24, 33, 14, 34, nil, 35, nil, 23, 26, - 25, 27, 12, nil, 30, nil, 31, nil, nil, nil, - 32, nil, nil, nil, nil, nil, 17, nil, 22, 28, - 21, 29, nil, 13, nil, nil, 15, 123, 11, 36, - 24, 33, 14, 34, nil, 35, nil, 23, 26, 25, - 27, 12, nil, 30, nil, 31, nil, nil, 126, 32, - nil, nil, nil, nil, nil, 17, nil, 22, 28, 21, - 29, nil, 13, nil, nil, 15, nil, 11, 36, 24, - 33, 14, 34, nil, 35, nil, 23, 26, 25, 27, - 12, nil, 30, nil, 31, nil, nil, nil, 32, nil, - nil, 129, nil, nil, 17, nil, 22, 28, 21, 29, - nil, 13, nil, nil, 15, nil, 11, 36, 24, 33, - 14, 34, nil, 35, nil, 23, 26, 25, 27, 12, - nil, 30, nil, 31, nil, nil, nil, 32, nil, nil, - nil, nil, 130, 17, nil, 22, 28, 21, 29, nil, - 13, nil, 134, 15, nil, 11, 36, 24, 33, 14, - 34, nil, 35, nil, 23, 26, 25, 27, 12, nil, - 30, nil, 31, nil, nil, nil, 32, nil, nil, nil, - nil, nil, 17, nil, 22, 28, 21, 29, nil, 13, - nil, nil, 15, nil, 11, 36, 24, 33, 14, 34, - nil, 35, nil, 23, 26, 25, 27, 12, nil, 30, - nil, 31, nil, nil, nil, 32, nil, nil, nil, nil, - nil, 17, nil, 22, 28, 21, 29, nil, 13, nil, - nil, 15, nil, 11, 36, 24, 33, 14, 34, nil, - 35, nil, 23, 26, 25, 27, 12, nil, 30, nil, - 31, nil, nil, nil, 32, nil, nil, nil, nil, nil, - 17, nil, 22, 28, 21, 29, nil, 13, nil, 142, - 15, nil, 11, 36, 24, 33, 14, 34, nil, 35, - nil, 23, 26, 25, 27, 12, nil, 30, nil, 31, - nil, nil, nil, 32, nil, nil, nil, nil, nil, 17, - nil, 22, 28, 21, 29, nil, 13, nil, nil, 15, - 144, 11, 36, 24, 33, 14, 34, nil, 35, nil, - 23, 26, 25, 27, 12, nil, 30, nil, 31, nil, - nil, nil, 32, nil, nil, nil, nil, nil, 17, nil, - nil, nil, 21, nil, nil, nil, nil, nil, nil, nil, - 11, 36, 22, 28, 14, 29, nil, 13, nil, nil, - 15, nil, 136, nil, 24, 33, nil, 34, nil, 35, - nil, 23, 26, 25, 27, 12, nil, 30, nil, 31, - nil, nil, nil, 32, nil, nil, nil, nil, nil, 17, - nil, nil, nil, 21, nil, nil, nil, nil, nil, nil, - nil, 11, 36, 22, 28, 14, 29, nil, 13, nil, - nil, 15, nil, 136, nil, 24, 33, nil, 34, nil, - 35, nil, 23, 26, 25, 27, 12, nil, 30, nil, - 31, nil, nil, nil, 32, nil, nil, nil, nil, nil, - 17, nil, nil, nil, 21, nil, nil, nil, nil, nil, - nil, nil, 11, 36, nil, nil, 14 ] - -racc_action_check = [ - 0, 0, 21, 0, 32, 0, 32, 106, 0, 85, - 1, 85, 0, 0, 121, 0, 121, 0, 51, 0, - 0, 0, 0, 0, 123, 0, 123, 0, 142, 13, - 142, 0, 15, 144, 17, 144, 30, 0, 31, 2, - 2, 0, 2, 15, 2, 21, 36, 2, 37, 0, - 0, 2, 2, 0, 2, 39, 2, 106, 2, 2, - 2, 2, 2, 51, 2, 51, 2, 44, 44, 41, - 2, 48, 48, 42, 43, 45, 2, 46, 12, 12, - 2, 12, 49, 12, 15, 50, 12, 56, 2, 2, - 12, 12, 2, 12, 58, 12, 59, 12, 12, 12, - 12, 12, 60, 12, 62, 12, 67, 73, 74, 12, - 76, 77, 81, 83, 84, 12, 90, 14, 14, 12, - 14, 91, 14, 94, 95, 14, 105, 12, 12, 14, - 14, 12, 14, 109, 14, 112, 14, 14, 14, 14, - 14, 113, 14, 114, 14, 118, 119, 125, 14, 132, - 133, 135, 139, 141, 14, nil, nil, nil, 14, nil, - 28, 28, 28, 28, nil, 28, 14, 14, 28, nil, - 14, nil, 28, 28, nil, 28, nil, 28, nil, 28, - 28, 28, 28, 28, nil, 28, nil, 28, nil, nil, - nil, 28, nil, nil, nil, nil, nil, 28, nil, 29, - 29, 28, 29, 29, 29, nil, nil, 29, nil, 28, - 28, 29, 29, 28, 29, nil, 29, nil, 29, 29, - 29, 29, 29, nil, 29, nil, 29, nil, nil, nil, - 29, nil, nil, nil, nil, nil, 29, nil, 33, 33, - 29, 33, nil, 33, nil, nil, 33, nil, 29, 29, - 33, 33, 29, 33, nil, 33, nil, 33, 33, 33, - 33, 33, nil, 33, nil, 33, nil, nil, nil, 33, - nil, nil, nil, nil, nil, 33, nil, 34, 34, 33, - 34, nil, 34, nil, nil, 34, nil, 33, 33, 34, - 34, 33, 34, nil, 34, nil, 34, 34, 34, 34, - 34, nil, 34, nil, 34, nil, nil, nil, 34, nil, - nil, nil, nil, nil, 34, nil, 35, 35, 34, 35, - nil, 35, nil, nil, 35, nil, 34, 34, 35, 35, - 34, 35, nil, 35, nil, 35, 35, 35, 35, 35, - nil, 35, nil, 35, nil, nil, nil, 35, nil, nil, - nil, nil, nil, 35, nil, 40, 40, 35, 40, nil, - 40, nil, nil, 40, nil, 35, 35, 40, 40, 35, - 40, nil, 40, nil, 40, 40, 40, 40, 40, nil, - 40, nil, 40, nil, nil, nil, 40, nil, nil, nil, - nil, nil, 40, nil, 47, 47, 40, 47, nil, 47, - nil, nil, 47, nil, 40, 40, 47, 47, 40, 47, - nil, 47, nil, 47, 47, 47, 47, 47, nil, 47, - nil, 47, nil, nil, nil, 47, nil, nil, nil, nil, - nil, 47, 47, nil, nil, 47, nil, 52, 52, 52, - 52, nil, 52, 47, 47, 52, nil, 47, nil, 52, - 52, nil, 52, nil, 52, nil, 52, 52, 52, 52, - 52, nil, 52, nil, 52, nil, nil, nil, 52, nil, - nil, nil, nil, nil, 52, nil, 54, 54, 52, 54, - 54, 54, nil, nil, 54, nil, 52, 52, 54, 54, - 52, 54, nil, 54, nil, 54, 54, 54, 54, 54, - nil, 54, nil, 54, nil, nil, nil, 54, nil, nil, - nil, nil, nil, 54, nil, 57, 57, 54, 57, nil, - 57, nil, nil, 57, nil, 54, 54, 57, 57, 54, - 57, nil, 57, nil, 57, 57, 57, 57, 57, nil, - 57, nil, 57, nil, nil, 57, 57, nil, nil, nil, - nil, nil, 57, nil, 61, 61, 57, 61, nil, 61, - nil, nil, 61, nil, 57, 57, 61, 61, 57, 61, - nil, 61, nil, 61, 61, 61, 61, 61, nil, 61, - nil, 61, nil, nil, nil, 61, nil, nil, 61, nil, - nil, 61, nil, 63, 63, 61, 63, nil, 63, nil, - nil, 63, nil, 61, 61, 63, 63, 61, 63, nil, - 63, nil, 63, 63, 63, 63, 63, nil, 63, nil, - 63, nil, nil, nil, 63, nil, nil, nil, nil, 63, - 63, nil, nil, nil, 63, nil, 64, 64, nil, 64, - nil, 64, 63, 63, 64, nil, 63, nil, 64, 64, - 64, 64, nil, 64, nil, 64, 64, 64, 64, 64, - nil, 64, nil, 64, nil, nil, nil, 64, nil, nil, - nil, nil, nil, 64, nil, 65, 65, 64, 65, nil, - 65, nil, nil, 65, nil, 64, 64, 65, 65, 64, - 65, 65, 65, nil, 65, 65, 65, 65, 65, nil, - 65, nil, 65, nil, nil, nil, 65, nil, nil, nil, - nil, nil, 65, nil, 66, 66, 65, 66, nil, 66, - nil, nil, 66, nil, 65, 65, 66, 66, 65, 66, - nil, 66, 66, 66, 66, 66, 66, 66, nil, 66, - nil, 66, nil, nil, nil, 66, nil, nil, nil, nil, - nil, 66, nil, 71, 71, 66, 71, nil, 71, nil, - nil, 71, nil, 66, 66, 71, 71, 66, 71, nil, - 71, nil, 71, 71, 71, 71, 71, nil, 71, nil, - 71, nil, nil, nil, 71, nil, nil, nil, nil, nil, - 71, nil, 75, 75, 71, 75, nil, 75, nil, nil, - 75, nil, 71, 71, 75, 75, 71, 75, nil, 75, - nil, 75, 75, 75, 75, 75, nil, 75, nil, 75, - nil, nil, nil, 75, nil, nil, nil, nil, nil, 75, - nil, 79, 79, 75, 79, nil, 79, nil, nil, 79, - nil, 75, 75, 79, 79, 75, 79, nil, 79, nil, - 79, 79, 79, 79, 79, nil, 79, nil, 79, nil, - nil, nil, 79, nil, nil, nil, nil, nil, 79, 79, - 86, 86, 79, 86, nil, 86, nil, nil, 86, nil, - 79, 79, 86, 86, 79, 86, nil, 86, nil, 86, - 86, 86, 86, 86, nil, 86, nil, 86, nil, nil, - nil, 86, nil, nil, nil, nil, nil, 86, nil, 87, - 87, 86, 87, nil, 87, nil, 86, 87, nil, 86, - 86, 87, 87, 86, 87, nil, 87, nil, 87, 87, - 87, 87, 87, nil, 87, nil, 87, nil, nil, nil, - 87, nil, nil, nil, nil, nil, 87, nil, 92, 92, - 87, 92, nil, 92, nil, nil, 92, 87, 87, 87, - 92, 92, 87, 92, nil, 92, nil, 92, 92, 92, - 92, 92, nil, 92, nil, 92, nil, nil, 92, 92, - nil, nil, nil, nil, nil, 92, nil, 97, 97, 92, - 97, nil, 97, nil, nil, 97, nil, 92, 92, 97, - 97, 92, 97, nil, 97, nil, 97, 97, 97, 97, - 97, nil, 97, nil, 97, nil, nil, nil, 97, nil, - nil, 97, nil, nil, 97, nil, 100, 100, 97, 100, - nil, 100, nil, nil, 100, nil, 97, 97, 100, 100, - 97, 100, nil, 100, nil, 100, 100, 100, 100, 100, - nil, 100, nil, 100, nil, nil, nil, 100, nil, nil, - nil, nil, 100, 100, nil, 108, 108, 100, 108, nil, - 108, nil, 108, 108, nil, 100, 100, 108, 108, 100, - 108, nil, 108, nil, 108, 108, 108, 108, 108, nil, - 108, nil, 108, nil, nil, nil, 108, nil, nil, nil, - nil, nil, 108, nil, 111, 111, 108, 111, nil, 111, - nil, nil, 111, nil, 108, 108, 111, 111, 108, 111, - nil, 111, nil, 111, 111, 111, 111, 111, nil, 111, - nil, 111, nil, nil, nil, 111, nil, nil, nil, nil, - nil, 111, nil, 120, 120, 111, 120, nil, 120, nil, - nil, 120, nil, 111, 111, 120, 120, 111, 120, nil, - 120, nil, 120, 120, 120, 120, 120, nil, 120, nil, - 120, nil, nil, nil, 120, nil, nil, nil, nil, nil, - 120, nil, 122, 122, 120, 122, nil, 122, nil, 120, - 122, nil, 120, 120, 122, 122, 120, 122, nil, 122, - nil, 122, 122, 122, 122, 122, nil, 122, nil, 122, - nil, nil, nil, 122, nil, nil, nil, nil, nil, 122, - nil, 134, 134, 122, 134, nil, 134, nil, nil, 134, - 122, 122, 122, 134, 134, 122, 134, nil, 134, nil, - 134, 134, 134, 134, 134, nil, 134, nil, 134, nil, - nil, nil, 134, nil, nil, nil, nil, nil, 134, nil, - nil, nil, 134, nil, nil, nil, nil, nil, nil, nil, - 134, 134, 136, 136, 134, 136, nil, 136, nil, nil, - 136, nil, 136, nil, 136, 136, nil, 136, nil, 136, - nil, 136, 136, 136, 136, 136, nil, 136, nil, 136, - nil, nil, nil, 136, nil, nil, nil, nil, nil, 136, - nil, nil, nil, 136, nil, nil, nil, nil, nil, nil, - nil, 136, 136, 152, 152, 136, 152, nil, 152, nil, - nil, 152, nil, 152, nil, 152, 152, nil, 152, nil, - 152, nil, 152, 152, 152, 152, 152, nil, 152, nil, - 152, nil, nil, nil, 152, nil, nil, nil, nil, nil, - 152, nil, nil, nil, 152, nil, nil, nil, nil, nil, - nil, nil, 152, 152, nil, nil, 152 ] - -racc_action_pointer = [ - -2, 10, 37, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 76, 27, 115, 30, nil, -7, nil, nil, - nil, 0, nil, nil, nil, nil, nil, nil, 158, 197, - 5, 7, -31, 236, 275, 314, 44, 48, nil, 29, - 353, 61, 64, 18, 55, 73, 23, 392, 30, 38, - 40, 16, 435, nil, 474, nil, 59, 513, 64, 59, - 68, 552, 67, 591, 634, 673, 712, 94, nil, nil, - nil, 751, nil, 105, 97, 790, 98, 109, nil, 829, - nil, 71, nil, 69, 68, -38, 868, 907, nil, nil, - 88, 90, 946, nil, 93, 90, nil, 985, nil, nil, - 1024, nil, nil, nil, nil, 73, 5, nil, 1063, 121, - nil, 1102, 124, 139, 131, nil, nil, nil, 100, 100, - 1141, -33, 1180, -23, nil, 116, nil, nil, nil, nil, - nil, nil, 137, 138, 1219, 140, 1270, nil, nil, 141, - nil, 108, -19, nil, -14, nil, nil, nil, nil, nil, - nil, nil, 1321, nil, nil, nil, nil, nil ] - -racc_action_default = [ - -83, -83, -1, -2, -3, -4, -5, -6, -7, -8, - -9, -10, -19, -83, -19, -83, -18, -23, -37, -39, - -40, -43, -51, -52, -53, -54, -55, -56, -83, -83, - -83, -83, -73, -83, -83, -83, -83, -83, -38, -83, - -20, -83, -26, -83, -30, -83, -83, -83, -23, -83, - -43, -46, -83, -57, -83, -58, -63, -83, -63, -73, - -83, -83, -73, -83, -83, -83, -83, -80, 158, -11, - -12, -83, -13, -83, -83, -83, -32, -83, -21, -83, - -24, -23, -41, -83, -83, -46, -83, -83, -59, -60, - -83, -83, -83, -66, -83, -83, -69, -83, -70, -72, - -83, -74, -76, -77, -78, -83, -83, -27, -28, -34, - -15, -31, -83, -83, -30, -22, -25, -42, -43, -83, - -83, -46, -83, -46, -61, -65, -67, -62, -68, -71, - -75, -79, -80, -80, -83, -83, -34, -16, -33, -83, - -44, -43, -46, -47, -46, -49, -64, -81, -82, -29, - -14, -35, -34, -17, -45, -48, -50, -36 ] - -racc_goto_table = [ - 38, 84, 74, 105, 49, 39, 90, 43, 94, 60, - 135, 1, 133, 2, 47, 41, 107, 112, 59, 56, - 58, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 83, nil, 119, 95, 151, 38, 99, - nil, 52, 54, nil, nil, 80, 64, 65, 66, nil, - 38, nil, 38, 157, nil, nil, nil, nil, nil, nil, - 79, nil, 38, 38, 38, nil, nil, nil, 147, 148, - 92, 143, 139, 145, 97, 146, 100, 38, 116, 149, - 125, nil, nil, nil, 108, nil, nil, nil, 111, nil, - 38, nil, 155, nil, 156, 38, nil, nil, 38, 120, - 122, 140, nil, nil, nil, nil, 38, nil, nil, 38, - nil, nil, nil, nil, nil, nil, nil, nil, 38, nil, - 38, nil, nil, nil, 154, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 108, nil, 152, - 38 ] - -racc_goto_check = [ - 3, 23, 15, 30, 22, 12, 25, 12, 25, 28, - 14, 1, 11, 2, 18, 13, 19, 16, 27, 24, - 24, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 22, nil, 23, 28, 14, 3, 28, - nil, 2, 2, nil, nil, 18, 2, 2, 2, nil, - 3, nil, 3, 14, nil, nil, nil, nil, nil, nil, - 2, nil, 3, 3, 3, nil, nil, nil, 30, 30, - 2, 23, 15, 23, 2, 25, 2, 3, 18, 19, - 24, nil, nil, nil, 2, nil, nil, nil, 2, nil, - 3, nil, 23, nil, 23, 3, nil, nil, 3, 2, - 2, 22, nil, nil, nil, nil, 3, nil, nil, 3, - nil, nil, nil, nil, nil, nil, nil, nil, 3, nil, - 3, nil, nil, nil, 22, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 2, nil, 2, - 3 ] - -racc_goto_pointer = [ - nil, 11, 13, -2, nil, nil, nil, nil, nil, nil, - nil, -94, -7, 2, -99, -42, -59, nil, -3, -55, - nil, nil, -17, -50, -11, -50, nil, -14, -23, nil, - -64 ] - -racc_goto_default = [ - nil, nil, 40, 18, 3, 4, 5, 6, 7, 8, - 9, 10, nil, nil, nil, nil, nil, 16, nil, nil, - 19, 20, nil, nil, nil, nil, 91, nil, nil, 62, - nil ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 1, 58, :_reduce_1, - 1, 60, :_reduce_2, - 1, 60, :_reduce_3, - 1, 60, :_reduce_4, - 1, 60, :_reduce_5, - 1, 60, :_reduce_6, - 1, 60, :_reduce_7, - 1, 60, :_reduce_8, - 1, 60, :_reduce_9, - 1, 60, :_reduce_10, - 3, 60, :_reduce_11, - 3, 60, :_reduce_12, - 3, 60, :_reduce_13, - 6, 60, :_reduce_14, - 4, 60, :_reduce_15, - 5, 60, :_reduce_16, - 6, 60, :_reduce_17, - 1, 60, :_reduce_none, - 0, 69, :_reduce_19, - 1, 69, :_reduce_20, - 3, 67, :_reduce_21, - 4, 67, :_reduce_22, - 0, 75, :_reduce_23, - 2, 75, :_reduce_24, - 3, 75, :_reduce_25, - 1, 70, :_reduce_26, - 3, 70, :_reduce_27, - 1, 76, :_reduce_28, - 3, 76, :_reduce_29, - 0, 72, :_reduce_30, - 2, 72, :_reduce_31, - 0, 73, :_reduce_32, - 2, 73, :_reduce_33, - 0, 71, :_reduce_34, - 2, 71, :_reduce_35, - 3, 71, :_reduce_36, - 1, 59, :_reduce_37, - 2, 59, :_reduce_38, - 1, 61, :_reduce_39, - 1, 61, :_reduce_40, - 3, 74, :_reduce_41, - 4, 74, :_reduce_42, - 0, 79, :_reduce_43, - 4, 79, :_reduce_44, - 5, 79, :_reduce_45, - 0, 80, :_reduce_46, - 3, 80, :_reduce_47, - 4, 80, :_reduce_48, - 3, 80, :_reduce_49, - 4, 80, :_reduce_50, - 1, 77, :_reduce_51, - 1, 77, :_reduce_52, - 1, 77, :_reduce_53, - 1, 77, :_reduce_54, - 1, 77, :_reduce_55, - 1, 77, :_reduce_56, - 2, 78, :_reduce_57, - 2, 78, :_reduce_58, - 3, 78, :_reduce_59, - 3, 78, :_reduce_60, - 4, 62, :_reduce_61, - 4, 63, :_reduce_62, - 0, 83, :_reduce_63, - 3, 82, :_reduce_64, - 0, 82, :_reduce_65, - 2, 81, :_reduce_66, - 3, 81, :_reduce_67, - 4, 64, :_reduce_68, - 3, 64, :_reduce_69, - 2, 84, :_reduce_70, - 3, 84, :_reduce_71, - 2, 85, :_reduce_72, - 0, 85, :_reduce_73, - 2, 86, :_reduce_74, - 3, 86, :_reduce_75, - 3, 65, :_reduce_76, - 3, 65, :_reduce_77, - 3, 66, :_reduce_78, - 4, 68, :_reduce_79, - 0, 87, :_reduce_80, - 3, 87, :_reduce_81, - 3, 87, :_reduce_82 ] - -racc_reduce_n = 83 - -racc_shift_n = 158 - -racc_token_table = { - false => 0, - :error => 1, - :TEXT => 2, - :BOLD_START => 3, - :BOLD_END => 4, - :ITALIC_START => 5, - :ITALIC_END => 6, - :LINK_START => 7, - :LINK_END => 8, - :LINKSEP => 9, - :INTLINK_START => 10, - :INTLINK_END => 11, - :INTLINKSEP => 12, - :RESOURCESEP => 13, - :CHAR_ENT => 14, - :PRE_START => 15, - :PRE_END => 16, - :PREINDENT_START => 17, - :PREINDENT_END => 18, - :SECTION_START => 19, - :SECTION_END => 20, - :HLINE => 21, - :SIGNATURE_NAME => 22, - :SIGNATURE_DATE => 23, - :SIGNATURE_FULL => 24, - :PARA_START => 25, - :PARA_END => 26, - :UL_START => 27, - :UL_END => 28, - :OL_START => 29, - :OL_END => 30, - :LI_START => 31, - :LI_END => 32, - :DL_START => 33, - :DL_END => 34, - :DT_START => 35, - :DT_END => 36, - :DD_START => 37, - :DD_END => 38, - :TAG_START => 39, - :TAG_END => 40, - :ATTR_NAME => 41, - :ATTR_VALUE => 42, - :TABLE_START => 43, - :TABLE_END => 44, - :ROW_START => 45, - :ROW_END => 46, - :HEAD_START => 47, - :HEAD_END => 48, - :CELL_START => 49, - :CELL_END => 50, - :KEYWORD => 51, - :TEMPLATE_START => 52, - :TEMPLATE_END => 53, - :CATEGORY => 54, - :PASTE_START => 55, - :PASTE_END => 56 } - -racc_nt_base = 57 - -racc_use_result_var = true - -Racc_arg = [ - racc_action_table, - racc_action_check, - racc_action_default, - racc_action_pointer, - racc_goto_table, - racc_goto_check, - racc_goto_default, - racc_goto_pointer, - racc_nt_base, - racc_reduce_table, - racc_token_table, - racc_shift_n, - racc_reduce_n, - racc_use_result_var ] - -Racc_token_to_s_table = [ - "$end", - "error", - "TEXT", - "BOLD_START", - "BOLD_END", - "ITALIC_START", - "ITALIC_END", - "LINK_START", - "LINK_END", - "LINKSEP", - "INTLINK_START", - "INTLINK_END", - "INTLINKSEP", - "RESOURCESEP", - "CHAR_ENT", - "PRE_START", - "PRE_END", - "PREINDENT_START", - "PREINDENT_END", - "SECTION_START", - "SECTION_END", - "HLINE", - "SIGNATURE_NAME", - "SIGNATURE_DATE", - "SIGNATURE_FULL", - "PARA_START", - "PARA_END", - "UL_START", - "UL_END", - "OL_START", - "OL_END", - "LI_START", - "LI_END", - "DL_START", - "DL_END", - "DT_START", - "DT_END", - "DD_START", - "DD_END", - "TAG_START", - "TAG_END", - "ATTR_NAME", - "ATTR_VALUE", - "TABLE_START", - "TABLE_END", - "ROW_START", - "ROW_END", - "HEAD_START", - "HEAD_END", - "CELL_START", - "CELL_END", - "KEYWORD", - "TEMPLATE_START", - "TEMPLATE_END", - "CATEGORY", - "PASTE_START", - "PASTE_END", - "$start", - "wiki", - "repeated_contents", - "contents", - "text", - "bulleted_list", - "numbered_list", - "dictionary_list", - "preformatted", - "section", - "tag", - "template", - "para_contents", - "link_contents", - "reslink_repeated_contents", - "intlink_repeated_contents", - "cat_sort_contents", - "table", - "tag_attributes", - "link_repeated_contents", - "element", - "formatted_element", - "table_contents", - "row_contents", - "list_item", - "list_contents", - "@1", - "dictionary_term", - "dictionary_contents", - "dictionary_definition", - "template_parameters" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'mediacloth.y', 47) - def _reduce_1(val, _values, result) - @nodes.push WikiAST.new(0, @wiki_ast_length) - #@nodes.last.children.insert(0, val[0]) - #puts val[0] - @nodes.last.children += val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 57) - def _reduce_2(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 61) - def _reduce_3(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 65) - def _reduce_4(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 69) - def _reduce_5(val, _values, result) - list = ListAST.new(@ast_index, @ast_length) - list.list_type = :Dictionary - list.children = val[0] - result = list - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 76) - def _reduce_6(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 80) - def _reduce_7(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 84) - def _reduce_8(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 88) - def _reduce_9(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 92) - def _reduce_10(val, _values, result) - k = KeywordAST.new(@ast_index, @ast_length) - k.text = val[0] - result = k - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 98) - def _reduce_11(val, _values, result) - p = ParagraphAST.new(@ast_index, @ast_length) - p.children = val[1] - result = p - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 104) - def _reduce_12(val, _values, result) - l = LinkAST.new(@ast_index, @ast_length) - l.link_type = val[0] - l.url = val[1][0] - l.children += val[1][1..-1] if val[1].length > 1 - result = l - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 112) - def _reduce_13(val, _values, result) - p = PasteAST.new(@ast_index, @ast_length) - p.children = val[1] - result = p - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 118) - def _reduce_14(val, _values, result) - l = ResourceLinkAST.new(@ast_index, @ast_length) - l.prefix = val[1] - l.locator = val[3] - l.children = val[4] unless val[4].nil? or val[4].empty? - result = l - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 126) - def _reduce_15(val, _values, result) - l = InternalLinkAST.new(@ast_index, @ast_length) - l.locator = val[1] - l.children = val[2] unless val[2].nil? or val[2].empty? - result = l - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 133) - def _reduce_16(val, _values, result) - l = CategoryAST.new(@ast_index, @ast_length) - l.locator = val[2] - l.sort_as = val[3] - result = l - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 140) - def _reduce_17(val, _values, result) - l = CategoryLinkAST.new(@ast_index, @ast_length) - l.locator = val[3] - l.children = val[4] unless val[4].nil? or val[4].empty? - result = l - - result - end -.,., - -# reduce 18 omitted - -module_eval(<<'.,.,', 'mediacloth.y', 150) - def _reduce_19(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 154) - def _reduce_20(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 161) - def _reduce_21(val, _values, result) - if val[0] != val[2] - raise Racc::ParseError.new("XHTML end tag #{val[2]} does not match start tag #{val[0]}") - end - elem = ElementAST.new(@ast_index, @ast_length) - elem.name = val[0] - elem.attributes = val[1] - result = elem - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 171) - def _reduce_22(val, _values, result) - if val[0] != val[3] - raise Racc::ParseError.new("XHTML end tag #{val[3]} does not match start tag #{val[0]}") - end - elem = ElementAST.new(@ast_index, @ast_length) - elem.name = val[0] - elem.attributes = val[1] - elem.children += val[2] - result = elem - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 184) - def _reduce_23(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 188) - def _reduce_24(val, _values, result) - attr_map = val[2] ? val[2] : {} - attr_map[val[0]] = true - result = attr_map - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 194) - def _reduce_25(val, _values, result) - attr_map = val[2] ? val[2] : {} - attr_map[val[0]] = val[1] - result = attr_map - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 204) - def _reduce_26(val, _values, result) - result = val - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 208) - def _reduce_27(val, _values, result) - result = [val[0]] - result += val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 217) - def _reduce_28(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 221) - def _reduce_29(val, _values, result) - result = val[0] - result += val[2] if val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 229) - def _reduce_30(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 233) - def _reduce_31(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 239) - def _reduce_32(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 243) - def _reduce_33(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 249) - def _reduce_34(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 253) - def _reduce_35(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 257) - def _reduce_36(val, _values, result) - i = InternalLinkItemAST.new(@ast_index, @ast_length) - i.children = val[1] - result = [i] - result += val[2] if val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 266) - def _reduce_37(val, _values, result) - result = [] - result << val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 271) - def _reduce_38(val, _values, result) - result = [] - result += val[0] - result << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 279) - def _reduce_39(val, _values, result) - p = TextAST.new(@ast_index, @ast_length) - p.formatting = val[0][0] - p.contents = val[0][1] - result = p - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 286) - def _reduce_40(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 293) - def _reduce_41(val, _values, result) - table = TableAST.new(@ast_index, @ast_length) - table.children = val[1] unless val[1].nil? or val[1].empty? - result = table - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 299) - def _reduce_42(val, _values, result) - table = TableAST.new(@ast_index, @ast_length) - table.options = val[1] - table.children = val[2] unless val[2].nil? or val[2].empty? - result = table - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 307) - def _reduce_43(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 311) - def _reduce_44(val, _values, result) - row = TableRowAST.new(@ast_index, @ast_length) - row.children = val[1] unless val[1].nil? or val[1].empty? - result = [row] - result += val[3] unless val[3].nil? or val[3].empty? - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 318) - def _reduce_45(val, _values, result) - row = TableRowAST.new(@ast_index, @ast_length) - row.children = val[2] unless val[2].nil? or val[2].empty? - row.options = val[1] - result = [row] - result += val[4] unless val[4].nil? or val[4].empty? - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 327) - def _reduce_46(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 331) - def _reduce_47(val, _values, result) - cell = TableCellAST.new(@ast_index, @ast_length) - cell.type = :head - result = [cell] - result += val[2] unless val[2].nil? or val[2].empty? - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 338) - def _reduce_48(val, _values, result) - cell = TableCellAST.new(@ast_index, @ast_length) - cell.children = val[1] unless val[1].nil? or val[1].empty? - cell.type = :head - result = [cell] - result += val[3] unless val[3].nil? or val[3].empty? - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 346) - def _reduce_49(val, _values, result) - cell = TableCellAST.new(@ast_index, @ast_length) - cell.type = :body - result = [cell] - result += val[2] unless val[2].nil? or val[2].empty? - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 353) - def _reduce_50(val, _values, result) - if val[2] == 'attributes' - result = [] - else - cell = TableCellAST.new(@ast_index, @ast_length) - cell.children = val[1] unless val[1].nil? or val[1].empty? - cell.type = :body - result = [cell] - end - result += val[3] unless val[3].nil? or val[3].empty? - if val[2] == 'attributes' and val[3] and val[3].first.class == TableCellAST - val[3].first.attributes = val[1] - end - result - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 371) - def _reduce_51(val, _values, result) - return [:None, val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 373) - def _reduce_52(val, _values, result) - return [:HLine, val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 375) - def _reduce_53(val, _values, result) - return [:CharacterEntity, val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 377) - def _reduce_54(val, _values, result) - return [:SignatureDate, val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 379) - def _reduce_55(val, _values, result) - return [:SignatureName, val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 381) - def _reduce_56(val, _values, result) - return [:SignatureFull, val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 387) - def _reduce_57(val, _values, result) - result = FormattedAST.new(@ast_index, @ast_length) - result.formatting = :Bold - result - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 393) - def _reduce_58(val, _values, result) - result = FormattedAST.new(@ast_index, @ast_length) - result.formatting = :Italic - result - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 399) - def _reduce_59(val, _values, result) - p = FormattedAST.new(@ast_index, @ast_length) - p.formatting = :Bold - p.children += val[1] - result = p - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 406) - def _reduce_60(val, _values, result) - p = FormattedAST.new(@ast_index, @ast_length) - p.formatting = :Italic - p.children += val[1] - result = p - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 415) - def _reduce_61(val, _values, result) - list = ListAST.new(@ast_index, @ast_length) - list.list_type = :Bulleted - list.children << val[1] - list.children += val[2] - result = list - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 425) - def _reduce_62(val, _values, result) - list = ListAST.new(@ast_index, @ast_length) - list.list_type = :Numbered - list.children << val[1] - list.children += val[2] - result = list - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 434) - def _reduce_63(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 437) - def _reduce_64(val, _values, result) - result << val[1] - result += val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 441) - def _reduce_65(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 447) - def _reduce_66(val, _values, result) - result = ListItemAST.new(@ast_index, @ast_length) - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 451) - def _reduce_67(val, _values, result) - li = ListItemAST.new(@ast_index, @ast_length) - li.children += val[1] - result = li - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 460) - def _reduce_68(val, _values, result) - result = [val[1]] - result += val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 465) - def _reduce_69(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 472) - def _reduce_70(val, _values, result) - result = ListTermAST.new(@ast_index, @ast_length) - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 476) - def _reduce_71(val, _values, result) - term = ListTermAST.new(@ast_index, @ast_length) - term.children += val[1] - result = term - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 484) - def _reduce_72(val, _values, result) - result = [val[0]] - result += val[1] if val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 489) - def _reduce_73(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 495) - def _reduce_74(val, _values, result) - result = ListDefinitionAST.new(@ast_index, @ast_length) - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 499) - def _reduce_75(val, _values, result) - term = ListDefinitionAST.new(@ast_index, @ast_length) - term.children += val[1] - result = term - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 506) - def _reduce_76(val, _values, result) - p = PreformattedAST.new(@ast_index, @ast_length) - p.children += val[1] - result = p - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 512) - def _reduce_77(val, _values, result) - p = PreformattedAST.new(@ast_index, @ast_length) - p.indented = true - p.children += val[1] - result = p - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 520) - def _reduce_78(val, _values, result) - result = [val[1], val[0].length] - s = SectionAST.new(@ast_index, @ast_length) - s.children = val[1] - s.level = val[0].length - result = s - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 530) - def _reduce_79(val, _values, result) - t = TemplateAST.new(@ast_index, @ast_length) - t.template_name = val[1] - t.children = val[2] unless val[2].nil? or val[2].empty? - result = t - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 539) - def _reduce_80(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 543) - def _reduce_81(val, _values, result) - p = TemplateParameterAST.new(@ast_index, @ast_length) - p.parameter_value = val[1] - result = [p] - result += val[2] if val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'mediacloth.y', 550) - def _reduce_82(val, _values, result) - p = TemplateParameterAST.new(@ast_index, @ast_length) - p.children << val[1] - result = [p] - result += val[2] if val[2] - - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - -end # class MediaWikiParser diff --git a/test/racc/regress/mof b/test/racc/regress/mof deleted file mode 100644 index d702292e51..0000000000 --- a/test/racc/regress/mof +++ /dev/null @@ -1,1368 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' - - -# parser.rb - generated by racc - -require 'strscan' -require 'rubygems' -require 'cim' -require File.join(__dir__, 'result') -require File.join(__dir__, 'scanner') -require File.join(__dir__, 'case') - -module MOF - class Parser < Racc::Parser - -module_eval(<<'...end mof.y/module_eval...', 'mof.y', 571) - -# -# Initialize MOF::Parser -# MOF::Parser.new options = {} -# -# options -> Hash of options -# :debug -> boolean -# :includes -> array of include dirs -# :style -> :cim or :wmi -# -def initialize options = {} - @yydebug = options[:debug] - @includes = options[:includes] || [] - @quiet = options[:quiet] - @style = options[:style] || :cim # default to style CIM v2.2 syntax - - @lineno = 1 - @file = nil - @iconv = nil - @eol = "\n" - @fname = nil - @fstack = [] - @in_comment = false - @seen_files = [] - @qualifiers = {} -end - -# -# Make options hash from argv -# -# returns [ files, options ] -# - - def self.argv_handler name, argv - files = [] - options = { :namespace => "" } - while argv.size > 0 - case opt = argv.shift - when "-h" - $stderr.puts "Ruby MOF compiler" - $stderr.puts "#{name} [-h] [-d] [-I <dir>] [<moffiles>]" - $stderr.puts "Compiles <moffile>" - $stderr.puts "\t-d debug" - $stderr.puts "\t-h this help" - $stderr.puts "\t-I <dir> include dir" - $stderr.puts "\t-f force" - $stderr.puts "\t-n <namespace>" - $stderr.puts "\t-o <output>" - $stderr.puts "\t-s <style> syntax style (wmi,cim)" - $stderr.puts "\t-q quiet" - $stderr.puts "\t<moffiles> file(s) to read (else use $stdin)" - exit 0 - when "-f" then options[:force] = true - when "-s" then options[:style] = argv.shift.to_sym - when "-d" then options[:debug] = true - when "-q" then options[:quiet] = true - when "-I" - options[:includes] ||= [] - dirname = argv.shift - unless File.directory?(dirname) - files << dirname - dirname = File.dirname(dirname) - end - options[:includes] << Pathname.new(dirname) - when "-n" then options[:namespace] = argv.shift - when "-o" then options[:output] = argv.shift - when /^-.+/ - $stderr.puts "Undefined option #{opt}" - else - files << opt - end - end - [ files, options ] - end - -include Helper -include Scanner - -...end mof.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - 13, 172, 163, 197, 174, 27, 63, 17, 145, 146, - 147, 62, 28, 172, 11, 173, 174, 173, 148, 11, - 144, 149, 150, 151, 152, 18, 163, 173, 33, 153, - 106, 107, 108, 109, 110, 112, 111, 40, 15, 16, - 42, 55, 57, 68, 69, 71, 72, 52, 53, 54, - 56, 163, 7, 199, 35, 42, 174, 7, 10, 10, - 115, 102, 114, 36, 10, 55, 57, 68, 69, 71, - 72, 52, 53, 54, 56, 51, 190, 44, -77, 42, - 33, 189, 10, 10, 33, 102, 51, 164, 60, 10, - 55, 57, 68, 69, 71, 72, 52, 53, 54, 56, - 170, 35, 10, 21, 42, 22, 23, 10, 29, 31, - 102, 35, 95, 96, 55, 57, 25, 65, 24, 78, - 52, 53, 54, 56, 97, 55, 57, 35, 180, 181, - 100, 52, 53, 54, 56, 93, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - -25, 93, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 191, 192, 102, 60, - 55, 57, 68, 69, 71, 72, 52, 53, 54, 56, - 145, 146, 147, 172, 113, 97, 174, 10, 18, 118, - 148, 119, 144, 149, 150, 151, 152, 173, 121, 124, - 35, 153, 55, 57, 68, 69, 71, 72, 52, 53, - 54, 56, 106, 107, 108, 109, 110, 112, 111, 10, - 55, 57, 68, 69, 71, 72, 52, 53, 54, 56, - 21, 126, 22, 23, 127, 129, 21, 10, 22, 23, - 130, 131, 133, 25, 135, 24, 10, 141, 154, 25, - 35, 24, 93, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 106, 107, 108, - 109, 110, 112, 111, 184, 185, 194, 200, 121, 207, - -59, 121, 209, 211, 135, 135, 218, 220, 221, 226, - 228, 229, 231, 10, 121, 135 ] - -racc_action_check = [ - 1, 140, 135, 186, 140, 12, 37, 8, 131, 131, - 131, 37, 13, 194, 0, 140, 194, 186, 131, 1, - 131, 131, 131, 131, 131, 8, 189, 194, 16, 131, - 65, 65, 65, 65, 65, 65, 65, 20, 7, 7, - 20, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 211, 0, 187, 17, 135, 187, 1, 135, 0, - 75, 135, 75, 18, 1, 189, 189, 189, 189, 189, - 189, 189, 189, 189, 189, 33, 177, 26, 207, 189, - 29, 177, 189, 207, 30, 189, 96, 137, 34, 137, - 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, - 138, 36, 138, 10, 211, 10, 10, 211, 15, 15, - 211, 169, 47, 47, 33, 33, 10, 38, 10, 43, - 33, 33, 33, 33, 49, 96, 96, 216, 142, 142, - 58, 96, 96, 96, 96, 169, 169, 169, 169, 169, - 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, - 42, 216, 216, 216, 216, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, 216, 178, 178, 60, 61, - 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, - 181, 181, 181, 218, 66, 70, 218, 42, 74, 77, - 181, 78, 181, 181, 181, 181, 181, 218, 94, 98, - 100, 181, 40, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 141, 141, 141, 141, 141, 141, 141, 40, - 115, 115, 115, 115, 115, 115, 115, 115, 115, 115, - 11, 102, 11, 11, 103, 116, 63, 115, 63, 63, - 118, 119, 121, 11, 122, 11, 127, 130, 132, 63, - 161, 63, 44, 44, 44, 44, 44, 44, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 192, 192, 192, - 192, 192, 192, 192, 162, 164, 183, 188, 195, 196, - 197, 198, 201, 205, 206, 208, 210, 212, 213, 217, - 221, 222, 223, 229, 230, 233 ] - -racc_action_pointer = [ - -5, 0, nil, nil, nil, nil, nil, 32, -2, nil, - 95, 222, -58, 12, nil, 101, -30, 46, 32, nil, - -21, nil, nil, nil, nil, nil, 11, nil, nil, 22, - 26, nil, nil, 67, 60, nil, 93, -54, 51, nil, - 155, nil, 123, 59, 220, nil, nil, 53, nil, 76, - nil, nil, nil, nil, nil, nil, nil, nil, 64, nil, - 101, 141, nil, 228, nil, 18, 125, nil, nil, nil, - 137, nil, nil, nil, 161, 0, nil, 129, 171, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 134, nil, 78, nil, 138, nil, - 192, nil, 223, 173, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 173, 172, nil, 214, 183, - nil, 195, 176, nil, nil, nil, nil, 182, nil, nil, - 189, -1, 183, nil, nil, -6, nil, 25, 38, nil, - -7, 200, 69, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 242, 208, nil, 212, nil, nil, nil, nil, 103, - nil, nil, nil, nil, nil, nil, nil, 13, 107, nil, - nil, 171, nil, 207, nil, nil, -5, 45, 248, 18, - nil, nil, 255, nil, 5, 214, 221, 222, 217, nil, - nil, 219, nil, nil, nil, 215, 216, 19, 217, nil, - 226, 43, 224, 229, nil, nil, 119, 226, 175, nil, - nil, 227, 231, 284, nil, nil, nil, nil, nil, 229, - 230, nil, nil, 227, nil, nil ] - -racc_action_default = [ - -1, -25, -2, -4, -5, -6, -7, -161, -161, -26, - -161, -161, -161, -161, -3, -161, -12, -161, -161, -28, - -33, -133, -134, -135, -136, -137, -161, -155, 236, -12, - -12, -11, -10, -161, -44, -48, -161, -161, -31, -34, - -25, -36, -100, -161, -161, -8, -9, -161, -14, -16, - -17, -18, -110, -111, -112, -113, -114, -115, -46, -45, - -161, -44, -27, -161, -30, -161, -161, -103, -104, -105, - -106, -107, -108, -109, -161, -161, -101, -131, -161, -60, - -61, -62, -63, -64, -65, -66, -67, -68, -69, -70, - -71, -72, -73, -74, -86, -13, -161, -116, -161, -47, - -161, -49, -161, -161, -29, -32, -37, -38, -39, -40, - -41, -42, -43, -35, -99, -25, -161, -132, -161, -161, - -87, -91, -93, -15, -20, -51, -50, -25, -102, -130, - -161, -161, -161, -92, -94, -25, -138, -25, -25, -157, - -161, -161, -161, -140, -142, -143, -144, -145, -146, -147, - -148, -149, -150, -151, -90, -95, -96, -97, -98, -117, - -118, -161, -161, -122, -161, -21, -22, -23, -24, -161, - -156, -158, -55, -56, -58, -128, -129, -161, -161, -153, - -139, -161, -119, -161, -121, -19, -161, -161, -75, -25, - -160, -152, -161, -141, -161, -86, -161, -55, -86, -57, - -76, -161, -154, -123, -125, -161, -93, -25, -93, -159, - -124, -25, -161, -161, -78, -80, -161, -161, -161, -127, - -52, -161, -79, -161, -83, -84, -53, -126, -54, -25, - -86, -85, -81, -88, -82, -89 ] - -racc_goto_table = [ - 8, 8, 34, 94, 122, 105, 136, 155, 48, 66, - 49, 76, 50, 19, 143, 187, 58, 204, 215, 32, - 139, 61, 2, 14, 12, 12, 1, 30, 47, 98, - 137, 171, 45, 46, 165, 166, 167, 168, 37, 26, - 232, 227, 38, 103, 64, 39, 41, 99, 101, 195, - 198, 196, 213, 214, 222, 223, 230, 234, 235, 132, - 75, 201, 225, 182, 193, 203, 104, 210, 177, 43, - 77, 123, 116, 49, 117, 50, 142, 178, 138, nil, - nil, 179, nil, 219, 128, 125, nil, nil, nil, nil, - 212, nil, 217, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 206, nil, nil, 208, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 140, 186, nil, - nil, nil, 202, nil, nil, nil, nil, 169, 140, nil, - 233, nil, nil, nil, nil, nil, 183, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 224, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 216, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 216 ] - -racc_goto_check = [ - 13, 13, 14, 35, 37, 28, 38, 52, 10, 30, - 11, 30, 12, 23, 69, 39, 15, 61, 44, 7, - 72, 14, 2, 2, 55, 55, 1, 8, 9, 16, - 17, 72, 7, 7, 18, 19, 20, 21, 24, 25, - 44, 61, 26, 15, 27, 29, 31, 33, 34, 36, - 40, 41, 42, 43, 45, 46, 47, 48, 50, 51, - 54, 52, 39, 58, 69, 60, 23, 62, 63, 64, - 65, 10, 66, 11, 67, 12, 68, 70, 71, nil, - nil, 28, nil, 52, 30, 14, nil, nil, nil, nil, - 38, nil, 38, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 37, nil, nil, 37, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 13, 35, nil, - nil, nil, 28, nil, nil, nil, nil, 13, 13, nil, - 37, nil, nil, nil, nil, nil, 14, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 35, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 13, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 13 ] - -racc_goto_pointer = [ - nil, 26, 22, nil, nil, nil, nil, 3, 12, -5, - -25, -23, -21, 0, -15, -18, -29, -94, -103, -102, - -101, -100, nil, 3, 19, 28, 22, 6, -60, 25, - -31, 26, nil, -11, -12, -41, -137, -90, -116, -154, - -137, -135, -155, -154, -189, -161, -161, -167, -176, nil, - -175, -62, -128, nil, 18, 24, nil, nil, -98, nil, - -129, -177, -137, -72, 43, 27, -5, -3, -55, -117, - -64, -49, -107 ] - -racc_goto_default = [ - nil, nil, nil, 3, 4, 5, 6, nil, nil, nil, - nil, 70, 67, 74, 188, nil, nil, nil, nil, nil, - nil, nil, 9, nil, nil, 20, nil, nil, nil, nil, - 156, 157, 59, nil, 160, nil, 175, nil, nil, nil, - 176, nil, nil, nil, nil, nil, nil, nil, nil, 120, - 134, nil, nil, 158, nil, 73, 159, 161, nil, 162, - nil, nil, nil, 205, nil, nil, nil, nil, nil, nil, - nil, nil, nil ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 0, 71, :_reduce_1, - 1, 71, :_reduce_2, - 2, 71, :_reduce_3, - 1, 72, :_reduce_none, - 1, 72, :_reduce_5, - 1, 72, :_reduce_6, - 1, 72, :_reduce_7, - 4, 73, :_reduce_8, - 4, 73, :_reduce_none, - 3, 73, :_reduce_10, - 1, 78, :_reduce_none, - 0, 77, :_reduce_12, - 3, 77, :_reduce_13, - 1, 79, :_reduce_none, - 3, 79, :_reduce_none, - 1, 80, :_reduce_none, - 1, 80, :_reduce_17, - 1, 80, :_reduce_none, - 9, 74, :_reduce_19, - 0, 87, :_reduce_20, - 2, 87, :_reduce_21, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 0, 83, :_reduce_none, - 1, 83, :_reduce_26, - 4, 92, :_reduce_27, - 0, 94, :_reduce_28, - 3, 94, :_reduce_29, - 3, 93, :_reduce_30, - 0, 97, :_reduce_none, - 2, 97, :_reduce_32, - 0, 96, :_reduce_none, - 1, 96, :_reduce_none, - 3, 99, :_reduce_35, - 1, 99, :_reduce_none, - 1, 98, :_reduce_none, - 1, 98, :_reduce_none, - 1, 98, :_reduce_none, - 1, 98, :_reduce_none, - 1, 98, :_reduce_none, - 1, 98, :_reduce_none, - 1, 98, :_reduce_43, - 0, 85, :_reduce_none, - 1, 85, :_reduce_none, - 0, 86, :_reduce_none, - 1, 86, :_reduce_none, - 1, 84, :_reduce_48, - 2, 102, :_reduce_49, - 2, 104, :_reduce_50, - 2, 103, :_reduce_51, - 6, 89, :_reduce_52, - 6, 91, :_reduce_53, - 7, 90, :_reduce_54, - 1, 106, :_reduce_none, - 1, 106, :_reduce_56, - 1, 110, :_reduce_none, - 1, 110, :_reduce_58, - 1, 111, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_none, - 1, 105, :_reduce_74, - 1, 109, :_reduce_75, - 2, 109, :_reduce_76, - 0, 112, :_reduce_none, - 1, 112, :_reduce_none, - 2, 113, :_reduce_79, - 0, 115, :_reduce_80, - 3, 115, :_reduce_81, - 5, 114, :_reduce_82, - 1, 116, :_reduce_none, - 1, 116, :_reduce_none, - 1, 117, :_reduce_none, - 0, 107, :_reduce_none, - 1, 107, :_reduce_none, - 0, 118, :_reduce_none, - 1, 118, :_reduce_89, - 3, 119, :_reduce_90, - 0, 121, :_reduce_91, - 1, 121, :_reduce_none, - 0, 108, :_reduce_none, - 1, 108, :_reduce_none, - 2, 120, :_reduce_95, - 1, 122, :_reduce_none, - 1, 122, :_reduce_none, - 1, 122, :_reduce_none, - 3, 101, :_reduce_99, - 0, 124, :_reduce_none, - 1, 124, :_reduce_101, - 3, 124, :_reduce_102, - 1, 100, :_reduce_none, - 1, 100, :_reduce_none, - 1, 100, :_reduce_none, - 1, 100, :_reduce_none, - 1, 100, :_reduce_none, - 1, 100, :_reduce_none, - 1, 100, :_reduce_109, - 1, 82, :_reduce_none, - 1, 82, :_reduce_none, - 1, 82, :_reduce_none, - 1, 82, :_reduce_none, - 1, 82, :_reduce_none, - 1, 81, :_reduce_none, - 2, 81, :_reduce_116, - 1, 123, :_reduce_none, - 1, 123, :_reduce_none, - 2, 126, :_reduce_none, - 0, 127, :_reduce_none, - 2, 127, :_reduce_none, - 1, 129, :_reduce_none, - 3, 128, :_reduce_none, - 2, 130, :_reduce_none, - 0, 132, :_reduce_none, - 3, 132, :_reduce_none, - 3, 131, :_reduce_none, - 1, 133, :_reduce_none, - 1, 133, :_reduce_none, - 6, 75, :_reduce_130, - 0, 136, :_reduce_none, - 1, 136, :_reduce_none, - 1, 95, :_reduce_none, - 1, 95, :_reduce_none, - 1, 95, :_reduce_none, - 1, 95, :_reduce_none, - 1, 95, :_reduce_none, - 4, 134, :_reduce_138, - 5, 135, :_reduce_139, - 1, 138, :_reduce_140, - 3, 138, :_reduce_141, - 1, 139, :_reduce_none, - 1, 139, :_reduce_none, - 1, 139, :_reduce_none, - 1, 139, :_reduce_none, - 1, 139, :_reduce_none, - 1, 139, :_reduce_none, - 1, 139, :_reduce_none, - 1, 139, :_reduce_none, - 1, 139, :_reduce_none, - 1, 139, :_reduce_none, - 5, 137, :_reduce_152, - 1, 140, :_reduce_153, - 3, 140, :_reduce_154, - 2, 76, :_reduce_none, - 8, 125, :_reduce_none, - 1, 141, :_reduce_none, - 2, 141, :_reduce_none, - 5, 142, :_reduce_none, - 3, 142, :_reduce_160 ] - -racc_reduce_n = 161 - -racc_shift_n = 236 - -racc_token_table = { - false => 0, - :error => 1, - "*" => 2, - "/" => 3, - "+" => 4, - "-" => 5, - :PRAGMA => 6, - :INCLUDE => 7, - :IDENTIFIER => 8, - :CLASS => 9, - :ASSOCIATION => 10, - :INDICATION => 11, - :AMENDED => 12, - :ENABLEOVERRIDE => 13, - :DISABLEOVERRIDE => 14, - :RESTRICTED => 15, - :TOSUBCLASS => 16, - :TOINSTANCE => 17, - :TRANSLATABLE => 18, - :QUALIFIER => 19, - :SCOPE => 20, - :SCHEMA => 21, - :PROPERTY => 22, - :REFERENCE => 23, - :METHOD => 24, - :PARAMETER => 25, - :FLAVOR => 26, - :INSTANCE => 27, - :AS => 28, - :REF => 29, - :ANY => 30, - :OF => 31, - :DT_VOID => 32, - :DT_UINT8 => 33, - :DT_SINT8 => 34, - :DT_UINT16 => 35, - :DT_SINT16 => 36, - :DT_UINT32 => 37, - :DT_SINT32 => 38, - :DT_UINT64 => 39, - :DT_SINT64 => 40, - :DT_REAL32 => 41, - :DT_REAL64 => 42, - :DT_CHAR16 => 43, - :DT_STR => 44, - :DT_BOOLEAN => 45, - :DT_DATETIME => 46, - :positiveDecimalValue => 47, - :stringValue => 48, - :realValue => 49, - :charValue => 50, - :booleanValue => 51, - :nullValue => 52, - :binaryValue => 53, - :octalValue => 54, - :decimalValue => 55, - :hexValue => 56, - "#" => 57, - "(" => 58, - ")" => 59, - "," => 60, - "{" => 61, - "}" => 62, - ";" => 63, - "[" => 64, - "]" => 65, - ":" => 66, - "$" => 67, - "=" => 68, - "." => 69 } - -racc_nt_base = 70 - -racc_use_result_var = true - -Racc_arg = [ - racc_action_table, - racc_action_check, - racc_action_default, - racc_action_pointer, - racc_goto_table, - racc_goto_check, - racc_goto_default, - racc_goto_pointer, - racc_nt_base, - racc_reduce_table, - racc_token_table, - racc_shift_n, - racc_reduce_n, - racc_use_result_var ] - -Racc_token_to_s_table = [ - "$end", - "error", - "\"*\"", - "\"/\"", - "\"+\"", - "\"-\"", - "PRAGMA", - "INCLUDE", - "IDENTIFIER", - "CLASS", - "ASSOCIATION", - "INDICATION", - "AMENDED", - "ENABLEOVERRIDE", - "DISABLEOVERRIDE", - "RESTRICTED", - "TOSUBCLASS", - "TOINSTANCE", - "TRANSLATABLE", - "QUALIFIER", - "SCOPE", - "SCHEMA", - "PROPERTY", - "REFERENCE", - "METHOD", - "PARAMETER", - "FLAVOR", - "INSTANCE", - "AS", - "REF", - "ANY", - "OF", - "DT_VOID", - "DT_UINT8", - "DT_SINT8", - "DT_UINT16", - "DT_SINT16", - "DT_UINT32", - "DT_SINT32", - "DT_UINT64", - "DT_SINT64", - "DT_REAL32", - "DT_REAL64", - "DT_CHAR16", - "DT_STR", - "DT_BOOLEAN", - "DT_DATETIME", - "positiveDecimalValue", - "stringValue", - "realValue", - "charValue", - "booleanValue", - "nullValue", - "binaryValue", - "octalValue", - "decimalValue", - "hexValue", - "\"#\"", - "\"(\"", - "\")\"", - "\",\"", - "\"{\"", - "\"}\"", - "\";\"", - "\"[\"", - "\"]\"", - "\":\"", - "\"$\"", - "\"=\"", - "\".\"", - "$start", - "mofSpecification", - "mofProduction", - "compilerDirective", - "classDeclaration", - "qualifierDeclaration", - "instanceDeclaration", - "pragmaParameters_opt", - "pragmaName", - "pragmaParameterValues", - "pragmaParameterValue", - "string", - "integerValue", - "qualifierList_opt", - "className", - "alias_opt", - "superClass_opt", - "classFeatures", - "classFeature", - "propertyDeclaration", - "methodDeclaration", - "referenceDeclaration", - "qualifierList", - "qualifier", - "qualifiers", - "qualifierName", - "qualifierParameter_opt", - "flavor_opt", - "flavor", - "qualifierParameter", - "constantValue", - "arrayInitializer", - "alias", - "superClass", - "aliasIdentifier", - "dataType", - "propertyName", - "array_opt", - "defaultValue_opt", - "objectRef", - "referenceName", - "methodName", - "parameterList_opt", - "parameterList", - "parameter", - "parameters", - "typespec", - "parameterName", - "parameterValue_opt", - "array", - "defaultValue", - "positiveDecimalValue_opt", - "initializer", - "referenceInitializer", - "constantValues", - "instance", - "objectHandle", - "namespace_opt", - "modelPath", - "namespaceHandle", - "keyValuePairList", - "keyValuePair", - "keyValuePairs", - "keyname", - "qualifierType", - "scope", - "defaultFlavor_opt", - "defaultFlavor", - "metaElements", - "metaElement", - "flavors", - "valueInitializers", - "valueInitializer" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'mof.y', 41) - def _reduce_1(val, _values, result) - result = Hash.new - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 43) - def _reduce_2(val, _values, result) - result = { @name => @result } - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 45) - def _reduce_3(val, _values, result) - result = val[0] - result[@name] = @result - - result - end -.,., - -# reduce 4 omitted - -module_eval(<<'.,.,', 'mof.y', 53) - def _reduce_5(val, _values, result) - #puts "Class '#{val[0].name}'" - @result.classes << val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 57) - def _reduce_6(val, _values, result) - @result.qualifiers << val[0] - @qualifiers[val[0].name.downcase] = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 61) - def _reduce_7(val, _values, result) - @result.instances << val[0] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 71) - def _reduce_8(val, _values, result) - raise MOF::Helper::Error.new(@name,@lineno,@line,"Missing filename after '#pragma include'") unless val[3] - open val[3], :pragma - - result - end -.,., - -# reduce 9 omitted - -module_eval(<<'.,.,', 'mof.y', 76) - def _reduce_10(val, _values, result) - raise StyleError.new(@name,@lineno,@line,"Use '#pragma include' instead of '#include'") unless @style == :wmi - raise MOF::Helper::Error.new(@name,@lineno,@line,"Missing filename after '#include'") unless val[2] - open val[2], :pragma - - result - end -.,., - -# reduce 11 omitted - -module_eval(<<'.,.,', 'mof.y', 88) - def _reduce_12(val, _values, result) - raise StyleError.new(@name,@lineno,@line,"#pragma parameter missing") unless @style == :wmi - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 90) - def _reduce_13(val, _values, result) - result = val[1] - result - end -.,., - -# reduce 14 omitted - -# reduce 15 omitted - -# reduce 16 omitted - -module_eval(<<'.,.,', 'mof.y', 101) - def _reduce_17(val, _values, result) - raise StyleError.new(@name,@lineno,@line,"#pragma parameter missing") unless @style == :wmi - result - end -.,., - -# reduce 18 omitted - -module_eval(<<'.,.,', 'mof.y', 112) - def _reduce_19(val, _values, result) - qualifiers = val[0] - features = val[6] - # FIXME: features must not include references - result = CIM::Class.new(val[2],qualifiers,val[3],val[4],features) - - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 121) - def _reduce_20(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 123) - def _reduce_21(val, _values, result) - result = val[0] << val[1] - result - end -.,., - -# reduce 22 omitted - -# reduce 23 omitted - -# reduce 24 omitted - -# reduce 25 omitted - -module_eval(<<'.,.,', 'mof.y', 136) - def _reduce_26(val, _values, result) - result = CIM::QualifierSet.new val[0] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 141) - def _reduce_27(val, _values, result) - result = val[2] - result.unshift val[1] if val[1] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 147) - def _reduce_28(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 149) - def _reduce_29(val, _values, result) - result = val[0] - result << val[2] if val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 156) - def _reduce_30(val, _values, result) - # Get qualifier decl - qualifier = case val[0] - when CIM::Qualifier then val[0].definition - when CIM::QualifierDeclaration then val[0] - when String then @qualifiers[val[0].downcase] - else - nil - end - raise MOF::Helper::Error.new(@name,@lineno,@line,"'#{val[0]}' is not a valid qualifier") unless qualifier - value = val[1] - raise MOF::Helper::Error.new(@name,@lineno,@line,"#{value.inspect} does not match qualifier type '#{qualifier.type}'") unless qualifier.type.matches?(value)||@style == :wmi - # Don't propagate a boolean 'false' - if qualifier.type == :boolean && value == false - result = nil - else - result = CIM::Qualifier.new(qualifier,value,val[2]) - end - - result - end -.,., - -# reduce 31 omitted - -module_eval(<<'.,.,', 'mof.y', 179) - def _reduce_32(val, _values, result) - result = CIM::QualifierFlavors.new val[1] - result - end -.,., - -# reduce 33 omitted - -# reduce 34 omitted - -module_eval(<<'.,.,', 'mof.y', 189) - def _reduce_35(val, _values, result) - result = val[1] - result - end -.,., - -# reduce 36 omitted - -# reduce 37 omitted - -# reduce 38 omitted - -# reduce 39 omitted - -# reduce 40 omitted - -# reduce 41 omitted - -# reduce 42 omitted - -module_eval(<<'.,.,', 'mof.y', 196) - def _reduce_43(val, _values, result) - case val[0].to_sym - when :amended, :toinstance - raise StyleError.new(@name,@lineno,@line,"'#{val[0]}' is not a valid flavor") unless @style == :wmi - end - - result - end -.,., - -# reduce 44 omitted - -# reduce 45 omitted - -# reduce 46 omitted - -# reduce 47 omitted - -module_eval(<<'.,.,', 'mof.y', 215) - def _reduce_48(val, _values, result) - raise ParseError.new("Class name must be prefixed by '<schema>_'") unless val[0].include?("_") || @style == :wmi - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 220) - def _reduce_49(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 225) - def _reduce_50(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 230) - def _reduce_51(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 236) - def _reduce_52(val, _values, result) - if val[3] - type = CIM::Array.new val[3],val[1] - else - type = val[1] - end - result = CIM::Property.new(type,val[2],val[0],val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 247) - def _reduce_53(val, _values, result) - if val[4] - raise StyleError.new(@name,@lineno,@line,"Array not allowed in reference declaration") unless @style == :wmi - end - result = CIM::Reference.new(val[1],val[2],val[0],val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 255) - def _reduce_54(val, _values, result) - result = CIM::Method.new(val[1],val[2],val[0],val[4]) - result - end -.,., - -# reduce 55 omitted - -module_eval(<<'.,.,', 'mof.y', 261) - def _reduce_56(val, _values, result) - # tmplprov.mof has 'string Property;' - raise StyleError.new(@name,@lineno,@line,"Invalid keyword '#{val[0]}' used for property name") unless @style == :wmi - - result - end -.,., - -# reduce 57 omitted - -module_eval(<<'.,.,', 'mof.y', 269) - def _reduce_58(val, _values, result) - result = "Indication" - result - end -.,., - -# reduce 59 omitted - -# reduce 60 omitted - -# reduce 61 omitted - -# reduce 62 omitted - -# reduce 63 omitted - -# reduce 64 omitted - -# reduce 65 omitted - -# reduce 66 omitted - -# reduce 67 omitted - -# reduce 68 omitted - -# reduce 69 omitted - -# reduce 70 omitted - -# reduce 71 omitted - -# reduce 72 omitted - -# reduce 73 omitted - -module_eval(<<'.,.,', 'mof.y', 292) - def _reduce_74(val, _values, result) - raise StyleError.new(@name,@lineno,@line,"'void' is not a valid datatype") unless @style == :wmi - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 297) - def _reduce_75(val, _values, result) - # WMI uses class names as data types (without REF ?!) - raise StyleError.new(@name,@lineno,@line,"Expected 'ref' keyword after classname '#{val[0]}'") unless @style == :wmi - result = CIM::ReferenceType.new val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 303) - def _reduce_76(val, _values, result) - result = CIM::ReferenceType.new val[0] - result - end -.,., - -# reduce 77 omitted - -# reduce 78 omitted - -module_eval(<<'.,.,', 'mof.y', 313) - def _reduce_79(val, _values, result) - result = val[1].unshift val[0] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 318) - def _reduce_80(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 320) - def _reduce_81(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 325) - def _reduce_82(val, _values, result) - if val[3] - type = CIM::Array.new val[3], val[1] - else - type = val[1] - end - result = CIM::Property.new(type,val[2],val[0]) - - result - end -.,., - -# reduce 83 omitted - -# reduce 84 omitted - -# reduce 85 omitted - -# reduce 86 omitted - -# reduce 87 omitted - -# reduce 88 omitted - -module_eval(<<'.,.,', 'mof.y', 351) - def _reduce_89(val, _values, result) - raise "Default parameter value not allowed in syntax style '{@style}'" unless @style == :wmi - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 356) - def _reduce_90(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 361) - def _reduce_91(val, _values, result) - result = -1 - result - end -.,., - -# reduce 92 omitted - -# reduce 93 omitted - -# reduce 94 omitted - -module_eval(<<'.,.,', 'mof.y', 372) - def _reduce_95(val, _values, result) - result = val[1] - result - end -.,., - -# reduce 96 omitted - -# reduce 97 omitted - -# reduce 98 omitted - -module_eval(<<'.,.,', 'mof.y', 383) - def _reduce_99(val, _values, result) - result = val[1] - result - end -.,., - -# reduce 100 omitted - -module_eval(<<'.,.,', 'mof.y', 389) - def _reduce_101(val, _values, result) - result = [ val[0] ] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 391) - def _reduce_102(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -# reduce 103 omitted - -# reduce 104 omitted - -# reduce 105 omitted - -# reduce 106 omitted - -# reduce 107 omitted - -# reduce 108 omitted - -module_eval(<<'.,.,', 'mof.y', 402) - def _reduce_109(val, _values, result) - raise "Instance as property value not allowed in syntax style '{@style}'" unless @style == :wmi - result - end -.,., - -# reduce 110 omitted - -# reduce 111 omitted - -# reduce 112 omitted - -# reduce 113 omitted - -# reduce 114 omitted - -# reduce 115 omitted - -module_eval(<<'.,.,', 'mof.y', 416) - def _reduce_116(val, _values, result) - result = val[0] + val[1] - result - end -.,., - -# reduce 117 omitted - -# reduce 118 omitted - -# reduce 119 omitted - -# reduce 120 omitted - -# reduce 121 omitted - -# reduce 122 omitted - -# reduce 123 omitted - -# reduce 124 omitted - -# reduce 125 omitted - -# reduce 126 omitted - -# reduce 127 omitted - -# reduce 128 omitted - -# reduce 129 omitted - -module_eval(<<'.,.,', 'mof.y', 471) - def _reduce_130(val, _values, result) - result = CIM::QualifierDeclaration.new( val[1], val[2][0], val[2][1], val[3], val[4]) - result - end -.,., - -# reduce 131 omitted - -# reduce 132 omitted - -# reduce 133 omitted - -# reduce 134 omitted - -# reduce 135 omitted - -# reduce 136 omitted - -# reduce 137 omitted - -module_eval(<<'.,.,', 'mof.y', 490) - def _reduce_138(val, _values, result) - type = val[2].nil? ? val[1] : CIM::Array.new(val[2],val[1]) - result = [ type, val[3] ] - - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 497) - def _reduce_139(val, _values, result) - result = CIM::QualifierScopes.new(val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 502) - def _reduce_140(val, _values, result) - result = [ val[0] ] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 504) - def _reduce_141(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -# reduce 142 omitted - -# reduce 143 omitted - -# reduce 144 omitted - -# reduce 145 omitted - -# reduce 146 omitted - -# reduce 147 omitted - -# reduce 148 omitted - -# reduce 149 omitted - -# reduce 150 omitted - -# reduce 151 omitted - -module_eval(<<'.,.,', 'mof.y', 522) - def _reduce_152(val, _values, result) - result = CIM::QualifierFlavors.new val[3] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 527) - def _reduce_153(val, _values, result) - result = [ val[0] ] - result - end -.,., - -module_eval(<<'.,.,', 'mof.y', 529) - def _reduce_154(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -# reduce 155 omitted - -# reduce 156 omitted - -# reduce 157 omitted - -# reduce 158 omitted - -# reduce 159 omitted - -module_eval(<<'.,.,', 'mof.y', 553) - def _reduce_160(val, _values, result) - raise "Instance property '#{val[1]} must have a value" unless @style == :wmi - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser -end # module MOF - - diff --git a/test/racc/regress/namae b/test/racc/regress/namae deleted file mode 100644 index 5a795e4579..0000000000 --- a/test/racc/regress/namae +++ /dev/null @@ -1,634 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' - -require 'singleton' -require 'strscan' - -module Namae - class Parser < Racc::Parser - -module_eval(<<'...end namae.y/module_eval...', 'namae.y', 135) - - include Singleton - - attr_reader :options, :input - - def initialize - @input, @options = StringScanner.new(''), { - :debug => false, - :prefer_comma_as_separator => false, - :comma => ',', - :stops => ',;', - :separator => /\s*(\band\b|\&|;)\s*/i, - :title => /\s*\b(sir|lord|count(ess)?|(gen|adm|col|maj|capt|cmdr|lt|sgt|cpl|pvt|prof|dr|md|ph\.?d)\.?)(\s+|$)/i, - :suffix => /\s*\b(JR|Jr|jr|SR|Sr|sr|[IVX]{2,})(\.|\b)/, - :appellation => /\s*\b((mrs?|ms|fr|hr)\.?|miss|herr|frau)(\s+|$)/i - } - end - - def debug? - options[:debug] || ENV['DEBUG'] - end - - def separator - options[:separator] - end - - def comma - options[:comma] - end - - def stops - options[:stops] - end - - def title - options[:title] - end - - def suffix - options[:suffix] - end - - def appellation - options[:appellation] - end - - def prefer_comma_as_separator? - options[:prefer_comma_as_separator] - end - - def parse(input) - parse!(input) - rescue => e - warn e.message if debug? - [] - end - - def parse!(string) - input.string = normalize(string) - reset - do_parse - end - - def normalize(string) - string = string.strip - string - end - - def reset - @commas, @words, @initials, @suffices, @yydebug = 0, 0, 0, 0, debug? - self - end - - private - - def stack - @vstack || @racc_vstack || [] - end - - def last_token - stack[-1] - end - - def consume_separator - return next_token if seen_separator? - @commas, @words, @initials, @suffices = 0, 0, 0, 0 - [:AND, :AND] - end - - def consume_comma - @commas += 1 - [:COMMA, :COMMA] - end - - def consume_word(type, word) - @words += 1 - - case type - when :UWORD - @initials += 1 if word =~ /^[[:upper:]]+\b/ - when :SUFFIX - @suffices += 1 - end - - [type, word] - end - - def seen_separator? - !stack.empty? && last_token == :AND - end - - def suffix? - !@suffices.zero? || will_see_suffix? - end - - def will_see_suffix? - input.peek(8).to_s.strip.split(/\s+/)[0] =~ suffix - end - - def will_see_initial? - input.peek(6).to_s.strip.split(/\s+/)[0] =~ /^[[:upper:]]+\b/ - end - - def seen_full_name? - prefer_comma_as_separator? && @words > 1 && - (@initials > 0 || !will_see_initial?) && !will_see_suffix? - end - - def next_token - case - when input.nil?, input.eos? - nil - when input.scan(separator) - consume_separator - when input.scan(/\s*#{comma}\s*/) - if @commas.zero? && !seen_full_name? || @commas == 1 && suffix? - consume_comma - else - consume_separator - end - when input.scan(/\s+/) - next_token - when input.scan(title) - consume_word(:TITLE, input.matched.strip) - when input.scan(suffix) - consume_word(:SUFFIX, input.matched.strip) - when input.scan(appellation) - [:APPELLATION, input.matched.strip] - when input.scan(/((\\\w+)?\{[^\}]*\})*[[:upper:]][^\s#{stops}]*/) - consume_word(:UWORD, input.matched) - when input.scan(/((\\\w+)?\{[^\}]*\})*[[:lower:]][^\s#{stops}]*/) - consume_word(:LWORD, input.matched) - when input.scan(/(\\\w+)?\{[^\}]*\}[^\s#{stops}]*/) - consume_word(:PWORD, input.matched) - when input.scan(/('[^'\n]+')|("[^"\n]+")/) - consume_word(:NICK, input.matched[1...-1]) - else - raise ArgumentError, - "Failed to parse name #{input.string.inspect}: unmatched data at offset #{input.pos}" - end - end - - def on_error(tid, value, stack) - raise ArgumentError, - "Failed to parse name: unexpected '#{value}' at #{stack.inspect}" - end - -# -*- racc -*- -...end namae.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - -39, 16, 32, 30, -40, 31, 33, -39, 17, -39, - -39, -40, 67, -40, -40, 66, 53, 52, 54, -38, - 59, -22, 39, -34, 45, 58, -38, 53, 52, 54, - 53, 52, 54, 59, 39, 39, 62, 39, 53, 52, - 54, 14, 12, 15, 68, 39, 7, 8, 14, 12, - 15, 58, 39, 7, 8, 14, 22, 15, 24, 14, - 22, 15, 24, 14, 22, 15, 30, 28, 31, 30, - 28, 31, -19, -19, -19, 30, 42, 31, 30, 28, - 31, -20, -20, -20, 30, 46, 31, 30, 28, 31, - 30, 28, 31, -19, -19, -19, 53, 52, 54, 53, - 52, 54, 39, 58, 59 ] - -racc_action_check = [ - 14, 1, 11, 43, 15, 43, 16, 14, 1, 14, - 14, 15, 50, 15, 15, 49, 49, 49, 49, 12, - 50, 12, 23, 49, 27, 37, 12, 32, 32, 32, - 45, 45, 45, 38, 32, 40, 44, 45, 62, 62, - 62, 0, 0, 0, 57, 62, 0, 0, 17, 17, - 17, 60, 61, 17, 17, 9, 9, 9, 9, 20, - 20, 20, 20, 5, 5, 5, 10, 10, 10, 21, - 21, 21, 22, 22, 22, 24, 24, 24, 25, 25, - 25, 28, 28, 28, 29, 29, 29, 35, 35, 35, - 41, 41, 41, 42, 42, 42, 67, 67, 67, 73, - 73, 73, 64, 70, 72 ] - -racc_action_pointer = [ - 38, 1, nil, nil, nil, 60, nil, nil, nil, 52, - 63, 0, 19, nil, 0, 4, 6, 45, nil, nil, - 56, 66, 69, 12, 72, 75, nil, 22, 78, 81, - nil, nil, 24, nil, nil, 84, nil, 16, 23, nil, - 25, 87, 90, 0, 34, 27, nil, nil, nil, 13, - 10, nil, nil, nil, nil, nil, nil, 35, nil, nil, - 42, 42, 35, nil, 92, nil, nil, 93, nil, nil, - 94, nil, 94, 96, nil ] - -racc_action_default = [ - -1, -49, -2, -4, -5, -49, -8, -9, -10, -23, - -49, -49, -19, -28, -30, -31, -49, -49, -6, -7, - -49, -49, -38, -41, -49, -49, -29, -15, -22, -23, - -30, -31, -36, 75, -3, -49, -15, -45, -42, -43, - -41, -49, -22, -23, -14, -36, -21, -16, -24, -37, - -26, -32, -38, -39, -40, -14, -11, -46, -47, -44, - -45, -41, -36, -17, -49, -33, -35, -49, -48, -12, - -45, -18, -25, -27, -13 ] - -racc_goto_table = [ - 3, 37, 26, 50, 56, 18, 2, 9, 47, 23, - 1, 19, 20, 26, 73, 27, 50, 3, 60, 64, - 23, 63, 26, 34, 9, nil, 36, 69, 21, 40, - 44, 43, 25, 50, nil, 72, 26, 74, 71, 70, - 55, nil, nil, 35, nil, nil, 61, 41, nil, 65, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 65 ] - -racc_goto_check = [ - 3, 8, 17, 16, 9, 3, 2, 7, 12, 3, - 1, 4, 7, 17, 14, 10, 16, 3, 8, 15, - 3, 12, 17, 2, 7, nil, 10, 9, 11, 10, - 10, 7, 11, 16, nil, 16, 17, 9, 12, 8, - 10, nil, nil, 11, nil, nil, 10, 11, nil, 3, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 3 ] - -racc_goto_pointer = [ - nil, 10, 6, 0, 6, nil, nil, 7, -22, -33, - 5, 23, -24, nil, -53, -30, -29, -7, nil ] - -racc_goto_default = [ - nil, nil, nil, 51, 4, 5, 6, 29, nil, nil, - 11, 10, nil, 48, 49, nil, 38, 13, 57 ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 0, 12, :_reduce_1, - 1, 12, :_reduce_2, - 3, 12, :_reduce_3, - 1, 13, :_reduce_4, - 1, 13, :_reduce_none, - 2, 13, :_reduce_6, - 2, 13, :_reduce_7, - 1, 13, :_reduce_none, - 1, 16, :_reduce_9, - 1, 16, :_reduce_10, - 4, 15, :_reduce_11, - 5, 15, :_reduce_12, - 6, 15, :_reduce_13, - 3, 15, :_reduce_14, - 2, 15, :_reduce_15, - 3, 17, :_reduce_16, - 4, 17, :_reduce_17, - 5, 17, :_reduce_18, - 1, 22, :_reduce_none, - 2, 22, :_reduce_20, - 3, 22, :_reduce_21, - 1, 21, :_reduce_none, - 1, 21, :_reduce_none, - 1, 23, :_reduce_24, - 3, 23, :_reduce_25, - 1, 23, :_reduce_26, - 3, 23, :_reduce_27, - 1, 18, :_reduce_none, - 2, 18, :_reduce_29, - 1, 28, :_reduce_none, - 1, 28, :_reduce_none, - 1, 25, :_reduce_none, - 2, 25, :_reduce_33, - 0, 26, :_reduce_none, - 1, 26, :_reduce_none, - 0, 24, :_reduce_none, - 1, 24, :_reduce_none, - 1, 14, :_reduce_none, - 1, 14, :_reduce_none, - 1, 14, :_reduce_none, - 0, 19, :_reduce_none, - 1, 19, :_reduce_none, - 1, 27, :_reduce_none, - 2, 27, :_reduce_44, - 0, 20, :_reduce_none, - 1, 20, :_reduce_none, - 1, 29, :_reduce_none, - 2, 29, :_reduce_48 ] - -racc_reduce_n = 49 - -racc_shift_n = 75 - -racc_token_table = { - false => 0, - :error => 1, - :COMMA => 2, - :UWORD => 3, - :LWORD => 4, - :PWORD => 5, - :NICK => 6, - :AND => 7, - :APPELLATION => 8, - :TITLE => 9, - :SUFFIX => 10 } - -racc_nt_base = 11 - -racc_use_result_var = true - -Racc_arg = [ - racc_action_table, - racc_action_check, - racc_action_default, - racc_action_pointer, - racc_goto_table, - racc_goto_check, - racc_goto_default, - racc_goto_pointer, - racc_nt_base, - racc_reduce_table, - racc_token_table, - racc_shift_n, - racc_reduce_n, - racc_use_result_var ] - -Racc_token_to_s_table = [ - "$end", - "error", - "COMMA", - "UWORD", - "LWORD", - "PWORD", - "NICK", - "AND", - "APPELLATION", - "TITLE", - "SUFFIX", - "$start", - "names", - "name", - "word", - "display_order", - "honorific", - "sort_order", - "u_words", - "opt_suffices", - "opt_titles", - "last", - "von", - "first", - "opt_words", - "words", - "opt_comma", - "suffices", - "u_word", - "titles" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'namae.y', 39) - def _reduce_1(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 40) - def _reduce_2(val, _values, result) - result = [val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 41) - def _reduce_3(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 43) - def _reduce_4(val, _values, result) - result = Name.new(:given => val[0]) - result - end -.,., - -# reduce 5 omitted - -module_eval(<<'.,.,', 'namae.y', 45) - def _reduce_6(val, _values, result) - result = val[0].merge(:family => val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 46) - def _reduce_7(val, _values, result) - result = val[1].merge(val[0]) - result - end -.,., - -# reduce 8 omitted - -module_eval(<<'.,.,', 'namae.y', 49) - def _reduce_9(val, _values, result) - result = Name.new(:appellation => val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 50) - def _reduce_10(val, _values, result) - result = Name.new(:title => val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 54) - def _reduce_11(val, _values, result) - result = Name.new(:given => val[0], :family => val[1], - :suffix => val[2], :title => val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 59) - def _reduce_12(val, _values, result) - result = Name.new(:given => val[0], :nick => val[1], - :family => val[2], :suffix => val[3], :title => val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 64) - def _reduce_13(val, _values, result) - result = Name.new(:given => val[0], :nick => val[1], - :particle => val[2], :family => val[3], - :suffix => val[4], :title => val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 70) - def _reduce_14(val, _values, result) - result = Name.new(:given => val[0], :particle => val[1], - :family => val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 75) - def _reduce_15(val, _values, result) - result = Name.new(:particle => val[0], :family => val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 80) - def _reduce_16(val, _values, result) - result = Name.new({ :family => val[0], :suffix => val[2][0], - :given => val[2][1] }, !!val[2][0]) - - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 85) - def _reduce_17(val, _values, result) - result = Name.new({ :particle => val[0], :family => val[1], - :suffix => val[3][0], :given => val[3][1] }, !!val[3][0]) - - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 90) - def _reduce_18(val, _values, result) - result = Name.new({ :particle => val[0,2].join(' '), :family => val[2], - :suffix => val[4][0], :given => val[4][1] }, !!val[4][0]) - - result - end -.,., - -# reduce 19 omitted - -module_eval(<<'.,.,', 'namae.y', 96) - def _reduce_20(val, _values, result) - result = val.join(' ') - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 97) - def _reduce_21(val, _values, result) - result = val.join(' ') - result - end -.,., - -# reduce 22 omitted - -# reduce 23 omitted - -module_eval(<<'.,.,', 'namae.y', 101) - def _reduce_24(val, _values, result) - result = [nil,val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 102) - def _reduce_25(val, _values, result) - result = [val[2],val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 103) - def _reduce_26(val, _values, result) - result = [val[0],nil] - result - end -.,., - -module_eval(<<'.,.,', 'namae.y', 104) - def _reduce_27(val, _values, result) - result = [val[0],val[2]] - result - end -.,., - -# reduce 28 omitted - -module_eval(<<'.,.,', 'namae.y', 107) - def _reduce_29(val, _values, result) - result = val.join(' ') - result - end -.,., - -# reduce 30 omitted - -# reduce 31 omitted - -# reduce 32 omitted - -module_eval(<<'.,.,', 'namae.y', 112) - def _reduce_33(val, _values, result) - result = val.join(' ') - result - end -.,., - -# reduce 34 omitted - -# reduce 35 omitted - -# reduce 36 omitted - -# reduce 37 omitted - -# reduce 38 omitted - -# reduce 39 omitted - -# reduce 40 omitted - -# reduce 41 omitted - -# reduce 42 omitted - -# reduce 43 omitted - -module_eval(<<'.,.,', 'namae.y', 122) - def _reduce_44(val, _values, result) - result = val.join(' ') - result - end -.,., - -# reduce 45 omitted - -# reduce 46 omitted - -# reduce 47 omitted - -module_eval(<<'.,.,', 'namae.y', 127) - def _reduce_48(val, _values, result) - result = val.join(' ') - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser -end # module Namae diff --git a/test/racc/regress/nasl b/test/racc/regress/nasl deleted file mode 100644 index 52a329d20a..0000000000 --- a/test/racc/regress/nasl +++ /dev/null @@ -1,2548 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.2 -# from Racc grammar file "". -# - -require 'racc/parser.rb' - - -require 'nasl/parser/tree' - -require 'nasl/parser/argument' -require 'nasl/parser/array' -require 'nasl/parser/assigment' -require 'nasl/parser/block' -require 'nasl/parser/break' -require 'nasl/parser/call' -require 'nasl/parser/comment' -require 'nasl/parser/continue' -require 'nasl/parser/decrement' -require 'nasl/parser/empty' -require 'nasl/parser/export' -require 'nasl/parser/expression' -require 'nasl/parser/for' -require 'nasl/parser/foreach' -require 'nasl/parser/function' -require 'nasl/parser/global' -require 'nasl/parser/identifier' -require 'nasl/parser/if' -require 'nasl/parser/import' -require 'nasl/parser/include' -require 'nasl/parser/increment' -require 'nasl/parser/integer' -require 'nasl/parser/ip' -require 'nasl/parser/key_value_pair' -require 'nasl/parser/list' -require 'nasl/parser/local' -require 'nasl/parser/lvalue' -require 'nasl/parser/parameter' -require 'nasl/parser/reference' -require 'nasl/parser/repeat' -require 'nasl/parser/repetition' -require 'nasl/parser/return' -require 'nasl/parser/string' -require 'nasl/parser/undefined' -require 'nasl/parser/while' - -module Nasl - class Grammar < Racc::Parser - -module_eval(<<'...end nasl.y/module_eval...', 'nasl.y', 582) - -def n(cls, *args) - begin - Nasl.const_get(cls).new(@tree, *args) - rescue - puts "An exception occurred during the creation of a #{cls} instance." - puts - puts "The arguments passed to the constructor were:" - puts args - puts - puts @tok.last.context - puts - raise - end -end - -def c(*args) - n(:Comment, *args) - args[1] -end - -def on_error(type, value, stack) - raise ParseException, "The language's grammar does not permit #{value.name} to appear here", value.context -end - -def next_token - @tok = @tkz.get_token - - if @first && @tok.first == :COMMENT - n(:Comment, @tok.last) - @tok = @tkz.get_token - end - @first = false - - return @tok -end - -def parse(env, code, path) - @first = true - @tree = Tree.new(env) - @tkz = Tokenizer.new(code, path) - @tree.concat(do_parse) -end - -...end nasl.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - 144, 143, 161, 162, 163, 164, 165, 166, 157, 158, - 159, 160, 153, 152, 151, 154, 155, 156, 145, 146, - 147, 149, 150, 82, 54, 111, 148, 81, 218, 83, - 55, 51, 50, 56, 54, 54, 80, 11, 78, 65, - 55, 55, 53, 63, 54, 54, 66, 95, 102, 103, - 55, 55, 53, 53, 64, 54, 218, 269, 67, 94, - 96, 55, 53, 53, 97, 98, 99, 100, 101, 102, - 103, 104, 82, 53, 267, 217, 81, 130, 83, 131, - 51, 50, 130, 54, 131, 80, 130, 54, 131, 55, - 51, 50, 68, 55, 54, 72, 95, 147, 149, 150, - 55, 53, 73, 148, 54, 53, 102, 103, 74, 96, - 55, 109, 53, 97, 98, 99, 100, 101, 102, 103, - 104, 82, 53, 112, 114, 81, 54, 83, 133, 51, - 50, 134, 55, 136, 80, 137, 54, 138, 141, 51, - 50, 167, 55, 54, 53, 95, 147, 149, 150, 55, - 10, 11, 148, 54, 53, 172, 37, 37, 96, 55, - 185, 53, 97, 98, 99, 100, 101, 102, 103, 104, - 82, 53, 192, 195, 81, 225, 83, 226, 51, 50, - 148, 54, 148, 80, 179, 148, 253, 55, 254, 255, - 54, 54, 54, 256, 95, 257, 55, 55, 55, 53, - 97, 98, 99, 100, 101, 102, 103, 96, 53, 53, - 53, 97, 98, 99, 100, 101, 102, 103, 104, 82, - 54, 258, 259, 81, 260, 83, 55, 51, 50, 262, - 54, 266, 80, 268, 270, 43, 55, 273, 53, 54, - 274, 54, 275, 95, 148, 55, 148, 55, 53, 97, - 98, 99, 100, 101, 102, 103, 96, 53, 148, 53, - 97, 98, 99, 100, 101, 102, 103, 104, 82, 148, - 276, 43, 81, 300, 83, 301, 51, 50, 306, nil, - nil, 80, 154, 155, 156, 145, 146, 147, 149, 150, - 54, nil, 95, 148, nil, nil, 55, nil, 145, 146, - 147, 149, 150, nil, nil, 96, 148, nil, 53, 97, - 98, 99, 100, 101, 102, 103, 104, 82, nil, nil, - nil, 81, nil, 83, nil, 51, 50, nil, nil, nil, - 80, nil, 145, 146, 147, 149, 150, nil, nil, 54, - 148, 95, nil, nil, nil, 55, nil, nil, 145, 146, - 147, 149, 150, 94, 96, 184, 148, 53, 97, 98, - 99, 100, 101, 102, 103, 104, 82, nil, nil, nil, - 81, nil, 83, nil, 51, 50, nil, nil, nil, 80, - 97, 98, 99, 100, 101, nil, nil, nil, 54, nil, - 95, nil, nil, nil, 55, 97, 98, 99, 100, 101, - nil, nil, nil, 96, nil, nil, 53, 97, 98, 99, - 100, 101, 102, 103, 104, 82, nil, nil, nil, 81, - nil, 83, nil, 51, 50, nil, nil, nil, 80, 97, - 98, 99, 100, 101, nil, nil, nil, 54, nil, 95, - nil, nil, nil, 55, nil, nil, nil, nil, nil, nil, - nil, nil, 96, nil, nil, 53, 97, 98, 99, 100, - 101, 102, 103, 104, 82, nil, nil, nil, 81, nil, - 83, nil, 51, 50, nil, nil, nil, 80, nil, nil, - nil, nil, nil, nil, nil, nil, 54, nil, 95, nil, - nil, nil, 55, nil, nil, nil, nil, nil, nil, nil, - 94, 96, nil, nil, 53, 97, 98, 99, 100, 101, - 102, 103, 104, 82, nil, nil, nil, 81, nil, 83, - nil, 51, 50, nil, nil, nil, 80, nil, nil, nil, - nil, nil, nil, nil, nil, 54, nil, 95, nil, nil, - nil, 55, nil, nil, nil, nil, nil, nil, nil, nil, - 96, nil, nil, 53, 97, 98, 99, 100, 101, 102, - 103, 104, 82, nil, nil, nil, 81, nil, 83, nil, - 51, 50, nil, nil, nil, 80, nil, nil, nil, nil, - nil, nil, nil, nil, 54, nil, 95, nil, nil, nil, - 55, nil, nil, nil, nil, nil, nil, nil, nil, 96, - nil, nil, 53, 97, 98, 99, 100, 101, 102, 103, - 104, 82, nil, nil, nil, 81, nil, 83, nil, 51, - 50, nil, nil, nil, 80, nil, nil, nil, nil, nil, - nil, nil, nil, 54, nil, 95, nil, nil, nil, 55, - nil, nil, nil, nil, nil, nil, nil, nil, 96, nil, - nil, 53, 97, 98, 99, 100, 101, 102, 103, 104, - 82, nil, nil, nil, 81, nil, 83, nil, 51, 50, - nil, nil, nil, 80, nil, nil, nil, nil, nil, nil, - nil, nil, 54, nil, 95, nil, nil, nil, 55, nil, - nil, nil, nil, nil, nil, nil, nil, 96, nil, nil, - 53, 97, 98, 99, 100, 101, 102, 103, 104, 82, - nil, nil, nil, 81, nil, 83, nil, 51, 50, nil, - nil, nil, 80, nil, nil, nil, nil, nil, nil, nil, - nil, 54, nil, 95, nil, nil, nil, 55, nil, nil, - nil, nil, nil, nil, nil, nil, 96, nil, nil, 53, - 97, 98, 99, 100, 101, 102, 103, 104, 82, nil, - nil, nil, 81, nil, 83, nil, 51, 50, nil, nil, - nil, 80, nil, nil, nil, nil, nil, nil, nil, nil, - 54, nil, 95, nil, nil, nil, 55, nil, nil, nil, - nil, nil, nil, nil, nil, 96, nil, nil, 53, 97, - 98, 99, 100, 101, 102, 103, 104, 82, nil, nil, - nil, 81, nil, 83, nil, 51, 50, nil, nil, nil, - 80, nil, nil, nil, nil, nil, nil, nil, nil, 54, - nil, 95, nil, nil, nil, 55, nil, nil, nil, nil, - nil, nil, nil, nil, 96, nil, nil, 53, 97, 98, - 99, 100, 101, 102, 103, 104, 82, nil, nil, nil, - 81, nil, 83, nil, 51, 50, nil, nil, nil, 80, - nil, nil, nil, nil, nil, nil, nil, nil, 54, nil, - 95, nil, nil, nil, 55, nil, nil, nil, nil, nil, - nil, nil, nil, 96, nil, nil, 53, 97, 98, 99, - 100, 101, 102, 103, 104, 82, nil, nil, nil, 81, - nil, 83, nil, 51, 50, nil, nil, nil, 80, 208, - nil, nil, nil, nil, nil, nil, nil, 54, nil, 95, - nil, nil, nil, 55, nil, nil, nil, nil, nil, nil, - nil, 94, 96, nil, nil, 53, 97, 98, 99, 100, - 101, 102, 103, 104, 82, nil, nil, nil, 81, nil, - 83, nil, 51, 50, nil, nil, nil, 80, nil, nil, - nil, nil, nil, nil, nil, nil, 54, nil, 95, nil, - nil, nil, 55, nil, nil, nil, nil, nil, nil, nil, - nil, 96, nil, nil, 53, 97, 98, 99, 100, 101, - 102, 103, 104, 82, nil, nil, nil, 81, nil, 83, - nil, 51, 50, nil, nil, nil, 80, nil, nil, nil, - nil, nil, nil, nil, nil, 54, nil, 95, nil, nil, - nil, 55, nil, nil, nil, nil, nil, nil, nil, 94, - 96, nil, nil, 53, 97, 98, 99, 100, 101, 102, - 103, 104, 82, nil, nil, nil, 81, nil, 83, nil, - 51, 50, nil, nil, nil, 80, nil, nil, nil, nil, - nil, nil, nil, nil, 54, nil, 95, nil, nil, nil, - 55, nil, nil, nil, nil, nil, nil, nil, nil, 96, - nil, nil, 53, 97, 98, 99, 100, 101, 102, 103, - 104, 82, nil, nil, nil, 81, nil, 83, nil, 51, - 50, nil, nil, nil, 80, nil, nil, nil, nil, nil, - nil, nil, nil, 54, nil, 95, nil, nil, nil, 55, - nil, nil, nil, nil, nil, nil, nil, nil, 96, nil, - nil, 53, 97, 98, 99, 100, 101, 102, 103, 104, - 82, nil, nil, nil, 81, nil, 83, nil, 51, 50, - nil, nil, nil, 80, nil, nil, nil, nil, nil, nil, - nil, nil, 54, nil, 95, nil, nil, nil, 55, nil, - nil, nil, nil, nil, nil, nil, nil, 96, nil, nil, - 53, 97, 98, 99, 100, 101, 102, 103, 104, 82, - nil, nil, nil, 81, nil, 83, nil, 51, 50, nil, - nil, nil, 80, nil, nil, nil, nil, nil, nil, nil, - nil, 54, nil, 95, nil, nil, nil, 55, nil, nil, - nil, nil, nil, nil, nil, nil, 96, nil, nil, 53, - 97, 98, 99, 100, 101, 102, 103, 104, 82, nil, - nil, nil, 81, nil, 83, nil, 51, 50, nil, nil, - nil, 80, nil, nil, nil, nil, nil, nil, nil, nil, - 54, nil, 95, nil, nil, nil, 55, nil, nil, nil, - nil, nil, nil, nil, nil, 96, nil, nil, 53, 97, - 98, 99, 100, 101, 102, 103, 104, 82, nil, nil, - nil, 81, nil, 83, nil, 51, 50, nil, nil, nil, - 80, nil, nil, nil, nil, nil, nil, nil, nil, 54, - nil, 95, nil, nil, nil, 55, nil, nil, nil, nil, - nil, nil, nil, nil, 96, nil, nil, 53, 97, 98, - 99, 100, 101, 102, 103, 104, 82, nil, nil, nil, - 81, nil, 83, nil, 51, 50, nil, nil, nil, 80, - nil, nil, nil, nil, nil, nil, nil, nil, 54, nil, - 95, nil, nil, nil, 55, nil, nil, nil, nil, nil, - nil, nil, nil, 96, nil, nil, 53, 97, 98, 99, - 100, 101, 102, 103, 104, 82, nil, nil, nil, 81, - nil, 83, nil, 51, 50, nil, nil, nil, 80, nil, - nil, nil, nil, nil, nil, nil, nil, 54, nil, 95, - nil, nil, nil, 55, nil, nil, nil, nil, nil, nil, - nil, nil, 96, nil, nil, 53, 97, 98, 99, 100, - 101, 102, 103, 104, 82, nil, nil, nil, 81, nil, - 83, nil, 51, 50, nil, nil, nil, 80, nil, nil, - nil, nil, nil, nil, nil, nil, 54, nil, 95, nil, - nil, nil, 55, nil, nil, nil, nil, nil, nil, nil, - nil, 96, nil, nil, 53, 97, 98, 99, 100, 101, - 102, 103, 104, 82, nil, nil, nil, 81, nil, 83, - nil, 51, 50, nil, nil, nil, 80, nil, nil, nil, - nil, nil, nil, nil, nil, 54, nil, 95, nil, nil, - nil, 55, nil, nil, nil, nil, nil, nil, nil, nil, - 96, nil, nil, 53, 97, 98, 99, 100, 101, 102, - 103, 104, 82, nil, nil, nil, 81, nil, 83, nil, - 51, 50, nil, nil, nil, 80, nil, nil, nil, nil, - nil, nil, nil, nil, 54, nil, 95, nil, nil, nil, - 55, nil, nil, nil, nil, nil, nil, nil, nil, 96, - nil, nil, 53, 97, 98, 99, 100, 101, 102, 103, - 104, 82, nil, nil, nil, 81, nil, 83, nil, 51, - 50, nil, nil, nil, 80, nil, nil, nil, nil, nil, - nil, nil, nil, 54, nil, 95, nil, nil, nil, 55, - nil, nil, nil, nil, nil, nil, nil, nil, 96, nil, - nil, 53, 97, 98, 99, 100, 101, 102, 103, 104, - 82, nil, nil, nil, 81, nil, 83, nil, 51, 50, - nil, nil, nil, 80, nil, nil, nil, nil, nil, nil, - nil, nil, 54, nil, 95, nil, nil, nil, 55, nil, - nil, nil, nil, nil, nil, nil, nil, 96, nil, nil, - 53, 97, 98, 99, 100, 101, 102, 103, 104, 82, - nil, nil, nil, 81, nil, 83, nil, 51, 50, nil, - nil, nil, 80, nil, nil, nil, nil, nil, nil, nil, - nil, 54, nil, 95, nil, nil, nil, 55, nil, nil, - nil, nil, nil, nil, nil, nil, 96, nil, nil, 53, - 97, 98, 99, 100, 101, 102, 103, 104, 82, nil, - nil, nil, 81, nil, 83, nil, 51, 50, nil, nil, - nil, 80, nil, nil, nil, nil, nil, nil, nil, nil, - 54, nil, 95, nil, nil, nil, 55, nil, nil, nil, - nil, nil, nil, nil, nil, 96, nil, nil, 53, 97, - 98, 99, 100, 101, 102, 103, 104, 82, nil, nil, - nil, 81, nil, 83, nil, 51, 50, nil, nil, nil, - 80, nil, nil, nil, nil, nil, nil, nil, nil, 54, - nil, 95, nil, nil, nil, 55, nil, nil, nil, nil, - nil, nil, nil, nil, 96, nil, nil, 53, 97, 98, - 99, 100, 101, 102, 103, 104, 82, nil, nil, nil, - 81, nil, 83, nil, 51, 50, nil, nil, nil, 80, - nil, nil, nil, nil, nil, nil, nil, nil, 54, nil, - 95, nil, nil, nil, 55, nil, nil, nil, nil, nil, - nil, nil, nil, 96, nil, nil, 53, 97, 98, 99, - 100, 101, 102, 103, 104, 82, nil, nil, nil, 81, - nil, 83, nil, 51, 50, nil, nil, nil, 80, nil, - nil, nil, nil, nil, nil, nil, nil, 54, nil, 95, - nil, nil, nil, 55, nil, nil, nil, nil, nil, nil, - nil, nil, 96, nil, nil, 53, 97, 98, 99, 100, - 101, 102, 103, 104, 82, nil, nil, nil, 81, nil, - 83, nil, 51, 50, nil, nil, nil, 80, nil, nil, - nil, nil, nil, nil, nil, nil, 54, nil, 95, nil, - nil, nil, 55, nil, nil, nil, nil, nil, nil, nil, - nil, 96, nil, nil, 53, 97, 98, 99, 100, 101, - 102, 103, 104, 82, nil, nil, nil, 81, nil, 83, - nil, 51, 50, nil, nil, nil, 80, nil, nil, nil, - nil, nil, nil, nil, nil, 54, nil, 95, nil, nil, - nil, 55, nil, nil, nil, nil, nil, nil, nil, nil, - 96, nil, nil, 53, 97, 98, 99, 100, 101, 102, - 103, 104, 82, nil, nil, nil, 81, nil, 83, nil, - 51, 50, nil, nil, nil, 80, nil, nil, nil, nil, - nil, nil, nil, nil, 54, nil, 95, nil, nil, nil, - 55, nil, nil, nil, nil, nil, nil, nil, nil, 96, - nil, nil, 53, 97, 98, 99, 100, 101, 102, 103, - 104, 82, nil, nil, nil, 81, nil, 83, nil, 51, - 50, nil, nil, nil, 80, nil, nil, nil, nil, nil, - nil, nil, nil, 54, nil, 95, nil, nil, nil, 55, - nil, nil, nil, nil, nil, nil, nil, nil, 96, nil, - nil, 53, 97, 98, 99, 100, 101, 102, 103, 104, - 82, nil, nil, nil, 81, nil, 83, nil, 51, 50, - nil, nil, nil, 80, nil, nil, nil, nil, nil, nil, - nil, nil, 54, nil, 95, nil, nil, nil, 55, nil, - nil, nil, nil, nil, nil, nil, nil, 96, nil, nil, - 53, 97, 98, 99, 100, 101, 102, 103, 104, 82, - nil, nil, nil, 81, nil, 83, nil, 51, 50, nil, - nil, nil, 80, nil, nil, nil, nil, nil, nil, nil, - nil, 54, nil, 95, nil, nil, nil, 55, nil, nil, - nil, nil, nil, nil, nil, nil, 96, nil, nil, 53, - 97, 98, 99, 100, 101, 102, 103, 104, 82, nil, - nil, nil, 81, nil, 83, nil, 51, 50, nil, nil, - nil, 80, nil, nil, nil, nil, nil, nil, nil, nil, - 54, nil, 95, nil, nil, nil, 55, nil, nil, nil, - nil, nil, nil, nil, nil, 96, nil, nil, 53, 97, - 98, 99, 100, 101, 102, 103, 104, 82, nil, nil, - nil, 81, nil, 83, nil, 51, 50, nil, nil, nil, - 80, nil, nil, nil, nil, nil, nil, nil, nil, 54, - nil, 95, nil, nil, nil, 55, nil, nil, nil, nil, - nil, nil, nil, nil, 96, nil, nil, 53, 97, 98, - 99, 100, 101, 102, 103, 104, 82, nil, nil, nil, - 81, nil, 83, nil, 51, 50, nil, nil, nil, 80, - nil, nil, nil, nil, nil, nil, nil, nil, 54, nil, - 95, nil, nil, nil, 55, nil, nil, nil, nil, nil, - nil, nil, 94, 96, nil, nil, 53, 97, 98, 99, - 100, 101, 102, 103, 104, 82, nil, nil, nil, 81, - nil, 83, nil, 51, 50, nil, nil, nil, 80, nil, - nil, nil, nil, nil, nil, nil, nil, 54, nil, 95, - nil, nil, nil, 55, nil, nil, nil, nil, nil, nil, - nil, 94, 96, nil, nil, 53, 97, 98, 99, 100, - 101, 102, 103, 104, 82, nil, nil, nil, 81, nil, - 83, nil, 51, 50, nil, nil, nil, 80, nil, nil, - nil, nil, nil, nil, nil, nil, 54, nil, 95, nil, - nil, nil, 55, nil, nil, nil, nil, nil, nil, nil, - 94, 96, nil, nil, 53, 97, 98, 99, 100, 101, - 102, 103, 104, 82, nil, nil, nil, 81, nil, 83, - nil, 51, 50, nil, nil, nil, 80, nil, nil, nil, - nil, nil, nil, nil, nil, 54, nil, 95, nil, nil, - nil, 55, nil, nil, nil, nil, nil, nil, nil, 94, - 96, nil, nil, 53, 97, 98, 99, 100, 101, 102, - 103, 104, 82, nil, nil, nil, 81, nil, 83, nil, - 51, 50, nil, nil, nil, 80, nil, nil, nil, nil, - nil, nil, nil, nil, 54, nil, 95, nil, nil, nil, - 55, nil, nil, nil, nil, nil, nil, nil, nil, 96, - nil, nil, 53, 97, 98, 99, 100, 101, 102, 103, - 104, 82, nil, nil, nil, 81, nil, 83, nil, 51, - 50, nil, nil, nil, 80, nil, nil, nil, nil, nil, - nil, nil, nil, 54, nil, 95, nil, nil, nil, 55, - nil, nil, nil, nil, nil, nil, nil, nil, 96, nil, - nil, 53, 97, 98, 99, 100, 101, 102, 103, 104, - 82, nil, nil, nil, 81, nil, 83, nil, 51, 50, - nil, nil, nil, 80, nil, nil, nil, nil, nil, nil, - nil, nil, 54, nil, 95, nil, nil, nil, 55, nil, - nil, nil, nil, nil, nil, nil, 94, 96, nil, nil, - 53, 97, 98, 99, 100, 101, 102, 103, 104, 82, - nil, nil, nil, 81, nil, 83, nil, 51, 50, nil, - nil, nil, 80, nil, nil, nil, nil, nil, nil, nil, - nil, 54, nil, 95, nil, nil, nil, 55, nil, nil, - nil, nil, nil, nil, nil, 94, 96, nil, nil, 53, - 97, 98, 99, 100, 101, 102, 103, 104, 115, 116, - 117, 118, 119, 120, 123, 122, 121, 115, 116, 117, - 118, 119, 120, 123, 122, 121, 153, 152, 151, 154, - 155, 156, 145, 146, 147, 149, 150, nil, nil, nil, - 148, nil, nil, nil, 126, 125, nil, nil, nil, 124, - nil, nil, nil, 126, 125, nil, nil, nil, 124, 144, - 143, 161, 162, 163, 164, 165, 166, 157, 158, 159, - 160, 153, 152, 151, 154, 155, 156, 145, 146, 147, - 149, 150, nil, nil, nil, 148, nil, nil, nil, nil, - nil, nil, nil, 142, 144, 143, 161, 162, 163, 164, - 165, 166, 157, 158, 159, 160, 153, 152, 151, 154, - 155, 156, 145, 146, 147, 149, 150, nil, nil, nil, - 148, nil, nil, nil, nil, nil, nil, nil, 221, 144, - 143, 161, 162, 163, 164, 165, 166, 157, 158, 159, - 160, 153, 152, 151, 154, 155, 156, 145, 146, 147, - 149, 150, nil, nil, nil, 148, nil, nil, nil, nil, - nil, nil, nil, 289, 144, 143, 161, 162, 163, 164, - 165, 166, 157, 158, 159, 160, 153, 152, 151, 154, - 155, 156, 145, 146, 147, 149, 150, nil, nil, nil, - 148, nil, nil, nil, nil, nil, nil, nil, 297, 144, - 143, 161, 162, 163, 164, 165, 166, 157, 158, 159, - 160, 153, 152, 151, 154, 155, 156, 145, 146, 147, - 149, 150, nil, nil, nil, 148, nil, nil, nil, nil, - nil, nil, 251, 144, 143, 161, 162, 163, 164, 165, - 166, 157, 158, 159, 160, 153, 152, 151, 154, 155, - 156, 145, 146, 147, 149, 150, nil, nil, nil, 148, - nil, nil, nil, nil, nil, nil, 263, 144, 143, 161, - 162, 163, 164, 165, 166, 157, 158, 159, 160, 153, - 152, 151, 154, 155, 156, 145, 146, 147, 149, 150, - nil, nil, nil, 148, nil, nil, nil, nil, nil, nil, - 265, 144, 143, 161, 162, 163, 164, 165, 166, 157, - 158, 159, 160, 153, 152, 151, 154, 155, 156, 145, - 146, 147, 149, 150, nil, nil, nil, 148, nil, nil, - nil, nil, nil, nil, 286, 144, 143, 161, 162, 163, - 164, 165, 166, 157, 158, 159, 160, 153, 152, 151, - 154, 155, 156, 145, 146, 147, 149, 150, nil, nil, - nil, 148, 51, 50, 4, 10, 11, nil, 299, 36, - 32, 34, 37, 39, 40, 41, 54, 42, 43, nil, - 44, 45, 55, 46, nil, 47, nil, 48, 51, 50, - 4, 10, 11, nil, 53, 36, 32, 34, 37, 39, - 40, 41, 54, 42, 43, nil, 44, 45, 55, 46, - nil, 47, nil, 48, 51, 50, 105, nil, nil, nil, - 53, 36, 32, 34, 37, 39, 40, 41, 54, 42, - 43, 107, 44, 45, 55, 46, nil, 47, nil, 48, - 51, 50, 105, nil, nil, nil, 53, 36, 32, 34, - 37, 39, 40, 41, 54, 42, 43, nil, 44, 45, - 55, 46, nil, 47, nil, 48, 51, 50, 105, nil, - nil, nil, 53, 36, 32, 34, 37, 39, 40, 41, - 54, 42, 43, nil, 44, 45, 55, 46, nil, 47, - nil, 48, 51, 50, 105, nil, nil, nil, 53, 36, - 32, 34, 37, 39, 40, 41, 54, 42, 43, nil, - 44, 45, 55, 46, nil, 47, nil, 48, 51, 50, - 105, nil, nil, nil, 53, 36, 32, 34, 37, 39, - 40, 41, 54, 42, 43, nil, 44, 45, 55, 46, - nil, 47, nil, 48, 51, 50, 105, nil, nil, nil, - 53, 36, 32, 34, 37, 39, 40, 41, 54, 42, - 43, nil, 44, 45, 55, 46, nil, 47, nil, 48, - 51, 50, 105, nil, nil, nil, 53, 36, 32, 34, - 37, 39, 40, 41, 54, 42, 43, nil, 44, 45, - 55, 46, nil, 47, nil, 48, 51, 50, 105, nil, - nil, nil, 53, 36, 32, 34, 37, 39, 40, 41, - 54, 42, 43, nil, 44, 45, 55, 46, nil, 47, - nil, 48, 51, 50, 105, nil, nil, nil, 53, 36, - 32, 34, 37, 39, 40, 41, 54, 42, 43, nil, - 44, 45, 55, 46, nil, 47, nil, 48, nil, nil, - nil, nil, nil, nil, 53, 144, 143, 161, 162, 163, - 164, 165, 166, 157, 158, 159, 160, 153, 152, 151, - 154, 155, 156, 145, 146, 147, 149, 150, nil, nil, - nil, 148, 144, 143, 161, 162, 163, 164, 165, 166, - 157, 158, 159, 160, 153, 152, 151, 154, 155, 156, - 145, 146, 147, 149, 150, nil, nil, nil, 148, 144, - 143, 161, 162, 163, 164, 165, 166, 157, 158, 159, - 160, 153, 152, 151, 154, 155, 156, 145, 146, 147, - 149, 150, nil, nil, nil, 148, 144, 143, 161, 162, - 163, 164, 165, 166, 157, 158, 159, 160, 153, 152, - 151, 154, 155, 156, 145, 146, 147, 149, 150, nil, - nil, nil, 148, 144, 143, 161, 162, 163, 164, 165, - 166, 157, 158, 159, 160, 153, 152, 151, 154, 155, - 156, 145, 146, 147, 149, 150, nil, nil, nil, 148, - 144, 143, 161, 162, 163, 164, 165, 166, 157, 158, - 159, 160, 153, 152, 151, 154, 155, 156, 145, 146, - 147, 149, 150, nil, nil, nil, 148, 144, 143, 161, - 162, 163, 164, 165, 166, 157, 158, 159, 160, 153, - 152, 151, 154, 155, 156, 145, 146, 147, 149, 150, - nil, nil, nil, 148, 144, 143, 161, 162, 163, 164, - 165, 166, 157, 158, 159, 160, 153, 152, 151, 154, - 155, 156, 145, 146, 147, 149, 150, nil, nil, nil, - 148, 144, 143, 161, 162, 163, 164, 165, 166, 157, - 158, 159, 160, 153, 152, 151, 154, 155, 156, 145, - 146, 147, 149, 150, nil, nil, nil, 148, 144, 143, - 161, 162, 163, 164, 165, 166, 157, 158, 159, 160, - 153, 152, 151, 154, 155, 156, 145, 146, 147, 149, - 150, nil, nil, nil, 148, 144, 143, 161, 162, 163, - 164, 165, 166, 157, 158, 159, 160, 153, 152, 151, - 154, 155, 156, 145, 146, 147, 149, 150, nil, nil, - nil, 148, 144, 143, 161, 162, 163, 164, 165, 166, - 157, 158, 159, 160, 153, 152, 151, 154, 155, 156, - 145, 146, 147, 149, 150, nil, nil, nil, 148, 144, - 143, 161, 162, 163, 164, 165, 166, 157, 158, 159, - 160, 153, 152, 151, 154, 155, 156, 145, 146, 147, - 149, 150, nil, nil, nil, 148, 144, 143, 161, 162, - 163, 164, 165, 166, 157, 158, 159, 160, 153, 152, - 151, 154, 155, 156, 145, 146, 147, 149, 150, nil, - nil, nil, 148, 144, 143, 161, 162, 163, 164, 165, - 166, 157, 158, 159, 160, 153, 152, 151, 154, 155, - 156, 145, 146, 147, 149, 150, nil, nil, nil, 148, - 144, 143, 161, 162, 163, 164, 165, 166, 157, 158, - 159, 160, 153, 152, 151, 154, 155, 156, 145, 146, - 147, 149, 150, nil, nil, nil, 148, 143, 161, 162, - 163, 164, 165, 166, 157, 158, 159, 160, 153, 152, - 151, 154, 155, 156, 145, 146, 147, 149, 150, nil, - nil, nil, 148, 161, 162, 163, 164, 165, 166, 157, - 158, 159, 160, 153, 152, 151, 154, 155, 156, 145, - 146, 147, 149, 150, nil, nil, nil, 148, 153, 152, - 151, 154, 155, 156, 145, 146, 147, 149, 150, nil, - nil, nil, 148, 153, 152, 151, 154, 155, 156, 145, - 146, 147, 149, 150, nil, nil, nil, 148, 153, 152, - 151, 154, 155, 156, 145, 146, 147, 149, 150, nil, - nil, nil, 148, 153, 152, 151, 154, 155, 156, 145, - 146, 147, 149, 150, nil, nil, nil, 148, 153, 152, - 151, 154, 155, 156, 145, 146, 147, 149, 150, nil, - nil, nil, 148, 153, 152, 151, 154, 155, 156, 145, - 146, 147, 149, 150, nil, nil, nil, 148, 153, 152, - 151, 154, 155, 156, 145, 146, 147, 149, 150, nil, - nil, nil, 148, 153, 152, 151, 154, 155, 156, 145, - 146, 147, 149, 150, nil, nil, nil, 148, 153, 152, - 151, 154, 155, 156, 145, 146, 147, 149, 150, nil, - nil, nil, 148, 152, 151, 154, 155, 156, 145, 146, - 147, 149, 150, nil, nil, nil, 148, 151, 154, 155, - 156, 145, 146, 147, 149, 150, nil, nil, nil, 148 ] - -racc_action_check = [ - 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 213, 213, 213, 213, 213, 213, 213, - 213, 213, 213, 42, 11, 45, 213, 42, 273, 42, - 11, 42, 42, 1, 45, 37, 42, 10, 42, 33, - 45, 37, 11, 31, 41, 42, 33, 42, 73, 73, - 41, 42, 45, 37, 32, 273, 134, 213, 34, 42, - 42, 273, 41, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 66, 273, 210, 134, 66, 210, 66, 210, - 66, 66, 52, 134, 52, 66, 132, 50, 132, 134, - 109, 109, 35, 50, 66, 38, 66, 229, 229, 229, - 66, 134, 39, 229, 109, 50, 74, 74, 40, 66, - 109, 44, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 80, 109, 46, 48, 80, 51, 80, 56, 80, - 80, 62, 51, 69, 80, 70, 94, 71, 75, 297, - 297, 77, 94, 80, 51, 80, 230, 230, 230, 80, - 4, 4, 230, 297, 94, 90, 105, 4, 80, 297, - 106, 80, 80, 80, 80, 80, 80, 80, 80, 80, - 81, 297, 110, 113, 81, 139, 81, 140, 81, 81, - 169, 95, 170, 81, 95, 171, 174, 95, 175, 176, - 111, 131, 81, 177, 81, 178, 111, 131, 81, 95, - 95, 95, 95, 95, 95, 95, 95, 81, 111, 131, - 81, 81, 81, 81, 81, 81, 81, 81, 81, 82, - 138, 182, 183, 82, 187, 82, 138, 82, 82, 193, - 256, 207, 82, 212, 216, 217, 256, 220, 138, 218, - 225, 82, 226, 82, 231, 218, 232, 82, 256, 256, - 256, 256, 256, 256, 256, 256, 82, 218, 233, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 83, 234, - 252, 270, 83, 288, 83, 296, 83, 83, 302, nil, - nil, 83, 235, 235, 235, 235, 235, 235, 235, 235, - 83, nil, 83, 235, nil, nil, 83, nil, 238, 238, - 238, 238, 238, nil, nil, 83, 238, nil, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 96, nil, nil, - nil, 96, nil, 96, nil, 96, 96, nil, nil, nil, - 96, nil, 239, 239, 239, 239, 239, nil, nil, 96, - 239, 96, nil, nil, nil, 96, nil, nil, 240, 240, - 240, 240, 240, 96, 96, 96, 240, 96, 96, 96, - 96, 96, 96, 96, 96, 96, 112, nil, nil, nil, - 112, nil, 112, nil, 112, 112, nil, nil, nil, 112, - 172, 172, 172, 172, 172, nil, nil, nil, 112, nil, - 112, nil, nil, nil, 112, 276, 276, 276, 276, 276, - nil, nil, nil, 112, nil, nil, 112, 112, 112, 112, - 112, 112, 112, 112, 112, 114, nil, nil, nil, 114, - nil, 114, nil, 114, 114, nil, nil, nil, 114, 301, - 301, 301, 301, 301, nil, nil, nil, 114, nil, 114, - nil, nil, nil, 114, nil, nil, nil, nil, nil, nil, - nil, nil, 114, nil, nil, 114, 114, 114, 114, 114, - 114, 114, 114, 114, 115, nil, nil, nil, 115, nil, - 115, nil, 115, 115, nil, nil, nil, 115, nil, nil, - nil, nil, nil, nil, nil, nil, 115, nil, 115, nil, - nil, nil, 115, nil, nil, nil, nil, nil, nil, nil, - 115, 115, nil, nil, 115, 115, 115, 115, 115, 115, - 115, 115, 115, 116, nil, nil, nil, 116, nil, 116, - nil, 116, 116, nil, nil, nil, 116, nil, nil, nil, - nil, nil, nil, nil, nil, 116, nil, 116, nil, nil, - nil, 116, nil, nil, nil, nil, nil, nil, nil, nil, - 116, nil, nil, 116, 116, 116, 116, 116, 116, 116, - 116, 116, 117, nil, nil, nil, 117, nil, 117, nil, - 117, 117, nil, nil, nil, 117, nil, nil, nil, nil, - nil, nil, nil, nil, 117, nil, 117, nil, nil, nil, - 117, nil, nil, nil, nil, nil, nil, nil, nil, 117, - nil, nil, 117, 117, 117, 117, 117, 117, 117, 117, - 117, 118, nil, nil, nil, 118, nil, 118, nil, 118, - 118, nil, nil, nil, 118, nil, nil, nil, nil, nil, - nil, nil, nil, 118, nil, 118, nil, nil, nil, 118, - nil, nil, nil, nil, nil, nil, nil, nil, 118, nil, - nil, 118, 118, 118, 118, 118, 118, 118, 118, 118, - 119, nil, nil, nil, 119, nil, 119, nil, 119, 119, - nil, nil, nil, 119, nil, nil, nil, nil, nil, nil, - nil, nil, 119, nil, 119, nil, nil, nil, 119, nil, - nil, nil, nil, nil, nil, nil, nil, 119, nil, nil, - 119, 119, 119, 119, 119, 119, 119, 119, 119, 120, - nil, nil, nil, 120, nil, 120, nil, 120, 120, nil, - nil, nil, 120, nil, nil, nil, nil, nil, nil, nil, - nil, 120, nil, 120, nil, nil, nil, 120, nil, nil, - nil, nil, nil, nil, nil, nil, 120, nil, nil, 120, - 120, 120, 120, 120, 120, 120, 120, 120, 121, nil, - nil, nil, 121, nil, 121, nil, 121, 121, nil, nil, - nil, 121, nil, nil, nil, nil, nil, nil, nil, nil, - 121, nil, 121, nil, nil, nil, 121, nil, nil, nil, - nil, nil, nil, nil, nil, 121, nil, nil, 121, 121, - 121, 121, 121, 121, 121, 121, 121, 122, nil, nil, - nil, 122, nil, 122, nil, 122, 122, nil, nil, nil, - 122, nil, nil, nil, nil, nil, nil, nil, nil, 122, - nil, 122, nil, nil, nil, 122, nil, nil, nil, nil, - nil, nil, nil, nil, 122, nil, nil, 122, 122, 122, - 122, 122, 122, 122, 122, 122, 123, nil, nil, nil, - 123, nil, 123, nil, 123, 123, nil, nil, nil, 123, - nil, nil, nil, nil, nil, nil, nil, nil, 123, nil, - 123, nil, nil, nil, 123, nil, nil, nil, nil, nil, - nil, nil, nil, 123, nil, nil, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 124, nil, nil, nil, 124, - nil, 124, nil, 124, 124, nil, nil, nil, 124, 124, - nil, nil, nil, nil, nil, nil, nil, 124, nil, 124, - nil, nil, nil, 124, nil, nil, nil, nil, nil, nil, - nil, 124, 124, nil, nil, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 130, nil, nil, nil, 130, nil, - 130, nil, 130, 130, nil, nil, nil, 130, nil, nil, - nil, nil, nil, nil, nil, nil, 130, nil, 130, nil, - nil, nil, 130, nil, nil, nil, nil, nil, nil, nil, - nil, 130, nil, nil, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 137, nil, nil, nil, 137, nil, 137, - nil, 137, 137, nil, nil, nil, 137, nil, nil, nil, - nil, nil, nil, nil, nil, 137, nil, 137, nil, nil, - nil, 137, nil, nil, nil, nil, nil, nil, nil, 137, - 137, nil, nil, 137, 137, 137, 137, 137, 137, 137, - 137, 137, 143, nil, nil, nil, 143, nil, 143, nil, - 143, 143, nil, nil, nil, 143, nil, nil, nil, nil, - nil, nil, nil, nil, 143, nil, 143, nil, nil, nil, - 143, nil, nil, nil, nil, nil, nil, nil, nil, 143, - nil, nil, 143, 143, 143, 143, 143, 143, 143, 143, - 143, 144, nil, nil, nil, 144, nil, 144, nil, 144, - 144, nil, nil, nil, 144, nil, nil, nil, nil, nil, - nil, nil, nil, 144, nil, 144, nil, nil, nil, 144, - nil, nil, nil, nil, nil, nil, nil, nil, 144, nil, - nil, 144, 144, 144, 144, 144, 144, 144, 144, 144, - 145, nil, nil, nil, 145, nil, 145, nil, 145, 145, - nil, nil, nil, 145, nil, nil, nil, nil, nil, nil, - nil, nil, 145, nil, 145, nil, nil, nil, 145, nil, - nil, nil, nil, nil, nil, nil, nil, 145, nil, nil, - 145, 145, 145, 145, 145, 145, 145, 145, 145, 146, - nil, nil, nil, 146, nil, 146, nil, 146, 146, nil, - nil, nil, 146, nil, nil, nil, nil, nil, nil, nil, - nil, 146, nil, 146, nil, nil, nil, 146, nil, nil, - nil, nil, nil, nil, nil, nil, 146, nil, nil, 146, - 146, 146, 146, 146, 146, 146, 146, 146, 147, nil, - nil, nil, 147, nil, 147, nil, 147, 147, nil, nil, - nil, 147, nil, nil, nil, nil, nil, nil, nil, nil, - 147, nil, 147, nil, nil, nil, 147, nil, nil, nil, - nil, nil, nil, nil, nil, 147, nil, nil, 147, 147, - 147, 147, 147, 147, 147, 147, 147, 148, nil, nil, - nil, 148, nil, 148, nil, 148, 148, nil, nil, nil, - 148, nil, nil, nil, nil, nil, nil, nil, nil, 148, - nil, 148, nil, nil, nil, 148, nil, nil, nil, nil, - nil, nil, nil, nil, 148, nil, nil, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 149, nil, nil, nil, - 149, nil, 149, nil, 149, 149, nil, nil, nil, 149, - nil, nil, nil, nil, nil, nil, nil, nil, 149, nil, - 149, nil, nil, nil, 149, nil, nil, nil, nil, nil, - nil, nil, nil, 149, nil, nil, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 150, nil, nil, nil, 150, - nil, 150, nil, 150, 150, nil, nil, nil, 150, nil, - nil, nil, nil, nil, nil, nil, nil, 150, nil, 150, - nil, nil, nil, 150, nil, nil, nil, nil, nil, nil, - nil, nil, 150, nil, nil, 150, 150, 150, 150, 150, - 150, 150, 150, 150, 151, nil, nil, nil, 151, nil, - 151, nil, 151, 151, nil, nil, nil, 151, nil, nil, - nil, nil, nil, nil, nil, nil, 151, nil, 151, nil, - nil, nil, 151, nil, nil, nil, nil, nil, nil, nil, - nil, 151, nil, nil, 151, 151, 151, 151, 151, 151, - 151, 151, 151, 152, nil, nil, nil, 152, nil, 152, - nil, 152, 152, nil, nil, nil, 152, nil, nil, nil, - nil, nil, nil, nil, nil, 152, nil, 152, nil, nil, - nil, 152, nil, nil, nil, nil, nil, nil, nil, nil, - 152, nil, nil, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 153, nil, nil, nil, 153, nil, 153, nil, - 153, 153, nil, nil, nil, 153, nil, nil, nil, nil, - nil, nil, nil, nil, 153, nil, 153, nil, nil, nil, - 153, nil, nil, nil, nil, nil, nil, nil, nil, 153, - nil, nil, 153, 153, 153, 153, 153, 153, 153, 153, - 153, 154, nil, nil, nil, 154, nil, 154, nil, 154, - 154, nil, nil, nil, 154, nil, nil, nil, nil, nil, - nil, nil, nil, 154, nil, 154, nil, nil, nil, 154, - nil, nil, nil, nil, nil, nil, nil, nil, 154, nil, - nil, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 155, nil, nil, nil, 155, nil, 155, nil, 155, 155, - nil, nil, nil, 155, nil, nil, nil, nil, nil, nil, - nil, nil, 155, nil, 155, nil, nil, nil, 155, nil, - nil, nil, nil, nil, nil, nil, nil, 155, nil, nil, - 155, 155, 155, 155, 155, 155, 155, 155, 155, 156, - nil, nil, nil, 156, nil, 156, nil, 156, 156, nil, - nil, nil, 156, nil, nil, nil, nil, nil, nil, nil, - nil, 156, nil, 156, nil, nil, nil, 156, nil, nil, - nil, nil, nil, nil, nil, nil, 156, nil, nil, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 157, nil, - nil, nil, 157, nil, 157, nil, 157, 157, nil, nil, - nil, 157, nil, nil, nil, nil, nil, nil, nil, nil, - 157, nil, 157, nil, nil, nil, 157, nil, nil, nil, - nil, nil, nil, nil, nil, 157, nil, nil, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 158, nil, nil, - nil, 158, nil, 158, nil, 158, 158, nil, nil, nil, - 158, nil, nil, nil, nil, nil, nil, nil, nil, 158, - nil, 158, nil, nil, nil, 158, nil, nil, nil, nil, - nil, nil, nil, nil, 158, nil, nil, 158, 158, 158, - 158, 158, 158, 158, 158, 158, 159, nil, nil, nil, - 159, nil, 159, nil, 159, 159, nil, nil, nil, 159, - nil, nil, nil, nil, nil, nil, nil, nil, 159, nil, - 159, nil, nil, nil, 159, nil, nil, nil, nil, nil, - nil, nil, nil, 159, nil, nil, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 160, nil, nil, nil, 160, - nil, 160, nil, 160, 160, nil, nil, nil, 160, nil, - nil, nil, nil, nil, nil, nil, nil, 160, nil, 160, - nil, nil, nil, 160, nil, nil, nil, nil, nil, nil, - nil, nil, 160, nil, nil, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 161, nil, nil, nil, 161, nil, - 161, nil, 161, 161, nil, nil, nil, 161, nil, nil, - nil, nil, nil, nil, nil, nil, 161, nil, 161, nil, - nil, nil, 161, nil, nil, nil, nil, nil, nil, nil, - nil, 161, nil, nil, 161, 161, 161, 161, 161, 161, - 161, 161, 161, 162, nil, nil, nil, 162, nil, 162, - nil, 162, 162, nil, nil, nil, 162, nil, nil, nil, - nil, nil, nil, nil, nil, 162, nil, 162, nil, nil, - nil, 162, nil, nil, nil, nil, nil, nil, nil, nil, - 162, nil, nil, 162, 162, 162, 162, 162, 162, 162, - 162, 162, 163, nil, nil, nil, 163, nil, 163, nil, - 163, 163, nil, nil, nil, 163, nil, nil, nil, nil, - nil, nil, nil, nil, 163, nil, 163, nil, nil, nil, - 163, nil, nil, nil, nil, nil, nil, nil, nil, 163, - nil, nil, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 164, nil, nil, nil, 164, nil, 164, nil, 164, - 164, nil, nil, nil, 164, nil, nil, nil, nil, nil, - nil, nil, nil, 164, nil, 164, nil, nil, nil, 164, - nil, nil, nil, nil, nil, nil, nil, nil, 164, nil, - nil, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 165, nil, nil, nil, 165, nil, 165, nil, 165, 165, - nil, nil, nil, 165, nil, nil, nil, nil, nil, nil, - nil, nil, 165, nil, 165, nil, nil, nil, 165, nil, - nil, nil, nil, nil, nil, nil, nil, 165, nil, nil, - 165, 165, 165, 165, 165, 165, 165, 165, 165, 166, - nil, nil, nil, 166, nil, 166, nil, 166, 166, nil, - nil, nil, 166, nil, nil, nil, nil, nil, nil, nil, - nil, 166, nil, 166, nil, nil, nil, 166, nil, nil, - nil, nil, nil, nil, nil, nil, 166, nil, nil, 166, - 166, 166, 166, 166, 166, 166, 166, 166, 192, nil, - nil, nil, 192, nil, 192, nil, 192, 192, nil, nil, - nil, 192, nil, nil, nil, nil, nil, nil, nil, nil, - 192, nil, 192, nil, nil, nil, 192, nil, nil, nil, - nil, nil, nil, nil, nil, 192, nil, nil, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 195, nil, nil, - nil, 195, nil, 195, nil, 195, 195, nil, nil, nil, - 195, nil, nil, nil, nil, nil, nil, nil, nil, 195, - nil, 195, nil, nil, nil, 195, nil, nil, nil, nil, - nil, nil, nil, nil, 195, nil, nil, 195, 195, 195, - 195, 195, 195, 195, 195, 195, 253, nil, nil, nil, - 253, nil, 253, nil, 253, 253, nil, nil, nil, 253, - nil, nil, nil, nil, nil, nil, nil, nil, 253, nil, - 253, nil, nil, nil, 253, nil, nil, nil, nil, nil, - nil, nil, 253, 253, nil, nil, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 254, nil, nil, nil, 254, - nil, 254, nil, 254, 254, nil, nil, nil, 254, nil, - nil, nil, nil, nil, nil, nil, nil, 254, nil, 254, - nil, nil, nil, 254, nil, nil, nil, nil, nil, nil, - nil, 254, 254, nil, nil, 254, 254, 254, 254, 254, - 254, 254, 254, 254, 255, nil, nil, nil, 255, nil, - 255, nil, 255, 255, nil, nil, nil, 255, nil, nil, - nil, nil, nil, nil, nil, nil, 255, nil, 255, nil, - nil, nil, 255, nil, nil, nil, nil, nil, nil, nil, - 255, 255, nil, nil, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 258, nil, nil, nil, 258, nil, 258, - nil, 258, 258, nil, nil, nil, 258, nil, nil, nil, - nil, nil, nil, nil, nil, 258, nil, 258, nil, nil, - nil, 258, nil, nil, nil, nil, nil, nil, nil, 258, - 258, nil, nil, 258, 258, 258, 258, 258, 258, 258, - 258, 258, 260, nil, nil, nil, 260, nil, 260, nil, - 260, 260, nil, nil, nil, 260, nil, nil, nil, nil, - nil, nil, nil, nil, 260, nil, 260, nil, nil, nil, - 260, nil, nil, nil, nil, nil, nil, nil, nil, 260, - nil, nil, 260, 260, 260, 260, 260, 260, 260, 260, - 260, 262, nil, nil, nil, 262, nil, 262, nil, 262, - 262, nil, nil, nil, 262, nil, nil, nil, nil, nil, - nil, nil, nil, 262, nil, 262, nil, nil, nil, 262, - nil, nil, nil, nil, nil, nil, nil, nil, 262, nil, - nil, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 267, nil, nil, nil, 267, nil, 267, nil, 267, 267, - nil, nil, nil, 267, nil, nil, nil, nil, nil, nil, - nil, nil, 267, nil, 267, nil, nil, nil, 267, nil, - nil, nil, nil, nil, nil, nil, 267, 267, nil, nil, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 268, - nil, nil, nil, 268, nil, 268, nil, 268, 268, nil, - nil, nil, 268, nil, nil, nil, nil, nil, nil, nil, - nil, 268, nil, 268, nil, nil, nil, 268, nil, nil, - nil, nil, nil, nil, nil, 268, 268, nil, nil, 268, - 268, 268, 268, 268, 268, 268, 268, 268, 49, 49, - 49, 49, 49, 49, 49, 49, 49, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 241, 241, 241, 241, - 241, 241, 241, 241, 241, 241, 241, nil, nil, nil, - 241, nil, nil, nil, 49, 49, nil, nil, nil, 49, - nil, nil, nil, 79, 79, nil, nil, nil, 79, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, 76, 76, 76, 76, 76, 76, 76, 76, - 76, 76, nil, nil, nil, 76, nil, nil, nil, nil, - nil, nil, nil, 76, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 135, 135, 135, nil, nil, nil, - 135, nil, nil, nil, nil, nil, nil, nil, 135, 264, - 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, - 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, - 264, 264, nil, nil, nil, 264, nil, nil, nil, nil, - nil, nil, nil, 264, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, - 285, 285, 285, 285, 285, 285, 285, nil, nil, nil, - 285, nil, nil, nil, nil, nil, nil, nil, 285, 168, - 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, - 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, - 168, 168, nil, nil, nil, 168, nil, nil, nil, nil, - nil, nil, 168, 194, 194, 194, 194, 194, 194, 194, - 194, 194, 194, 194, 194, 194, 194, 194, 194, 194, - 194, 194, 194, 194, 194, 194, nil, nil, nil, 194, - nil, nil, nil, nil, nil, nil, 194, 196, 196, 196, - 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, - 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, - nil, nil, nil, 196, nil, nil, nil, nil, nil, nil, - 196, 261, 261, 261, 261, 261, 261, 261, 261, 261, - 261, 261, 261, 261, 261, 261, 261, 261, 261, 261, - 261, 261, 261, 261, nil, nil, nil, 261, nil, nil, - nil, nil, nil, nil, 261, 287, 287, 287, 287, 287, - 287, 287, 287, 287, 287, 287, 287, 287, 287, 287, - 287, 287, 287, 287, 287, 287, 287, 287, nil, nil, - nil, 287, 0, 0, 0, 0, 0, nil, 287, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, nil, - 0, 0, 0, 0, nil, 0, nil, 0, 3, 3, - 3, 3, 3, nil, 0, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, nil, 3, 3, 3, 3, - nil, 3, nil, 3, 43, 43, 43, nil, nil, nil, - 3, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 43, nil, 43, nil, 43, - 47, 47, 47, nil, nil, nil, 43, 47, 47, 47, - 47, 47, 47, 47, 47, 47, 47, nil, 47, 47, - 47, 47, nil, 47, nil, 47, 108, 108, 108, nil, - nil, nil, 47, 108, 108, 108, 108, 108, 108, 108, - 108, 108, 108, nil, 108, 108, 108, 108, nil, 108, - nil, 108, 263, 263, 263, nil, nil, nil, 108, 263, - 263, 263, 263, 263, 263, 263, 263, 263, 263, nil, - 263, 263, 263, 263, nil, 263, nil, 263, 265, 265, - 265, nil, nil, nil, 263, 265, 265, 265, 265, 265, - 265, 265, 265, 265, 265, nil, 265, 265, 265, 265, - nil, 265, nil, 265, 286, 286, 286, nil, nil, nil, - 265, 286, 286, 286, 286, 286, 286, 286, 286, 286, - 286, nil, 286, 286, 286, 286, nil, 286, nil, 286, - 299, 299, 299, nil, nil, nil, 286, 299, 299, 299, - 299, 299, 299, 299, 299, 299, 299, nil, 299, 299, - 299, 299, nil, 299, nil, 299, 300, 300, 300, nil, - nil, nil, 299, 300, 300, 300, 300, 300, 300, 300, - 300, 300, 300, nil, 300, 300, 300, 300, nil, 300, - nil, 300, 306, 306, 306, nil, nil, nil, 300, 306, - 306, 306, 306, 306, 306, 306, 306, 306, 306, nil, - 306, 306, 306, 306, nil, 306, nil, 306, nil, nil, - nil, nil, nil, nil, 306, 180, 180, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 180, nil, nil, - nil, 180, 197, 197, 197, 197, 197, 197, 197, 197, - 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, - 197, 197, 197, 197, 197, nil, nil, nil, 197, 199, - 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, nil, nil, nil, 199, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 200, 200, 200, 200, nil, - nil, nil, 200, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, nil, nil, nil, 201, - 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, nil, nil, nil, 202, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - nil, nil, nil, 203, 204, 204, 204, 204, 204, 204, - 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, - 204, 204, 204, 204, 204, 204, 204, nil, nil, nil, - 204, 205, 205, 205, 205, 205, 205, 205, 205, 205, - 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, - 205, 205, 205, 205, nil, nil, nil, 205, 206, 206, - 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, - 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, - 206, nil, nil, nil, 206, 209, 209, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 209, 209, 209, 209, 209, nil, nil, - nil, 209, 222, 222, 222, 222, 222, 222, 222, 222, - 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, - 222, 222, 222, 222, 222, nil, nil, nil, 222, 277, - 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, - 277, 277, 277, 277, 277, 277, 277, 277, 277, 277, - 277, 277, nil, nil, nil, 277, 279, 279, 279, 279, - 279, 279, 279, 279, 279, 279, 279, 279, 279, 279, - 279, 279, 279, 279, 279, 279, 279, 279, 279, nil, - nil, nil, 279, 281, 281, 281, 281, 281, 281, 281, - 281, 281, 281, 281, 281, 281, 281, 281, 281, 281, - 281, 281, 281, 281, 281, 281, nil, nil, nil, 281, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 291, 291, - 291, 291, 291, nil, nil, nil, 291, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 228, 228, nil, - nil, nil, 228, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, nil, nil, nil, 227, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, 242, nil, - nil, nil, 242, 243, 243, 243, 243, 243, 243, 243, - 243, 243, 243, 243, nil, nil, nil, 243, 244, 244, - 244, 244, 244, 244, 244, 244, 244, 244, 244, nil, - nil, nil, 244, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, nil, nil, nil, 245, 246, 246, - 246, 246, 246, 246, 246, 246, 246, 246, 246, nil, - nil, nil, 246, 247, 247, 247, 247, 247, 247, 247, - 247, 247, 247, 247, nil, nil, nil, 247, 248, 248, - 248, 248, 248, 248, 248, 248, 248, 248, 248, nil, - nil, nil, 248, 249, 249, 249, 249, 249, 249, 249, - 249, 249, 249, 249, nil, nil, nil, 249, 250, 250, - 250, 250, 250, 250, 250, 250, 250, 250, 250, nil, - nil, nil, 250, 237, 237, 237, 237, 237, 237, 237, - 237, 237, 237, nil, nil, nil, 237, 236, 236, 236, - 236, 236, 236, 236, 236, 236, nil, nil, nil, 236 ] - -racc_action_pointer = [ - 3034, 33, nil, 3060, 109, nil, nil, nil, nil, nil, - -5, -28, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, -2, 9, -6, 13, 47, nil, -17, 50, 59, - 65, -8, -7, 3086, 68, -18, 80, 3112, 81, 2716, - 35, 74, 15, nil, nil, nil, 128, nil, nil, nil, - nil, nil, 88, nil, nil, nil, 42, nil, nil, 88, - 133, 72, nil, -28, 30, 93, 2758, 96, nil, 2725, - 91, 140, 189, 238, nil, nil, nil, nil, nil, nil, - 86, nil, nil, nil, 84, 129, 287, nil, nil, nil, - nil, nil, nil, nil, nil, 108, 105, nil, 3138, 52, - 129, 138, 336, 111, 385, 434, 483, 532, 581, 630, - 679, 728, 777, 826, 875, nil, nil, nil, nil, nil, - 924, 139, 19, nil, 31, 2793, nil, 973, 168, 131, - 133, nil, nil, 1022, 1071, 1120, 1169, 1218, 1267, 1316, - 1365, 1414, 1463, 1512, 1561, 1610, 1659, 1708, 1757, 1806, - 1855, 1904, 1953, 2002, 2051, 2100, 2149, nil, 2898, 143, - 145, 148, 309, nil, 122, 124, 125, 128, 140, nil, - 3354, nil, 156, 154, nil, nil, nil, 179, nil, nil, - nil, nil, 2198, 171, 2932, 2247, 2966, 3381, nil, 3408, - 3435, 3462, 3489, 3516, 3543, 3570, 3597, 187, nil, 3624, - 10, nil, 168, -11, nil, nil, 190, 181, 187, nil, - 172, nil, 3651, nil, nil, 195, 197, 3810, 3785, 66, - 115, 207, 209, 221, 232, 256, 3972, 3959, 269, 303, - 319, 2713, 3825, 3840, 3855, 3870, 3885, 3900, 3915, 3930, - 3945, nil, 201, 2296, 2345, 2394, 178, nil, 2443, nil, - 2492, 3000, 2541, 3164, 2828, 3190, nil, 2590, 2639, nil, - 217, nil, nil, 3, nil, nil, 324, 3678, nil, 3705, - nil, 3732, nil, nil, nil, 2863, 3216, 3034, 213, nil, - nil, 3759, nil, nil, nil, nil, 206, 101, nil, 3242, - 3268, 358, 234, nil, nil, nil, 3294, nil ] - -racc_action_default = [ - -2, -172, -1, -4, -172, -6, -8, -9, -10, -11, - -172, -172, -15, -16, -17, -18, -19, -20, -22, -23, - -24, -25, -26, -27, -28, -29, -30, -31, -32, -33, - -34, -172, -172, -172, -172, -172, -40, -172, -172, -172, - -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, - -172, -172, -128, -160, -161, -162, -172, -3, -5, -7, - -21, -12, -172, -35, -36, -37, -172, -38, -39, -172, - -157, -159, -42, -172, -172, -172, -172, -172, -49, -108, - -172, -172, -172, -172, -93, -94, -105, -106, -107, -109, - -110, -111, -112, -113, -172, -172, -172, -163, -164, -165, - -166, -167, -169, -170, -171, -172, -172, -51, -154, -138, - -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, - -172, -172, -172, -172, -172, -72, -74, -71, -73, -127, - -172, -172, -142, 308, -172, -172, -41, -172, -172, -172, - -172, -45, -47, -172, -172, -172, -172, -172, -172, -172, - -172, -172, -172, -172, -172, -172, -172, -172, -172, -172, - -172, -172, -172, -172, -172, -172, -172, -48, -172, -77, - -81, -82, -172, -129, -172, -172, -172, -126, -172, -133, - -143, -144, -146, -172, -148, -50, -153, -172, -134, -135, - -136, -137, -172, -172, -172, -172, -172, -59, -60, -61, - -62, -63, -64, -65, -66, -67, -68, -172, -70, -116, - -128, -117, -131, -172, -140, -141, -172, -172, -172, -150, - -152, -46, -155, -156, -158, -172, -172, -76, -78, -79, - -80, -83, -84, -85, -86, -87, -88, -89, -90, -91, - -92, -95, -96, -97, -98, -99, -100, -101, -102, -103, - -104, -75, -172, -172, -172, -172, -125, -132, -172, -147, - -172, -172, -172, -172, -172, -172, -69, -172, -172, -139, - -172, -14, -149, -172, -43, -44, -172, -118, -121, -119, - -122, -120, -123, -124, -145, -172, -172, -172, -55, -57, - -58, -114, -115, -130, -13, -151, -172, -138, -53, -172, - -172, -172, -172, -54, -56, -168, -172, -52 ] - -racc_goto_table = [ - 31, 187, 62, 31, 175, 33, 77, 183, 33, 178, - 35, 139, 140, 35, 207, 38, 216, 106, 38, 60, - 69, 1, 271, 59, 75, 58, 215, 49, 70, 61, - 49, 108, 70, 174, 2, 113, 110, 57, nil, nil, - nil, nil, nil, 31, nil, nil, nil, 31, 33, nil, - nil, nil, 33, 35, nil, nil, nil, 35, 38, nil, - nil, nil, 38, nil, nil, nil, nil, nil, nil, nil, - 49, nil, nil, nil, 49, 294, nil, 127, 128, 198, - nil, 252, 186, nil, nil, 173, 176, nil, 211, nil, - nil, nil, nil, nil, nil, nil, 108, nil, nil, nil, - nil, 223, 193, nil, nil, nil, nil, nil, 31, 188, - nil, nil, nil, 33, 189, 210, nil, nil, 35, 190, - 60, 224, 214, 38, 191, 219, nil, nil, nil, 70, - nil, nil, nil, nil, nil, 49, 49, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 295, nil, nil, 293, nil, - nil, nil, nil, nil, nil, 175, nil, nil, nil, 284, - 283, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 296, nil, nil, nil, 302, - nil, nil, nil, nil, 174, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 272, - 305, nil, nil, nil, nil, nil, nil, 278, 280, 282, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 292, 211, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 176, nil, nil, - nil, 288, nil, 290, nil, nil, nil, nil, nil, 210, - nil, nil, nil, 31, 219, 31, nil, nil, 33, nil, - 33, nil, nil, 35, 298, 35, nil, nil, 38, 76, - 38, nil, nil, nil, nil, nil, 31, 303, 304, nil, - 49, 33, 49, nil, 307, nil, 35, 188, nil, 31, - 31, 38, 189, 135, 33, 33, 31, 190, nil, 35, - 35, 33, 191, 49, 38, 38, 35, 168, 169, 170, - 171, 38, nil, nil, 49, nil, 49, 49, nil, nil, - nil, nil, nil, 49, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 194, - nil, 196, 197, 199, 200, 201, 202, 203, 204, 205, - 206, 209, nil, nil, nil, nil, nil, 213, nil, nil, - nil, nil, nil, nil, 222, nil, nil, nil, nil, nil, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 261, - nil, nil, 264, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 277, 279, 281, nil, nil, nil, nil, 285, nil, 287, - nil, nil, nil, nil, 291, 209 ] - -racc_goto_check = [ - 30, 39, 9, 30, 43, 31, 37, 53, 31, 49, - 32, 35, 35, 32, 41, 34, 10, 38, 34, 18, - 33, 1, 11, 5, 33, 4, 50, 40, 9, 5, - 40, 6, 9, 35, 2, 6, 9, 2, nil, nil, - nil, nil, nil, 30, nil, nil, nil, 30, 31, nil, - nil, nil, 31, 32, nil, nil, nil, 32, 34, nil, - nil, nil, 34, nil, nil, nil, nil, nil, nil, nil, - 40, nil, nil, nil, 40, 11, nil, 40, 40, 37, - nil, 43, 38, nil, nil, 9, 9, nil, 37, nil, - nil, nil, nil, nil, nil, nil, 6, nil, nil, nil, - nil, 37, 9, nil, nil, nil, nil, nil, 30, 30, - nil, nil, nil, 31, 31, 9, nil, nil, 32, 32, - 18, 33, 9, 34, 34, 9, nil, nil, nil, 9, - nil, nil, nil, nil, nil, 40, 40, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 10, nil, nil, 41, nil, - nil, nil, nil, nil, nil, 43, nil, nil, nil, 53, - 49, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 43, nil, nil, nil, 39, - nil, nil, nil, nil, 35, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 9, - 43, nil, nil, nil, nil, nil, nil, 37, 37, 37, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 37, 37, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 9, nil, nil, - nil, 6, nil, 6, nil, nil, nil, nil, nil, 9, - nil, nil, nil, 30, 9, 30, nil, nil, 31, nil, - 31, nil, nil, 32, 6, 32, nil, nil, 34, 36, - 34, nil, nil, nil, nil, nil, 30, 6, 6, nil, - 40, 31, 40, nil, 6, nil, 32, 30, nil, 30, - 30, 34, 31, 36, 31, 31, 30, 32, nil, 32, - 32, 31, 34, 40, 34, 34, 32, 36, 36, 36, - 36, 34, nil, nil, 40, nil, 40, 40, nil, nil, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 36, - nil, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, nil, nil, nil, nil, nil, 36, nil, nil, - nil, nil, nil, nil, 36, nil, nil, nil, nil, nil, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, - 36, 36, 36, 36, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 36, - nil, nil, 36, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 36, 36, 36, nil, nil, nil, nil, 36, nil, 36, - nil, nil, nil, nil, 36, 36 ] - -racc_goto_pointer = [ - nil, 21, 34, nil, 21, 19, -12, nil, nil, -9, - -118, -195, nil, nil, nil, nil, nil, nil, 15, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 0, 5, 10, -17, 15, -62, 237, -36, -26, -108, - 27, -110, nil, -91, nil, nil, nil, nil, nil, -86, - -106, nil, nil, -89, nil, nil ] - -racc_goto_default = [ - nil, nil, nil, 3, 5, 6, 7, 8, 9, 52, - nil, 25, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, - 86, 88, 85, nil, 84, 87, 180, 181, nil, nil, - 79, nil, 89, 90, 91, 92, 93, 212, 177, nil, - 129, 132, 182, nil, 220, 71 ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 1, 80, :_reduce_1, - 0, 80, :_reduce_2, - 2, 81, :_reduce_3, - 1, 81, :_reduce_4, - 2, 82, :_reduce_5, - 1, 82, :_reduce_6, - 2, 82, :_reduce_7, - 1, 82, :_reduce_8, - 1, 82, :_reduce_9, - 1, 85, :_reduce_10, - 1, 85, :_reduce_11, - 2, 83, :_reduce_12, - 6, 84, :_reduce_13, - 5, 84, :_reduce_14, - 1, 86, :_reduce_15, - 1, 86, :_reduce_16, - 1, 86, :_reduce_17, - 1, 86, :_reduce_18, - 1, 86, :_reduce_19, - 1, 86, :_reduce_20, - 2, 86, :_reduce_21, - 1, 86, :_reduce_22, - 1, 86, :_reduce_23, - 1, 86, :_reduce_24, - 1, 86, :_reduce_25, - 1, 86, :_reduce_26, - 1, 86, :_reduce_27, - 1, 86, :_reduce_28, - 1, 87, :_reduce_29, - 1, 87, :_reduce_30, - 1, 87, :_reduce_31, - 1, 87, :_reduce_32, - 1, 87, :_reduce_33, - 1, 87, :_reduce_34, - 2, 91, :_reduce_35, - 2, 92, :_reduce_36, - 2, 93, :_reduce_37, - 2, 94, :_reduce_38, - 2, 95, :_reduce_39, - 1, 96, :_reduce_40, - 3, 97, :_reduce_41, - 2, 100, :_reduce_42, - 5, 98, :_reduce_43, - 5, 99, :_reduce_44, - 3, 101, :_reduce_45, - 4, 102, :_reduce_46, - 3, 103, :_reduce_47, - 3, 103, :_reduce_48, - 2, 103, :_reduce_49, - 3, 90, :_reduce_50, - 2, 90, :_reduce_51, - 9, 104, :_reduce_52, - 6, 105, :_reduce_53, - 7, 105, :_reduce_54, - 5, 106, :_reduce_55, - 7, 106, :_reduce_56, - 5, 107, :_reduce_57, - 5, 108, :_reduce_58, - 3, 109, :_reduce_59, - 3, 109, :_reduce_60, - 3, 109, :_reduce_61, - 3, 109, :_reduce_62, - 3, 109, :_reduce_63, - 3, 109, :_reduce_64, - 3, 109, :_reduce_65, - 3, 109, :_reduce_66, - 3, 109, :_reduce_67, - 3, 109, :_reduce_68, - 4, 110, :_reduce_69, - 3, 110, :_reduce_70, - 2, 111, :_reduce_71, - 2, 111, :_reduce_72, - 2, 113, :_reduce_73, - 2, 113, :_reduce_74, - 3, 115, :_reduce_75, - 3, 115, :_reduce_76, - 2, 115, :_reduce_77, - 3, 115, :_reduce_78, - 3, 115, :_reduce_79, - 3, 115, :_reduce_80, - 2, 115, :_reduce_81, - 2, 115, :_reduce_82, - 3, 115, :_reduce_83, - 3, 115, :_reduce_84, - 3, 115, :_reduce_85, - 3, 115, :_reduce_86, - 3, 115, :_reduce_87, - 3, 115, :_reduce_88, - 3, 115, :_reduce_89, - 3, 115, :_reduce_90, - 3, 115, :_reduce_91, - 3, 115, :_reduce_92, - 1, 115, :_reduce_93, - 1, 115, :_reduce_94, - 3, 115, :_reduce_95, - 3, 115, :_reduce_96, - 3, 115, :_reduce_97, - 3, 115, :_reduce_98, - 3, 115, :_reduce_99, - 3, 115, :_reduce_100, - 3, 115, :_reduce_101, - 3, 115, :_reduce_102, - 3, 115, :_reduce_103, - 3, 115, :_reduce_104, - 1, 115, :_reduce_105, - 1, 115, :_reduce_106, - 1, 115, :_reduce_107, - 1, 115, :_reduce_108, - 1, 115, :_reduce_109, - 1, 115, :_reduce_110, - 1, 115, :_reduce_111, - 1, 115, :_reduce_112, - 1, 115, :_reduce_113, - 3, 126, :_reduce_114, - 3, 126, :_reduce_115, - 1, 126, :_reduce_116, - 1, 126, :_reduce_117, - 3, 127, :_reduce_118, - 3, 127, :_reduce_119, - 3, 127, :_reduce_120, - 3, 127, :_reduce_121, - 3, 127, :_reduce_122, - 3, 127, :_reduce_123, - 3, 128, :_reduce_124, - 2, 128, :_reduce_125, - 1, 128, :_reduce_126, - 2, 119, :_reduce_127, - 1, 119, :_reduce_128, - 2, 116, :_reduce_129, - 3, 120, :_reduce_130, - 1, 120, :_reduce_131, - 3, 125, :_reduce_132, - 2, 125, :_reduce_133, - 1, 118, :_reduce_134, - 1, 118, :_reduce_135, - 1, 118, :_reduce_136, - 1, 118, :_reduce_137, - 0, 118, :_reduce_138, - 3, 130, :_reduce_139, - 2, 130, :_reduce_140, - 2, 129, :_reduce_141, - 1, 129, :_reduce_142, - 1, 131, :_reduce_143, - 1, 131, :_reduce_144, - 3, 132, :_reduce_145, - 1, 132, :_reduce_146, - 3, 124, :_reduce_147, - 2, 124, :_reduce_148, - 2, 133, :_reduce_149, - 1, 133, :_reduce_150, - 3, 89, :_reduce_151, - 1, 89, :_reduce_152, - 2, 117, :_reduce_153, - 1, 117, :_reduce_154, - 3, 134, :_reduce_155, - 3, 134, :_reduce_156, - 1, 134, :_reduce_157, - 3, 112, :_reduce_158, - 1, 112, :_reduce_159, - 1, 88, :_reduce_160, - 1, 88, :_reduce_161, - 1, 88, :_reduce_162, - 1, 122, :_reduce_163, - 1, 122, :_reduce_164, - 1, 122, :_reduce_165, - 1, 122, :_reduce_166, - 1, 122, :_reduce_167, - 7, 121, :_reduce_168, - 1, 114, :_reduce_169, - 1, 114, :_reduce_170, - 1, 123, :_reduce_171 ] - -racc_reduce_n = 172 - -racc_shift_n = 308 - -racc_token_table = { - false => 0, - :error => 1, - :ASS_EQ => 2, - :ADD_EQ => 3, - :SUB_EQ => 4, - :MUL_EQ => 5, - :DIV_EQ => 6, - :MOD_EQ => 7, - :SLL_EQ => 8, - :SRA_EQ => 9, - :SRL_EQ => 10, - :OR => 11, - :AND => 12, - :CMP_LT => 13, - :CMP_GT => 14, - :CMP_EQ => 15, - :CMP_NE => 16, - :CMP_GE => 17, - :CMP_LE => 18, - :SUBSTR_EQ => 19, - :SUBSTR_NE => 20, - :REGEX_EQ => 21, - :REGEX_NE => 22, - :BIT_OR => 23, - :BIT_XOR => 24, - :AMPERSAND => 25, - :BIT_SRA => 26, - :BIT_SRL => 27, - :BIT_SLL => 28, - :ADD => 29, - :SUB => 30, - :MUL => 31, - :DIV => 32, - :MOD => 33, - :NOT => 34, - :UMINUS => 35, - :BIT_NOT => 36, - :EXP => 37, - :INCR => 38, - :DECR => 39, - :COMMENT => 40, - :EXPORT => 41, - :FUNCTION => 42, - :LPAREN => 43, - :RPAREN => 44, - :SEMICOLON => 45, - :BREAK => 46, - :CONTINUE => 47, - :GLOBAL => 48, - :IMPORT => 49, - :INCLUDE => 50, - :LOCAL => 51, - :REP => 52, - :RETURN => 53, - :LBRACE => 54, - :RBRACE => 55, - :FOR => 56, - :FOREACH => 57, - :IN => 58, - :IF => 59, - :ELSE => 60, - :REPEAT => 61, - :UNTIL => 62, - :WHILE => 63, - :COLON => 64, - :COMMA => 65, - :AT_SIGN => 66, - :LBRACK => 67, - :RBRACK => 68, - :PERIOD => 69, - :IDENT => 70, - :INT_DEC => 71, - :INT_HEX => 72, - :INT_OCT => 73, - :FALSE => 74, - :TRUE => 75, - :DATA => 76, - :STRING => 77, - :UNDEF => 78 } - -racc_nt_base = 79 - -racc_use_result_var = false - -Racc_arg = [ - racc_action_table, - racc_action_check, - racc_action_default, - racc_action_pointer, - racc_goto_table, - racc_goto_check, - racc_goto_default, - racc_goto_pointer, - racc_nt_base, - racc_reduce_table, - racc_token_table, - racc_shift_n, - racc_reduce_n, - racc_use_result_var ] - -Racc_token_to_s_table = [ - "$end", - "error", - "ASS_EQ", - "ADD_EQ", - "SUB_EQ", - "MUL_EQ", - "DIV_EQ", - "MOD_EQ", - "SLL_EQ", - "SRA_EQ", - "SRL_EQ", - "OR", - "AND", - "CMP_LT", - "CMP_GT", - "CMP_EQ", - "CMP_NE", - "CMP_GE", - "CMP_LE", - "SUBSTR_EQ", - "SUBSTR_NE", - "REGEX_EQ", - "REGEX_NE", - "BIT_OR", - "BIT_XOR", - "AMPERSAND", - "BIT_SRA", - "BIT_SRL", - "BIT_SLL", - "ADD", - "SUB", - "MUL", - "DIV", - "MOD", - "NOT", - "UMINUS", - "BIT_NOT", - "EXP", - "INCR", - "DECR", - "COMMENT", - "EXPORT", - "FUNCTION", - "LPAREN", - "RPAREN", - "SEMICOLON", - "BREAK", - "CONTINUE", - "GLOBAL", - "IMPORT", - "INCLUDE", - "LOCAL", - "REP", - "RETURN", - "LBRACE", - "RBRACE", - "FOR", - "FOREACH", - "IN", - "IF", - "ELSE", - "REPEAT", - "UNTIL", - "WHILE", - "COLON", - "COMMA", - "AT_SIGN", - "LBRACK", - "RBRACK", - "PERIOD", - "IDENT", - "INT_DEC", - "INT_HEX", - "INT_OCT", - "FALSE", - "TRUE", - "DATA", - "STRING", - "UNDEF", - "$start", - "start", - "roots", - "root", - "export", - "function", - "statement", - "simple", - "compound", - "ident", - "params", - "block", - "assign", - "break", - "call", - "continue", - "decr", - "empty", - "global", - "import", - "include", - "incr", - "local", - "rep", - "return", - "for", - "foreach", - "if", - "repeat", - "while", - "assign_exp", - "call_exp", - "decr_exp", - "var_decls", - "incr_exp", - "string", - "expr", - "ref", - "statements", - "field", - "lval", - "args", - "ip", - "int", - "undef", - "list_expr", - "array_expr", - "arg", - "kv_pair", - "kv_pairs", - "indexes", - "index", - "list_elem", - "list_elems", - "param", - "var_decl" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'nasl.y', 61) - def _reduce_1(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 63) - def _reduce_2(val, _values) - [] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 67) - def _reduce_3(val, _values) - [val[0]] + val[1] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 69) - def _reduce_4(val, _values) - [val[0]] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 73) - def _reduce_5(val, _values) - c(*val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 75) - def _reduce_6(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 77) - def _reduce_7(val, _values) - c(*val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 79) - def _reduce_8(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 81) - def _reduce_9(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 85) - def _reduce_10(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 87) - def _reduce_11(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 95) - def _reduce_12(val, _values) - n(:Export, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 99) - def _reduce_13(val, _values) - n(:Function, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 101) - def _reduce_14(val, _values) - n(:Function, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 105) - def _reduce_15(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 107) - def _reduce_16(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 109) - def _reduce_17(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 111) - def _reduce_18(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 113) - def _reduce_19(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 115) - def _reduce_20(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 117) - def _reduce_21(val, _values) - c(*val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 119) - def _reduce_22(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 121) - def _reduce_23(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 123) - def _reduce_24(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 125) - def _reduce_25(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 127) - def _reduce_26(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 129) - def _reduce_27(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 131) - def _reduce_28(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 135) - def _reduce_29(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 137) - def _reduce_30(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 139) - def _reduce_31(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 141) - def _reduce_32(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 143) - def _reduce_33(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 145) - def _reduce_34(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 153) - def _reduce_35(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 157) - def _reduce_36(val, _values) - n(:Break, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 161) - def _reduce_37(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 165) - def _reduce_38(val, _values) - n(:Continue, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 169) - def _reduce_39(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 173) - def _reduce_40(val, _values) - n(:Empty, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 177) - def _reduce_41(val, _values) - n(:Global, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 181) - def _reduce_42(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 185) - def _reduce_43(val, _values) - n(:Import, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 189) - def _reduce_44(val, _values) - n(:Include, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 193) - def _reduce_45(val, _values) - n(:Local, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 197) - def _reduce_46(val, _values) - n(:Repetition, *val[0..-1]) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 201) - def _reduce_47(val, _values) - n(:Return, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 203) - def _reduce_48(val, _values) - n(:Return, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 205) - def _reduce_49(val, _values) - n(:Return, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 213) - def _reduce_50(val, _values) - n(:Block, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 215) - def _reduce_51(val, _values) - n(:Block, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 219) - def _reduce_52(val, _values) - n(:For, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 223) - def _reduce_53(val, _values) - n(:Foreach, val[0], val[1], val[3], val[5]) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 225) - def _reduce_54(val, _values) - n(:Foreach, val[0], val[2], val[4], val[6]) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 229) - def _reduce_55(val, _values) - n(:If, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 231) - def _reduce_56(val, _values) - n(:If, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 235) - def _reduce_57(val, _values) - n(:Repeat, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 239) - def _reduce_58(val, _values) - n(:While, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 247) - def _reduce_59(val, _values) - n(:Assignment, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 249) - def _reduce_60(val, _values) - n(:Assignment, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 251) - def _reduce_61(val, _values) - n(:Assignment, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 253) - def _reduce_62(val, _values) - n(:Assignment, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 255) - def _reduce_63(val, _values) - n(:Assignment, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 257) - def _reduce_64(val, _values) - n(:Assignment, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 259) - def _reduce_65(val, _values) - n(:Assignment, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 261) - def _reduce_66(val, _values) - n(:Assignment, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 263) - def _reduce_67(val, _values) - n(:Assignment, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 265) - def _reduce_68(val, _values) - n(:Assignment, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 269) - def _reduce_69(val, _values) - n(:Call, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 271) - def _reduce_70(val, _values) - n(:Call, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 275) - def _reduce_71(val, _values) - n(:Decrement, val[0]) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 277) - def _reduce_72(val, _values) - n(:Decrement, val[0]) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 281) - def _reduce_73(val, _values) - n(:Increment, val[0]) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 283) - def _reduce_74(val, _values) - n(:Increment, val[0]) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 287) - def _reduce_75(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 289) - def _reduce_76(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 291) - def _reduce_77(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 293) - def _reduce_78(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 295) - def _reduce_79(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 297) - def _reduce_80(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 299) - def _reduce_81(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 301) - def _reduce_82(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 303) - def _reduce_83(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 305) - def _reduce_84(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 307) - def _reduce_85(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 309) - def _reduce_86(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 311) - def _reduce_87(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 313) - def _reduce_88(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 315) - def _reduce_89(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 317) - def _reduce_90(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 319) - def _reduce_91(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 321) - def _reduce_92(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 323) - def _reduce_93(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 325) - def _reduce_94(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 327) - def _reduce_95(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 329) - def _reduce_96(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 331) - def _reduce_97(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 333) - def _reduce_98(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 335) - def _reduce_99(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 337) - def _reduce_100(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 339) - def _reduce_101(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 341) - def _reduce_102(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 343) - def _reduce_103(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 345) - def _reduce_104(val, _values) - n(:Expression, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 347) - def _reduce_105(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 349) - def _reduce_106(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 351) - def _reduce_107(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 353) - def _reduce_108(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 355) - def _reduce_109(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 357) - def _reduce_110(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 359) - def _reduce_111(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 361) - def _reduce_112(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 363) - def _reduce_113(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 371) - def _reduce_114(val, _values) - n(:Argument, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 373) - def _reduce_115(val, _values) - n(:Argument, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 375) - def _reduce_116(val, _values) - n(:Argument, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 377) - def _reduce_117(val, _values) - n(:Argument, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 381) - def _reduce_118(val, _values) - n(:KeyValuePair, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 383) - def _reduce_119(val, _values) - n(:KeyValuePair, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 385) - def _reduce_120(val, _values) - n(:KeyValuePair, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 387) - def _reduce_121(val, _values) - n(:KeyValuePair, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 389) - def _reduce_122(val, _values) - n(:KeyValuePair, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 391) - def _reduce_123(val, _values) - n(:KeyValuePair, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 395) - def _reduce_124(val, _values) - [val[0]] + val[2] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 397) - def _reduce_125(val, _values) - [val[0]] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 399) - def _reduce_126(val, _values) - [val[0]] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 403) - def _reduce_127(val, _values) - n(:Lvalue, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 405) - def _reduce_128(val, _values) - n(:Lvalue, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 409) - def _reduce_129(val, _values) - n(:Reference, val[1]) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 417) - def _reduce_130(val, _values) - [val[0]] + val[2] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 419) - def _reduce_131(val, _values) - [val[0]] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 423) - def _reduce_132(val, _values) - n(:Array, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 425) - def _reduce_133(val, _values) - n(:Array, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 429) - def _reduce_134(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 431) - def _reduce_135(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 433) - def _reduce_136(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 435) - def _reduce_137(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 437) - def _reduce_138(val, _values) - nil - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 441) - def _reduce_139(val, _values) - val[1] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 443) - def _reduce_140(val, _values) - val[1] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 447) - def _reduce_141(val, _values) - [val[0]] + val[1] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 449) - def _reduce_142(val, _values) - [val[0]] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 453) - def _reduce_143(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 455) - def _reduce_144(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 459) - def _reduce_145(val, _values) - [val[0]] + val[2] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 461) - def _reduce_146(val, _values) - [val[0]] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 465) - def _reduce_147(val, _values) - n(:List, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 467) - def _reduce_148(val, _values) - n(:List, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 471) - def _reduce_149(val, _values) - n(:Parameter, val[1], 'reference') - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 473) - def _reduce_150(val, _values) - n(:Parameter, val[0], 'value') - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 477) - def _reduce_151(val, _values) - [val[0]] + val[2] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 479) - def _reduce_152(val, _values) - [val[0]] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 483) - def _reduce_153(val, _values) - [val[0]] + val[1] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 485) - def _reduce_154(val, _values) - [val[0]] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 489) - def _reduce_155(val, _values) - n(:Assignment, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 491) - def _reduce_156(val, _values) - n(:Assignment, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 493) - def _reduce_157(val, _values) - val[0] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 497) - def _reduce_158(val, _values) - [val[0]] + val[2] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 499) - def _reduce_159(val, _values) - [val[0]] - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 507) - def _reduce_160(val, _values) - n(:Identifier, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 509) - def _reduce_161(val, _values) - n(:Identifier, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 511) - def _reduce_162(val, _values) - n(:Identifier, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 515) - def _reduce_163(val, _values) - n(:Integer, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 517) - def _reduce_164(val, _values) - n(:Integer, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 519) - def _reduce_165(val, _values) - n(:Integer, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 521) - def _reduce_166(val, _values) - n(:Integer, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 523) - def _reduce_167(val, _values) - n(:Integer, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 527) - def _reduce_168(val, _values) - n(:Ip, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 530) - def _reduce_169(val, _values) - n(:String, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 532) - def _reduce_170(val, _values) - n(:String, *val) - end -.,., - -module_eval(<<'.,.,', 'nasl.y', 536) - def _reduce_171(val, _values) - n(:Undefined, *val) - end -.,., - -def _reduce_none(val, _values) - val[0] -end - - end # class Grammar -end # module Nasl - - diff --git a/test/racc/regress/nokogiri-css b/test/racc/regress/nokogiri-css deleted file mode 100644 index bc2faf8702..0000000000 --- a/test/racc/regress/nokogiri-css +++ /dev/null @@ -1,836 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' - - -require 'nokogiri/css/parser_extras' -module Nokogiri - module CSS - class Parser < Racc::Parser -##### State transition tables begin ### - -racc_action_table = [ - 24, 93, 56, 57, 33, 55, 94, 23, 24, 22, - 12, 93, 33, 27, 35, 52, 44, 22, -23, 25, - 45, 98, 23, 33, 26, 18, 20, 25, 27, -23, - 23, 24, 26, 18, 20, 33, 27, 11, 39, 24, - 22, 23, 74, 33, 18, 91, 90, 27, 22, 12, - 25, 24, -23, 23, 85, 26, 18, 20, 25, 27, - 66, 23, 24, 26, 18, 20, 33, 27, 101, 100, - 51, 22, 86, 88, 24, 26, 56, 87, 89, 60, - 92, 25, 95, 46, 23, 49, 26, 18, 20, 90, - 27, 33, 33, 51, 96, 99, 56, 58, 26, 60, - 102, 103, 33, 33, 33, 93, 39, 39, 105, 23, - 23, 108, 18, 18, 20, 27, 27, 39, 39, 39, - 23, 23, 23, 18, 18, 18, 27, 27, 27, 33, - 33, 56, 87, 109, 60, 22, 56, 87, nil, 60, - 33, nil, nil, nil, 39, 39, nil, 23, 23, nil, - 18, 18, 20, 27, 27, 39, 82, 83, 23, 56, - 87, 18, 60, nil, 27, 82, 83, 78, 79, 80, - nil, 81, nil, nil, nil, 77, 78, 79, 80, nil, - 81, 4, 5, 10, 77, 4, 5, 43, nil, nil, - nil, 6, nil, 8, 7, 6, nil, 8, 7, 4, - 5, 10, nil, nil, nil, nil, nil, nil, nil, 6, - nil, 8, 7 ] - -racc_action_check = [ - 3, 58, 24, 24, 3, 24, 57, 15, 9, 3, - 64, 57, 9, 15, 11, 24, 18, 9, 58, 3, - 21, 64, 3, 14, 3, 3, 3, 9, 3, 22, - 9, 12, 9, 9, 9, 12, 9, 1, 14, 42, - 12, 14, 45, 42, 14, 55, 55, 14, 42, 1, - 12, 27, 46, 12, 49, 12, 12, 12, 42, 12, - 27, 42, 43, 42, 42, 42, 43, 42, 76, 76, - 27, 43, 50, 53, 23, 27, 51, 51, 54, 51, - 56, 43, 59, 23, 43, 23, 43, 43, 43, 60, - 43, 28, 25, 23, 61, 75, 25, 25, 23, 25, - 84, 86, 29, 30, 31, 87, 28, 25, 91, 28, - 25, 94, 28, 25, 25, 28, 25, 29, 30, 31, - 29, 30, 31, 29, 30, 31, 29, 30, 31, 32, - 39, 90, 90, 105, 90, 39, 92, 92, nil, 92, - 62, nil, nil, nil, 32, 39, nil, 32, 39, nil, - 32, 39, 39, 32, 39, 62, 47, 47, 62, 93, - 93, 62, 93, nil, 62, 48, 48, 47, 47, 47, - nil, 47, nil, nil, nil, 47, 48, 48, 48, nil, - 48, 0, 0, 0, 48, 17, 17, 17, nil, nil, - nil, 0, nil, 0, 0, 17, nil, 17, 17, 26, - 26, 26, nil, nil, nil, nil, nil, nil, nil, 26, - nil, 26, 26 ] - -racc_action_pointer = [ - 174, 37, nil, -2, nil, nil, nil, nil, nil, 6, - nil, 14, 29, nil, 17, -17, nil, 178, 5, nil, - nil, -9, 0, 72, -8, 86, 192, 49, 85, 96, - 97, 98, 123, nil, nil, nil, nil, nil, nil, 124, - nil, nil, 37, 60, nil, 31, 23, 153, 162, 29, - 43, 66, nil, 50, 55, 34, 68, -1, -11, 59, - 77, 71, 134, nil, -2, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 70, 58, nil, nil, nil, - nil, nil, nil, nil, 75, nil, 90, 93, nil, nil, - 121, 101, 126, 149, 98, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 120, nil, nil, nil, nil ] - -racc_action_default = [ - -74, -75, -2, -24, -4, -5, -6, -7, -8, -24, - -73, -75, -24, -3, -47, -10, -13, -17, -75, -19, - -20, -75, -22, -24, -75, -24, -74, -75, -53, -54, - -55, -56, -57, -58, -14, 110, -1, -9, -46, -24, - -11, -12, -24, -24, -18, -75, -29, -61, -61, -75, - -75, -75, -30, -75, -75, -38, -39, -40, -22, -75, - -38, -75, -70, -72, -75, -44, -45, -48, -49, -50, - -51, -52, -15, -16, -21, -75, -75, -62, -63, -64, - -65, -66, -67, -68, -75, -27, -75, -40, -31, -32, - -75, -43, -75, -75, -75, -33, -69, -71, -34, -25, - -59, -60, -26, -28, -35, -75, -36, -37, -42, -41 ] - -racc_goto_table = [ - 53, 38, 13, 1, 42, 48, 62, 37, 34, 65, - 40, 36, 63, 75, 84, 67, 68, 69, 70, 71, - 62, 41, 50, 47, 54, nil, 63, nil, nil, 64, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 72, 73, nil, nil, nil, nil, nil, nil, 97, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 104, nil, 106, 107 ] - -racc_goto_check = [ - 18, 12, 2, 1, 5, 9, 7, 8, 2, 9, - 10, 2, 12, 17, 17, 12, 12, 12, 12, 12, - 7, 11, 15, 16, 19, nil, 12, nil, nil, 1, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 2, 2, nil, nil, nil, nil, nil, nil, 12, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 18, nil, 18, 18 ] - -racc_goto_pointer = [ - nil, 3, -1, nil, nil, -13, nil, -19, -7, -18, - -5, 6, -13, nil, nil, -1, 0, -34, -24, 0, - nil, nil, nil, nil ] - -racc_goto_default = [ - nil, nil, nil, 2, 3, 9, 17, 14, nil, 15, - 31, 30, 16, 29, 19, 21, nil, nil, 59, nil, - 28, 32, 76, 61 ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 3, 32, :_reduce_1, - 1, 32, :_reduce_2, - 2, 32, :_reduce_3, - 1, 36, :_reduce_4, - 1, 36, :_reduce_5, - 1, 36, :_reduce_6, - 1, 36, :_reduce_7, - 1, 36, :_reduce_8, - 2, 37, :_reduce_9, - 1, 37, :_reduce_none, - 2, 37, :_reduce_11, - 2, 37, :_reduce_12, - 1, 37, :_reduce_13, - 2, 34, :_reduce_14, - 3, 33, :_reduce_15, - 3, 33, :_reduce_16, - 1, 33, :_reduce_none, - 2, 44, :_reduce_18, - 1, 38, :_reduce_none, - 1, 38, :_reduce_20, - 3, 45, :_reduce_21, - 1, 45, :_reduce_22, - 1, 46, :_reduce_23, - 0, 46, :_reduce_none, - 4, 42, :_reduce_25, - 4, 42, :_reduce_26, - 3, 42, :_reduce_27, - 3, 47, :_reduce_28, - 1, 47, :_reduce_29, - 2, 40, :_reduce_30, - 3, 40, :_reduce_31, - 3, 40, :_reduce_32, - 3, 40, :_reduce_33, - 3, 40, :_reduce_34, - 3, 49, :_reduce_35, - 3, 49, :_reduce_36, - 3, 49, :_reduce_37, - 1, 49, :_reduce_none, - 1, 49, :_reduce_none, - 1, 49, :_reduce_40, - 4, 50, :_reduce_41, - 3, 50, :_reduce_42, - 2, 50, :_reduce_43, - 2, 41, :_reduce_44, - 2, 41, :_reduce_45, - 1, 39, :_reduce_none, - 0, 39, :_reduce_none, - 2, 43, :_reduce_48, - 2, 43, :_reduce_49, - 2, 43, :_reduce_50, - 2, 43, :_reduce_51, - 2, 43, :_reduce_52, - 1, 43, :_reduce_none, - 1, 43, :_reduce_none, - 1, 43, :_reduce_none, - 1, 43, :_reduce_none, - 1, 43, :_reduce_none, - 1, 51, :_reduce_58, - 2, 48, :_reduce_59, - 2, 48, :_reduce_60, - 0, 48, :_reduce_none, - 1, 53, :_reduce_62, - 1, 53, :_reduce_63, - 1, 53, :_reduce_64, - 1, 53, :_reduce_65, - 1, 53, :_reduce_66, - 1, 53, :_reduce_67, - 1, 53, :_reduce_68, - 3, 52, :_reduce_69, - 1, 54, :_reduce_none, - 2, 54, :_reduce_none, - 1, 54, :_reduce_none, - 1, 35, :_reduce_none, - 0, 35, :_reduce_none ] - -racc_reduce_n = 75 - -racc_shift_n = 110 - -racc_token_table = { - false => 0, - :error => 1, - :FUNCTION => 2, - :INCLUDES => 3, - :DASHMATCH => 4, - :LBRACE => 5, - :HASH => 6, - :PLUS => 7, - :GREATER => 8, - :S => 9, - :STRING => 10, - :IDENT => 11, - :COMMA => 12, - :NUMBER => 13, - :PREFIXMATCH => 14, - :SUFFIXMATCH => 15, - :SUBSTRINGMATCH => 16, - :TILDE => 17, - :NOT_EQUAL => 18, - :SLASH => 19, - :DOUBLESLASH => 20, - :NOT => 21, - :EQUAL => 22, - :RPAREN => 23, - :LSQUARE => 24, - :RSQUARE => 25, - :HAS => 26, - "." => 27, - "*" => 28, - "|" => 29, - ":" => 30 } - -racc_nt_base = 31 - -racc_use_result_var = true - -Racc_arg = [ - racc_action_table, - racc_action_check, - racc_action_default, - racc_action_pointer, - racc_goto_table, - racc_goto_check, - racc_goto_default, - racc_goto_pointer, - racc_nt_base, - racc_reduce_table, - racc_token_table, - racc_shift_n, - racc_reduce_n, - racc_use_result_var ] - -Racc_token_to_s_table = [ - "$end", - "error", - "FUNCTION", - "INCLUDES", - "DASHMATCH", - "LBRACE", - "HASH", - "PLUS", - "GREATER", - "S", - "STRING", - "IDENT", - "COMMA", - "NUMBER", - "PREFIXMATCH", - "SUFFIXMATCH", - "SUBSTRINGMATCH", - "TILDE", - "NOT_EQUAL", - "SLASH", - "DOUBLESLASH", - "NOT", - "EQUAL", - "RPAREN", - "LSQUARE", - "RSQUARE", - "HAS", - "\".\"", - "\"*\"", - "\"|\"", - "\":\"", - "$start", - "selector", - "simple_selector_1toN", - "prefixless_combinator_selector", - "optional_S", - "combinator", - "simple_selector", - "element_name", - "hcap_0toN", - "function", - "pseudo", - "attrib", - "hcap_1toN", - "class", - "namespaced_ident", - "namespace", - "attrib_name", - "attrib_val_0or1", - "expr", - "nth", - "attribute_id", - "negation", - "eql_incl_dash", - "negation_arg" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'nokogiri-css.y', 9) - def _reduce_1(val, _values, result) - result = [val.first, val.last].flatten - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 11) - def _reduce_2(val, _values, result) - result = val.flatten - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 12) - def _reduce_3(val, _values, result) - result = [val.last].flatten - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 15) - def _reduce_4(val, _values, result) - result = :DIRECT_ADJACENT_SELECTOR - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 16) - def _reduce_5(val, _values, result) - result = :CHILD_SELECTOR - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 17) - def _reduce_6(val, _values, result) - result = :FOLLOWING_SELECTOR - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 18) - def _reduce_7(val, _values, result) - result = :DESCENDANT_SELECTOR - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 19) - def _reduce_8(val, _values, result) - result = :CHILD_SELECTOR - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 23) - def _reduce_9(val, _values, result) - result = if val[1].nil? - val.first - else - Node.new(:CONDITIONAL_SELECTOR, [val.first, val[1]]) - end - - result - end -.,., - -# reduce 10 omitted - -module_eval(<<'.,.,', 'nokogiri-css.y', 31) - def _reduce_11(val, _values, result) - result = Node.new(:CONDITIONAL_SELECTOR, val) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 34) - def _reduce_12(val, _values, result) - result = Node.new(:CONDITIONAL_SELECTOR, val) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 37) - def _reduce_13(val, _values, result) - result = Node.new(:CONDITIONAL_SELECTOR, - [Node.new(:ELEMENT_NAME, ['*']), val.first] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 44) - def _reduce_14(val, _values, result) - result = Node.new(val.first, [nil, val.last]) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 49) - def _reduce_15(val, _values, result) - result = Node.new(val[1], [val.first, val.last]) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 52) - def _reduce_16(val, _values, result) - result = Node.new(:DESCENDANT_SELECTOR, [val.first, val.last]) - - result - end -.,., - -# reduce 17 omitted - -module_eval(<<'.,.,', 'nokogiri-css.y', 57) - def _reduce_18(val, _values, result) - result = Node.new(:CLASS_CONDITION, [val[1]]) - result - end -.,., - -# reduce 19 omitted - -module_eval(<<'.,.,', 'nokogiri-css.y', 61) - def _reduce_20(val, _values, result) - result = Node.new(:ELEMENT_NAME, val) - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 65) - def _reduce_21(val, _values, result) - result = Node.new(:ELEMENT_NAME, - [[val.first, val.last].compact.join(':')] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 70) - def _reduce_22(val, _values, result) - name = @namespaces.key?('xmlns') ? "xmlns:#{val.first}" : val.first - result = Node.new(:ELEMENT_NAME, [name]) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 75) - def _reduce_23(val, _values, result) - result = val[0] - result - end -.,., - -# reduce 24 omitted - -module_eval(<<'.,.,', 'nokogiri-css.y', 80) - def _reduce_25(val, _values, result) - result = Node.new(:ATTRIBUTE_CONDITION, - [val[1]] + (val[2] || []) - ) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 85) - def _reduce_26(val, _values, result) - result = Node.new(:ATTRIBUTE_CONDITION, - [val[1]] + (val[2] || []) - ) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 90) - def _reduce_27(val, _values, result) - # Non standard, but hpricot supports it. - result = Node.new(:PSEUDO_CLASS, - [Node.new(:FUNCTION, ['nth-child(', val[1]])] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 98) - def _reduce_28(val, _values, result) - result = Node.new(:ELEMENT_NAME, - [[val.first, val.last].compact.join(':')] - ) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 103) - def _reduce_29(val, _values, result) - # Default namespace is not applied to attributes. - # So we don't add prefix "xmlns:" as in namespaced_ident. - result = Node.new(:ELEMENT_NAME, [val.first]) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 110) - def _reduce_30(val, _values, result) - result = Node.new(:FUNCTION, [val.first.strip]) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 113) - def _reduce_31(val, _values, result) - result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 116) - def _reduce_32(val, _values, result) - result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 119) - def _reduce_33(val, _values, result) - result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 122) - def _reduce_34(val, _values, result) - result = Node.new(:FUNCTION, [val.first.strip, val[1]].flatten) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 126) - def _reduce_35(val, _values, result) - result = [val.first, val.last] - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 127) - def _reduce_36(val, _values, result) - result = [val.first, val.last] - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 128) - def _reduce_37(val, _values, result) - result = [val.first, val.last] - result - end -.,., - -# reduce 38 omitted - -# reduce 39 omitted - -module_eval(<<'.,.,', 'nokogiri-css.y', 133) - def _reduce_40(val, _values, result) - case val[0] - when 'even' - result = Node.new(:NTH, ['2','n','+','0']) - when 'odd' - result = Node.new(:NTH, ['2','n','+','1']) - when 'n' - result = Node.new(:NTH, ['1','n','+','0']) - else - # This is not CSS standard. It allows us to support this: - # assert_xpath("//a[foo(., @href)]", @parser.parse('a:foo(@href)')) - # assert_xpath("//a[foo(., @a, b)]", @parser.parse('a:foo(@a, b)')) - # assert_xpath("//a[foo(., a, 10)]", @parser.parse('a:foo(a, 10)')) - result = val - end - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 152) - def _reduce_41(val, _values, result) - if val[1] == 'n' - result = Node.new(:NTH, val) - else - raise Racc::ParseError, "parse error on IDENT '#{val[1]}'" - end - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 158) - def _reduce_42(val, _values, result) - # n+3, -n+3 - if val[0] == 'n' - val.unshift("1") - result = Node.new(:NTH, val) - elsif val[0] == '-n' - val[0] = 'n' - val.unshift("-1") - result = Node.new(:NTH, val) - else - raise Racc::ParseError, "parse error on IDENT '#{val[1]}'" - end - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 170) - def _reduce_43(val, _values, result) - # 5n, -5n, 10n-1 - n = val[1] - if n[0, 2] == 'n-' - val[1] = 'n' - val << "-" - # b is contained in n as n is the string "n-b" - val << n[2, n.size] - result = Node.new(:NTH, val) - elsif n == 'n' - val << "+" - val << "0" - result = Node.new(:NTH, val) - else - raise Racc::ParseError, "parse error on IDENT '#{val[1]}'" - end - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 189) - def _reduce_44(val, _values, result) - result = Node.new(:PSEUDO_CLASS, [val[1]]) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 191) - def _reduce_45(val, _values, result) - result = Node.new(:PSEUDO_CLASS, [val[1]]) - result - end -.,., - -# reduce 46 omitted - -# reduce 47 omitted - -module_eval(<<'.,.,', 'nokogiri-css.y', 199) - def _reduce_48(val, _values, result) - result = Node.new(:COMBINATOR, val) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 202) - def _reduce_49(val, _values, result) - result = Node.new(:COMBINATOR, val) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 205) - def _reduce_50(val, _values, result) - result = Node.new(:COMBINATOR, val) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 208) - def _reduce_51(val, _values, result) - result = Node.new(:COMBINATOR, val) - - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 211) - def _reduce_52(val, _values, result) - result = Node.new(:COMBINATOR, val) - - result - end -.,., - -# reduce 53 omitted - -# reduce 54 omitted - -# reduce 55 omitted - -# reduce 56 omitted - -# reduce 57 omitted - -module_eval(<<'.,.,', 'nokogiri-css.y', 220) - def _reduce_58(val, _values, result) - result = Node.new(:ID, val) - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 223) - def _reduce_59(val, _values, result) - result = [val.first, val[1]] - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 224) - def _reduce_60(val, _values, result) - result = [val.first, val[1]] - result - end -.,., - -# reduce 61 omitted - -module_eval(<<'.,.,', 'nokogiri-css.y', 228) - def _reduce_62(val, _values, result) - result = :equal - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 229) - def _reduce_63(val, _values, result) - result = :prefix_match - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 230) - def _reduce_64(val, _values, result) - result = :suffix_match - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 231) - def _reduce_65(val, _values, result) - result = :substring_match - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 232) - def _reduce_66(val, _values, result) - result = :not_equal - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 233) - def _reduce_67(val, _values, result) - result = :includes - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 234) - def _reduce_68(val, _values, result) - result = :dash_match - result - end -.,., - -module_eval(<<'.,.,', 'nokogiri-css.y', 238) - def _reduce_69(val, _values, result) - result = Node.new(:NOT, [val[1]]) - - result - end -.,., - -# reduce 70 omitted - -# reduce 71 omitted - -# reduce 72 omitted - -# reduce 73 omitted - -# reduce 74 omitted - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser - end # module CSS -end # module Nokogiri diff --git a/test/racc/regress/opal b/test/racc/regress/opal deleted file mode 100644 index 53420a8f0e..0000000000 --- a/test/racc/regress/opal +++ /dev/null @@ -1,10107 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.2 -# from Racc grammar file "". -# - -require 'racc/parser.rb' -module Opal - class Parser < Racc::Parser - -module_eval(<<'...end opal.y/module_eval...', 'opal.y', 1808) - -...end opal.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - 63, 64, 65, 8, 51, 575, 552, -92, 57, 58, - 619, 205, 206, 61, 73, 59, 60, 62, 23, 24, - 66, 67, 74, 544, 754, 607, 543, 22, 28, 27, - 90, 89, 91, 92, 97, 751, 17, 607, 273, -458, - 612, 653, 7, 41, 6, 9, 94, 93, 575, 84, - 50, 86, 85, 87, 273, 88, 95, 96, 653, 81, - 82, -100, 38, 39, -99, -68, 597, -446, 344, 343, - -95, 205, 206, 618, -446, 652, -97, 581, 575, 582, - -94, 205, 206, -96, 575, 36, 609, 608, 30, -92, - 575, 52, 652, 108, 54, 770, 32, -84, 609, 608, - 40, 101, -79, -92, 268, 752, 100, 195, 18, -100, - -99, 551, -84, 79, 73, 75, 76, 77, 78, 101, - -95, 574, 74, 80, 100, 272, -98, 63, 64, 65, - 56, 51, -97, 53, 653, 57, 58, 196, 37, 83, - 61, 272, 59, 60, 62, 23, 24, 66, 67, 454, - -534, 205, 206, 197, 22, 28, 27, 90, 89, 91, - 92, 308, 101, 17, 574, -84, -91, 100, 652, -90, - 41, 308, 596, 94, 93, -86, 84, 50, 86, 85, - 87, -88, 88, 95, 96, -85, 81, 82, -87, 38, - 39, 101, 101, -535, 574, 900, 100, 100, 101, -100, - 574, -449, -84, 100, 101, 198, 574, 649, -449, 100, - -96, -84, 210, 246, -98, 214, 215, -92, 52, -92, - -91, 54, -92, -100, -99, -100, -99, 40, -100, -99, - -94, -89, 273, 607, -95, 18, -95, 299, 726, -95, - 79, 73, 75, 76, 77, 78, -97, -90, -97, 74, - 80, -97, -86, 726, 63, 64, 65, 56, 51, -88, - 53, 544, 57, 58, 546, 37, 83, 61, 531, 59, - 60, 62, 23, 24, 66, 67, 205, 206, 653, 205, - 206, 22, 28, 27, 90, 89, 91, 92, -91, -534, - 219, 777, 300, -535, 609, 608, 605, 41, 268, 227, - 94, 93, 308, 84, 50, 86, 85, 87, 388, 88, - 95, 96, 652, 81, 82, -90, 38, 39, -99, 272, - -86, 726, 301, 302, -96, -91, -96, -88, -98, -96, - -98, 224, 810, -98, -91, 226, 225, -87, 101, 210, - 725, -93, 214, 100, -94, 52, -94, -85, 54, -94, - 391, -89, -90, 101, 40, 725, 788, -86, 100, 402, - 101, -90, 218, 415, -88, 100, -86, 79, 73, 75, - 76, 77, 78, -88, 453, 101, 74, 80, 455, 204, - 100, 63, 64, 65, 56, 51, 607, 53, 544, 57, - 58, 546, 37, 83, 61, 789, 59, 60, 62, 258, - 259, 66, 67, 876, -534, -87, -95, 877, 257, 28, - 27, 90, 89, 91, 92, -85, 456, 219, -535, -89, - -91, 101, 607, 725, 41, 607, 100, 94, 93, -100, - 84, 50, 86, 85, 87, 261, 88, 95, 96, -456, - 81, 82, -87, 38, 39, -97, -456, 609, 608, 610, - 101, -87, -85, -93, 215, 100, -89, -94, 487, 264, - 265, -85, 754, -455, -454, -89, 210, 266, 489, 214, - -455, -454, 52, 751, 813, 54, 582, 256, 491, 254, - 497, 40, -67, 609, 608, 614, 609, 608, 620, 218, - 400, 401, 203, 201, 79, 73, 75, 76, 77, 78, - 202, 514, 544, 74, 80, 546, 344, 343, 63, 64, - 65, 56, 51, 101, 53, -451, 57, 58, 100, 37, - 83, 61, -451, 59, 60, 62, 258, 259, 66, 67, - 515, -532, 527, 528, 516, 257, 28, 27, 90, 89, - 91, 92, 101, 752, 219, -331, -331, 100, 199, 625, - 200, 41, 525, -331, 94, 93, 277, 84, 50, 86, - 85, 87, 261, 88, 95, 96, 308, 81, 82, 268, - 38, 39, 532, 227, 231, 236, 237, 238, 233, 235, - 243, 244, 239, 240, -449, -449, 220, 221, -452, 101, - 241, 242, -449, 210, 100, -452, 214, -532, 533, 52, - 227, -331, 54, -331, 256, 224, 254, 230, 40, 226, - 225, 222, 223, 234, 232, 228, 218, 229, -532, 203, - 449, 79, 73, 75, 76, 77, 78, 450, 308, -458, - 74, 80, 547, 245, 548, 63, 64, 65, 56, 51, - -449, 53, -449, 57, 58, 491, 37, 83, 61, 555, - 59, 60, 62, 258, 259, 66, 67, 103, 104, 105, - 106, 107, 257, 28, 27, 90, 89, 91, 92, -453, - -84, 219, 524, 521, 531, 452, -453, 451, 41, -92, - 522, 94, 93, 558, 84, 50, 86, 85, 87, 261, - 88, 95, 96, 559, 81, 82, 561, 38, 39, 570, - 227, 231, 236, 237, 238, 233, 235, 243, 244, 239, - 240, 524, 534, 220, 221, -90, 412, 241, 242, 535, - 210, 414, 413, 214, -99, 571, 52, 404, 520, 54, - 523, 256, 224, 254, 230, 40, 226, 225, 222, 223, - 234, 232, 228, 218, 229, 587, 524, 584, 79, 73, - 75, 76, 77, 78, 585, 588, 630, 74, 80, 589, - 245, 650, -255, -255, -255, 56, -255, 452, 53, 451, - -255, -255, 613, 37, 83, -255, 617, -255, -255, -255, - -255, -255, -255, -255, 103, 104, 105, 106, 107, -255, - -255, -255, -255, -255, -255, -255, 621, -86, -255, 524, - 593, 624, 583, 625, 586, -255, -95, 591, -255, -255, - 627, -255, -255, -255, -255, -255, -255, -255, -255, -255, - -263, -255, -255, 628, -255, -255, 629, 227, 231, 236, - 237, 238, 233, 235, 243, 244, 239, 240, -284, -284, - 220, 221, 205, 206, 241, 242, -284, -255, 268, 631, - -255, 268, 227, -255, 227, 592, -255, 523, -255, 224, - -255, 230, -255, 226, 225, 222, 223, 234, 232, 228, - -255, 229, 344, 343, 602, -255, -255, -255, -255, -255, - -255, 603, 832, 813, -255, -255, 776, 245, 227, -233, - -88, 227, -255, 915, -284, -255, -284, 308, 754, -97, - -255, -255, 63, 64, 65, 8, 51, 344, 343, 751, - 57, 58, 832, 813, 670, 61, 671, 59, 60, 62, - 23, 24, 66, 67, 679, 681, -79, -85, 682, 22, - 28, 27, 90, 89, 91, 92, -94, 684, 17, 537, - 341, 340, 344, 343, 7, 41, 227, 9, 94, 93, - 694, 84, 50, 86, 85, 87, 700, 88, 95, 96, - 701, 81, 82, 702, 38, 39, 706, 227, 231, 236, - 237, 238, 233, 235, 243, 244, 239, 240, 224, 752, - 220, 221, 226, 225, 241, 242, 716, 36, 718, 721, - 281, 582, 729, 52, 772, -264, 54, 497, 32, 224, - 497, 230, 40, 226, 225, 222, 223, 234, 232, 228, - 18, 229, 497, 524, 593, 79, 73, 75, 76, 77, - 78, 822, 791, 792, 74, 80, 489, 245, 491, 63, - 64, 65, 56, 51, 800, 53, 802, 57, 58, 803, - 37, 83, 61, 694, 59, 60, 62, 258, 259, 66, - 67, 708, 807, 268, 268, 808, 257, 291, 295, 90, - 89, 91, 92, 268, 227, 219, -286, -286, 227, 592, - 813, 523, 292, 819, -286, 94, 93, 820, 84, 50, - 86, 85, 87, 558, 88, 95, 96, 561, 81, 82, - 823, 327, 824, 336, 334, 333, 561, 335, 341, 340, - 344, 343, 827, 866, 867, -283, -283, 868, 95, 96, - 813, 836, 837, -283, 289, 839, 840, 286, -535, -534, - 52, 842, -286, 54, -286, 285, 850, 852, 855, 856, - 338, 858, 915, 860, 862, 864, -265, 754, 341, 340, - 344, 343, 79, 73, 75, 76, 77, 78, 751, 794, - 878, 74, 80, 879, 880, 881, 63, 64, 65, 56, - 51, -283, 53, -283, 57, 58, 883, 296, 83, 61, - 884, 59, 60, 62, 258, 259, 66, 67, 708, 341, - 340, 344, 343, 257, 291, 295, 90, 89, 91, 92, - 524, 946, 219, 103, 104, 105, 106, 107, 947, 292, - 227, 694, 94, 93, 886, 84, 50, 86, 85, 87, - -263, 88, 95, 96, 890, 81, 82, 764, 752, 336, - 334, 333, 754, 335, 895, 341, 340, 344, 343, 897, - 903, 905, 224, 751, 906, 308, 226, 225, 222, 223, - 919, 289, -266, 921, 214, -535, 945, 52, 586, 563, - 54, 336, 334, 333, 561, 335, 338, 749, 931, 932, - 937, 855, 939, 860, 341, 340, 344, 343, 860, 79, - 73, 75, 76, 77, 78, 862, 948, 954, 74, 80, - 700, 964, 860, 298, 966, 967, 56, nil, nil, 53, - nil, nil, nil, nil, 296, 83, 63, 64, 65, 227, - 51, nil, nil, 752, 57, 58, nil, nil, nil, 61, - nil, 59, 60, 62, 258, 259, 66, 67, nil, nil, - nil, nil, nil, 257, 291, 295, 90, 89, 91, 92, - nil, 224, 219, nil, nil, 226, 225, 222, 223, 41, - nil, nil, 94, 93, nil, 84, 50, 86, 85, 87, - nil, 88, 95, 96, nil, 81, 82, nil, 38, 39, - nil, 227, 231, 236, 237, 238, 233, 235, 243, 244, - 239, 240, nil, nil, 220, 221, nil, nil, 241, 242, - nil, 210, nil, nil, 214, nil, nil, 52, nil, nil, - 54, nil, nil, 224, nil, 230, 40, 226, 225, 222, - 223, 234, 232, 228, 218, 229, nil, nil, nil, 79, - 73, 75, 76, 77, 78, nil, nil, nil, 74, 80, - nil, 245, nil, 63, 64, 65, 56, 51, nil, 53, - nil, 57, 58, nil, 37, 83, 61, nil, 59, 60, - 62, 258, 259, 66, 67, nil, nil, nil, nil, nil, - 257, 291, 295, 90, 89, 91, 92, nil, 563, 219, - 336, 334, 333, nil, 335, nil, 41, nil, nil, 94, - 93, nil, 84, 50, 86, 85, 87, nil, 88, 95, - 96, nil, 81, 82, nil, 38, 39, nil, 227, 231, - 236, 237, 238, 233, 235, 243, 244, 239, 240, nil, - nil, 220, 221, nil, nil, 241, 242, nil, 210, nil, - nil, 214, nil, nil, 52, nil, nil, 54, nil, nil, - 224, nil, 230, 40, 226, 225, 222, 223, 234, 232, - 228, 218, 229, nil, nil, nil, 79, 73, 75, 76, - 77, 78, nil, nil, nil, 74, 80, nil, 245, nil, - 63, 64, 65, 56, 51, nil, 53, nil, 57, 58, - nil, 37, 83, 61, nil, 59, 60, 62, 258, 259, - 66, 67, nil, nil, nil, nil, nil, 257, 291, 295, - 90, 89, 91, 92, nil, nil, 219, nil, nil, nil, - nil, nil, nil, 41, nil, nil, 94, 93, nil, 84, - 50, 86, 85, 87, nil, 88, 95, 96, nil, 81, - 82, nil, 38, 39, nil, 227, 231, 236, 237, 238, - 233, 235, 243, 244, 239, 240, nil, nil, 220, 221, - nil, nil, 241, 242, nil, 210, nil, nil, 214, nil, - nil, 52, nil, nil, 54, nil, nil, 224, nil, 230, - 40, 226, 225, 222, 223, 234, 232, 228, 218, 229, - nil, nil, nil, 79, 73, 75, 76, 77, 78, nil, - nil, nil, 74, 80, nil, 245, nil, 63, 64, 65, - 56, 51, nil, 53, nil, 57, 58, nil, 37, 83, - 61, nil, 59, 60, 62, 23, 24, 66, 67, nil, - nil, nil, nil, nil, 22, 28, 27, 90, 89, 91, - 92, nil, nil, 17, nil, nil, nil, nil, nil, nil, - 41, nil, nil, 94, 93, nil, 84, 50, 86, 85, - 87, nil, 88, 95, 96, nil, 81, 82, nil, 38, - 39, nil, 227, 231, 236, 237, 238, 233, 235, 243, - 244, 239, 240, nil, nil, 220, 221, nil, nil, 241, - 242, nil, 210, nil, nil, 214, nil, nil, 52, nil, - nil, 54, nil, nil, 224, nil, 230, 40, 226, 225, - 222, 223, 234, 232, 228, 18, 229, nil, nil, nil, - 79, 73, 75, 76, 77, 78, nil, nil, nil, 74, - 80, nil, 245, nil, 63, 64, 65, 56, 51, nil, - 53, nil, 57, 58, nil, 37, 83, 61, nil, 59, - 60, 62, 258, 259, 66, 67, nil, nil, nil, nil, - nil, 257, 28, 27, 90, 89, 91, 92, nil, nil, - 219, nil, nil, nil, nil, nil, nil, 41, nil, nil, - 94, 93, nil, 84, 50, 86, 85, 87, 261, 88, - 95, 96, nil, 81, 82, nil, 38, 39, nil, 227, - 231, 236, 237, 238, 233, 235, 243, 244, 239, 240, - nil, nil, 220, 221, nil, nil, 241, 242, nil, 210, - nil, nil, 214, nil, nil, 52, nil, nil, 54, nil, - 256, 224, nil, 230, 40, 226, 225, 222, 223, 234, - 232, 228, 218, 229, nil, nil, nil, 79, 73, 75, - 76, 77, 78, nil, nil, nil, 74, 80, nil, 245, - nil, 63, 64, 65, 56, 51, nil, 53, nil, 57, - 58, nil, 37, 83, 61, nil, 59, 60, 62, 258, - 259, 66, 67, nil, nil, nil, nil, nil, 257, 291, - 295, 90, 89, 91, 92, nil, nil, 219, nil, nil, - nil, nil, nil, nil, 41, nil, nil, 94, 93, nil, - 84, 50, 86, 85, 87, 261, 88, 95, 96, nil, - 81, 82, nil, 38, 39, nil, 227, 231, 236, 237, - 238, 233, 235, 243, 244, 239, 240, nil, nil, 220, - 221, nil, nil, 241, 242, nil, 210, nil, nil, 214, - nil, nil, 52, nil, nil, 54, nil, nil, 224, nil, - 230, 40, 226, 225, 222, 223, 234, 232, 228, 218, - 229, nil, nil, nil, 79, 73, 75, 76, 77, 78, - nil, nil, nil, 74, 80, nil, 245, nil, 63, 64, - 65, 56, 51, nil, 53, nil, 57, 58, nil, 37, - 83, 61, nil, 59, 60, 62, 23, 24, 66, 67, - nil, nil, nil, nil, nil, 22, 28, 27, 90, 89, - 91, 92, nil, nil, 17, nil, nil, nil, nil, nil, - nil, 41, nil, nil, 94, 93, nil, 84, 50, 86, - 85, 87, nil, 88, 95, 96, nil, 81, 82, nil, - 38, 39, nil, 227, 231, 236, 237, 238, 233, 235, - 243, 244, 239, 240, nil, nil, 220, 221, nil, nil, - 241, 242, nil, 210, nil, nil, 214, nil, nil, 52, - nil, nil, 54, nil, nil, 224, nil, 230, 40, 226, - 225, 222, 223, 234, 232, 228, 18, 229, nil, nil, - nil, 79, 73, 75, 76, 77, 78, nil, nil, nil, - 74, 80, nil, 245, nil, 63, 64, 65, 56, 51, - nil, 53, nil, 57, 58, nil, 37, 83, 61, nil, - 59, 60, 62, 23, 24, 66, 67, nil, nil, nil, - nil, nil, 22, 28, 27, 90, 89, 91, 92, nil, - nil, 17, nil, nil, nil, nil, nil, nil, 41, nil, - nil, 94, 93, nil, 84, 50, 86, 85, 87, nil, - 88, 95, 96, nil, 81, 82, nil, 38, 39, nil, - 227, 231, 236, 237, 238, 233, 235, 243, 244, 239, - 240, nil, nil, 220, 221, nil, nil, 241, 242, nil, - 210, nil, nil, 214, nil, nil, 52, nil, nil, 54, - nil, nil, 224, nil, 230, 40, 226, 225, 222, 223, - 234, 232, 228, 18, 229, nil, nil, nil, 79, 73, - 75, 76, 77, 78, nil, nil, nil, 74, 80, nil, - 245, nil, 63, 64, 65, 56, 51, nil, 53, nil, - 57, 58, nil, 37, 83, 61, nil, 59, 60, 62, - 23, 24, 66, 67, nil, nil, nil, nil, nil, 22, - 28, 27, 90, 89, 91, 92, nil, nil, 17, nil, - nil, nil, nil, nil, nil, 41, nil, nil, 94, 93, - nil, 84, 50, 86, 85, 87, nil, 88, 95, 96, - nil, 81, 82, nil, 38, 39, nil, 227, 231, 236, - 237, 238, 233, 235, 243, 244, 239, 240, nil, nil, - 220, 221, nil, nil, 241, 242, nil, 210, nil, nil, - 214, nil, nil, 52, nil, nil, 54, nil, nil, 224, - nil, 230, 40, 226, 225, 222, 223, 234, 232, 228, - 18, 229, nil, nil, nil, 79, 73, 75, 76, 77, - 78, nil, nil, nil, 74, 80, 101, 245, nil, -233, - nil, 100, 56, nil, nil, 53, nil, nil, nil, nil, - 37, 83, 63, 64, 65, nil, 51, nil, nil, nil, - 57, 58, nil, nil, nil, 61, nil, 59, 60, 62, - 258, 259, 66, 67, nil, nil, nil, nil, nil, 257, - 291, 295, 90, 89, 91, 92, nil, nil, 219, nil, - nil, nil, nil, nil, nil, 292, nil, nil, 94, 93, - nil, 84, 50, 86, 85, 87, nil, 88, 95, 96, - nil, 81, 82, 227, 231, 236, 237, 238, 233, 235, - 243, 244, 239, 240, 227, nil, 220, 221, nil, nil, - 241, 242, nil, nil, nil, nil, nil, 356, nil, nil, - 30, 241, 242, 52, nil, 224, 54, 230, 32, 226, - 225, 222, 223, 234, 232, 228, 224, 229, 230, nil, - 226, 225, 222, 223, nil, 79, 73, 75, 76, 77, - 78, nil, nil, 245, 74, 80, nil, nil, nil, 63, - 64, 65, 56, 51, nil, 53, nil, 57, 58, nil, - 296, 83, 61, nil, 59, 60, 62, 258, 259, 66, - 67, nil, nil, nil, nil, nil, 257, 291, 295, 90, - 89, 91, 92, nil, nil, 219, nil, nil, nil, nil, - nil, nil, 292, nil, nil, 94, 93, nil, 84, 50, - 86, 85, 361, nil, 88, 95, 96, nil, 81, 82, - 227, 231, 236, 237, 238, 233, 235, 243, 244, 239, - 240, 227, nil, 220, 221, nil, nil, 241, 242, nil, - nil, 367, nil, nil, 362, nil, nil, 214, 241, 242, - 52, nil, 224, 54, 230, nil, 226, 225, 222, 223, - 234, 232, 228, 224, 229, 230, nil, 226, 225, 222, - 223, nil, 79, 73, 75, 76, 77, 78, nil, nil, - 245, 74, 80, nil, nil, nil, -531, -531, -531, 56, - -531, nil, 53, nil, -531, -531, nil, 296, 83, -531, - nil, -531, -531, -531, -531, -531, -531, -531, nil, -531, - nil, nil, nil, -531, -531, -531, -531, -531, -531, -531, - nil, nil, -531, nil, nil, nil, nil, nil, nil, -531, - nil, nil, -531, -531, nil, -531, -531, -531, -531, -531, - -531, -531, -531, -531, nil, -531, -531, nil, -531, -531, - nil, 227, 231, 236, 237, 238, 233, 235, 243, 244, - 239, 240, nil, nil, 220, 221, nil, nil, 241, 242, - nil, -531, nil, nil, -531, -531, nil, -531, nil, nil, - -531, nil, -531, 224, -531, 230, -531, 226, 225, 222, - 223, 234, 232, 228, -531, 229, -531, nil, nil, -531, - -531, -531, -531, -531, -531, nil, nil, nil, -531, -531, - nil, 245, nil, -532, -532, -532, -531, -532, nil, -531, - nil, -532, -532, nil, -531, -531, -532, nil, -532, -532, - -532, -532, -532, -532, -532, nil, -532, nil, nil, nil, - -532, -532, -532, -532, -532, -532, -532, nil, nil, -532, - nil, nil, nil, nil, nil, nil, -532, nil, nil, -532, - -532, nil, -532, -532, -532, -532, -532, -532, -532, -532, - -532, nil, -532, -532, nil, -532, -532, nil, 227, 231, - 236, 237, 238, 233, 235, 243, 244, 239, 240, nil, - nil, 220, 221, nil, nil, 241, 242, nil, -532, nil, - nil, -532, -532, nil, -532, nil, nil, -532, nil, -532, - 224, -532, 230, -532, 226, 225, 222, 223, 234, 232, - 228, -532, 229, -532, nil, nil, -532, -532, -532, -532, - -532, -532, nil, nil, nil, -532, -532, nil, 245, nil, - nil, nil, nil, -532, nil, nil, -532, nil, nil, nil, - nil, -532, -532, 63, 64, 65, 8, 51, nil, nil, - nil, 57, 58, nil, nil, nil, 61, nil, 59, 60, - 62, 23, 24, 66, 67, nil, nil, nil, nil, nil, - 22, 28, 27, 90, 89, 91, 92, nil, nil, 17, - nil, nil, nil, nil, nil, 7, 41, 6, 9, 94, - 93, nil, 84, 50, 86, 85, 87, nil, 88, 95, - 96, nil, 81, 82, nil, 38, 39, nil, 227, 231, - 236, 237, 238, 233, 235, 243, 244, 239, 240, nil, - nil, 220, 221, nil, nil, 241, 242, nil, 36, nil, - nil, 30, nil, nil, 52, nil, nil, 54, nil, 32, - 224, nil, 230, 40, 226, 225, 222, 223, 234, 232, - 228, 18, 229, nil, nil, nil, 79, 73, 75, 76, - 77, 78, nil, nil, nil, 74, 80, nil, 245, nil, - nil, nil, 404, 56, nil, nil, 53, nil, nil, nil, - nil, 37, 83, 63, 64, 65, nil, 51, nil, nil, - nil, 57, 58, nil, nil, nil, 61, nil, 59, 60, - 62, 23, 24, 66, 67, nil, nil, nil, nil, nil, - 22, 28, 27, 90, 89, 91, 92, nil, 563, 17, - 336, 334, 333, nil, 335, nil, 41, nil, nil, 94, - 93, nil, 84, 50, 86, 85, 87, nil, 88, 95, - 96, nil, 81, 82, nil, 38, 39, 563, nil, 336, - 334, 333, nil, 335, nil, nil, 563, 566, 336, 334, - 333, nil, 335, nil, nil, 569, nil, nil, 210, nil, - nil, 214, nil, nil, 52, nil, nil, 54, nil, nil, - nil, nil, nil, 40, nil, nil, 566, nil, nil, nil, - nil, 18, nil, nil, 569, 566, 79, 73, 75, 76, - 77, 78, nil, 829, nil, 74, 80, nil, nil, nil, - 63, 64, 65, 56, 51, nil, 53, nil, 57, 58, - nil, 37, 83, 61, nil, 59, 60, 62, 23, 24, - 66, 67, nil, nil, nil, nil, nil, 22, 28, 27, - 90, 89, 91, 92, nil, nil, 17, nil, nil, nil, - nil, nil, nil, 41, nil, nil, 94, 93, nil, 84, - 50, 86, 85, 87, nil, 88, 95, 96, nil, 81, - 82, nil, 38, 39, nil, 227, 231, 236, 237, 238, - 233, 235, 243, 244, 239, 240, nil, nil, -555, -555, - nil, nil, 241, 242, nil, 210, nil, nil, 214, nil, - nil, 52, nil, nil, 54, nil, nil, 224, nil, 230, - 40, 226, 225, 222, 223, 234, 232, 228, 18, 229, - nil, nil, nil, 79, 73, 75, 76, 77, 78, nil, - nil, nil, 74, 80, nil, nil, nil, 63, 64, 65, - 56, 51, nil, 53, nil, 57, 58, nil, 37, 83, - 61, nil, 59, 60, 62, 23, 24, 66, 67, nil, - nil, nil, nil, nil, 22, 28, 27, 90, 89, 91, - 92, nil, nil, 17, nil, nil, nil, nil, nil, nil, - 41, nil, nil, 94, 93, nil, 84, 50, 86, 85, - 87, nil, 88, 95, 96, nil, 81, 82, nil, 38, - 39, nil, 227, 231, 236, 237, 238, 233, 235, 243, - 244, 239, 240, nil, nil, -555, -555, nil, nil, 241, - 242, nil, 210, nil, nil, 214, nil, nil, 52, nil, - nil, 54, nil, nil, 224, nil, 230, 40, 226, 225, - 222, 223, 234, 232, 228, 18, 229, nil, nil, nil, - 79, 73, 75, 76, 77, 78, nil, nil, nil, 74, - 80, nil, nil, nil, 63, 64, 65, 56, 51, nil, - 53, nil, 57, 58, nil, 37, 83, 61, nil, 59, - 60, 62, 23, 24, 66, 67, nil, nil, nil, nil, - nil, 22, 28, 27, 90, 89, 91, 92, nil, nil, - 17, nil, nil, nil, nil, nil, nil, 41, nil, nil, - 94, 93, nil, 84, 50, 86, 85, 87, nil, 88, - 95, 96, nil, 81, 82, nil, 38, 39, nil, 227, - -555, -555, -555, -555, 233, 235, nil, nil, -555, -555, - nil, nil, nil, nil, nil, nil, 241, 242, nil, 210, - nil, nil, 214, nil, nil, 52, nil, nil, 54, nil, - nil, 224, nil, 230, 40, 226, 225, 222, 223, 234, - 232, 228, 18, 229, nil, nil, nil, 79, 73, 75, - 76, 77, 78, nil, nil, nil, 74, 80, nil, nil, - nil, nil, nil, nil, 56, nil, nil, 53, nil, nil, - nil, nil, 37, 83, 63, 64, 65, 8, 51, nil, - nil, nil, 57, 58, nil, nil, nil, 61, nil, 59, - 60, 62, 23, 24, 66, 67, nil, nil, nil, nil, - nil, 22, 28, 27, 90, 89, 91, 92, nil, nil, - 17, nil, nil, nil, nil, nil, 7, 41, nil, 9, - 94, 93, nil, 84, 50, 86, 85, 87, nil, 88, - 95, 96, nil, 81, 82, nil, 38, 39, nil, 227, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 241, 242, nil, 36, - nil, nil, 30, nil, nil, 52, nil, nil, 54, nil, - 32, 224, nil, 230, 40, 226, 225, 222, 223, nil, - nil, 228, 18, 229, nil, nil, nil, 79, 73, 75, - 76, 77, 78, nil, nil, nil, 74, 80, nil, nil, - nil, nil, nil, nil, 56, nil, nil, 53, nil, nil, - nil, nil, 37, 83, 63, 64, 65, 8, 51, nil, - nil, nil, 57, 58, nil, nil, nil, 61, nil, 59, - 60, 62, 23, 24, 66, 67, nil, nil, nil, nil, - nil, 22, 28, 27, 90, 89, 91, 92, nil, nil, - 17, nil, nil, nil, nil, nil, 7, 41, 6, 9, - 94, 93, nil, 84, 50, 86, 85, 87, nil, 88, - 95, 96, nil, 81, 82, nil, 38, 39, nil, 227, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 241, 242, nil, 36, - nil, nil, 30, nil, nil, 52, nil, nil, 54, nil, - 32, 224, nil, 230, 40, 226, 225, 222, 223, nil, - nil, 228, 18, 229, nil, nil, nil, 79, 73, 75, - 76, 77, 78, nil, nil, nil, 74, 80, nil, nil, - nil, nil, nil, nil, 56, nil, nil, 53, nil, nil, - nil, nil, 37, 83, 63, 64, 65, 8, 51, nil, - nil, nil, 57, 58, nil, nil, nil, 61, nil, 59, - 60, 62, 23, 24, 66, 67, nil, nil, nil, nil, - nil, 22, 28, 27, 90, 89, 91, 92, nil, nil, - 17, nil, nil, nil, nil, nil, 7, 41, nil, 9, - 94, 93, nil, 84, 50, 86, 85, 87, nil, 88, - 95, 96, nil, 81, 82, nil, 38, 39, nil, 227, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 241, 242, nil, 36, - nil, nil, 30, nil, nil, 52, nil, nil, 54, nil, - 32, 224, nil, 230, 40, 226, 225, 222, 223, nil, - nil, 228, 18, 229, nil, nil, nil, 79, 73, 75, - 76, 77, 78, nil, nil, nil, 74, 80, nil, nil, - nil, 63, 64, 65, 56, 51, nil, 53, nil, 57, - 58, nil, 37, 83, 61, nil, 59, 60, 62, 23, - 24, 66, 67, nil, nil, nil, nil, nil, 22, 28, - 27, 90, 89, 91, 92, nil, nil, 219, nil, nil, - nil, nil, nil, nil, 41, nil, nil, 94, 93, nil, - 84, 50, 86, 85, 87, nil, 88, 95, 96, nil, - 81, 82, nil, 38, 39, nil, 227, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 241, 242, nil, 210, nil, nil, 214, - nil, nil, 52, nil, nil, 54, nil, 421, 224, nil, - 230, 40, 226, 225, 222, 223, nil, nil, 228, 218, - 229, nil, nil, nil, 79, 73, 75, 76, 77, 78, - nil, nil, nil, 74, 80, nil, nil, nil, 63, 64, - 65, 56, 51, nil, 53, nil, 57, 58, nil, 37, - 83, 61, nil, 59, 60, 62, 23, 24, 66, 67, - nil, nil, nil, nil, nil, 22, 28, 27, 90, 89, - 91, 92, nil, nil, 219, nil, nil, nil, nil, nil, - nil, 41, nil, nil, 94, 93, nil, 84, 50, 86, - 85, 87, nil, 88, 95, 96, nil, 81, 82, nil, - 38, 39, nil, 227, -555, -555, -555, -555, 233, 235, - nil, nil, -555, -555, nil, nil, nil, nil, nil, nil, - 241, 242, nil, 210, nil, nil, 214, nil, nil, 52, - nil, nil, 54, nil, 421, 224, nil, 230, 40, 226, - 225, 222, 223, 234, 232, 228, 218, 229, nil, nil, - nil, 79, 73, 75, 76, 77, 78, nil, nil, nil, - 74, 80, nil, nil, nil, 63, 64, 65, 56, 51, - nil, 53, nil, 57, 58, nil, 37, 83, 61, nil, - 59, 60, 62, 23, 24, 66, 67, nil, nil, nil, - nil, nil, 22, 28, 27, 90, 89, 91, 92, nil, - nil, 219, nil, nil, nil, nil, nil, nil, 41, nil, - nil, 94, 93, nil, 84, 50, 86, 85, 87, nil, - 88, 95, 96, nil, 81, 82, nil, 38, 39, nil, - 227, -555, -555, -555, -555, 233, 235, nil, nil, -555, - -555, nil, nil, nil, nil, nil, nil, 241, 242, nil, - 210, nil, nil, 214, nil, nil, 52, nil, nil, 54, - nil, nil, 224, nil, 230, 40, 226, 225, 222, 223, - 234, 232, 228, 218, 229, nil, nil, nil, 79, 73, - 75, 76, 77, 78, nil, nil, nil, 74, 80, nil, - nil, nil, 63, 64, 65, 56, 51, nil, 53, nil, - 57, 58, nil, 37, 83, 61, nil, 59, 60, 62, - 258, 259, 66, 67, nil, nil, nil, nil, nil, 257, - 28, 27, 90, 89, 91, 92, nil, nil, 219, nil, - nil, nil, nil, nil, nil, 41, nil, nil, 94, 93, - nil, 84, 50, 86, 85, 87, 261, 88, 95, 96, - nil, 81, 82, nil, 38, 39, nil, 227, -555, -555, - -555, -555, 233, 235, nil, nil, -555, -555, nil, nil, - nil, nil, nil, nil, 241, 242, nil, 210, nil, nil, - 214, nil, nil, 52, nil, nil, 54, nil, 256, 224, - nil, 230, 40, 226, 225, 222, 223, 234, 232, 228, - 218, 229, nil, nil, nil, 79, 73, 75, 76, 77, - 78, nil, nil, nil, 74, 80, nil, nil, nil, 63, - 64, 65, 56, 51, nil, 53, nil, 57, 58, nil, - 37, 83, 61, nil, 59, 60, 62, 258, 259, 66, - 67, nil, nil, nil, nil, nil, 257, 28, 27, 90, - 89, 91, 92, nil, nil, 219, nil, nil, nil, nil, - nil, nil, 41, nil, nil, 94, 93, nil, 84, 50, - 86, 85, 87, 261, 88, 95, 96, nil, 81, 82, - nil, 38, 39, nil, 227, -555, -555, -555, -555, 233, - 235, nil, nil, -555, -555, nil, nil, nil, nil, nil, - nil, 241, 242, nil, 210, nil, nil, 214, nil, nil, - 52, nil, nil, 54, nil, 256, 224, nil, 230, 40, - 226, 225, 222, 223, 234, 232, 228, 218, 229, nil, - nil, nil, 79, 73, 75, 76, 77, 78, nil, nil, - nil, 74, 80, nil, nil, nil, 63, 64, 65, 56, - 51, nil, 53, nil, 57, 58, nil, 37, 83, 61, - nil, 59, 60, 62, 23, 24, 66, 67, nil, nil, - nil, nil, nil, 22, 28, 27, 90, 89, 91, 92, - nil, nil, 219, nil, nil, nil, nil, nil, nil, 41, - nil, nil, 94, 93, nil, 84, 50, 86, 85, 87, - nil, 88, 95, 96, nil, 81, 82, nil, 38, 39, - nil, 227, -555, -555, -555, -555, 233, 235, nil, nil, - -555, -555, nil, nil, nil, nil, nil, nil, 241, 242, - nil, 210, nil, nil, 214, nil, nil, 52, nil, nil, - 54, nil, nil, 224, nil, 230, 40, 226, 225, 222, - 223, 234, 232, 228, 218, 229, nil, nil, nil, 79, - 73, 75, 76, 77, 78, nil, nil, nil, 74, 80, - nil, nil, nil, 63, 64, 65, 56, 51, nil, 53, - nil, 57, 58, nil, 37, 83, 61, nil, 59, 60, - 62, 23, 24, 66, 67, nil, nil, nil, nil, nil, - 22, 28, 27, 90, 89, 91, 92, nil, nil, 17, - nil, nil, nil, nil, nil, nil, 41, nil, nil, 94, - 93, nil, 84, 50, 86, 85, 87, nil, 88, 95, - 96, nil, 81, 82, nil, 38, 39, nil, 227, 231, - 236, 237, 238, 233, 235, nil, nil, 239, 240, nil, - nil, nil, nil, nil, nil, 241, 242, nil, 210, nil, - nil, 214, nil, nil, 52, nil, nil, 54, nil, nil, - 224, nil, 230, 40, 226, 225, 222, 223, 234, 232, - 228, 18, 229, nil, nil, nil, 79, 73, 75, 76, - 77, 78, nil, nil, nil, 74, 80, nil, nil, nil, - 63, 64, 65, 56, 51, nil, 53, nil, 57, 58, - nil, 37, 83, 61, nil, 59, 60, 62, 23, 24, - 66, 67, nil, nil, nil, nil, nil, 22, 28, 27, - 90, 89, 91, 92, nil, nil, 17, nil, nil, nil, - nil, nil, nil, 41, nil, nil, 94, 93, nil, 84, - 50, 86, 85, 87, nil, 88, 95, 96, nil, 81, - 82, nil, 38, 39, nil, 227, 231, 236, 237, 238, - 233, 235, 243, nil, 239, 240, nil, nil, nil, nil, - nil, nil, 241, 242, nil, 210, nil, nil, 214, nil, - nil, 52, nil, nil, 54, nil, nil, 224, nil, 230, - 40, 226, 225, 222, 223, 234, 232, 228, 18, 229, - nil, nil, nil, 79, 73, 75, 76, 77, 78, nil, - nil, nil, 74, 80, nil, nil, nil, nil, nil, nil, - 56, nil, nil, 53, nil, nil, nil, nil, 37, 83, - 63, 64, 65, 8, 51, nil, nil, nil, 57, 58, - nil, nil, nil, 61, nil, 59, 60, 62, 23, 24, - 66, 67, nil, nil, nil, nil, nil, 22, 28, 27, - 90, 89, 91, 92, nil, nil, 17, nil, nil, nil, - nil, nil, 7, 41, nil, 9, 94, 93, nil, 84, - 50, 86, 85, 87, nil, 88, 95, 96, nil, 81, - 82, nil, 38, 39, nil, 227, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 241, 242, nil, 36, nil, nil, 30, nil, - nil, 52, nil, nil, 54, nil, 32, 224, nil, nil, - 40, 226, 225, 222, 223, nil, nil, nil, 18, nil, - nil, nil, nil, 79, 73, 75, 76, 77, 78, nil, - nil, nil, 74, 80, nil, nil, nil, 63, 64, 65, - 56, 51, nil, 53, nil, 57, 58, nil, 37, 83, - 61, nil, 59, 60, 62, 23, 24, 66, 67, nil, - nil, nil, nil, nil, 22, 28, 27, 90, 89, 91, - 92, nil, nil, 17, nil, nil, nil, nil, nil, nil, - 41, nil, nil, 94, 93, nil, 84, 50, 86, 85, - 87, nil, 88, 95, 96, nil, 81, 82, nil, 38, - 39, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 210, nil, nil, 214, nil, 458, 52, nil, - nil, 54, nil, nil, nil, nil, nil, 40, nil, nil, - nil, nil, nil, nil, nil, 18, nil, nil, nil, nil, - 79, 73, 75, 76, 77, 78, nil, nil, nil, 74, - 80, nil, nil, nil, 63, 64, 65, 56, 51, nil, - 53, nil, 57, 58, nil, 37, 83, 61, nil, 59, - 60, 62, 258, 259, 66, 67, nil, nil, nil, nil, - nil, 257, 291, 295, 90, 89, 91, 92, nil, nil, - 219, nil, nil, nil, nil, nil, nil, 41, nil, nil, - 94, 93, nil, 84, 50, 86, 85, 87, nil, 88, - 95, 96, nil, 81, 82, nil, 38, 39, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 210, - nil, nil, 214, nil, nil, 52, nil, nil, 54, nil, - nil, nil, nil, nil, 40, nil, nil, nil, nil, nil, - nil, nil, 218, nil, nil, nil, nil, 79, 73, 75, - 76, 77, 78, nil, nil, nil, 74, 80, nil, nil, - nil, 63, 64, 65, 56, 51, nil, 53, nil, 57, - 58, nil, 37, 83, 61, nil, 59, 60, 62, 258, - 259, 66, 67, nil, nil, nil, nil, nil, 257, 291, - 295, 90, 89, 91, 92, nil, nil, 219, nil, nil, - nil, nil, nil, nil, 41, nil, nil, 94, 93, nil, - 84, 50, 86, 85, 87, nil, 88, 95, 96, nil, - 81, 82, nil, 38, 39, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 210, nil, nil, 214, - nil, nil, 52, nil, nil, 54, nil, nil, nil, nil, - nil, 40, nil, nil, nil, nil, nil, nil, nil, 218, - nil, nil, nil, nil, 79, 73, 75, 76, 77, 78, - nil, nil, nil, 74, 80, nil, nil, nil, 63, 64, - 65, 56, 51, nil, 53, nil, 57, 58, nil, 37, - 83, 61, nil, 59, 60, 62, 258, 259, 66, 67, - nil, nil, nil, nil, nil, 257, 291, 295, 90, 89, - 91, 92, nil, nil, 219, nil, nil, nil, nil, nil, - nil, 41, nil, nil, 94, 93, nil, 84, 50, 86, - 85, 87, nil, 88, 95, 96, nil, 81, 82, nil, - 38, 39, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 210, nil, nil, 214, nil, nil, 52, - nil, nil, 54, nil, nil, nil, nil, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 218, nil, nil, nil, - nil, 79, 73, 75, 76, 77, 78, nil, nil, nil, - 74, 80, nil, nil, nil, 63, 64, 65, 56, 51, - nil, 53, nil, 57, 58, nil, 37, 83, 61, nil, - 59, 60, 62, 258, 259, 66, 67, nil, nil, nil, - nil, nil, 257, 291, 295, 90, 89, 91, 92, nil, - nil, 219, nil, nil, nil, nil, nil, nil, 41, nil, - nil, 94, 93, nil, 84, 50, 86, 85, 87, nil, - 88, 95, 96, nil, 81, 82, nil, 38, 39, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 210, nil, nil, 214, nil, nil, 52, nil, nil, 54, - nil, nil, nil, nil, nil, 40, nil, nil, nil, nil, - nil, nil, nil, 218, nil, nil, nil, nil, 79, 73, - 75, 76, 77, 78, nil, nil, nil, 74, 80, nil, - nil, nil, 63, 64, 65, 56, 51, nil, 53, nil, - 57, 58, nil, 37, 83, 61, nil, 59, 60, 62, - 258, 259, 66, 67, nil, nil, nil, nil, nil, 257, - 291, 295, 90, 89, 91, 92, nil, nil, 219, nil, - nil, nil, nil, nil, nil, 41, nil, nil, 94, 93, - nil, 84, 50, 86, 85, 87, nil, 88, 95, 96, - nil, 81, 82, nil, 38, 39, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 210, nil, nil, - 214, nil, nil, 52, nil, nil, 54, nil, nil, nil, - nil, nil, 40, nil, nil, nil, nil, nil, nil, nil, - 218, nil, nil, nil, nil, 79, 73, 75, 76, 77, - 78, nil, nil, nil, 74, 80, nil, nil, nil, 63, - 64, 65, 56, 51, nil, 53, nil, 57, 58, nil, - 37, 83, 61, nil, 59, 60, 62, 258, 259, 66, - 67, nil, nil, nil, nil, nil, 257, 291, 295, 90, - 89, 91, 92, nil, nil, 219, nil, nil, nil, nil, - nil, nil, 41, nil, nil, 94, 93, nil, 84, 50, - 86, 85, 87, nil, 88, 95, 96, nil, 81, 82, - nil, 38, 39, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 210, nil, nil, 214, nil, nil, - 52, nil, nil, 54, nil, nil, nil, nil, nil, 40, - nil, nil, nil, nil, nil, nil, nil, 218, nil, nil, - nil, nil, 79, 73, 75, 76, 77, 78, nil, nil, - nil, 74, 80, nil, nil, nil, 63, 64, 65, 56, - 51, nil, 53, nil, 57, 58, nil, 37, 83, 61, - nil, 59, 60, 62, 258, 259, 66, 67, nil, nil, - nil, nil, nil, 257, 291, 295, 90, 89, 91, 92, - nil, nil, 219, nil, nil, nil, nil, nil, nil, 41, - nil, nil, 94, 93, nil, 84, 50, 86, 85, 87, - nil, 88, 95, 96, nil, 81, 82, nil, 38, 39, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 210, nil, nil, 214, nil, nil, 52, nil, nil, - 54, nil, nil, nil, nil, nil, 40, nil, nil, nil, - nil, nil, nil, nil, 218, nil, nil, nil, nil, 79, - 73, 75, 76, 77, 78, nil, nil, nil, 74, 80, - nil, nil, nil, 63, 64, 65, 56, 51, nil, 53, - nil, 57, 58, nil, 37, 83, 61, nil, 59, 60, - 62, 258, 259, 66, 67, nil, nil, nil, nil, nil, - 257, 291, 295, 90, 89, 91, 92, nil, nil, 219, - nil, nil, nil, nil, nil, nil, 41, nil, nil, 94, - 93, nil, 84, 50, 86, 85, 87, nil, 88, 95, - 96, nil, 81, 82, nil, 38, 39, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 210, nil, - nil, 214, nil, nil, 52, nil, nil, 54, nil, nil, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, 218, nil, nil, nil, nil, 79, 73, 75, 76, - 77, 78, nil, nil, nil, 74, 80, nil, nil, nil, - 63, 64, 65, 56, 51, nil, 53, nil, 57, 58, - nil, 37, 83, 61, nil, 59, 60, 62, 258, 259, - 66, 67, nil, nil, nil, nil, nil, 257, 291, 295, - 90, 89, 91, 92, nil, nil, 219, nil, nil, nil, - nil, nil, nil, 41, nil, nil, 94, 93, nil, 84, - 50, 86, 85, 87, nil, 88, 95, 96, nil, 81, - 82, nil, 38, 39, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 210, nil, nil, 214, nil, - nil, 52, nil, nil, 54, nil, nil, nil, nil, nil, - 40, nil, nil, nil, nil, nil, nil, nil, 218, nil, - nil, nil, nil, 79, 73, 75, 76, 77, 78, nil, - nil, nil, 74, 80, nil, nil, nil, 63, 64, 65, - 56, 51, nil, 53, nil, 57, 58, nil, 37, 83, - 61, nil, 59, 60, 62, 258, 259, 66, 67, nil, - nil, nil, nil, nil, 257, 291, 295, 90, 89, 91, - 92, nil, nil, 219, nil, nil, nil, nil, nil, nil, - 41, nil, nil, 94, 93, nil, 84, 50, 86, 85, - 87, nil, 88, 95, 96, nil, 81, 82, nil, 38, - 39, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 210, nil, nil, 214, nil, nil, 52, nil, - nil, 54, nil, nil, nil, nil, nil, 40, nil, nil, - nil, nil, nil, nil, nil, 218, nil, nil, nil, nil, - 79, 73, 75, 76, 77, 78, nil, nil, nil, 74, - 80, nil, nil, nil, 63, 64, 65, 56, 51, nil, - 53, nil, 57, 58, nil, 37, 83, 61, nil, 59, - 60, 62, 258, 259, 66, 67, nil, nil, nil, nil, - nil, 257, 291, 295, 90, 89, 91, 92, nil, nil, - 219, nil, nil, nil, nil, nil, nil, 41, nil, nil, - 94, 93, nil, 84, 50, 86, 85, 87, nil, 88, - 95, 96, nil, 81, 82, nil, 38, 39, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 210, - nil, nil, 214, nil, nil, 52, nil, nil, 54, nil, - nil, nil, nil, nil, 40, nil, nil, nil, nil, nil, - nil, nil, 218, nil, nil, nil, nil, 79, 73, 75, - 76, 77, 78, nil, nil, nil, 74, 80, nil, nil, - nil, 63, 64, 65, 56, 51, nil, 53, nil, 57, - 58, nil, 37, 83, 61, nil, 59, 60, 62, 258, - 259, 66, 67, nil, nil, nil, nil, nil, 257, 291, - 295, 90, 89, 91, 92, nil, nil, 219, nil, nil, - nil, nil, nil, nil, 41, nil, nil, 94, 93, nil, - 84, 50, 86, 85, 87, nil, 88, 95, 96, nil, - 81, 82, nil, 38, 39, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 210, nil, nil, 214, - nil, nil, 52, nil, nil, 54, nil, nil, nil, nil, - nil, 40, nil, nil, nil, nil, nil, nil, nil, 218, - nil, nil, nil, nil, 79, 73, 75, 76, 77, 78, - nil, nil, nil, 74, 80, nil, nil, nil, 63, 64, - 65, 56, 51, nil, 53, nil, 57, 58, nil, 37, - 83, 61, nil, 59, 60, 62, 258, 259, 66, 67, - nil, nil, nil, nil, nil, 257, 291, 295, 90, 89, - 91, 92, nil, nil, 219, nil, nil, nil, nil, nil, - nil, 41, nil, nil, 94, 93, nil, 84, 50, 86, - 85, 87, nil, 88, 95, 96, nil, 81, 82, nil, - 38, 39, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 210, nil, nil, 214, nil, nil, 52, - nil, nil, 54, nil, nil, nil, nil, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 218, nil, nil, nil, - nil, 79, 73, 75, 76, 77, 78, nil, nil, nil, - 74, 80, nil, nil, nil, 63, 64, 65, 56, 51, - nil, 53, nil, 57, 58, nil, 37, 83, 61, nil, - 59, 60, 62, 258, 259, 66, 67, nil, nil, nil, - nil, nil, 257, 291, 295, 90, 89, 91, 92, nil, - nil, 219, nil, nil, nil, nil, nil, nil, 41, nil, - nil, 94, 93, nil, 84, 50, 86, 85, 87, nil, - 88, 95, 96, nil, 81, 82, nil, 38, 39, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 210, nil, nil, 214, nil, nil, 52, nil, nil, 54, - nil, nil, nil, nil, nil, 40, nil, nil, nil, nil, - nil, nil, nil, 218, nil, nil, nil, nil, 79, 73, - 75, 76, 77, 78, nil, nil, nil, 74, 80, nil, - nil, nil, 63, 64, 65, 56, 51, nil, 53, nil, - 57, 58, nil, 37, 83, 61, nil, 59, 60, 62, - 258, 259, 66, 67, nil, nil, nil, nil, nil, 257, - 291, 295, 90, 89, 91, 92, nil, nil, 219, nil, - nil, nil, nil, nil, nil, 41, nil, nil, 94, 93, - nil, 84, 50, 86, 85, 87, nil, 88, 95, 96, - nil, 81, 82, nil, 38, 39, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 210, nil, nil, - 214, nil, nil, 52, nil, nil, 54, nil, nil, nil, - nil, nil, 40, nil, nil, nil, nil, nil, nil, nil, - 218, nil, nil, nil, nil, 79, 73, 75, 76, 77, - 78, nil, nil, nil, 74, 80, nil, nil, nil, 63, - 64, 65, 56, 51, nil, 53, nil, 57, 58, nil, - 37, 83, 61, nil, 59, 60, 62, 258, 259, 66, - 67, nil, nil, nil, nil, nil, 257, 291, 295, 90, - 89, 91, 92, nil, nil, 219, nil, nil, nil, nil, - nil, nil, 41, nil, nil, 94, 93, nil, 84, 50, - 86, 85, 87, nil, 88, 95, 96, nil, 81, 82, - nil, 38, 39, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 210, nil, nil, 214, nil, nil, - 52, nil, nil, 54, nil, nil, nil, nil, nil, 40, - nil, nil, nil, nil, nil, nil, nil, 218, nil, nil, - nil, nil, 79, 73, 75, 76, 77, 78, nil, nil, - nil, 74, 80, nil, nil, nil, 63, 64, 65, 56, - 51, nil, 53, nil, 57, 58, nil, 37, 83, 61, - nil, 59, 60, 62, 258, 259, 66, 67, nil, nil, - nil, nil, nil, 257, 291, 295, 90, 89, 91, 92, - nil, nil, 219, nil, nil, nil, nil, nil, nil, 41, - nil, nil, 94, 93, nil, 84, 50, 86, 85, 87, - nil, 88, 95, 96, nil, 81, 82, nil, 38, 39, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 210, nil, nil, 214, nil, nil, 52, nil, nil, - 54, nil, nil, nil, nil, nil, 40, nil, nil, nil, - nil, nil, nil, nil, 218, nil, nil, nil, nil, 79, - 73, 75, 76, 77, 78, nil, nil, nil, 74, 80, - nil, nil, nil, 63, 64, 65, 56, 51, nil, 53, - nil, 57, 58, nil, 37, 83, 61, nil, 59, 60, - 62, 258, 259, 66, 67, nil, nil, nil, nil, nil, - 257, 291, 295, 90, 89, 91, 92, nil, nil, 219, - nil, nil, nil, nil, nil, nil, 41, nil, nil, 94, - 93, nil, 84, 50, 86, 85, 87, nil, 88, 95, - 96, nil, 81, 82, nil, 38, 39, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 210, nil, - nil, 214, nil, nil, 52, nil, nil, 54, nil, nil, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, 218, nil, nil, nil, nil, 79, 73, 75, 76, - 77, 78, nil, nil, nil, 74, 80, nil, nil, nil, - 63, 64, 65, 56, 51, nil, 53, nil, 57, 58, - nil, 37, 83, 61, nil, 59, 60, 62, 258, 259, - 66, 67, nil, nil, nil, nil, nil, 257, 291, 295, - 90, 89, 91, 92, nil, nil, 219, nil, nil, nil, - nil, nil, nil, 41, nil, nil, 94, 93, nil, 84, - 50, 86, 85, 87, nil, 88, 95, 96, nil, 81, - 82, nil, 38, 39, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 210, nil, nil, 214, nil, - nil, 52, nil, nil, 54, nil, nil, nil, nil, nil, - 40, nil, nil, nil, nil, nil, nil, nil, 218, nil, - nil, nil, nil, 79, 73, 75, 76, 77, 78, nil, - nil, nil, 74, 80, nil, nil, nil, 63, 64, 65, - 56, 51, nil, 53, nil, 57, 58, nil, 37, 83, - 61, nil, 59, 60, 62, 258, 259, 66, 67, nil, - nil, nil, nil, nil, 257, 291, 295, 90, 89, 91, - 92, nil, nil, 219, nil, nil, nil, nil, nil, nil, - 41, nil, nil, 94, 93, nil, 84, 50, 86, 85, - 87, nil, 88, 95, 96, nil, 81, 82, nil, 38, - 39, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 210, nil, nil, 214, nil, nil, 52, nil, - nil, 54, nil, nil, nil, nil, nil, 40, nil, nil, - nil, nil, nil, nil, nil, 218, nil, nil, nil, nil, - 79, 73, 75, 76, 77, 78, nil, nil, nil, 74, - 80, nil, nil, nil, 63, 64, 65, 56, 51, nil, - 53, nil, 57, 58, nil, 37, 83, 61, nil, 59, - 60, 62, 258, 259, 66, 67, nil, nil, nil, nil, - nil, 257, 291, 295, 90, 89, 91, 92, nil, nil, - 219, nil, nil, nil, nil, nil, nil, 41, nil, nil, - 94, 93, nil, 84, 50, 86, 85, 87, nil, 88, - 95, 96, nil, 81, 82, nil, 38, 39, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 210, - nil, nil, 214, nil, nil, 52, nil, nil, 54, nil, - nil, nil, nil, nil, 40, nil, nil, nil, nil, nil, - nil, nil, 218, nil, nil, nil, nil, 79, 73, 75, - 76, 77, 78, nil, nil, nil, 74, 80, nil, nil, - nil, 63, 64, 65, 56, 51, nil, 53, nil, 57, - 58, nil, 37, 83, 61, nil, 59, 60, 62, 258, - 259, 66, 67, nil, nil, nil, nil, nil, 257, 291, - 295, 90, 89, 91, 92, nil, nil, 219, nil, nil, - nil, nil, nil, nil, 41, nil, nil, 94, 93, nil, - 84, 50, 86, 85, 87, nil, 88, 95, 96, nil, - 81, 82, nil, 38, 39, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 210, nil, nil, 214, - nil, nil, 52, nil, nil, 54, nil, nil, nil, nil, - nil, 40, nil, nil, nil, nil, nil, nil, nil, 218, - nil, nil, nil, nil, 79, 73, 75, 76, 77, 78, - nil, nil, nil, 74, 80, nil, nil, nil, 63, 64, - 65, 56, 51, nil, 53, nil, 57, 58, nil, 37, - 83, 61, nil, 59, 60, 62, 258, 259, 66, 67, - nil, nil, nil, nil, nil, 257, 291, 295, 90, 89, - 91, 92, nil, nil, 219, nil, nil, nil, nil, nil, - nil, 41, nil, nil, 94, 93, nil, 84, 50, 86, - 85, 87, nil, 88, 95, 96, nil, 81, 82, nil, - 38, 39, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 210, nil, nil, 214, nil, nil, 52, - nil, nil, 54, nil, nil, nil, nil, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 218, nil, nil, nil, - nil, 79, 73, 75, 76, 77, 78, nil, nil, nil, - 74, 80, nil, nil, nil, 63, 64, 65, 56, 51, - nil, 53, nil, 57, 58, nil, 37, 83, 61, nil, - 59, 60, 62, 258, 259, 66, 67, nil, nil, nil, - nil, nil, 257, 291, 295, 90, 89, 91, 92, nil, - nil, 219, nil, nil, nil, nil, nil, nil, 41, nil, - nil, 94, 93, nil, 84, 50, 86, 85, 87, nil, - 88, 95, 96, nil, 81, 82, nil, 38, 39, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 210, nil, nil, 214, nil, nil, 52, nil, nil, 54, - nil, nil, nil, nil, nil, 40, nil, nil, nil, nil, - nil, nil, nil, 218, nil, nil, nil, nil, 79, 73, - 75, 76, 77, 78, nil, nil, nil, 74, 80, nil, - nil, nil, 63, 64, 65, 56, 51, nil, 53, nil, - 57, 58, nil, 37, 83, 61, nil, 59, 60, 62, - 258, 259, 66, 67, nil, nil, nil, nil, nil, 257, - 291, 295, 90, 89, 91, 92, nil, nil, 219, nil, - nil, nil, nil, nil, nil, 41, nil, nil, 94, 93, - nil, 84, 50, 86, 85, 87, nil, 88, 95, 96, - nil, 81, 82, nil, 38, 39, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 210, nil, nil, - 214, nil, nil, 52, nil, nil, 54, nil, nil, nil, - nil, nil, 40, nil, nil, nil, nil, nil, nil, nil, - 218, nil, nil, nil, nil, 79, 73, 75, 76, 77, - 78, nil, nil, nil, 74, 80, nil, nil, nil, 63, - 64, 65, 56, 51, nil, 53, nil, 57, 58, nil, - 37, 83, 61, nil, 59, 60, 62, 258, 259, 66, - 67, nil, nil, nil, nil, nil, 257, 291, 295, 90, - 89, 91, 92, nil, nil, 219, nil, nil, nil, nil, - nil, nil, 41, nil, nil, 94, 93, nil, 84, 50, - 86, 85, 87, nil, 88, 95, 96, nil, 81, 82, - nil, 38, 39, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 210, nil, nil, 214, nil, nil, - 52, nil, nil, 54, nil, nil, nil, nil, nil, 40, - nil, nil, nil, nil, nil, nil, nil, 218, nil, nil, - nil, nil, 79, 73, 75, 76, 77, 78, nil, nil, - nil, 74, 80, nil, nil, nil, 63, 64, 65, 56, - 51, nil, 53, nil, 57, 58, nil, 37, 83, 61, - nil, 59, 60, 62, 258, 259, 66, 67, nil, nil, - nil, nil, nil, 257, 291, 295, 90, 89, 91, 92, - nil, nil, 219, nil, nil, nil, nil, nil, nil, 41, - nil, nil, 94, 93, nil, 84, 50, 86, 85, 87, - nil, 88, 95, 96, nil, 81, 82, nil, 38, 39, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 210, nil, nil, 214, nil, nil, 52, nil, nil, - 54, nil, nil, nil, nil, nil, 40, nil, nil, nil, - nil, nil, nil, nil, 218, nil, nil, nil, nil, 79, - 73, 75, 76, 77, 78, nil, nil, nil, 74, 80, - nil, nil, nil, 63, 64, 65, 56, 51, nil, 53, - nil, 57, 58, nil, 37, 83, 61, nil, 59, 60, - 62, 258, 259, 66, 67, nil, nil, nil, nil, nil, - 257, 291, 295, 90, 89, 91, 92, nil, nil, 219, - nil, nil, nil, nil, nil, nil, 41, nil, nil, 94, - 93, nil, 84, 50, 86, 85, 87, nil, 88, 95, - 96, nil, 81, 82, nil, 38, 39, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 210, nil, - nil, 214, nil, nil, 52, nil, nil, 54, nil, nil, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, 218, nil, nil, nil, nil, 79, 73, 75, 76, - 77, 78, nil, nil, nil, 74, 80, nil, nil, nil, - 63, 64, 65, 56, 51, nil, 53, nil, 57, 58, - nil, 37, 83, 61, nil, 59, 60, 62, 258, 259, - 66, 67, nil, nil, nil, nil, nil, 257, 291, 295, - 90, 89, 91, 92, nil, nil, 219, nil, nil, nil, - nil, nil, nil, 41, nil, nil, 94, 93, nil, 84, - 50, 86, 85, 87, nil, 88, 95, 96, nil, 81, - 82, nil, 38, 39, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 210, nil, nil, 214, nil, - nil, 52, nil, nil, 54, nil, nil, nil, nil, nil, - 40, nil, nil, nil, nil, nil, nil, nil, 218, nil, - nil, nil, nil, 79, 73, 75, 76, 77, 78, nil, - nil, nil, 74, 80, nil, nil, nil, 63, 64, 65, - 56, 51, nil, 53, nil, 57, 58, nil, 37, 83, - 61, nil, 59, 60, 62, 258, 259, 66, 67, nil, - nil, nil, nil, nil, 257, 291, 295, 90, 89, 91, - 92, nil, nil, 219, nil, nil, nil, nil, nil, nil, - 41, nil, nil, 94, 93, nil, 84, 50, 86, 85, - 87, nil, 88, 95, 96, nil, 81, 82, nil, 38, - 39, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 210, nil, nil, 214, nil, nil, 52, nil, - nil, 54, nil, nil, nil, nil, nil, 40, nil, nil, - nil, nil, nil, nil, nil, 218, nil, nil, nil, nil, - 79, 73, 75, 76, 77, 78, nil, nil, nil, 74, - 80, nil, nil, nil, 63, 64, 65, 56, 51, nil, - 53, nil, 57, 58, nil, 37, 83, 61, nil, 59, - 60, 62, 258, 259, 66, 67, nil, nil, nil, nil, - nil, 257, 28, 27, 90, 89, 91, 92, nil, nil, - 219, nil, nil, nil, nil, nil, nil, 41, nil, nil, - 94, 93, nil, 84, 50, 86, 85, 87, 261, 88, - 95, 96, nil, 81, 82, nil, 38, 39, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 210, - nil, nil, 214, nil, nil, 52, nil, nil, 54, nil, - 256, nil, 254, nil, 40, nil, nil, nil, nil, nil, - nil, nil, 218, nil, nil, nil, nil, 79, 73, 75, - 76, 77, 78, nil, nil, nil, 74, 80, nil, nil, - nil, 63, 64, 65, 56, 51, nil, 53, nil, 57, - 58, nil, 37, 83, 61, nil, 59, 60, 62, 258, - 259, 66, 67, nil, nil, nil, nil, nil, 257, 28, - 27, 90, 89, 91, 92, nil, nil, 219, nil, nil, - nil, nil, nil, nil, 41, nil, nil, 94, 93, nil, - 84, 50, 86, 85, 87, 261, 88, 95, 96, nil, - 81, 82, nil, 38, 39, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 210, nil, nil, 214, - nil, nil, 506, nil, nil, 54, nil, 256, nil, 254, - nil, 40, nil, nil, nil, nil, nil, nil, nil, 218, - nil, nil, nil, nil, 79, 73, 75, 76, 77, 78, - nil, nil, nil, 74, 80, nil, nil, nil, 63, 64, - 65, 56, 51, nil, 53, nil, 57, 58, nil, 37, - 83, 61, nil, 59, 60, 62, 258, 259, 66, 67, - nil, nil, nil, nil, nil, 257, 28, 27, 90, 89, - 91, 92, nil, nil, 219, nil, nil, nil, nil, nil, - nil, 41, nil, nil, 94, 93, nil, 84, 50, 86, - 85, 87, 261, 88, 95, 96, nil, 81, 82, nil, - 38, 39, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 210, nil, nil, 214, nil, 510, 52, - nil, nil, 54, nil, 256, nil, 254, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 218, nil, nil, nil, - nil, 79, 73, 75, 76, 77, 78, nil, nil, nil, - 74, 80, nil, nil, nil, nil, nil, nil, 56, nil, - nil, 53, nil, nil, nil, nil, 37, 83, 63, 64, - 65, 8, 51, nil, nil, nil, 57, 58, nil, nil, - nil, 61, nil, 59, 60, 62, 23, 24, 66, 67, - nil, nil, nil, nil, nil, 22, 28, 27, 90, 89, - 91, 92, nil, nil, 17, nil, nil, nil, nil, nil, - 7, 41, nil, 9, 94, 93, nil, 84, 50, 86, - 85, 87, nil, 88, 95, 96, nil, 81, 82, nil, - 38, 39, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 36, nil, nil, 281, nil, nil, 52, - nil, nil, 54, nil, 32, nil, nil, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 18, nil, nil, nil, - nil, 79, 73, 75, 76, 77, 78, nil, nil, nil, - 74, 80, nil, nil, nil, 63, 64, 65, 56, 51, - nil, 53, nil, 57, 58, nil, 37, 83, 61, nil, - 59, 60, 62, 258, 259, 66, 67, nil, nil, nil, - nil, nil, 257, 291, 295, 90, 89, 91, 92, nil, - nil, 219, nil, nil, nil, nil, nil, nil, 292, nil, - nil, 94, 93, nil, 84, 50, 86, 85, 87, nil, - 88, 95, 96, nil, 81, 82, 764, nil, 336, 334, - 333, 754, 335, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 751, nil, nil, nil, nil, nil, nil, nil, - 289, nil, nil, 214, nil, nil, 52, nil, nil, 54, - nil, nil, nil, nil, nil, 338, nil, nil, nil, nil, - nil, nil, nil, 341, 340, 344, 343, nil, 79, 73, - 75, 76, 77, 78, nil, nil, nil, 74, 80, nil, - nil, nil, 518, nil, nil, 56, nil, nil, 53, nil, - nil, nil, nil, 296, 83, 63, 64, 65, 8, 51, - nil, nil, 752, 57, 58, nil, nil, nil, 61, nil, - 59, 60, 62, 23, 24, 66, 67, nil, nil, nil, - nil, nil, 22, 28, 27, 90, 89, 91, 92, nil, - nil, 17, nil, nil, nil, nil, nil, 7, 41, nil, - 9, 94, 93, nil, 84, 50, 86, 85, 87, nil, - 88, 95, 96, nil, 81, 82, nil, 38, 39, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 36, nil, nil, 281, nil, nil, 52, nil, nil, 54, - nil, 32, nil, nil, nil, 40, nil, nil, nil, nil, - nil, nil, nil, 18, nil, nil, nil, nil, 79, 73, - 75, 76, 77, 78, nil, nil, nil, 74, 80, nil, - nil, nil, 63, 64, 65, 56, 51, nil, 53, nil, - 57, 58, nil, 37, 83, 61, nil, 59, 60, 62, - 258, 259, 66, 67, nil, nil, nil, nil, nil, 257, - 291, 295, 90, 89, 91, 92, nil, nil, 219, nil, - nil, nil, nil, nil, nil, 292, nil, nil, 94, 93, - nil, 84, 50, 86, 85, 87, nil, 88, 95, 96, - nil, 81, 82, 327, nil, 336, 334, 333, nil, 335, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 289, nil, nil, - 286, nil, nil, 52, nil, nil, 54, nil, nil, nil, - nil, nil, 338, 322, nil, nil, nil, nil, nil, nil, - 341, 340, 344, 343, nil, 79, 73, 75, 76, 77, - 78, nil, nil, nil, 74, 80, nil, nil, nil, 63, - 64, 65, 56, 51, nil, 53, nil, 57, 58, nil, - 296, 83, 61, nil, 59, 60, 62, 258, 259, 66, - 67, nil, nil, nil, nil, nil, 257, 291, 295, 90, - 89, 91, 92, nil, nil, 219, nil, nil, nil, nil, - nil, nil, 41, nil, nil, 94, 93, nil, 84, 50, - 86, 85, 87, nil, 88, 95, 96, nil, 81, 82, - nil, 38, 39, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 210, nil, nil, 214, 537, nil, - 52, nil, nil, 54, nil, nil, nil, nil, nil, 40, - nil, nil, nil, nil, nil, nil, nil, 218, nil, nil, - nil, nil, 79, 73, 75, 76, 77, 78, nil, nil, - nil, 74, 80, nil, nil, nil, nil, nil, nil, 56, - nil, nil, 53, nil, nil, nil, nil, 37, 83, 63, - 64, 65, 8, 51, nil, nil, nil, 57, 58, nil, - nil, nil, 61, nil, 59, 60, 62, 23, 24, 66, - 67, nil, nil, nil, nil, nil, 22, 28, 27, 90, - 89, 91, 92, nil, nil, 17, nil, nil, nil, nil, - nil, 7, 41, nil, 9, 94, 93, nil, 84, 50, - 86, 85, 87, nil, 88, 95, 96, nil, 81, 82, - nil, 38, 39, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 36, nil, nil, 30, nil, nil, - 52, nil, nil, 54, nil, 32, nil, nil, nil, 40, - nil, nil, nil, nil, nil, nil, nil, 18, nil, nil, - nil, nil, 79, 73, 75, 76, 77, 78, nil, nil, - nil, 74, 80, nil, nil, nil, 63, 64, 65, 56, - 51, nil, 53, nil, 57, 58, nil, 37, 83, 61, - nil, 59, 60, 62, 23, 24, 66, 67, nil, nil, - nil, nil, nil, 22, 28, 27, 90, 89, 91, 92, - nil, nil, 17, nil, nil, nil, nil, nil, nil, 41, - nil, nil, 94, 93, nil, 84, 50, 86, 85, 87, - nil, 88, 95, 96, nil, 81, 82, nil, 38, 39, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 210, nil, nil, 214, nil, nil, 52, nil, nil, - 54, nil, nil, nil, nil, nil, 40, nil, nil, nil, - nil, nil, nil, nil, 18, nil, nil, nil, nil, 79, - 73, 75, 76, 77, 78, nil, nil, nil, 74, 80, - nil, nil, nil, 63, 64, 65, 56, 51, nil, 53, - nil, 57, 58, nil, 37, 83, 61, nil, 59, 60, - 62, 23, 24, 66, 67, nil, nil, nil, nil, nil, - 22, 28, 27, 90, 89, 91, 92, nil, nil, 17, - nil, nil, nil, nil, nil, nil, 41, nil, nil, 94, - 93, nil, 84, 50, 86, 85, 87, nil, 88, 95, - 96, nil, 81, 82, nil, 38, 39, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 210, nil, - nil, 214, nil, nil, 52, nil, nil, 54, nil, nil, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, 18, nil, nil, nil, nil, 79, 73, 75, 76, - 77, 78, nil, nil, nil, 74, 80, nil, nil, nil, - 63, 64, 65, 56, 51, nil, 53, nil, 57, 58, - nil, 37, 83, 61, nil, 59, 60, 62, 258, 259, - 66, 67, nil, nil, nil, nil, nil, 257, 291, 295, - 90, 89, 91, 92, nil, nil, 219, nil, nil, nil, - nil, nil, nil, 292, nil, nil, 94, 93, nil, 84, - 50, 86, 85, 361, nil, 88, 95, 96, nil, 81, - 82, 327, nil, 336, 334, 333, nil, 335, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 362, nil, nil, 214, nil, - nil, 52, nil, nil, 54, nil, nil, nil, nil, nil, - 338, nil, 554, nil, nil, nil, nil, nil, 341, 340, - 344, 343, nil, 79, 73, 75, 76, 77, 78, nil, - nil, nil, 74, 80, nil, nil, nil, 63, 64, 65, - 56, 51, nil, 53, nil, 57, 58, nil, 296, 83, - 61, nil, 59, 60, 62, 23, 24, 66, 67, nil, - nil, nil, nil, nil, 22, 28, 27, 90, 89, 91, - 92, nil, nil, 17, nil, nil, nil, nil, nil, nil, - 41, nil, nil, 94, 93, nil, 84, 50, 86, 85, - 87, nil, 88, 95, 96, nil, 81, 82, nil, 38, - 39, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 210, nil, nil, 214, nil, nil, 52, nil, - nil, 54, nil, nil, nil, nil, nil, 40, nil, nil, - nil, nil, nil, nil, nil, 18, nil, nil, nil, nil, - 79, 73, 75, 76, 77, 78, nil, nil, nil, 74, - 80, nil, nil, nil, 63, 64, 65, 56, 51, nil, - 53, nil, 57, 58, nil, 37, 83, 61, nil, 59, - 60, 62, 258, 259, 66, 67, nil, nil, nil, nil, - nil, 257, 291, 295, 90, 89, 91, 92, nil, nil, - 219, nil, nil, nil, nil, nil, nil, 41, nil, nil, - 94, 93, nil, 84, 50, 86, 85, 87, nil, 88, - 95, 96, nil, 81, 82, nil, 38, 39, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 210, - nil, nil, 214, nil, nil, 52, nil, nil, 54, nil, - nil, nil, nil, nil, 40, nil, nil, nil, nil, nil, - nil, nil, 218, nil, nil, nil, nil, 79, 73, 75, - 76, 77, 78, nil, nil, nil, 74, 80, nil, nil, - nil, -255, -255, -255, 56, -255, nil, 53, nil, -255, - -255, nil, 37, 83, -255, nil, -255, -255, -255, -255, - -255, -255, -255, nil, nil, nil, nil, nil, -255, -255, - -255, -255, -255, -255, -255, nil, nil, -255, nil, nil, - nil, nil, nil, nil, -255, nil, nil, -255, -255, nil, - -255, -255, -255, -255, -255, -255, -255, -255, -255, nil, - -255, -255, nil, -255, -255, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, -255, nil, nil, -255, - 268, nil, -255, nil, nil, -255, nil, -255, nil, -255, - nil, -255, nil, nil, nil, nil, nil, nil, nil, -255, - nil, nil, nil, nil, -255, -255, -255, -255, -255, -255, - nil, nil, nil, -255, -255, nil, nil, nil, -536, -536, - -536, -255, -536, nil, -255, nil, -536, -536, nil, -255, - -255, -536, nil, -536, -536, -536, -536, -536, -536, -536, - nil, nil, nil, nil, nil, -536, -536, -536, -536, -536, - -536, -536, nil, nil, -536, nil, nil, nil, nil, nil, - nil, -536, nil, nil, -536, -536, nil, -536, -536, -536, - -536, -536, -536, -536, -536, -536, nil, -536, -536, nil, - -536, -536, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, -536, nil, nil, -536, -536, nil, -536, - nil, nil, -536, nil, -536, nil, -536, nil, -536, nil, - nil, nil, nil, nil, nil, nil, -536, nil, nil, nil, - nil, -536, -536, -536, -536, -536, -536, nil, nil, nil, - -536, -536, nil, nil, nil, -537, -537, -537, -536, -537, - nil, -536, nil, -537, -537, nil, -536, -536, -537, nil, - -537, -537, -537, -537, -537, -537, -537, nil, nil, nil, - nil, nil, -537, -537, -537, -537, -537, -537, -537, nil, - nil, -537, nil, nil, nil, nil, nil, nil, -537, nil, - nil, -537, -537, nil, -537, -537, -537, -537, -537, -537, - -537, -537, -537, nil, -537, -537, nil, -537, -537, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - -537, nil, nil, -537, -537, nil, -537, nil, nil, -537, - nil, -537, nil, -537, nil, -537, nil, nil, nil, nil, - nil, nil, nil, -537, nil, nil, nil, nil, -537, -537, - -537, -537, -537, -537, nil, nil, nil, -537, -537, nil, - nil, nil, -255, -255, -255, -537, -255, nil, -537, nil, - -255, -255, nil, -537, -537, -255, nil, -255, -255, -255, - -255, -255, -255, -255, nil, nil, nil, nil, nil, -255, - -255, -255, -255, -255, -255, -255, nil, nil, -255, nil, - nil, nil, nil, nil, nil, -255, nil, nil, -255, -255, - nil, -255, -255, -255, -255, -255, -255, -255, -255, -255, - nil, -255, -255, nil, -255, -255, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, -255, nil, nil, - -255, 268, nil, -255, nil, nil, -255, nil, -255, nil, - -255, nil, -255, nil, nil, nil, nil, nil, nil, nil, - -255, nil, nil, nil, nil, -255, -255, -255, -255, -255, - -255, nil, nil, nil, -255, -255, nil, nil, nil, 63, - 64, 65, -255, 51, nil, -255, nil, 57, 58, nil, - -255, -255, 61, nil, 59, 60, 62, 258, 259, 66, - 67, nil, nil, nil, nil, nil, 257, 28, 27, 90, - 89, 91, 92, nil, nil, 219, nil, nil, nil, nil, - nil, nil, 41, nil, nil, 94, 93, nil, 84, 50, - 86, 85, 87, 261, 88, 95, 96, nil, 81, 82, - nil, 38, 39, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 210, nil, nil, 214, nil, nil, - 52, nil, nil, 54, nil, 256, nil, nil, nil, 40, - nil, nil, nil, nil, nil, nil, nil, 218, nil, nil, - nil, nil, 79, 73, 75, 76, 77, 78, nil, nil, - nil, 74, 80, nil, nil, nil, 63, 64, 65, 56, - 51, nil, 53, nil, 57, 58, nil, 37, 83, 61, - nil, 59, 60, 62, 258, 259, 66, 67, nil, nil, - nil, nil, nil, 257, 28, 27, 90, 89, 91, 92, - nil, nil, 219, nil, nil, nil, nil, nil, nil, 41, - nil, nil, 94, 93, nil, 84, 50, 86, 85, 87, - 261, 88, 95, 96, nil, 81, 82, nil, 38, 39, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 210, nil, nil, 214, nil, nil, 52, nil, nil, - 54, nil, 256, nil, nil, nil, 40, nil, nil, nil, - nil, nil, nil, nil, 218, nil, nil, nil, nil, 79, - 73, 75, 76, 77, 78, nil, nil, nil, 74, 80, - nil, nil, nil, 63, 64, 65, 56, 51, nil, 53, - nil, 57, 58, nil, 37, 83, 61, nil, 59, 60, - 62, 258, 259, 66, 67, nil, nil, nil, nil, nil, - 257, 291, 295, 90, 89, 91, 92, nil, nil, 219, - nil, nil, nil, nil, nil, nil, 41, nil, nil, 94, - 93, nil, 84, 50, 86, 85, 87, nil, 88, 95, - 96, nil, 81, 82, nil, 38, 39, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 210, nil, - nil, 214, nil, nil, 52, nil, nil, 54, nil, nil, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, 218, nil, nil, nil, nil, 79, 73, 75, 76, - 77, 78, nil, nil, nil, 74, 80, nil, nil, nil, - 63, 64, 65, 56, 51, nil, 53, nil, 57, 58, - nil, 37, 83, 61, nil, 59, 60, 62, 258, 259, - 66, 67, nil, nil, nil, nil, nil, 257, 291, 295, - 90, 89, 91, 92, nil, nil, 219, nil, nil, nil, - nil, nil, nil, 41, nil, nil, 94, 93, nil, 84, - 50, 86, 85, 87, nil, 88, 95, 96, nil, 81, - 82, nil, 38, 39, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 210, nil, nil, 214, nil, - nil, 52, nil, nil, 54, nil, nil, nil, nil, nil, - 40, nil, nil, nil, nil, nil, nil, nil, 218, nil, - nil, nil, nil, 79, 73, 75, 76, 77, 78, nil, - nil, nil, 74, 80, nil, nil, nil, 63, 64, 65, - 56, 51, nil, 53, nil, 57, 58, nil, 37, 83, - 61, nil, 59, 60, 62, 258, 259, 66, 67, nil, - nil, nil, nil, nil, 257, 291, 295, 90, 89, 91, - 92, nil, nil, 219, nil, nil, nil, nil, nil, nil, - 41, nil, nil, 94, 93, nil, 84, 50, 86, 85, - 87, nil, 88, 95, 96, nil, 81, 82, nil, 38, - 39, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 210, nil, nil, 214, nil, nil, 52, nil, - nil, 54, nil, nil, nil, nil, nil, 40, nil, nil, - nil, nil, nil, nil, nil, 218, nil, nil, nil, nil, - 79, 73, 75, 76, 77, 78, nil, nil, nil, 74, - 80, nil, nil, nil, 63, 64, 65, 56, 51, nil, - 53, nil, 57, 58, nil, 37, 83, 61, nil, 59, - 60, 62, 258, 259, 66, 67, nil, nil, nil, nil, - nil, 257, 291, 295, 90, 89, 91, 92, nil, nil, - 219, nil, nil, nil, nil, nil, nil, 41, nil, nil, - 94, 93, nil, 84, 50, 86, 85, 87, 261, 88, - 95, 96, nil, 81, 82, nil, 38, 39, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 210, - nil, nil, 214, nil, nil, 52, nil, nil, 54, nil, - 658, nil, 254, nil, 40, nil, nil, nil, nil, nil, - nil, nil, 218, nil, nil, nil, nil, 79, 73, 75, - 76, 77, 78, nil, nil, nil, 74, 80, nil, nil, - nil, 63, 64, 65, 56, 51, nil, 53, nil, 57, - 58, nil, 37, 83, 61, nil, 59, 60, 62, 258, - 259, 66, 67, nil, nil, nil, nil, nil, 257, 291, - 295, 90, 89, 91, 92, nil, nil, 219, nil, nil, - nil, nil, nil, nil, 41, nil, nil, 94, 93, nil, - 84, 50, 86, 85, 87, 261, 88, 95, 96, nil, - 81, 82, nil, 38, 39, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 210, nil, nil, 214, - nil, nil, 52, nil, nil, 54, nil, nil, nil, 254, - nil, 40, nil, nil, nil, nil, nil, nil, nil, 218, - nil, nil, nil, nil, 79, 73, 75, 76, 77, 78, - nil, nil, nil, 74, 80, nil, nil, nil, 63, 64, - 65, 56, 51, nil, 53, nil, 57, 58, nil, 37, - 83, 61, nil, 59, 60, 62, 258, 259, 66, 67, - nil, nil, nil, nil, nil, 257, 291, 295, 90, 89, - 91, 92, nil, nil, 219, nil, nil, nil, nil, nil, - nil, 41, nil, nil, 94, 93, nil, 84, 50, 86, - 85, 87, nil, 88, 95, 96, nil, 81, 82, nil, - 38, 39, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 210, nil, nil, 214, nil, nil, 52, - nil, nil, 54, nil, nil, nil, nil, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 218, nil, nil, nil, - nil, 79, 73, 75, 76, 77, 78, nil, nil, nil, - 74, 80, nil, nil, nil, 63, 64, 65, 56, 51, - nil, 53, nil, 57, 58, nil, 37, 83, 61, nil, - 59, 60, 62, 23, 24, 66, 67, nil, nil, nil, - nil, nil, 22, 28, 27, 90, 89, 91, 92, nil, - nil, 17, nil, nil, nil, nil, nil, nil, 41, nil, - nil, 94, 93, nil, 84, 50, 86, 85, 87, nil, - 88, 95, 96, nil, 81, 82, nil, 38, 39, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 210, nil, nil, 214, nil, 675, 52, nil, nil, 54, - nil, nil, nil, 254, nil, 40, nil, nil, nil, nil, - nil, nil, nil, 18, nil, nil, nil, nil, 79, 73, - 75, 76, 77, 78, nil, nil, nil, 74, 80, nil, - nil, nil, nil, nil, nil, 56, nil, nil, 53, nil, - nil, nil, nil, 37, 83, 63, 64, 65, 8, 51, - nil, nil, nil, 57, 58, nil, nil, nil, 61, nil, - 59, 60, 62, 23, 24, 66, 67, nil, nil, nil, - nil, nil, 22, 28, 27, 90, 89, 91, 92, nil, - nil, 17, nil, nil, nil, nil, nil, 7, 41, nil, - 9, 94, 93, nil, 84, 50, 86, 85, 87, nil, - 88, 95, 96, nil, 81, 82, nil, 38, 39, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 36, nil, nil, 30, nil, nil, 52, nil, nil, 54, - nil, 32, nil, nil, nil, 40, nil, nil, nil, nil, - nil, nil, nil, 18, nil, nil, nil, nil, 79, 73, - 75, 76, 77, 78, nil, nil, nil, 74, 80, nil, - nil, nil, nil, nil, 404, 56, nil, nil, 53, nil, - nil, nil, nil, 37, 83, 63, 64, 65, nil, 51, - nil, nil, nil, 57, 58, nil, nil, nil, 61, nil, - 59, 60, 62, 258, 259, 66, 67, nil, nil, nil, - nil, nil, 257, 291, 295, 90, 89, 91, 92, nil, - nil, 219, nil, nil, nil, nil, nil, nil, 292, nil, - nil, 94, 93, nil, 84, 50, 86, 85, 87, nil, - 88, 95, 96, nil, 81, 82, 327, nil, 336, 334, - 333, nil, 335, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 289, nil, nil, 286, nil, nil, 52, nil, nil, 54, - nil, nil, nil, nil, nil, 338, nil, nil, nil, nil, - nil, nil, nil, 341, 340, 344, 343, nil, 79, 73, - 75, 76, 77, 78, nil, nil, nil, 74, 80, nil, - nil, nil, 63, 64, 65, 56, 51, nil, 53, nil, - 57, 58, nil, 296, 83, 61, nil, 59, 60, 62, - 258, 259, 66, 67, nil, nil, nil, nil, nil, 257, - 28, 27, 90, 89, 91, 92, nil, nil, 219, nil, - nil, nil, nil, nil, nil, 41, nil, nil, 94, 93, - nil, 84, 50, 86, 85, 87, 261, 88, 95, 96, - nil, 81, 82, nil, 38, 39, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 210, nil, nil, - 214, nil, nil, 52, nil, nil, 54, nil, 256, nil, - nil, nil, 40, nil, nil, nil, nil, nil, nil, nil, - 218, nil, nil, nil, nil, 79, 73, 75, 76, 77, - 78, nil, nil, nil, 74, 80, nil, nil, nil, 63, - 64, 65, 56, 51, nil, 53, nil, 57, 58, nil, - 37, 83, 61, nil, 59, 60, 62, 258, 259, 66, - 67, nil, nil, nil, nil, nil, 257, 28, 27, 90, - 89, 91, 92, nil, nil, 219, nil, nil, nil, nil, - nil, nil, 41, nil, nil, 94, 93, nil, 84, 50, - 86, 85, 87, 261, 88, 95, 96, nil, 81, 82, - nil, 38, 39, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 210, nil, nil, 214, nil, nil, - 52, nil, nil, 54, nil, 256, nil, nil, nil, 40, - nil, nil, nil, nil, nil, nil, nil, 218, nil, nil, - nil, nil, 79, 73, 75, 76, 77, 78, nil, nil, - nil, 74, 80, nil, nil, nil, 63, 64, 65, 56, - 51, nil, 53, nil, 57, 58, nil, 37, 83, 61, - nil, 59, 60, 62, 258, 259, 66, 67, nil, nil, - nil, nil, nil, 257, 291, 295, 90, 89, 91, 92, - nil, nil, 219, nil, nil, nil, nil, nil, nil, 41, - nil, nil, 94, 93, nil, 84, 50, 86, 85, 87, - nil, 88, 95, 96, nil, 81, 82, nil, 38, 39, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 210, nil, nil, 214, nil, nil, 52, nil, nil, - 54, nil, nil, nil, nil, nil, 40, nil, nil, nil, - nil, nil, nil, nil, 218, nil, nil, nil, nil, 79, - 73, 75, 76, 77, 78, nil, nil, nil, 74, 80, - nil, nil, nil, 63, 64, 65, 56, 51, nil, 53, - nil, 57, 58, nil, 37, 83, 61, nil, 59, 60, - 62, 258, 259, 66, 67, nil, nil, nil, nil, nil, - 257, 291, 295, 90, 89, 91, 92, nil, nil, 219, - nil, nil, nil, nil, nil, nil, 41, nil, nil, 94, - 93, nil, 84, 50, 86, 85, 87, nil, 88, 95, - 96, nil, 81, 82, nil, 38, 39, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 210, nil, - nil, 214, nil, nil, 52, nil, nil, 54, nil, nil, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, 218, nil, nil, nil, nil, 79, 73, 75, 76, - 77, 78, nil, nil, nil, 74, 80, nil, nil, nil, - 63, 64, 65, 56, 51, nil, 53, nil, 57, 58, - nil, 37, 83, 61, nil, 59, 60, 62, 258, 259, - 66, 67, nil, nil, nil, nil, nil, 257, 291, 295, - 90, 89, 91, 92, nil, nil, 219, nil, nil, nil, - nil, nil, nil, 41, nil, nil, 94, 93, nil, 84, - 50, 86, 85, 87, nil, 88, 95, 96, nil, 81, - 82, nil, 38, 39, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 210, nil, nil, 214, nil, - nil, 52, nil, nil, 54, nil, nil, nil, nil, nil, - 40, nil, nil, nil, nil, nil, nil, nil, 218, nil, - nil, nil, nil, 79, 73, 75, 76, 77, 78, nil, - nil, nil, 74, 80, nil, nil, nil, 63, 64, 65, - 56, 51, nil, 53, nil, 57, 58, nil, 37, 83, - 61, nil, 59, 60, 62, 23, 24, 66, 67, nil, - nil, nil, nil, nil, 22, 28, 27, 90, 89, 91, - 92, nil, nil, 17, nil, nil, nil, nil, nil, nil, - 41, nil, nil, 94, 93, nil, 84, 50, 86, 85, - 87, nil, 88, 95, 96, nil, 81, 82, nil, 38, - 39, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 210, nil, nil, 214, nil, nil, 52, nil, - nil, 54, nil, nil, nil, nil, nil, 40, nil, nil, - nil, nil, nil, nil, nil, 18, nil, nil, nil, nil, - 79, 73, 75, 76, 77, 78, nil, nil, nil, 74, - 80, nil, nil, nil, 63, 64, 65, 56, 51, nil, - 53, nil, 57, 58, nil, 37, 83, 61, nil, 59, - 60, 62, 258, 259, 66, 67, nil, nil, nil, nil, - nil, 257, 291, 295, 90, 89, 91, 92, nil, nil, - 219, nil, nil, nil, nil, nil, nil, 41, nil, nil, - 94, 93, nil, 84, 50, 86, 85, 87, 261, 88, - 95, 96, nil, 81, 82, nil, 38, 39, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 210, - nil, nil, 214, nil, nil, 52, nil, nil, 54, nil, - 658, nil, nil, nil, 40, nil, nil, nil, nil, nil, - nil, nil, 218, nil, nil, nil, nil, 79, 73, 75, - 76, 77, 78, nil, nil, nil, 74, 80, nil, nil, - nil, 63, 64, 65, 56, 51, nil, 53, nil, 57, - 58, nil, 37, 83, 61, nil, 59, 60, 62, 258, - 259, 66, 67, nil, nil, nil, nil, nil, 257, 291, - 295, 90, 89, 91, 92, nil, nil, 219, nil, nil, - nil, nil, nil, nil, 41, nil, nil, 94, 93, nil, - 84, 50, 86, 85, 87, 261, 88, 95, 96, nil, - 81, 82, nil, 38, 39, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 210, nil, nil, 214, - nil, nil, 52, nil, nil, 54, nil, nil, nil, nil, - nil, 40, nil, nil, nil, nil, nil, nil, nil, 218, - nil, nil, nil, nil, 79, 73, 75, 76, 77, 78, - nil, nil, nil, 74, 80, nil, nil, nil, nil, nil, - nil, 56, nil, nil, 53, nil, nil, nil, nil, 37, - 83, 63, 64, 65, 8, 51, nil, nil, nil, 57, - 58, nil, nil, nil, 61, nil, 59, 60, 62, 23, - 24, 66, 67, nil, nil, nil, nil, nil, 22, 28, - 27, 90, 89, 91, 92, nil, nil, 17, nil, nil, - nil, nil, nil, 7, 41, nil, 9, 94, 93, nil, - 84, 50, 86, 85, 87, nil, 88, 95, 96, nil, - 81, 82, nil, 38, 39, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 36, nil, nil, 30, - nil, nil, 52, nil, nil, 54, nil, 32, nil, nil, - nil, 40, nil, nil, nil, nil, nil, nil, nil, 18, - nil, nil, nil, nil, 79, 73, 75, 76, 77, 78, - nil, nil, nil, 74, 80, nil, nil, nil, nil, nil, - nil, 56, nil, nil, 53, nil, nil, nil, nil, 37, - 83, 63, 64, 65, 8, 51, nil, nil, nil, 57, - 58, nil, nil, nil, 61, nil, 59, 60, 62, 23, - 24, 66, 67, nil, nil, nil, nil, nil, 22, 28, - 27, 90, 89, 91, 92, nil, nil, 17, nil, nil, - nil, nil, nil, 7, 41, nil, 9, 94, 93, nil, - 84, 50, 86, 85, 87, nil, 88, 95, 96, nil, - 81, 82, nil, 38, 39, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 36, nil, nil, 30, - nil, nil, 52, nil, nil, 54, nil, 32, nil, nil, - nil, 40, nil, nil, nil, nil, nil, nil, nil, 18, - nil, nil, nil, nil, 79, 73, 75, 76, 77, 78, - nil, nil, nil, 74, 80, nil, nil, nil, 63, 64, - 65, 56, 51, nil, 53, nil, 57, 58, nil, 37, - 83, 61, nil, 59, 60, 62, 258, 259, 66, 67, - nil, nil, nil, nil, nil, 257, 291, 295, 90, 89, - 91, 92, nil, nil, 219, nil, nil, nil, nil, nil, - nil, 292, nil, nil, 94, 93, nil, 84, 50, 86, - 85, 87, nil, 88, 95, 96, nil, 81, 82, 764, - nil, 336, 334, 333, 754, 335, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 751, nil, nil, nil, nil, - nil, nil, nil, 712, nil, nil, 214, nil, nil, 52, - nil, nil, 54, nil, nil, nil, nil, nil, 338, nil, - nil, nil, nil, nil, nil, nil, 341, 340, 344, 343, - nil, 79, 73, 75, 76, 77, 78, nil, nil, nil, - 74, 80, nil, nil, nil, nil, nil, nil, 56, nil, - nil, 53, nil, nil, nil, nil, 296, 83, 63, 64, - 65, 8, 51, nil, nil, 752, 57, 58, nil, nil, - nil, 61, nil, 59, 60, 62, 23, 24, 66, 67, - nil, nil, nil, nil, nil, 22, 28, 27, 90, 89, - 91, 92, nil, nil, 17, nil, nil, nil, nil, nil, - 7, 41, nil, 9, 94, 93, nil, 84, 50, 86, - 85, 87, nil, 88, 95, 96, nil, 81, 82, nil, - 38, 39, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 36, nil, nil, 30, nil, nil, 52, - nil, nil, 54, nil, 32, nil, nil, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 18, nil, nil, nil, - nil, 79, 73, 75, 76, 77, 78, nil, nil, nil, - 74, 80, nil, nil, nil, nil, nil, nil, 56, nil, - nil, 53, nil, nil, nil, nil, 37, 83, 63, 64, - 65, 8, 51, nil, nil, nil, 57, 58, nil, nil, - nil, 61, nil, 59, 60, 62, 23, 24, 66, 67, - nil, nil, nil, nil, nil, 22, 28, 27, 90, 89, - 91, 92, nil, nil, 17, nil, nil, nil, nil, nil, - 7, 41, nil, 9, 94, 93, nil, 84, 50, 86, - 85, 87, nil, 88, 95, 96, nil, 81, 82, nil, - 38, 39, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 36, nil, nil, 30, nil, nil, 52, - nil, nil, 54, nil, 32, nil, nil, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 18, nil, nil, nil, - nil, 79, 73, 75, 76, 77, 78, nil, nil, nil, - 74, 80, nil, nil, nil, nil, nil, nil, 56, nil, - nil, 53, nil, nil, nil, nil, 37, 83, 63, 64, - 65, 8, 51, nil, nil, nil, 57, 58, nil, nil, - nil, 61, nil, 59, 60, 62, 23, 24, 66, 67, - nil, nil, nil, nil, nil, 22, 28, 27, 90, 89, - 91, 92, nil, nil, 17, nil, nil, nil, nil, nil, - 7, 41, nil, 9, 94, 93, nil, 84, 50, 86, - 85, 87, nil, 88, 95, 96, nil, 81, 82, nil, - 38, 39, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 36, nil, nil, 30, nil, nil, 52, - nil, nil, 54, nil, 32, nil, nil, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 18, nil, nil, nil, - nil, 79, 73, 75, 76, 77, 78, nil, nil, nil, - 74, 80, nil, nil, nil, 63, 64, 65, 56, 51, - nil, 53, nil, 57, 58, nil, 37, 83, 61, nil, - 59, 60, 62, 258, 259, 66, 67, nil, nil, nil, - nil, nil, 257, 28, 27, 90, 89, 91, 92, nil, - nil, 219, nil, nil, nil, nil, nil, nil, 41, nil, - nil, 94, 93, nil, 84, 50, 86, 85, 87, 261, - 88, 95, 96, nil, 81, 82, nil, 38, 39, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 210, nil, nil, 214, nil, nil, 52, nil, nil, 54, - nil, 256, nil, nil, nil, 40, nil, nil, nil, nil, - nil, nil, nil, 218, nil, nil, nil, nil, 79, 73, - 75, 76, 77, 78, nil, nil, nil, 74, 80, nil, - nil, nil, 63, 64, 65, 56, 51, nil, 53, nil, - 57, 58, nil, 37, 83, 61, nil, 59, 60, 62, - 258, 259, 66, 67, nil, nil, nil, nil, nil, 257, - 28, 27, 90, 89, 91, 92, nil, nil, 219, nil, - nil, nil, nil, nil, nil, 41, nil, nil, 94, 93, - nil, 84, 50, 86, 85, 87, 261, 88, 95, 96, - nil, 81, 82, nil, 38, 39, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 210, nil, nil, - 214, nil, nil, 52, nil, nil, 54, nil, 256, nil, - nil, nil, 40, nil, nil, nil, nil, nil, nil, nil, - 218, nil, nil, nil, nil, 79, 73, 75, 76, 77, - 78, nil, nil, nil, 74, 80, nil, nil, nil, 63, - 64, 65, 56, 51, nil, 53, nil, 57, 58, nil, - 37, 83, 61, nil, 59, 60, 62, 258, 259, 66, - 67, nil, nil, nil, nil, nil, 257, 28, 27, 90, - 89, 91, 92, nil, nil, 219, nil, nil, nil, nil, - nil, nil, 41, nil, nil, 94, 93, nil, 84, 50, - 86, 85, 87, 261, 88, 95, 96, nil, 81, 82, - nil, 38, 39, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 210, nil, nil, 214, nil, nil, - 52, nil, nil, 54, nil, 256, nil, nil, nil, 40, - nil, nil, nil, nil, nil, nil, nil, 218, nil, nil, - nil, nil, 79, 73, 75, 76, 77, 78, nil, nil, - nil, 74, 80, nil, nil, nil, 63, 64, 65, 56, - 51, nil, 53, nil, 57, 58, nil, 37, 83, 61, - nil, 59, 60, 62, 23, 24, 66, 67, nil, nil, - nil, nil, nil, 22, 28, 27, 90, 89, 91, 92, - nil, nil, 17, nil, nil, nil, nil, nil, nil, 41, - nil, nil, 94, 93, nil, 84, 50, 86, 85, 87, - nil, 88, 95, 96, nil, 81, 82, nil, 38, 39, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 210, nil, nil, 214, nil, nil, 52, nil, nil, - 54, nil, nil, nil, nil, nil, 40, nil, nil, nil, - nil, nil, nil, nil, 18, nil, nil, nil, nil, 79, - 73, 75, 76, 77, 78, nil, nil, nil, 74, 80, - nil, nil, nil, 63, 64, 65, 56, 51, nil, 53, - nil, 57, 58, nil, 37, 83, 61, nil, 59, 60, - 62, 23, 24, 66, 67, nil, nil, nil, nil, nil, - 22, 28, 27, 90, 89, 91, 92, nil, nil, 17, - nil, nil, nil, nil, nil, nil, 41, nil, nil, 94, - 93, nil, 84, 50, 86, 85, 87, nil, 88, 95, - 96, nil, 81, 82, nil, 38, 39, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 210, nil, - nil, 214, nil, nil, 52, nil, nil, 54, nil, nil, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, 18, nil, nil, nil, nil, 79, 73, 75, 76, - 77, 78, nil, nil, nil, 74, 80, nil, nil, nil, - 63, 64, 65, 56, 51, nil, 53, nil, 57, 58, - nil, 37, 83, 61, nil, 59, 60, 62, 258, 259, - 66, 67, nil, nil, nil, nil, nil, 257, 291, 295, - 90, 89, 91, 92, nil, nil, 219, nil, nil, nil, - nil, nil, nil, 41, nil, nil, 94, 93, nil, 84, - 50, 86, 85, 87, nil, 88, 95, 96, nil, 81, - 82, nil, 38, 39, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 210, nil, nil, 214, nil, - nil, 52, nil, nil, 54, nil, nil, nil, nil, nil, - 40, nil, nil, nil, nil, nil, nil, nil, 218, nil, - nil, nil, nil, 79, 73, 75, 76, 77, 78, nil, - nil, nil, 74, 80, nil, nil, nil, 63, 64, 65, - 56, 51, nil, 53, nil, 57, 58, nil, 37, 83, - 61, nil, 59, 60, 62, 258, 259, 66, 67, nil, - nil, nil, nil, nil, 257, 291, 295, 90, 89, 91, - 92, nil, nil, 219, nil, nil, nil, nil, nil, nil, - 41, nil, nil, 94, 93, nil, 84, 50, 86, 85, - 87, nil, 88, 95, 96, nil, 81, 82, nil, 38, - 39, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 210, nil, nil, 214, nil, nil, 52, nil, - nil, 54, nil, 775, nil, nil, nil, 40, nil, nil, - nil, nil, nil, nil, nil, 218, nil, nil, nil, nil, - 79, 73, 75, 76, 77, 78, nil, nil, nil, 74, - 80, nil, nil, nil, 63, 64, 65, 56, 51, nil, - 53, nil, 57, 58, nil, 37, 83, 61, nil, 59, - 60, 62, 23, 24, 66, 67, nil, nil, nil, nil, - nil, 22, 28, 27, 90, 89, 91, 92, nil, nil, - 219, nil, nil, nil, nil, nil, nil, 41, nil, nil, - 94, 93, nil, 84, 50, 86, 85, 87, nil, 88, - 95, 96, nil, 81, 82, nil, 38, 39, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 210, - nil, nil, 214, nil, nil, 52, nil, nil, 54, nil, - nil, nil, nil, nil, 40, nil, nil, nil, nil, nil, - nil, nil, 218, nil, nil, nil, nil, 79, 73, 75, - 76, 77, 78, nil, nil, nil, 74, 80, nil, nil, - nil, 63, 64, 65, 56, 51, nil, 53, nil, 57, - 58, nil, 37, 83, 61, nil, 59, 60, 62, 23, - 24, 66, 67, nil, nil, nil, nil, nil, 22, 28, - 27, 90, 89, 91, 92, nil, nil, 219, nil, nil, - nil, nil, nil, nil, 41, nil, nil, 94, 93, nil, - 84, 50, 86, 85, 87, nil, 88, 95, 96, nil, - 81, 82, nil, 38, 39, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 210, nil, nil, 214, - nil, nil, 52, nil, nil, 54, nil, nil, nil, nil, - nil, 40, nil, nil, nil, nil, nil, nil, nil, 218, - nil, nil, nil, nil, 79, 73, 75, 76, 77, 78, - nil, nil, nil, 74, 80, nil, nil, nil, 63, 64, - 65, 56, 51, nil, 53, nil, 57, 58, nil, 37, - 83, 61, nil, 59, 60, 62, 23, 24, 66, 67, - nil, nil, nil, nil, nil, 22, 28, 27, 90, 89, - 91, 92, nil, nil, 219, nil, nil, nil, nil, nil, - nil, 41, nil, nil, 94, 93, nil, 84, 50, 86, - 85, 87, nil, 88, 95, 96, nil, 81, 82, nil, - 38, 39, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 210, nil, nil, 214, nil, nil, 52, - nil, nil, 54, nil, nil, nil, nil, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 218, nil, nil, nil, - nil, 79, 73, 75, 76, 77, 78, nil, nil, nil, - 74, 80, nil, nil, nil, 63, 64, 65, 56, 51, - nil, 53, nil, 57, 58, nil, 37, 83, 61, nil, - 59, 60, 62, 258, 259, 66, 67, nil, nil, nil, - nil, nil, 257, 291, 295, 90, 89, 91, 92, nil, - nil, 219, nil, nil, nil, nil, nil, nil, 41, nil, - nil, 94, 93, nil, 84, 50, 86, 85, 87, nil, - 88, 95, 96, nil, 81, 82, nil, 38, 39, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 210, nil, nil, 214, nil, nil, 52, nil, nil, 54, - nil, nil, nil, nil, nil, 40, nil, nil, nil, nil, - nil, nil, nil, 218, nil, nil, nil, nil, 79, 73, - 75, 76, 77, 78, nil, nil, nil, 74, 80, nil, - nil, nil, 63, 64, 65, 56, 51, nil, 53, nil, - 57, 58, nil, 37, 83, 61, nil, 59, 60, 62, - 258, 259, 66, 67, nil, nil, nil, nil, nil, 257, - 291, 295, 90, 89, 91, 92, nil, nil, 219, nil, - nil, nil, nil, nil, nil, 41, nil, nil, 94, 93, - nil, 84, 50, 86, 85, 87, nil, 88, 95, 96, - nil, 81, 82, nil, 38, 39, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 210, nil, nil, - 214, nil, nil, 52, nil, nil, 54, nil, nil, nil, - nil, nil, 40, nil, nil, nil, nil, nil, nil, nil, - 218, nil, nil, nil, nil, 79, 73, 75, 76, 77, - 78, nil, nil, nil, 74, 80, nil, nil, nil, nil, - nil, nil, 56, nil, nil, 53, nil, nil, nil, nil, - 37, 83, 63, 64, 65, 8, 51, nil, nil, nil, - 57, 58, nil, nil, nil, 61, nil, 59, 60, 62, - 23, 24, 66, 67, nil, nil, nil, nil, nil, 22, - 28, 27, 90, 89, 91, 92, nil, nil, 17, nil, - nil, nil, nil, nil, 7, 41, nil, 9, 94, 93, - nil, 84, 50, 86, 85, 87, nil, 88, 95, 96, - nil, 81, 82, nil, 38, 39, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 36, nil, nil, - 30, nil, nil, 52, nil, nil, 54, nil, 32, nil, - nil, nil, 40, nil, nil, nil, nil, nil, nil, nil, - 18, nil, nil, nil, nil, 79, 73, 75, 76, 77, - 78, nil, nil, nil, 74, 80, nil, nil, nil, 63, - 64, 65, 56, 51, nil, 53, nil, 57, 58, nil, - 37, 83, 61, nil, 59, 60, 62, 258, 259, 66, - 67, nil, nil, nil, nil, nil, 257, 291, 295, 90, - 89, 91, 92, nil, nil, 219, nil, nil, nil, nil, - nil, nil, 41, nil, nil, 94, 93, nil, 84, 50, - 86, 85, 87, nil, 88, 95, 96, nil, 81, 82, - nil, 38, 39, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 210, nil, nil, 214, nil, nil, - 52, nil, nil, 54, nil, nil, nil, nil, nil, 40, - nil, nil, nil, nil, nil, nil, nil, 218, nil, nil, - nil, nil, 79, 73, 75, 76, 77, 78, nil, nil, - nil, 74, 80, nil, nil, nil, nil, nil, nil, 56, - nil, nil, 53, nil, nil, nil, nil, 37, 83, 63, - 64, 65, 8, 51, nil, nil, nil, 57, 58, nil, - nil, nil, 61, nil, 59, 60, 62, 23, 24, 66, - 67, nil, nil, nil, nil, nil, 22, 28, 27, 90, - 89, 91, 92, nil, nil, 17, nil, nil, nil, nil, - nil, 7, 41, nil, 9, 94, 93, nil, 84, 50, - 86, 85, 87, nil, 88, 95, 96, nil, 81, 82, - nil, 38, 39, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 36, nil, nil, 30, nil, nil, - 52, nil, nil, 54, nil, 32, nil, nil, nil, 40, - nil, nil, nil, nil, nil, nil, nil, 18, nil, nil, - nil, nil, 79, 73, 75, 76, 77, 78, nil, nil, - nil, 74, 80, nil, nil, nil, 63, 64, 65, 56, - 51, nil, 53, nil, 57, 58, nil, 37, 83, 61, - nil, 59, 60, 62, 258, 259, 66, 67, nil, nil, - nil, nil, nil, 257, 291, 295, 90, 89, 91, 92, - nil, nil, 219, nil, nil, nil, nil, nil, nil, 41, - nil, nil, 94, 93, nil, 84, 50, 86, 85, 87, - 261, 88, 95, 96, nil, 81, 82, nil, 38, 39, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 210, nil, nil, 214, nil, nil, 52, nil, nil, - 54, nil, 658, nil, 254, nil, 40, nil, nil, nil, - nil, nil, nil, nil, 218, nil, nil, nil, nil, 79, - 73, 75, 76, 77, 78, nil, nil, nil, 74, 80, - nil, nil, nil, 63, 64, 65, 56, 51, nil, 53, - nil, 57, 58, nil, 37, 83, 61, nil, 59, 60, - 62, 258, 259, 66, 67, nil, nil, nil, nil, nil, - 257, 291, 295, 90, 89, 91, 92, nil, nil, 219, - nil, nil, nil, nil, nil, nil, 41, nil, nil, 94, - 93, nil, 84, 50, 86, 85, 87, 261, 88, 95, - 96, nil, 81, 82, nil, 38, 39, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 210, nil, - nil, 214, nil, nil, 52, nil, nil, 54, nil, nil, - nil, 254, nil, 40, nil, nil, nil, nil, nil, nil, - nil, 218, nil, nil, nil, nil, 79, 73, 75, 76, - 77, 78, nil, nil, nil, 74, 80, nil, nil, nil, - nil, nil, nil, 56, nil, nil, 53, nil, nil, nil, - nil, 37, 83, 63, 64, 65, 8, 51, nil, nil, - nil, 57, 58, nil, nil, nil, 61, nil, 59, 60, - 62, 23, 24, 66, 67, nil, nil, nil, nil, nil, - 22, 28, 27, 90, 89, 91, 92, nil, nil, 17, - nil, nil, nil, nil, nil, 7, 41, nil, 9, 94, - 93, nil, 84, 50, 86, 85, 87, nil, 88, 95, - 96, nil, 81, 82, nil, 38, 39, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 36, nil, - nil, 30, nil, nil, 52, nil, nil, 54, nil, 32, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, 18, nil, nil, nil, nil, 79, 73, 75, 76, - 77, 78, nil, nil, nil, 74, 80, nil, nil, nil, - nil, nil, nil, 56, nil, nil, 53, nil, nil, nil, - nil, 37, 83, 63, 64, 65, 8, 51, nil, nil, - nil, 57, 58, nil, nil, nil, 61, nil, 59, 60, - 62, 23, 24, 66, 67, nil, nil, nil, nil, nil, - 22, 28, 27, 90, 89, 91, 92, nil, nil, 17, - nil, nil, nil, nil, nil, 7, 41, nil, 9, 94, - 93, nil, 84, 50, 86, 85, 87, nil, 88, 95, - 96, nil, 81, 82, nil, 38, 39, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 36, nil, - nil, 30, nil, nil, 52, nil, nil, 54, nil, 32, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, 18, nil, nil, nil, nil, 79, 73, 75, 76, - 77, 78, nil, nil, nil, 74, 80, nil, nil, nil, - 63, 64, 65, 56, 51, nil, 53, nil, 57, 58, - nil, 37, 83, 61, nil, 59, 60, 62, 258, 259, - 66, 67, nil, nil, nil, nil, nil, 257, 291, 295, - 90, 89, 91, 92, nil, nil, 219, nil, nil, nil, - nil, nil, nil, 292, nil, nil, 94, 93, nil, 84, - 50, 86, 85, 87, nil, 88, 95, 96, nil, 81, - 82, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 289, nil, nil, 286, nil, - nil, 52, nil, nil, 54, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 79, 73, 75, 76, 77, 78, nil, - nil, nil, 74, 80, nil, nil, nil, 63, 64, 65, - 56, 51, nil, 53, nil, 57, 58, nil, 296, 83, - 61, nil, 59, 60, 62, 258, 259, 66, 67, nil, - nil, nil, nil, nil, 257, 291, 295, 90, 89, 91, - 92, nil, nil, 219, nil, nil, nil, nil, nil, nil, - 292, nil, nil, 94, 93, nil, 84, 50, 86, 85, - 87, nil, 88, 95, 96, nil, 81, 82, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 289, nil, nil, 286, nil, nil, 52, nil, - nil, 54, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 79, 73, 75, 76, 77, 78, nil, nil, nil, 74, - 80, nil, nil, nil, 63, 64, 65, 56, 51, nil, - 53, nil, 57, 58, nil, 296, 83, 61, nil, 59, - 60, 62, 258, 259, 66, 67, nil, nil, nil, nil, - nil, 257, 291, 295, 90, 89, 91, 92, nil, nil, - 219, nil, nil, nil, nil, nil, nil, 41, nil, nil, - 94, 93, nil, 84, 50, 86, 85, 87, nil, 88, - 95, 96, nil, 81, 82, nil, 38, 39, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 210, - nil, nil, 214, nil, nil, 52, nil, nil, 54, nil, - 421, nil, nil, nil, 40, nil, nil, nil, nil, nil, - nil, nil, 218, nil, nil, nil, nil, 79, 73, 75, - 76, 77, 78, nil, nil, nil, 74, 80, nil, nil, - nil, 63, 64, 65, 56, 51, nil, 53, nil, 57, - 58, nil, 37, 83, 61, nil, 59, 60, 62, 258, - 259, 66, 67, nil, nil, nil, nil, nil, 257, 291, - 295, 90, 89, 91, 92, nil, nil, 219, nil, nil, - nil, nil, nil, nil, 41, nil, nil, 94, 93, nil, - 84, 50, 86, 85, 87, nil, 88, 95, 96, nil, - 81, 82, nil, 38, 39, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 210, nil, nil, 214, - nil, nil, 52, nil, nil, 54, nil, 256, nil, nil, - nil, 40, nil, nil, nil, nil, nil, nil, nil, 218, - nil, nil, nil, nil, 79, 73, 75, 76, 77, 78, - nil, nil, nil, 74, 80, nil, nil, nil, 63, 64, - 65, 56, 51, nil, 53, nil, 57, 58, nil, 37, - 83, 61, nil, 59, 60, 62, 23, 24, 66, 67, - nil, nil, nil, nil, nil, 22, 28, 27, 90, 89, - 91, 92, nil, nil, 17, nil, nil, nil, nil, nil, - nil, 41, nil, nil, 94, 93, nil, 84, 50, 86, - 85, 87, nil, 88, 95, 96, nil, 81, 82, nil, - 38, 39, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 210, nil, nil, 214, nil, nil, 52, - nil, nil, 54, nil, nil, nil, nil, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 18, nil, nil, nil, - nil, 79, 73, 75, 76, 77, 78, nil, nil, nil, - 74, 80, nil, nil, nil, nil, nil, nil, 56, nil, - nil, 53, nil, nil, nil, nil, 37, 83, 63, 64, - 65, 8, 51, nil, nil, nil, 57, 58, nil, nil, - nil, 61, nil, 59, 60, 62, 23, 24, 66, 67, - nil, nil, nil, nil, nil, 22, 28, 27, 90, 89, - 91, 92, nil, nil, 17, nil, nil, nil, nil, nil, - 7, 41, nil, 9, 94, 93, nil, 84, 50, 86, - 85, 87, nil, 88, 95, 96, nil, 81, 82, nil, - 38, 39, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 36, nil, nil, 30, nil, nil, 52, - nil, nil, 54, nil, 32, nil, nil, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 18, nil, nil, nil, - nil, 79, 73, 75, 76, 77, 78, nil, nil, nil, - 74, 80, nil, nil, nil, nil, nil, nil, 56, nil, - nil, 53, nil, nil, nil, nil, 37, 83, 63, 64, - 65, 8, 51, nil, nil, nil, 57, 58, nil, nil, - nil, 61, nil, 59, 60, 62, 23, 24, 66, 67, - nil, nil, nil, nil, nil, 22, 28, 27, 90, 89, - 91, 92, nil, nil, 17, nil, nil, nil, nil, nil, - 7, 41, nil, 9, 94, 93, nil, 84, 50, 86, - 85, 87, nil, 88, 95, 96, nil, 81, 82, nil, - 38, 39, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 36, nil, nil, 30, nil, nil, 52, - nil, nil, 54, nil, 32, nil, nil, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 18, nil, nil, nil, - nil, 79, 73, 75, 76, 77, 78, nil, nil, nil, - 74, 80, nil, nil, nil, nil, nil, nil, 56, nil, - nil, 53, nil, nil, nil, nil, 37, 83, 63, 64, - 65, 8, 51, nil, nil, nil, 57, 58, nil, nil, - nil, 61, nil, 59, 60, 62, 23, 24, 66, 67, - nil, nil, nil, nil, nil, 22, 28, 27, 90, 89, - 91, 92, nil, nil, 17, nil, nil, nil, nil, nil, - 7, 41, nil, 9, 94, 93, nil, 84, 50, 86, - 85, 87, nil, 88, 95, 96, nil, 81, 82, nil, - 38, 39, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 36, nil, nil, 30, nil, nil, 52, - nil, nil, 54, nil, 32, nil, nil, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 18, nil, nil, nil, - nil, 79, 73, 75, 76, 77, 78, nil, nil, nil, - 74, 80, nil, nil, nil, 63, 64, 65, 56, 51, - nil, 53, nil, 57, 58, nil, 37, 83, 61, nil, - 59, 60, 62, 258, 259, 66, 67, nil, nil, nil, - nil, nil, 257, 291, 295, 90, 89, 91, 92, nil, - nil, 219, nil, nil, nil, nil, nil, nil, 41, nil, - nil, 94, 93, nil, 84, 50, 86, 85, 87, nil, - 88, 95, 96, nil, 81, 82, nil, 38, 39, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 210, nil, nil, 214, nil, nil, 52, nil, nil, 54, - nil, nil, nil, nil, nil, 40, nil, nil, nil, nil, - nil, nil, nil, 218, nil, nil, nil, nil, 79, 73, - 75, 76, 77, 78, nil, nil, nil, 74, 80, nil, - nil, nil, nil, nil, nil, 56, nil, nil, 53, nil, - nil, nil, nil, 37, 83, 63, 64, 65, 8, 51, - nil, nil, nil, 57, 58, nil, nil, nil, 61, nil, - 59, 60, 62, 23, 24, 66, 67, nil, nil, nil, - nil, nil, 22, 28, 27, 90, 89, 91, 92, nil, - nil, 17, nil, nil, nil, nil, nil, 7, 41, nil, - 9, 94, 93, nil, 84, 50, 86, 85, 87, nil, - 88, 95, 96, nil, 81, 82, nil, 38, 39, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 36, nil, nil, 30, nil, nil, 52, nil, nil, 54, - nil, 32, nil, nil, nil, 40, nil, nil, nil, nil, - nil, nil, nil, 18, nil, nil, nil, nil, 79, 73, - 75, 76, 77, 78, nil, nil, nil, 74, 80, nil, - nil, nil, 63, 64, 65, 56, 51, nil, 53, nil, - 57, 58, nil, 37, 83, 61, nil, 59, 60, 62, - 258, 259, 66, 67, nil, nil, nil, nil, nil, 257, - 291, 295, 90, 89, 91, 92, nil, nil, 219, nil, - nil, nil, nil, nil, nil, 41, nil, nil, 94, 93, - nil, 84, 50, 86, 85, 87, nil, 88, 95, 96, - nil, 81, 82, nil, 38, 39, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 210, nil, nil, - 214, nil, nil, 52, nil, nil, 54, nil, nil, nil, - nil, nil, 40, nil, nil, nil, nil, nil, nil, nil, - 218, nil, nil, nil, nil, 79, 73, 75, 76, 77, - 78, nil, nil, nil, 74, 80, nil, nil, nil, 63, - 64, 65, 56, 51, nil, 53, nil, 57, 58, nil, - 37, 83, 61, nil, 59, 60, 62, 23, 24, 66, - 67, nil, nil, nil, nil, nil, 22, 28, 27, 90, - 89, 91, 92, nil, nil, 219, nil, nil, nil, nil, - nil, nil, 41, nil, nil, 94, 93, nil, 84, 50, - 86, 85, 87, nil, 88, 95, 96, nil, 81, 82, - nil, 38, 39, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 210, nil, nil, 214, nil, nil, - 52, nil, nil, 54, nil, nil, nil, nil, nil, 40, - nil, nil, nil, nil, nil, nil, nil, 218, nil, nil, - nil, nil, 79, 73, 75, 76, 77, 78, nil, nil, - nil, 74, 80, nil, nil, nil, 63, 64, 65, 56, - 51, nil, 53, nil, 57, 58, nil, 37, 83, 61, - nil, 59, 60, 62, 23, 24, 66, 67, nil, nil, - nil, nil, nil, 22, 28, 27, 90, 89, 91, 92, - nil, nil, 219, nil, nil, nil, nil, nil, nil, 41, - nil, nil, 94, 93, nil, 84, 50, 86, 85, 87, - nil, 88, 95, 96, nil, 81, 82, nil, 38, 39, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 210, nil, nil, 214, nil, nil, 52, nil, nil, - 54, nil, nil, nil, nil, nil, 40, nil, nil, nil, - nil, nil, nil, nil, 218, nil, nil, nil, nil, 79, - 73, 75, 76, 77, 78, nil, nil, nil, 74, 80, - nil, nil, nil, 63, 64, 65, 56, 51, nil, 53, - nil, 57, 58, nil, 37, 83, 61, nil, 59, 60, - 62, 258, 259, 66, 67, nil, nil, nil, nil, nil, - 257, 291, 295, 90, 89, 91, 92, nil, nil, 219, - nil, nil, nil, nil, nil, nil, 41, nil, nil, 94, - 93, nil, 84, 50, 86, 85, 87, nil, 88, 95, - 96, nil, 81, 82, nil, 38, 39, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 210, nil, - nil, 214, nil, nil, 52, nil, nil, 54, nil, nil, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, 218, nil, nil, nil, nil, 79, 73, 75, 76, - 77, 78, nil, nil, nil, 74, 80, nil, nil, nil, - 63, 64, 65, 56, 51, nil, 53, nil, 57, 58, - nil, 37, 83, 61, nil, 59, 60, 62, 258, 259, - 66, 67, nil, nil, nil, nil, nil, 257, 291, 295, - 90, 89, 91, 92, nil, nil, 219, nil, nil, nil, - nil, nil, nil, 41, nil, nil, 94, 93, nil, 84, - 50, 86, 85, 87, nil, 88, 95, 96, nil, 81, - 82, nil, 38, 39, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 210, nil, nil, 214, nil, - nil, 52, nil, nil, 54, nil, nil, nil, nil, nil, - 40, nil, nil, nil, nil, nil, nil, nil, 218, nil, - nil, nil, nil, 79, 73, 75, 76, 77, 78, nil, - nil, nil, 74, 80, nil, nil, nil, 63, 64, 65, - 56, 51, nil, 53, nil, 57, 58, nil, 37, 83, - 61, nil, 59, 60, 62, 258, 259, 66, 67, nil, - nil, nil, nil, nil, 257, 291, 295, 90, 89, 91, - 92, nil, nil, 219, nil, nil, nil, nil, nil, nil, - 41, nil, nil, 94, 93, nil, 84, 50, 86, 85, - 87, nil, 88, 95, 96, nil, 81, 82, nil, 38, - 39, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 210, nil, nil, 214, nil, nil, 52, nil, - nil, 54, nil, nil, nil, nil, nil, 40, nil, nil, - nil, nil, nil, nil, nil, 218, nil, nil, nil, nil, - 79, 73, 75, 76, 77, 78, nil, nil, nil, 74, - 80, nil, nil, nil, 63, 64, 65, 56, 51, nil, - 53, nil, 57, 58, nil, 37, 83, 61, nil, 59, - 60, 62, 258, 259, 66, 67, nil, nil, nil, nil, - nil, 257, 291, 295, 90, 89, 91, 92, nil, nil, - 219, nil, nil, nil, nil, nil, nil, 41, nil, nil, - 94, 93, nil, 84, 50, 86, 85, 87, nil, 88, - 95, 96, nil, 81, 82, nil, 38, 39, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 210, - nil, nil, 214, nil, nil, 52, nil, nil, 54, nil, - 256, nil, nil, nil, 40, nil, nil, nil, nil, nil, - nil, nil, 218, nil, nil, nil, nil, 79, 73, 75, - 76, 77, 78, nil, nil, nil, 74, 80, nil, nil, - nil, nil, nil, nil, 56, nil, nil, 53, nil, nil, - nil, nil, 37, 83, 63, 64, 65, 8, 51, nil, - nil, nil, 57, 58, nil, nil, nil, 61, nil, 59, - 60, 62, 23, 24, 66, 67, nil, nil, nil, nil, - nil, 22, 28, 27, 90, 89, 91, 92, nil, nil, - 17, nil, nil, nil, nil, nil, 7, 41, nil, 9, - 94, 93, nil, 84, 50, 86, 85, 87, nil, 88, - 95, 96, nil, 81, 82, nil, 38, 39, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 36, - nil, nil, 30, nil, nil, 52, nil, nil, 54, nil, - 32, nil, nil, nil, 40, nil, nil, nil, nil, nil, - nil, nil, 18, nil, nil, nil, nil, 79, 73, 75, - 76, 77, 78, nil, nil, nil, 74, 80, nil, nil, - nil, 63, 64, 65, 56, 51, nil, 53, nil, 57, - 58, nil, 37, 83, 61, nil, 59, 60, 62, 23, - 24, 66, 67, nil, nil, nil, nil, nil, 22, 28, - 27, 90, 89, 91, 92, nil, nil, 17, nil, nil, - nil, nil, nil, nil, 41, nil, nil, 94, 93, nil, - 84, 50, 86, 85, 87, nil, 88, 95, 96, nil, - 81, 82, nil, 38, 39, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 210, nil, nil, 214, - nil, nil, 52, nil, nil, 54, nil, nil, nil, nil, - nil, 40, nil, nil, nil, nil, nil, nil, nil, 18, - nil, nil, nil, nil, 79, 73, 75, 76, 77, 78, - nil, nil, nil, 74, 80, nil, nil, nil, nil, nil, - nil, 56, nil, nil, 53, nil, nil, nil, nil, 37, - 83, 63, 64, 65, 8, 51, nil, nil, nil, 57, - 58, nil, nil, nil, 61, nil, 59, 60, 62, 23, - 24, 66, 67, nil, nil, nil, nil, nil, 22, 28, - 27, 90, 89, 91, 92, nil, nil, 17, nil, nil, - nil, nil, nil, 7, 41, nil, 9, 94, 93, nil, - 84, 50, 86, 85, 87, nil, 88, 95, 96, nil, - 81, 82, nil, 38, 39, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 36, nil, nil, 30, - nil, nil, 52, nil, nil, 54, nil, 32, nil, nil, - nil, 40, nil, nil, nil, nil, nil, nil, nil, 18, - nil, nil, nil, nil, 79, 73, 75, 76, 77, 78, - nil, nil, nil, 74, 80, nil, nil, nil, nil, nil, - nil, 56, nil, nil, 53, nil, nil, nil, nil, 37, - 83, 63, 64, 65, 8, 51, nil, nil, nil, 57, - 58, nil, nil, nil, 61, nil, 59, 60, 62, 23, - 24, 66, 67, nil, nil, nil, nil, nil, 22, 28, - 27, 90, 89, 91, 92, nil, nil, 17, nil, nil, - nil, nil, nil, 7, 41, nil, 9, 94, 93, nil, - 84, 50, 86, 85, 87, nil, 88, 95, 96, nil, - 81, 82, nil, 38, 39, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 36, nil, nil, 30, - nil, nil, 52, nil, nil, 54, nil, 32, nil, nil, - nil, 40, nil, nil, nil, nil, nil, nil, nil, 18, - nil, nil, nil, nil, 79, 73, 75, 76, 77, 78, - nil, nil, nil, 74, 80, nil, nil, nil, 63, 64, - 65, 56, 51, nil, 53, nil, 57, 58, nil, 37, - 83, 61, nil, 59, 60, 62, 258, 259, 66, 67, - nil, nil, nil, nil, nil, 257, 291, 295, 90, 89, - 91, 92, nil, nil, 219, nil, nil, nil, nil, nil, - nil, 41, nil, nil, 94, 93, nil, 84, 50, 86, - 85, 87, nil, 88, 95, 96, nil, 81, 82, nil, - 38, 39, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 210, nil, nil, 214, nil, nil, 52, - nil, nil, 54, nil, nil, nil, nil, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 218, nil, nil, nil, - nil, 79, 73, 75, 76, 77, 78, nil, nil, nil, - 74, 80, nil, nil, nil, 63, 64, 65, 56, 51, - nil, 53, nil, 57, 58, nil, 37, 83, 61, nil, - 59, 60, 62, 258, 259, 66, 67, nil, nil, nil, - nil, nil, 257, 291, 295, 90, 89, 91, 92, nil, - nil, 219, nil, nil, nil, nil, nil, nil, 41, nil, - nil, 94, 93, nil, 84, 50, 86, 85, 87, nil, - 88, 95, 96, nil, 81, 82, nil, 38, 39, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 210, nil, nil, 214, nil, nil, 52, nil, nil, 54, - nil, nil, nil, nil, nil, 40, nil, nil, nil, nil, - nil, nil, nil, 218, nil, nil, nil, nil, 79, 73, - 75, 76, 77, 78, nil, nil, nil, 74, 80, nil, - nil, nil, 63, 64, 65, 56, 51, nil, 53, nil, - 57, 58, nil, 37, 83, 61, nil, 59, 60, 62, - 258, 259, 66, 67, nil, nil, nil, nil, nil, 257, - 291, 295, 90, 89, 91, 92, nil, nil, 219, nil, - nil, nil, nil, nil, nil, 41, nil, nil, 94, 93, - nil, 84, 50, 86, 85, 87, nil, 88, 95, 96, - nil, 81, 82, nil, 38, 39, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 210, nil, nil, - 214, nil, nil, 52, nil, nil, 54, nil, nil, nil, - nil, nil, 40, nil, nil, nil, nil, nil, nil, nil, - 218, nil, nil, nil, nil, 79, 73, 75, 76, 77, - 78, nil, nil, nil, 74, 80, nil, nil, nil, 63, - 64, 65, 56, 51, nil, 53, nil, 57, 58, nil, - 37, 83, 61, nil, 59, 60, 62, 258, 259, 66, - 67, nil, nil, nil, nil, nil, 257, 291, 295, 90, - 89, 91, 92, nil, nil, 219, nil, nil, nil, nil, - nil, nil, 41, nil, nil, 94, 93, nil, 84, 50, - 86, 85, 87, 261, 88, 95, 96, nil, 81, 82, - nil, 38, 39, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 210, nil, nil, 214, nil, nil, - 52, nil, nil, 54, nil, nil, nil, 254, nil, 40, - nil, nil, nil, nil, nil, nil, nil, 218, nil, nil, - nil, nil, 79, 73, 75, 76, 77, 78, nil, nil, - nil, 74, 80, nil, nil, nil, nil, nil, nil, 56, - nil, nil, 53, nil, nil, nil, nil, 37, 83, 63, - 64, 65, 8, 51, nil, nil, nil, 57, 58, nil, - nil, nil, 61, nil, 59, 60, 62, 23, 24, 66, - 67, nil, nil, nil, nil, nil, 22, 28, 27, 90, - 89, 91, 92, nil, nil, 17, nil, nil, nil, nil, - nil, 7, 41, nil, 9, 94, 93, nil, 84, 50, - 86, 85, 87, nil, 88, 95, 96, nil, 81, 82, - nil, 38, 39, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 36, nil, nil, 30, nil, nil, - 52, nil, nil, 54, nil, 32, nil, nil, nil, 40, - nil, nil, nil, nil, nil, nil, nil, 18, nil, nil, - nil, nil, 79, 73, 75, 76, 77, 78, nil, nil, - nil, 74, 80, nil, nil, nil, 63, 64, 65, 56, - 51, nil, 53, nil, 57, 58, nil, 37, 83, 61, - nil, 59, 60, 62, 258, 259, 66, 67, nil, nil, - nil, nil, nil, 257, 291, 295, 90, 89, 91, 92, - nil, nil, 219, nil, nil, nil, nil, nil, nil, 292, - nil, nil, 94, 93, nil, 84, 50, 86, 85, 87, - nil, 88, 95, 96, nil, 81, 82, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 926, nil, nil, 214, nil, nil, 52, nil, nil, - 54, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 79, - 73, 75, 76, 77, 78, nil, nil, nil, 74, 80, - nil, nil, nil, 63, 64, 65, 56, 51, nil, 53, - nil, 57, 58, nil, 296, 83, 61, nil, 59, 60, - 62, 258, 259, 66, 67, nil, nil, nil, nil, nil, - 257, 291, 295, 90, 89, 91, 92, nil, nil, 219, - nil, nil, nil, nil, nil, nil, 41, nil, nil, 94, - 93, nil, 84, 50, 86, 85, 87, nil, 88, 95, - 96, nil, 81, 82, nil, 38, 39, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 210, nil, - nil, 214, nil, nil, 52, nil, nil, 54, nil, 658, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, 218, nil, nil, nil, nil, 79, 73, 75, 76, - 77, 78, nil, nil, nil, 74, 80, nil, nil, nil, - nil, nil, nil, 56, nil, nil, 53, nil, nil, nil, - nil, 37, 83, 63, 64, 65, 8, 51, nil, nil, - nil, 57, 58, nil, nil, nil, 61, nil, 59, 60, - 62, 23, 24, 66, 67, nil, nil, nil, nil, nil, - 22, 28, 27, 90, 89, 91, 92, nil, nil, 17, - nil, nil, nil, nil, nil, 7, 41, nil, 9, 94, - 93, nil, 84, 50, 86, 85, 87, nil, 88, 95, - 96, nil, 81, 82, nil, 38, 39, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 36, nil, - nil, 30, nil, nil, 52, nil, nil, 54, nil, 32, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, 18, nil, nil, nil, nil, 79, 73, 75, 76, - 77, 78, nil, nil, nil, 74, 80, nil, nil, nil, - nil, nil, nil, 56, nil, nil, 53, nil, nil, nil, - nil, 37, 83, 63, 64, 65, 8, 51, nil, nil, - nil, 57, 58, nil, nil, nil, 61, nil, 59, 60, - 62, 23, 24, 66, 67, nil, nil, nil, nil, nil, - 22, 28, 27, 90, 89, 91, 92, nil, nil, 17, - nil, nil, nil, nil, nil, 7, 41, nil, 9, 94, - 93, nil, 84, 50, 86, 85, 87, nil, 88, 95, - 96, nil, 81, 82, nil, 38, 39, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 36, nil, - nil, 30, nil, nil, 52, nil, nil, 54, nil, 32, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, 18, nil, nil, nil, nil, 79, 73, 75, 76, - 77, 78, nil, nil, nil, 74, 80, nil, nil, nil, - 63, 64, 65, 56, 51, nil, 53, nil, 57, 58, - nil, 37, 83, 61, nil, 59, 60, 62, 258, 259, - 66, 67, nil, nil, nil, nil, nil, 257, 291, 295, - 90, 89, 91, 92, nil, nil, 219, nil, nil, nil, - nil, nil, nil, 41, nil, nil, 94, 93, nil, 84, - 50, 86, 85, 87, nil, 88, 95, 96, nil, 81, - 82, nil, 38, 39, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 210, nil, nil, 214, nil, - nil, 52, nil, nil, 54, nil, 658, nil, 254, nil, - 40, nil, nil, nil, nil, nil, nil, nil, 218, nil, - nil, nil, nil, 79, 73, 75, 76, 77, 78, nil, - nil, nil, 74, 80, nil, nil, nil, nil, nil, nil, - 56, nil, nil, 53, nil, nil, nil, nil, 37, 83, - 63, 64, 65, 8, 51, nil, nil, nil, 57, 58, - nil, nil, nil, 61, nil, 59, 60, 62, 23, 24, - 66, 67, nil, nil, nil, nil, nil, 22, 28, 27, - 90, 89, 91, 92, nil, nil, 17, nil, nil, nil, - nil, nil, 7, 41, nil, 9, 94, 93, nil, 84, - 50, 86, 85, 87, nil, 88, 95, 96, nil, 81, - 82, nil, 38, 39, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 36, nil, nil, 30, nil, - nil, 52, nil, nil, 54, nil, 32, nil, nil, nil, - 40, nil, nil, nil, nil, nil, nil, nil, 18, nil, - nil, nil, nil, 79, 73, 75, 76, 77, 78, nil, - nil, nil, 74, 80, nil, nil, nil, nil, nil, nil, - 56, nil, nil, 53, nil, nil, nil, nil, 37, 83, - 63, 64, 65, 8, 51, nil, nil, nil, 57, 58, - nil, nil, nil, 61, nil, 59, 60, 62, 23, 24, - 66, 67, nil, nil, nil, nil, nil, 22, 28, 27, - 90, 89, 91, 92, nil, nil, 17, nil, nil, nil, - nil, nil, 7, 41, nil, 9, 94, 93, nil, 84, - 50, 86, 85, 87, nil, 88, 95, 96, nil, 81, - 82, nil, 38, 39, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 36, nil, nil, 30, nil, - nil, 52, nil, nil, 54, nil, 32, nil, nil, nil, - 40, nil, nil, nil, nil, nil, nil, nil, 18, nil, - nil, nil, nil, 79, 73, 75, 76, 77, 78, nil, - nil, nil, 74, 80, nil, nil, nil, nil, nil, nil, - 56, nil, nil, 53, nil, nil, nil, nil, 37, 83, - 63, 64, 65, 8, 51, nil, nil, nil, 57, 58, - nil, nil, nil, 61, nil, 59, 60, 62, 23, 24, - 66, 67, nil, nil, nil, nil, nil, 22, 28, 27, - 90, 89, 91, 92, nil, nil, 17, nil, nil, nil, - nil, nil, 7, 41, nil, 9, 94, 93, nil, 84, - 50, 86, 85, 87, nil, 88, 95, 96, nil, 81, - 82, nil, 38, 39, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 36, nil, nil, 30, nil, - nil, 52, nil, nil, 54, nil, 32, nil, nil, nil, - 40, nil, nil, nil, nil, nil, nil, nil, 18, nil, - nil, nil, nil, 79, 73, 75, 76, 77, 78, nil, - nil, nil, 74, 80, nil, nil, nil, nil, nil, nil, - 56, nil, nil, 53, nil, nil, nil, nil, 37, 83, - 63, 64, 65, 8, 51, nil, nil, nil, 57, 58, - nil, nil, nil, 61, nil, 59, 60, 62, 23, 24, - 66, 67, nil, nil, nil, nil, nil, 22, 28, 27, - 90, 89, 91, 92, nil, nil, 17, nil, nil, nil, - nil, nil, 7, 41, nil, 9, 94, 93, nil, 84, - 50, 86, 85, 87, nil, 88, 95, 96, nil, 81, - 82, nil, 38, 39, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 36, nil, nil, 30, nil, - nil, 52, nil, nil, 54, nil, 32, nil, nil, nil, - 40, nil, nil, nil, nil, nil, nil, nil, 18, nil, - nil, nil, nil, 79, 73, 75, 76, 77, 78, nil, - nil, nil, 74, 80, nil, nil, nil, 63, 64, 65, - 56, 51, nil, 53, nil, 57, 58, nil, 37, 83, - 61, nil, 59, 60, 62, 258, 259, 66, 67, nil, - nil, nil, nil, nil, 257, 28, 27, 90, 89, 91, - 92, nil, nil, 219, nil, nil, nil, nil, nil, nil, - 41, nil, nil, 94, 93, nil, 84, 50, 86, 85, - 87, 261, 88, 95, 96, nil, 81, 82, nil, 38, - 39, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 210, nil, nil, 214, nil, nil, 52, nil, - nil, 54, nil, 256, nil, nil, nil, 40, nil, nil, - nil, nil, nil, nil, nil, 218, nil, nil, nil, -538, - 79, 73, 75, 76, 77, 78, -538, -538, -538, 74, - 80, nil, -538, -538, nil, -538, nil, 56, nil, nil, - 53, nil, nil, nil, -538, 37, 83, nil, nil, nil, - nil, nil, nil, nil, nil, -538, -538, nil, -538, -538, - -538, -538, -538, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, -538, -538, -538, -538, - -538, -538, -538, -538, -538, -538, -538, -538, -538, -538, - -538, -283, nil, -538, -538, -538, nil, 636, -283, -283, - -283, -538, nil, nil, -283, -283, nil, -283, -538, nil, - -538, nil, -538, -538, -538, -538, -538, -538, -538, nil, - -538, -538, -538, nil, nil, nil, nil, -283, -283, nil, - -283, -283, -283, -283, -283, -538, -538, nil, -87, nil, - -538, nil, nil, -538, nil, -538, nil, -96, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, -283, -283, - -283, -283, -283, -283, -283, -283, -283, -283, -283, -283, - -283, -283, -283, nil, nil, -283, -283, -283, nil, 639, - nil, nil, nil, -283, nil, nil, nil, nil, nil, nil, - -283, nil, -283, nil, -283, -283, -283, -283, -283, -283, - -283, nil, -283, nil, -283, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, -283, -283, nil, - -89, nil, -283, -538, nil, -283, nil, -283, nil, -98, - -538, -538, -538, nil, nil, -538, -538, -538, nil, -538, - nil, nil, nil, nil, nil, nil, nil, nil, -538, -538, - -538, nil, nil, nil, nil, nil, nil, nil, nil, -538, - -538, nil, -538, -538, -538, -538, -538, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - -538, -538, -538, -538, -538, -538, -538, -538, -538, -538, - -538, -538, -538, -538, -538, nil, nil, -538, -538, -538, - nil, 790, -538, nil, nil, -538, nil, nil, -538, nil, - -538, nil, -538, nil, -538, nil, -538, -538, -538, -538, - -538, -538, -538, nil, -538, -538, -538, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, -538, - -538, -538, -538, nil, -538, -283, nil, -538, nil, -538, - nil, -96, -283, -283, -283, nil, nil, -283, -283, -283, - nil, -283, nil, nil, nil, nil, nil, nil, nil, nil, - nil, -283, -283, nil, nil, nil, nil, nil, nil, nil, - nil, -283, -283, nil, -283, -283, -283, -283, -283, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, -283, -283, -283, -283, -283, -283, -283, -283, - -283, -283, -283, -283, -283, -283, -283, nil, nil, -283, - -283, -283, nil, 639, -283, nil, nil, -283, nil, nil, - -283, nil, -283, nil, -283, nil, -283, nil, -283, -283, - -283, -283, -283, -283, -283, nil, -283, nil, -283, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, -283, -283, -283, -283, nil, -283, -292, nil, -283, - nil, -283, nil, -98, -292, -292, -292, nil, nil, -292, - -292, -292, nil, -292, nil, nil, nil, nil, nil, nil, - nil, nil, nil, -292, -292, nil, nil, nil, nil, nil, - nil, nil, nil, -292, -292, nil, -292, -292, -292, -292, - -292, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, -292, -292, -292, -292, -292, -292, - -292, -292, -292, -292, -292, -292, -292, -292, -292, nil, - nil, -292, -292, -292, nil, nil, -292, nil, 277, -292, - nil, nil, -292, nil, -292, nil, -292, nil, -292, nil, - -292, -292, -292, -292, -292, -292, -292, nil, -292, nil, - -292, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, -292, -292, -292, -292, -278, -292, nil, - nil, -292, nil, -292, -278, -278, -278, nil, nil, -278, - -278, -278, nil, -278, nil, nil, nil, nil, nil, nil, - nil, nil, nil, -278, -278, -278, nil, nil, nil, nil, - nil, nil, nil, -278, -278, nil, -278, -278, -278, -278, - -278, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, -278, -278, -278, -278, -278, -278, - -278, -278, -278, -278, -278, -278, -278, -278, -278, nil, - nil, -278, -278, -278, nil, nil, -278, nil, nil, -278, - nil, nil, -278, nil, -278, nil, -278, nil, -278, nil, - -278, -278, -278, -278, -278, -278, -278, nil, -278, nil, - -278, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, -278, -278, -278, -278, -554, -278, nil, - -278, -278, nil, -278, -554, -554, -554, nil, nil, -554, - -554, -554, nil, -554, nil, nil, nil, nil, nil, nil, - nil, nil, nil, -554, nil, nil, nil, nil, nil, nil, - nil, nil, nil, -554, -554, nil, -554, -554, -554, -554, - -554, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, -554, nil, nil, nil, nil, nil, - nil, -554, -554, -554, nil, nil, -554, -554, -554, nil, - -554, nil, nil, nil, nil, -554, -554, nil, nil, nil, - -554, nil, nil, -554, nil, nil, nil, nil, 268, -554, - -554, -554, nil, -554, -554, -554, -554, -554, nil, nil, - nil, nil, 764, nil, 336, 334, 333, 754, 335, nil, - -554, nil, nil, nil, nil, nil, nil, nil, 751, nil, - nil, nil, -554, -554, nil, -554, nil, nil, -554, -554, - -554, -554, -554, -554, -554, -554, -554, nil, -554, nil, - -554, 338, 749, nil, nil, 268, -554, nil, -554, 341, - 340, 344, 343, nil, nil, nil, nil, nil, -554, -554, - nil, -554, -554, -554, -554, -554, nil, -554, nil, nil, - nil, nil, nil, 436, 440, nil, nil, 438, nil, nil, - -554, nil, -554, nil, nil, -554, 142, 143, 752, 139, - 121, 122, 123, 130, 127, 129, nil, nil, 124, 125, - -554, -554, nil, nil, 144, 145, 131, 132, -554, nil, - nil, nil, nil, 268, -554, nil, nil, nil, nil, nil, - 136, 135, nil, 120, 141, 138, 137, 133, 134, 128, - 126, 118, 140, 119, nil, -554, 146, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, -554, nil, - -554, nil, nil, -554, 156, 167, 157, 180, 153, 173, - 163, 162, 188, 191, 178, 161, 160, 155, 181, 189, - 190, 165, 154, 168, 172, 174, 166, 159, nil, nil, - nil, 175, 182, 177, 176, 169, 179, 164, 152, 171, - 170, 183, 184, 185, 186, 187, 151, 158, 149, 150, - 147, 148, nil, 111, 113, 110, nil, 112, nil, nil, - nil, nil, nil, nil, nil, nil, 142, 143, nil, 139, - 121, 122, 123, 130, 127, 129, nil, nil, 124, 125, - nil, nil, nil, nil, 144, 145, 131, 132, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 136, 135, nil, 120, 141, 138, 137, 133, 134, 128, - 126, 118, 140, 119, nil, nil, 146, 192, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 80, 156, 167, - 157, 180, 153, 173, 163, 162, 188, 191, 178, 161, - 160, 155, 181, 189, 190, 165, 154, 168, 172, 174, - 166, 159, nil, nil, nil, 175, 182, 177, 176, 169, - 179, 164, 152, 171, 170, 183, 184, 185, 186, 187, - 151, 158, 149, 150, 147, 148, nil, 111, 113, nil, - nil, 112, nil, nil, nil, nil, nil, nil, nil, nil, - 142, 143, nil, 139, 121, 122, 123, 130, 127, 129, - nil, nil, 124, 125, nil, nil, nil, nil, 144, 145, - 131, 132, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 136, 135, nil, 120, 141, 138, - 137, 133, 134, 128, 126, 118, 140, 119, nil, nil, - 146, 192, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 80, 156, 167, 157, 180, 153, 173, 163, 162, - 188, 191, 178, 161, 160, 155, 181, 189, 190, 165, - 154, 168, 172, 174, 166, 159, nil, nil, nil, 175, - 182, 177, 176, 169, 179, 164, 152, 171, 170, 183, - 184, 185, 186, 187, 151, 158, 149, 150, 147, 148, - nil, 111, 113, nil, nil, 112, nil, nil, nil, nil, - nil, nil, nil, nil, 142, 143, nil, 139, 121, 122, - 123, 130, 127, 129, nil, nil, 124, 125, nil, nil, - nil, nil, 144, 145, 131, 132, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 136, 135, - nil, 120, 141, 138, 137, 133, 134, 128, 126, 118, - 140, 119, nil, nil, 146, 192, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 80, 156, 167, 157, 180, - 153, 173, 163, 162, 188, 191, 178, 161, 160, 155, - 181, 189, 190, 165, 154, 168, 172, 174, 166, 159, - nil, nil, nil, 175, 182, 177, 176, 169, 179, 164, - 152, 171, 170, 183, 184, 185, 186, 187, 151, 158, - 149, 150, 147, 148, nil, 111, 113, nil, nil, 112, - nil, nil, nil, nil, nil, nil, nil, nil, 142, 143, - nil, 139, 121, 122, 123, 130, 127, 129, nil, nil, - 124, 125, nil, nil, nil, nil, 144, 145, 131, 132, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 136, 135, nil, 120, 141, 138, 137, 133, - 134, 128, 126, 118, 140, 119, nil, nil, 146, 192, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 80, - 156, 167, 157, 180, 153, 173, 163, 162, 188, 191, - 178, 161, 160, 155, 181, 189, 190, 165, 154, 168, - 172, 174, 166, 159, nil, nil, nil, 175, 182, 177, - 376, 375, 377, 374, 152, 171, 170, 183, 184, 185, - 186, 187, 151, 158, 149, 150, 372, 373, nil, 370, - 113, 86, 85, 371, nil, 88, nil, nil, nil, nil, - nil, nil, 142, 143, nil, 139, 121, 122, 123, 130, - 127, 129, nil, nil, 124, 125, nil, nil, nil, nil, - 144, 145, 131, 132, nil, nil, nil, nil, nil, 381, - nil, nil, nil, nil, nil, nil, 136, 135, nil, 120, - 141, 138, 137, 133, 134, 128, 126, 118, 140, 119, - nil, nil, 146, 156, 167, 157, 180, 153, 173, 163, - 162, 188, 191, 178, 161, 160, 155, 181, 189, 190, - 165, 154, 168, 172, 174, 166, 159, nil, nil, nil, - 175, 182, 177, 176, 169, 179, 164, 152, 171, 170, - 183, 184, 185, 186, 187, 151, 158, 149, 150, 147, - 148, nil, 111, 113, 398, 397, 112, nil, 399, nil, - nil, nil, nil, nil, nil, 142, 143, nil, 139, 121, - 122, 123, 130, 127, 129, nil, nil, 124, 125, nil, - nil, nil, nil, 144, 145, 131, 132, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 136, - 135, nil, 120, 141, 138, 137, 133, 134, 128, 126, - 118, 140, 119, nil, nil, 146, 156, 167, 157, 180, - 153, 173, 163, 162, 188, 191, 178, 161, 160, 155, - 181, 189, 190, 165, 154, 168, 172, 174, 166, 159, - nil, nil, nil, 175, 182, 177, 176, 169, 179, 164, - 152, 171, 170, 183, 184, 185, 186, 187, 151, 158, - 149, 150, 147, 148, nil, 111, 113, 398, 397, 112, - nil, 399, nil, nil, nil, nil, nil, nil, 142, 143, - nil, 139, 121, 122, 123, 130, 127, 129, nil, nil, - 124, 125, nil, nil, nil, nil, 144, 145, 131, 132, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 136, 135, nil, 120, 141, 138, 137, 133, - 134, 128, 126, 118, 140, 119, nil, nil, 146, 156, - 167, 157, 180, 153, 173, 163, 162, 188, 191, 178, - 161, 160, 155, 181, 189, 190, 165, 154, 168, 172, - 174, 166, 159, nil, nil, nil, 175, 182, 177, 176, - 169, 179, 164, 152, 171, 170, 183, 184, 185, 186, - 187, 151, 158, 149, 150, 147, 148, nil, 111, 113, - nil, nil, 112, nil, nil, nil, nil, nil, nil, nil, - nil, 142, 143, nil, 139, 121, 122, 123, 130, 127, - 129, nil, nil, 124, 125, nil, nil, nil, nil, 144, - 145, 131, 132, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 136, 135, nil, 120, 141, - 138, 137, 133, 134, 128, 126, 118, 140, 119, 430, - 434, 146, nil, 431, nil, nil, nil, nil, nil, nil, - nil, nil, 142, 143, nil, 139, 121, 122, 123, 130, - 127, 129, nil, nil, 124, 125, nil, nil, nil, nil, - 144, 145, 131, 132, nil, nil, nil, nil, nil, 268, - nil, nil, nil, nil, nil, nil, 136, 135, nil, 120, - 141, 138, 137, 133, 134, 128, 126, 118, 140, 119, - 443, 434, 146, nil, 444, nil, nil, nil, nil, nil, - nil, nil, nil, 142, 143, nil, 139, 121, 122, 123, - 130, 127, 129, nil, nil, 124, 125, nil, nil, nil, - nil, 144, 145, 131, 132, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 136, 135, nil, - 120, 141, 138, 137, 133, 134, 128, 126, 118, 140, - 119, 443, 434, 146, nil, 444, nil, nil, nil, nil, - nil, nil, nil, nil, 142, 143, nil, 139, 121, 122, - 123, 130, 127, 129, nil, nil, 124, 125, nil, nil, - nil, nil, 144, 145, 131, 132, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 136, 135, - nil, 120, 141, 138, 137, 133, 134, 128, 126, 118, - 140, 119, 443, 434, 146, nil, 444, nil, nil, nil, - nil, nil, nil, nil, nil, 142, 143, nil, 139, 121, - 122, 123, 130, 127, 129, nil, nil, 124, 125, nil, - nil, nil, nil, 144, 145, 131, 132, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 136, - 135, nil, 120, 141, 138, 137, 133, 134, 128, 126, - 118, 140, 119, 443, 434, 146, nil, 444, nil, nil, - nil, nil, nil, nil, nil, nil, 142, 143, nil, 139, - 121, 122, 123, 130, 127, 129, nil, nil, 124, 125, - nil, nil, nil, nil, 144, 145, 131, 132, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 136, 135, nil, 120, 141, 138, 137, 133, 134, 128, - 126, 118, 140, 119, 642, 434, 146, nil, 643, nil, - nil, nil, nil, nil, nil, nil, nil, 142, 143, nil, - 139, 121, 122, 123, 130, 127, 129, nil, nil, 124, - 125, nil, nil, nil, nil, 144, 145, 131, 132, nil, - nil, nil, nil, nil, 268, nil, nil, nil, nil, nil, - nil, 136, 135, nil, 120, 141, 138, 137, 133, 134, - 128, 126, 118, 140, 119, 644, 440, 146, nil, 645, - nil, nil, nil, nil, nil, nil, nil, nil, 142, 143, - nil, 139, 121, 122, 123, 130, 127, 129, nil, nil, - 124, 125, nil, nil, nil, nil, 144, 145, 131, 132, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 136, 135, nil, 120, 141, 138, 137, 133, - 134, 128, 126, 118, 140, 119, 686, 434, 146, nil, - 687, nil, nil, nil, nil, nil, nil, nil, nil, 142, - 143, nil, 139, 121, 122, 123, 130, 127, 129, nil, - nil, 124, 125, nil, nil, nil, nil, 144, 145, 131, - 132, nil, nil, nil, nil, nil, 268, nil, nil, nil, - nil, nil, nil, 136, 135, nil, 120, 141, 138, 137, - 133, 134, 128, 126, 118, 140, 119, 689, 440, 146, - nil, 690, nil, nil, nil, nil, nil, nil, nil, nil, - 142, 143, nil, 139, 121, 122, 123, 130, 127, 129, - nil, nil, 124, 125, nil, nil, nil, nil, 144, 145, - 131, 132, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 136, 135, nil, 120, 141, 138, - 137, 133, 134, 128, 126, 118, 140, 119, 443, 434, - 146, nil, 444, nil, nil, nil, nil, nil, nil, nil, - nil, 142, 143, nil, 139, 121, 122, 123, 130, 127, - 129, nil, nil, 124, 125, nil, nil, nil, nil, 144, - 145, 131, 132, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 136, 135, nil, 120, 141, - 138, 137, 133, 134, 128, 126, 118, 140, 119, 642, - 434, 146, nil, 643, nil, nil, nil, nil, nil, nil, - nil, nil, 142, 143, nil, 139, 121, 122, 123, 130, - 127, 129, nil, nil, 124, 125, nil, nil, nil, nil, - 144, 145, 131, 132, nil, nil, nil, nil, nil, 268, - nil, nil, nil, nil, nil, nil, 136, 135, nil, 120, - 141, 138, 137, 133, 134, 128, 126, 118, 140, 119, - 644, 440, 146, nil, 645, nil, nil, nil, nil, nil, - nil, nil, nil, 142, 143, nil, 139, 121, 122, 123, - 130, 127, 129, nil, nil, 124, 125, nil, nil, nil, - nil, 144, 145, 131, 132, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 136, 135, nil, - 120, 141, 138, 137, 133, 134, 128, 126, 118, 140, - 119, 733, 434, 146, nil, 734, nil, nil, nil, nil, - nil, nil, nil, nil, 142, 143, nil, 139, 121, 122, - 123, 130, 127, 129, nil, nil, 124, 125, nil, nil, - nil, nil, 144, 145, 131, 132, nil, nil, nil, nil, - nil, 268, nil, nil, nil, nil, nil, nil, 136, 135, - nil, 120, 141, 138, 137, 133, 134, 128, 126, 118, - 140, 119, 735, 440, 146, nil, 736, nil, nil, nil, - nil, nil, nil, nil, nil, 142, 143, nil, 139, 121, - 122, 123, 130, 127, 129, nil, nil, 124, 125, nil, - nil, nil, nil, 144, 145, 131, 132, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 136, - 135, nil, 120, 141, 138, 137, 133, 134, 128, 126, - 118, 140, 119, 741, 440, 146, nil, 739, nil, nil, - nil, nil, nil, nil, nil, nil, 142, 143, nil, 139, - 121, 122, 123, 130, 127, 129, nil, nil, 124, 125, - nil, nil, nil, nil, 144, 145, 131, 132, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 136, 135, nil, 120, 141, 138, 137, 133, 134, 128, - 126, 118, 140, 119, 443, 434, 146, nil, 444, nil, - nil, nil, nil, nil, nil, nil, nil, 142, 143, nil, - 139, 121, 122, 123, 130, 127, 129, nil, nil, 124, - 125, nil, nil, nil, nil, 144, 145, 131, 132, nil, - nil, nil, nil, nil, 268, nil, nil, nil, nil, nil, - nil, 136, 135, nil, 120, 141, 138, 137, 133, 134, - 128, 126, 118, 140, 119, 741, 440, 146, nil, 892, - nil, nil, nil, nil, nil, nil, nil, nil, 142, 143, - nil, 139, 121, 122, 123, 130, 127, 129, nil, nil, - 124, 125, nil, nil, nil, nil, 144, 145, 131, 132, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 136, 135, nil, 120, 141, 138, 137, 133, - 134, 128, 126, 118, 140, 119, 959, 434, 146, nil, - 960, nil, nil, nil, nil, nil, nil, nil, nil, 142, - 143, nil, 139, 121, 122, 123, 130, 127, 129, nil, - nil, 124, 125, nil, nil, nil, nil, 144, 145, 131, - 132, nil, nil, nil, nil, nil, 268, nil, nil, nil, - nil, nil, nil, 136, 135, nil, 120, 141, 138, 137, - 133, 134, 128, 126, 118, 140, 119, 961, 440, 146, - nil, 962, nil, nil, nil, nil, nil, nil, nil, nil, - 142, 143, nil, 139, 121, 122, 123, 130, 127, 129, - nil, nil, 124, 125, nil, nil, nil, nil, 144, 145, - 131, 132, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 136, 135, nil, 120, 141, 138, - 137, 133, 134, 128, 126, 118, 140, 119, nil, nil, - 146 ] - -racc_action_check = [ - 0, 0, 0, 0, 0, 347, 321, 354, 0, 0, - 392, 746, 746, 0, 71, 0, 0, 0, 0, 0, - 0, 0, 71, 313, 852, 615, 313, 0, 0, 0, - 0, 0, 0, 0, 1, 852, 0, 387, 26, 209, - 387, 485, 0, 0, 0, 0, 0, 0, 348, 0, - 0, 0, 0, 0, 55, 0, 0, 0, 497, 0, - 0, 357, 0, 0, 587, 681, 366, 370, 852, 852, - 733, 310, 310, 392, 370, 485, 734, 352, 838, 352, - 839, 604, 604, 735, 889, 0, 615, 615, 0, 209, - 896, 0, 497, 6, 0, 615, 0, 287, 387, 387, - 0, 746, 681, 924, 26, 852, 746, 9, 0, 927, - 948, 321, 354, 0, 0, 0, 0, 0, 0, 347, - 959, 347, 0, 0, 347, 26, 736, 17, 17, 17, - 0, 17, 960, 0, 507, 17, 17, 10, 0, 0, - 17, 55, 17, 17, 17, 17, 17, 17, 17, 211, - 735, 457, 457, 11, 17, 17, 17, 17, 17, 17, - 17, 310, 348, 17, 348, 287, 357, 348, 507, 587, - 17, 604, 366, 17, 17, 733, 17, 17, 17, 17, - 17, 734, 17, 17, 17, 839, 17, 17, 735, 17, - 17, 366, 838, 736, 838, 838, 366, 838, 889, 211, - 889, 371, 287, 889, 896, 12, 896, 457, 371, 896, - 961, 287, 17, 20, 962, 17, 17, 924, 17, 924, - 290, 17, 924, 927, 948, 927, 948, 17, 927, 948, - 967, 736, 293, 383, 959, 17, 959, 34, 577, 959, - 17, 17, 17, 17, 17, 17, 960, 525, 960, 17, - 17, 960, 686, 578, 18, 18, 18, 17, 18, 687, - 17, 314, 18, 18, 314, 17, 17, 18, 453, 18, - 18, 18, 18, 18, 18, 18, 698, 698, 508, 15, - 15, 18, 18, 18, 18, 18, 18, 18, 290, 961, - 18, 629, 36, 962, 383, 383, 383, 18, 293, 461, - 18, 18, 41, 18, 18, 18, 18, 18, 77, 18, - 18, 18, 508, 18, 18, 525, 18, 18, 453, 293, - 686, 841, 37, 37, 961, 290, 961, 687, 962, 961, - 962, 461, 698, 962, 290, 461, 461, 689, 577, 18, - 577, 629, 18, 577, 967, 18, 967, 807, 18, 967, - 78, 690, 525, 578, 18, 578, 642, 686, 578, 97, - 3, 525, 18, 193, 687, 3, 686, 18, 18, 18, - 18, 18, 18, 687, 210, 278, 18, 18, 212, 14, - 278, 22, 22, 22, 18, 22, 385, 18, 317, 22, - 22, 317, 18, 18, 22, 643, 22, 22, 22, 22, - 22, 22, 22, 791, 689, 689, 642, 792, 22, 22, - 22, 22, 22, 22, 22, 807, 213, 22, 690, 690, - 14, 841, 389, 841, 22, 394, 841, 22, 22, 14, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 372, - 22, 22, 689, 22, 22, 643, 372, 385, 385, 385, - 351, 689, 807, 791, 219, 351, 690, 792, 251, 25, - 25, 807, 860, 373, 374, 690, 22, 25, 252, 22, - 373, 374, 22, 860, 934, 22, 934, 22, 255, 22, - 267, 22, 280, 389, 389, 389, 394, 394, 394, 22, - 83, 83, 13, 13, 22, 22, 22, 22, 22, 22, - 13, 282, 703, 22, 22, 703, 860, 860, 23, 23, - 23, 22, 23, 597, 22, 375, 23, 23, 597, 22, - 22, 23, 375, 23, 23, 23, 23, 23, 23, 23, - 283, 361, 296, 296, 284, 23, 23, 23, 23, 23, - 23, 23, 744, 860, 23, 42, 42, 744, 13, 648, - 13, 23, 289, 42, 23, 23, 291, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 292, 23, 23, 295, - 23, 23, 301, 648, 648, 648, 648, 648, 648, 648, - 648, 648, 648, 648, 361, 361, 648, 648, 376, 750, - 648, 648, 361, 23, 750, 376, 23, 361, 302, 23, - 305, 42, 23, 42, 23, 648, 23, 648, 23, 648, - 648, 648, 648, 648, 648, 648, 23, 648, 361, 208, - 208, 23, 23, 23, 23, 23, 23, 208, 312, 35, - 23, 23, 315, 648, 316, 24, 24, 24, 23, 24, - 361, 23, 361, 24, 24, 318, 23, 23, 24, 326, - 24, 24, 24, 24, 24, 24, 24, 5, 5, 5, - 5, 5, 24, 24, 24, 24, 24, 24, 24, 377, - 35, 24, 288, 288, 300, 208, 377, 208, 24, 35, - 288, 24, 24, 327, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 329, 24, 24, 330, 24, 24, 342, - 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, - 484, 303, 303, 484, 484, 300, 110, 484, 484, 303, - 24, 110, 110, 24, 300, 345, 24, 353, 288, 24, - 288, 24, 484, 24, 484, 24, 484, 484, 484, 484, - 484, 484, 484, 24, 484, 356, 355, 355, 24, 24, - 24, 24, 24, 24, 355, 358, 430, 24, 24, 362, - 484, 484, 27, 27, 27, 24, 27, 303, 24, 303, - 27, 27, 388, 24, 24, 27, 391, 27, 27, 27, - 27, 27, 27, 27, 279, 279, 279, 279, 279, 27, - 27, 27, 27, 27, 27, 27, 410, 430, 27, 364, - 364, 416, 355, 419, 355, 27, 430, 364, 27, 27, - 422, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 424, 27, 27, 428, 27, 27, 429, 419, 419, 419, - 419, 419, 419, 419, 419, 419, 419, 419, 589, 589, - 419, 419, 346, 346, 419, 419, 589, 27, 437, 431, - 27, 27, 463, 27, 464, 364, 27, 364, 27, 419, - 27, 419, 27, 419, 419, 419, 419, 419, 419, 419, - 27, 419, 561, 561, 379, 27, 27, 27, 27, 27, - 27, 379, 720, 720, 27, 27, 628, 419, 465, 419, - 431, 466, 27, 858, 589, 27, 589, 499, 858, 431, - 27, 27, 30, 30, 30, 30, 30, 855, 855, 858, - 30, 30, 949, 949, 502, 30, 503, 30, 30, 30, - 30, 30, 30, 30, 509, 513, 514, 628, 517, 30, - 30, 30, 30, 30, 30, 30, 628, 519, 30, 526, - 858, 858, 858, 858, 30, 30, 462, 30, 30, 30, - 529, 30, 30, 30, 30, 30, 538, 30, 30, 30, - 539, 30, 30, 540, 30, 30, 553, 19, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 462, 858, - 19, 19, 462, 462, 19, 19, 564, 30, 568, 573, - 30, 579, 580, 30, 619, 626, 30, 632, 30, 19, - 637, 19, 30, 19, 19, 19, 19, 19, 19, 19, - 30, 19, 640, 711, 711, 30, 30, 30, 30, 30, - 30, 711, 646, 647, 30, 30, 655, 19, 657, 31, - 31, 31, 30, 31, 669, 30, 673, 31, 31, 676, - 30, 30, 31, 683, 31, 31, 31, 31, 31, 31, - 31, 555, 685, 688, 691, 692, 31, 31, 31, 31, - 31, 31, 31, 693, 696, 31, 840, 840, 697, 711, - 699, 711, 31, 704, 840, 31, 31, 705, 31, 31, - 31, 31, 31, 708, 31, 31, 31, 710, 31, 31, - 712, 652, 713, 652, 652, 652, 714, 652, 555, 555, - 555, 555, 717, 768, 768, 739, 739, 768, 768, 768, - 722, 728, 730, 739, 31, 732, 737, 31, 739, 741, - 31, 742, 840, 31, 840, 31, 753, 757, 758, 760, - 652, 761, 939, 762, 764, 767, 774, 939, 652, 652, - 652, 652, 31, 31, 31, 31, 31, 31, 939, 652, - 795, 31, 31, 796, 799, 801, 32, 32, 32, 31, - 32, 739, 31, 739, 32, 32, 804, 31, 31, 32, - 805, 32, 32, 32, 32, 32, 32, 32, 824, 939, - 939, 939, 939, 32, 32, 32, 32, 32, 32, 32, - 925, 925, 32, 680, 680, 680, 680, 680, 925, 32, - 480, 806, 32, 32, 811, 32, 32, 32, 32, 32, - 814, 32, 32, 32, 815, 32, 32, 600, 939, 600, - 600, 600, 600, 600, 830, 824, 824, 824, 824, 833, - 843, 846, 480, 600, 847, 848, 480, 480, 480, 480, - 870, 32, 871, 882, 32, 892, 925, 32, 925, 569, - 32, 569, 569, 569, 893, 569, 600, 600, 898, 899, - 907, 909, 912, 913, 600, 600, 600, 600, 914, 32, - 32, 32, 32, 32, 32, 915, 926, 936, 32, 32, - 944, 953, 955, 32, 956, 958, 32, nil, nil, 32, - nil, nil, nil, nil, 32, 32, 38, 38, 38, 481, - 38, nil, nil, 600, 38, 38, nil, nil, nil, 38, - nil, 38, 38, 38, 38, 38, 38, 38, nil, nil, - nil, nil, nil, 38, 38, 38, 38, 38, 38, 38, - nil, 481, 38, nil, nil, 481, 481, 481, 481, 38, - nil, nil, 38, 38, nil, 38, 38, 38, 38, 38, - nil, 38, 38, 38, nil, 38, 38, nil, 38, 38, - nil, 249, 249, 249, 249, 249, 249, 249, 249, 249, - 249, 249, nil, nil, 249, 249, nil, nil, 249, 249, - nil, 38, nil, nil, 38, nil, nil, 38, nil, nil, - 38, nil, nil, 249, nil, 249, 38, 249, 249, 249, - 249, 249, 249, 249, 38, 249, nil, nil, nil, 38, - 38, 38, 38, 38, 38, nil, nil, nil, 38, 38, - nil, 249, nil, 39, 39, 39, 38, 39, nil, 38, - nil, 39, 39, nil, 38, 38, 39, nil, 39, 39, - 39, 39, 39, 39, 39, nil, nil, nil, nil, nil, - 39, 39, 39, 39, 39, 39, 39, nil, 829, 39, - 829, 829, 829, nil, 829, nil, 39, nil, nil, 39, - 39, nil, 39, 39, 39, 39, 39, nil, 39, 39, - 39, nil, 39, 39, nil, 39, 39, nil, 427, 427, - 427, 427, 427, 427, 427, 427, 427, 427, 427, nil, - nil, 427, 427, nil, nil, 427, 427, nil, 39, nil, - nil, 39, nil, nil, 39, nil, nil, 39, nil, nil, - 427, nil, 427, 39, 427, 427, 427, 427, 427, 427, - 427, 39, 427, nil, nil, nil, 39, 39, 39, 39, - 39, 39, nil, nil, nil, 39, 39, nil, 427, nil, - 40, 40, 40, 39, 40, nil, 39, nil, 40, 40, - nil, 39, 39, 40, nil, 40, 40, 40, 40, 40, - 40, 40, nil, nil, nil, nil, nil, 40, 40, 40, - 40, 40, 40, 40, nil, nil, 40, nil, nil, nil, - nil, nil, nil, 40, nil, nil, 40, 40, nil, 40, - 40, 40, 40, 40, nil, 40, 40, 40, nil, 40, - 40, nil, 40, 40, nil, 446, 446, 446, 446, 446, - 446, 446, 446, 446, 446, 446, nil, nil, 446, 446, - nil, nil, 446, 446, nil, 40, nil, nil, 40, nil, - nil, 40, nil, nil, 40, nil, nil, 446, nil, 446, - 40, 446, 446, 446, 446, 446, 446, 446, 40, 446, - nil, nil, nil, 40, 40, 40, 40, 40, 40, nil, - nil, nil, 40, 40, nil, 446, nil, 52, 52, 52, - 40, 52, nil, 40, nil, 52, 52, nil, 40, 40, - 52, nil, 52, 52, 52, 52, 52, 52, 52, nil, - nil, nil, nil, nil, 52, 52, 52, 52, 52, 52, - 52, nil, nil, 52, nil, nil, nil, nil, nil, nil, - 52, nil, nil, 52, 52, nil, 52, 52, 52, 52, - 52, nil, 52, 52, 52, nil, 52, 52, nil, 52, - 52, nil, 536, 536, 536, 536, 536, 536, 536, 536, - 536, 536, 536, nil, nil, 536, 536, nil, nil, 536, - 536, nil, 52, nil, nil, 52, nil, nil, 52, nil, - nil, 52, nil, nil, 536, nil, 536, 52, 536, 536, - 536, 536, 536, 536, 536, 52, 536, nil, nil, nil, - 52, 52, 52, 52, 52, 52, nil, nil, nil, 52, - 52, nil, 536, nil, 53, 53, 53, 52, 53, nil, - 52, nil, 53, 53, nil, 52, 52, 53, nil, 53, - 53, 53, 53, 53, 53, 53, nil, nil, nil, nil, - nil, 53, 53, 53, 53, 53, 53, 53, nil, nil, - 53, nil, nil, nil, nil, nil, nil, 53, nil, nil, - 53, 53, nil, 53, 53, 53, 53, 53, 53, 53, - 53, 53, nil, 53, 53, nil, 53, 53, nil, 695, - 695, 695, 695, 695, 695, 695, 695, 695, 695, 695, - nil, nil, 695, 695, nil, nil, 695, 695, nil, 53, - nil, nil, 53, nil, nil, 53, nil, nil, 53, nil, - 53, 695, nil, 695, 53, 695, 695, 695, 695, 695, - 695, 695, 53, 695, nil, nil, nil, 53, 53, 53, - 53, 53, 53, nil, nil, nil, 53, 53, nil, 695, - nil, 54, 54, 54, 53, 54, nil, 53, nil, 54, - 54, nil, 53, 53, 54, nil, 54, 54, 54, 54, - 54, 54, 54, nil, nil, nil, nil, nil, 54, 54, - 54, 54, 54, 54, 54, nil, nil, 54, nil, nil, - nil, nil, nil, nil, 54, nil, nil, 54, 54, nil, - 54, 54, 54, 54, 54, 54, 54, 54, 54, nil, - 54, 54, nil, 54, 54, nil, 773, 773, 773, 773, - 773, 773, 773, 773, 773, 773, 773, nil, nil, 773, - 773, nil, nil, 773, 773, nil, 54, nil, nil, 54, - nil, nil, 54, nil, nil, 54, nil, nil, 773, nil, - 773, 54, 773, 773, 773, 773, 773, 773, 773, 54, - 773, nil, nil, nil, 54, 54, 54, 54, 54, 54, - nil, nil, nil, 54, 54, nil, 773, nil, 57, 57, - 57, 54, 57, nil, 54, nil, 57, 57, nil, 54, - 54, 57, nil, 57, 57, 57, 57, 57, 57, 57, - nil, nil, nil, nil, nil, 57, 57, 57, 57, 57, - 57, 57, nil, nil, 57, nil, nil, nil, nil, nil, - nil, 57, nil, nil, 57, 57, nil, 57, 57, 57, - 57, 57, nil, 57, 57, 57, nil, 57, 57, nil, - 57, 57, nil, 779, 779, 779, 779, 779, 779, 779, - 779, 779, 779, 779, nil, nil, 779, 779, nil, nil, - 779, 779, nil, 57, nil, nil, 57, nil, nil, 57, - nil, nil, 57, nil, nil, 779, nil, 779, 57, 779, - 779, 779, 779, 779, 779, 779, 57, 779, nil, nil, - nil, 57, 57, 57, 57, 57, 57, nil, nil, nil, - 57, 57, nil, 779, nil, 58, 58, 58, 57, 58, - nil, 57, nil, 58, 58, nil, 57, 57, 58, nil, - 58, 58, 58, 58, 58, 58, 58, nil, nil, nil, - nil, nil, 58, 58, 58, 58, 58, 58, 58, nil, - nil, 58, nil, nil, nil, nil, nil, nil, 58, nil, - nil, 58, 58, nil, 58, 58, 58, 58, 58, nil, - 58, 58, 58, nil, 58, 58, nil, 58, 58, nil, - 781, 781, 781, 781, 781, 781, 781, 781, 781, 781, - 781, nil, nil, 781, 781, nil, nil, 781, 781, nil, - 58, nil, nil, 58, nil, nil, 58, nil, nil, 58, - nil, nil, 781, nil, 781, 58, 781, 781, 781, 781, - 781, 781, 781, 58, 781, nil, nil, nil, 58, 58, - 58, 58, 58, 58, nil, nil, nil, 58, 58, nil, - 781, nil, 61, 61, 61, 58, 61, nil, 58, nil, - 61, 61, nil, 58, 58, 61, nil, 61, 61, 61, - 61, 61, 61, 61, nil, nil, nil, nil, nil, 61, - 61, 61, 61, 61, 61, 61, nil, nil, 61, nil, - nil, nil, nil, nil, nil, 61, nil, nil, 61, 61, - nil, 61, 61, 61, 61, 61, nil, 61, 61, 61, - nil, 61, 61, nil, 61, 61, nil, 672, 672, 672, - 672, 672, 672, 672, 672, 672, 672, 672, nil, nil, - 672, 672, nil, nil, 672, 672, nil, 61, nil, nil, - 61, nil, nil, 61, nil, nil, 61, nil, nil, 672, - nil, 672, 61, 672, 672, 672, 672, 672, 672, 672, - 61, 672, nil, nil, nil, 61, 61, 61, 61, 61, - 61, nil, nil, nil, 61, 61, 61, 672, nil, 672, - nil, 61, 61, nil, nil, 61, nil, nil, nil, nil, - 61, 61, 62, 62, 62, nil, 62, nil, nil, nil, - 62, 62, nil, nil, nil, 62, nil, 62, 62, 62, - 62, 62, 62, 62, nil, nil, nil, nil, nil, 62, - 62, 62, 62, 62, 62, 62, nil, nil, 62, nil, - nil, nil, nil, nil, nil, 62, nil, nil, 62, 62, - nil, 62, 62, 62, 62, 62, nil, 62, 62, 62, - nil, 62, 62, 784, 784, 784, 784, 784, 784, 784, - 784, 784, 784, 784, 467, nil, 784, 784, nil, nil, - 784, 784, nil, nil, nil, nil, nil, 62, nil, nil, - 62, 467, 467, 62, nil, 784, 62, 784, 62, 784, - 784, 784, 784, 784, 784, 784, 467, 784, 467, nil, - 467, 467, 467, 467, nil, 62, 62, 62, 62, 62, - 62, nil, nil, 784, 62, 62, nil, nil, nil, 63, - 63, 63, 62, 63, nil, 62, nil, 63, 63, nil, - 62, 62, 63, nil, 63, 63, 63, 63, 63, 63, - 63, nil, nil, nil, nil, nil, 63, 63, 63, 63, - 63, 63, 63, nil, nil, 63, nil, nil, nil, nil, - nil, nil, 63, nil, nil, 63, 63, nil, 63, 63, - 63, 63, 63, nil, 63, 63, 63, nil, 63, 63, - 786, 786, 786, 786, 786, 786, 786, 786, 786, 786, - 786, 468, nil, 786, 786, nil, nil, 786, 786, nil, - nil, 63, nil, nil, 63, nil, nil, 63, 468, 468, - 63, nil, 786, 63, 786, nil, 786, 786, 786, 786, - 786, 786, 786, 468, 786, 468, nil, 468, 468, 468, - 468, nil, 63, 63, 63, 63, 63, 63, nil, nil, - 786, 63, 63, nil, nil, nil, 84, 84, 84, 63, - 84, nil, 63, nil, 84, 84, nil, 63, 63, 84, - nil, 84, 84, 84, 84, 84, 84, 84, nil, 84, - nil, nil, nil, 84, 84, 84, 84, 84, 84, 84, - nil, nil, 84, nil, nil, nil, nil, nil, nil, 84, - nil, nil, 84, 84, nil, 84, 84, 84, 84, 84, - 84, 84, 84, 84, nil, 84, 84, nil, 84, 84, - nil, 793, 793, 793, 793, 793, 793, 793, 793, 793, - 793, 793, nil, nil, 793, 793, nil, nil, 793, 793, - nil, 84, nil, nil, 84, 84, nil, 84, nil, nil, - 84, nil, 84, 793, 84, 793, 84, 793, 793, 793, - 793, 793, 793, 793, 84, 793, 84, nil, nil, 84, - 84, 84, 84, 84, 84, nil, nil, nil, 84, 84, - nil, 793, nil, 87, 87, 87, 84, 87, nil, 84, - nil, 87, 87, nil, 84, 84, 87, nil, 87, 87, - 87, 87, 87, 87, 87, nil, 87, nil, nil, nil, - 87, 87, 87, 87, 87, 87, 87, nil, nil, 87, - nil, nil, nil, nil, nil, nil, 87, nil, nil, 87, - 87, nil, 87, 87, 87, 87, 87, 87, 87, 87, - 87, nil, 87, 87, nil, 87, 87, nil, 873, 873, - 873, 873, 873, 873, 873, 873, 873, 873, 873, nil, - nil, 873, 873, nil, nil, 873, 873, nil, 87, nil, - nil, 87, 87, nil, 87, nil, nil, 87, nil, 87, - 873, 87, 873, 87, 873, 873, 873, 873, 873, 873, - 873, 87, 873, 87, nil, nil, 87, 87, 87, 87, - 87, 87, nil, nil, nil, 87, 87, nil, 873, nil, - nil, nil, nil, 87, nil, nil, 87, nil, nil, nil, - nil, 87, 87, 99, 99, 99, 99, 99, nil, nil, - nil, 99, 99, nil, nil, nil, 99, nil, 99, 99, - 99, 99, 99, 99, 99, nil, nil, nil, nil, nil, - 99, 99, 99, 99, 99, 99, 99, nil, nil, 99, - nil, nil, nil, nil, nil, 99, 99, 99, 99, 99, - 99, nil, 99, 99, 99, 99, 99, nil, 99, 99, - 99, nil, 99, 99, nil, 99, 99, nil, 875, 875, - 875, 875, 875, 875, 875, 875, 875, 875, 875, nil, - nil, 875, 875, nil, nil, 875, 875, nil, 99, nil, - nil, 99, nil, nil, 99, nil, nil, 99, nil, 99, - 875, nil, 875, 99, 875, 875, 875, 875, 875, 875, - 875, 99, 875, nil, nil, nil, 99, 99, 99, 99, - 99, 99, nil, nil, nil, 99, 99, nil, 875, nil, - nil, nil, 99, 99, nil, nil, 99, nil, nil, nil, - nil, 99, 99, 103, 103, 103, nil, 103, nil, nil, - nil, 103, 103, nil, nil, nil, 103, nil, 103, 103, - 103, 103, 103, 103, 103, nil, nil, nil, nil, nil, - 103, 103, 103, 103, 103, 103, 103, nil, 338, 103, - 338, 338, 338, nil, 338, nil, 103, nil, nil, 103, - 103, nil, 103, 103, 103, 103, 103, nil, 103, 103, - 103, nil, 103, 103, nil, 103, 103, 566, nil, 566, - 566, 566, nil, 566, nil, nil, 718, 338, 718, 718, - 718, nil, 718, nil, nil, 338, nil, nil, 103, nil, - nil, 103, nil, nil, 103, nil, nil, 103, nil, nil, - nil, nil, nil, 103, nil, nil, 566, nil, nil, nil, - nil, 103, nil, nil, 566, 718, 103, 103, 103, 103, - 103, 103, nil, 718, nil, 103, 103, nil, nil, nil, - 104, 104, 104, 103, 104, nil, 103, nil, 104, 104, - nil, 103, 103, 104, nil, 104, 104, 104, 104, 104, - 104, 104, nil, nil, nil, nil, nil, 104, 104, 104, - 104, 104, 104, 104, nil, nil, 104, nil, nil, nil, - nil, nil, nil, 104, nil, nil, 104, 104, nil, 104, - 104, 104, 104, 104, nil, 104, 104, 104, nil, 104, - 104, nil, 104, 104, nil, 459, 459, 459, 459, 459, - 459, 459, 459, 459, 459, 459, nil, nil, 459, 459, - nil, nil, 459, 459, nil, 104, nil, nil, 104, nil, - nil, 104, nil, nil, 104, nil, nil, 459, nil, 459, - 104, 459, 459, 459, 459, 459, 459, 459, 104, 459, - nil, nil, nil, 104, 104, 104, 104, 104, 104, nil, - nil, nil, 104, 104, nil, nil, nil, 105, 105, 105, - 104, 105, nil, 104, nil, 105, 105, nil, 104, 104, - 105, nil, 105, 105, 105, 105, 105, 105, 105, nil, - nil, nil, nil, nil, 105, 105, 105, 105, 105, 105, - 105, nil, nil, 105, nil, nil, nil, nil, nil, nil, - 105, nil, nil, 105, 105, nil, 105, 105, 105, 105, - 105, nil, 105, 105, 105, nil, 105, 105, nil, 105, - 105, nil, 460, 460, 460, 460, 460, 460, 460, 460, - 460, 460, 460, nil, nil, 460, 460, nil, nil, 460, - 460, nil, 105, nil, nil, 105, nil, nil, 105, nil, - nil, 105, nil, nil, 460, nil, 460, 105, 460, 460, - 460, 460, 460, 460, 460, 105, 460, nil, nil, nil, - 105, 105, 105, 105, 105, 105, nil, nil, nil, 105, - 105, nil, nil, nil, 106, 106, 106, 105, 106, nil, - 105, nil, 106, 106, nil, 105, 105, 106, nil, 106, - 106, 106, 106, 106, 106, 106, nil, nil, nil, nil, - nil, 106, 106, 106, 106, 106, 106, 106, nil, nil, - 106, nil, nil, nil, nil, nil, nil, 106, nil, nil, - 106, 106, nil, 106, 106, 106, 106, 106, nil, 106, - 106, 106, nil, 106, 106, nil, 106, 106, nil, 470, - 470, 470, 470, 470, 470, 470, nil, nil, 470, 470, - nil, nil, nil, nil, nil, nil, 470, 470, nil, 106, - nil, nil, 106, nil, nil, 106, nil, nil, 106, nil, - nil, 470, nil, 470, 106, 470, 470, 470, 470, 470, - 470, 470, 106, 470, nil, nil, nil, 106, 106, 106, - 106, 106, 106, nil, nil, nil, 106, 106, nil, nil, - nil, nil, nil, nil, 106, nil, nil, 106, nil, nil, - nil, nil, 106, 106, 107, 107, 107, 107, 107, nil, - nil, nil, 107, 107, nil, nil, nil, 107, nil, 107, - 107, 107, 107, 107, 107, 107, nil, nil, nil, nil, - nil, 107, 107, 107, 107, 107, 107, 107, nil, nil, - 107, nil, nil, nil, nil, nil, 107, 107, nil, 107, - 107, 107, nil, 107, 107, 107, 107, 107, nil, 107, - 107, 107, nil, 107, 107, nil, 107, 107, nil, 471, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 471, 471, nil, 107, - nil, nil, 107, nil, nil, 107, nil, nil, 107, nil, - 107, 471, nil, 471, 107, 471, 471, 471, 471, nil, - nil, 471, 107, 471, nil, nil, nil, 107, 107, 107, - 107, 107, 107, nil, nil, nil, 107, 107, nil, nil, - nil, nil, nil, nil, 107, nil, nil, 107, nil, nil, - nil, nil, 107, 107, 108, 108, 108, 108, 108, nil, - nil, nil, 108, 108, nil, nil, nil, 108, nil, 108, - 108, 108, 108, 108, 108, 108, nil, nil, nil, nil, - nil, 108, 108, 108, 108, 108, 108, 108, nil, nil, - 108, nil, nil, nil, nil, nil, 108, 108, 108, 108, - 108, 108, nil, 108, 108, 108, 108, 108, nil, 108, - 108, 108, nil, 108, 108, nil, 108, 108, nil, 472, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 472, 472, nil, 108, - nil, nil, 108, nil, nil, 108, nil, nil, 108, nil, - 108, 472, nil, 472, 108, 472, 472, 472, 472, nil, - nil, 472, 108, 472, nil, nil, nil, 108, 108, 108, - 108, 108, 108, nil, nil, nil, 108, 108, nil, nil, - nil, nil, nil, nil, 108, nil, nil, 108, nil, nil, - nil, nil, 108, 108, 195, 195, 195, 195, 195, nil, - nil, nil, 195, 195, nil, nil, nil, 195, nil, 195, - 195, 195, 195, 195, 195, 195, nil, nil, nil, nil, - nil, 195, 195, 195, 195, 195, 195, 195, nil, nil, - 195, nil, nil, nil, nil, nil, 195, 195, nil, 195, - 195, 195, nil, 195, 195, 195, 195, 195, nil, 195, - 195, 195, nil, 195, 195, nil, 195, 195, nil, 473, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 473, 473, nil, 195, - nil, nil, 195, nil, nil, 195, nil, nil, 195, nil, - 195, 473, nil, 473, 195, 473, 473, 473, 473, nil, - nil, 473, 195, 473, nil, nil, nil, 195, 195, 195, - 195, 195, 195, nil, nil, nil, 195, 195, nil, nil, - nil, 196, 196, 196, 195, 196, nil, 195, nil, 196, - 196, nil, 195, 195, 196, nil, 196, 196, 196, 196, - 196, 196, 196, nil, nil, nil, nil, nil, 196, 196, - 196, 196, 196, 196, 196, nil, nil, 196, nil, nil, - nil, nil, nil, nil, 196, nil, nil, 196, 196, nil, - 196, 196, 196, 196, 196, nil, 196, 196, 196, nil, - 196, 196, nil, 196, 196, nil, 474, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 474, 474, nil, 196, nil, nil, 196, - nil, nil, 196, nil, nil, 196, nil, 196, 474, nil, - 474, 196, 474, 474, 474, 474, nil, nil, 474, 196, - 474, nil, nil, nil, 196, 196, 196, 196, 196, 196, - nil, nil, nil, 196, 196, nil, nil, nil, 197, 197, - 197, 196, 197, nil, 196, nil, 197, 197, nil, 196, - 196, 197, nil, 197, 197, 197, 197, 197, 197, 197, - nil, nil, nil, nil, nil, 197, 197, 197, 197, 197, - 197, 197, nil, nil, 197, nil, nil, nil, nil, nil, - nil, 197, nil, nil, 197, 197, nil, 197, 197, 197, - 197, 197, nil, 197, 197, 197, nil, 197, 197, nil, - 197, 197, nil, 475, 475, 475, 475, 475, 475, 475, - nil, nil, 475, 475, nil, nil, nil, nil, nil, nil, - 475, 475, nil, 197, nil, nil, 197, nil, nil, 197, - nil, nil, 197, nil, 197, 475, nil, 475, 197, 475, - 475, 475, 475, 475, 475, 475, 197, 475, nil, nil, - nil, 197, 197, 197, 197, 197, 197, nil, nil, nil, - 197, 197, nil, nil, nil, 198, 198, 198, 197, 198, - nil, 197, nil, 198, 198, nil, 197, 197, 198, nil, - 198, 198, 198, 198, 198, 198, 198, nil, nil, nil, - nil, nil, 198, 198, 198, 198, 198, 198, 198, nil, - nil, 198, nil, nil, nil, nil, nil, nil, 198, nil, - nil, 198, 198, nil, 198, 198, 198, 198, 198, nil, - 198, 198, 198, nil, 198, 198, nil, 198, 198, nil, - 476, 476, 476, 476, 476, 476, 476, nil, nil, 476, - 476, nil, nil, nil, nil, nil, nil, 476, 476, nil, - 198, nil, nil, 198, nil, nil, 198, nil, nil, 198, - nil, nil, 476, nil, 476, 198, 476, 476, 476, 476, - 476, 476, 476, 198, 476, nil, nil, nil, 198, 198, - 198, 198, 198, 198, nil, nil, nil, 198, 198, nil, - nil, nil, 199, 199, 199, 198, 199, nil, 198, nil, - 199, 199, nil, 198, 198, 199, nil, 199, 199, 199, - 199, 199, 199, 199, nil, nil, nil, nil, nil, 199, - 199, 199, 199, 199, 199, 199, nil, nil, 199, nil, - nil, nil, nil, nil, nil, 199, nil, nil, 199, 199, - nil, 199, 199, 199, 199, 199, 199, 199, 199, 199, - nil, 199, 199, nil, 199, 199, nil, 477, 477, 477, - 477, 477, 477, 477, nil, nil, 477, 477, nil, nil, - nil, nil, nil, nil, 477, 477, nil, 199, nil, nil, - 199, nil, nil, 199, nil, nil, 199, nil, 199, 477, - nil, 477, 199, 477, 477, 477, 477, 477, 477, 477, - 199, 477, nil, nil, nil, 199, 199, 199, 199, 199, - 199, nil, nil, nil, 199, 199, nil, nil, nil, 200, - 200, 200, 199, 200, nil, 199, nil, 200, 200, nil, - 199, 199, 200, nil, 200, 200, 200, 200, 200, 200, - 200, nil, nil, nil, nil, nil, 200, 200, 200, 200, - 200, 200, 200, nil, nil, 200, nil, nil, nil, nil, - nil, nil, 200, nil, nil, 200, 200, nil, 200, 200, - 200, 200, 200, 200, 200, 200, 200, nil, 200, 200, - nil, 200, 200, nil, 478, 478, 478, 478, 478, 478, - 478, nil, nil, 478, 478, nil, nil, nil, nil, nil, - nil, 478, 478, nil, 200, nil, nil, 200, nil, nil, - 200, nil, nil, 200, nil, 200, 478, nil, 478, 200, - 478, 478, 478, 478, 478, 478, 478, 200, 478, nil, - nil, nil, 200, 200, 200, 200, 200, 200, nil, nil, - nil, 200, 200, nil, nil, nil, 204, 204, 204, 200, - 204, nil, 200, nil, 204, 204, nil, 200, 200, 204, - nil, 204, 204, 204, 204, 204, 204, 204, nil, nil, - nil, nil, nil, 204, 204, 204, 204, 204, 204, 204, - nil, nil, 204, nil, nil, nil, nil, nil, nil, 204, - nil, nil, 204, 204, nil, 204, 204, 204, 204, 204, - nil, 204, 204, 204, nil, 204, 204, nil, 204, 204, - nil, 479, 479, 479, 479, 479, 479, 479, nil, nil, - 479, 479, nil, nil, nil, nil, nil, nil, 479, 479, - nil, 204, nil, nil, 204, nil, nil, 204, nil, nil, - 204, nil, nil, 479, nil, 479, 204, 479, 479, 479, - 479, 479, 479, 479, 204, 479, nil, nil, nil, 204, - 204, 204, 204, 204, 204, nil, nil, nil, 204, 204, - nil, nil, nil, 205, 205, 205, 204, 205, nil, 204, - nil, 205, 205, nil, 204, 204, 205, nil, 205, 205, - 205, 205, 205, 205, 205, nil, nil, nil, nil, nil, - 205, 205, 205, 205, 205, 205, 205, nil, nil, 205, - nil, nil, nil, nil, nil, nil, 205, nil, nil, 205, - 205, nil, 205, 205, 205, 205, 205, nil, 205, 205, - 205, nil, 205, 205, nil, 205, 205, nil, 482, 482, - 482, 482, 482, 482, 482, nil, nil, 482, 482, nil, - nil, nil, nil, nil, nil, 482, 482, nil, 205, nil, - nil, 205, nil, nil, 205, nil, nil, 205, nil, nil, - 482, nil, 482, 205, 482, 482, 482, 482, 482, 482, - 482, 205, 482, nil, nil, nil, 205, 205, 205, 205, - 205, 205, nil, nil, nil, 205, 205, nil, nil, nil, - 206, 206, 206, 205, 206, nil, 205, nil, 206, 206, - nil, 205, 205, 206, nil, 206, 206, 206, 206, 206, - 206, 206, nil, nil, nil, nil, nil, 206, 206, 206, - 206, 206, 206, 206, nil, nil, 206, nil, nil, nil, - nil, nil, nil, 206, nil, nil, 206, 206, nil, 206, - 206, 206, 206, 206, nil, 206, 206, 206, nil, 206, - 206, nil, 206, 206, nil, 483, 483, 483, 483, 483, - 483, 483, 483, nil, 483, 483, nil, nil, nil, nil, - nil, nil, 483, 483, nil, 206, nil, nil, 206, nil, - nil, 206, nil, nil, 206, nil, nil, 483, nil, 483, - 206, 483, 483, 483, 483, 483, 483, 483, 206, 483, - nil, nil, nil, 206, 206, 206, 206, 206, 206, nil, - nil, nil, 206, 206, nil, nil, nil, nil, nil, nil, - 206, nil, nil, 206, nil, nil, nil, nil, 206, 206, - 214, 214, 214, 214, 214, nil, nil, nil, 214, 214, - nil, nil, nil, 214, nil, 214, 214, 214, 214, 214, - 214, 214, nil, nil, nil, nil, nil, 214, 214, 214, - 214, 214, 214, 214, nil, nil, 214, nil, nil, nil, - nil, nil, 214, 214, nil, 214, 214, 214, nil, 214, - 214, 214, 214, 214, nil, 214, 214, 214, nil, 214, - 214, nil, 214, 214, nil, 469, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 469, 469, nil, 214, nil, nil, 214, nil, - nil, 214, nil, nil, 214, nil, 214, 469, nil, nil, - 214, 469, 469, 469, 469, nil, nil, nil, 214, nil, - nil, nil, nil, 214, 214, 214, 214, 214, 214, nil, - nil, nil, 214, 214, nil, nil, nil, 215, 215, 215, - 214, 215, nil, 214, nil, 215, 215, nil, 214, 214, - 215, nil, 215, 215, 215, 215, 215, 215, 215, nil, - nil, nil, nil, nil, 215, 215, 215, 215, 215, 215, - 215, nil, nil, 215, nil, nil, nil, nil, nil, nil, - 215, nil, nil, 215, 215, nil, 215, 215, 215, 215, - 215, nil, 215, 215, 215, nil, 215, 215, nil, 215, - 215, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 215, nil, nil, 215, nil, 215, 215, nil, - nil, 215, nil, nil, nil, nil, nil, 215, nil, nil, - nil, nil, nil, nil, nil, 215, nil, nil, nil, nil, - 215, 215, 215, 215, 215, 215, nil, nil, nil, 215, - 215, nil, nil, nil, 218, 218, 218, 215, 218, nil, - 215, nil, 218, 218, nil, 215, 215, 218, nil, 218, - 218, 218, 218, 218, 218, 218, nil, nil, nil, nil, - nil, 218, 218, 218, 218, 218, 218, 218, nil, nil, - 218, nil, nil, nil, nil, nil, nil, 218, nil, nil, - 218, 218, nil, 218, 218, 218, 218, 218, nil, 218, - 218, 218, nil, 218, 218, nil, 218, 218, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 218, - nil, nil, 218, nil, nil, 218, nil, nil, 218, nil, - nil, nil, nil, nil, 218, nil, nil, nil, nil, nil, - nil, nil, 218, nil, nil, nil, nil, 218, 218, 218, - 218, 218, 218, nil, nil, nil, 218, 218, nil, nil, - nil, 220, 220, 220, 218, 220, nil, 218, nil, 220, - 220, nil, 218, 218, 220, nil, 220, 220, 220, 220, - 220, 220, 220, nil, nil, nil, nil, nil, 220, 220, - 220, 220, 220, 220, 220, nil, nil, 220, nil, nil, - nil, nil, nil, nil, 220, nil, nil, 220, 220, nil, - 220, 220, 220, 220, 220, nil, 220, 220, 220, nil, - 220, 220, nil, 220, 220, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 220, nil, nil, 220, - nil, nil, 220, nil, nil, 220, nil, nil, nil, nil, - nil, 220, nil, nil, nil, nil, nil, nil, nil, 220, - nil, nil, nil, nil, 220, 220, 220, 220, 220, 220, - nil, nil, nil, 220, 220, nil, nil, nil, 221, 221, - 221, 220, 221, nil, 220, nil, 221, 221, nil, 220, - 220, 221, nil, 221, 221, 221, 221, 221, 221, 221, - nil, nil, nil, nil, nil, 221, 221, 221, 221, 221, - 221, 221, nil, nil, 221, nil, nil, nil, nil, nil, - nil, 221, nil, nil, 221, 221, nil, 221, 221, 221, - 221, 221, nil, 221, 221, 221, nil, 221, 221, nil, - 221, 221, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 221, nil, nil, 221, nil, nil, 221, - nil, nil, 221, nil, nil, nil, nil, nil, 221, nil, - nil, nil, nil, nil, nil, nil, 221, nil, nil, nil, - nil, 221, 221, 221, 221, 221, 221, nil, nil, nil, - 221, 221, nil, nil, nil, 222, 222, 222, 221, 222, - nil, 221, nil, 222, 222, nil, 221, 221, 222, nil, - 222, 222, 222, 222, 222, 222, 222, nil, nil, nil, - nil, nil, 222, 222, 222, 222, 222, 222, 222, nil, - nil, 222, nil, nil, nil, nil, nil, nil, 222, nil, - nil, 222, 222, nil, 222, 222, 222, 222, 222, nil, - 222, 222, 222, nil, 222, 222, nil, 222, 222, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 222, nil, nil, 222, nil, nil, 222, nil, nil, 222, - nil, nil, nil, nil, nil, 222, nil, nil, nil, nil, - nil, nil, nil, 222, nil, nil, nil, nil, 222, 222, - 222, 222, 222, 222, nil, nil, nil, 222, 222, nil, - nil, nil, 223, 223, 223, 222, 223, nil, 222, nil, - 223, 223, nil, 222, 222, 223, nil, 223, 223, 223, - 223, 223, 223, 223, nil, nil, nil, nil, nil, 223, - 223, 223, 223, 223, 223, 223, nil, nil, 223, nil, - nil, nil, nil, nil, nil, 223, nil, nil, 223, 223, - nil, 223, 223, 223, 223, 223, nil, 223, 223, 223, - nil, 223, 223, nil, 223, 223, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 223, nil, nil, - 223, nil, nil, 223, nil, nil, 223, nil, nil, nil, - nil, nil, 223, nil, nil, nil, nil, nil, nil, nil, - 223, nil, nil, nil, nil, 223, 223, 223, 223, 223, - 223, nil, nil, nil, 223, 223, nil, nil, nil, 224, - 224, 224, 223, 224, nil, 223, nil, 224, 224, nil, - 223, 223, 224, nil, 224, 224, 224, 224, 224, 224, - 224, nil, nil, nil, nil, nil, 224, 224, 224, 224, - 224, 224, 224, nil, nil, 224, nil, nil, nil, nil, - nil, nil, 224, nil, nil, 224, 224, nil, 224, 224, - 224, 224, 224, nil, 224, 224, 224, nil, 224, 224, - nil, 224, 224, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 224, nil, nil, 224, nil, nil, - 224, nil, nil, 224, nil, nil, nil, nil, nil, 224, - nil, nil, nil, nil, nil, nil, nil, 224, nil, nil, - nil, nil, 224, 224, 224, 224, 224, 224, nil, nil, - nil, 224, 224, nil, nil, nil, 225, 225, 225, 224, - 225, nil, 224, nil, 225, 225, nil, 224, 224, 225, - nil, 225, 225, 225, 225, 225, 225, 225, nil, nil, - nil, nil, nil, 225, 225, 225, 225, 225, 225, 225, - nil, nil, 225, nil, nil, nil, nil, nil, nil, 225, - nil, nil, 225, 225, nil, 225, 225, 225, 225, 225, - nil, 225, 225, 225, nil, 225, 225, nil, 225, 225, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 225, nil, nil, 225, nil, nil, 225, nil, nil, - 225, nil, nil, nil, nil, nil, 225, nil, nil, nil, - nil, nil, nil, nil, 225, nil, nil, nil, nil, 225, - 225, 225, 225, 225, 225, nil, nil, nil, 225, 225, - nil, nil, nil, 226, 226, 226, 225, 226, nil, 225, - nil, 226, 226, nil, 225, 225, 226, nil, 226, 226, - 226, 226, 226, 226, 226, nil, nil, nil, nil, nil, - 226, 226, 226, 226, 226, 226, 226, nil, nil, 226, - nil, nil, nil, nil, nil, nil, 226, nil, nil, 226, - 226, nil, 226, 226, 226, 226, 226, nil, 226, 226, - 226, nil, 226, 226, nil, 226, 226, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 226, nil, - nil, 226, nil, nil, 226, nil, nil, 226, nil, nil, - nil, nil, nil, 226, nil, nil, nil, nil, nil, nil, - nil, 226, nil, nil, nil, nil, 226, 226, 226, 226, - 226, 226, nil, nil, nil, 226, 226, nil, nil, nil, - 227, 227, 227, 226, 227, nil, 226, nil, 227, 227, - nil, 226, 226, 227, nil, 227, 227, 227, 227, 227, - 227, 227, nil, nil, nil, nil, nil, 227, 227, 227, - 227, 227, 227, 227, nil, nil, 227, nil, nil, nil, - nil, nil, nil, 227, nil, nil, 227, 227, nil, 227, - 227, 227, 227, 227, nil, 227, 227, 227, nil, 227, - 227, nil, 227, 227, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 227, nil, nil, 227, nil, - nil, 227, nil, nil, 227, nil, nil, nil, nil, nil, - 227, nil, nil, nil, nil, nil, nil, nil, 227, nil, - nil, nil, nil, 227, 227, 227, 227, 227, 227, nil, - nil, nil, 227, 227, nil, nil, nil, 228, 228, 228, - 227, 228, nil, 227, nil, 228, 228, nil, 227, 227, - 228, nil, 228, 228, 228, 228, 228, 228, 228, nil, - nil, nil, nil, nil, 228, 228, 228, 228, 228, 228, - 228, nil, nil, 228, nil, nil, nil, nil, nil, nil, - 228, nil, nil, 228, 228, nil, 228, 228, 228, 228, - 228, nil, 228, 228, 228, nil, 228, 228, nil, 228, - 228, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 228, nil, nil, 228, nil, nil, 228, nil, - nil, 228, nil, nil, nil, nil, nil, 228, nil, nil, - nil, nil, nil, nil, nil, 228, nil, nil, nil, nil, - 228, 228, 228, 228, 228, 228, nil, nil, nil, 228, - 228, nil, nil, nil, 229, 229, 229, 228, 229, nil, - 228, nil, 229, 229, nil, 228, 228, 229, nil, 229, - 229, 229, 229, 229, 229, 229, nil, nil, nil, nil, - nil, 229, 229, 229, 229, 229, 229, 229, nil, nil, - 229, nil, nil, nil, nil, nil, nil, 229, nil, nil, - 229, 229, nil, 229, 229, 229, 229, 229, nil, 229, - 229, 229, nil, 229, 229, nil, 229, 229, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 229, - nil, nil, 229, nil, nil, 229, nil, nil, 229, nil, - nil, nil, nil, nil, 229, nil, nil, nil, nil, nil, - nil, nil, 229, nil, nil, nil, nil, 229, 229, 229, - 229, 229, 229, nil, nil, nil, 229, 229, nil, nil, - nil, 230, 230, 230, 229, 230, nil, 229, nil, 230, - 230, nil, 229, 229, 230, nil, 230, 230, 230, 230, - 230, 230, 230, nil, nil, nil, nil, nil, 230, 230, - 230, 230, 230, 230, 230, nil, nil, 230, nil, nil, - nil, nil, nil, nil, 230, nil, nil, 230, 230, nil, - 230, 230, 230, 230, 230, nil, 230, 230, 230, nil, - 230, 230, nil, 230, 230, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 230, nil, nil, 230, - nil, nil, 230, nil, nil, 230, nil, nil, nil, nil, - nil, 230, nil, nil, nil, nil, nil, nil, nil, 230, - nil, nil, nil, nil, 230, 230, 230, 230, 230, 230, - nil, nil, nil, 230, 230, nil, nil, nil, 231, 231, - 231, 230, 231, nil, 230, nil, 231, 231, nil, 230, - 230, 231, nil, 231, 231, 231, 231, 231, 231, 231, - nil, nil, nil, nil, nil, 231, 231, 231, 231, 231, - 231, 231, nil, nil, 231, nil, nil, nil, nil, nil, - nil, 231, nil, nil, 231, 231, nil, 231, 231, 231, - 231, 231, nil, 231, 231, 231, nil, 231, 231, nil, - 231, 231, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 231, nil, nil, 231, nil, nil, 231, - nil, nil, 231, nil, nil, nil, nil, nil, 231, nil, - nil, nil, nil, nil, nil, nil, 231, nil, nil, nil, - nil, 231, 231, 231, 231, 231, 231, nil, nil, nil, - 231, 231, nil, nil, nil, 232, 232, 232, 231, 232, - nil, 231, nil, 232, 232, nil, 231, 231, 232, nil, - 232, 232, 232, 232, 232, 232, 232, nil, nil, nil, - nil, nil, 232, 232, 232, 232, 232, 232, 232, nil, - nil, 232, nil, nil, nil, nil, nil, nil, 232, nil, - nil, 232, 232, nil, 232, 232, 232, 232, 232, nil, - 232, 232, 232, nil, 232, 232, nil, 232, 232, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 232, nil, nil, 232, nil, nil, 232, nil, nil, 232, - nil, nil, nil, nil, nil, 232, nil, nil, nil, nil, - nil, nil, nil, 232, nil, nil, nil, nil, 232, 232, - 232, 232, 232, 232, nil, nil, nil, 232, 232, nil, - nil, nil, 233, 233, 233, 232, 233, nil, 232, nil, - 233, 233, nil, 232, 232, 233, nil, 233, 233, 233, - 233, 233, 233, 233, nil, nil, nil, nil, nil, 233, - 233, 233, 233, 233, 233, 233, nil, nil, 233, nil, - nil, nil, nil, nil, nil, 233, nil, nil, 233, 233, - nil, 233, 233, 233, 233, 233, nil, 233, 233, 233, - nil, 233, 233, nil, 233, 233, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 233, nil, nil, - 233, nil, nil, 233, nil, nil, 233, nil, nil, nil, - nil, nil, 233, nil, nil, nil, nil, nil, nil, nil, - 233, nil, nil, nil, nil, 233, 233, 233, 233, 233, - 233, nil, nil, nil, 233, 233, nil, nil, nil, 234, - 234, 234, 233, 234, nil, 233, nil, 234, 234, nil, - 233, 233, 234, nil, 234, 234, 234, 234, 234, 234, - 234, nil, nil, nil, nil, nil, 234, 234, 234, 234, - 234, 234, 234, nil, nil, 234, nil, nil, nil, nil, - nil, nil, 234, nil, nil, 234, 234, nil, 234, 234, - 234, 234, 234, nil, 234, 234, 234, nil, 234, 234, - nil, 234, 234, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 234, nil, nil, 234, nil, nil, - 234, nil, nil, 234, nil, nil, nil, nil, nil, 234, - nil, nil, nil, nil, nil, nil, nil, 234, nil, nil, - nil, nil, 234, 234, 234, 234, 234, 234, nil, nil, - nil, 234, 234, nil, nil, nil, 235, 235, 235, 234, - 235, nil, 234, nil, 235, 235, nil, 234, 234, 235, - nil, 235, 235, 235, 235, 235, 235, 235, nil, nil, - nil, nil, nil, 235, 235, 235, 235, 235, 235, 235, - nil, nil, 235, nil, nil, nil, nil, nil, nil, 235, - nil, nil, 235, 235, nil, 235, 235, 235, 235, 235, - nil, 235, 235, 235, nil, 235, 235, nil, 235, 235, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 235, nil, nil, 235, nil, nil, 235, nil, nil, - 235, nil, nil, nil, nil, nil, 235, nil, nil, nil, - nil, nil, nil, nil, 235, nil, nil, nil, nil, 235, - 235, 235, 235, 235, 235, nil, nil, nil, 235, 235, - nil, nil, nil, 236, 236, 236, 235, 236, nil, 235, - nil, 236, 236, nil, 235, 235, 236, nil, 236, 236, - 236, 236, 236, 236, 236, nil, nil, nil, nil, nil, - 236, 236, 236, 236, 236, 236, 236, nil, nil, 236, - nil, nil, nil, nil, nil, nil, 236, nil, nil, 236, - 236, nil, 236, 236, 236, 236, 236, nil, 236, 236, - 236, nil, 236, 236, nil, 236, 236, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 236, nil, - nil, 236, nil, nil, 236, nil, nil, 236, nil, nil, - nil, nil, nil, 236, nil, nil, nil, nil, nil, nil, - nil, 236, nil, nil, nil, nil, 236, 236, 236, 236, - 236, 236, nil, nil, nil, 236, 236, nil, nil, nil, - 237, 237, 237, 236, 237, nil, 236, nil, 237, 237, - nil, 236, 236, 237, nil, 237, 237, 237, 237, 237, - 237, 237, nil, nil, nil, nil, nil, 237, 237, 237, - 237, 237, 237, 237, nil, nil, 237, nil, nil, nil, - nil, nil, nil, 237, nil, nil, 237, 237, nil, 237, - 237, 237, 237, 237, nil, 237, 237, 237, nil, 237, - 237, nil, 237, 237, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 237, nil, nil, 237, nil, - nil, 237, nil, nil, 237, nil, nil, nil, nil, nil, - 237, nil, nil, nil, nil, nil, nil, nil, 237, nil, - nil, nil, nil, 237, 237, 237, 237, 237, 237, nil, - nil, nil, 237, 237, nil, nil, nil, 238, 238, 238, - 237, 238, nil, 237, nil, 238, 238, nil, 237, 237, - 238, nil, 238, 238, 238, 238, 238, 238, 238, nil, - nil, nil, nil, nil, 238, 238, 238, 238, 238, 238, - 238, nil, nil, 238, nil, nil, nil, nil, nil, nil, - 238, nil, nil, 238, 238, nil, 238, 238, 238, 238, - 238, nil, 238, 238, 238, nil, 238, 238, nil, 238, - 238, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 238, nil, nil, 238, nil, nil, 238, nil, - nil, 238, nil, nil, nil, nil, nil, 238, nil, nil, - nil, nil, nil, nil, nil, 238, nil, nil, nil, nil, - 238, 238, 238, 238, 238, 238, nil, nil, nil, 238, - 238, nil, nil, nil, 239, 239, 239, 238, 239, nil, - 238, nil, 239, 239, nil, 238, 238, 239, nil, 239, - 239, 239, 239, 239, 239, 239, nil, nil, nil, nil, - nil, 239, 239, 239, 239, 239, 239, 239, nil, nil, - 239, nil, nil, nil, nil, nil, nil, 239, nil, nil, - 239, 239, nil, 239, 239, 239, 239, 239, nil, 239, - 239, 239, nil, 239, 239, nil, 239, 239, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 239, - nil, nil, 239, nil, nil, 239, nil, nil, 239, nil, - nil, nil, nil, nil, 239, nil, nil, nil, nil, nil, - nil, nil, 239, nil, nil, nil, nil, 239, 239, 239, - 239, 239, 239, nil, nil, nil, 239, 239, nil, nil, - nil, 240, 240, 240, 239, 240, nil, 239, nil, 240, - 240, nil, 239, 239, 240, nil, 240, 240, 240, 240, - 240, 240, 240, nil, nil, nil, nil, nil, 240, 240, - 240, 240, 240, 240, 240, nil, nil, 240, nil, nil, - nil, nil, nil, nil, 240, nil, nil, 240, 240, nil, - 240, 240, 240, 240, 240, nil, 240, 240, 240, nil, - 240, 240, nil, 240, 240, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 240, nil, nil, 240, - nil, nil, 240, nil, nil, 240, nil, nil, nil, nil, - nil, 240, nil, nil, nil, nil, nil, nil, nil, 240, - nil, nil, nil, nil, 240, 240, 240, 240, 240, 240, - nil, nil, nil, 240, 240, nil, nil, nil, 241, 241, - 241, 240, 241, nil, 240, nil, 241, 241, nil, 240, - 240, 241, nil, 241, 241, 241, 241, 241, 241, 241, - nil, nil, nil, nil, nil, 241, 241, 241, 241, 241, - 241, 241, nil, nil, 241, nil, nil, nil, nil, nil, - nil, 241, nil, nil, 241, 241, nil, 241, 241, 241, - 241, 241, nil, 241, 241, 241, nil, 241, 241, nil, - 241, 241, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 241, nil, nil, 241, nil, nil, 241, - nil, nil, 241, nil, nil, nil, nil, nil, 241, nil, - nil, nil, nil, nil, nil, nil, 241, nil, nil, nil, - nil, 241, 241, 241, 241, 241, 241, nil, nil, nil, - 241, 241, nil, nil, nil, 242, 242, 242, 241, 242, - nil, 241, nil, 242, 242, nil, 241, 241, 242, nil, - 242, 242, 242, 242, 242, 242, 242, nil, nil, nil, - nil, nil, 242, 242, 242, 242, 242, 242, 242, nil, - nil, 242, nil, nil, nil, nil, nil, nil, 242, nil, - nil, 242, 242, nil, 242, 242, 242, 242, 242, nil, - 242, 242, 242, nil, 242, 242, nil, 242, 242, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 242, nil, nil, 242, nil, nil, 242, nil, nil, 242, - nil, nil, nil, nil, nil, 242, nil, nil, nil, nil, - nil, nil, nil, 242, nil, nil, nil, nil, 242, 242, - 242, 242, 242, 242, nil, nil, nil, 242, 242, nil, - nil, nil, 243, 243, 243, 242, 243, nil, 242, nil, - 243, 243, nil, 242, 242, 243, nil, 243, 243, 243, - 243, 243, 243, 243, nil, nil, nil, nil, nil, 243, - 243, 243, 243, 243, 243, 243, nil, nil, 243, nil, - nil, nil, nil, nil, nil, 243, nil, nil, 243, 243, - nil, 243, 243, 243, 243, 243, nil, 243, 243, 243, - nil, 243, 243, nil, 243, 243, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 243, nil, nil, - 243, nil, nil, 243, nil, nil, 243, nil, nil, nil, - nil, nil, 243, nil, nil, nil, nil, nil, nil, nil, - 243, nil, nil, nil, nil, 243, 243, 243, 243, 243, - 243, nil, nil, nil, 243, 243, nil, nil, nil, 244, - 244, 244, 243, 244, nil, 243, nil, 244, 244, nil, - 243, 243, 244, nil, 244, 244, 244, 244, 244, 244, - 244, nil, nil, nil, nil, nil, 244, 244, 244, 244, - 244, 244, 244, nil, nil, 244, nil, nil, nil, nil, - nil, nil, 244, nil, nil, 244, 244, nil, 244, 244, - 244, 244, 244, nil, 244, 244, 244, nil, 244, 244, - nil, 244, 244, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 244, nil, nil, 244, nil, nil, - 244, nil, nil, 244, nil, nil, nil, nil, nil, 244, - nil, nil, nil, nil, nil, nil, nil, 244, nil, nil, - nil, nil, 244, 244, 244, 244, 244, 244, nil, nil, - nil, 244, 244, nil, nil, nil, 245, 245, 245, 244, - 245, nil, 244, nil, 245, 245, nil, 244, 244, 245, - nil, 245, 245, 245, 245, 245, 245, 245, nil, nil, - nil, nil, nil, 245, 245, 245, 245, 245, 245, 245, - nil, nil, 245, nil, nil, nil, nil, nil, nil, 245, - nil, nil, 245, 245, nil, 245, 245, 245, 245, 245, - nil, 245, 245, 245, nil, 245, 245, nil, 245, 245, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 245, nil, nil, 245, nil, nil, 245, nil, nil, - 245, nil, nil, nil, nil, nil, 245, nil, nil, nil, - nil, nil, nil, nil, 245, nil, nil, nil, nil, 245, - 245, 245, 245, 245, 245, nil, nil, nil, 245, 245, - nil, nil, nil, 254, 254, 254, 245, 254, nil, 245, - nil, 254, 254, nil, 245, 245, 254, nil, 254, 254, - 254, 254, 254, 254, 254, nil, nil, nil, nil, nil, - 254, 254, 254, 254, 254, 254, 254, nil, nil, 254, - nil, nil, nil, nil, nil, nil, 254, nil, nil, 254, - 254, nil, 254, 254, 254, 254, 254, nil, 254, 254, - 254, nil, 254, 254, nil, 254, 254, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 254, nil, - nil, 254, nil, nil, 254, nil, nil, 254, nil, nil, - nil, nil, nil, 254, nil, nil, nil, nil, nil, nil, - nil, 254, nil, nil, nil, nil, 254, 254, 254, 254, - 254, 254, nil, nil, nil, 254, 254, nil, nil, nil, - 256, 256, 256, 254, 256, nil, 254, nil, 256, 256, - nil, 254, 254, 256, nil, 256, 256, 256, 256, 256, - 256, 256, nil, nil, nil, nil, nil, 256, 256, 256, - 256, 256, 256, 256, nil, nil, 256, nil, nil, nil, - nil, nil, nil, 256, nil, nil, 256, 256, nil, 256, - 256, 256, 256, 256, nil, 256, 256, 256, nil, 256, - 256, nil, 256, 256, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 256, nil, nil, 256, nil, - nil, 256, nil, nil, 256, nil, nil, nil, nil, nil, - 256, nil, nil, nil, nil, nil, nil, nil, 256, nil, - nil, nil, nil, 256, 256, 256, 256, 256, 256, nil, - nil, nil, 256, 256, nil, nil, nil, 261, 261, 261, - 256, 261, nil, 256, nil, 261, 261, nil, 256, 256, - 261, nil, 261, 261, 261, 261, 261, 261, 261, nil, - nil, nil, nil, nil, 261, 261, 261, 261, 261, 261, - 261, nil, nil, 261, nil, nil, nil, nil, nil, nil, - 261, nil, nil, 261, 261, nil, 261, 261, 261, 261, - 261, nil, 261, 261, 261, nil, 261, 261, nil, 261, - 261, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 261, nil, nil, 261, nil, nil, 261, nil, - nil, 261, nil, nil, nil, nil, nil, 261, nil, nil, - nil, nil, nil, nil, nil, 261, nil, nil, nil, nil, - 261, 261, 261, 261, 261, 261, nil, nil, nil, 261, - 261, nil, nil, nil, 268, 268, 268, 261, 268, nil, - 261, nil, 268, 268, nil, 261, 261, 268, nil, 268, - 268, 268, 268, 268, 268, 268, nil, nil, nil, nil, - nil, 268, 268, 268, 268, 268, 268, 268, nil, nil, - 268, nil, nil, nil, nil, nil, nil, 268, nil, nil, - 268, 268, nil, 268, 268, 268, 268, 268, 268, 268, - 268, 268, nil, 268, 268, nil, 268, 268, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 268, - nil, nil, 268, nil, nil, 268, nil, nil, 268, nil, - 268, nil, 268, nil, 268, nil, nil, nil, nil, nil, - nil, nil, 268, nil, nil, nil, nil, 268, 268, 268, - 268, 268, 268, nil, nil, nil, 268, 268, nil, nil, - nil, 269, 269, 269, 268, 269, nil, 268, nil, 269, - 269, nil, 268, 268, 269, nil, 269, 269, 269, 269, - 269, 269, 269, nil, nil, nil, nil, nil, 269, 269, - 269, 269, 269, 269, 269, nil, nil, 269, nil, nil, - nil, nil, nil, nil, 269, nil, nil, 269, 269, nil, - 269, 269, 269, 269, 269, 269, 269, 269, 269, nil, - 269, 269, nil, 269, 269, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 269, nil, nil, 269, - nil, nil, 269, nil, nil, 269, nil, 269, nil, 269, - nil, 269, nil, nil, nil, nil, nil, nil, nil, 269, - nil, nil, nil, nil, 269, 269, 269, 269, 269, 269, - nil, nil, nil, 269, 269, nil, nil, nil, 277, 277, - 277, 269, 277, nil, 269, nil, 277, 277, nil, 269, - 269, 277, nil, 277, 277, 277, 277, 277, 277, 277, - nil, nil, nil, nil, nil, 277, 277, 277, 277, 277, - 277, 277, nil, nil, 277, nil, nil, nil, nil, nil, - nil, 277, nil, nil, 277, 277, nil, 277, 277, 277, - 277, 277, 277, 277, 277, 277, nil, 277, 277, nil, - 277, 277, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 277, nil, nil, 277, nil, 277, 277, - nil, nil, 277, nil, 277, nil, 277, nil, 277, nil, - nil, nil, nil, nil, nil, nil, 277, nil, nil, nil, - nil, 277, 277, 277, 277, 277, 277, nil, nil, nil, - 277, 277, nil, nil, nil, nil, nil, nil, 277, nil, - nil, 277, nil, nil, nil, nil, 277, 277, 281, 281, - 281, 281, 281, nil, nil, nil, 281, 281, nil, nil, - nil, 281, nil, 281, 281, 281, 281, 281, 281, 281, - nil, nil, nil, nil, nil, 281, 281, 281, 281, 281, - 281, 281, nil, nil, 281, nil, nil, nil, nil, nil, - 281, 281, nil, 281, 281, 281, nil, 281, 281, 281, - 281, 281, nil, 281, 281, 281, nil, 281, 281, nil, - 281, 281, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 281, nil, nil, 281, nil, nil, 281, - nil, nil, 281, nil, 281, nil, nil, nil, 281, nil, - nil, nil, nil, nil, nil, nil, 281, nil, nil, nil, - nil, 281, 281, 281, 281, 281, 281, nil, nil, nil, - 281, 281, nil, nil, nil, 285, 285, 285, 281, 285, - nil, 281, nil, 285, 285, nil, 281, 281, 285, nil, - 285, 285, 285, 285, 285, 285, 285, nil, nil, nil, - nil, nil, 285, 285, 285, 285, 285, 285, 285, nil, - nil, 285, nil, nil, nil, nil, nil, nil, 285, nil, - nil, 285, 285, nil, 285, 285, 285, 285, 285, nil, - 285, 285, 285, nil, 285, 285, 749, nil, 749, 749, - 749, 749, 749, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 749, nil, nil, nil, nil, nil, nil, nil, - 285, nil, nil, 285, nil, nil, 285, nil, nil, 285, - nil, nil, nil, nil, nil, 749, nil, nil, nil, nil, - nil, nil, nil, 749, 749, 749, 749, nil, 285, 285, - 285, 285, 285, 285, nil, nil, nil, 285, 285, nil, - nil, nil, 285, nil, nil, 285, nil, nil, 285, nil, - nil, nil, nil, 285, 285, 286, 286, 286, 286, 286, - nil, nil, 749, 286, 286, nil, nil, nil, 286, nil, - 286, 286, 286, 286, 286, 286, 286, nil, nil, nil, - nil, nil, 286, 286, 286, 286, 286, 286, 286, nil, - nil, 286, nil, nil, nil, nil, nil, 286, 286, nil, - 286, 286, 286, nil, 286, 286, 286, 286, 286, nil, - 286, 286, 286, nil, 286, 286, nil, 286, 286, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 286, nil, nil, 286, nil, nil, 286, nil, nil, 286, - nil, 286, nil, nil, nil, 286, nil, nil, nil, nil, - nil, nil, nil, 286, nil, nil, nil, nil, 286, 286, - 286, 286, 286, 286, nil, nil, nil, 286, 286, nil, - nil, nil, 298, 298, 298, 286, 298, nil, 286, nil, - 298, 298, nil, 286, 286, 298, nil, 298, 298, 298, - 298, 298, 298, 298, nil, nil, nil, nil, nil, 298, - 298, 298, 298, 298, 298, 298, nil, nil, 298, nil, - nil, nil, nil, nil, nil, 298, nil, nil, 298, 298, - nil, 298, 298, 298, 298, 298, nil, 298, 298, 298, - nil, 298, 298, 56, nil, 56, 56, 56, nil, 56, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 298, nil, nil, - 298, nil, nil, 298, nil, nil, 298, nil, nil, nil, - nil, nil, 56, 56, nil, nil, nil, nil, nil, nil, - 56, 56, 56, 56, nil, 298, 298, 298, 298, 298, - 298, nil, nil, nil, 298, 298, nil, nil, nil, 307, - 307, 307, 298, 307, nil, 298, nil, 307, 307, nil, - 298, 298, 307, nil, 307, 307, 307, 307, 307, 307, - 307, nil, nil, nil, nil, nil, 307, 307, 307, 307, - 307, 307, 307, nil, nil, 307, nil, nil, nil, nil, - nil, nil, 307, nil, nil, 307, 307, nil, 307, 307, - 307, 307, 307, nil, 307, 307, 307, nil, 307, 307, - nil, 307, 307, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 307, nil, nil, 307, 307, nil, - 307, nil, nil, 307, nil, nil, nil, nil, nil, 307, - nil, nil, nil, nil, nil, nil, nil, 307, nil, nil, - nil, nil, 307, 307, 307, 307, 307, 307, nil, nil, - nil, 307, 307, nil, nil, nil, nil, nil, nil, 307, - nil, nil, 307, nil, nil, nil, nil, 307, 307, 309, - 309, 309, 309, 309, nil, nil, nil, 309, 309, nil, - nil, nil, 309, nil, 309, 309, 309, 309, 309, 309, - 309, nil, nil, nil, nil, nil, 309, 309, 309, 309, - 309, 309, 309, nil, nil, 309, nil, nil, nil, nil, - nil, 309, 309, nil, 309, 309, 309, nil, 309, 309, - 309, 309, 309, nil, 309, 309, 309, nil, 309, 309, - nil, 309, 309, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 309, nil, nil, 309, nil, nil, - 309, nil, nil, 309, nil, 309, nil, nil, nil, 309, - nil, nil, nil, nil, nil, nil, nil, 309, nil, nil, - nil, nil, 309, 309, 309, 309, 309, 309, nil, nil, - nil, 309, 309, nil, nil, nil, 349, 349, 349, 309, - 349, nil, 309, nil, 349, 349, nil, 309, 309, 349, - nil, 349, 349, 349, 349, 349, 349, 349, nil, nil, - nil, nil, nil, 349, 349, 349, 349, 349, 349, 349, - nil, nil, 349, nil, nil, nil, nil, nil, nil, 349, - nil, nil, 349, 349, nil, 349, 349, 349, 349, 349, - nil, 349, 349, 349, nil, 349, 349, nil, 349, 349, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 349, nil, nil, 349, nil, nil, 349, nil, nil, - 349, nil, nil, nil, nil, nil, 349, nil, nil, nil, - nil, nil, nil, nil, 349, nil, nil, nil, nil, 349, - 349, 349, 349, 349, 349, nil, nil, nil, 349, 349, - nil, nil, nil, 350, 350, 350, 349, 350, nil, 349, - nil, 350, 350, nil, 349, 349, 350, nil, 350, 350, - 350, 350, 350, 350, 350, nil, nil, nil, nil, nil, - 350, 350, 350, 350, 350, 350, 350, nil, nil, 350, - nil, nil, nil, nil, nil, nil, 350, nil, nil, 350, - 350, nil, 350, 350, 350, 350, 350, nil, 350, 350, - 350, nil, 350, 350, nil, 350, 350, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 350, nil, - nil, 350, nil, nil, 350, nil, nil, 350, nil, nil, - nil, nil, nil, 350, nil, nil, nil, nil, nil, nil, - nil, 350, nil, nil, nil, nil, 350, 350, 350, 350, - 350, 350, nil, nil, nil, 350, 350, nil, nil, nil, - 369, 369, 369, 350, 369, nil, 350, nil, 369, 369, - nil, 350, 350, 369, nil, 369, 369, 369, 369, 369, - 369, 369, nil, nil, nil, nil, nil, 369, 369, 369, - 369, 369, 369, 369, nil, nil, 369, nil, nil, nil, - nil, nil, nil, 369, nil, nil, 369, 369, nil, 369, - 369, 369, 369, 369, nil, 369, 369, 369, nil, 369, - 369, 322, nil, 322, 322, 322, nil, 322, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 369, nil, nil, 369, nil, - nil, 369, nil, nil, 369, nil, nil, nil, nil, nil, - 322, nil, 322, nil, nil, nil, nil, nil, 322, 322, - 322, 322, nil, 369, 369, 369, 369, 369, 369, nil, - nil, nil, 369, 369, nil, nil, nil, 381, 381, 381, - 369, 381, nil, 369, nil, 381, 381, nil, 369, 369, - 381, nil, 381, 381, 381, 381, 381, 381, 381, nil, - nil, nil, nil, nil, 381, 381, 381, 381, 381, 381, - 381, nil, nil, 381, nil, nil, nil, nil, nil, nil, - 381, nil, nil, 381, 381, nil, 381, 381, 381, 381, - 381, nil, 381, 381, 381, nil, 381, 381, nil, 381, - 381, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 381, nil, nil, 381, nil, nil, 381, nil, - nil, 381, nil, nil, nil, nil, nil, 381, nil, nil, - nil, nil, nil, nil, nil, 381, nil, nil, nil, nil, - 381, 381, 381, 381, 381, 381, nil, nil, nil, 381, - 381, nil, nil, nil, 421, 421, 421, 381, 421, nil, - 381, nil, 421, 421, nil, 381, 381, 421, nil, 421, - 421, 421, 421, 421, 421, 421, nil, nil, nil, nil, - nil, 421, 421, 421, 421, 421, 421, 421, nil, nil, - 421, nil, nil, nil, nil, nil, nil, 421, nil, nil, - 421, 421, nil, 421, 421, 421, 421, 421, nil, 421, - 421, 421, nil, 421, 421, nil, 421, 421, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 421, - nil, nil, 421, nil, nil, 421, nil, nil, 421, nil, - nil, nil, nil, nil, 421, nil, nil, nil, nil, nil, - nil, nil, 421, nil, nil, nil, nil, 421, 421, 421, - 421, 421, 421, nil, nil, nil, 421, 421, nil, nil, - nil, 432, 432, 432, 421, 432, nil, 421, nil, 432, - 432, nil, 421, 421, 432, nil, 432, 432, 432, 432, - 432, 432, 432, nil, nil, nil, nil, nil, 432, 432, - 432, 432, 432, 432, 432, nil, nil, 432, nil, nil, - nil, nil, nil, nil, 432, nil, nil, 432, 432, nil, - 432, 432, 432, 432, 432, 432, 432, 432, 432, nil, - 432, 432, nil, 432, 432, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 432, nil, nil, 432, - 432, nil, 432, nil, nil, 432, nil, 432, nil, 432, - nil, 432, nil, nil, nil, nil, nil, nil, nil, 432, - nil, nil, nil, nil, 432, 432, 432, 432, 432, 432, - nil, nil, nil, 432, 432, nil, nil, nil, 440, 440, - 440, 432, 440, nil, 432, nil, 440, 440, nil, 432, - 432, 440, nil, 440, 440, 440, 440, 440, 440, 440, - nil, nil, nil, nil, nil, 440, 440, 440, 440, 440, - 440, 440, nil, nil, 440, nil, nil, nil, nil, nil, - nil, 440, nil, nil, 440, 440, nil, 440, 440, 440, - 440, 440, 440, 440, 440, 440, nil, 440, 440, nil, - 440, 440, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 440, nil, nil, 440, 440, nil, 440, - nil, nil, 440, nil, 440, nil, 440, nil, 440, nil, - nil, nil, nil, nil, nil, nil, 440, nil, nil, nil, - nil, 440, 440, 440, 440, 440, 440, nil, nil, nil, - 440, 440, nil, nil, nil, 441, 441, 441, 440, 441, - nil, 440, nil, 441, 441, nil, 440, 440, 441, nil, - 441, 441, 441, 441, 441, 441, 441, nil, nil, nil, - nil, nil, 441, 441, 441, 441, 441, 441, 441, nil, - nil, 441, nil, nil, nil, nil, nil, nil, 441, nil, - nil, 441, 441, nil, 441, 441, 441, 441, 441, 441, - 441, 441, 441, nil, 441, 441, nil, 441, 441, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 441, nil, nil, 441, 441, nil, 441, nil, nil, 441, - nil, 441, nil, 441, nil, 441, nil, nil, nil, nil, - nil, nil, nil, 441, nil, nil, nil, nil, 441, 441, - 441, 441, 441, 441, nil, nil, nil, 441, 441, nil, - nil, nil, 442, 442, 442, 441, 442, nil, 441, nil, - 442, 442, nil, 441, 441, 442, nil, 442, 442, 442, - 442, 442, 442, 442, nil, nil, nil, nil, nil, 442, - 442, 442, 442, 442, 442, 442, nil, nil, 442, nil, - nil, nil, nil, nil, nil, 442, nil, nil, 442, 442, - nil, 442, 442, 442, 442, 442, 442, 442, 442, 442, - nil, 442, 442, nil, 442, 442, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 442, nil, nil, - 442, 442, nil, 442, nil, nil, 442, nil, 442, nil, - 442, nil, 442, nil, nil, nil, nil, nil, nil, nil, - 442, nil, nil, nil, nil, 442, 442, 442, 442, 442, - 442, nil, nil, nil, 442, 442, nil, nil, nil, 451, - 451, 451, 442, 451, nil, 442, nil, 451, 451, nil, - 442, 442, 451, nil, 451, 451, 451, 451, 451, 451, - 451, nil, nil, nil, nil, nil, 451, 451, 451, 451, - 451, 451, 451, nil, nil, 451, nil, nil, nil, nil, - nil, nil, 451, nil, nil, 451, 451, nil, 451, 451, - 451, 451, 451, 451, 451, 451, 451, nil, 451, 451, - nil, 451, 451, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 451, nil, nil, 451, nil, nil, - 451, nil, nil, 451, nil, 451, nil, nil, nil, 451, - nil, nil, nil, nil, nil, nil, nil, 451, nil, nil, - nil, nil, 451, 451, 451, 451, 451, 451, nil, nil, - nil, 451, 451, nil, nil, nil, 452, 452, 452, 451, - 452, nil, 451, nil, 452, 452, nil, 451, 451, 452, - nil, 452, 452, 452, 452, 452, 452, 452, nil, nil, - nil, nil, nil, 452, 452, 452, 452, 452, 452, 452, - nil, nil, 452, nil, nil, nil, nil, nil, nil, 452, - nil, nil, 452, 452, nil, 452, 452, 452, 452, 452, - 452, 452, 452, 452, nil, 452, 452, nil, 452, 452, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 452, nil, nil, 452, nil, nil, 452, nil, nil, - 452, nil, 452, nil, nil, nil, 452, nil, nil, nil, - nil, nil, nil, nil, 452, nil, nil, nil, nil, 452, - 452, 452, 452, 452, 452, nil, nil, nil, 452, 452, - nil, nil, nil, 454, 454, 454, 452, 454, nil, 452, - nil, 454, 454, nil, 452, 452, 454, nil, 454, 454, - 454, 454, 454, 454, 454, nil, nil, nil, nil, nil, - 454, 454, 454, 454, 454, 454, 454, nil, nil, 454, - nil, nil, nil, nil, nil, nil, 454, nil, nil, 454, - 454, nil, 454, 454, 454, 454, 454, nil, 454, 454, - 454, nil, 454, 454, nil, 454, 454, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 454, nil, - nil, 454, nil, nil, 454, nil, nil, 454, nil, nil, - nil, nil, nil, 454, nil, nil, nil, nil, nil, nil, - nil, 454, nil, nil, nil, nil, 454, 454, 454, 454, - 454, 454, nil, nil, nil, 454, 454, nil, nil, nil, - 455, 455, 455, 454, 455, nil, 454, nil, 455, 455, - nil, 454, 454, 455, nil, 455, 455, 455, 455, 455, - 455, 455, nil, nil, nil, nil, nil, 455, 455, 455, - 455, 455, 455, 455, nil, nil, 455, nil, nil, nil, - nil, nil, nil, 455, nil, nil, 455, 455, nil, 455, - 455, 455, 455, 455, nil, 455, 455, 455, nil, 455, - 455, nil, 455, 455, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 455, nil, nil, 455, nil, - nil, 455, nil, nil, 455, nil, nil, nil, nil, nil, - 455, nil, nil, nil, nil, nil, nil, nil, 455, nil, - nil, nil, nil, 455, 455, 455, 455, 455, 455, nil, - nil, nil, 455, 455, nil, nil, nil, 456, 456, 456, - 455, 456, nil, 455, nil, 456, 456, nil, 455, 455, - 456, nil, 456, 456, 456, 456, 456, 456, 456, nil, - nil, nil, nil, nil, 456, 456, 456, 456, 456, 456, - 456, nil, nil, 456, nil, nil, nil, nil, nil, nil, - 456, nil, nil, 456, 456, nil, 456, 456, 456, 456, - 456, nil, 456, 456, 456, nil, 456, 456, nil, 456, - 456, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 456, nil, nil, 456, nil, nil, 456, nil, - nil, 456, nil, nil, nil, nil, nil, 456, nil, nil, - nil, nil, nil, nil, nil, 456, nil, nil, nil, nil, - 456, 456, 456, 456, 456, 456, nil, nil, nil, 456, - 456, nil, nil, nil, 487, 487, 487, 456, 487, nil, - 456, nil, 487, 487, nil, 456, 456, 487, nil, 487, - 487, 487, 487, 487, 487, 487, nil, nil, nil, nil, - nil, 487, 487, 487, 487, 487, 487, 487, nil, nil, - 487, nil, nil, nil, nil, nil, nil, 487, nil, nil, - 487, 487, nil, 487, 487, 487, 487, 487, 487, 487, - 487, 487, nil, 487, 487, nil, 487, 487, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 487, - nil, nil, 487, nil, nil, 487, nil, nil, 487, nil, - 487, nil, 487, nil, 487, nil, nil, nil, nil, nil, - nil, nil, 487, nil, nil, nil, nil, 487, 487, 487, - 487, 487, 487, nil, nil, nil, 487, 487, nil, nil, - nil, 489, 489, 489, 487, 489, nil, 487, nil, 489, - 489, nil, 487, 487, 489, nil, 489, 489, 489, 489, - 489, 489, 489, nil, nil, nil, nil, nil, 489, 489, - 489, 489, 489, 489, 489, nil, nil, 489, nil, nil, - nil, nil, nil, nil, 489, nil, nil, 489, 489, nil, - 489, 489, 489, 489, 489, 489, 489, 489, 489, nil, - 489, 489, nil, 489, 489, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 489, nil, nil, 489, - nil, nil, 489, nil, nil, 489, nil, nil, nil, 489, - nil, 489, nil, nil, nil, nil, nil, nil, nil, 489, - nil, nil, nil, nil, 489, 489, 489, 489, 489, 489, - nil, nil, nil, 489, 489, nil, nil, nil, 491, 491, - 491, 489, 491, nil, 489, nil, 491, 491, nil, 489, - 489, 491, nil, 491, 491, 491, 491, 491, 491, 491, - nil, nil, nil, nil, nil, 491, 491, 491, 491, 491, - 491, 491, nil, nil, 491, nil, nil, nil, nil, nil, - nil, 491, nil, nil, 491, 491, nil, 491, 491, 491, - 491, 491, nil, 491, 491, 491, nil, 491, 491, nil, - 491, 491, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 491, nil, nil, 491, nil, nil, 491, - nil, nil, 491, nil, nil, nil, nil, nil, 491, nil, - nil, nil, nil, nil, nil, nil, 491, nil, nil, nil, - nil, 491, 491, 491, 491, 491, 491, nil, nil, nil, - 491, 491, nil, nil, nil, 506, 506, 506, 491, 506, - nil, 491, nil, 506, 506, nil, 491, 491, 506, nil, - 506, 506, 506, 506, 506, 506, 506, nil, nil, nil, - nil, nil, 506, 506, 506, 506, 506, 506, 506, nil, - nil, 506, nil, nil, nil, nil, nil, nil, 506, nil, - nil, 506, 506, nil, 506, 506, 506, 506, 506, nil, - 506, 506, 506, nil, 506, 506, nil, 506, 506, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 506, nil, nil, 506, nil, 506, 506, nil, nil, 506, - nil, nil, nil, 506, nil, 506, nil, nil, nil, nil, - nil, nil, nil, 506, nil, nil, nil, nil, 506, 506, - 506, 506, 506, 506, nil, nil, nil, 506, 506, nil, - nil, nil, nil, nil, nil, 506, nil, nil, 506, nil, - nil, nil, nil, 506, 506, 512, 512, 512, 512, 512, - nil, nil, nil, 512, 512, nil, nil, nil, 512, nil, - 512, 512, 512, 512, 512, 512, 512, nil, nil, nil, - nil, nil, 512, 512, 512, 512, 512, 512, 512, nil, - nil, 512, nil, nil, nil, nil, nil, 512, 512, nil, - 512, 512, 512, nil, 512, 512, 512, 512, 512, nil, - 512, 512, 512, nil, 512, 512, nil, 512, 512, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 512, nil, nil, 512, nil, nil, 512, nil, nil, 512, - nil, 512, nil, nil, nil, 512, nil, nil, nil, nil, - nil, nil, nil, 512, nil, nil, nil, nil, 512, 512, - 512, 512, 512, 512, nil, nil, nil, 512, 512, nil, - nil, nil, nil, nil, 512, 512, nil, nil, 512, nil, - nil, nil, nil, 512, 512, 518, 518, 518, nil, 518, - nil, nil, nil, 518, 518, nil, nil, nil, 518, nil, - 518, 518, 518, 518, 518, 518, 518, nil, nil, nil, - nil, nil, 518, 518, 518, 518, 518, 518, 518, nil, - nil, 518, nil, nil, nil, nil, nil, nil, 518, nil, - nil, 518, 518, nil, 518, 518, 518, 518, 518, nil, - 518, 518, 518, nil, 518, 518, 559, nil, 559, 559, - 559, nil, 559, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 518, nil, nil, 518, nil, nil, 518, nil, nil, 518, - nil, nil, nil, nil, nil, 559, nil, nil, nil, nil, - nil, nil, nil, 559, 559, 559, 559, nil, 518, 518, - 518, 518, 518, 518, nil, nil, nil, 518, 518, nil, - nil, nil, 520, 520, 520, 518, 520, nil, 518, nil, - 520, 520, nil, 518, 518, 520, nil, 520, 520, 520, - 520, 520, 520, 520, nil, nil, nil, nil, nil, 520, - 520, 520, 520, 520, 520, 520, nil, nil, 520, nil, - nil, nil, nil, nil, nil, 520, nil, nil, 520, 520, - nil, 520, 520, 520, 520, 520, 520, 520, 520, 520, - nil, 520, 520, nil, 520, 520, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 520, nil, nil, - 520, nil, nil, 520, nil, nil, 520, nil, 520, nil, - nil, nil, 520, nil, nil, nil, nil, nil, nil, nil, - 520, nil, nil, nil, nil, 520, 520, 520, 520, 520, - 520, nil, nil, nil, 520, 520, nil, nil, nil, 523, - 523, 523, 520, 523, nil, 520, nil, 523, 523, nil, - 520, 520, 523, nil, 523, 523, 523, 523, 523, 523, - 523, nil, nil, nil, nil, nil, 523, 523, 523, 523, - 523, 523, 523, nil, nil, 523, nil, nil, nil, nil, - nil, nil, 523, nil, nil, 523, 523, nil, 523, 523, - 523, 523, 523, 523, 523, 523, 523, nil, 523, 523, - nil, 523, 523, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 523, nil, nil, 523, nil, nil, - 523, nil, nil, 523, nil, 523, nil, nil, nil, 523, - nil, nil, nil, nil, nil, nil, nil, 523, nil, nil, - nil, nil, 523, 523, 523, 523, 523, 523, nil, nil, - nil, 523, 523, nil, nil, nil, 531, 531, 531, 523, - 531, nil, 523, nil, 531, 531, nil, 523, 523, 531, - nil, 531, 531, 531, 531, 531, 531, 531, nil, nil, - nil, nil, nil, 531, 531, 531, 531, 531, 531, 531, - nil, nil, 531, nil, nil, nil, nil, nil, nil, 531, - nil, nil, 531, 531, nil, 531, 531, 531, 531, 531, - nil, 531, 531, 531, nil, 531, 531, nil, 531, 531, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 531, nil, nil, 531, nil, nil, 531, nil, nil, - 531, nil, nil, nil, nil, nil, 531, nil, nil, nil, - nil, nil, nil, nil, 531, nil, nil, nil, nil, 531, - 531, 531, 531, 531, 531, nil, nil, nil, 531, 531, - nil, nil, nil, 532, 532, 532, 531, 532, nil, 531, - nil, 532, 532, nil, 531, 531, 532, nil, 532, 532, - 532, 532, 532, 532, 532, nil, nil, nil, nil, nil, - 532, 532, 532, 532, 532, 532, 532, nil, nil, 532, - nil, nil, nil, nil, nil, nil, 532, nil, nil, 532, - 532, nil, 532, 532, 532, 532, 532, nil, 532, 532, - 532, nil, 532, 532, nil, 532, 532, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 532, nil, - nil, 532, nil, nil, 532, nil, nil, 532, nil, nil, - nil, nil, nil, 532, nil, nil, nil, nil, nil, nil, - nil, 532, nil, nil, nil, nil, 532, 532, 532, 532, - 532, 532, nil, nil, nil, 532, 532, nil, nil, nil, - 533, 533, 533, 532, 533, nil, 532, nil, 533, 533, - nil, 532, 532, 533, nil, 533, 533, 533, 533, 533, - 533, 533, nil, nil, nil, nil, nil, 533, 533, 533, - 533, 533, 533, 533, nil, nil, 533, nil, nil, nil, - nil, nil, nil, 533, nil, nil, 533, 533, nil, 533, - 533, 533, 533, 533, nil, 533, 533, 533, nil, 533, - 533, nil, 533, 533, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 533, nil, nil, 533, nil, - nil, 533, nil, nil, 533, nil, nil, nil, nil, nil, - 533, nil, nil, nil, nil, nil, nil, nil, 533, nil, - nil, nil, nil, 533, 533, 533, 533, 533, 533, nil, - nil, nil, 533, 533, nil, nil, nil, 537, 537, 537, - 533, 537, nil, 533, nil, 537, 537, nil, 533, 533, - 537, nil, 537, 537, 537, 537, 537, 537, 537, nil, - nil, nil, nil, nil, 537, 537, 537, 537, 537, 537, - 537, nil, nil, 537, nil, nil, nil, nil, nil, nil, - 537, nil, nil, 537, 537, nil, 537, 537, 537, 537, - 537, nil, 537, 537, 537, nil, 537, 537, nil, 537, - 537, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 537, nil, nil, 537, nil, nil, 537, nil, - nil, 537, nil, nil, nil, nil, nil, 537, nil, nil, - nil, nil, nil, nil, nil, 537, nil, nil, nil, nil, - 537, 537, 537, 537, 537, 537, nil, nil, nil, 537, - 537, nil, nil, nil, 543, 543, 543, 537, 543, nil, - 537, nil, 543, 543, nil, 537, 537, 543, nil, 543, - 543, 543, 543, 543, 543, 543, nil, nil, nil, nil, - nil, 543, 543, 543, 543, 543, 543, 543, nil, nil, - 543, nil, nil, nil, nil, nil, nil, 543, nil, nil, - 543, 543, nil, 543, 543, 543, 543, 543, 543, 543, - 543, 543, nil, 543, 543, nil, 543, 543, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 543, - nil, nil, 543, nil, nil, 543, nil, nil, 543, nil, - 543, nil, nil, nil, 543, nil, nil, nil, nil, nil, - nil, nil, 543, nil, nil, nil, nil, 543, 543, 543, - 543, 543, 543, nil, nil, nil, 543, 543, nil, nil, - nil, 546, 546, 546, 543, 546, nil, 543, nil, 546, - 546, nil, 543, 543, 546, nil, 546, 546, 546, 546, - 546, 546, 546, nil, nil, nil, nil, nil, 546, 546, - 546, 546, 546, 546, 546, nil, nil, 546, nil, nil, - nil, nil, nil, nil, 546, nil, nil, 546, 546, nil, - 546, 546, 546, 546, 546, 546, 546, 546, 546, nil, - 546, 546, nil, 546, 546, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 546, nil, nil, 546, - nil, nil, 546, nil, nil, 546, nil, nil, nil, nil, - nil, 546, nil, nil, nil, nil, nil, nil, nil, 546, - nil, nil, nil, nil, 546, 546, 546, 546, 546, 546, - nil, nil, nil, 546, 546, nil, nil, nil, nil, nil, - nil, 546, nil, nil, 546, nil, nil, nil, nil, 546, - 546, 551, 551, 551, 551, 551, nil, nil, nil, 551, - 551, nil, nil, nil, 551, nil, 551, 551, 551, 551, - 551, 551, 551, nil, nil, nil, nil, nil, 551, 551, - 551, 551, 551, 551, 551, nil, nil, 551, nil, nil, - nil, nil, nil, 551, 551, nil, 551, 551, 551, nil, - 551, 551, 551, 551, 551, nil, 551, 551, 551, nil, - 551, 551, nil, 551, 551, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 551, nil, nil, 551, - nil, nil, 551, nil, nil, 551, nil, 551, nil, nil, - nil, 551, nil, nil, nil, nil, nil, nil, nil, 551, - nil, nil, nil, nil, 551, 551, 551, 551, 551, 551, - nil, nil, nil, 551, 551, nil, nil, nil, nil, nil, - nil, 551, nil, nil, 551, nil, nil, nil, nil, 551, - 551, 552, 552, 552, 552, 552, nil, nil, nil, 552, - 552, nil, nil, nil, 552, nil, 552, 552, 552, 552, - 552, 552, 552, nil, nil, nil, nil, nil, 552, 552, - 552, 552, 552, 552, 552, nil, nil, 552, nil, nil, - nil, nil, nil, 552, 552, nil, 552, 552, 552, nil, - 552, 552, 552, 552, 552, nil, 552, 552, 552, nil, - 552, 552, nil, 552, 552, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 552, nil, nil, 552, - nil, nil, 552, nil, nil, 552, nil, 552, nil, nil, - nil, 552, nil, nil, nil, nil, nil, nil, nil, 552, - nil, nil, nil, nil, 552, 552, 552, 552, 552, 552, - nil, nil, nil, 552, 552, nil, nil, nil, 558, 558, - 558, 552, 558, nil, 552, nil, 558, 558, nil, 552, - 552, 558, nil, 558, 558, 558, 558, 558, 558, 558, - nil, nil, nil, nil, nil, 558, 558, 558, 558, 558, - 558, 558, nil, nil, 558, nil, nil, nil, nil, nil, - nil, 558, nil, nil, 558, 558, nil, 558, 558, 558, - 558, 558, nil, 558, 558, 558, nil, 558, 558, 856, - nil, 856, 856, 856, 856, 856, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 856, nil, nil, nil, nil, - nil, nil, nil, 558, nil, nil, 558, nil, nil, 558, - nil, nil, 558, nil, nil, nil, nil, nil, 856, nil, - nil, nil, nil, nil, nil, nil, 856, 856, 856, 856, - nil, 558, 558, 558, 558, 558, 558, nil, nil, nil, - 558, 558, nil, nil, nil, nil, nil, nil, 558, nil, - nil, 558, nil, nil, nil, nil, 558, 558, 572, 572, - 572, 572, 572, nil, nil, 856, 572, 572, nil, nil, - nil, 572, nil, 572, 572, 572, 572, 572, 572, 572, - nil, nil, nil, nil, nil, 572, 572, 572, 572, 572, - 572, 572, nil, nil, 572, nil, nil, nil, nil, nil, - 572, 572, nil, 572, 572, 572, nil, 572, 572, 572, - 572, 572, nil, 572, 572, 572, nil, 572, 572, nil, - 572, 572, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 572, nil, nil, 572, nil, nil, 572, - nil, nil, 572, nil, 572, nil, nil, nil, 572, nil, - nil, nil, nil, nil, nil, nil, 572, nil, nil, nil, - nil, 572, 572, 572, 572, 572, 572, nil, nil, nil, - 572, 572, nil, nil, nil, nil, nil, nil, 572, nil, - nil, 572, nil, nil, nil, nil, 572, 572, 576, 576, - 576, 576, 576, nil, nil, nil, 576, 576, nil, nil, - nil, 576, nil, 576, 576, 576, 576, 576, 576, 576, - nil, nil, nil, nil, nil, 576, 576, 576, 576, 576, - 576, 576, nil, nil, 576, nil, nil, nil, nil, nil, - 576, 576, nil, 576, 576, 576, nil, 576, 576, 576, - 576, 576, nil, 576, 576, 576, nil, 576, 576, nil, - 576, 576, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 576, nil, nil, 576, nil, nil, 576, - nil, nil, 576, nil, 576, nil, nil, nil, 576, nil, - nil, nil, nil, nil, nil, nil, 576, nil, nil, nil, - nil, 576, 576, 576, 576, 576, 576, nil, nil, nil, - 576, 576, nil, nil, nil, nil, nil, nil, 576, nil, - nil, 576, nil, nil, nil, nil, 576, 576, 581, 581, - 581, 581, 581, nil, nil, nil, 581, 581, nil, nil, - nil, 581, nil, 581, 581, 581, 581, 581, 581, 581, - nil, nil, nil, nil, nil, 581, 581, 581, 581, 581, - 581, 581, nil, nil, 581, nil, nil, nil, nil, nil, - 581, 581, nil, 581, 581, 581, nil, 581, 581, 581, - 581, 581, nil, 581, 581, 581, nil, 581, 581, nil, - 581, 581, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 581, nil, nil, 581, nil, nil, 581, - nil, nil, 581, nil, 581, nil, nil, nil, 581, nil, - nil, nil, nil, nil, nil, nil, 581, nil, nil, nil, - nil, 581, 581, 581, 581, 581, 581, nil, nil, nil, - 581, 581, nil, nil, nil, 583, 583, 583, 581, 583, - nil, 581, nil, 583, 583, nil, 581, 581, 583, nil, - 583, 583, 583, 583, 583, 583, 583, nil, nil, nil, - nil, nil, 583, 583, 583, 583, 583, 583, 583, nil, - nil, 583, nil, nil, nil, nil, nil, nil, 583, nil, - nil, 583, 583, nil, 583, 583, 583, 583, 583, 583, - 583, 583, 583, nil, 583, 583, nil, 583, 583, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 583, nil, nil, 583, nil, nil, 583, nil, nil, 583, - nil, 583, nil, nil, nil, 583, nil, nil, nil, nil, - nil, nil, nil, 583, nil, nil, nil, nil, 583, 583, - 583, 583, 583, 583, nil, nil, nil, 583, 583, nil, - nil, nil, 586, 586, 586, 583, 586, nil, 583, nil, - 586, 586, nil, 583, 583, 586, nil, 586, 586, 586, - 586, 586, 586, 586, nil, nil, nil, nil, nil, 586, - 586, 586, 586, 586, 586, 586, nil, nil, 586, nil, - nil, nil, nil, nil, nil, 586, nil, nil, 586, 586, - nil, 586, 586, 586, 586, 586, 586, 586, 586, 586, - nil, 586, 586, nil, 586, 586, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 586, nil, nil, - 586, nil, nil, 586, nil, nil, 586, nil, 586, nil, - nil, nil, 586, nil, nil, nil, nil, nil, nil, nil, - 586, nil, nil, nil, nil, 586, 586, 586, 586, 586, - 586, nil, nil, nil, 586, 586, nil, nil, nil, 592, - 592, 592, 586, 592, nil, 586, nil, 592, 592, nil, - 586, 586, 592, nil, 592, 592, 592, 592, 592, 592, - 592, nil, nil, nil, nil, nil, 592, 592, 592, 592, - 592, 592, 592, nil, nil, 592, nil, nil, nil, nil, - nil, nil, 592, nil, nil, 592, 592, nil, 592, 592, - 592, 592, 592, 592, 592, 592, 592, nil, 592, 592, - nil, 592, 592, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 592, nil, nil, 592, nil, nil, - 592, nil, nil, 592, nil, 592, nil, nil, nil, 592, - nil, nil, nil, nil, nil, nil, nil, 592, nil, nil, - nil, nil, 592, 592, 592, 592, 592, 592, nil, nil, - nil, 592, 592, nil, nil, nil, 596, 596, 596, 592, - 596, nil, 592, nil, 596, 596, nil, 592, 592, 596, - nil, 596, 596, 596, 596, 596, 596, 596, nil, nil, - nil, nil, nil, 596, 596, 596, 596, 596, 596, 596, - nil, nil, 596, nil, nil, nil, nil, nil, nil, 596, - nil, nil, 596, 596, nil, 596, 596, 596, 596, 596, - nil, 596, 596, 596, nil, 596, 596, nil, 596, 596, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 596, nil, nil, 596, nil, nil, 596, nil, nil, - 596, nil, nil, nil, nil, nil, 596, nil, nil, nil, - nil, nil, nil, nil, 596, nil, nil, nil, nil, 596, - 596, 596, 596, 596, 596, nil, nil, nil, 596, 596, - nil, nil, nil, 598, 598, 598, 596, 598, nil, 596, - nil, 598, 598, nil, 596, 596, 598, nil, 598, 598, - 598, 598, 598, 598, 598, nil, nil, nil, nil, nil, - 598, 598, 598, 598, 598, 598, 598, nil, nil, 598, - nil, nil, nil, nil, nil, nil, 598, nil, nil, 598, - 598, nil, 598, 598, 598, 598, 598, nil, 598, 598, - 598, nil, 598, 598, nil, 598, 598, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 598, nil, - nil, 598, nil, nil, 598, nil, nil, 598, nil, nil, - nil, nil, nil, 598, nil, nil, nil, nil, nil, nil, - nil, 598, nil, nil, nil, nil, 598, 598, 598, 598, - 598, 598, nil, nil, nil, 598, 598, nil, nil, nil, - 625, 625, 625, 598, 625, nil, 598, nil, 625, 625, - nil, 598, 598, 625, nil, 625, 625, 625, 625, 625, - 625, 625, nil, nil, nil, nil, nil, 625, 625, 625, - 625, 625, 625, 625, nil, nil, 625, nil, nil, nil, - nil, nil, nil, 625, nil, nil, 625, 625, nil, 625, - 625, 625, 625, 625, nil, 625, 625, 625, nil, 625, - 625, nil, 625, 625, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 625, nil, nil, 625, nil, - nil, 625, nil, nil, 625, nil, nil, nil, nil, nil, - 625, nil, nil, nil, nil, nil, nil, nil, 625, nil, - nil, nil, nil, 625, 625, 625, 625, 625, 625, nil, - nil, nil, 625, 625, nil, nil, nil, 627, 627, 627, - 625, 627, nil, 625, nil, 627, 627, nil, 625, 625, - 627, nil, 627, 627, 627, 627, 627, 627, 627, nil, - nil, nil, nil, nil, 627, 627, 627, 627, 627, 627, - 627, nil, nil, 627, nil, nil, nil, nil, nil, nil, - 627, nil, nil, 627, 627, nil, 627, 627, 627, 627, - 627, nil, 627, 627, 627, nil, 627, 627, nil, 627, - 627, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 627, nil, nil, 627, nil, nil, 627, nil, - nil, 627, nil, 627, nil, nil, nil, 627, nil, nil, - nil, nil, nil, nil, nil, 627, nil, nil, nil, nil, - 627, 627, 627, 627, 627, 627, nil, nil, nil, 627, - 627, nil, nil, nil, 630, 630, 630, 627, 630, nil, - 627, nil, 630, 630, nil, 627, 627, 630, nil, 630, - 630, 630, 630, 630, 630, 630, nil, nil, nil, nil, - nil, 630, 630, 630, 630, 630, 630, 630, nil, nil, - 630, nil, nil, nil, nil, nil, nil, 630, nil, nil, - 630, 630, nil, 630, 630, 630, 630, 630, nil, 630, - 630, 630, nil, 630, 630, nil, 630, 630, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 630, - nil, nil, 630, nil, nil, 630, nil, nil, 630, nil, - nil, nil, nil, nil, 630, nil, nil, nil, nil, nil, - nil, nil, 630, nil, nil, nil, nil, 630, 630, 630, - 630, 630, 630, nil, nil, nil, 630, 630, nil, nil, - nil, 631, 631, 631, 630, 631, nil, 630, nil, 631, - 631, nil, 630, 630, 631, nil, 631, 631, 631, 631, - 631, 631, 631, nil, nil, nil, nil, nil, 631, 631, - 631, 631, 631, 631, 631, nil, nil, 631, nil, nil, - nil, nil, nil, nil, 631, nil, nil, 631, 631, nil, - 631, 631, 631, 631, 631, nil, 631, 631, 631, nil, - 631, 631, nil, 631, 631, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 631, nil, nil, 631, - nil, nil, 631, nil, nil, 631, nil, nil, nil, nil, - nil, 631, nil, nil, nil, nil, nil, nil, nil, 631, - nil, nil, nil, nil, 631, 631, 631, 631, 631, 631, - nil, nil, nil, 631, 631, nil, nil, nil, 636, 636, - 636, 631, 636, nil, 631, nil, 636, 636, nil, 631, - 631, 636, nil, 636, 636, 636, 636, 636, 636, 636, - nil, nil, nil, nil, nil, 636, 636, 636, 636, 636, - 636, 636, nil, nil, 636, nil, nil, nil, nil, nil, - nil, 636, nil, nil, 636, 636, nil, 636, 636, 636, - 636, 636, nil, 636, 636, 636, nil, 636, 636, nil, - 636, 636, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 636, nil, nil, 636, nil, nil, 636, - nil, nil, 636, nil, nil, nil, nil, nil, 636, nil, - nil, nil, nil, nil, nil, nil, 636, nil, nil, nil, - nil, 636, 636, 636, 636, 636, 636, nil, nil, nil, - 636, 636, nil, nil, nil, 639, 639, 639, 636, 639, - nil, 636, nil, 639, 639, nil, 636, 636, 639, nil, - 639, 639, 639, 639, 639, 639, 639, nil, nil, nil, - nil, nil, 639, 639, 639, 639, 639, 639, 639, nil, - nil, 639, nil, nil, nil, nil, nil, nil, 639, nil, - nil, 639, 639, nil, 639, 639, 639, 639, 639, nil, - 639, 639, 639, nil, 639, 639, nil, 639, 639, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 639, nil, nil, 639, nil, nil, 639, nil, nil, 639, - nil, nil, nil, nil, nil, 639, nil, nil, nil, nil, - nil, nil, nil, 639, nil, nil, nil, nil, 639, 639, - 639, 639, 639, 639, nil, nil, nil, 639, 639, nil, - nil, nil, 650, 650, 650, 639, 650, nil, 639, nil, - 650, 650, nil, 639, 639, 650, nil, 650, 650, 650, - 650, 650, 650, 650, nil, nil, nil, nil, nil, 650, - 650, 650, 650, 650, 650, 650, nil, nil, 650, nil, - nil, nil, nil, nil, nil, 650, nil, nil, 650, 650, - nil, 650, 650, 650, 650, 650, nil, 650, 650, 650, - nil, 650, 650, nil, 650, 650, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 650, nil, nil, - 650, nil, nil, 650, nil, nil, 650, nil, nil, nil, - nil, nil, 650, nil, nil, nil, nil, nil, nil, nil, - 650, nil, nil, nil, nil, 650, 650, 650, 650, 650, - 650, nil, nil, nil, 650, 650, nil, nil, nil, nil, - nil, nil, 650, nil, nil, 650, nil, nil, nil, nil, - 650, 650, 654, 654, 654, 654, 654, nil, nil, nil, - 654, 654, nil, nil, nil, 654, nil, 654, 654, 654, - 654, 654, 654, 654, nil, nil, nil, nil, nil, 654, - 654, 654, 654, 654, 654, 654, nil, nil, 654, nil, - nil, nil, nil, nil, 654, 654, nil, 654, 654, 654, - nil, 654, 654, 654, 654, 654, nil, 654, 654, 654, - nil, 654, 654, nil, 654, 654, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 654, nil, nil, - 654, nil, nil, 654, nil, nil, 654, nil, 654, nil, - nil, nil, 654, nil, nil, nil, nil, nil, nil, nil, - 654, nil, nil, nil, nil, 654, 654, 654, 654, 654, - 654, nil, nil, nil, 654, 654, nil, nil, nil, 658, - 658, 658, 654, 658, nil, 654, nil, 658, 658, nil, - 654, 654, 658, nil, 658, 658, 658, 658, 658, 658, - 658, nil, nil, nil, nil, nil, 658, 658, 658, 658, - 658, 658, 658, nil, nil, 658, nil, nil, nil, nil, - nil, nil, 658, nil, nil, 658, 658, nil, 658, 658, - 658, 658, 658, nil, 658, 658, 658, nil, 658, 658, - nil, 658, 658, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 658, nil, nil, 658, nil, nil, - 658, nil, nil, 658, nil, nil, nil, nil, nil, 658, - nil, nil, nil, nil, nil, nil, nil, 658, nil, nil, - nil, nil, 658, 658, 658, 658, 658, 658, nil, nil, - nil, 658, 658, nil, nil, nil, nil, nil, nil, 658, - nil, nil, 658, nil, nil, nil, nil, 658, 658, 667, - 667, 667, 667, 667, nil, nil, nil, 667, 667, nil, - nil, nil, 667, nil, 667, 667, 667, 667, 667, 667, - 667, nil, nil, nil, nil, nil, 667, 667, 667, 667, - 667, 667, 667, nil, nil, 667, nil, nil, nil, nil, - nil, 667, 667, nil, 667, 667, 667, nil, 667, 667, - 667, 667, 667, nil, 667, 667, 667, nil, 667, 667, - nil, 667, 667, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 667, nil, nil, 667, nil, nil, - 667, nil, nil, 667, nil, 667, nil, nil, nil, 667, - nil, nil, nil, nil, nil, nil, nil, 667, nil, nil, - nil, nil, 667, 667, 667, 667, 667, 667, nil, nil, - nil, 667, 667, nil, nil, nil, 670, 670, 670, 667, - 670, nil, 667, nil, 670, 670, nil, 667, 667, 670, - nil, 670, 670, 670, 670, 670, 670, 670, nil, nil, - nil, nil, nil, 670, 670, 670, 670, 670, 670, 670, - nil, nil, 670, nil, nil, nil, nil, nil, nil, 670, - nil, nil, 670, 670, nil, 670, 670, 670, 670, 670, - 670, 670, 670, 670, nil, 670, 670, nil, 670, 670, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 670, nil, nil, 670, nil, nil, 670, nil, nil, - 670, nil, 670, nil, 670, nil, 670, nil, nil, nil, - nil, nil, nil, nil, 670, nil, nil, nil, nil, 670, - 670, 670, 670, 670, 670, nil, nil, nil, 670, 670, - nil, nil, nil, 671, 671, 671, 670, 671, nil, 670, - nil, 671, 671, nil, 670, 670, 671, nil, 671, 671, - 671, 671, 671, 671, 671, nil, nil, nil, nil, nil, - 671, 671, 671, 671, 671, 671, 671, nil, nil, 671, - nil, nil, nil, nil, nil, nil, 671, nil, nil, 671, - 671, nil, 671, 671, 671, 671, 671, 671, 671, 671, - 671, nil, 671, 671, nil, 671, 671, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 671, nil, - nil, 671, nil, nil, 671, nil, nil, 671, nil, nil, - nil, 671, nil, 671, nil, nil, nil, nil, nil, nil, - nil, 671, nil, nil, nil, nil, 671, 671, 671, 671, - 671, 671, nil, nil, nil, 671, 671, nil, nil, nil, - nil, nil, nil, 671, nil, nil, 671, nil, nil, nil, - nil, 671, 671, 677, 677, 677, 677, 677, nil, nil, - nil, 677, 677, nil, nil, nil, 677, nil, 677, 677, - 677, 677, 677, 677, 677, nil, nil, nil, nil, nil, - 677, 677, 677, 677, 677, 677, 677, nil, nil, 677, - nil, nil, nil, nil, nil, 677, 677, nil, 677, 677, - 677, nil, 677, 677, 677, 677, 677, nil, 677, 677, - 677, nil, 677, 677, nil, 677, 677, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 677, nil, - nil, 677, nil, nil, 677, nil, nil, 677, nil, 677, - nil, nil, nil, 677, nil, nil, nil, nil, nil, nil, - nil, 677, nil, nil, nil, nil, 677, 677, 677, 677, - 677, 677, nil, nil, nil, 677, 677, nil, nil, nil, - nil, nil, nil, 677, nil, nil, 677, nil, nil, nil, - nil, 677, 677, 678, 678, 678, 678, 678, nil, nil, - nil, 678, 678, nil, nil, nil, 678, nil, 678, 678, - 678, 678, 678, 678, 678, nil, nil, nil, nil, nil, - 678, 678, 678, 678, 678, 678, 678, nil, nil, 678, - nil, nil, nil, nil, nil, 678, 678, nil, 678, 678, - 678, nil, 678, 678, 678, 678, 678, nil, 678, 678, - 678, nil, 678, 678, nil, 678, 678, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 678, nil, - nil, 678, nil, nil, 678, nil, nil, 678, nil, 678, - nil, nil, nil, 678, nil, nil, nil, nil, nil, nil, - nil, 678, nil, nil, nil, nil, 678, 678, 678, 678, - 678, 678, nil, nil, nil, 678, 678, nil, nil, nil, - 682, 682, 682, 678, 682, nil, 678, nil, 682, 682, - nil, 678, 678, 682, nil, 682, 682, 682, 682, 682, - 682, 682, nil, nil, nil, nil, nil, 682, 682, 682, - 682, 682, 682, 682, nil, nil, 682, nil, nil, nil, - nil, nil, nil, 682, nil, nil, 682, 682, nil, 682, - 682, 682, 682, 682, nil, 682, 682, 682, nil, 682, - 682, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 682, nil, nil, 682, nil, - nil, 682, nil, nil, 682, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 682, 682, 682, 682, 682, 682, nil, - nil, nil, 682, 682, nil, nil, nil, 694, 694, 694, - 682, 694, nil, 682, nil, 694, 694, nil, 682, 682, - 694, nil, 694, 694, 694, 694, 694, 694, 694, nil, - nil, nil, nil, nil, 694, 694, 694, 694, 694, 694, - 694, nil, nil, 694, nil, nil, nil, nil, nil, nil, - 694, nil, nil, 694, 694, nil, 694, 694, 694, 694, - 694, nil, 694, 694, 694, nil, 694, 694, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 694, nil, nil, 694, nil, nil, 694, nil, - nil, 694, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 694, 694, 694, 694, 694, 694, nil, nil, nil, 694, - 694, nil, nil, nil, 700, 700, 700, 694, 700, nil, - 694, nil, 700, 700, nil, 694, 694, 700, nil, 700, - 700, 700, 700, 700, 700, 700, nil, nil, nil, nil, - nil, 700, 700, 700, 700, 700, 700, 700, nil, nil, - 700, nil, nil, nil, nil, nil, nil, 700, nil, nil, - 700, 700, nil, 700, 700, 700, 700, 700, nil, 700, - 700, 700, nil, 700, 700, nil, 700, 700, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 700, - nil, nil, 700, nil, nil, 700, nil, nil, 700, nil, - 700, nil, nil, nil, 700, nil, nil, nil, nil, nil, - nil, nil, 700, nil, nil, nil, nil, 700, 700, 700, - 700, 700, 700, nil, nil, nil, 700, 700, nil, nil, - nil, 731, 731, 731, 700, 731, nil, 700, nil, 731, - 731, nil, 700, 700, 731, nil, 731, 731, 731, 731, - 731, 731, 731, nil, nil, nil, nil, nil, 731, 731, - 731, 731, 731, 731, 731, nil, nil, 731, nil, nil, - nil, nil, nil, nil, 731, nil, nil, 731, 731, nil, - 731, 731, 731, 731, 731, nil, 731, 731, 731, nil, - 731, 731, nil, 731, 731, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 731, nil, nil, 731, - nil, nil, 731, nil, nil, 731, nil, 731, nil, nil, - nil, 731, nil, nil, nil, nil, nil, nil, nil, 731, - nil, nil, nil, nil, 731, 731, 731, 731, 731, 731, - nil, nil, nil, 731, 731, nil, nil, nil, 738, 738, - 738, 731, 738, nil, 731, nil, 738, 738, nil, 731, - 731, 738, nil, 738, 738, 738, 738, 738, 738, 738, - nil, nil, nil, nil, nil, 738, 738, 738, 738, 738, - 738, 738, nil, nil, 738, nil, nil, nil, nil, nil, - nil, 738, nil, nil, 738, 738, nil, 738, 738, 738, - 738, 738, nil, 738, 738, 738, nil, 738, 738, nil, - 738, 738, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 738, nil, nil, 738, nil, nil, 738, - nil, nil, 738, nil, nil, nil, nil, nil, 738, nil, - nil, nil, nil, nil, nil, nil, 738, nil, nil, nil, - nil, 738, 738, 738, 738, 738, 738, nil, nil, nil, - 738, 738, nil, nil, nil, nil, nil, nil, 738, nil, - nil, 738, nil, nil, nil, nil, 738, 738, 743, 743, - 743, 743, 743, nil, nil, nil, 743, 743, nil, nil, - nil, 743, nil, 743, 743, 743, 743, 743, 743, 743, - nil, nil, nil, nil, nil, 743, 743, 743, 743, 743, - 743, 743, nil, nil, 743, nil, nil, nil, nil, nil, - 743, 743, nil, 743, 743, 743, nil, 743, 743, 743, - 743, 743, nil, 743, 743, 743, nil, 743, 743, nil, - 743, 743, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 743, nil, nil, 743, nil, nil, 743, - nil, nil, 743, nil, 743, nil, nil, nil, 743, nil, - nil, nil, nil, nil, nil, nil, 743, nil, nil, nil, - nil, 743, 743, 743, 743, 743, 743, nil, nil, nil, - 743, 743, nil, nil, nil, nil, nil, nil, 743, nil, - nil, 743, nil, nil, nil, nil, 743, 743, 747, 747, - 747, 747, 747, nil, nil, nil, 747, 747, nil, nil, - nil, 747, nil, 747, 747, 747, 747, 747, 747, 747, - nil, nil, nil, nil, nil, 747, 747, 747, 747, 747, - 747, 747, nil, nil, 747, nil, nil, nil, nil, nil, - 747, 747, nil, 747, 747, 747, nil, 747, 747, 747, - 747, 747, nil, 747, 747, 747, nil, 747, 747, nil, - 747, 747, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 747, nil, nil, 747, nil, nil, 747, - nil, nil, 747, nil, 747, nil, nil, nil, 747, nil, - nil, nil, nil, nil, nil, nil, 747, nil, nil, nil, - nil, 747, 747, 747, 747, 747, 747, nil, nil, nil, - 747, 747, nil, nil, nil, nil, nil, nil, 747, nil, - nil, 747, nil, nil, nil, nil, 747, 747, 748, 748, - 748, 748, 748, nil, nil, nil, 748, 748, nil, nil, - nil, 748, nil, 748, 748, 748, 748, 748, 748, 748, - nil, nil, nil, nil, nil, 748, 748, 748, 748, 748, - 748, 748, nil, nil, 748, nil, nil, nil, nil, nil, - 748, 748, nil, 748, 748, 748, nil, 748, 748, 748, - 748, 748, nil, 748, 748, 748, nil, 748, 748, nil, - 748, 748, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 748, nil, nil, 748, nil, nil, 748, - nil, nil, 748, nil, 748, nil, nil, nil, 748, nil, - nil, nil, nil, nil, nil, nil, 748, nil, nil, nil, - nil, 748, 748, 748, 748, 748, 748, nil, nil, nil, - 748, 748, nil, nil, nil, 755, 755, 755, 748, 755, - nil, 748, nil, 755, 755, nil, 748, 748, 755, nil, - 755, 755, 755, 755, 755, 755, 755, nil, nil, nil, - nil, nil, 755, 755, 755, 755, 755, 755, 755, nil, - nil, 755, nil, nil, nil, nil, nil, nil, 755, nil, - nil, 755, 755, nil, 755, 755, 755, 755, 755, nil, - 755, 755, 755, nil, 755, 755, nil, 755, 755, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 755, nil, nil, 755, nil, nil, 755, nil, nil, 755, - nil, nil, nil, nil, nil, 755, nil, nil, nil, nil, - nil, nil, nil, 755, nil, nil, nil, nil, 755, 755, - 755, 755, 755, 755, nil, nil, nil, 755, 755, nil, - nil, nil, nil, nil, nil, 755, nil, nil, 755, nil, - nil, nil, nil, 755, 755, 769, 769, 769, 769, 769, - nil, nil, nil, 769, 769, nil, nil, nil, 769, nil, - 769, 769, 769, 769, 769, 769, 769, nil, nil, nil, - nil, nil, 769, 769, 769, 769, 769, 769, 769, nil, - nil, 769, nil, nil, nil, nil, nil, 769, 769, nil, - 769, 769, 769, nil, 769, 769, 769, 769, 769, nil, - 769, 769, 769, nil, 769, 769, nil, 769, 769, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 769, nil, nil, 769, nil, nil, 769, nil, nil, 769, - nil, 769, nil, nil, nil, 769, nil, nil, nil, nil, - nil, nil, nil, 769, nil, nil, nil, nil, 769, 769, - 769, 769, 769, 769, nil, nil, nil, 769, 769, nil, - nil, nil, 775, 775, 775, 769, 775, nil, 769, nil, - 775, 775, nil, 769, 769, 775, nil, 775, 775, 775, - 775, 775, 775, 775, nil, nil, nil, nil, nil, 775, - 775, 775, 775, 775, 775, 775, nil, nil, 775, nil, - nil, nil, nil, nil, nil, 775, nil, nil, 775, 775, - nil, 775, 775, 775, 775, 775, nil, 775, 775, 775, - nil, 775, 775, nil, 775, 775, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 775, nil, nil, - 775, nil, nil, 775, nil, nil, 775, nil, nil, nil, - nil, nil, 775, nil, nil, nil, nil, nil, nil, nil, - 775, nil, nil, nil, nil, 775, 775, 775, 775, 775, - 775, nil, nil, nil, 775, 775, nil, nil, nil, 776, - 776, 776, 775, 776, nil, 775, nil, 776, 776, nil, - 775, 775, 776, nil, 776, 776, 776, 776, 776, 776, - 776, nil, nil, nil, nil, nil, 776, 776, 776, 776, - 776, 776, 776, nil, nil, 776, nil, nil, nil, nil, - nil, nil, 776, nil, nil, 776, 776, nil, 776, 776, - 776, 776, 776, nil, 776, 776, 776, nil, 776, 776, - nil, 776, 776, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 776, nil, nil, 776, nil, nil, - 776, nil, nil, 776, nil, nil, nil, nil, nil, 776, - nil, nil, nil, nil, nil, nil, nil, 776, nil, nil, - nil, nil, 776, 776, 776, 776, 776, 776, nil, nil, - nil, 776, 776, nil, nil, nil, 777, 777, 777, 776, - 777, nil, 776, nil, 777, 777, nil, 776, 776, 777, - nil, 777, 777, 777, 777, 777, 777, 777, nil, nil, - nil, nil, nil, 777, 777, 777, 777, 777, 777, 777, - nil, nil, 777, nil, nil, nil, nil, nil, nil, 777, - nil, nil, 777, 777, nil, 777, 777, 777, 777, 777, - nil, 777, 777, 777, nil, 777, 777, nil, 777, 777, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 777, nil, nil, 777, nil, nil, 777, nil, nil, - 777, nil, nil, nil, nil, nil, 777, nil, nil, nil, - nil, nil, nil, nil, 777, nil, nil, nil, nil, 777, - 777, 777, 777, 777, 777, nil, nil, nil, 777, 777, - nil, nil, nil, 788, 788, 788, 777, 788, nil, 777, - nil, 788, 788, nil, 777, 777, 788, nil, 788, 788, - 788, 788, 788, 788, 788, nil, nil, nil, nil, nil, - 788, 788, 788, 788, 788, 788, 788, nil, nil, 788, - nil, nil, nil, nil, nil, nil, 788, nil, nil, 788, - 788, nil, 788, 788, 788, 788, 788, nil, 788, 788, - 788, nil, 788, 788, nil, 788, 788, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 788, nil, - nil, 788, nil, nil, 788, nil, nil, 788, nil, nil, - nil, nil, nil, 788, nil, nil, nil, nil, nil, nil, - nil, 788, nil, nil, nil, nil, 788, 788, 788, 788, - 788, 788, nil, nil, nil, 788, 788, nil, nil, nil, - 789, 789, 789, 788, 789, nil, 788, nil, 789, 789, - nil, 788, 788, 789, nil, 789, 789, 789, 789, 789, - 789, 789, nil, nil, nil, nil, nil, 789, 789, 789, - 789, 789, 789, 789, nil, nil, 789, nil, nil, nil, - nil, nil, nil, 789, nil, nil, 789, 789, nil, 789, - 789, 789, 789, 789, nil, 789, 789, 789, nil, 789, - 789, nil, 789, 789, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 789, nil, nil, 789, nil, - nil, 789, nil, nil, 789, nil, nil, nil, nil, nil, - 789, nil, nil, nil, nil, nil, nil, nil, 789, nil, - nil, nil, nil, 789, 789, 789, 789, 789, 789, nil, - nil, nil, 789, 789, nil, nil, nil, 790, 790, 790, - 789, 790, nil, 789, nil, 790, 790, nil, 789, 789, - 790, nil, 790, 790, 790, 790, 790, 790, 790, nil, - nil, nil, nil, nil, 790, 790, 790, 790, 790, 790, - 790, nil, nil, 790, nil, nil, nil, nil, nil, nil, - 790, nil, nil, 790, 790, nil, 790, 790, 790, 790, - 790, nil, 790, 790, 790, nil, 790, 790, nil, 790, - 790, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 790, nil, nil, 790, nil, nil, 790, nil, - nil, 790, nil, nil, nil, nil, nil, 790, nil, nil, - nil, nil, nil, nil, nil, 790, nil, nil, nil, nil, - 790, 790, 790, 790, 790, 790, nil, nil, nil, 790, - 790, nil, nil, nil, 802, 802, 802, 790, 802, nil, - 790, nil, 802, 802, nil, 790, 790, 802, nil, 802, - 802, 802, 802, 802, 802, 802, nil, nil, nil, nil, - nil, 802, 802, 802, 802, 802, 802, 802, nil, nil, - 802, nil, nil, nil, nil, nil, nil, 802, nil, nil, - 802, 802, nil, 802, 802, 802, 802, 802, nil, 802, - 802, 802, nil, 802, 802, nil, 802, 802, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 802, - nil, nil, 802, nil, nil, 802, nil, nil, 802, nil, - 802, nil, nil, nil, 802, nil, nil, nil, nil, nil, - nil, nil, 802, nil, nil, nil, nil, 802, 802, 802, - 802, 802, 802, nil, nil, nil, 802, 802, nil, nil, - nil, nil, nil, nil, 802, nil, nil, 802, nil, nil, - nil, nil, 802, 802, 813, 813, 813, 813, 813, nil, - nil, nil, 813, 813, nil, nil, nil, 813, nil, 813, - 813, 813, 813, 813, 813, 813, nil, nil, nil, nil, - nil, 813, 813, 813, 813, 813, 813, 813, nil, nil, - 813, nil, nil, nil, nil, nil, 813, 813, nil, 813, - 813, 813, nil, 813, 813, 813, 813, 813, nil, 813, - 813, 813, nil, 813, 813, nil, 813, 813, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 813, - nil, nil, 813, nil, nil, 813, nil, nil, 813, nil, - 813, nil, nil, nil, 813, nil, nil, nil, nil, nil, - nil, nil, 813, nil, nil, nil, nil, 813, 813, 813, - 813, 813, 813, nil, nil, nil, 813, 813, nil, nil, - nil, 832, 832, 832, 813, 832, nil, 813, nil, 832, - 832, nil, 813, 813, 832, nil, 832, 832, 832, 832, - 832, 832, 832, nil, nil, nil, nil, nil, 832, 832, - 832, 832, 832, 832, 832, nil, nil, 832, nil, nil, - nil, nil, nil, nil, 832, nil, nil, 832, 832, nil, - 832, 832, 832, 832, 832, nil, 832, 832, 832, nil, - 832, 832, nil, 832, 832, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 832, nil, nil, 832, - nil, nil, 832, nil, nil, 832, nil, nil, nil, nil, - nil, 832, nil, nil, nil, nil, nil, nil, nil, 832, - nil, nil, nil, nil, 832, 832, 832, 832, 832, 832, - nil, nil, nil, 832, 832, nil, nil, nil, nil, nil, - nil, 832, nil, nil, 832, nil, nil, nil, nil, 832, - 832, 834, 834, 834, 834, 834, nil, nil, nil, 834, - 834, nil, nil, nil, 834, nil, 834, 834, 834, 834, - 834, 834, 834, nil, nil, nil, nil, nil, 834, 834, - 834, 834, 834, 834, 834, nil, nil, 834, nil, nil, - nil, nil, nil, 834, 834, nil, 834, 834, 834, nil, - 834, 834, 834, 834, 834, nil, 834, 834, 834, nil, - 834, 834, nil, 834, 834, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 834, nil, nil, 834, - nil, nil, 834, nil, nil, 834, nil, 834, nil, nil, - nil, 834, nil, nil, nil, nil, nil, nil, nil, 834, - nil, nil, nil, nil, 834, 834, 834, 834, 834, 834, - nil, nil, nil, 834, 834, nil, nil, nil, nil, nil, - nil, 834, nil, nil, 834, nil, nil, nil, nil, 834, - 834, 835, 835, 835, 835, 835, nil, nil, nil, 835, - 835, nil, nil, nil, 835, nil, 835, 835, 835, 835, - 835, 835, 835, nil, nil, nil, nil, nil, 835, 835, - 835, 835, 835, 835, 835, nil, nil, 835, nil, nil, - nil, nil, nil, 835, 835, nil, 835, 835, 835, nil, - 835, 835, 835, 835, 835, nil, 835, 835, 835, nil, - 835, 835, nil, 835, 835, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 835, nil, nil, 835, - nil, nil, 835, nil, nil, 835, nil, 835, nil, nil, - nil, 835, nil, nil, nil, nil, nil, nil, nil, 835, - nil, nil, nil, nil, 835, 835, 835, 835, 835, 835, - nil, nil, nil, 835, 835, nil, nil, nil, 862, 862, - 862, 835, 862, nil, 835, nil, 862, 862, nil, 835, - 835, 862, nil, 862, 862, 862, 862, 862, 862, 862, - nil, nil, nil, nil, nil, 862, 862, 862, 862, 862, - 862, 862, nil, nil, 862, nil, nil, nil, nil, nil, - nil, 862, nil, nil, 862, 862, nil, 862, 862, 862, - 862, 862, nil, 862, 862, 862, nil, 862, 862, nil, - 862, 862, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 862, nil, nil, 862, nil, nil, 862, - nil, nil, 862, nil, nil, nil, nil, nil, 862, nil, - nil, nil, nil, nil, nil, nil, 862, nil, nil, nil, - nil, 862, 862, 862, 862, 862, 862, nil, nil, nil, - 862, 862, nil, nil, nil, 876, 876, 876, 862, 876, - nil, 862, nil, 876, 876, nil, 862, 862, 876, nil, - 876, 876, 876, 876, 876, 876, 876, nil, nil, nil, - nil, nil, 876, 876, 876, 876, 876, 876, 876, nil, - nil, 876, nil, nil, nil, nil, nil, nil, 876, nil, - nil, 876, 876, nil, 876, 876, 876, 876, 876, nil, - 876, 876, 876, nil, 876, 876, nil, 876, 876, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 876, nil, nil, 876, nil, nil, 876, nil, nil, 876, - nil, nil, nil, nil, nil, 876, nil, nil, nil, nil, - nil, nil, nil, 876, nil, nil, nil, nil, 876, 876, - 876, 876, 876, 876, nil, nil, nil, 876, 876, nil, - nil, nil, 877, 877, 877, 876, 877, nil, 876, nil, - 877, 877, nil, 876, 876, 877, nil, 877, 877, 877, - 877, 877, 877, 877, nil, nil, nil, nil, nil, 877, - 877, 877, 877, 877, 877, 877, nil, nil, 877, nil, - nil, nil, nil, nil, nil, 877, nil, nil, 877, 877, - nil, 877, 877, 877, 877, 877, nil, 877, 877, 877, - nil, 877, 877, nil, 877, 877, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 877, nil, nil, - 877, nil, nil, 877, nil, nil, 877, nil, nil, nil, - nil, nil, 877, nil, nil, nil, nil, nil, nil, nil, - 877, nil, nil, nil, nil, 877, 877, 877, 877, 877, - 877, nil, nil, nil, 877, 877, nil, nil, nil, 881, - 881, 881, 877, 881, nil, 877, nil, 881, 881, nil, - 877, 877, 881, nil, 881, 881, 881, 881, 881, 881, - 881, nil, nil, nil, nil, nil, 881, 881, 881, 881, - 881, 881, 881, nil, nil, 881, nil, nil, nil, nil, - nil, nil, 881, nil, nil, 881, 881, nil, 881, 881, - 881, 881, 881, 881, 881, 881, 881, nil, 881, 881, - nil, 881, 881, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 881, nil, nil, 881, nil, nil, - 881, nil, nil, 881, nil, nil, nil, 881, nil, 881, - nil, nil, nil, nil, nil, nil, nil, 881, nil, nil, - nil, nil, 881, 881, 881, 881, 881, 881, nil, nil, - nil, 881, 881, nil, nil, nil, nil, nil, nil, 881, - nil, nil, 881, nil, nil, nil, nil, 881, 881, 886, - 886, 886, 886, 886, nil, nil, nil, 886, 886, nil, - nil, nil, 886, nil, 886, 886, 886, 886, 886, 886, - 886, nil, nil, nil, nil, nil, 886, 886, 886, 886, - 886, 886, 886, nil, nil, 886, nil, nil, nil, nil, - nil, 886, 886, nil, 886, 886, 886, nil, 886, 886, - 886, 886, 886, nil, 886, 886, 886, nil, 886, 886, - nil, 886, 886, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 886, nil, nil, 886, nil, nil, - 886, nil, nil, 886, nil, 886, nil, nil, nil, 886, - nil, nil, nil, nil, nil, nil, nil, 886, nil, nil, - nil, nil, 886, 886, 886, 886, 886, 886, nil, nil, - nil, 886, 886, nil, nil, nil, 890, 890, 890, 886, - 890, nil, 886, nil, 890, 890, nil, 886, 886, 890, - nil, 890, 890, 890, 890, 890, 890, 890, nil, nil, - nil, nil, nil, 890, 890, 890, 890, 890, 890, 890, - nil, nil, 890, nil, nil, nil, nil, nil, nil, 890, - nil, nil, 890, 890, nil, 890, 890, 890, 890, 890, - nil, 890, 890, 890, nil, 890, 890, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 890, nil, nil, 890, nil, nil, 890, nil, nil, - 890, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 890, - 890, 890, 890, 890, 890, nil, nil, nil, 890, 890, - nil, nil, nil, 900, 900, 900, 890, 900, nil, 890, - nil, 900, 900, nil, 890, 890, 900, nil, 900, 900, - 900, 900, 900, 900, 900, nil, nil, nil, nil, nil, - 900, 900, 900, 900, 900, 900, 900, nil, nil, 900, - nil, nil, nil, nil, nil, nil, 900, nil, nil, 900, - 900, nil, 900, 900, 900, 900, 900, nil, 900, 900, - 900, nil, 900, 900, nil, 900, 900, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 900, nil, - nil, 900, nil, nil, 900, nil, nil, 900, nil, 900, - nil, nil, nil, 900, nil, nil, nil, nil, nil, nil, - nil, 900, nil, nil, nil, nil, 900, 900, 900, 900, - 900, 900, nil, nil, nil, 900, 900, nil, nil, nil, - nil, nil, nil, 900, nil, nil, 900, nil, nil, nil, - nil, 900, 900, 901, 901, 901, 901, 901, nil, nil, - nil, 901, 901, nil, nil, nil, 901, nil, 901, 901, - 901, 901, 901, 901, 901, nil, nil, nil, nil, nil, - 901, 901, 901, 901, 901, 901, 901, nil, nil, 901, - nil, nil, nil, nil, nil, 901, 901, nil, 901, 901, - 901, nil, 901, 901, 901, 901, 901, nil, 901, 901, - 901, nil, 901, 901, nil, 901, 901, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 901, nil, - nil, 901, nil, nil, 901, nil, nil, 901, nil, 901, - nil, nil, nil, 901, nil, nil, nil, nil, nil, nil, - nil, 901, nil, nil, nil, nil, 901, 901, 901, 901, - 901, 901, nil, nil, nil, 901, 901, nil, nil, nil, - nil, nil, nil, 901, nil, nil, 901, nil, nil, nil, - nil, 901, 901, 904, 904, 904, 904, 904, nil, nil, - nil, 904, 904, nil, nil, nil, 904, nil, 904, 904, - 904, 904, 904, 904, 904, nil, nil, nil, nil, nil, - 904, 904, 904, 904, 904, 904, 904, nil, nil, 904, - nil, nil, nil, nil, nil, 904, 904, nil, 904, 904, - 904, nil, 904, 904, 904, 904, 904, nil, 904, 904, - 904, nil, 904, 904, nil, 904, 904, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 904, nil, - nil, 904, nil, nil, 904, nil, nil, 904, nil, 904, - nil, nil, nil, 904, nil, nil, nil, nil, nil, nil, - nil, 904, nil, nil, nil, nil, 904, 904, 904, 904, - 904, 904, nil, nil, nil, 904, 904, nil, nil, nil, - 921, 921, 921, 904, 921, nil, 904, nil, 921, 921, - nil, 904, 904, 921, nil, 921, 921, 921, 921, 921, - 921, 921, nil, nil, nil, nil, nil, 921, 921, 921, - 921, 921, 921, 921, nil, nil, 921, nil, nil, nil, - nil, nil, nil, 921, nil, nil, 921, 921, nil, 921, - 921, 921, 921, 921, nil, 921, 921, 921, nil, 921, - 921, nil, 921, 921, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 921, nil, nil, 921, nil, - nil, 921, nil, nil, 921, nil, 921, nil, 921, nil, - 921, nil, nil, nil, nil, nil, nil, nil, 921, nil, - nil, nil, nil, 921, 921, 921, 921, 921, 921, nil, - nil, nil, 921, 921, nil, nil, nil, nil, nil, nil, - 921, nil, nil, 921, nil, nil, nil, nil, 921, 921, - 923, 923, 923, 923, 923, nil, nil, nil, 923, 923, - nil, nil, nil, 923, nil, 923, 923, 923, 923, 923, - 923, 923, nil, nil, nil, nil, nil, 923, 923, 923, - 923, 923, 923, 923, nil, nil, 923, nil, nil, nil, - nil, nil, 923, 923, nil, 923, 923, 923, nil, 923, - 923, 923, 923, 923, nil, 923, 923, 923, nil, 923, - 923, nil, 923, 923, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 923, nil, nil, 923, nil, - nil, 923, nil, nil, 923, nil, 923, nil, nil, nil, - 923, nil, nil, nil, nil, nil, nil, nil, 923, nil, - nil, nil, nil, 923, 923, 923, 923, 923, 923, nil, - nil, nil, 923, 923, nil, nil, nil, nil, nil, nil, - 923, nil, nil, 923, nil, nil, nil, nil, 923, 923, - 930, 930, 930, 930, 930, nil, nil, nil, 930, 930, - nil, nil, nil, 930, nil, 930, 930, 930, 930, 930, - 930, 930, nil, nil, nil, nil, nil, 930, 930, 930, - 930, 930, 930, 930, nil, nil, 930, nil, nil, nil, - nil, nil, 930, 930, nil, 930, 930, 930, nil, 930, - 930, 930, 930, 930, nil, 930, 930, 930, nil, 930, - 930, nil, 930, 930, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 930, nil, nil, 930, nil, - nil, 930, nil, nil, 930, nil, 930, nil, nil, nil, - 930, nil, nil, nil, nil, nil, nil, nil, 930, nil, - nil, nil, nil, 930, 930, 930, 930, 930, 930, nil, - nil, nil, 930, 930, nil, nil, nil, nil, nil, nil, - 930, nil, nil, 930, nil, nil, nil, nil, 930, 930, - 935, 935, 935, 935, 935, nil, nil, nil, 935, 935, - nil, nil, nil, 935, nil, 935, 935, 935, 935, 935, - 935, 935, nil, nil, nil, nil, nil, 935, 935, 935, - 935, 935, 935, 935, nil, nil, 935, nil, nil, nil, - nil, nil, 935, 935, nil, 935, 935, 935, nil, 935, - 935, 935, 935, 935, nil, 935, 935, 935, nil, 935, - 935, nil, 935, 935, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 935, nil, nil, 935, nil, - nil, 935, nil, nil, 935, nil, 935, nil, nil, nil, - 935, nil, nil, nil, nil, nil, nil, nil, 935, nil, - nil, nil, nil, 935, 935, 935, 935, 935, 935, nil, - nil, nil, 935, 935, nil, nil, nil, nil, nil, nil, - 935, nil, nil, 935, nil, nil, nil, nil, 935, 935, - 943, 943, 943, 943, 943, nil, nil, nil, 943, 943, - nil, nil, nil, 943, nil, 943, 943, 943, 943, 943, - 943, 943, nil, nil, nil, nil, nil, 943, 943, 943, - 943, 943, 943, 943, nil, nil, 943, nil, nil, nil, - nil, nil, 943, 943, nil, 943, 943, 943, nil, 943, - 943, 943, 943, 943, nil, 943, 943, 943, nil, 943, - 943, nil, 943, 943, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 943, nil, nil, 943, nil, - nil, 943, nil, nil, 943, nil, 943, nil, nil, nil, - 943, nil, nil, nil, nil, nil, nil, nil, 943, nil, - nil, nil, nil, 943, 943, 943, 943, 943, 943, nil, - nil, nil, 943, 943, nil, nil, nil, 945, 945, 945, - 943, 945, nil, 943, nil, 945, 945, nil, 943, 943, - 945, nil, 945, 945, 945, 945, 945, 945, 945, nil, - nil, nil, nil, nil, 945, 945, 945, 945, 945, 945, - 945, nil, nil, 945, nil, nil, nil, nil, nil, nil, - 945, nil, nil, 945, 945, nil, 945, 945, 945, 945, - 945, 945, 945, 945, 945, nil, 945, 945, nil, 945, - 945, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 945, nil, nil, 945, nil, nil, 945, nil, - nil, 945, nil, 945, nil, nil, nil, 945, nil, nil, - nil, nil, nil, nil, nil, 945, nil, nil, nil, 436, - 945, 945, 945, 945, 945, 945, 436, 436, 436, 945, - 945, nil, 436, 436, nil, 436, nil, 945, nil, nil, - 945, nil, nil, nil, 436, 945, 945, nil, nil, nil, - nil, nil, nil, nil, nil, 436, 436, nil, 436, 436, - 436, 436, 436, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 436, 436, 436, 436, - 436, 436, 436, 436, 436, 436, 436, 436, 436, 436, - 436, 438, nil, 436, 436, 436, nil, 436, 438, 438, - 438, 436, nil, nil, 438, 438, nil, 438, 436, nil, - 436, nil, 436, 436, 436, 436, 436, 436, 436, nil, - 436, 436, 436, nil, nil, nil, nil, 438, 438, nil, - 438, 438, 438, 438, 438, 436, 436, nil, 436, nil, - 436, nil, nil, 436, nil, 436, nil, 436, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 438, 438, - 438, 438, 438, 438, 438, 438, 438, 438, 438, 438, - 438, 438, 438, nil, nil, 438, 438, 438, nil, 438, - nil, nil, nil, 438, nil, nil, nil, nil, nil, nil, - 438, nil, 438, nil, 438, 438, 438, 438, 438, 438, - 438, nil, 438, nil, 438, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 438, 438, nil, - 438, nil, 438, 644, nil, 438, nil, 438, nil, 438, - 644, 644, 644, nil, nil, 644, 644, 644, nil, 644, - nil, nil, nil, nil, nil, nil, nil, nil, 644, 644, - 644, nil, nil, nil, nil, nil, nil, nil, nil, 644, - 644, nil, 644, 644, 644, 644, 644, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, - 644, 644, 644, 644, 644, nil, nil, 644, 644, 644, - nil, 644, 644, nil, nil, 644, nil, nil, 644, nil, - 644, nil, 644, nil, 644, nil, 644, 644, 644, 644, - 644, 644, 644, nil, 644, 644, 644, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 644, - 644, 644, 644, nil, 644, 645, nil, 644, nil, 644, - nil, 644, 645, 645, 645, nil, nil, 645, 645, 645, - nil, 645, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 645, 645, nil, nil, nil, nil, nil, nil, nil, - nil, 645, 645, nil, 645, 645, 645, 645, 645, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 645, 645, 645, 645, 645, 645, 645, 645, - 645, 645, 645, 645, 645, 645, 645, nil, nil, 645, - 645, 645, nil, 645, 645, nil, nil, 645, nil, nil, - 645, nil, 645, nil, 645, nil, 645, nil, 645, 645, - 645, 645, 645, 645, 645, nil, 645, nil, 645, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 645, 645, 645, 645, nil, 645, 28, nil, 645, - nil, 645, nil, 645, 28, 28, 28, nil, nil, 28, - 28, 28, nil, 28, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 28, 28, nil, nil, nil, nil, nil, - nil, nil, nil, 28, 28, nil, 28, 28, 28, 28, - 28, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 28, nil, - nil, 28, 28, 28, nil, nil, 28, nil, 28, 28, - nil, nil, 28, nil, 28, nil, 28, nil, 28, nil, - 28, 28, 28, 28, 28, 28, 28, nil, 28, nil, - 28, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 28, 28, 28, 28, 50, 28, nil, - nil, 28, nil, 28, 50, 50, 50, nil, nil, 50, - 50, 50, nil, 50, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 50, 50, 50, nil, nil, nil, nil, - nil, nil, nil, 50, 50, nil, 50, 50, 50, 50, - 50, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, nil, - nil, 50, 50, 50, nil, nil, 50, nil, nil, 50, - nil, nil, 50, nil, 50, nil, 50, nil, 50, nil, - 50, 50, 50, 50, 50, 50, 50, nil, 50, nil, - 50, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 50, 50, 50, 50, 494, 50, nil, - 50, 50, nil, 50, 494, 494, 494, nil, nil, 494, - 494, 494, nil, 494, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 494, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 494, 494, nil, 494, 494, 494, 494, - 494, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 495, nil, nil, nil, nil, nil, - nil, 495, 495, 495, nil, nil, 495, 495, 495, nil, - 495, nil, nil, nil, nil, 494, 494, nil, nil, nil, - 495, nil, nil, 494, nil, nil, nil, nil, 494, 494, - 495, 495, nil, 495, 495, 495, 495, 495, nil, nil, - nil, nil, 918, nil, 918, 918, 918, 918, 918, nil, - 494, nil, nil, nil, nil, nil, nil, nil, 918, nil, - nil, nil, 496, 494, nil, 494, nil, nil, 494, 496, - 496, 496, 495, 495, 496, 496, 496, nil, 496, nil, - 495, 918, 918, nil, nil, 495, 495, nil, 496, 918, - 918, 918, 918, nil, nil, nil, nil, nil, 496, 496, - nil, 496, 496, 496, 496, 496, nil, 495, nil, nil, - nil, nil, nil, 202, 202, nil, nil, 202, nil, nil, - 495, nil, 495, nil, nil, 495, 202, 202, 918, 202, - 202, 202, 202, 202, 202, 202, nil, nil, 202, 202, - 496, 496, nil, nil, 202, 202, 202, 202, 496, nil, - nil, nil, nil, 496, 496, nil, nil, nil, nil, nil, - 202, 202, nil, 202, 202, 202, 202, 202, 202, 202, - 202, 202, 202, 202, nil, 496, 202, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 496, nil, - 496, nil, nil, 496, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, nil, nil, - nil, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, nil, 7, 7, 7, nil, 7, nil, nil, - nil, nil, nil, nil, nil, nil, 7, 7, nil, 7, - 7, 7, 7, 7, 7, 7, nil, nil, 7, 7, - nil, nil, nil, nil, 7, 7, 7, 7, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 7, 7, nil, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, nil, nil, 7, 7, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 7, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, nil, nil, nil, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, nil, 8, 8, nil, - nil, 8, nil, nil, nil, nil, nil, nil, nil, nil, - 8, 8, nil, 8, 8, 8, 8, 8, 8, 8, - nil, nil, 8, 8, nil, nil, nil, nil, 8, 8, - 8, 8, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 8, 8, nil, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, nil, nil, - 8, 8, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 8, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 411, nil, nil, nil, 411, - 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 411, 411, 411, 411, 411, 411, 411, 411, 411, - nil, 411, 411, nil, nil, 411, nil, nil, nil, nil, - nil, nil, nil, nil, 411, 411, nil, 411, 411, 411, - 411, 411, 411, 411, nil, nil, 411, 411, nil, nil, - nil, nil, 411, 411, 411, 411, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 411, 411, - nil, 411, 411, 411, 411, 411, 411, 411, 411, 411, - 411, 411, nil, nil, 411, 411, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 411, 415, 415, 415, 415, - 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, - 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, - nil, nil, nil, 415, 415, 415, 415, 415, 415, 415, - 415, 415, 415, 415, 415, 415, 415, 415, 415, 415, - 415, 415, 415, 415, nil, 415, 415, nil, nil, 415, - nil, nil, nil, nil, nil, nil, nil, nil, 415, 415, - nil, 415, 415, 415, 415, 415, 415, 415, nil, nil, - 415, 415, nil, nil, nil, nil, 415, 415, 415, 415, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 415, 415, nil, 415, 415, 415, 415, 415, - 415, 415, 415, 415, 415, 415, nil, nil, 415, 415, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 415, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, nil, nil, nil, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - 65, 65, 65, 65, 65, 65, 65, 65, nil, 65, - 65, 65, 65, 65, nil, 65, nil, nil, nil, nil, - nil, nil, 65, 65, nil, 65, 65, 65, 65, 65, - 65, 65, nil, nil, 65, 65, nil, nil, nil, nil, - 65, 65, 65, 65, nil, nil, nil, nil, nil, 65, - nil, nil, nil, nil, nil, nil, 65, 65, nil, 65, - 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, - nil, nil, 65, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, nil, nil, nil, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, - 79, nil, 79, 79, 79, 79, 79, nil, 79, nil, - nil, nil, nil, nil, nil, 79, 79, nil, 79, 79, - 79, 79, 79, 79, 79, nil, nil, 79, 79, nil, - nil, nil, nil, 79, 79, 79, 79, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 79, - 79, nil, 79, 79, 79, 79, 79, 79, 79, 79, - 79, 79, 79, nil, nil, 79, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - nil, nil, nil, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, - 192, 192, 192, 192, nil, 192, 192, 192, 192, 192, - nil, 192, nil, nil, nil, nil, nil, nil, 192, 192, - nil, 192, 192, 192, 192, 192, 192, 192, nil, nil, - 192, 192, nil, nil, nil, nil, 192, 192, 192, 192, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 192, 192, nil, 192, 192, 192, 192, 192, - 192, 192, 192, 192, 192, 192, nil, nil, 192, 766, - 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 766, nil, nil, nil, 766, 766, 766, 766, - 766, 766, 766, 766, 766, 766, 766, 766, 766, 766, - 766, 766, 766, 766, 766, 766, 766, nil, 766, 766, - nil, nil, 766, nil, nil, nil, nil, nil, nil, nil, - nil, 766, 766, nil, 766, 766, 766, 766, 766, 766, - 766, nil, nil, 766, 766, nil, nil, nil, nil, 766, - 766, 766, 766, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 766, 766, nil, 766, 766, - 766, 766, 766, 766, 766, 766, 766, 766, 766, 201, - 201, 766, nil, 201, nil, nil, nil, nil, nil, nil, - nil, nil, 201, 201, nil, 201, 201, 201, 201, 201, - 201, 201, nil, nil, 201, 201, nil, nil, nil, nil, - 201, 201, 201, 201, nil, nil, nil, nil, nil, 201, - nil, nil, nil, nil, nil, nil, 201, 201, nil, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 203, 203, 201, nil, 203, nil, nil, nil, nil, nil, - nil, nil, nil, 203, 203, nil, 203, 203, 203, 203, - 203, 203, 203, nil, nil, 203, 203, nil, nil, nil, - nil, 203, 203, 203, 203, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 203, 203, nil, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 264, 264, 203, nil, 264, nil, nil, nil, nil, - nil, nil, nil, nil, 264, 264, nil, 264, 264, 264, - 264, 264, 264, 264, nil, nil, 264, 264, nil, nil, - nil, nil, 264, 264, 264, 264, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 264, 264, - nil, 264, 264, 264, 264, 264, 264, 264, 264, 264, - 264, 264, 265, 265, 264, nil, 265, nil, nil, nil, - nil, nil, nil, nil, nil, 265, 265, nil, 265, 265, - 265, 265, 265, 265, 265, nil, nil, 265, 265, nil, - nil, nil, nil, 265, 265, 265, 265, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 265, - 265, nil, 265, 265, 265, 265, 265, 265, 265, 265, - 265, 265, 265, 266, 266, 265, nil, 266, nil, nil, - nil, nil, nil, nil, nil, nil, 266, 266, nil, 266, - 266, 266, 266, 266, 266, 266, nil, nil, 266, 266, - nil, nil, nil, nil, 266, 266, 266, 266, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 266, 266, nil, 266, 266, 266, 266, 266, 266, 266, - 266, 266, 266, 266, 449, 449, 266, nil, 449, nil, - nil, nil, nil, nil, nil, nil, nil, 449, 449, nil, - 449, 449, 449, 449, 449, 449, 449, nil, nil, 449, - 449, nil, nil, nil, nil, 449, 449, 449, 449, nil, - nil, nil, nil, nil, 449, nil, nil, nil, nil, nil, - nil, 449, 449, nil, 449, 449, 449, 449, 449, 449, - 449, 449, 449, 449, 449, 450, 450, 449, nil, 450, - nil, nil, nil, nil, nil, nil, nil, nil, 450, 450, - nil, 450, 450, 450, 450, 450, 450, 450, nil, nil, - 450, 450, nil, nil, nil, nil, 450, 450, 450, 450, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 450, 450, nil, 450, 450, 450, 450, 450, - 450, 450, 450, 450, 450, 450, 521, 521, 450, nil, - 521, nil, nil, nil, nil, nil, nil, nil, nil, 521, - 521, nil, 521, 521, 521, 521, 521, 521, 521, nil, - nil, 521, 521, nil, nil, nil, nil, 521, 521, 521, - 521, nil, nil, nil, nil, nil, 521, nil, nil, nil, - nil, nil, nil, 521, 521, nil, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 522, 522, 521, - nil, 522, nil, nil, nil, nil, nil, nil, nil, nil, - 522, 522, nil, 522, 522, 522, 522, 522, 522, 522, - nil, nil, 522, 522, nil, nil, nil, nil, 522, 522, - 522, 522, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 522, 522, nil, 522, 522, 522, - 522, 522, 522, 522, 522, 522, 522, 522, 524, 524, - 522, nil, 524, nil, nil, nil, nil, nil, nil, nil, - nil, 524, 524, nil, 524, 524, 524, 524, 524, 524, - 524, nil, nil, 524, 524, nil, nil, nil, nil, 524, - 524, 524, 524, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 524, 524, nil, 524, 524, - 524, 524, 524, 524, 524, 524, 524, 524, 524, 534, - 534, 524, nil, 534, nil, nil, nil, nil, nil, nil, - nil, nil, 534, 534, nil, 534, 534, 534, 534, 534, - 534, 534, nil, nil, 534, 534, nil, nil, nil, nil, - 534, 534, 534, 534, nil, nil, nil, nil, nil, 534, - nil, nil, nil, nil, nil, nil, 534, 534, nil, 534, - 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, - 535, 535, 534, nil, 535, nil, nil, nil, nil, nil, - nil, nil, nil, 535, 535, nil, 535, 535, 535, 535, - 535, 535, 535, nil, nil, 535, 535, nil, nil, nil, - nil, 535, 535, 535, 535, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 535, 535, nil, - 535, 535, 535, 535, 535, 535, 535, 535, 535, 535, - 535, 584, 584, 535, nil, 584, nil, nil, nil, nil, - nil, nil, nil, nil, 584, 584, nil, 584, 584, 584, - 584, 584, 584, 584, nil, nil, 584, 584, nil, nil, - nil, nil, 584, 584, 584, 584, nil, nil, nil, nil, - nil, 584, nil, nil, nil, nil, nil, nil, 584, 584, - nil, 584, 584, 584, 584, 584, 584, 584, 584, 584, - 584, 584, 585, 585, 584, nil, 585, nil, nil, nil, - nil, nil, nil, nil, nil, 585, 585, nil, 585, 585, - 585, 585, 585, 585, 585, nil, nil, 585, 585, nil, - nil, nil, nil, 585, 585, 585, 585, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 585, - 585, nil, 585, 585, 585, 585, 585, 585, 585, 585, - 585, 585, 585, 591, 591, 585, nil, 591, nil, nil, - nil, nil, nil, nil, nil, nil, 591, 591, nil, 591, - 591, 591, 591, 591, 591, 591, nil, nil, 591, 591, - nil, nil, nil, nil, 591, 591, 591, 591, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 591, 591, nil, 591, 591, 591, 591, 591, 591, 591, - 591, 591, 591, 591, 593, 593, 591, nil, 593, nil, - nil, nil, nil, nil, nil, nil, nil, 593, 593, nil, - 593, 593, 593, 593, 593, 593, 593, nil, nil, 593, - 593, nil, nil, nil, nil, 593, 593, 593, 593, nil, - nil, nil, nil, nil, 593, nil, nil, nil, nil, nil, - nil, 593, 593, nil, 593, 593, 593, 593, 593, 593, - 593, 593, 593, 593, 593, 822, 822, 593, nil, 822, - nil, nil, nil, nil, nil, nil, nil, nil, 822, 822, - nil, 822, 822, 822, 822, 822, 822, 822, nil, nil, - 822, 822, nil, nil, nil, nil, 822, 822, 822, 822, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 822, 822, nil, 822, 822, 822, 822, 822, - 822, 822, 822, 822, 822, 822, 946, 946, 822, nil, - 946, nil, nil, nil, nil, nil, nil, nil, nil, 946, - 946, nil, 946, 946, 946, 946, 946, 946, 946, nil, - nil, 946, 946, nil, nil, nil, nil, 946, 946, 946, - 946, nil, nil, nil, nil, nil, 946, nil, nil, nil, - nil, nil, nil, 946, 946, nil, 946, 946, 946, 946, - 946, 946, 946, 946, 946, 946, 946, 947, 947, 946, - nil, 947, nil, nil, nil, nil, nil, nil, nil, nil, - 947, 947, nil, 947, 947, 947, 947, 947, 947, 947, - nil, nil, 947, 947, nil, nil, nil, nil, 947, 947, - 947, 947, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 947, 947, nil, 947, 947, 947, - 947, 947, 947, 947, 947, 947, 947, 947, nil, nil, - 947 ] - -racc_action_pointer = [ - -2, 34, nil, 234, nil, 618, -19, 22922, 23046, -5, - -1, 15, 117, 414, 291, 243, nil, 125, 252, 900, - 186, nil, 379, 506, 633, 381, 13, 760, 22407, nil, - 900, 1027, 1154, nil, 108, 541, 237, 261, 1294, 1421, - 1548, 176, 467, nil, nil, nil, nil, nil, nil, nil, - 22537, nil, 1675, 1802, 1929, 29, 9932, 2056, 2183, nil, - nil, 2310, 2450, 2577, nil, 23418, nil, nil, nil, nil, - nil, -102, nil, nil, nil, nil, nil, 178, 220, 23531, - nil, nil, nil, 429, 2704, nil, nil, 2831, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 359, nil, 2971, - nil, nil, nil, 3111, 3238, 3365, 3492, 3632, 3772, nil, - 663, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 23644, 234, nil, 3912, 4039, 4166, 4293, 4420, - 4547, 23818, 22792, 23879, 4674, 4801, 4928, nil, 541, -49, - 319, 61, 240, 328, 5068, 5195, nil, nil, 5322, 363, - 5449, 5576, 5703, 5830, 5957, 6084, 6211, 6338, 6465, 6592, - 6719, 6846, 6973, 7100, 7227, 7354, 7481, 7608, 7735, 7862, - 7989, 8116, 8243, 8370, 8497, 8624, nil, nil, nil, 1294, - nil, 329, 339, nil, 8751, 389, 8878, nil, nil, nil, - nil, 9005, nil, nil, 23940, 24001, 24062, 383, 9132, 9259, - nil, nil, nil, nil, nil, nil, nil, 9386, 249, 745, - 390, 9526, 409, 438, 405, 9653, 9793, 73, 594, 497, - 196, 465, 440, 207, nil, 478, 471, nil, 9920, nil, - 586, 505, 531, 633, nil, 533, nil, 10047, nil, 10187, - 35, nil, 502, -103, 135, 537, 521, 262, 556, nil, - nil, -22, 10580, nil, nil, nil, 520, 545, nil, 564, - 567, nil, nil, nil, nil, nil, nil, nil, 3097, nil, - nil, nil, 648, nil, nil, 674, 806, -7, 36, 10314, - 10441, 324, 63, 596, -17, 668, 690, 37, 731, nil, - nil, 506, 704, nil, 721, nil, 65, nil, nil, 10568, - -12, 122, 360, 384, 385, 436, 509, 590, nil, 795, - nil, 10695, nil, 173, nil, 326, nil, -23, 649, 362, - nil, 653, -50, nil, 365, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 683, 23170, nil, nil, nil, 23294, 688, nil, nil, 760, - nil, 10822, 681, nil, 691, nil, nil, 1421, 728, 731, - 668, 761, 10949, nil, nil, nil, 21929, 757, 22011, nil, - 11076, 11203, 11330, nil, nil, nil, 1548, nil, nil, 24123, - 24184, 11457, 11584, 180, 11711, 11838, 11965, 115, nil, 3238, - 3365, 232, 879, 785, 787, 821, 824, 2457, 2584, 5068, - 3492, 3632, 3772, 3912, 4039, 4166, 4293, 4420, 4547, 4674, - 1133, 1232, 4801, 4928, 633, -34, nil, 12092, nil, 12219, - nil, 12346, nil, nil, 22667, 22724, 22792, -17, nil, 771, - nil, nil, 785, 787, nil, nil, 12473, 59, 203, 832, - nil, nil, 12613, 833, 797, nil, nil, 799, 12753, 845, - 12880, 24245, 24306, 13007, 24367, 223, 848, nil, nil, 821, - nil, 13134, 13261, 13388, 24428, 24489, 1675, 13515, 949, 951, - 871, nil, nil, 13642, nil, nil, 13769, nil, nil, nil, - nil, 13909, 14049, 874, nil, 1000, nil, nil, 14176, 12765, - nil, 772, nil, nil, 894, nil, 3126, nil, 859, 1198, - nil, nil, 14316, 977, nil, nil, 14456, 212, 227, 975, - 983, 14596, nil, 14723, 24550, 24611, 14850, 40, nil, 760, - nil, 24672, 14977, 24733, nil, nil, 15104, 387, 15231, nil, - 1166, nil, nil, nil, 45, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, -35, nil, nil, nil, 864, - nil, nil, nil, nil, nil, 15358, 866, 15485, 798, 203, - 15612, 15739, 900, nil, nil, nil, 15866, 903, nil, 15993, - 915, nil, 268, 307, 22143, 22275, 927, 928, 506, nil, - 16120, nil, 1040, nil, 16260, 897, nil, 939, 16387, nil, - nil, nil, nil, nil, nil, nil, nil, 16527, nil, 942, - 16654, 16781, 2310, 907, nil, nil, 947, 16921, 17061, nil, - 1154, -27, 17188, 914, nil, 957, 228, 235, 962, 313, - 327, 963, 960, 972, 17315, 1802, 997, 1001, 240, 1056, - 17442, nil, nil, 376, 960, 1068, nil, nil, 945, nil, - 958, 935, 1035, 963, 967, nil, nil, 1010, 3135, nil, - 869, nil, 1096, nil, nil, nil, nil, nil, 1102, nil, - 1103, 17569, 1020, 46, 52, 59, 102, 1021, 17696, 1027, - nil, 1028, 1026, 17836, 416, nil, -25, 17976, 18116, 9665, - 463, nil, nil, 1075, nil, 18243, nil, 998, 999, nil, - 1000, 1002, 1004, nil, 996, nil, 23757, 1043, 1050, 18383, - nil, nil, nil, 1929, 1007, 18510, 18637, 18764, nil, 2056, - nil, 2183, nil, nil, 2446, nil, 2573, nil, 18891, 19018, - 19145, 315, 319, 2704, nil, 1041, 1144, nil, nil, 1041, - nil, 1026, 19272, nil, 1053, 1161, 1072, 323, nil, nil, - nil, 1196, nil, 19412, 1081, 1125, nil, nil, nil, nil, - nil, nil, 24794, nil, 1127, nil, nil, nil, nil, 1407, - 1215, nil, 19539, 1220, 19679, 19819, nil, nil, 66, 56, - 988, 295, nil, 1221, nil, nil, 1222, 1225, 1109, nil, - nil, nil, -32, nil, nil, 807, 14188, nil, 842, nil, - 406, nil, 19946, nil, nil, nil, nil, nil, nil, nil, - 1127, 1113, nil, 2831, nil, 2971, 20073, 20200, nil, nil, - nil, 20327, 1114, nil, nil, nil, 20467, nil, nil, 72, - 20594, nil, 1154, 1125, nil, nil, 78, nil, 1249, 1250, - 20721, 20861, nil, nil, 21001, nil, nil, 1168, nil, 1132, - nil, nil, 1133, 1134, 1139, 1137, nil, nil, 22721, nil, - nil, 21128, nil, 21268, 91, 1112, 1221, 97, nil, nil, - 21408, nil, nil, nil, 460, 21548, 1268, nil, nil, 1081, - nil, nil, nil, 21688, 1273, 21815, 24855, 24916, 98, 899, - nil, nil, nil, 1272, nil, 1153, 1275, nil, 1190, 108, - 120, 198, 202, nil, nil, nil, nil, 218 ] - -racc_action_default = [ - -3, -555, -1, -543, -4, -6, -555, -555, -555, -555, - -555, -555, -555, -555, -277, -37, -38, -555, -555, -43, - -45, -46, -289, -327, -328, -50, -255, -382, -255, -65, - -10, -69, -76, -78, -555, -457, -555, -555, -555, -555, - -555, -545, -232, -270, -271, -272, -273, -274, -275, -276, - -533, -279, -555, -554, -525, -297, -554, -555, -555, -302, - -305, -543, -555, -555, -319, -555, -329, -330, -400, -401, - -402, -403, -404, -554, -407, -554, -554, -554, -554, -554, - -434, -440, -441, -555, -446, -447, -448, -449, -450, -451, - -452, -453, -454, -455, -456, -459, -460, -555, -2, -544, - -550, -551, -552, -555, -555, -555, -555, -555, -3, -13, - -555, -105, -106, -107, -108, -109, -110, -111, -114, -115, - -116, -117, -118, -119, -120, -121, -122, -123, -124, -125, - -126, -127, -128, -129, -130, -131, -132, -133, -134, -135, - -136, -137, -138, -139, -140, -141, -142, -143, -144, -145, - -146, -147, -148, -149, -150, -151, -152, -153, -154, -155, - -156, -157, -158, -159, -160, -161, -162, -163, -164, -165, - -166, -167, -168, -169, -170, -171, -172, -173, -174, -175, - -176, -177, -178, -179, -180, -181, -182, -183, -184, -185, - -186, -187, -555, -18, -112, -10, -555, -555, -555, -554, - -554, -555, -555, -555, -555, -555, -555, -41, -555, -457, - -555, -277, -555, -555, -10, -555, -42, -224, -555, -555, - -555, -555, -555, -555, -555, -555, -555, -555, -555, -555, - -555, -555, -555, -555, -555, -555, -555, -555, -555, -555, - -555, -555, -555, -555, -555, -555, -369, -371, -47, -233, - -248, -262, -262, -252, -555, -263, -555, -289, -327, -328, - -527, -555, -48, -49, -555, -555, -555, -55, -554, -555, - -296, -375, -383, -385, -63, -381, -64, -555, -543, -11, - -65, -10, -555, -555, -70, -73, -10, -457, -555, -555, - -277, -292, -545, -555, -331, -382, -555, -75, -555, -80, - -284, -442, -443, -555, -209, -210, -225, -555, -546, -10, - -545, -234, -545, -547, -547, -555, -555, -547, -555, -298, - -299, -555, -555, -342, -343, -350, -554, -491, -357, -554, - -554, -368, -490, -492, -493, -494, -495, -496, -555, -509, - -514, -515, -517, -518, -519, -555, -44, -555, -555, -555, - -555, -543, -555, -544, -457, -555, -555, -277, -555, -498, - -499, -101, -555, -103, -555, -277, -555, -316, -457, -555, - -105, -106, -143, -144, -160, -165, -172, -175, -322, -555, - -523, -555, -405, -555, -420, -555, -422, -555, -555, -555, - -412, -555, -555, -418, -555, -433, -435, -436, -437, -438, - -444, -445, 968, -5, -553, -19, -20, -21, -22, -23, - -555, -555, -15, -16, -17, -555, -555, -25, -34, -188, - -263, -555, -555, -26, -35, -36, -27, -190, -555, -555, - -534, -535, -554, -378, -536, -537, -534, -255, -535, -380, - -539, -540, -554, -534, -535, -33, -198, -39, -40, -555, - -555, -554, -554, -284, -555, -555, -555, -555, -295, -199, - -200, -201, -202, -203, -204, -205, -206, -211, -212, -213, - -214, -215, -216, -217, -218, -219, -220, -221, -222, -223, - -226, -227, -228, -229, -555, -554, -249, -555, -250, -555, - -260, -555, -264, -530, -255, -255, -255, -554, -56, -545, - -243, -244, -262, -262, -256, -257, -555, -554, -554, -555, - -291, -9, -544, -555, -66, -282, -81, -71, -555, -555, - -554, -555, -555, -554, -555, -284, -555, -442, -443, -77, - -82, -555, -555, -555, -555, -555, -230, -555, -392, -555, - -555, -235, -236, -549, -548, -238, -549, -287, -288, -526, - -339, -10, -10, -555, -341, -555, -359, -366, -555, -363, - -364, -555, -367, -491, -555, -500, -555, -502, -504, -508, - -516, -520, -10, -332, -333, -334, -10, -555, -555, -555, - -555, -10, -387, -554, -555, -555, -554, -284, -311, -101, - -102, -555, -554, -555, -314, -461, -555, -555, -555, -320, - -489, -324, -541, -542, -545, -406, -421, -424, -425, -427, - -408, -423, -409, -410, -411, -555, -414, -416, -417, -555, - -439, -7, -14, -113, -24, -555, -269, -555, -285, -286, - -555, -555, -59, -241, -242, -376, -555, -61, -379, -555, - -57, -377, -534, -535, -534, -535, -555, -555, -188, -294, - -555, -353, -555, -355, -10, -262, -261, -265, -555, -528, - -529, -51, -372, -52, -373, -53, -374, -10, -239, -555, - -245, -247, -43, -555, -254, -258, -555, -10, -10, -290, - -12, -66, -555, -74, -79, -555, -534, -535, -554, -538, - -283, -555, -555, -554, -555, -197, -207, -208, -555, -554, - -554, -280, -281, -547, -555, -555, -340, -351, -555, -358, - -554, -352, -555, -554, -554, -510, -497, -555, -555, -507, - -554, -335, -554, -303, -336, -337, -338, -306, -555, -309, - -555, -555, -555, -534, -535, -538, -283, -555, -555, -101, - -104, -538, -555, -10, -555, -463, -555, -10, -10, -489, - -555, -466, -467, -469, -470, -472, -473, -522, -522, -478, - -480, -480, -480, -488, -491, -512, -555, -555, -555, -10, - -413, -415, -419, -189, -267, -555, -555, -555, -30, -193, - -31, -194, -60, -32, -195, -62, -196, -58, -555, -555, - -555, -286, -285, -231, -354, -555, -555, -251, -266, -555, - -240, -262, -555, -259, -555, -555, -72, -285, -286, -83, - -293, -554, -348, -10, -393, -554, -394, -395, -237, -344, - -345, -365, -555, -284, -555, -361, -362, -501, -503, -506, - -555, -346, -555, -555, -10, -10, -308, -310, -555, -285, - -93, -555, -285, -555, -462, -317, -555, -555, -545, -465, - -468, -471, -555, -476, -477, -555, -555, -484, -555, -486, - -555, -487, -555, -325, -524, -426, -429, -430, -431, -432, - -555, -268, -28, -191, -29, -192, -555, -555, -356, -370, - -54, -246, -262, -384, -386, -8, -10, -399, -349, -555, - -555, -397, -283, -554, -505, -300, -555, -301, -555, -555, - -555, -10, -312, -315, -10, -321, -323, -555, -474, -522, - -521, -479, -480, -480, -480, -555, -513, -511, -489, -428, - -253, -555, -398, -10, -457, -555, -555, -277, -396, -360, - -10, -304, -307, -265, -554, -10, -555, -464, -475, -555, - -482, -483, -485, -10, -392, -554, -555, -555, -284, -554, - -388, -389, -390, -555, -318, -480, -555, -391, -555, -534, - -535, -538, -283, -347, -313, -481, -326, -285 ] - -racc_goto_table = [ - 13, 315, 307, 699, 323, 378, 498, 114, 114, 539, - 250, 250, 250, 432, 437, 442, 5, 208, 208, 396, - 284, 488, 208, 208, 208, 659, 331, 102, 294, 294, - 13, 288, 288, 572, 576, 529, 10, 98, 12, 557, - 748, 312, 560, 562, 251, 251, 251, 366, 565, 109, - 194, 580, 208, 208, 117, 117, 216, 208, 208, 294, - 294, 208, 355, 364, 99, 114, 10, 715, 12, 418, - 425, 760, 707, 267, 274, 276, 494, 495, 496, 114, - 542, 545, 659, 2, 549, 102, 280, 297, 252, 252, - 252, 606, 763, 723, 727, 352, 759, 616, 359, 13, - 1, 916, 590, 208, 208, 208, 208, 13, 13, 347, - 348, 403, 282, 351, 641, 5, 564, 710, 385, 387, - 317, 714, 394, 409, 5, 885, 830, 248, 262, 263, - 193, 360, 396, 411, 499, 10, 668, 12, 676, 504, - 207, 654, 811, 10, 10, 12, 12, 428, 429, 853, - 854, 380, 316, 667, 319, 405, 406, 407, 408, 320, - 358, 594, 762, 677, 678, 833, 662, 664, 666, 379, - 601, 309, 349, 834, 350, 310, 835, 738, 935, 743, - 346, 346, 916, 598, 346, 904, 369, 312, 312, 747, - 600, 410, 114, 766, 918, 13, 208, 208, 208, 208, - 208, 321, 441, 550, 208, 208, 208, 659, 713, 247, - 485, 656, 507, 656, 13, 208, 508, 950, 422, 422, - 760, 731, 815, 889, 382, 383, 346, 346, 346, 346, - 674, 10, 389, 12, 417, 423, 426, 615, 392, 865, - 768, 763, 445, 769, 848, 759, 909, 908, 912, 828, - 10, nil, 12, 526, nil, 683, 250, 250, nil, nil, - nil, 432, 437, nil, nil, 250, nil, nil, 208, 208, - 553, 540, 488, 541, nil, nil, 565, 208, 728, 719, - nil, 13, 294, nil, nil, 288, 13, 530, nil, nil, - 502, 251, 331, nil, nil, 294, nil, nil, 288, 251, - nil, 938, 102, nil, nil, nil, nil, nil, nil, 13, - nil, 762, 511, nil, nil, nil, nil, 10, nil, 12, - nil, nil, 10, 771, 12, nil, 271, 275, 447, 448, - 14, 740, nil, 688, 503, 252, 693, 280, 457, 512, - 517, 707, 280, 252, 717, 10, 688, 12, 910, 208, - 208, 910, 759, 599, 759, 963, 759, 902, 943, nil, - 14, 290, 290, 513, 715, 641, 294, nil, 519, 364, - nil, 782, nil, 501, 505, 102, 785, 951, nil, 787, - nil, 208, 509, nil, nil, 579, 893, nil, nil, 760, - 595, nil, 357, 365, 656, 656, 688, nil, nil, 646, - 647, 577, 578, nil, nil, 688, nil, nil, nil, 957, - 763, 114, nil, nil, 759, 114, nil, 659, 913, 806, - 914, nil, nil, 821, 797, nil, 825, 826, 565, 14, - nil, nil, nil, nil, nil, 759, nil, 14, 14, 312, - 312, nil, nil, 843, nil, nil, nil, 846, 847, nil, - 441, 208, 208, 622, nil, nil, nil, 623, 117, nil, - 669, nil, 117, nil, nil, nil, nil, nil, 685, nil, - 818, 692, 346, 346, nil, nil, nil, nil, nil, 632, - 762, nil, nil, nil, 637, nil, nil, nil, nil, 640, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 955, nil, nil, 604, nil, 208, 530, 312, nil, - nil, 312, 13, nil, nil, 294, nil, nil, 288, nil, - 208, nil, 441, 208, 901, 14, nil, nil, 680, nil, - nil, 732, nil, nil, 737, 441, nil, 208, nil, 894, - 742, 661, 663, 665, 14, nil, nil, nil, 10, nil, - 12, 13, 13, 655, nil, 294, nil, nil, 711, nil, - nil, nil, nil, nil, nil, 767, nil, nil, nil, nil, - 797, 312, 13, 816, 312, 923, 13, 857, 859, 861, - 312, 13, 930, 208, nil, 441, 208, 10, 10, 12, - 12, 441, 208, 271, 35, 275, 208, nil, 208, nil, - 795, 724, 724, nil, 936, 656, 929, nil, 10, 703, - 12, 14, 10, nil, 12, 290, 14, 10, nil, 12, - nil, 745, 331, nil, 35, 287, 287, nil, 290, 310, - 208, 208, nil, 952, nil, nil, 208, nil, nil, 14, - nil, nil, nil, 956, nil, 656, nil, nil, 744, nil, - nil, 920, nil, nil, 13, nil, 354, 368, nil, 368, - 698, nil, 283, nil, nil, nil, nil, 13, 778, 780, - nil, 530, nil, nil, 783, nil, nil, 13, 13, 294, - nil, nil, 288, 809, nil, nil, nil, nil, nil, nil, - 10, 294, 12, 35, 288, nil, nil, nil, nil, 365, - nil, 35, 35, 10, nil, 12, 863, nil, nil, nil, - nil, nil, nil, 10, 10, 12, 12, nil, nil, 346, - nil, 746, 422, nil, nil, nil, nil, nil, nil, 940, - 941, 942, 634, nil, nil, nil, 801, 638, 208, nil, - nil, nil, 634, 13, nil, nil, nil, 13, 13, nil, - nil, nil, nil, 838, nil, nil, nil, nil, 688, nil, - nil, nil, nil, nil, nil, nil, 114, nil, 844, 13, - 845, nil, 965, nil, 849, nil, 208, 208, nil, 10, - nil, 12, nil, 10, 10, 12, 12, nil, nil, 35, - 841, nil, nil, nil, 634, 634, 634, nil, nil, nil, - nil, nil, nil, nil, nil, 10, nil, 12, 35, 907, - nil, nil, nil, 13, 872, 874, nil, nil, nil, nil, - nil, nil, 441, nil, 882, nil, nil, 416, nil, nil, - nil, nil, 208, 318, 13, 13, nil, nil, nil, nil, - nil, nil, 14, nil, nil, nil, 283, nil, 290, 10, - nil, 12, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 346, nil, nil, nil, 724, nil, nil, nil, nil, - 10, 10, 12, 12, nil, 35, nil, nil, nil, 287, - 35, 14, 14, nil, 896, nil, 13, 294, 365, nil, - 925, nil, 287, 958, nil, nil, nil, nil, nil, nil, - nil, 13, 14, 35, 13, nil, 14, nil, nil, nil, - nil, 14, nil, 283, nil, nil, nil, nil, 283, nil, - nil, nil, 10, 13, 12, nil, 928, nil, nil, nil, - 13, nil, nil, 312, nil, 13, nil, 10, nil, 12, - 10, nil, 12, 13, nil, 208, nil, 441, nil, nil, - nil, nil, nil, nil, nil, 346, nil, nil, nil, 10, - nil, 12, nil, 368, nil, nil, 10, nil, 12, nil, - nil, 10, nil, 12, nil, 420, 424, nil, nil, 10, - nil, 12, nil, nil, 14, nil, nil, nil, 634, nil, - nil, 638, nil, 634, nil, nil, nil, 14, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 14, 14, nil, - nil, nil, 290, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 290, nil, nil, nil, nil, nil, - nil, nil, nil, 490, nil, 492, nil, nil, nil, nil, - 493, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 324, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 14, nil, nil, nil, 14, 14, 384, - nil, 386, 386, 390, 393, 386, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 869, 14, - nil, nil, nil, nil, nil, nil, 35, nil, nil, nil, - nil, nil, 287, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 14, nil, 35, 35, nil, nil, nil, - nil, nil, 368, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 14, 14, 35, 217, nil, nil, - 35, 249, 249, 249, nil, 35, nil, nil, nil, nil, - nil, nil, nil, 704, 705, nil, nil, 304, 305, 306, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 626, nil, 249, 249, 720, nil, nil, nil, 722, nil, - nil, nil, nil, 730, nil, nil, 14, nil, nil, nil, - 927, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 14, nil, nil, 14, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 35, nil, - nil, nil, nil, 14, nil, nil, nil, nil, nil, nil, - 14, 35, nil, nil, nil, 14, 657, nil, 318, nil, - 660, 35, 35, 14, 500, nil, 287, nil, nil, nil, - nil, nil, nil, nil, nil, 673, 796, nil, 287, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 799, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 804, - 805, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 657, nil, nil, 318, nil, nil, nil, nil, - nil, nil, 556, nil, nil, 556, 556, 35, nil, nil, - nil, 35, 35, nil, nil, 419, 249, 427, 249, 249, - nil, nil, nil, 446, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 35, nil, nil, nil, 217, nil, 459, - 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, - 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, - 480, 481, 482, 483, 484, nil, nil, nil, nil, nil, - nil, 870, nil, 249, nil, 249, 774, 35, nil, nil, - 249, nil, nil, nil, nil, nil, nil, 249, 249, nil, - nil, nil, nil, nil, nil, nil, 249, nil, 35, 35, - nil, nil, nil, nil, nil, nil, nil, 798, 633, nil, - nil, nil, nil, nil, nil, 888, nil, nil, 633, 657, - 318, nil, nil, nil, nil, nil, 536, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 898, 899, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 814, - 35, nil, nil, nil, 924, nil, nil, nil, nil, nil, - nil, 651, nil, nil, nil, 35, nil, nil, 35, nil, - 633, 633, 633, 651, nil, nil, nil, nil, nil, nil, - 420, nil, nil, 651, 651, nil, nil, 35, 922, nil, - nil, nil, nil, nil, 35, nil, nil, nil, nil, 35, - nil, nil, nil, 934, 851, nil, nil, 35, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 871, 944, nil, nil, nil, nil, - nil, nil, 949, nil, nil, nil, nil, 953, nil, nil, - 249, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 420, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 249, 249, nil, 446, 648, 427, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 249, nil, 249, nil, - 249, 917, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 672, nil, nil, nil, nil, - 318, nil, nil, nil, nil, nil, nil, nil, nil, 249, - nil, nil, 249, nil, nil, nil, nil, nil, nil, 933, - 695, 696, 697, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 249, nil, 633, 249, nil, nil, nil, 633, - 933, nil, nil, nil, nil, 812, 817, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 556, nil, nil, 556, - 556, nil, nil, nil, nil, nil, 812, nil, 812, nil, - nil, nil, 249, nil, nil, 249, nil, nil, nil, nil, - nil, 249, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 773, nil, 249, nil, nil, 779, - 781, nil, nil, 293, 293, 784, nil, nil, 786, nil, - 293, 293, 293, nil, nil, nil, nil, nil, nil, 793, - nil, nil, nil, nil, nil, nil, 293, 249, nil, nil, - nil, nil, nil, nil, 293, 293, nil, 887, nil, 249, - 249, 891, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 249, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 249, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 556, - nil, nil, nil, nil, 249, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 249, 873, 875, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 779, 781, 784, - 812, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 249, nil, nil, nil, 812, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 293, nil, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, nil, nil, - nil, nil, nil, nil, nil, nil, 293, nil, 293, nil, - nil, 249, nil, 293, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 875, 873, nil, nil, nil, - 249, nil, nil, nil, nil, nil, nil, 293, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 249, - 293, nil, nil, nil, nil, nil, nil, nil, nil, 293, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 249, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 249, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 293, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 293, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 293, 293, 293, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 293, - nil, 293, nil, 293, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 293, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 293, 293, 293, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 293, nil, nil, 293, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 293, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 293, nil, 293, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 293, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 293, nil, nil, nil, nil, nil, nil, nil, - 293, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 293, 293, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 293, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 293, nil, nil, nil, - nil, nil, 293, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 293, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 293, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 293, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 293, 293, 293, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 293, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 293, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 293, 293, - nil, nil, nil, 293, nil, nil, nil, nil, nil, nil, - nil, nil, 293, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 293, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 293 ] - -racc_goto_check = [ - 21, 22, 51, 10, 104, 47, 35, 48, 48, 8, - 29, 29, 29, 33, 33, 33, 7, 21, 21, 47, - 41, 61, 21, 21, 21, 154, 107, 83, 52, 52, - 21, 21, 21, 77, 77, 43, 17, 4, 20, 109, - 84, 29, 109, 109, 54, 54, 54, 46, 145, 14, - 14, 80, 21, 21, 50, 50, 18, 21, 21, 52, - 52, 21, 21, 21, 6, 48, 17, 147, 20, 24, - 24, 110, 106, 34, 34, 34, 33, 33, 33, 48, - 55, 55, 154, 2, 55, 83, 38, 42, 56, 56, - 56, 129, 141, 79, 79, 4, 108, 129, 17, 21, - 1, 151, 45, 21, 21, 21, 21, 21, 21, 16, - 16, 5, 39, 16, 60, 7, 148, 111, 126, 126, - 56, 111, 126, 7, 7, 12, 78, 31, 31, 31, - 15, 19, 47, 27, 58, 17, 59, 20, 63, 64, - 26, 36, 11, 17, 17, 20, 20, 22, 22, 142, - 142, 72, 73, 36, 74, 16, 16, 16, 16, 76, - 81, 82, 111, 36, 36, 11, 60, 60, 60, 85, - 86, 87, 88, 89, 90, 26, 91, 92, 93, 94, - 26, 26, 151, 95, 26, 96, 97, 29, 29, 98, - 99, 2, 48, 100, 101, 21, 21, 21, 21, 21, - 21, 102, 48, 103, 21, 21, 21, 154, 105, 112, - 113, 62, 115, 62, 21, 21, 116, 117, 54, 54, - 110, 118, 119, 120, 124, 125, 26, 26, 26, 26, - 62, 17, 127, 20, 18, 18, 18, 128, 130, 131, - 132, 141, 18, 133, 135, 108, 137, 139, 144, 149, - 17, nil, 20, 51, nil, 43, 29, 29, nil, nil, - nil, 33, 33, nil, nil, 29, nil, nil, 21, 21, - 104, 51, 61, 51, nil, nil, 145, 21, 80, 145, - nil, 21, 52, nil, nil, 21, 21, 41, nil, nil, - 54, 54, 107, nil, nil, 52, nil, nil, 21, 54, - nil, 142, 83, nil, nil, nil, nil, nil, nil, 21, - nil, 111, 4, nil, nil, nil, nil, 17, nil, 20, - nil, nil, 17, 129, 20, nil, 57, 57, 26, 26, - 23, 45, nil, 33, 56, 56, 33, 38, 26, 6, - 42, 106, 38, 56, 148, 17, 33, 20, 108, 21, - 21, 108, 108, 46, 108, 78, 108, 79, 84, nil, - 23, 23, 23, 39, 147, 60, 52, nil, 39, 21, - nil, 35, nil, 31, 31, 83, 35, 11, nil, 35, - nil, 21, 31, nil, nil, 4, 111, nil, nil, 110, - 83, nil, 23, 23, 62, 62, 33, nil, nil, 22, - 22, 16, 16, nil, nil, 33, nil, nil, nil, 10, - 141, 48, nil, nil, 108, 48, nil, 154, 111, 43, - 111, nil, nil, 109, 61, nil, 109, 109, 145, 23, - nil, nil, nil, nil, nil, 108, nil, 23, 23, 29, - 29, nil, nil, 8, nil, nil, nil, 8, 8, nil, - 48, 21, 21, 14, nil, nil, nil, 14, 50, nil, - 51, nil, 50, nil, nil, nil, nil, nil, 22, nil, - 55, 22, 26, 26, nil, nil, nil, nil, nil, 34, - 111, nil, nil, nil, 34, nil, nil, nil, nil, 34, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 111, nil, nil, 26, nil, 21, 41, 29, nil, - nil, 29, 21, nil, nil, 52, nil, nil, 21, nil, - 21, nil, 48, 21, 77, 23, nil, nil, 7, nil, - nil, 22, nil, nil, 22, 48, nil, 21, nil, 145, - 22, 34, 34, 34, 23, nil, nil, nil, 17, nil, - 20, 21, 21, 56, nil, 52, nil, nil, 21, nil, - nil, nil, nil, nil, nil, 51, nil, nil, nil, nil, - 61, 29, 21, 24, 29, 77, 21, 143, 143, 143, - 29, 21, 77, 21, nil, 48, 21, 17, 17, 20, - 20, 48, 21, 57, 44, 57, 21, nil, 21, nil, - 104, 83, 83, nil, 8, 62, 109, nil, 17, 56, - 20, 23, 17, nil, 20, 23, 23, 17, nil, 20, - nil, 83, 107, nil, 44, 44, 44, nil, 23, 26, - 21, 21, nil, 80, nil, nil, 21, nil, nil, 23, - nil, nil, nil, 8, nil, 62, nil, nil, 16, nil, - nil, 61, nil, nil, 21, nil, 44, 44, nil, 44, - 26, nil, 9, nil, nil, nil, nil, 21, 18, 18, - nil, 41, nil, nil, 18, nil, nil, 21, 21, 52, - nil, nil, 21, 41, nil, nil, nil, nil, nil, nil, - 17, 52, 20, 44, 21, nil, nil, nil, nil, 23, - nil, 44, 44, 17, nil, 20, 47, nil, nil, nil, - nil, nil, nil, 17, 17, 20, 20, nil, nil, 26, - nil, 26, 54, nil, nil, nil, nil, nil, nil, 143, - 143, 143, 57, nil, nil, nil, 56, 57, 21, nil, - nil, nil, 57, 21, nil, nil, nil, 21, 21, nil, - nil, nil, nil, 54, nil, nil, nil, nil, 33, nil, - nil, nil, nil, nil, nil, nil, 48, nil, 83, 21, - 83, nil, 143, nil, 83, nil, 21, 21, nil, 17, - nil, 20, nil, 17, 17, 20, 20, nil, nil, 44, - 16, nil, nil, nil, 57, 57, 57, nil, nil, nil, - nil, nil, nil, nil, nil, 17, nil, 20, 44, 51, - nil, nil, nil, 21, 18, 18, nil, nil, nil, nil, - nil, nil, 48, nil, 54, nil, nil, 9, nil, nil, - nil, nil, 21, 25, 21, 21, nil, nil, nil, nil, - nil, nil, 23, nil, nil, nil, 9, nil, 23, 17, - nil, 20, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 26, nil, nil, nil, 83, nil, nil, nil, nil, - 17, 17, 20, 20, nil, 44, nil, nil, nil, 44, - 44, 23, 23, nil, 16, nil, 21, 52, 23, nil, - 21, nil, 44, 22, nil, nil, nil, nil, nil, nil, - nil, 21, 23, 44, 21, nil, 23, nil, nil, nil, - nil, 23, nil, 9, nil, nil, nil, nil, 9, nil, - nil, nil, 17, 21, 20, nil, 17, nil, nil, nil, - 21, nil, nil, 29, nil, 21, nil, 17, nil, 20, - 17, nil, 20, 21, nil, 21, nil, 48, nil, nil, - nil, nil, nil, nil, nil, 26, nil, nil, nil, 17, - nil, 20, nil, 44, nil, nil, 17, nil, 20, nil, - nil, 17, nil, 20, nil, 25, 25, nil, nil, 17, - nil, 20, nil, nil, 23, nil, nil, nil, 57, nil, - nil, 57, nil, 57, nil, nil, nil, 23, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 23, 23, nil, - nil, nil, 23, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 23, nil, nil, nil, nil, nil, - nil, nil, nil, 25, nil, 25, nil, nil, nil, nil, - 25, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 53, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 23, nil, nil, nil, 23, 23, 53, - nil, 53, 53, 53, 53, 53, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 23, 23, - nil, nil, nil, nil, nil, nil, 44, nil, nil, nil, - nil, nil, 44, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 23, nil, 44, 44, nil, nil, nil, - nil, nil, 44, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 23, 23, 44, 28, nil, nil, - 44, 28, 28, 28, nil, 44, nil, nil, nil, nil, - nil, nil, nil, 9, 9, nil, nil, 28, 28, 28, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 25, nil, 28, 28, 9, nil, nil, nil, 9, nil, - nil, nil, nil, 9, nil, nil, 23, nil, nil, nil, - 23, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 23, nil, nil, 23, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 44, nil, - nil, nil, nil, 23, nil, nil, nil, nil, nil, nil, - 23, 44, nil, nil, nil, 23, 25, nil, 25, nil, - 25, 44, 44, 23, 53, nil, 44, nil, nil, nil, - nil, nil, nil, nil, nil, 25, 9, nil, 44, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 9, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 9, - 9, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 25, nil, nil, 25, nil, nil, nil, nil, - nil, nil, 53, nil, nil, 53, 53, 44, nil, nil, - nil, 44, 44, nil, nil, 28, 28, 28, 28, 28, - nil, nil, nil, 28, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 44, nil, nil, nil, 28, nil, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, nil, nil, nil, nil, nil, - nil, 9, nil, 28, nil, 28, 25, 44, nil, nil, - 28, nil, nil, nil, nil, nil, nil, 28, 28, nil, - nil, nil, nil, nil, nil, nil, 28, nil, 44, 44, - nil, nil, nil, nil, nil, nil, nil, 25, 53, nil, - nil, nil, nil, nil, nil, 9, nil, nil, 53, 25, - 25, nil, nil, nil, nil, nil, 28, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 9, 9, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 25, - 44, nil, nil, nil, 44, nil, nil, nil, nil, nil, - nil, 53, nil, nil, nil, 44, nil, nil, 44, nil, - 53, 53, 53, 53, nil, nil, nil, nil, nil, nil, - 25, nil, nil, 53, 53, nil, nil, 44, 9, nil, - nil, nil, nil, nil, 44, nil, nil, nil, nil, 44, - nil, nil, nil, 9, 25, nil, nil, 44, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 25, 9, nil, nil, nil, nil, - nil, nil, 9, nil, nil, nil, nil, 9, nil, nil, - 28, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 25, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 28, 28, nil, 28, 28, 28, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 28, nil, 28, nil, - 28, 25, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 28, nil, nil, nil, nil, - 25, nil, nil, nil, nil, nil, nil, nil, nil, 28, - nil, nil, 28, nil, nil, nil, nil, nil, nil, 25, - 28, 28, 28, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 28, nil, 53, 28, nil, nil, nil, 53, - 25, nil, nil, nil, nil, 53, 53, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 53, nil, nil, 53, - 53, nil, nil, nil, nil, nil, 53, nil, 53, nil, - nil, nil, 28, nil, nil, 28, nil, nil, nil, nil, - nil, 28, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 28, nil, 28, nil, nil, 28, - 28, nil, nil, 37, 37, 28, nil, nil, 28, nil, - 37, 37, 37, nil, nil, nil, nil, nil, nil, 28, - nil, nil, nil, nil, nil, nil, 37, 28, nil, nil, - nil, nil, nil, nil, 37, 37, nil, 53, nil, 28, - 28, 53, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 28, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 28, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 53, - nil, nil, nil, nil, 28, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 28, 28, 28, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 28, 28, 28, - 53, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 28, nil, nil, nil, 53, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 37, nil, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, - 37, 37, 37, 37, 37, 37, 37, 37, nil, nil, - nil, nil, nil, nil, nil, nil, 37, nil, 37, nil, - nil, 28, nil, 37, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 28, 28, nil, nil, nil, - 28, nil, nil, nil, nil, nil, nil, 37, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 28, - 37, nil, nil, nil, nil, nil, nil, nil, nil, 37, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 28, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 28, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 37, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 37, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 37, 37, 37, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 37, - nil, 37, nil, 37, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 37, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 37, 37, 37, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 37, nil, nil, 37, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 37, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 37, nil, 37, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 37, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 37, nil, nil, nil, nil, nil, nil, nil, - 37, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 37, 37, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 37, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 37, nil, nil, nil, - nil, nil, 37, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 37, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 37, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 37, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 37, 37, 37, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 37, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 37, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 37, 37, - nil, nil, nil, 37, nil, nil, nil, nil, nil, nil, - nil, nil, 37, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 37, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 37 ] - -racc_goto_pointer = [ - nil, 100, 83, nil, 34, 12, 61, 16, -300, 632, - -535, -557, -686, nil, 42, 122, 52, 36, 38, 69, - 38, 0, -52, 330, -127, 779, 123, 24, 1149, -12, - nil, 105, nil, -188, 47, -261, -344, 1752, 56, 82, - nil, -11, 55, -263, 594, -260, -16, -60, 0, nil, - 47, -39, -3, 1006, 22, -233, 66, 300, -134, -363, - -328, -231, -276, -368, -130, nil, nil, nil, nil, nil, - nil, nil, 86, 98, 99, nil, 103, -314, -594, -484, - -301, 98, -205, 24, -560, 104, -209, 120, 113, -550, - 114, -551, -411, -724, -415, -184, -660, 122, -410, -188, - -408, -669, 145, -118, -52, -351, -483, -30, -504, -287, - -529, -438, 189, -36, nil, -60, -57, -717, -361, -478, - -592, nil, nil, nil, 153, 152, 43, 155, -152, -292, - 160, -529, -368, -366, nil, -505, nil, -606, nil, -605, - nil, -508, -608, -183, -608, -290, nil, -492, -222, -469, - nil, -757, nil, nil, -464 ] - -racc_goto_default = [ - nil, nil, nil, 3, nil, 4, 353, 279, nil, 538, - nil, 831, nil, 278, nil, nil, nil, 212, 16, 11, - 213, 303, nil, 211, nil, 255, 15, nil, 19, 20, - 21, nil, 25, 691, nil, nil, nil, 26, 29, nil, - 31, 34, 33, nil, 209, 363, nil, 116, 435, 115, - 69, nil, 42, 311, 313, nil, 314, 433, nil, nil, - 635, 486, 253, nil, nil, 269, 43, 44, 45, 46, - 47, 48, 49, nil, 270, 55, nil, nil, nil, nil, - nil, nil, nil, 573, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 326, 325, 709, 328, nil, - 329, 330, nil, nil, 439, nil, nil, nil, nil, nil, - nil, 68, 70, 71, 72, nil, nil, nil, nil, 611, - nil, nil, nil, nil, 395, 750, 753, 758, 755, 756, - 757, 911, nil, nil, 761, 337, 332, 339, nil, 567, - 568, 765, 342, 345, 260 ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 1, 143, :_reduce_none, - 2, 144, :_reduce_2, - 0, 145, :_reduce_3, - 1, 145, :_reduce_4, - 3, 145, :_reduce_5, - 1, 147, :_reduce_none, - 4, 147, :_reduce_7, - 4, 150, :_reduce_8, - 2, 151, :_reduce_9, - 0, 155, :_reduce_10, - 1, 155, :_reduce_11, - 3, 155, :_reduce_12, - 0, 169, :_reduce_13, - 4, 149, :_reduce_14, - 3, 149, :_reduce_15, - 3, 149, :_reduce_none, - 3, 149, :_reduce_17, - 2, 149, :_reduce_18, - 3, 149, :_reduce_19, - 3, 149, :_reduce_20, - 3, 149, :_reduce_21, - 3, 149, :_reduce_22, - 3, 149, :_reduce_23, - 4, 149, :_reduce_none, - 3, 149, :_reduce_25, - 3, 149, :_reduce_26, - 3, 149, :_reduce_27, - 6, 149, :_reduce_none, - 6, 149, :_reduce_none, - 5, 149, :_reduce_30, - 5, 149, :_reduce_none, - 5, 149, :_reduce_none, - 3, 149, :_reduce_none, - 3, 149, :_reduce_34, - 3, 149, :_reduce_35, - 3, 149, :_reduce_36, - 1, 149, :_reduce_none, - 1, 168, :_reduce_none, - 3, 168, :_reduce_39, - 3, 168, :_reduce_40, - 2, 168, :_reduce_41, - 2, 168, :_reduce_42, - 1, 168, :_reduce_none, - 1, 158, :_reduce_none, - 1, 160, :_reduce_none, - 1, 160, :_reduce_none, - 2, 160, :_reduce_47, - 2, 160, :_reduce_48, - 2, 160, :_reduce_49, - 1, 172, :_reduce_none, - 4, 172, :_reduce_none, - 4, 172, :_reduce_none, - 4, 172, :_reduce_none, - 4, 177, :_reduce_none, - 2, 171, :_reduce_55, - 3, 171, :_reduce_none, - 4, 171, :_reduce_57, - 5, 171, :_reduce_none, - 4, 171, :_reduce_59, - 5, 171, :_reduce_none, - 4, 171, :_reduce_61, - 5, 171, :_reduce_none, - 2, 171, :_reduce_63, - 2, 171, :_reduce_64, - 1, 161, :_reduce_65, - 3, 161, :_reduce_66, - 1, 181, :_reduce_67, - 3, 181, :_reduce_68, - 1, 180, :_reduce_69, - 2, 180, :_reduce_70, - 3, 180, :_reduce_71, - 5, 180, :_reduce_none, - 2, 180, :_reduce_73, - 4, 180, :_reduce_none, - 2, 180, :_reduce_75, - 1, 180, :_reduce_76, - 3, 180, :_reduce_none, - 1, 183, :_reduce_78, - 3, 183, :_reduce_79, - 2, 182, :_reduce_80, - 3, 182, :_reduce_81, - 1, 185, :_reduce_none, - 3, 185, :_reduce_none, - 1, 184, :_reduce_84, - 4, 184, :_reduce_85, - 3, 184, :_reduce_86, - 3, 184, :_reduce_none, - 3, 184, :_reduce_none, - 3, 184, :_reduce_none, - 2, 184, :_reduce_none, - 1, 184, :_reduce_none, - 1, 159, :_reduce_92, - 4, 159, :_reduce_93, - 4, 159, :_reduce_94, - 3, 159, :_reduce_95, - 3, 159, :_reduce_96, - 3, 159, :_reduce_97, - 3, 159, :_reduce_98, - 2, 159, :_reduce_99, - 1, 159, :_reduce_none, - 1, 187, :_reduce_none, - 2, 188, :_reduce_102, - 1, 188, :_reduce_103, - 3, 188, :_reduce_104, - 1, 189, :_reduce_none, - 1, 189, :_reduce_none, - 1, 189, :_reduce_none, - 1, 189, :_reduce_108, - 1, 189, :_reduce_109, - 1, 156, :_reduce_110, - 1, 156, :_reduce_none, - 1, 157, :_reduce_112, - 3, 157, :_reduce_113, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 190, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 1, 191, :_reduce_none, - 3, 170, :_reduce_188, - 5, 170, :_reduce_189, - 3, 170, :_reduce_190, - 6, 170, :_reduce_191, - 6, 170, :_reduce_192, - 5, 170, :_reduce_193, - 5, 170, :_reduce_none, - 5, 170, :_reduce_none, - 5, 170, :_reduce_none, - 4, 170, :_reduce_none, - 3, 170, :_reduce_none, - 3, 170, :_reduce_199, - 3, 170, :_reduce_200, - 3, 170, :_reduce_201, - 3, 170, :_reduce_202, - 3, 170, :_reduce_203, - 3, 170, :_reduce_204, - 3, 170, :_reduce_205, - 3, 170, :_reduce_206, - 4, 170, :_reduce_207, - 4, 170, :_reduce_208, - 2, 170, :_reduce_209, - 2, 170, :_reduce_210, - 3, 170, :_reduce_211, - 3, 170, :_reduce_212, - 3, 170, :_reduce_213, - 3, 170, :_reduce_214, - 3, 170, :_reduce_215, - 3, 170, :_reduce_216, - 3, 170, :_reduce_217, - 3, 170, :_reduce_218, - 3, 170, :_reduce_219, - 3, 170, :_reduce_220, - 3, 170, :_reduce_221, - 3, 170, :_reduce_222, - 3, 170, :_reduce_223, - 2, 170, :_reduce_224, - 2, 170, :_reduce_225, - 3, 170, :_reduce_226, - 3, 170, :_reduce_227, - 3, 170, :_reduce_228, - 3, 170, :_reduce_229, - 3, 170, :_reduce_230, - 5, 170, :_reduce_231, - 1, 170, :_reduce_none, - 1, 167, :_reduce_none, - 1, 164, :_reduce_234, - 2, 164, :_reduce_235, - 2, 164, :_reduce_236, - 4, 164, :_reduce_237, - 2, 164, :_reduce_238, - 3, 199, :_reduce_239, - 2, 201, :_reduce_none, - 1, 202, :_reduce_241, - 1, 202, :_reduce_none, - 1, 200, :_reduce_243, - 1, 200, :_reduce_none, - 2, 200, :_reduce_245, - 4, 200, :_reduce_246, - 2, 200, :_reduce_247, - 1, 173, :_reduce_248, - 2, 173, :_reduce_249, - 2, 173, :_reduce_250, - 4, 173, :_reduce_251, - 1, 173, :_reduce_252, - 4, 205, :_reduce_none, - 1, 205, :_reduce_none, - 0, 207, :_reduce_255, - 2, 176, :_reduce_256, - 1, 206, :_reduce_none, - 2, 206, :_reduce_258, - 3, 206, :_reduce_259, - 2, 204, :_reduce_260, - 2, 203, :_reduce_261, - 0, 203, :_reduce_262, - 1, 196, :_reduce_263, - 2, 196, :_reduce_264, - 3, 196, :_reduce_265, - 4, 196, :_reduce_266, - 3, 166, :_reduce_267, - 4, 166, :_reduce_268, - 2, 166, :_reduce_269, - 1, 194, :_reduce_none, - 1, 194, :_reduce_none, - 1, 194, :_reduce_none, - 1, 194, :_reduce_none, - 1, 194, :_reduce_none, - 1, 194, :_reduce_none, - 1, 194, :_reduce_none, - 1, 194, :_reduce_none, - 1, 194, :_reduce_none, - 0, 229, :_reduce_279, - 4, 194, :_reduce_280, - 4, 194, :_reduce_281, - 3, 194, :_reduce_282, - 3, 194, :_reduce_283, - 2, 194, :_reduce_284, - 4, 194, :_reduce_285, - 4, 194, :_reduce_286, - 3, 194, :_reduce_287, - 3, 194, :_reduce_288, - 1, 194, :_reduce_289, - 4, 194, :_reduce_290, - 3, 194, :_reduce_291, - 1, 194, :_reduce_292, - 5, 194, :_reduce_293, - 4, 194, :_reduce_294, - 3, 194, :_reduce_295, - 2, 194, :_reduce_296, - 1, 194, :_reduce_none, - 2, 194, :_reduce_298, - 2, 194, :_reduce_299, - 6, 194, :_reduce_300, - 6, 194, :_reduce_301, - 0, 230, :_reduce_302, - 0, 231, :_reduce_303, - 7, 194, :_reduce_304, - 0, 232, :_reduce_305, - 0, 233, :_reduce_306, - 7, 194, :_reduce_307, - 5, 194, :_reduce_308, - 4, 194, :_reduce_309, - 5, 194, :_reduce_310, - 0, 234, :_reduce_311, - 0, 235, :_reduce_312, - 9, 194, :_reduce_313, - 0, 236, :_reduce_314, - 6, 194, :_reduce_315, - 0, 237, :_reduce_316, - 0, 238, :_reduce_317, - 8, 194, :_reduce_318, - 0, 239, :_reduce_319, - 0, 240, :_reduce_320, - 6, 194, :_reduce_321, - 0, 241, :_reduce_322, - 6, 194, :_reduce_323, - 0, 242, :_reduce_324, - 0, 243, :_reduce_325, - 9, 194, :_reduce_326, - 1, 194, :_reduce_327, - 1, 194, :_reduce_328, - 1, 194, :_reduce_329, - 1, 194, :_reduce_none, - 1, 163, :_reduce_none, - 1, 219, :_reduce_none, - 1, 219, :_reduce_none, - 1, 219, :_reduce_none, - 2, 219, :_reduce_none, - 1, 221, :_reduce_none, - 1, 221, :_reduce_none, - 1, 221, :_reduce_none, - 2, 218, :_reduce_339, - 3, 244, :_reduce_340, - 2, 244, :_reduce_341, - 1, 244, :_reduce_none, - 1, 244, :_reduce_none, - 3, 245, :_reduce_344, - 3, 245, :_reduce_345, - 1, 220, :_reduce_346, - 5, 220, :_reduce_347, - 1, 153, :_reduce_none, - 2, 153, :_reduce_349, - 1, 247, :_reduce_350, - 3, 247, :_reduce_351, - 3, 248, :_reduce_352, - 1, 178, :_reduce_none, - 2, 178, :_reduce_354, - 1, 178, :_reduce_355, - 3, 178, :_reduce_356, - 1, 249, :_reduce_357, - 2, 251, :_reduce_358, - 1, 251, :_reduce_359, - 6, 246, :_reduce_360, - 4, 246, :_reduce_361, - 4, 246, :_reduce_362, - 2, 246, :_reduce_363, - 2, 246, :_reduce_364, - 4, 246, :_reduce_365, - 2, 246, :_reduce_366, - 2, 246, :_reduce_367, - 1, 246, :_reduce_368, - 0, 255, :_reduce_369, - 5, 254, :_reduce_370, - 2, 174, :_reduce_371, - 4, 174, :_reduce_none, - 4, 174, :_reduce_none, - 4, 174, :_reduce_none, - 2, 217, :_reduce_375, - 4, 217, :_reduce_376, - 4, 217, :_reduce_377, - 3, 217, :_reduce_378, - 4, 217, :_reduce_379, - 3, 217, :_reduce_380, - 2, 217, :_reduce_381, - 1, 217, :_reduce_382, - 0, 257, :_reduce_383, - 5, 216, :_reduce_384, - 0, 258, :_reduce_385, - 5, 216, :_reduce_386, - 0, 260, :_reduce_387, - 6, 222, :_reduce_388, - 1, 259, :_reduce_389, - 1, 259, :_reduce_none, - 6, 152, :_reduce_391, - 0, 152, :_reduce_392, - 1, 261, :_reduce_393, - 1, 261, :_reduce_none, - 1, 261, :_reduce_none, - 2, 262, :_reduce_396, - 1, 262, :_reduce_397, - 2, 154, :_reduce_398, - 1, 154, :_reduce_none, - 1, 208, :_reduce_none, - 1, 208, :_reduce_none, - 1, 208, :_reduce_none, - 1, 209, :_reduce_403, - 1, 265, :_reduce_none, - 2, 265, :_reduce_405, - 3, 266, :_reduce_406, - 1, 266, :_reduce_407, - 3, 210, :_reduce_408, - 3, 211, :_reduce_409, - 3, 212, :_reduce_410, - 3, 212, :_reduce_411, - 1, 269, :_reduce_412, - 3, 269, :_reduce_413, - 1, 270, :_reduce_414, - 2, 270, :_reduce_415, - 3, 213, :_reduce_416, - 3, 213, :_reduce_417, - 1, 272, :_reduce_418, - 3, 272, :_reduce_419, - 1, 267, :_reduce_420, - 2, 267, :_reduce_421, - 1, 268, :_reduce_422, - 2, 268, :_reduce_423, - 1, 271, :_reduce_424, - 0, 274, :_reduce_425, - 3, 271, :_reduce_426, - 0, 275, :_reduce_427, - 4, 271, :_reduce_428, - 1, 273, :_reduce_429, - 1, 273, :_reduce_430, - 1, 273, :_reduce_431, - 1, 273, :_reduce_none, - 2, 192, :_reduce_433, - 1, 192, :_reduce_434, - 1, 276, :_reduce_none, - 1, 276, :_reduce_none, - 1, 276, :_reduce_none, - 1, 276, :_reduce_none, - 3, 264, :_reduce_439, - 1, 263, :_reduce_440, - 1, 263, :_reduce_441, - 2, 263, :_reduce_442, - 2, 263, :_reduce_443, - 2, 263, :_reduce_444, - 2, 263, :_reduce_445, - 1, 186, :_reduce_446, - 1, 186, :_reduce_447, - 1, 186, :_reduce_448, - 1, 186, :_reduce_449, - 1, 186, :_reduce_450, - 1, 186, :_reduce_451, - 1, 186, :_reduce_452, - 1, 186, :_reduce_453, - 1, 186, :_reduce_454, - 1, 186, :_reduce_455, - 1, 186, :_reduce_456, - 1, 214, :_reduce_457, - 1, 162, :_reduce_458, - 1, 165, :_reduce_459, - 1, 165, :_reduce_none, - 1, 224, :_reduce_461, - 3, 224, :_reduce_462, - 2, 224, :_reduce_463, - 4, 226, :_reduce_464, - 2, 226, :_reduce_465, - 1, 278, :_reduce_none, - 1, 278, :_reduce_none, - 2, 279, :_reduce_468, - 1, 279, :_reduce_469, - 1, 280, :_reduce_470, - 2, 281, :_reduce_471, - 1, 281, :_reduce_472, - 1, 282, :_reduce_473, - 3, 282, :_reduce_474, - 4, 283, :_reduce_475, - 2, 283, :_reduce_476, - 2, 283, :_reduce_477, - 1, 283, :_reduce_478, - 2, 285, :_reduce_479, - 0, 285, :_reduce_480, - 6, 277, :_reduce_481, - 4, 277, :_reduce_482, - 4, 277, :_reduce_483, - 2, 277, :_reduce_484, - 4, 277, :_reduce_485, - 2, 277, :_reduce_486, - 2, 277, :_reduce_487, - 1, 277, :_reduce_488, - 0, 277, :_reduce_489, - 1, 287, :_reduce_none, - 1, 287, :_reduce_491, - 1, 288, :_reduce_492, - 1, 288, :_reduce_493, - 1, 288, :_reduce_494, - 1, 288, :_reduce_495, - 1, 289, :_reduce_496, - 3, 289, :_reduce_497, - 1, 223, :_reduce_none, - 1, 223, :_reduce_none, - 1, 291, :_reduce_500, - 3, 291, :_reduce_none, - 1, 292, :_reduce_502, - 3, 292, :_reduce_503, - 1, 290, :_reduce_none, - 4, 290, :_reduce_none, - 3, 290, :_reduce_none, - 2, 290, :_reduce_none, - 1, 290, :_reduce_none, - 1, 252, :_reduce_509, - 3, 252, :_reduce_510, - 3, 293, :_reduce_511, - 1, 286, :_reduce_512, - 3, 286, :_reduce_513, - 1, 294, :_reduce_none, - 1, 294, :_reduce_none, - 2, 253, :_reduce_516, - 1, 253, :_reduce_517, - 1, 295, :_reduce_none, - 1, 295, :_reduce_none, - 2, 250, :_reduce_520, - 2, 284, :_reduce_521, - 0, 284, :_reduce_522, - 1, 227, :_reduce_523, - 4, 227, :_reduce_524, - 0, 215, :_reduce_525, - 2, 215, :_reduce_526, - 1, 198, :_reduce_527, - 3, 198, :_reduce_528, - 3, 296, :_reduce_529, - 2, 296, :_reduce_530, - 1, 179, :_reduce_none, - 1, 179, :_reduce_none, - 1, 179, :_reduce_none, - 1, 175, :_reduce_none, - 1, 175, :_reduce_none, - 1, 175, :_reduce_none, - 1, 175, :_reduce_none, - 1, 256, :_reduce_none, - 1, 256, :_reduce_none, - 1, 256, :_reduce_none, - 1, 228, :_reduce_none, - 1, 228, :_reduce_none, - 0, 146, :_reduce_none, - 1, 146, :_reduce_none, - 0, 193, :_reduce_none, - 1, 193, :_reduce_none, - 0, 197, :_reduce_none, - 1, 197, :_reduce_none, - 1, 197, :_reduce_none, - 1, 225, :_reduce_none, - 1, 225, :_reduce_none, - 1, 148, :_reduce_none, - 2, 148, :_reduce_none, - 0, 195, :_reduce_554 ] - -racc_reduce_n = 555 - -racc_shift_n = 968 - -racc_token_table = { - false => 0, - :error => 1, - :kCLASS => 2, - :kMODULE => 3, - :kDEF => 4, - :kUNDEF => 5, - :kBEGIN => 6, - :kRESCUE => 7, - :kENSURE => 8, - :kEND => 9, - :kIF => 10, - :kUNLESS => 11, - :kTHEN => 12, - :kELSIF => 13, - :kELSE => 14, - :kCASE => 15, - :kWHEN => 16, - :kWHILE => 17, - :kUNTIL => 18, - :kFOR => 19, - :kBREAK => 20, - :kNEXT => 21, - :kREDO => 22, - :kRETRY => 23, - :kIN => 24, - :kDO => 25, - :kDO_COND => 26, - :kDO_BLOCK => 27, - :kDO_LAMBDA => 28, - :kRETURN => 29, - :kYIELD => 30, - :kSUPER => 31, - :kSELF => 32, - :kNIL => 33, - :kTRUE => 34, - :kFALSE => 35, - :kAND => 36, - :kOR => 37, - :kNOT => 38, - :kIF_MOD => 39, - :kUNLESS_MOD => 40, - :kWHILE_MOD => 41, - :kUNTIL_MOD => 42, - :kRESCUE_MOD => 43, - :kALIAS => 44, - :kDEFINED => 45, - :klBEGIN => 46, - :klEND => 47, - :k__LINE__ => 48, - :k__FILE__ => 49, - :k__ENCODING__ => 50, - :tIDENTIFIER => 51, - :tFID => 52, - :tGVAR => 53, - :tIVAR => 54, - :tCONSTANT => 55, - :tLABEL => 56, - :tCVAR => 57, - :tNTH_REF => 58, - :tBACK_REF => 59, - :tSTRING_CONTENT => 60, - :tINTEGER => 61, - :tFLOAT => 62, - :tREGEXP_END => 63, - :tUPLUS => 64, - :tUMINUS => 65, - :tUMINUS_NUM => 66, - :tPOW => 67, - :tCMP => 68, - :tEQ => 69, - :tEQQ => 70, - :tNEQ => 71, - :tGEQ => 72, - :tLEQ => 73, - :tANDOP => 74, - :tOROP => 75, - :tMATCH => 76, - :tNMATCH => 77, - :tJSDOT => 78, - :tDOT => 79, - :tDOT2 => 80, - :tDOT3 => 81, - :tAREF => 82, - :tASET => 83, - :tLSHFT => 84, - :tRSHFT => 85, - :tCOLON2 => 86, - :tCOLON3 => 87, - :tOP_ASGN => 88, - :tASSOC => 89, - :tLPAREN => 90, - :tLPAREN2 => 91, - :tRPAREN => 92, - :tLPAREN_ARG => 93, - :ARRAY_BEG => 94, - :tRBRACK => 95, - :tLBRACE => 96, - :tLBRACE_ARG => 97, - :tSTAR => 98, - :tSTAR2 => 99, - :tAMPER => 100, - :tAMPER2 => 101, - :tTILDE => 102, - :tPERCENT => 103, - :tDIVIDE => 104, - :tPLUS => 105, - :tMINUS => 106, - :tLT => 107, - :tGT => 108, - :tPIPE => 109, - :tBANG => 110, - :tCARET => 111, - :tLCURLY => 112, - :tRCURLY => 113, - :tBACK_REF2 => 114, - :tSYMBEG => 115, - :tSTRING_BEG => 116, - :tXSTRING_BEG => 117, - :tREGEXP_BEG => 118, - :tWORDS_BEG => 119, - :tAWORDS_BEG => 120, - :tSTRING_DBEG => 121, - :tSTRING_DVAR => 122, - :tSTRING_END => 123, - :tSTRING => 124, - :tSYMBOL => 125, - :tNL => 126, - :tEH => 127, - :tCOLON => 128, - :tCOMMA => 129, - :tSPACE => 130, - :tSEMI => 131, - :tLAMBDA => 132, - :tLAMBEG => 133, - :tLBRACK2 => 134, - :tLBRACK => 135, - :tJSLBRACK => 136, - :tDSTAR => 137, - :tEQL => 138, - :tLOWEST => 139, - "-@NUM" => 140, - "+@NUM" => 141 } - -racc_nt_base = 142 - -racc_use_result_var = true - -Racc_arg = [ - racc_action_table, - racc_action_check, - racc_action_default, - racc_action_pointer, - racc_goto_table, - racc_goto_check, - racc_goto_default, - racc_goto_pointer, - racc_nt_base, - racc_reduce_table, - racc_token_table, - racc_shift_n, - racc_reduce_n, - racc_use_result_var ] - -Racc_token_to_s_table = [ - "$end", - "error", - "kCLASS", - "kMODULE", - "kDEF", - "kUNDEF", - "kBEGIN", - "kRESCUE", - "kENSURE", - "kEND", - "kIF", - "kUNLESS", - "kTHEN", - "kELSIF", - "kELSE", - "kCASE", - "kWHEN", - "kWHILE", - "kUNTIL", - "kFOR", - "kBREAK", - "kNEXT", - "kREDO", - "kRETRY", - "kIN", - "kDO", - "kDO_COND", - "kDO_BLOCK", - "kDO_LAMBDA", - "kRETURN", - "kYIELD", - "kSUPER", - "kSELF", - "kNIL", - "kTRUE", - "kFALSE", - "kAND", - "kOR", - "kNOT", - "kIF_MOD", - "kUNLESS_MOD", - "kWHILE_MOD", - "kUNTIL_MOD", - "kRESCUE_MOD", - "kALIAS", - "kDEFINED", - "klBEGIN", - "klEND", - "k__LINE__", - "k__FILE__", - "k__ENCODING__", - "tIDENTIFIER", - "tFID", - "tGVAR", - "tIVAR", - "tCONSTANT", - "tLABEL", - "tCVAR", - "tNTH_REF", - "tBACK_REF", - "tSTRING_CONTENT", - "tINTEGER", - "tFLOAT", - "tREGEXP_END", - "tUPLUS", - "tUMINUS", - "tUMINUS_NUM", - "tPOW", - "tCMP", - "tEQ", - "tEQQ", - "tNEQ", - "tGEQ", - "tLEQ", - "tANDOP", - "tOROP", - "tMATCH", - "tNMATCH", - "tJSDOT", - "tDOT", - "tDOT2", - "tDOT3", - "tAREF", - "tASET", - "tLSHFT", - "tRSHFT", - "tCOLON2", - "tCOLON3", - "tOP_ASGN", - "tASSOC", - "tLPAREN", - "tLPAREN2", - "tRPAREN", - "tLPAREN_ARG", - "ARRAY_BEG", - "tRBRACK", - "tLBRACE", - "tLBRACE_ARG", - "tSTAR", - "tSTAR2", - "tAMPER", - "tAMPER2", - "tTILDE", - "tPERCENT", - "tDIVIDE", - "tPLUS", - "tMINUS", - "tLT", - "tGT", - "tPIPE", - "tBANG", - "tCARET", - "tLCURLY", - "tRCURLY", - "tBACK_REF2", - "tSYMBEG", - "tSTRING_BEG", - "tXSTRING_BEG", - "tREGEXP_BEG", - "tWORDS_BEG", - "tAWORDS_BEG", - "tSTRING_DBEG", - "tSTRING_DVAR", - "tSTRING_END", - "tSTRING", - "tSYMBOL", - "tNL", - "tEH", - "tCOLON", - "tCOMMA", - "tSPACE", - "tSEMI", - "tLAMBDA", - "tLAMBEG", - "tLBRACK2", - "tLBRACK", - "tJSLBRACK", - "tDSTAR", - "tEQL", - "tLOWEST", - "\"-@NUM\"", - "\"+@NUM\"", - "$start", - "program", - "top_compstmt", - "top_stmts", - "opt_terms", - "top_stmt", - "terms", - "stmt", - "bodystmt", - "compstmt", - "opt_rescue", - "opt_else", - "opt_ensure", - "stmts", - "fitem", - "undef_list", - "expr_value", - "lhs", - "command_call", - "mlhs", - "var_lhs", - "primary_value", - "aref_args", - "backref", - "mrhs", - "arg_value", - "expr", - "@1", - "arg", - "command", - "block_command", - "call_args", - "block_call", - "operation2", - "command_args", - "cmd_brace_block", - "opt_block_var", - "operation", - "mlhs_basic", - "mlhs_entry", - "mlhs_head", - "mlhs_item", - "mlhs_node", - "mlhs_post", - "variable", - "cname", - "cpath", - "fname", - "op", - "reswords", - "symbol", - "opt_nl", - "primary", - "none", - "args", - "trailer", - "assocs", - "paren_args", - "opt_call_args", - "rparen", - "opt_paren_args", - "opt_block_arg", - "block_arg", - "call_args2", - "open_args", - "@2", - "literal", - "strings", - "xstring", - "regexp", - "words", - "awords", - "var_ref", - "assoc_list", - "brace_block", - "method_call", - "lambda", - "then", - "if_tail", - "do", - "case_body", - "for_var", - "superclass", - "term", - "f_arglist", - "singleton", - "dot_or_colon", - "@3", - "@4", - "@5", - "@6", - "@7", - "@8", - "@9", - "@10", - "@11", - "@12", - "@13", - "@14", - "@15", - "@16", - "@17", - "f_larglist", - "lambda_body", - "block_param", - "f_block_optarg", - "f_block_opt", - "block_args_tail", - "f_block_arg", - "opt_block_args_tail", - "f_arg", - "f_rest_arg", - "do_block", - "@18", - "operation3", - "@19", - "@20", - "cases", - "@21", - "exc_list", - "exc_var", - "numeric", - "dsym", - "string", - "string1", - "string_contents", - "xstring_contents", - "word_list", - "word", - "string_content", - "qword_list", - "string_dvar", - "@22", - "@23", - "sym", - "f_args", - "kwrest_mark", - "f_kwrest", - "f_label", - "f_kw", - "f_kwarg", - "args_tail", - "opt_f_block_arg", - "opt_args_tail", - "f_optarg", - "f_norm_arg", - "f_bad_arg", - "f_arg_item", - "f_margs", - "f_marg", - "f_marg_list", - "f_opt", - "restarg_mark", - "blkarg_mark", - "assoc" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -# reduce 1 omitted - -module_eval(<<'.,.,', 'opal.y', 70) - def _reduce_2(val, _values, result) - result = new_compstmt val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 75) - def _reduce_3(val, _values, result) - result = new_block - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 79) - def _reduce_4(val, _values, result) - result = new_block val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 83) - def _reduce_5(val, _values, result) - val[0] << val[2] - result = val[0] - - result - end -.,., - -# reduce 6 omitted - -module_eval(<<'.,.,', 'opal.y', 90) - def _reduce_7(val, _values, result) - result = val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 95) - def _reduce_8(val, _values, result) - result = new_body(val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 100) - def _reduce_9(val, _values, result) - result = new_compstmt val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 105) - def _reduce_10(val, _values, result) - result = new_block - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 109) - def _reduce_11(val, _values, result) - result = new_block val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 113) - def _reduce_12(val, _values, result) - val[0] << val[2] - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 119) - def _reduce_13(val, _values, result) - lexer.lex_state = :expr_fname - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 123) - def _reduce_14(val, _values, result) - result = new_alias(val[0], val[1], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 127) - def _reduce_15(val, _values, result) - result = s(:valias, value(val[1]).to_sym, value(val[2]).to_sym) - - result - end -.,., - -# reduce 16 omitted - -module_eval(<<'.,.,', 'opal.y', 132) - def _reduce_17(val, _values, result) - result = s(:valias, value(val[1]).to_sym, value(val[2]).to_sym) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 136) - def _reduce_18(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 140) - def _reduce_19(val, _values, result) - result = new_if(val[1], val[2], val[0], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 144) - def _reduce_20(val, _values, result) - result = new_if(val[1], val[2], nil, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 148) - def _reduce_21(val, _values, result) - result = new_while(val[1], val[2], val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 152) - def _reduce_22(val, _values, result) - result = new_until(val[1], val[2], val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 156) - def _reduce_23(val, _values, result) - result = new_rescue_mod(val[1], val[0], val[2]) - - result - end -.,., - -# reduce 24 omitted - -module_eval(<<'.,.,', 'opal.y', 161) - def _reduce_25(val, _values, result) - result = new_assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 165) - def _reduce_26(val, _values, result) - result = s(:masgn, val[0], s(:to_ary, val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 169) - def _reduce_27(val, _values, result) - result = new_op_asgn val[1], val[0], val[2] - - result - end -.,., - -# reduce 28 omitted - -# reduce 29 omitted - -module_eval(<<'.,.,', 'opal.y', 175) - def _reduce_30(val, _values, result) - result = s(:op_asgn2, val[0], op_to_setter(val[2]), value(val[3]).to_sym, val[4]) - - result - end -.,., - -# reduce 31 omitted - -# reduce 32 omitted - -# reduce 33 omitted - -module_eval(<<'.,.,', 'opal.y', 182) - def _reduce_34(val, _values, result) - result = new_assign val[0], val[1], s(:svalue, val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 186) - def _reduce_35(val, _values, result) - result = s(:masgn, val[0], s(:to_ary, val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 190) - def _reduce_36(val, _values, result) - result = s(:masgn, val[0], val[2]) - - result - end -.,., - -# reduce 37 omitted - -# reduce 38 omitted - -module_eval(<<'.,.,', 'opal.y', 197) - def _reduce_39(val, _values, result) - result = s(:and, val[0], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 201) - def _reduce_40(val, _values, result) - result = s(:or, val[0], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 205) - def _reduce_41(val, _values, result) - result = new_unary_call(['!', []], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 209) - def _reduce_42(val, _values, result) - result = new_unary_call(val[0], val[1]) - - result - end -.,., - -# reduce 43 omitted - -# reduce 44 omitted - -# reduce 45 omitted - -# reduce 46 omitted - -module_eval(<<'.,.,', 'opal.y', 219) - def _reduce_47(val, _values, result) - result = new_return(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 223) - def _reduce_48(val, _values, result) - result = new_break(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 227) - def _reduce_49(val, _values, result) - result = new_next(val[0], val[1]) - - result - end -.,., - -# reduce 50 omitted - -# reduce 51 omitted - -# reduce 52 omitted - -# reduce 53 omitted - -# reduce 54 omitted - -module_eval(<<'.,.,', 'opal.y', 239) - def _reduce_55(val, _values, result) - result = new_call(nil, val[0], val[1]) - - result - end -.,., - -# reduce 56 omitted - -module_eval(<<'.,.,', 'opal.y', 244) - def _reduce_57(val, _values, result) - result = new_js_call(val[0], val[2], val[3]) - - result - end -.,., - -# reduce 58 omitted - -module_eval(<<'.,.,', 'opal.y', 249) - def _reduce_59(val, _values, result) - result = new_call(val[0], val[2], val[3]) - - result - end -.,., - -# reduce 60 omitted - -module_eval(<<'.,.,', 'opal.y', 254) - def _reduce_61(val, _values, result) - result = new_call(val[0], val[2], val[3]) - - result - end -.,., - -# reduce 62 omitted - -module_eval(<<'.,.,', 'opal.y', 259) - def _reduce_63(val, _values, result) - result = new_super(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 263) - def _reduce_64(val, _values, result) - result = new_yield val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 268) - def _reduce_65(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 272) - def _reduce_66(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 277) - def _reduce_67(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 281) - def _reduce_68(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 286) - def _reduce_69(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 290) - def _reduce_70(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 294) - def _reduce_71(val, _values, result) - result = val[0] << s(:splat, val[2]) - - result - end -.,., - -# reduce 72 omitted - -module_eval(<<'.,.,', 'opal.y', 299) - def _reduce_73(val, _values, result) - result = val[0] << s(:splat) - - result - end -.,., - -# reduce 74 omitted - -module_eval(<<'.,.,', 'opal.y', 304) - def _reduce_75(val, _values, result) - result = s(:array, s(:splat, val[1])) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 308) - def _reduce_76(val, _values, result) - result = s(:array, s(:splat)) - - result - end -.,., - -# reduce 77 omitted - -module_eval(<<'.,.,', 'opal.y', 314) - def _reduce_78(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 318) - def _reduce_79(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 323) - def _reduce_80(val, _values, result) - result = s(:array, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 327) - def _reduce_81(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -# reduce 82 omitted - -# reduce 83 omitted - -module_eval(<<'.,.,', 'opal.y', 335) - def _reduce_84(val, _values, result) - result = new_assignable val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 339) - def _reduce_85(val, _values, result) - args = val[2] ? val[2] : [] - result = s(:attrasgn, val[0], :[]=, s(:arglist, *args)) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 344) - def _reduce_86(val, _values, result) - result = new_call val[0], val[2], [] - - result - end -.,., - -# reduce 87 omitted - -# reduce 88 omitted - -# reduce 89 omitted - -# reduce 90 omitted - -# reduce 91 omitted - -module_eval(<<'.,.,', 'opal.y', 354) - def _reduce_92(val, _values, result) - result = new_assignable val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 358) - def _reduce_93(val, _values, result) - result = new_js_attrasgn(val[0], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 362) - def _reduce_94(val, _values, result) - result = new_attrasgn(val[0], :[]=, val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 366) - def _reduce_95(val, _values, result) - result = new_attrasgn(val[0], op_to_setter(val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 370) - def _reduce_96(val, _values, result) - result = new_attrasgn(val[0], op_to_setter(val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 374) - def _reduce_97(val, _values, result) - result = new_attrasgn(val[0], op_to_setter(val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 378) - def _reduce_98(val, _values, result) - result = new_colon2(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 382) - def _reduce_99(val, _values, result) - result = new_colon3(val[0], val[1]) - - result - end -.,., - -# reduce 100 omitted - -# reduce 101 omitted - -module_eval(<<'.,.,', 'opal.y', 390) - def _reduce_102(val, _values, result) - result = new_colon3(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 394) - def _reduce_103(val, _values, result) - result = new_const(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 398) - def _reduce_104(val, _values, result) - result = new_colon2(val[0], val[1], val[2]) - - result - end -.,., - -# reduce 105 omitted - -# reduce 106 omitted - -# reduce 107 omitted - -module_eval(<<'.,.,', 'opal.y', 406) - def _reduce_108(val, _values, result) - lexer.lex_state = :expr_end - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 411) - def _reduce_109(val, _values, result) - lexer.lex_state = :expr_end - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 417) - def _reduce_110(val, _values, result) - result = new_sym(val[0]) - - result - end -.,., - -# reduce 111 omitted - -module_eval(<<'.,.,', 'opal.y', 423) - def _reduce_112(val, _values, result) - result = s(:undef, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 427) - def _reduce_113(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -# reduce 114 omitted - -# reduce 115 omitted - -# reduce 116 omitted - -# reduce 117 omitted - -# reduce 118 omitted - -# reduce 119 omitted - -# reduce 120 omitted - -# reduce 121 omitted - -# reduce 122 omitted - -# reduce 123 omitted - -# reduce 124 omitted - -# reduce 125 omitted - -# reduce 126 omitted - -# reduce 127 omitted - -# reduce 128 omitted - -# reduce 129 omitted - -# reduce 130 omitted - -# reduce 131 omitted - -# reduce 132 omitted - -# reduce 133 omitted - -# reduce 134 omitted - -# reduce 135 omitted - -# reduce 136 omitted - -# reduce 137 omitted - -# reduce 138 omitted - -# reduce 139 omitted - -# reduce 140 omitted - -# reduce 141 omitted - -# reduce 142 omitted - -# reduce 143 omitted - -# reduce 144 omitted - -# reduce 145 omitted - -# reduce 146 omitted - -# reduce 147 omitted - -# reduce 148 omitted - -# reduce 149 omitted - -# reduce 150 omitted - -# reduce 151 omitted - -# reduce 152 omitted - -# reduce 153 omitted - -# reduce 154 omitted - -# reduce 155 omitted - -# reduce 156 omitted - -# reduce 157 omitted - -# reduce 158 omitted - -# reduce 159 omitted - -# reduce 160 omitted - -# reduce 161 omitted - -# reduce 162 omitted - -# reduce 163 omitted - -# reduce 164 omitted - -# reduce 165 omitted - -# reduce 166 omitted - -# reduce 167 omitted - -# reduce 168 omitted - -# reduce 169 omitted - -# reduce 170 omitted - -# reduce 171 omitted - -# reduce 172 omitted - -# reduce 173 omitted - -# reduce 174 omitted - -# reduce 175 omitted - -# reduce 176 omitted - -# reduce 177 omitted - -# reduce 178 omitted - -# reduce 179 omitted - -# reduce 180 omitted - -# reduce 181 omitted - -# reduce 182 omitted - -# reduce 183 omitted - -# reduce 184 omitted - -# reduce 185 omitted - -# reduce 186 omitted - -# reduce 187 omitted - -module_eval(<<'.,.,', 'opal.y', 447) - def _reduce_188(val, _values, result) - result = new_assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 451) - def _reduce_189(val, _values, result) - result = new_assign val[0], val[1], s(:rescue_mod, val[2], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 455) - def _reduce_190(val, _values, result) - result = new_op_asgn val[1], val[0], val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 459) - def _reduce_191(val, _values, result) - result = new_op_asgn1(val[0], val[2], val[4], val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 463) - def _reduce_192(val, _values, result) - raise ".JS[...] #{val[4]} is not supported" - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 467) - def _reduce_193(val, _values, result) - result = s(:op_asgn2, val[0], op_to_setter(val[2]), value(val[3]).to_sym, val[4]) - - result - end -.,., - -# reduce 194 omitted - -# reduce 195 omitted - -# reduce 196 omitted - -# reduce 197 omitted - -# reduce 198 omitted - -module_eval(<<'.,.,', 'opal.y', 476) - def _reduce_199(val, _values, result) - result = new_irange(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 480) - def _reduce_200(val, _values, result) - result = new_erange(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 484) - def _reduce_201(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 488) - def _reduce_202(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 492) - def _reduce_203(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 496) - def _reduce_204(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 500) - def _reduce_205(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 504) - def _reduce_206(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 508) - def _reduce_207(val, _values, result) - result = new_call new_binary_call(new_int(val[1]), val[2], val[3]), [:"-@", []], [] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 512) - def _reduce_208(val, _values, result) - result = new_call new_binary_call(new_float(val[1]), val[2], val[3]), [:"-@", []], [] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 516) - def _reduce_209(val, _values, result) - result = new_call val[1], [:"+@", []], [] - if [:int, :float].include? val[1].type - result = val[1] - end - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 523) - def _reduce_210(val, _values, result) - result = new_call val[1], [:"-@", []], [] - if val[1].type == :int - val[1][1] = -val[1][1] - result = val[1] - elsif val[1].type == :float - val[1][1] = -val[1][1].to_f - result = val[1] - end - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 534) - def _reduce_211(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 538) - def _reduce_212(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 542) - def _reduce_213(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 546) - def _reduce_214(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 550) - def _reduce_215(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 554) - def _reduce_216(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 558) - def _reduce_217(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 562) - def _reduce_218(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 566) - def _reduce_219(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 570) - def _reduce_220(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 574) - def _reduce_221(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 578) - def _reduce_222(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 582) - def _reduce_223(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 586) - def _reduce_224(val, _values, result) - result = new_unary_call(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 590) - def _reduce_225(val, _values, result) - result = new_unary_call(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 594) - def _reduce_226(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 598) - def _reduce_227(val, _values, result) - result = new_binary_call(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 602) - def _reduce_228(val, _values, result) - result = new_and(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 606) - def _reduce_229(val, _values, result) - result = new_or(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 610) - def _reduce_230(val, _values, result) - result = s(:defined, val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 614) - def _reduce_231(val, _values, result) - result = new_if(val[1], val[0], val[2], val[4]) - - result - end -.,., - -# reduce 232 omitted - -# reduce 233 omitted - -module_eval(<<'.,.,', 'opal.y', 622) - def _reduce_234(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 626) - def _reduce_235(val, _values, result) - result = [val[0]] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 630) - def _reduce_236(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 634) - def _reduce_237(val, _values, result) - val[0] << s(:hash, *val[2]) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 639) - def _reduce_238(val, _values, result) - result = [s(:hash, *val[0])] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 644) - def _reduce_239(val, _values, result) - result = val[1] - - result - end -.,., - -# reduce 240 omitted - -module_eval(<<'.,.,', 'opal.y', 651) - def _reduce_241(val, _values, result) - result = [] - - result - end -.,., - -# reduce 242 omitted - -module_eval(<<'.,.,', 'opal.y', 657) - def _reduce_243(val, _values, result) - result = [] - - result - end -.,., - -# reduce 244 omitted - -module_eval(<<'.,.,', 'opal.y', 662) - def _reduce_245(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 666) - def _reduce_246(val, _values, result) - result = val[0] - result << new_hash(nil, val[2], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 671) - def _reduce_247(val, _values, result) - result = [new_hash(nil, val[0], nil)] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 676) - def _reduce_248(val, _values, result) - result = [val[0]] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 680) - def _reduce_249(val, _values, result) - result = val[0] - add_block_pass val[0], val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 685) - def _reduce_250(val, _values, result) - result = [new_hash(nil, val[0], nil)] - add_block_pass result, val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 690) - def _reduce_251(val, _values, result) - result = val[0] - result << new_hash(nil, val[2], nil) - result << val[3] if val[3] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 696) - def _reduce_252(val, _values, result) - result = [] - add_block_pass result, val[0] - - result - end -.,., - -# reduce 253 omitted - -# reduce 254 omitted - -module_eval(<<'.,.,', 'opal.y', 704) - def _reduce_255(val, _values, result) - lexer.cmdarg_push 1 - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 708) - def _reduce_256(val, _values, result) - lexer.cmdarg_pop - result = val[1] - - result - end -.,., - -# reduce 257 omitted - -module_eval(<<'.,.,', 'opal.y', 715) - def _reduce_258(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 719) - def _reduce_259(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 724) - def _reduce_260(val, _values, result) - result = new_block_pass(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 729) - def _reduce_261(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 733) - def _reduce_262(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 738) - def _reduce_263(val, _values, result) - result = [val[0]] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 742) - def _reduce_264(val, _values, result) - result = [new_splat(val[0], val[1])] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 746) - def _reduce_265(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 750) - def _reduce_266(val, _values, result) - result = val[0] << new_splat(val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 755) - def _reduce_267(val, _values, result) - val[0] << val[2] - result = s(:array, *val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 760) - def _reduce_268(val, _values, result) - val[0] << s(:splat, val[3]) - result = s(:array, *val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 765) - def _reduce_269(val, _values, result) - result = s(:splat, val[1]) - - result - end -.,., - -# reduce 270 omitted - -# reduce 271 omitted - -# reduce 272 omitted - -# reduce 273 omitted - -# reduce 274 omitted - -# reduce 275 omitted - -# reduce 276 omitted - -# reduce 277 omitted - -# reduce 278 omitted - -module_eval(<<'.,.,', 'opal.y', 779) - def _reduce_279(val, _values, result) - result = lexer.line - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 783) - def _reduce_280(val, _values, result) - result = s(:begin, val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 787) - def _reduce_281(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 791) - def _reduce_282(val, _values, result) - result = new_paren(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 795) - def _reduce_283(val, _values, result) - result = new_colon2(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 799) - def _reduce_284(val, _values, result) - result = new_colon3(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 803) - def _reduce_285(val, _values, result) - result = new_call val[0], [:[], []], val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 807) - def _reduce_286(val, _values, result) - result = new_js_call val[0], [:[], []], val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 811) - def _reduce_287(val, _values, result) - result = new_array(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 815) - def _reduce_288(val, _values, result) - result = new_hash(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 819) - def _reduce_289(val, _values, result) - result = new_return(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 823) - def _reduce_290(val, _values, result) - result = new_yield val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 827) - def _reduce_291(val, _values, result) - result = s(:yield) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 831) - def _reduce_292(val, _values, result) - result = s(:yield) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 835) - def _reduce_293(val, _values, result) - result = s(:defined, val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 839) - def _reduce_294(val, _values, result) - result = new_unary_call(['!', []], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 843) - def _reduce_295(val, _values, result) - result = new_unary_call(['!', []], new_nil(val[0])) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 847) - def _reduce_296(val, _values, result) - result = new_call(nil, val[0], []) - result << val[1] - - result - end -.,., - -# reduce 297 omitted - -module_eval(<<'.,.,', 'opal.y', 853) - def _reduce_298(val, _values, result) - val[0] << val[1] - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 858) - def _reduce_299(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 862) - def _reduce_300(val, _values, result) - result = new_if(val[0], val[1], val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 866) - def _reduce_301(val, _values, result) - result = new_if(val[0], val[1], val[4], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 870) - def _reduce_302(val, _values, result) - lexer.cond_push 1 - result = lexer.line - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 875) - def _reduce_303(val, _values, result) - lexer.cond_pop - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 879) - def _reduce_304(val, _values, result) - result = s(:while, val[2], val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 883) - def _reduce_305(val, _values, result) - lexer.cond_push 1 - result = lexer.line - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 888) - def _reduce_306(val, _values, result) - lexer.cond_pop - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 892) - def _reduce_307(val, _values, result) - result = s(:until, val[2], val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 896) - def _reduce_308(val, _values, result) - result = s(:case, val[1], *val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 900) - def _reduce_309(val, _values, result) - result = s(:case, nil, *val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 904) - def _reduce_310(val, _values, result) - result = s(:case, nil, val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 908) - def _reduce_311(val, _values, result) - lexer.cond_push 1 - result = lexer.line - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 913) - def _reduce_312(val, _values, result) - lexer.cond_pop - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 917) - def _reduce_313(val, _values, result) - result = s(:for, val[4], val[1], val[7]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 921) - def _reduce_314(val, _values, result) - # ... - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 925) - def _reduce_315(val, _values, result) - result = new_class val[0], val[1], val[2], val[4], val[5] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 929) - def _reduce_316(val, _values, result) - result = lexer.line - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 933) - def _reduce_317(val, _values, result) - # ... - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 937) - def _reduce_318(val, _values, result) - result = new_sclass(val[0], val[3], val[6], val[7]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 941) - def _reduce_319(val, _values, result) - result = lexer.line - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 945) - def _reduce_320(val, _values, result) - # ... - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 949) - def _reduce_321(val, _values, result) - result = new_module(val[0], val[2], val[4], val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 953) - def _reduce_322(val, _values, result) - push_scope - lexer.lex_state = :expr_endfn - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 958) - def _reduce_323(val, _values, result) - result = new_def(val[0], nil, val[1], val[3], val[4], val[5]) - pop_scope - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 963) - def _reduce_324(val, _values, result) - lexer.lex_state = :expr_fname - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 967) - def _reduce_325(val, _values, result) - push_scope - lexer.lex_state = :expr_endfn - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 972) - def _reduce_326(val, _values, result) - result = new_def(val[0], val[1], val[4], val[6], val[7], val[8]) - pop_scope - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 977) - def _reduce_327(val, _values, result) - result = new_break(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 981) - def _reduce_328(val, _values, result) - result = s(:next) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 985) - def _reduce_329(val, _values, result) - result = s(:redo) - - result - end -.,., - -# reduce 330 omitted - -# reduce 331 omitted - -# reduce 332 omitted - -# reduce 333 omitted - -# reduce 334 omitted - -# reduce 335 omitted - -# reduce 336 omitted - -# reduce 337 omitted - -# reduce 338 omitted - -module_eval(<<'.,.,', 'opal.y', 1002) - def _reduce_339(val, _values, result) - result = new_call nil, [:lambda, []], [] - result << new_iter(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1008) - def _reduce_340(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1012) - def _reduce_341(val, _values, result) - result = nil - - result - end -.,., - -# reduce 342 omitted - -# reduce 343 omitted - -module_eval(<<'.,.,', 'opal.y', 1019) - def _reduce_344(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1023) - def _reduce_345(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1028) - def _reduce_346(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1032) - def _reduce_347(val, _values, result) - result = new_if(val[0], val[1], val[3], val[4]) - - result - end -.,., - -# reduce 348 omitted - -module_eval(<<'.,.,', 'opal.y', 1038) - def _reduce_349(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1043) - def _reduce_350(val, _values, result) - result = s(:block, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1047) - def _reduce_351(val, _values, result) - val[0] << val[2] - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1053) - def _reduce_352(val, _values, result) - result = new_assign(new_assignable(new_ident( - val[0])), val[1], val[2]) - - result - end -.,., - -# reduce 353 omitted - -module_eval(<<'.,.,', 'opal.y', 1060) - def _reduce_354(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1064) - def _reduce_355(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1068) - def _reduce_356(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1073) - def _reduce_357(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1078) - def _reduce_358(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1082) - def _reduce_359(val, _values, result) - nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1087) - def _reduce_360(val, _values, result) - result = new_block_args(val[0], val[2], val[4], val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1091) - def _reduce_361(val, _values, result) - result = new_block_args(val[0], val[2], nil, val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1095) - def _reduce_362(val, _values, result) - result = new_block_args(val[0], nil, val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1099) - def _reduce_363(val, _values, result) - result = new_block_args(val[0], nil, nil, nil) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1103) - def _reduce_364(val, _values, result) - result = new_block_args(val[0], nil, nil, val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1107) - def _reduce_365(val, _values, result) - result = new_block_args(nil, val[0], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1111) - def _reduce_366(val, _values, result) - result = new_block_args(nil, val[0], nil, val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1115) - def _reduce_367(val, _values, result) - result = new_block_args(nil, nil, val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1119) - def _reduce_368(val, _values, result) - result = new_block_args(nil, nil, nil, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1124) - def _reduce_369(val, _values, result) - push_scope :block - result = lexer.line - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1129) - def _reduce_370(val, _values, result) - result = new_iter val[2], val[3] - pop_scope - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1135) - def _reduce_371(val, _values, result) - val[0] << val[1] - result = val[0] - - result - end -.,., - -# reduce 372 omitted - -# reduce 373 omitted - -# reduce 374 omitted - -module_eval(<<'.,.,', 'opal.y', 1144) - def _reduce_375(val, _values, result) - result = new_call(nil, val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1148) - def _reduce_376(val, _values, result) - result = new_call(val[0], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1152) - def _reduce_377(val, _values, result) - result = new_js_call(val[0], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1156) - def _reduce_378(val, _values, result) - result = new_call(val[0], [:call, []], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1160) - def _reduce_379(val, _values, result) - result = new_call(val[0], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1164) - def _reduce_380(val, _values, result) - result = new_call(val[0], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1168) - def _reduce_381(val, _values, result) - result = new_super(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1172) - def _reduce_382(val, _values, result) - result = new_super(val[0], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1177) - def _reduce_383(val, _values, result) - push_scope :block - result = lexer.line - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1182) - def _reduce_384(val, _values, result) - result = new_iter val[2], val[3] - pop_scope - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1187) - def _reduce_385(val, _values, result) - push_scope :block - result = lexer.line - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1192) - def _reduce_386(val, _values, result) - result = new_iter val[2], val[3] - pop_scope - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1198) - def _reduce_387(val, _values, result) - result = lexer.line - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1202) - def _reduce_388(val, _values, result) - part = s(:when, s(:array, *val[2]), val[4]) - result = [part] - result.push(*val[5]) if val[5] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1209) - def _reduce_389(val, _values, result) - result = [val[0]] - - result - end -.,., - -# reduce 390 omitted - -module_eval(<<'.,.,', 'opal.y', 1215) - def _reduce_391(val, _values, result) - exc = val[1] || s(:array) - exc << new_assign(val[2], val[2], s(:gvar, '$!'.intern)) if val[2] - result = [s(:resbody, exc, val[4])] - result.push val[5].first if val[5] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1222) - def _reduce_392(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1227) - def _reduce_393(val, _values, result) - result = s(:array, val[0]) - - result - end -.,., - -# reduce 394 omitted - -# reduce 395 omitted - -module_eval(<<'.,.,', 'opal.y', 1234) - def _reduce_396(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1238) - def _reduce_397(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1243) - def _reduce_398(val, _values, result) - result = val[1].nil? ? s(:nil) : val[1] - - result - end -.,., - -# reduce 399 omitted - -# reduce 400 omitted - -# reduce 401 omitted - -# reduce 402 omitted - -module_eval(<<'.,.,', 'opal.y', 1253) - def _reduce_403(val, _values, result) - result = new_str val[0] - - result - end -.,., - -# reduce 404 omitted - -module_eval(<<'.,.,', 'opal.y', 1259) - def _reduce_405(val, _values, result) - result = str_append val[0], val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1264) - def _reduce_406(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1268) - def _reduce_407(val, _values, result) - result = s(:str, value(val[0])) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1273) - def _reduce_408(val, _values, result) - result = new_xstr(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1278) - def _reduce_409(val, _values, result) - result = new_regexp val[1], val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1283) - def _reduce_410(val, _values, result) - result = s(:array) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1287) - def _reduce_411(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1292) - def _reduce_412(val, _values, result) - result = s(:array) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1296) - def _reduce_413(val, _values, result) - part = val[1] - part = s(:dstr, "", val[1]) if part.type == :evstr - result = val[0] << part - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1303) - def _reduce_414(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1307) - def _reduce_415(val, _values, result) - result = val[0].concat([val[1]]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1312) - def _reduce_416(val, _values, result) - result = s(:array) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1316) - def _reduce_417(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1321) - def _reduce_418(val, _values, result) - result = s(:array) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1325) - def _reduce_419(val, _values, result) - result = val[0] << s(:str, value(val[1])) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1330) - def _reduce_420(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1334) - def _reduce_421(val, _values, result) - result = str_append val[0], val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1339) - def _reduce_422(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1343) - def _reduce_423(val, _values, result) - result = str_append val[0], val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1348) - def _reduce_424(val, _values, result) - result = new_str_content(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1352) - def _reduce_425(val, _values, result) - result = lexer.strterm - lexer.strterm = nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1357) - def _reduce_426(val, _values, result) - lexer.strterm = val[1] - result = new_evstr(val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1362) - def _reduce_427(val, _values, result) - lexer.cond_push 0 - lexer.cmdarg_push 0 - result = lexer.strterm - lexer.strterm = nil - lexer.lex_state = :expr_beg - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1370) - def _reduce_428(val, _values, result) - lexer.strterm = val[1] - lexer.cond_lexpop - lexer.cmdarg_lexpop - result = new_evstr(val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1378) - def _reduce_429(val, _values, result) - result = new_gvar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1382) - def _reduce_430(val, _values, result) - result = new_ivar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1386) - def _reduce_431(val, _values, result) - result = new_cvar(val[0]) - - result - end -.,., - -# reduce 432 omitted - -module_eval(<<'.,.,', 'opal.y', 1393) - def _reduce_433(val, _values, result) - result = new_sym(val[1]) - lexer.lex_state = :expr_end - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1398) - def _reduce_434(val, _values, result) - result = new_sym(val[0]) - - result - end -.,., - -# reduce 435 omitted - -# reduce 436 omitted - -# reduce 437 omitted - -# reduce 438 omitted - -module_eval(<<'.,.,', 'opal.y', 1408) - def _reduce_439(val, _values, result) - result = new_dsym val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1413) - def _reduce_440(val, _values, result) - result = new_int(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1417) - def _reduce_441(val, _values, result) - result = new_float(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1421) - def _reduce_442(val, _values, result) - result = negate_num(new_int(val[1])) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1425) - def _reduce_443(val, _values, result) - result = negate_num(new_float(val[1])) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1429) - def _reduce_444(val, _values, result) - result = new_int(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1433) - def _reduce_445(val, _values, result) - result = new_float(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1438) - def _reduce_446(val, _values, result) - result = new_ident(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1442) - def _reduce_447(val, _values, result) - result = new_ivar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1446) - def _reduce_448(val, _values, result) - result = new_gvar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1450) - def _reduce_449(val, _values, result) - result = new_const(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1454) - def _reduce_450(val, _values, result) - result = new_cvar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1458) - def _reduce_451(val, _values, result) - result = new_nil(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1462) - def _reduce_452(val, _values, result) - result = new_self(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1466) - def _reduce_453(val, _values, result) - result = new_true(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1470) - def _reduce_454(val, _values, result) - result = new_false(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1474) - def _reduce_455(val, _values, result) - result = new___FILE__(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1478) - def _reduce_456(val, _values, result) - result = new___LINE__(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1483) - def _reduce_457(val, _values, result) - result = new_var_ref(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1488) - def _reduce_458(val, _values, result) - result = new_assignable val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1493) - def _reduce_459(val, _values, result) - result = s(:nth_ref, value(val[0])) - - result - end -.,., - -# reduce 460 omitted - -module_eval(<<'.,.,', 'opal.y', 1499) - def _reduce_461(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1503) - def _reduce_462(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1507) - def _reduce_463(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1512) - def _reduce_464(val, _values, result) - result = val[1] - lexer.lex_state = :expr_beg - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1517) - def _reduce_465(val, _values, result) - result = val[0] - lexer.lex_state = :expr_beg - - result - end -.,., - -# reduce 466 omitted - -# reduce 467 omitted - -module_eval(<<'.,.,', 'opal.y', 1526) - def _reduce_468(val, _values, result) - result = new_kwrestarg(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1530) - def _reduce_469(val, _values, result) - result = new_kwrestarg() - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1535) - def _reduce_470(val, _values, result) - result = new_sym(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1540) - def _reduce_471(val, _values, result) - result = new_kwoptarg(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1544) - def _reduce_472(val, _values, result) - result = new_kwarg(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1549) - def _reduce_473(val, _values, result) - result = [val[0]] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1553) - def _reduce_474(val, _values, result) - result = val[0] - result << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1559) - def _reduce_475(val, _values, result) - result = new_args_tail(val[0], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1563) - def _reduce_476(val, _values, result) - result = new_args_tail(val[0], nil, val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1567) - def _reduce_477(val, _values, result) - result = new_args_tail(nil, val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1571) - def _reduce_478(val, _values, result) - result = new_args_tail(nil, nil, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1576) - def _reduce_479(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1580) - def _reduce_480(val, _values, result) - result = new_args_tail(nil, nil, nil) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1585) - def _reduce_481(val, _values, result) - result = new_args(val[0], val[2], val[4], val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1589) - def _reduce_482(val, _values, result) - result = new_args(val[0], val[2], nil, val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1593) - def _reduce_483(val, _values, result) - result = new_args(val[0], nil, val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1597) - def _reduce_484(val, _values, result) - result = new_args(val[0], nil, nil, val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1601) - def _reduce_485(val, _values, result) - result = new_args(nil, val[0], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1605) - def _reduce_486(val, _values, result) - result = new_args(nil, val[0], nil, val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1609) - def _reduce_487(val, _values, result) - result = new_args(nil, nil, val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1613) - def _reduce_488(val, _values, result) - result = new_args(nil, nil, nil, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1617) - def _reduce_489(val, _values, result) - result = new_args(nil, nil, nil, nil) - - result - end -.,., - -# reduce 490 omitted - -module_eval(<<'.,.,', 'opal.y', 1623) - def _reduce_491(val, _values, result) - result = value(val[0]).to_sym - scope.add_local result - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1629) - def _reduce_492(val, _values, result) - raise 'formal argument cannot be a constant' - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1633) - def _reduce_493(val, _values, result) - raise 'formal argument cannot be an instance variable' - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1637) - def _reduce_494(val, _values, result) - raise 'formal argument cannot be a class variable' - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1641) - def _reduce_495(val, _values, result) - raise 'formal argument cannot be a global variable' - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1646) - def _reduce_496(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1650) - def _reduce_497(val, _values, result) - result = val[1] - - result - end -.,., - -# reduce 498 omitted - -# reduce 499 omitted - -module_eval(<<'.,.,', 'opal.y', 1658) - def _reduce_500(val, _values, result) - result = s(:lasgn, val[0]) - - result - end -.,., - -# reduce 501 omitted - -module_eval(<<'.,.,', 'opal.y', 1664) - def _reduce_502(val, _values, result) - result = s(:array, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1668) - def _reduce_503(val, _values, result) - val[0] << val[2] - result = val[0] - - result - end -.,., - -# reduce 504 omitted - -# reduce 505 omitted - -# reduce 506 omitted - -# reduce 507 omitted - -# reduce 508 omitted - -module_eval(<<'.,.,', 'opal.y', 1680) - def _reduce_509(val, _values, result) - result = [val[0]] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1684) - def _reduce_510(val, _values, result) - val[0] << val[2] - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1690) - def _reduce_511(val, _values, result) - result = new_assign(new_assignable(new_ident(val[0])), val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1695) - def _reduce_512(val, _values, result) - result = s(:block, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1699) - def _reduce_513(val, _values, result) - result = val[0] - val[0] << val[2] - - result - end -.,., - -# reduce 514 omitted - -# reduce 515 omitted - -module_eval(<<'.,.,', 'opal.y', 1708) - def _reduce_516(val, _values, result) - result = "*#{value(val[1])}".to_sym - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1712) - def _reduce_517(val, _values, result) - result = :"*" - - result - end -.,., - -# reduce 518 omitted - -# reduce 519 omitted - -module_eval(<<'.,.,', 'opal.y', 1720) - def _reduce_520(val, _values, result) - result = "&#{value(val[1])}".to_sym - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1725) - def _reduce_521(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1729) - def _reduce_522(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1734) - def _reduce_523(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1738) - def _reduce_524(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1743) - def _reduce_525(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1747) - def _reduce_526(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1752) - def _reduce_527(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1756) - def _reduce_528(val, _values, result) - result = val[0].push(*val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1761) - def _reduce_529(val, _values, result) - result = [val[0], val[2]] - - result - end -.,., - -module_eval(<<'.,.,', 'opal.y', 1765) - def _reduce_530(val, _values, result) - result = [new_sym(val[0]), val[1]] - - result - end -.,., - -# reduce 531 omitted - -# reduce 532 omitted - -# reduce 533 omitted - -# reduce 534 omitted - -# reduce 535 omitted - -# reduce 536 omitted - -# reduce 537 omitted - -# reduce 538 omitted - -# reduce 539 omitted - -# reduce 540 omitted - -# reduce 541 omitted - -# reduce 542 omitted - -# reduce 543 omitted - -# reduce 544 omitted - -# reduce 545 omitted - -# reduce 546 omitted - -# reduce 547 omitted - -# reduce 548 omitted - -# reduce 549 omitted - -# reduce 550 omitted - -# reduce 551 omitted - -# reduce 552 omitted - -# reduce 553 omitted - -module_eval(<<'.,.,', 'opal.y', 1802) - def _reduce_554(val, _values, result) - result = nil - - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser -end # module Opal diff --git a/test/racc/regress/php_serialization b/test/racc/regress/php_serialization deleted file mode 100644 index e412db1cc8..0000000000 --- a/test/racc/regress/php_serialization +++ /dev/null @@ -1,336 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' - -require 'php_serialization/tokenizer' - -module PhpSerialization - class Unserializer < Racc::Parser - -module_eval(<<'...end php_serialization.y/module_eval...', 'php_serialization.y', 84) - def initialize(tokenizer_klass = Tokenizer) - @tokenizer_klass = tokenizer_klass - end - - def run(string) - @tokenizer = @tokenizer_klass.new(string) - yyparse(@tokenizer, :each) - return @object - ensure - @tokenizer = nil - end - - def next_token - @tokenizer.next_token - end -...end php_serialization.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - 9, 10, 16, 17, 11, 12, 13, 18, 14, 9, - 10, 15, 19, 11, 12, 13, 20, 14, 21, 46, - 15, 9, 10, 22, 23, 11, 12, 13, 24, 14, - 9, 10, 15, 25, 11, 12, 13, 26, 14, 27, - 51, 15, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 43, 47, 49 ] - -racc_action_check = [ - 0, 0, 1, 2, 0, 0, 0, 3, 0, 42, - 42, 0, 4, 42, 42, 42, 5, 42, 6, 42, - 42, 45, 45, 10, 11, 45, 45, 45, 12, 45, - 50, 50, 45, 13, 50, 50, 50, 14, 50, 15, - 50, 50, 16, 22, 23, 24, 25, 26, 27, 32, - 33, 34, 35, 36, 37, 39, 41, 43, 47 ] - -racc_action_pointer = [ - -3, 2, 1, 5, 10, 14, 16, nil, nil, nil, - 18, 19, 23, 28, 32, 34, 42, nil, nil, nil, - nil, nil, 37, 38, 39, 40, 41, 42, nil, nil, - nil, nil, 44, 45, 46, 42, 43, 42, nil, 50, - nil, 50, 6, 52, nil, 18, nil, 46, nil, nil, - 27, nil ] - -racc_action_default = [ - -18, -18, -18, -18, -18, -18, -18, -6, -7, -8, - -18, -18, -18, -18, -18, -18, -18, -1, -2, -3, - -4, -5, -18, -18, -18, -18, -18, -18, 52, -9, - -10, -11, -18, -18, -18, -18, -18, -18, -12, -18, - -15, -18, -18, -18, -14, -18, -17, -18, -16, -15, - -18, -13 ] - -racc_goto_table = [ - 1, 42, nil, nil, nil, nil, nil, nil, nil, nil, - 50, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 48 ] - -racc_goto_check = [ - 1, 9, nil, nil, nil, nil, nil, nil, nil, nil, - 9, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 1 ] - -racc_goto_pointer = [ - nil, 0, nil, nil, nil, nil, nil, nil, nil, -39, - nil ] - -racc_goto_default = [ - nil, 45, 2, 3, 4, 5, 6, 7, 8, nil, - 44 ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 2, 16, :_reduce_1, - 2, 16, :_reduce_2, - 2, 16, :_reduce_3, - 2, 16, :_reduce_4, - 2, 16, :_reduce_5, - 1, 16, :_reduce_6, - 1, 16, :_reduce_7, - 1, 17, :_reduce_8, - 3, 18, :_reduce_9, - 3, 19, :_reduce_10, - 3, 20, :_reduce_11, - 5, 21, :_reduce_12, - 11, 23, :_reduce_13, - 2, 24, :_reduce_14, - 0, 24, :_reduce_15, - 2, 25, :_reduce_16, - 7, 22, :_reduce_17 ] - -racc_reduce_n = 18 - -racc_shift_n = 52 - -racc_token_table = { - false => 0, - :error => 1, - ";" => 2, - "N" => 3, - "b" => 4, - ":" => 5, - :NUMBER => 6, - "i" => 7, - "d" => 8, - "s" => 9, - :STRING => 10, - "O" => 11, - "{" => 12, - "}" => 13, - "a" => 14 } - -racc_nt_base = 15 - -racc_use_result_var = true - -Racc_arg = [ - racc_action_table, - racc_action_check, - racc_action_default, - racc_action_pointer, - racc_goto_table, - racc_goto_check, - racc_goto_default, - racc_goto_pointer, - racc_nt_base, - racc_reduce_table, - racc_token_table, - racc_shift_n, - racc_reduce_n, - racc_use_result_var ] - -Racc_token_to_s_table = [ - "$end", - "error", - "\";\"", - "\"N\"", - "\"b\"", - "\":\"", - "NUMBER", - "\"i\"", - "\"d\"", - "\"s\"", - "STRING", - "\"O\"", - "\"{\"", - "\"}\"", - "\"a\"", - "$start", - "data", - "null", - "bool", - "integer", - "double", - "string", - "assoc_array", - "object", - "attribute_list", - "attribute" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'php_serialization.y', 6) - def _reduce_1(val, _values, result) - @object = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 7) - def _reduce_2(val, _values, result) - @object = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 8) - def _reduce_3(val, _values, result) - @object = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 9) - def _reduce_4(val, _values, result) - @object = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 10) - def _reduce_5(val, _values, result) - @object = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 11) - def _reduce_6(val, _values, result) - @object = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 12) - def _reduce_7(val, _values, result) - @object = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 15) - def _reduce_8(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 18) - def _reduce_9(val, _values, result) - result = Integer(val[2]) > 0 - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 21) - def _reduce_10(val, _values, result) - result = Integer(val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 24) - def _reduce_11(val, _values, result) - result = Float(val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 27) - def _reduce_12(val, _values, result) - result = val[4] - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 32) - def _reduce_13(val, _values, result) - if eval("defined?(#{val[4]})") - result = Object.const_get(val[4]).new - - val[9].each do |(attr_name, value)| - # Protected and private attributes will have a \0..\0 prefix - attr_name = attr_name.gsub(/\A\\0[^\\]+\\0/, '') - result.instance_variable_set("@#{attr_name}", value) - end - else - klass_name = val[4].gsub(/^Struct::/, '') - attr_names, values = [], [] - - val[9].each do |(attr_name, value)| - # Protected and private attributes will have a \0..\0 prefix - attr_names << attr_name.gsub(/\A\\0[^\\]+\\0/, '') - values << value - end - - result = Struct.new(klass_name, *attr_names).new(*values) - result.instance_variable_set("@_php_class", klass_name) - end - - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 56) - def _reduce_14(val, _values, result) - result = val[0] << val[1] - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 57) - def _reduce_15(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 60) - def _reduce_16(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'php_serialization.y', 65) - def _reduce_17(val, _values, result) - # Checks if the keys are a sequence of integers - idx = -1 - arr = val[5].all? { |(k,v)| k == (idx += 1) } - - if arr - result = val[5].map { |(k,v)| v } - else - result = Hash[val[5]] - end - - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Unserializer -end # module PhpSerialization diff --git a/test/racc/regress/riml b/test/racc/regress/riml deleted file mode 100644 index 5882a431cf..0000000000 --- a/test/racc/regress/riml +++ /dev/null @@ -1,4037 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.2 -# from Racc grammar file "". -# - -require 'racc/parser.rb' - - require File.expand_path("../lexer", __FILE__) - require File.expand_path("../nodes", __FILE__) - require File.expand_path("../errors", __FILE__) - require File.expand_path("../ast_rewriter", __FILE__) -module Riml - class Parser < Racc::Parser - -module_eval(<<'...end riml.y/module_eval...', 'riml.y', 592) - # This code will be put as-is in the parser class - - attr_accessor :ast_rewriter - attr_writer :options - - # The Parser and AST_Rewriter share this same hash of options - def options - @options ||= {} - end - - def self.ast_cache - @ast_cache - end - @ast_cache = {} - - # parses tokens or code into output nodes - def parse(object, ast_rewriter = Riml::AST_Rewriter.new, filename = nil, included = false) - if (ast = self.class.ast_cache[filename]) - else - if tokens?(object) - @tokens = object - elsif code?(object) - @lexer = Riml::Lexer.new(object, filename, true) - end - - begin - ast = do_parse - rescue Racc::ParseError => e - raise unless @lexer - if (invalid_token = @lexer.prev_token_is_keyword?) - warning = "#{invalid_token.inspect} is a keyword, and cannot " \ - "be used as a variable name" - end - error_msg = e.message - error_msg << "\nWARNING: #{warning}" if warning - error = Riml::ParseError.new(error_msg, @lexer.filename, @lexer.lineno) - raise error - end - self.class.ast_cache[filename] = ast if filename - end - @ast_rewriter ||= ast_rewriter - return ast unless @ast_rewriter - @ast_rewriter.ast = ast.dup - @ast_rewriter.options ||= options - @ast_rewriter.rewrite(filename, included) - @ast_rewriter.ast - end - - # get the next token from either the list of tokens provided, or - # the lexer getting the next token - def next_token - return @tokens.shift unless @lexer - token = @lexer.next_token - if token && @lexer.parser_info - @current_parser_info = token.pop - end - token - end - - private - - def tokens?(object) - Array === object - end - - def code?(object) - String === object - end - - def make_node(racc_val) - node = yield racc_val - node.parser_info = @current_parser_info - node - end -...end riml.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - 135, 265, 60, 139, 136, 211, 417, 418, 48, 47, - 411, 211, 448, 274, 146, 56, 199, 89, 272, 60, - 273, 270, 409, 271, 37, 46, 48, 47, 37, 49, - 44, 45, 392, 412, 37, 449, 384, 60, 50, 70, - 316, 61, 386, 385, 317, 62, 63, 129, 130, 132, - 127, 128, 131, 115, 116, 117, 121, 122, 123, 118, - 119, 120, 124, 125, 126, 102, 104, 103, 109, 111, - 110, 112, 114, 113, 106, 108, 107, 133, 134, 101, - 100, 137, 171, 80, 38, 173, 37, 81, 38, 82, - 85, 83, 84, 87, 38, 105, 86, 37, 75, 76, - 153, 152, 57, 56, 88, 89, 77, 37, 90, 58, - 59, 78, 37, 46, 48, 47, 91, 49, 44, 45, - 64, 72, 73, -116, 161, 60, 50, 70, 79, 61, - 272, 37, 92, 62, 63, 271, 48, 47, -178, -178, - -178, -178, 211, 147, 211, 211, 38, 60, -43, -43, - 153, 152, 329, 409, 99, 409, 409, 38, 331, 153, - 152, -42, -42, 161, 60, 50, 70, 38, 139, 313, - 29, 313, 38, 52, 80, 54, 164, 277, 81, 277, - 82, 85, 83, 84, 87, 279, 279, 86, 149, 75, - 76, 38, 182, 57, 56, 88, 89, 77, 149, 90, - 58, 59, 78, 37, 46, 48, 47, 91, 49, 44, - 45, 64, 72, 73, -116, 164, 60, 50, 70, 79, - 61, 164, 60, 164, 62, 63, -204, 277, 149, 164, - 279, 164, -203, 305, 149, 366, 141, 164, 164, -44, - -44, 129, 130, 132, -85, -85, -85, -85, 142, -48, - -48, -116, 258, 60, 50, 70, -99, -98, 60, 50, - 70, 29, 149, 38, 52, 80, 54, 371, 149, 81, - 52, 82, 85, 83, 84, 87, 149, 139, 86, 164, - 75, 76, 164, 139, 57, 56, 88, 89, 77, 105, - 90, 58, 59, 78, 37, 46, 48, 47, 91, 49, - 44, 45, 64, 72, 73, -99, -98, 60, 50, 70, - 79, 61, -46, -46, 370, 62, 63, -175, -175, -175, - -175, 139, 129, 130, 132, -47, -47, -45, -45, 433, - 195, 432, 129, 130, 132, 127, 128, 131, 115, 116, - 117, 121, 122, 123, 118, 119, 120, 124, 125, 126, - 164, 354, 29, 211, 38, 52, 80, 54, 153, 152, - 81, 60, 82, 85, 83, 84, 87, 149, 60, 86, - 105, 75, 76, 417, 437, 57, 56, 88, 89, 77, - 105, 90, 58, 59, 78, 215, 46, 48, 47, 91, - 49, 44, 45, 64, 72, 73, -116, 216, 60, 50, - 70, 79, 61, 139, 218, 319, 62, 63, -175, -175, - -175, -175, -178, -178, -178, -178, 211, 147, 48, 47, - 211, 49, 48, 47, 262, 49, -176, -176, -176, -176, - 263, 320, 191, 192, 193, 194, 267, 129, 130, 132, - 127, 128, 131, 29, 269, 269, 52, 269, 54, 129, - 130, 132, 127, 128, 131, 115, 116, 117, 121, 122, - 123, 118, 119, 120, 124, 125, 126, 102, 104, 103, - 109, 111, 110, 112, 114, 113, 106, 108, 107, 133, - 134, 101, 100, 137, 323, 105, 258, 276, 294, 295, - 149, 139, 302, 305, 306, 105, 139, 105, 312, 326, - 327, 328, 333, 105, 105, 105, 342, 346, 357, 361, - 320, 258, 362, 363, 60, 129, 130, 132, 127, 128, - 131, 129, 130, 132, 127, 128, 131, 368, 129, 130, - 132, 127, 128, 131, 115, 116, 117, 121, 122, 123, - 118, 119, 120, 124, 125, 126, 102, 104, 103, 109, - 111, 110, 112, 114, 113, 106, 108, 107, 133, 134, - 101, 100, 137, 105, 80, 129, 130, 132, 81, 105, - 82, 85, 83, 84, 87, 374, 105, 86, 377, 75, - 76, 379, 380, 57, 56, 88, 89, 77, 393, 90, - 58, 59, 78, 37, 46, 48, 47, 91, 49, 44, - 45, 64, 72, 73, -116, 302, 60, 50, 70, 79, - 61, 394, 397, 105, 62, 63, 269, 258, 129, 130, - 132, 127, 128, 131, 115, 116, 117, 121, 122, 123, - 118, 119, 120, 124, 125, 126, 102, 104, 103, 109, - 111, 110, 112, 114, 113, 106, 108, 107, 133, 134, - 101, 29, 400, 38, 52, 80, 54, 401, 402, 81, - -245, 82, 85, 83, 84, 87, 105, 403, 86, 406, - 75, 76, 60, 211, 57, 56, 88, 89, 77, 211, - 90, 58, 59, 78, 37, 46, 48, 47, 91, 49, - 44, 45, 64, 72, 73, 427, 60, 60, 50, 70, - 79, 61, 430, 431, 434, 62, 63, 435, 438, 129, - 130, 132, 127, 128, 131, 115, 116, 117, 121, 122, - 123, 118, 119, 120, 124, 125, 126, 102, 104, 103, - 109, 111, 110, 112, 114, 113, 106, 108, 107, 133, - 134, 440, 29, 441, 38, 52, 80, 54, 442, 443, - 81, 211, 82, 85, 83, 84, 87, 105, 445, 86, - 446, 75, 76, 371, 371, 57, 56, 88, 89, 77, - 211, 90, 58, 59, 78, 37, 46, 48, 47, 91, - 49, 44, 45, 64, 72, 73, 458, 435, 60, 50, - 70, 79, 61, 462, 463, 371, 62, 63, 465, 468, - 129, 130, 132, 127, 128, 131, 115, 116, 117, 121, - 122, 123, 118, 119, 120, 124, 125, 126, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 129, - 130, 132, nil, 29, nil, 38, 52, 80, 54, nil, - nil, 81, nil, 82, 85, 83, 84, 87, 105, nil, - 86, nil, 75, 76, nil, nil, 57, 56, 88, 89, - 77, nil, 90, 58, 59, 78, 37, 46, 48, 47, - 91, 49, 44, 45, 64, 72, 73, 105, nil, 60, - 50, 70, 79, 61, nil, nil, nil, 62, 63, nil, - nil, 129, 130, 132, 127, 128, 131, 115, 116, 117, - 121, 122, 123, 118, 119, 120, 124, 125, 126, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 129, 130, 132, nil, 29, nil, 38, 52, 80, 54, - nil, nil, 81, nil, 82, 85, 83, 84, 87, 105, - nil, 86, nil, 75, 76, nil, nil, 57, 56, 88, - 89, 77, nil, 90, 58, 59, 78, 37, 46, 48, - 47, 91, 49, 44, 45, 64, 72, 73, 105, nil, - 60, 50, 70, 79, 61, nil, nil, nil, 62, 63, - 414, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 29, nil, 38, 52, nil, - 54, nil, 129, 130, 132, 127, 128, 131, 115, 116, - 117, 121, 122, 123, 118, 119, 120, 124, 125, 126, - 102, 104, 103, 109, 111, 110, 112, 114, 113, 106, - 108, 107, 133, 134, 101, 100, 137, 419, nil, nil, - nil, nil, nil, nil, nil, nil, 146, 56, nil, 89, - 105, nil, 90, nil, nil, nil, nil, 46, 48, 47, - nil, 49, 44, 45, 64, nil, nil, nil, nil, 60, - 50, 70, nil, 61, nil, nil, nil, 62, 63, 129, - 130, 132, 127, 128, 131, 115, 116, 117, 121, 122, - 123, 118, 119, 120, 124, 125, 126, 102, 104, 103, - 109, 111, 110, 112, 114, 113, 106, 108, 107, 133, - 134, 101, 100, 137, 29, nil, nil, 52, nil, 54, - nil, 261, 146, 56, nil, 89, nil, 105, 90, nil, - nil, nil, nil, 46, 48, 47, nil, 49, 44, 45, - 64, nil, nil, nil, nil, 60, 50, 70, nil, 61, - nil, nil, nil, 62, 63, 180, 146, 56, nil, 89, - nil, nil, 90, nil, nil, nil, nil, 46, 48, 47, - nil, 49, 44, 45, 64, nil, nil, -116, nil, 60, - 50, 70, nil, 61, nil, nil, nil, 62, 63, nil, - 29, nil, nil, 52, nil, 54, nil, 261, nil, 129, - 130, 132, 127, 128, 131, 115, 116, 117, 121, 122, - 123, 118, 119, 120, 124, 125, 126, nil, 180, 146, - 56, nil, 89, nil, 176, 90, nil, 52, nil, 54, - 46, 48, 47, nil, 49, 44, 45, 64, nil, nil, - nil, nil, 60, 50, 70, nil, 61, 105, nil, nil, - 62, 63, 180, 146, 56, nil, 89, nil, nil, 90, - nil, nil, nil, nil, 46, 48, 47, nil, 49, 44, - 45, 64, nil, nil, nil, nil, 60, 50, 70, nil, - 61, nil, nil, nil, 62, 63, nil, 29, -119, nil, - 52, nil, 54, nil, nil, 129, 130, 132, 127, 128, - 131, 115, 116, 117, 121, 122, 123, 118, 119, 120, - 124, 125, 126, nil, nil, nil, 180, 146, 56, nil, - 89, 29, -119, 90, 52, nil, 54, nil, 46, 48, - 47, nil, 49, 44, 45, 64, nil, nil, nil, nil, - 60, 50, 70, 105, 61, nil, nil, nil, 62, 63, - 180, 146, 56, nil, 89, nil, nil, 90, nil, nil, - nil, nil, 46, 48, 47, nil, 49, 44, 45, 64, - nil, nil, nil, nil, 60, 50, 70, nil, 61, nil, - nil, nil, 62, 63, nil, 29, -119, nil, 52, nil, - 54, nil, nil, 129, 130, 132, 127, 128, 131, 115, - 116, 117, 121, 122, 123, 118, 119, 120, 124, 125, - 126, nil, nil, nil, 180, 146, 56, nil, 89, 29, - -119, 90, 52, nil, 54, nil, 46, 48, 47, nil, - 49, 44, 45, 64, nil, nil, nil, nil, 60, 50, - 70, 105, 61, nil, nil, nil, 62, 63, 180, 146, - 56, nil, 89, nil, nil, 90, nil, nil, nil, nil, - 46, 48, 47, nil, 49, 44, 45, 64, nil, nil, - nil, nil, 60, 50, 70, nil, 61, nil, nil, nil, - 62, 63, nil, 29, -121, nil, 52, nil, 54, nil, - nil, 129, 130, 132, 127, 128, 131, 115, 116, 117, - 121, 122, 123, 118, 119, 120, 124, 125, 126, nil, - nil, nil, nil, 146, 56, nil, 89, 29, -119, 90, - 52, nil, 54, nil, 46, 48, 47, nil, 49, 44, - 45, 64, nil, nil, nil, nil, 60, 50, 70, 105, - 61, nil, nil, nil, 62, 63, 180, 146, 56, nil, - 89, nil, nil, 90, nil, nil, nil, nil, 46, 48, - 47, nil, 49, 44, 45, 64, nil, nil, nil, nil, - 60, 50, 70, nil, 61, nil, nil, nil, 62, 63, - nil, 29, nil, nil, 52, nil, 54, 350, nil, 129, - 130, 132, 127, 128, 131, 115, 116, 117, 121, 122, - 123, 118, 119, 120, 124, 125, 126, nil, nil, nil, - 180, 146, 56, nil, 89, 29, -119, 90, 52, nil, - 54, nil, 46, 48, 47, nil, 49, 44, 45, 64, - nil, nil, nil, nil, 60, 50, 70, 105, 61, nil, - nil, nil, 62, 63, 365, 146, 56, nil, 89, nil, - nil, 90, nil, nil, nil, nil, 46, 48, 47, nil, - 49, 44, 45, 64, nil, nil, nil, nil, 60, 50, - 70, nil, 61, nil, nil, nil, 62, 63, nil, 29, - -119, nil, 52, nil, 54, nil, 129, 130, 132, 127, - 128, 131, 115, 116, 117, 121, 122, 123, 118, 119, - 120, 124, 125, 126, nil, nil, nil, 180, 146, 56, - nil, 89, nil, 29, 90, nil, 52, nil, 54, 46, - 48, 47, nil, 49, 44, 45, 64, nil, nil, nil, - nil, 60, 50, 70, 105, 61, nil, nil, nil, 62, - 63, 180, 146, 56, nil, 89, nil, nil, 90, nil, - nil, nil, nil, 46, 48, 47, nil, 49, 44, 45, - 64, nil, nil, nil, nil, 60, 50, 70, nil, 61, - nil, nil, nil, 62, 63, nil, 29, -119, nil, 52, - nil, 54, nil, nil, 129, 130, 132, 127, 128, 131, - 115, 116, 117, 121, 122, 123, 118, 119, 120, 124, - 125, 126, nil, nil, nil, nil, 146, 56, nil, 89, - 29, -119, 90, 52, nil, 54, nil, 46, 48, 47, - nil, 49, 44, 45, 64, nil, nil, nil, nil, 60, - 50, 70, 105, 61, nil, nil, nil, 62, 63, 146, - 56, nil, 89, nil, nil, 90, nil, nil, nil, nil, - 46, 48, 47, nil, 49, 44, 45, 64, nil, nil, - -116, nil, 60, 50, 70, nil, 61, nil, nil, nil, - 62, 63, 146, 56, 29, 89, nil, 52, 90, 54, - nil, nil, nil, 46, 48, 47, nil, 49, 44, 45, - 64, nil, nil, -116, nil, 60, 50, 70, nil, 61, - nil, nil, nil, 62, 63, 146, 56, 29, 89, nil, - 52, 90, 54, nil, nil, 167, 46, 48, 47, nil, - 49, 44, 45, 64, nil, nil, nil, nil, 60, 50, - 70, nil, 61, nil, nil, nil, 62, 63, 146, 56, - 29, 89, nil, 52, 90, 54, nil, nil, nil, 46, - 48, 47, nil, 49, 44, 45, 64, nil, nil, nil, - nil, 60, 50, 70, nil, 61, nil, nil, nil, 62, - 63, 146, 56, 165, 89, nil, 52, 90, 54, nil, - nil, nil, 46, 48, 47, nil, 49, 44, 45, 64, - nil, nil, nil, nil, 60, 50, 70, nil, 61, nil, - nil, nil, 62, 63, 146, 56, 29, 89, nil, 52, - 90, 54, nil, nil, nil, 46, 48, 47, nil, 49, - 44, 45, 64, nil, nil, nil, nil, 60, 50, 70, - nil, 61, nil, nil, nil, 62, 63, 146, 56, 29, - 89, nil, 52, 90, 54, nil, nil, nil, 46, 48, - 47, nil, 49, 44, 45, 64, nil, nil, -116, nil, - 60, 50, 70, nil, 61, nil, nil, nil, 62, 63, - 146, 56, 29, 89, nil, 52, 90, 54, nil, nil, - nil, 46, 48, 47, nil, 49, 44, 45, 64, nil, - nil, nil, nil, 60, 50, 70, nil, 61, nil, nil, - nil, 62, 63, 146, 56, 29, 89, nil, 52, 90, - 54, nil, nil, nil, 46, 48, 47, nil, 49, 44, - 45, 64, nil, nil, nil, nil, 60, 50, 70, nil, - 61, nil, nil, nil, 62, 63, 146, 56, 29, 89, - nil, 52, 90, 54, nil, nil, nil, 46, 48, 47, - nil, 49, 44, 45, 64, nil, nil, nil, nil, 60, - 50, 70, nil, 61, nil, nil, nil, 62, 63, 146, - 56, 29, 89, nil, 52, 90, 54, nil, nil, nil, - 46, 48, 47, nil, 49, 44, 45, 64, nil, nil, - nil, nil, 60, 50, 70, nil, 61, nil, nil, nil, - 62, 63, 146, 56, 29, 89, nil, 52, 90, 54, - nil, nil, nil, 46, 48, 47, nil, 49, 44, 45, - 64, nil, nil, nil, nil, 60, 50, 70, nil, 61, - nil, nil, nil, 62, 63, 146, 56, 29, 89, nil, - 52, 90, 54, nil, nil, nil, 46, 48, 47, nil, - 49, 44, 45, 64, nil, nil, nil, nil, 60, 50, - 70, nil, 61, nil, nil, nil, 62, 63, 146, 56, - 29, 89, nil, 52, 90, 54, nil, nil, nil, 46, - 48, 47, nil, 49, 44, 45, 64, nil, nil, nil, - nil, 60, 50, 70, nil, 61, nil, nil, nil, 62, - 63, 146, 56, 29, 89, nil, 52, 90, 54, nil, - nil, nil, 46, 48, 47, nil, 49, 44, 45, 64, - nil, nil, nil, nil, 60, 50, 70, nil, 61, nil, - nil, nil, 62, 63, 146, 56, 29, 89, nil, 52, - 90, 54, nil, nil, nil, 46, 48, 47, nil, 49, - 44, 45, 64, nil, nil, nil, nil, 60, 50, 70, - nil, 61, nil, nil, nil, 62, 63, 146, 56, 29, - 89, nil, 52, 90, 54, nil, nil, nil, 46, 48, - 47, nil, 49, 44, 45, 64, nil, nil, nil, nil, - 60, 50, 70, nil, 61, nil, nil, nil, 62, 63, - 146, 56, 29, 89, nil, 52, 90, 54, nil, nil, - nil, 46, 48, 47, nil, 49, 44, 45, 64, nil, - nil, nil, nil, 60, 50, 70, nil, 61, nil, nil, - nil, 62, 63, 146, 56, 29, 89, nil, 52, 90, - 54, nil, nil, nil, 46, 48, 47, nil, 49, 44, - 45, 64, nil, nil, nil, nil, 60, 50, 70, nil, - 61, nil, nil, nil, 62, 63, 146, 56, 29, 89, - nil, 52, 90, 54, nil, nil, nil, 46, 48, 47, - nil, 49, 44, 45, 64, nil, nil, nil, nil, 60, - 50, 70, nil, 61, nil, nil, nil, 62, 63, 146, - 56, 29, 89, nil, 52, 90, 54, nil, nil, nil, - 46, 48, 47, nil, 49, 44, 45, 64, nil, nil, - nil, nil, 60, 50, 70, nil, 61, nil, nil, nil, - 62, 63, 146, 56, 29, 89, nil, 52, 90, 54, - nil, nil, nil, 46, 48, 47, nil, 49, 44, 45, - 64, nil, nil, nil, nil, 60, 50, 70, nil, 61, - nil, nil, nil, 62, 63, 146, 56, 29, 89, nil, - 52, 90, 54, nil, nil, nil, 46, 48, 47, nil, - 49, 44, 45, 64, nil, nil, nil, nil, 60, 50, - 70, nil, 61, nil, nil, nil, 62, 63, 146, 56, - 29, 89, nil, 52, 90, 54, nil, nil, nil, 46, - 48, 47, nil, 49, 44, 45, 64, nil, nil, nil, - nil, 60, 50, 70, nil, 61, nil, nil, nil, 62, - 63, 146, 56, 29, 89, nil, 52, 90, 54, nil, - nil, nil, 46, 48, 47, nil, 49, 44, 45, 64, - nil, nil, nil, nil, 60, 50, 70, nil, 61, nil, - nil, nil, 62, 63, 146, 56, 29, 89, nil, 52, - 90, 54, nil, nil, nil, 46, 48, 47, nil, 49, - 44, 45, 64, nil, nil, nil, nil, 60, 50, 70, - nil, 61, nil, nil, nil, 62, 63, 146, 56, 29, - 89, nil, 52, 90, 54, nil, nil, nil, 46, 48, - 47, nil, 49, 44, 45, 64, nil, nil, nil, nil, - 60, 50, 70, nil, 61, nil, nil, nil, 62, 63, - 146, 56, 29, 89, nil, 52, 90, 54, nil, nil, - nil, 46, 48, 47, nil, 49, 44, 45, 64, nil, - nil, nil, nil, 60, 50, 70, nil, 61, nil, nil, - nil, 62, 63, 146, 56, 29, 89, nil, 52, 90, - 54, nil, nil, nil, 46, 48, 47, nil, 49, 44, - 45, 64, nil, nil, nil, nil, 60, 50, 70, nil, - 61, nil, nil, nil, 62, 63, 146, 56, 29, 89, - nil, 52, 90, 54, nil, nil, nil, 46, 48, 47, - nil, 49, 44, 45, 64, nil, nil, nil, nil, 60, - 50, 70, nil, 61, nil, nil, nil, 62, 63, 146, - 56, 29, 89, nil, 52, 90, 54, nil, nil, nil, - 46, 48, 47, nil, 49, 44, 45, 64, nil, nil, - nil, nil, 60, 50, 70, nil, 61, nil, nil, nil, - 62, 63, 146, 56, 29, 89, nil, 52, 90, 54, - nil, nil, nil, 46, 48, 47, nil, 49, 44, 45, - 64, nil, nil, nil, nil, 60, 50, 70, nil, 61, - nil, nil, nil, 62, 63, 146, 56, 29, 89, nil, - 52, 90, 54, nil, nil, nil, 46, 48, 47, nil, - 49, 44, 45, 64, nil, nil, nil, nil, 60, 50, - 70, nil, 61, nil, nil, nil, 62, 63, 146, 56, - 29, 89, nil, 52, 90, 54, nil, nil, nil, 46, - 48, 47, nil, 49, 44, 45, 64, nil, nil, nil, - nil, 60, 50, 70, nil, 61, nil, nil, nil, 62, - 63, 146, 56, 29, 89, nil, 52, 90, 54, nil, - nil, nil, 46, 48, 47, nil, 49, 44, 45, 64, - nil, nil, nil, nil, 60, 50, 70, nil, 61, nil, - nil, nil, 62, 63, 146, 56, 29, 89, nil, 52, - 90, 54, nil, nil, nil, 46, 48, 47, nil, 49, - 44, 45, 64, nil, nil, nil, nil, 60, 50, 70, - nil, 61, nil, nil, nil, 62, 63, 146, 56, 29, - 89, nil, 52, 90, 54, nil, nil, nil, 46, 48, - 47, nil, 49, 44, 45, 64, nil, nil, nil, nil, - 60, 50, 70, nil, 61, nil, nil, nil, 62, 63, - 146, 56, 29, 89, nil, 52, 90, 54, nil, nil, - nil, 46, 48, 47, nil, 49, 44, 45, 64, nil, - nil, nil, nil, 60, 50, 70, nil, 61, nil, nil, - nil, 62, 63, 146, 56, 29, 89, nil, 52, 90, - 54, nil, nil, nil, 46, 48, 47, nil, 49, 44, - 45, 64, nil, nil, nil, nil, 60, 50, 70, nil, - 61, nil, nil, nil, 62, 63, 146, 56, 29, 89, - nil, 52, 90, 54, nil, nil, nil, 46, 48, 47, - nil, 49, 44, 45, 64, nil, nil, nil, nil, 60, - 50, 70, nil, 61, nil, nil, nil, 62, 63, 146, - 56, 29, 89, nil, 52, 90, 54, nil, nil, nil, - 46, 48, 47, nil, 49, 44, 45, 64, nil, nil, - nil, nil, 60, 50, 70, nil, 61, nil, nil, nil, - 62, 63, 146, 56, 29, 89, nil, 52, 90, 54, - nil, nil, nil, 46, 48, 47, nil, 49, 44, 45, - 64, nil, nil, nil, nil, 60, 50, 70, nil, 61, - nil, nil, nil, 62, 63, 146, 56, 29, 89, nil, - 52, 90, 54, nil, nil, nil, 46, 48, 47, nil, - 49, 44, 45, 64, nil, nil, nil, nil, 60, 50, - 70, nil, 61, nil, nil, nil, 62, 63, 146, 56, - 29, 89, nil, 52, 90, 54, nil, nil, nil, 46, - 48, 47, nil, 49, 44, 45, 64, nil, nil, nil, - nil, 60, 50, 70, nil, 61, nil, nil, nil, 62, - 63, 146, 56, 29, 89, nil, 52, 90, 54, nil, - nil, nil, 46, 48, 47, nil, 49, 44, 45, 64, - nil, nil, nil, nil, 60, 50, 70, nil, 61, nil, - nil, nil, 62, 63, 146, 56, 29, 89, nil, 52, - 90, 54, nil, nil, nil, 46, 48, 47, nil, 49, - 44, 45, 64, nil, nil, nil, nil, 60, 50, 70, - nil, 61, nil, nil, nil, 62, 63, 146, 56, 29, - 89, nil, 52, 90, 54, nil, nil, nil, 46, 48, - 47, nil, 49, 44, 45, 64, nil, nil, nil, nil, - 60, 50, 70, nil, 61, nil, nil, nil, 62, 63, - 146, 56, 29, 89, nil, 52, 90, 54, nil, nil, - nil, 46, 48, 47, nil, 49, 44, 45, 64, nil, - nil, nil, nil, 60, 50, 70, nil, 61, nil, nil, - nil, 62, 63, 146, 56, 29, 89, nil, 52, 90, - 54, nil, nil, nil, 46, 48, 47, nil, 49, 44, - 45, 64, nil, nil, nil, nil, 60, 50, 70, nil, - 61, nil, nil, nil, 62, 63, 146, 56, 29, 89, - nil, 52, 90, 54, nil, nil, nil, 46, 48, 47, - nil, 49, 44, 45, 64, nil, nil, nil, nil, 60, - 50, 70, nil, 61, nil, nil, nil, 62, 63, 146, - 56, 29, 89, nil, 52, 90, 54, nil, nil, nil, - 46, 48, 47, nil, 49, 44, 45, 64, nil, nil, - -116, nil, 60, 50, 70, nil, 61, nil, nil, nil, - 62, 63, 146, 56, 29, 89, nil, 52, 90, 288, - nil, nil, nil, 46, 48, 47, nil, 49, 44, 45, - 64, nil, nil, nil, nil, 60, 50, 70, nil, 61, - nil, nil, nil, 62, 63, 146, 56, 29, 89, nil, - 52, 90, 54, nil, nil, nil, 46, 48, 47, nil, - 49, 44, 45, 64, nil, nil, nil, nil, 60, 50, - 70, nil, 61, nil, nil, nil, 62, 63, 146, 56, - 29, 89, nil, 52, 90, 54, nil, nil, nil, 46, - 48, 47, nil, 49, 44, 45, 64, nil, nil, nil, - nil, 60, 50, 70, nil, 61, nil, nil, nil, 62, - 63, 146, 56, 29, 89, nil, 52, 90, 54, nil, - nil, nil, 46, 48, 47, nil, 49, 44, 45, 64, - nil, nil, nil, nil, 60, 50, 70, nil, 61, nil, - nil, nil, 62, 63, 146, 56, 29, 89, nil, 52, - 90, 54, nil, nil, nil, 46, 48, 47, nil, 49, - 44, 45, 64, nil, nil, nil, nil, 60, 50, 70, - nil, 61, nil, nil, nil, 62, 63, 146, 56, 29, - 89, nil, 52, 90, 54, nil, nil, nil, 46, 48, - 47, nil, 49, 44, 45, 64, nil, nil, nil, nil, - 60, 50, 70, nil, 61, nil, nil, nil, 62, 63, - 146, 56, 29, 89, nil, 52, 90, 54, nil, nil, - nil, 46, 48, 47, nil, 49, 44, 45, 64, nil, - nil, -116, nil, 60, 50, 70, nil, 61, nil, nil, - nil, 62, 63, 146, 56, 29, 89, nil, 52, 90, - 54, nil, nil, nil, 46, 48, 47, nil, 49, 44, - 45, 64, nil, nil, nil, nil, 60, 50, 70, nil, - 61, nil, nil, nil, 62, 63, 146, 56, 29, 89, - nil, 52, 90, 54, nil, nil, nil, 46, 48, 47, - nil, 49, 44, 45, 64, nil, nil, nil, nil, 60, - 50, 70, nil, 61, nil, nil, nil, 62, 63, 146, - 56, 29, 89, nil, 52, 90, 54, nil, nil, nil, - 46, 48, 47, nil, 49, 44, 45, 64, nil, nil, - nil, nil, 60, 50, 70, nil, 61, nil, nil, nil, - 62, 63, nil, nil, 29, nil, nil, 52, 348, 54, - 129, 130, 132, 127, 128, 131, 115, 116, 117, 121, - 122, 123, 118, 119, 120, 124, 125, 126, nil, nil, - nil, nil, 146, 56, nil, 89, nil, 29, 90, nil, - 52, nil, 54, 46, 48, 47, nil, 49, 44, 45, - 64, nil, nil, -116, nil, 60, 50, 70, 105, 61, - nil, nil, nil, 62, 63, 146, 56, nil, 89, nil, - nil, 90, nil, nil, nil, nil, 46, 48, 47, nil, - 49, 44, 45, 64, nil, nil, nil, nil, 60, 50, - 70, nil, 61, nil, nil, nil, 62, 63, 146, 56, - 29, 89, nil, 52, 90, 288, nil, nil, nil, 46, - 48, 47, nil, 49, 44, 45, 64, nil, nil, nil, - nil, 60, 50, 70, nil, 61, nil, nil, nil, 62, - 63, 146, 56, 29, 89, nil, 52, 90, 54, nil, - nil, nil, 46, 48, 47, nil, 49, 44, 45, 64, - nil, nil, nil, nil, 60, 50, 70, nil, 61, nil, - nil, nil, 62, 63, 146, 56, 29, 89, nil, 52, - 90, 54, nil, nil, nil, 46, 48, 47, nil, 49, - 44, 45, 64, nil, nil, nil, nil, 60, 50, 70, - nil, 61, nil, nil, nil, 62, 63, 146, 56, 29, - 89, nil, 52, 90, 54, nil, nil, nil, 46, 48, - 47, nil, 49, 44, 45, 64, nil, nil, nil, nil, - 60, 50, 70, nil, 61, nil, nil, nil, 62, 63, - 146, 56, 29, 89, nil, 52, 90, 54, nil, nil, - nil, 46, 48, 47, nil, 49, 44, 45, 64, nil, - nil, nil, nil, 60, 50, 70, nil, 61, nil, nil, - nil, 62, 63, 146, 56, 29, 89, nil, 52, 90, - 54, nil, nil, nil, 46, 48, 47, nil, 49, 44, - 45, 64, nil, nil, nil, nil, 60, 50, 70, nil, - 61, nil, nil, nil, 62, 63, 146, 56, 29, 89, - nil, 52, 90, 54, nil, nil, nil, 46, 48, 47, - nil, 49, 44, 45, 64, nil, nil, nil, nil, 60, - 50, 70, nil, 61, nil, nil, nil, 62, 63, 146, - 56, 29, 89, nil, 52, 90, 54, nil, nil, nil, - 46, 48, 47, nil, 49, 44, 45, 64, nil, nil, - nil, nil, 60, 50, 70, nil, 61, nil, nil, nil, - 62, 63, 146, 56, 29, 89, nil, 52, 90, 54, - nil, nil, nil, 46, 48, 47, nil, 49, 44, 45, - 64, nil, nil, nil, nil, 60, 50, 70, nil, 61, - nil, nil, nil, 62, 63, 146, 56, 29, 89, nil, - 52, 90, 54, nil, nil, nil, 46, 48, 47, nil, - 49, 44, 45, 64, nil, nil, -116, nil, 60, 50, - 70, nil, 61, nil, nil, nil, 62, 63, 146, 56, - 29, 89, nil, 52, 90, 54, nil, nil, nil, 46, - 48, 47, nil, 49, 44, 45, 64, nil, nil, nil, - nil, 60, 50, 70, nil, 61, nil, nil, nil, 62, - 63, 146, 56, 29, 89, nil, 52, 90, 54, nil, - nil, nil, 46, 48, 47, nil, 49, 44, 45, 64, - nil, nil, nil, nil, 60, 50, 70, nil, 61, nil, - nil, nil, 62, 63, 146, 56, 29, 89, nil, 52, - 90, 54, nil, nil, nil, 46, 48, 47, nil, 49, - 44, 45, 64, nil, nil, nil, nil, 60, 50, 70, - nil, 61, nil, nil, nil, 62, 63, 146, 56, 29, - 89, nil, 52, 90, 54, nil, nil, nil, 46, 48, - 47, nil, 49, 44, 45, 64, nil, nil, nil, nil, - 60, 50, 70, nil, 61, nil, nil, nil, 62, 63, - 146, 56, 29, 89, nil, 52, nil, 54, nil, nil, - nil, 46, 48, 47, nil, 49, 44, 45, nil, nil, - nil, nil, nil, 60, 50, 70, nil, 61, nil, nil, - nil, 62, 63, 146, 56, 29, 89, nil, 52, nil, - 54, nil, nil, nil, 46, 48, 47, nil, 49, 44, - 45, 64, nil, nil, nil, nil, 60, 50, 70, nil, - 61, nil, nil, nil, 62, 63, 146, 56, 188, 89, - nil, 52, nil, nil, nil, nil, nil, 46, 48, 47, - nil, 49, 44, 45, 64, nil, nil, nil, nil, 60, - 50, 70, nil, 61, nil, nil, nil, 62, 63, nil, - nil, 188, nil, nil, 52, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 211, nil, nil, nil, nil, nil, 129, 130, 132, 127, - 128, 131, nil, nil, 188, nil, nil, 52, 129, 130, - 132, 127, 128, 131, 115, 116, 117, 121, 122, 123, - 118, 119, 120, 124, 125, 126, 102, 104, 103, 109, - 111, 110, 112, 114, 113, 106, 108, 107, 133, 134, - 101, 100, 137, 211, 105, nil, nil, nil, nil, 129, - 130, 132, 127, 128, 131, nil, 105, nil, nil, nil, - nil, 129, 130, 132, 127, 128, 131, 115, 116, 117, - 121, 122, 123, 118, 119, 120, 124, 125, 126, 102, - 104, 103, 109, 111, 110, 112, 114, 113, 106, 108, - 107, 133, 134, 101, 100, 137, 211, 105, nil, nil, - nil, nil, 129, 130, 132, 127, 128, 131, nil, 105, - nil, nil, nil, nil, 129, 130, 132, 127, 128, 131, - 115, 116, 117, 121, 122, 123, 118, 119, 120, 124, - 125, 126, 102, 104, 103, 109, 111, 110, 112, 114, - 113, 106, 108, 107, 133, 134, 101, 100, 137, 211, - 105, nil, nil, nil, nil, 129, 130, 132, 127, 128, - 131, nil, 105, nil, nil, nil, nil, 129, 130, 132, - 127, 128, 131, 115, 116, 117, 121, 122, 123, 118, - 119, 120, 124, 125, 126, 102, 104, 103, 109, 111, - 110, 112, 114, 113, 106, 108, 107, 133, 134, 101, - 100, 137, 211, 105, nil, nil, nil, nil, 129, 130, - 132, 127, 128, 131, nil, 105, nil, nil, nil, nil, - 129, 130, 132, 127, 128, 131, 115, 116, 117, 121, - 122, 123, 118, 119, 120, 124, 125, 126, 102, 104, - 103, 109, 111, 110, 112, 114, 113, 106, 108, 107, - 133, 134, 101, 100, 137, 455, 105, nil, nil, nil, - nil, 129, 130, 132, 127, 128, 131, nil, 105, nil, - nil, nil, nil, 129, 130, 132, 127, 128, 131, 115, - 116, 117, 121, 122, 123, 118, 119, 120, 124, 125, - 126, 102, 104, 103, 109, 111, 110, 112, 114, 113, - 106, 108, 107, 133, 134, 101, 100, 137, 460, 105, - nil, nil, nil, 129, 130, 132, 127, 128, 131, nil, - nil, 105, nil, nil, nil, nil, 129, 130, 132, 127, - 128, 131, 115, 116, 117, 121, 122, 123, 118, 119, - 120, 124, 125, 126, 102, 104, 103, 109, 111, 110, - 112, 114, 113, 106, 108, 107, 133, 134, 101, 100, - 137, 105, 129, 130, 132, 127, 128, 131, nil, nil, - nil, nil, nil, nil, 105, 129, 130, 132, 127, 128, - 131, 115, 116, 117, 121, 122, 123, 118, 119, 120, - 124, 125, 126, 102, 104, 103, 109, 111, 110, 112, - 114, 113, 106, 108, 107, 133, 134, 101, 100, 137, - 105, nil, nil, nil, nil, nil, 266, 129, 130, 132, - 127, 128, 131, 105, 129, 130, 132, 127, 128, 131, - 115, 116, 117, 121, 122, 123, 118, 119, 120, 124, - 125, 126, 102, 104, 103, 109, 111, 110, 112, 114, - 113, 106, 108, 107, 133, 134, 101, 100, 137, nil, - nil, nil, nil, nil, nil, 105, nil, nil, nil, nil, - nil, nil, 105, 129, 130, 132, 127, 128, 131, 115, - 116, 117, 121, 122, 123, 118, 119, 120, 124, 125, - 126, 102, 104, 103, 109, 111, 110, 112, 114, 113, - 106, 108, 107, 133, 134, 101, 100, 137, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 275, 105, 129, 130, 132, 127, 128, 131, 115, 116, - 117, 121, 122, 123, 118, 119, 120, 124, 125, 126, - 102, 104, 103, 109, 111, 110, 112, 114, 113, 106, - 108, 107, 133, 134, 101, 100, 137, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 105, 129, 130, 132, 127, 128, 131, 115, 116, 117, - 121, 122, 123, 118, 119, 120, 124, 125, 126, 102, - 104, 103, 109, 111, 110, 112, 114, 113, 106, 108, - 107, 133, 134, 101, 100, 137, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 105, - 129, 130, 132, 127, 128, 131, 115, 116, 117, 121, - 122, 123, 118, 119, 120, 124, 125, 126, 102, 104, - 103, 109, 111, 110, 112, 114, 113, 106, 108, 107, - 133, 134, 101, 100, 137, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 105, 129, - 130, 132, 127, 128, 131, 115, 116, 117, 121, 122, - 123, 118, 119, 120, 124, 125, 126, 102, 104, 103, - 109, 111, 110, 112, 114, 113, 106, 108, 107, 133, - 134, 101, 100, 137, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 105, 129, 130, - 132, 127, 128, 131, 115, 116, 117, 121, 122, 123, - 118, 119, 120, 124, 125, 126, 129, 130, 132, 127, - 128, 131, 115, 116, 117, 121, 122, 123, 118, 119, - 120, 124, 125, 126, 102, 104, 103, 109, 111, 110, - 112, 114, 113, 106, 108, 107, 105, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 105, 129, 130, 132, 127, 128, - 131, 115, 116, 117, 121, 122, 123, 118, 119, 120, - 124, 125, 126, 102, 104, 103, 109, 111, 110, 112, - 114, 113, 106, 108, 107, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 105, 129, 130, 132, 127, 128, 131, - 115, 116, 117, 121, 122, 123, 118, 119, 120, 124, - 125, 126, 102, 104, 103, 109, 111, 110, 112, 114, - 113, 106, 108, 107, 133, 134, 101, 100, 137, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 105, 129, 130, 132, 127, 128, 131, 115, - 116, 117, 121, 122, 123, 118, 119, 120, 124, 125, - 126, 102, 104, 103, 109, 111, 110, 112, 114, 113, - 106, 108, 107, 133, 134, 101, 100, 137, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 105, 129, 130, 132, 127, 128, 131, 115, 116, - 117, 121, 122, 123, 118, 119, 120, 124, 125, 126, - 102, 104, 103, 109, 111, 110, 112, 114, 113, 106, - 108, 107, 133, 134, 101, 100, 137, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 337, - 105, 129, 130, 132, 127, 128, 131, 115, 116, 117, - 121, 122, 123, 118, 119, 120, 124, 125, 126, 102, - 104, 103, 109, 111, 110, 112, 114, 113, 106, 108, - 107, 133, 134, 101, 100, 137, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 340, nil, nil, 341, 105, - 129, 130, 132, 127, 128, 131, 115, 116, 117, 121, - 122, 123, 118, 119, 120, 124, 125, 126, 102, 104, - 103, 109, 111, 110, 112, 114, 113, 106, 108, 107, - 133, 134, 101, 100, 137, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 105, 129, - 130, 132, 127, 128, 131, 115, 116, 117, 121, 122, - 123, 118, 119, 120, 124, 125, 126, 102, 104, 103, - 109, 111, 110, 112, 114, 113, 106, 108, 107, 133, - 134, 101, 100, 137, nil, nil, nil, nil, nil, nil, - 266, nil, nil, nil, nil, nil, nil, 105, 129, 130, - 132, 127, 128, 131, 115, 116, 117, 121, 122, 123, - 118, 119, 120, 124, 125, 126, 102, 104, 103, 109, - 111, 110, 112, 114, 113, 106, 108, 107, 133, 134, - 101, 100, 137, nil, nil, nil, nil, nil, nil, 360, - nil, nil, nil, nil, nil, nil, 105, 129, 130, 132, - 127, 128, 131, 115, 116, 117, 121, 122, 123, 118, - 119, 120, 124, 125, 126, 102, 104, 103, 109, 111, - 110, 112, 114, 113, 106, 108, 107, 133, 134, 101, - 100, 137, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 105, 129, 130, 132, 127, - 128, 131, 115, 116, 117, 121, 122, 123, 118, 119, - 120, 124, 125, 126, 102, 104, 103, 109, 111, 110, - 112, 114, 113, 106, 108, 107, 133, 134, 101, 100, - 137, nil, nil, nil, nil, nil, nil, 360, nil, nil, - nil, nil, nil, nil, 105, 129, 130, 132, 127, 128, - 131, 115, 116, 117, 121, 122, 123, 118, 119, 120, - 124, 125, 126, 102, 104, 103, 109, 111, 110, 112, - 114, 113, 106, 108, 107, 133, 134, 101, 100, 137, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 105, 129, 130, 132, 127, 128, 131, - 115, 116, 117, 121, 122, 123, 118, 119, 120, 124, - 125, 126, 102, 104, 103, 109, 111, 110, 112, 114, - 113, 106, 108, 107, 133, 134, 101, 100, 137, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 105, 129, 130, 132, 127, 128, 131, 115, - 116, 117, 121, 122, 123, 118, 119, 120, 124, 125, - 126, 102, 104, 103, 109, 111, 110, 112, 114, 113, - 106, 108, 107, 133, 134, 101, 100, 137, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 105, 129, 130, 132, 127, 128, 131, 115, 116, - 117, 121, 122, 123, 118, 119, 120, 124, 125, 126, - 102, 104, 103, 109, 111, 110, 112, 114, 113, 106, - 108, 107, 133, 134, 101, 100, 137, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 105, 129, 130, 132, 127, 128, 131, 115, 116, 117, - 121, 122, 123, 118, 119, 120, 124, 125, 126, 102, - 104, 103, 109, 111, 110, 112, 114, 113, 106, 108, - 107, 133, 134, 101, 100, 137, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 396, nil, nil, 341, 105, - 129, 130, 132, 127, 128, 131, 115, 116, 117, 121, - 122, 123, 118, 119, 120, 124, 125, 126, 102, 104, - 103, 109, 111, 110, 112, 114, 113, 106, 108, 107, - 133, 134, 101, 100, 137, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 105, 129, - 130, 132, 127, 128, 131, 115, 116, 117, 121, 122, - 123, 118, 119, 120, 124, 125, 126, 102, 104, 103, - 109, 111, 110, 112, 114, 113, 106, 108, 107, 133, - 134, 101, 100, 137, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 399, nil, nil, nil, 105, 129, 130, - 132, 127, 128, 131, 115, 116, 117, 121, 122, 123, - 118, 119, 120, 124, 125, 126, 102, 104, 103, 109, - 111, 110, 112, 114, 113, 106, 108, 107, 133, 134, - 101, 100, 137, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 105, 129, 130, 132, - 127, 128, 131, 115, 116, 117, 121, 122, 123, 118, - 119, 120, 124, 125, 126, 102, 104, 103, 109, 111, - 110, 112, 114, 113, 106, 108, 107, 133, 134, 101, - 100, 137, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 105, 129, 130, 132, 127, - 128, 131, 115, 116, 117, 121, 122, 123, 118, 119, - 120, 124, 125, 126, 102, 104, 103, 109, 111, 110, - 112, 114, 113, 106, 108, 107, 133, 134, 101, 100, - 137, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 105, 129, 130, 132, 127, 128, - 131, 115, 116, 117, 121, 122, 123, 118, 119, 120, - 124, 125, 126, 102, 104, 103, 109, 111, 110, 112, - 114, 113, 106, 108, 107, 133, 134, 101, 100, 137, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 105, 129, 130, 132, 127, 128, 131, - 115, 116, 117, 121, 122, 123, 118, 119, 120, 124, - 125, 126, 102, 104, 103, 109, 111, 110, 112, 114, - 113, 106, 108, 107, 133, 134, 101, 100, 137, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 105, 129, 130, 132, 127, 128, 131, 115, - 116, 117, 121, 122, 123, 118, 119, 120, 124, 125, - 126, 102, 104, 103, 109, 111, 110, 112, 114, 113, - 106, 108, 107, 133, 134, 101, 100, 137, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 105, 129, 130, 132, 127, 128, 131, 115, 116, - 117, 121, 122, 123, 118, 119, 120, 124, 125, 126, - 102, 104, 103, 109, 111, 110, 112, 114, 113, 106, - 108, 107, 133, 134, 101, 100, 137, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 105, 129, 130, 132, 127, 128, 131, 115, 116, 117, - 121, 122, 123, 118, 119, 120, 124, 125, 126, 102, - 104, 103, 109, 111, 110, 112, 114, 113, 106, 108, - 107, 133, 134, 101, 100, 137, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 105, - 129, 130, 132, 127, 128, 131, 115, 116, 117, 121, - 122, 123, 118, 119, 120, 124, 125, 126, 102, 104, - 103, 109, 111, 110, 112, 114, 113, 106, 108, 107, - 133, 134, 101, 100, 137, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 105, 129, - 130, 132, 127, 128, 131, 115, 116, 117, 121, 122, - 123, 118, 119, 120, 124, 125, 126, 102, 104, 103, - 109, 111, 110, 112, 114, 113, 106, 108, 107, 133, - 134, 101, 100, 137, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 105 ] - -racc_action_check = [ - 22, 143, 74, 143, 22, 333, 376, 376, 182, 182, - 370, 369, 433, 157, 57, 57, 74, 57, 155, 182, - 157, 155, 369, 155, 3, 57, 57, 57, 93, 57, - 57, 57, 333, 370, 376, 433, 330, 57, 57, 57, - 202, 57, 330, 330, 202, 57, 57, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 57, 0, 3, 57, 332, 0, 93, 0, - 0, 0, 0, 0, 376, 22, 0, 454, 0, 0, - 287, 287, 0, 0, 0, 0, 0, 461, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, - 298, 466, 1, 0, 0, 298, 59, 59, 283, 283, - 283, 283, 447, 283, 451, 464, 332, 59, 283, 283, - 40, 40, 210, 447, 19, 451, 464, 454, 210, 181, - 181, 287, 287, 175, 72, 72, 72, 461, 23, 200, - 0, 213, 0, 0, 2, 0, 55, 277, 2, 161, - 2, 2, 2, 2, 2, 162, 278, 2, 284, 2, - 2, 466, 59, 2, 2, 2, 2, 2, 286, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 175, 2, 2, 2, 2, - 2, 200, 86, 213, 2, 2, 161, 313, 266, 277, - 314, 161, 162, 304, 360, 304, 24, 162, 278, 284, - 284, 186, 186, 186, 138, 138, 138, 138, 27, 286, - 286, 8, 138, 8, 8, 8, 403, 430, 73, 73, - 73, 2, 32, 2, 2, 94, 2, 315, 35, 94, - 86, 94, 94, 94, 94, 94, 285, 266, 94, 313, - 94, 94, 314, 360, 94, 94, 94, 94, 94, 186, - 94, 94, 94, 94, 94, 94, 94, 94, 94, 94, - 94, 94, 94, 94, 94, 403, 430, 94, 94, 94, - 94, 94, 281, 281, 315, 94, 94, 285, 285, 285, - 285, 43, 187, 187, 187, 282, 282, 285, 285, 410, - 70, 410, 222, 222, 222, 222, 222, 222, 222, 222, - 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, - 290, 290, 94, 87, 94, 94, 95, 94, 387, 387, - 95, 88, 95, 95, 95, 95, 95, 33, 89, 95, - 187, 95, 95, 416, 416, 95, 95, 95, 95, 95, - 222, 95, 95, 95, 95, 90, 95, 95, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 92, 95, 95, - 95, 95, 95, 96, 97, 203, 95, 95, 33, 33, - 33, 33, 31, 31, 31, 31, 331, 31, 331, 331, - 386, 331, 386, 386, 140, 386, 42, 42, 42, 42, - 141, 203, 66, 66, 66, 66, 146, 235, 235, 235, - 235, 235, 235, 95, 148, 150, 95, 151, 95, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 203, 203, 203, 204, 235, 154, 160, 166, 169, - 170, 174, 178, 183, 184, 185, 189, 203, 199, 207, - 208, 209, 212, 249, 250, 252, 260, 268, 293, 297, - 204, 299, 300, 301, 305, 236, 236, 236, 236, 236, - 236, 237, 237, 237, 237, 237, 237, 312, 204, 204, - 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, - 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, - 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, - 204, 204, 204, 236, 211, 247, 247, 247, 211, 237, - 211, 211, 211, 211, 211, 318, 204, 211, 322, 211, - 211, 324, 325, 211, 211, 211, 211, 211, 334, 211, - 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, - 211, 211, 211, 211, 211, 335, 211, 211, 211, 211, - 211, 336, 339, 247, 211, 211, 344, 345, 220, 220, - 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, - 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, - 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, - 220, 211, 353, 211, 211, 320, 211, 355, 356, 320, - 320, 320, 320, 320, 320, 320, 220, 359, 320, 367, - 320, 320, 368, 385, 320, 320, 320, 320, 320, 389, - 320, 320, 320, 320, 320, 320, 320, 320, 320, 320, - 320, 320, 320, 320, 320, 391, 392, 320, 320, 320, - 320, 320, 404, 408, 411, 320, 320, 412, 417, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - 221, 420, 320, 421, 320, 320, 438, 320, 422, 423, - 438, 425, 438, 438, 438, 438, 438, 221, 428, 438, - 429, 438, 438, 432, 434, 438, 438, 438, 438, 438, - 445, 438, 438, 438, 438, 438, 438, 438, 438, 438, - 438, 438, 438, 438, 438, 438, 448, 449, 438, 438, - 438, 438, 438, 456, 457, 458, 438, 438, 459, 467, - 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, - 223, 223, 223, 223, 223, 223, 223, 223, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 248, - 248, 248, nil, 438, nil, 438, 438, 455, 438, nil, - nil, 455, nil, 455, 455, 455, 455, 455, 223, nil, - 455, nil, 455, 455, nil, nil, 455, 455, 455, 455, - 455, nil, 455, 455, 455, 455, 455, 455, 455, 455, - 455, 455, 455, 455, 455, 455, 455, 248, nil, 455, - 455, 455, 455, 455, nil, nil, nil, 455, 455, nil, - nil, 224, 224, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, 224, 224, 224, 224, 224, 224, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 251, 251, 251, nil, 455, nil, 455, 455, 460, 455, - nil, nil, 460, nil, 460, 460, 460, 460, 460, 224, - nil, 460, nil, 460, 460, nil, nil, 460, 460, 460, - 460, 460, nil, 460, 460, 460, 460, 460, 460, 460, - 460, 460, 460, 460, 460, 460, 460, 460, 251, nil, - 460, 460, 460, 460, 460, nil, nil, nil, 460, 460, - 375, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 460, nil, 460, 460, nil, - 460, nil, 375, 375, 375, 375, 375, 375, 375, 375, - 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, - 375, 375, 375, 375, 375, 375, 375, 375, 375, 375, - 375, 375, 375, 375, 375, 375, 375, 378, nil, nil, - nil, nil, nil, nil, nil, nil, 139, 139, nil, 139, - 375, nil, 139, nil, nil, nil, nil, 139, 139, 139, - nil, 139, 139, 139, 139, nil, nil, nil, nil, 139, - 139, 139, nil, 139, nil, nil, nil, 139, 139, 378, - 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, - 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, - 378, 378, 378, 378, 378, 378, 378, 378, 378, 378, - 378, 378, 378, 378, 139, nil, nil, 139, nil, 139, - nil, 139, 258, 258, nil, 258, nil, 378, 258, nil, - nil, nil, nil, 258, 258, 258, nil, 258, 258, 258, - 258, nil, nil, nil, nil, 258, 258, 258, nil, 258, - nil, nil, nil, 258, 258, 58, 58, 58, nil, 58, - nil, nil, 58, nil, nil, nil, nil, 58, 58, 58, - nil, 58, 58, 58, 58, nil, nil, 58, nil, 58, - 58, 58, nil, 58, nil, nil, nil, 58, 58, nil, - 258, nil, nil, 258, nil, 258, nil, 258, nil, 226, - 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, - 226, 226, 226, 226, 226, 226, 226, nil, 147, 147, - 147, nil, 147, nil, 58, 147, nil, 58, nil, 58, - 147, 147, 147, nil, 147, 147, 147, 147, nil, nil, - nil, nil, 147, 147, 147, nil, 147, 226, nil, nil, - 147, 147, 165, 165, 165, nil, 165, nil, nil, 165, - nil, nil, nil, nil, 165, 165, 165, nil, 165, 165, - 165, 165, nil, nil, nil, nil, 165, 165, 165, nil, - 165, nil, nil, nil, 165, 165, nil, 147, 147, nil, - 147, nil, 147, nil, nil, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, - 227, 227, 227, nil, nil, nil, 171, 171, 171, nil, - 171, 165, 165, 171, 165, nil, 165, nil, 171, 171, - 171, nil, 171, 171, 171, 171, nil, nil, nil, nil, - 171, 171, 171, 227, 171, nil, nil, nil, 171, 171, - 176, 176, 176, nil, 176, nil, nil, 176, nil, nil, - nil, nil, 176, 176, 176, nil, 176, 176, 176, 176, - nil, nil, nil, nil, 176, 176, 176, nil, 176, nil, - nil, nil, 176, 176, nil, 171, 171, nil, 171, nil, - 171, nil, nil, 228, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, - 228, nil, nil, nil, 215, 215, 215, nil, 215, 176, - 176, 215, 176, nil, 176, nil, 215, 215, 215, nil, - 215, 215, 215, 215, nil, nil, nil, nil, 215, 215, - 215, 228, 215, nil, nil, nil, 215, 215, 267, 267, - 267, nil, 267, nil, nil, 267, nil, nil, nil, nil, - 267, 267, 267, nil, 267, 267, 267, 267, nil, nil, - nil, nil, 267, 267, 267, nil, 267, nil, nil, nil, - 267, 267, nil, 215, 215, nil, 215, nil, 215, nil, - nil, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, nil, - nil, nil, nil, 274, 274, nil, 274, 267, 267, 274, - 267, nil, 267, nil, 274, 274, 274, nil, 274, 274, - 274, 274, nil, nil, nil, nil, 274, 274, 274, 229, - 274, nil, nil, nil, 274, 274, 276, 276, 276, nil, - 276, nil, nil, 276, nil, nil, nil, nil, 276, 276, - 276, nil, 276, 276, 276, 276, nil, nil, nil, nil, - 276, 276, 276, nil, 276, nil, nil, nil, 276, 276, - nil, 274, nil, nil, 274, nil, 274, 274, nil, 230, - 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, - 230, 230, 230, 230, 230, 230, 230, nil, nil, nil, - 295, 295, 295, nil, 295, 276, 276, 295, 276, nil, - 276, nil, 295, 295, 295, nil, 295, 295, 295, 295, - nil, nil, nil, nil, 295, 295, 295, 230, 295, nil, - nil, nil, 295, 295, 302, 302, 302, nil, 302, nil, - nil, 302, nil, nil, nil, nil, 302, 302, 302, nil, - 302, 302, 302, 302, nil, nil, nil, nil, 302, 302, - 302, nil, 302, nil, nil, nil, 302, 302, nil, 295, - 295, nil, 295, nil, 295, nil, 231, 231, 231, 231, - 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, - 231, 231, 231, 231, nil, nil, nil, 362, 362, 362, - nil, 362, nil, 302, 362, nil, 302, nil, 302, 362, - 362, 362, nil, 362, 362, 362, 362, nil, nil, nil, - nil, 362, 362, 362, 231, 362, nil, nil, nil, 362, - 362, 393, 393, 393, nil, 393, nil, nil, 393, nil, - nil, nil, nil, 393, 393, 393, nil, 393, 393, 393, - 393, nil, nil, nil, nil, 393, 393, 393, nil, 393, - nil, nil, nil, 393, 393, nil, 362, 362, nil, 362, - nil, 362, nil, nil, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, 232, nil, nil, nil, nil, 29, 29, nil, 29, - 393, 393, 29, 393, nil, 393, nil, 29, 29, 29, - nil, 29, 29, 29, 29, nil, nil, nil, nil, 29, - 29, 29, 232, 29, nil, nil, nil, 29, 29, 52, - 52, nil, 52, nil, nil, 52, nil, nil, nil, nil, - 52, 52, 52, nil, 52, 52, 52, 52, nil, nil, - 52, nil, 52, 52, 52, nil, 52, nil, nil, nil, - 52, 52, 54, 54, 29, 54, nil, 29, 54, 29, - nil, nil, nil, 54, 54, 54, nil, 54, 54, 54, - 54, nil, nil, 54, nil, 54, 54, 54, nil, 54, - nil, nil, nil, 54, 54, 56, 56, 52, 56, nil, - 52, 56, 52, nil, nil, 56, 56, 56, 56, nil, - 56, 56, 56, 56, nil, nil, nil, nil, 56, 56, - 56, nil, 56, nil, nil, nil, 56, 56, 61, 61, - 54, 61, nil, 54, 61, 54, nil, nil, nil, 61, - 61, 61, nil, 61, 61, 61, 61, nil, nil, nil, - nil, 61, 61, 61, nil, 61, nil, nil, nil, 61, - 61, 62, 62, 56, 62, nil, 56, 62, 56, nil, - nil, nil, 62, 62, 62, nil, 62, 62, 62, 62, - nil, nil, nil, nil, 62, 62, 62, nil, 62, nil, - nil, nil, 62, 62, 63, 63, 61, 63, nil, 61, - 63, 61, nil, nil, nil, 63, 63, 63, nil, 63, - 63, 63, 63, nil, nil, nil, nil, 63, 63, 63, - nil, 63, nil, nil, nil, 63, 63, 78, 78, 62, - 78, nil, 62, 78, 62, nil, nil, nil, 78, 78, - 78, nil, 78, 78, 78, 78, nil, nil, 78, nil, - 78, 78, 78, nil, 78, nil, nil, nil, 78, 78, - 80, 80, 63, 80, nil, 63, 80, 63, nil, nil, - nil, 80, 80, 80, nil, 80, 80, 80, 80, nil, - nil, nil, nil, 80, 80, 80, nil, 80, nil, nil, - nil, 80, 80, 81, 81, 78, 81, nil, 78, 81, - 78, nil, nil, nil, 81, 81, 81, nil, 81, 81, - 81, 81, nil, nil, nil, nil, 81, 81, 81, nil, - 81, nil, nil, nil, 81, 81, 82, 82, 80, 82, - nil, 80, 82, 80, nil, nil, nil, 82, 82, 82, - nil, 82, 82, 82, 82, nil, nil, nil, nil, 82, - 82, 82, nil, 82, nil, nil, nil, 82, 82, 85, - 85, 81, 85, nil, 81, 85, 81, nil, nil, nil, - 85, 85, 85, nil, 85, 85, 85, 85, nil, nil, - nil, nil, 85, 85, 85, nil, 85, nil, nil, nil, - 85, 85, 100, 100, 82, 100, nil, 82, 100, 82, - nil, nil, nil, 100, 100, 100, nil, 100, 100, 100, - 100, nil, nil, nil, nil, 100, 100, 100, nil, 100, - nil, nil, nil, 100, 100, 101, 101, 85, 101, nil, - 85, 101, 85, nil, nil, nil, 101, 101, 101, nil, - 101, 101, 101, 101, nil, nil, nil, nil, 101, 101, - 101, nil, 101, nil, nil, nil, 101, 101, 102, 102, - 100, 102, nil, 100, 102, 100, nil, nil, nil, 102, - 102, 102, nil, 102, 102, 102, 102, nil, nil, nil, - nil, 102, 102, 102, nil, 102, nil, nil, nil, 102, - 102, 103, 103, 101, 103, nil, 101, 103, 101, nil, - nil, nil, 103, 103, 103, nil, 103, 103, 103, 103, - nil, nil, nil, nil, 103, 103, 103, nil, 103, nil, - nil, nil, 103, 103, 104, 104, 102, 104, nil, 102, - 104, 102, nil, nil, nil, 104, 104, 104, nil, 104, - 104, 104, 104, nil, nil, nil, nil, 104, 104, 104, - nil, 104, nil, nil, nil, 104, 104, 105, 105, 103, - 105, nil, 103, 105, 103, nil, nil, nil, 105, 105, - 105, nil, 105, 105, 105, 105, nil, nil, nil, nil, - 105, 105, 105, nil, 105, nil, nil, nil, 105, 105, - 106, 106, 104, 106, nil, 104, 106, 104, nil, nil, - nil, 106, 106, 106, nil, 106, 106, 106, 106, nil, - nil, nil, nil, 106, 106, 106, nil, 106, nil, nil, - nil, 106, 106, 107, 107, 105, 107, nil, 105, 107, - 105, nil, nil, nil, 107, 107, 107, nil, 107, 107, - 107, 107, nil, nil, nil, nil, 107, 107, 107, nil, - 107, nil, nil, nil, 107, 107, 108, 108, 106, 108, - nil, 106, 108, 106, nil, nil, nil, 108, 108, 108, - nil, 108, 108, 108, 108, nil, nil, nil, nil, 108, - 108, 108, nil, 108, nil, nil, nil, 108, 108, 109, - 109, 107, 109, nil, 107, 109, 107, nil, nil, nil, - 109, 109, 109, nil, 109, 109, 109, 109, nil, nil, - nil, nil, 109, 109, 109, nil, 109, nil, nil, nil, - 109, 109, 110, 110, 108, 110, nil, 108, 110, 108, - nil, nil, nil, 110, 110, 110, nil, 110, 110, 110, - 110, nil, nil, nil, nil, 110, 110, 110, nil, 110, - nil, nil, nil, 110, 110, 111, 111, 109, 111, nil, - 109, 111, 109, nil, nil, nil, 111, 111, 111, nil, - 111, 111, 111, 111, nil, nil, nil, nil, 111, 111, - 111, nil, 111, nil, nil, nil, 111, 111, 112, 112, - 110, 112, nil, 110, 112, 110, nil, nil, nil, 112, - 112, 112, nil, 112, 112, 112, 112, nil, nil, nil, - nil, 112, 112, 112, nil, 112, nil, nil, nil, 112, - 112, 113, 113, 111, 113, nil, 111, 113, 111, nil, - nil, nil, 113, 113, 113, nil, 113, 113, 113, 113, - nil, nil, nil, nil, 113, 113, 113, nil, 113, nil, - nil, nil, 113, 113, 114, 114, 112, 114, nil, 112, - 114, 112, nil, nil, nil, 114, 114, 114, nil, 114, - 114, 114, 114, nil, nil, nil, nil, 114, 114, 114, - nil, 114, nil, nil, nil, 114, 114, 115, 115, 113, - 115, nil, 113, 115, 113, nil, nil, nil, 115, 115, - 115, nil, 115, 115, 115, 115, nil, nil, nil, nil, - 115, 115, 115, nil, 115, nil, nil, nil, 115, 115, - 116, 116, 114, 116, nil, 114, 116, 114, nil, nil, - nil, 116, 116, 116, nil, 116, 116, 116, 116, nil, - nil, nil, nil, 116, 116, 116, nil, 116, nil, nil, - nil, 116, 116, 117, 117, 115, 117, nil, 115, 117, - 115, nil, nil, nil, 117, 117, 117, nil, 117, 117, - 117, 117, nil, nil, nil, nil, 117, 117, 117, nil, - 117, nil, nil, nil, 117, 117, 118, 118, 116, 118, - nil, 116, 118, 116, nil, nil, nil, 118, 118, 118, - nil, 118, 118, 118, 118, nil, nil, nil, nil, 118, - 118, 118, nil, 118, nil, nil, nil, 118, 118, 119, - 119, 117, 119, nil, 117, 119, 117, nil, nil, nil, - 119, 119, 119, nil, 119, 119, 119, 119, nil, nil, - nil, nil, 119, 119, 119, nil, 119, nil, nil, nil, - 119, 119, 120, 120, 118, 120, nil, 118, 120, 118, - nil, nil, nil, 120, 120, 120, nil, 120, 120, 120, - 120, nil, nil, nil, nil, 120, 120, 120, nil, 120, - nil, nil, nil, 120, 120, 121, 121, 119, 121, nil, - 119, 121, 119, nil, nil, nil, 121, 121, 121, nil, - 121, 121, 121, 121, nil, nil, nil, nil, 121, 121, - 121, nil, 121, nil, nil, nil, 121, 121, 122, 122, - 120, 122, nil, 120, 122, 120, nil, nil, nil, 122, - 122, 122, nil, 122, 122, 122, 122, nil, nil, nil, - nil, 122, 122, 122, nil, 122, nil, nil, nil, 122, - 122, 123, 123, 121, 123, nil, 121, 123, 121, nil, - nil, nil, 123, 123, 123, nil, 123, 123, 123, 123, - nil, nil, nil, nil, 123, 123, 123, nil, 123, nil, - nil, nil, 123, 123, 124, 124, 122, 124, nil, 122, - 124, 122, nil, nil, nil, 124, 124, 124, nil, 124, - 124, 124, 124, nil, nil, nil, nil, 124, 124, 124, - nil, 124, nil, nil, nil, 124, 124, 125, 125, 123, - 125, nil, 123, 125, 123, nil, nil, nil, 125, 125, - 125, nil, 125, 125, 125, 125, nil, nil, nil, nil, - 125, 125, 125, nil, 125, nil, nil, nil, 125, 125, - 126, 126, 124, 126, nil, 124, 126, 124, nil, nil, - nil, 126, 126, 126, nil, 126, 126, 126, 126, nil, - nil, nil, nil, 126, 126, 126, nil, 126, nil, nil, - nil, 126, 126, 127, 127, 125, 127, nil, 125, 127, - 125, nil, nil, nil, 127, 127, 127, nil, 127, 127, - 127, 127, nil, nil, nil, nil, 127, 127, 127, nil, - 127, nil, nil, nil, 127, 127, 128, 128, 126, 128, - nil, 126, 128, 126, nil, nil, nil, 128, 128, 128, - nil, 128, 128, 128, 128, nil, nil, nil, nil, 128, - 128, 128, nil, 128, nil, nil, nil, 128, 128, 129, - 129, 127, 129, nil, 127, 129, 127, nil, nil, nil, - 129, 129, 129, nil, 129, 129, 129, 129, nil, nil, - nil, nil, 129, 129, 129, nil, 129, nil, nil, nil, - 129, 129, 130, 130, 128, 130, nil, 128, 130, 128, - nil, nil, nil, 130, 130, 130, nil, 130, 130, 130, - 130, nil, nil, nil, nil, 130, 130, 130, nil, 130, - nil, nil, nil, 130, 130, 131, 131, 129, 131, nil, - 129, 131, 129, nil, nil, nil, 131, 131, 131, nil, - 131, 131, 131, 131, nil, nil, nil, nil, 131, 131, - 131, nil, 131, nil, nil, nil, 131, 131, 132, 132, - 130, 132, nil, 130, 132, 130, nil, nil, nil, 132, - 132, 132, nil, 132, 132, 132, 132, nil, nil, nil, - nil, 132, 132, 132, nil, 132, nil, nil, nil, 132, - 132, 133, 133, 131, 133, nil, 131, 133, 131, nil, - nil, nil, 133, 133, 133, nil, 133, 133, 133, 133, - nil, nil, nil, nil, 133, 133, 133, nil, 133, nil, - nil, nil, 133, 133, 134, 134, 132, 134, nil, 132, - 134, 132, nil, nil, nil, 134, 134, 134, nil, 134, - 134, 134, 134, nil, nil, nil, nil, 134, 134, 134, - nil, 134, nil, nil, nil, 134, 134, 135, 135, 133, - 135, nil, 133, 135, 133, nil, nil, nil, 135, 135, - 135, nil, 135, 135, 135, 135, nil, nil, nil, nil, - 135, 135, 135, nil, 135, nil, nil, nil, 135, 135, - 136, 136, 134, 136, nil, 134, 136, 134, nil, nil, - nil, 136, 136, 136, nil, 136, 136, 136, 136, nil, - nil, nil, nil, 136, 136, 136, nil, 136, nil, nil, - nil, 136, 136, 137, 137, 135, 137, nil, 135, 137, - 135, nil, nil, nil, 137, 137, 137, nil, 137, 137, - 137, 137, nil, nil, nil, nil, 137, 137, 137, nil, - 137, nil, nil, nil, 137, 137, 164, 164, 136, 164, - nil, 136, 164, 136, nil, nil, nil, 164, 164, 164, - nil, 164, 164, 164, 164, nil, nil, nil, nil, 164, - 164, 164, nil, 164, nil, nil, nil, 164, 164, 173, - 173, 137, 173, nil, 137, 173, 137, nil, nil, nil, - 173, 173, 173, nil, 173, 173, 173, 173, nil, nil, - 173, nil, 173, 173, 173, nil, 173, nil, nil, nil, - 173, 173, 180, 180, 164, 180, nil, 164, 180, 164, - nil, nil, nil, 180, 180, 180, nil, 180, 180, 180, - 180, nil, nil, nil, nil, 180, 180, 180, nil, 180, - nil, nil, nil, 180, 180, 188, 188, 173, 188, nil, - 173, 188, 173, nil, nil, nil, 188, 188, 188, nil, - 188, 188, 188, 188, nil, nil, nil, nil, 188, 188, - 188, nil, 188, nil, nil, nil, 188, 188, 191, 191, - 180, 191, nil, 180, 191, 180, nil, nil, nil, 191, - 191, 191, nil, 191, 191, 191, 191, nil, nil, nil, - nil, 191, 191, 191, nil, 191, nil, nil, nil, 191, - 191, 192, 192, 188, 192, nil, 188, 192, 188, nil, - nil, nil, 192, 192, 192, nil, 192, 192, 192, 192, - nil, nil, nil, nil, 192, 192, 192, nil, 192, nil, - nil, nil, 192, 192, 193, 193, 191, 193, nil, 191, - 193, 191, nil, nil, nil, 193, 193, 193, nil, 193, - 193, 193, 193, nil, nil, nil, nil, 193, 193, 193, - nil, 193, nil, nil, nil, 193, 193, 194, 194, 192, - 194, nil, 192, 194, 192, nil, nil, nil, 194, 194, - 194, nil, 194, 194, 194, 194, nil, nil, nil, nil, - 194, 194, 194, nil, 194, nil, nil, nil, 194, 194, - 261, 261, 193, 261, nil, 193, 261, 193, nil, nil, - nil, 261, 261, 261, nil, 261, 261, 261, 261, nil, - nil, 261, nil, 261, 261, 261, nil, 261, nil, nil, - nil, 261, 261, 270, 270, 194, 270, nil, 194, 270, - 194, nil, nil, nil, 270, 270, 270, nil, 270, 270, - 270, 270, nil, nil, nil, nil, 270, 270, 270, nil, - 270, nil, nil, nil, 270, 270, 272, 272, 261, 272, - nil, 261, 272, 261, nil, nil, nil, 272, 272, 272, - nil, 272, 272, 272, 272, nil, nil, nil, nil, 272, - 272, 272, nil, 272, nil, nil, nil, 272, 272, 275, - 275, 270, 275, nil, 270, 275, 270, nil, nil, nil, - 275, 275, 275, nil, 275, 275, 275, 275, nil, nil, - nil, nil, 275, 275, 275, nil, 275, nil, nil, nil, - 275, 275, nil, nil, 272, nil, nil, 272, 272, 272, - 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, - 233, 233, 233, 233, 233, 233, 233, 233, nil, nil, - nil, nil, 288, 288, nil, 288, nil, 275, 288, nil, - 275, nil, 275, 288, 288, 288, nil, 288, 288, 288, - 288, nil, nil, 288, nil, 288, 288, 288, 233, 288, - nil, nil, nil, 288, 288, 291, 291, nil, 291, nil, - nil, 291, nil, nil, nil, nil, 291, 291, 291, nil, - 291, 291, 291, 291, nil, nil, nil, nil, 291, 291, - 291, nil, 291, nil, nil, nil, 291, 291, 294, 294, - 288, 294, nil, 288, 294, 288, nil, nil, nil, 294, - 294, 294, nil, 294, 294, 294, 294, nil, nil, nil, - nil, 294, 294, 294, nil, 294, nil, nil, nil, 294, - 294, 316, 316, 291, 316, nil, 291, 316, 291, nil, - nil, nil, 316, 316, 316, nil, 316, 316, 316, 316, - nil, nil, nil, nil, 316, 316, 316, nil, 316, nil, - nil, nil, 316, 316, 317, 317, 294, 317, nil, 294, - 317, 294, nil, nil, nil, 317, 317, 317, nil, 317, - 317, 317, 317, nil, nil, nil, nil, 317, 317, 317, - nil, 317, nil, nil, nil, 317, 317, 319, 319, 316, - 319, nil, 316, 319, 316, nil, nil, nil, 319, 319, - 319, nil, 319, 319, 319, 319, nil, nil, nil, nil, - 319, 319, 319, nil, 319, nil, nil, nil, 319, 319, - 323, 323, 317, 323, nil, 317, 323, 317, nil, nil, - nil, 323, 323, 323, nil, 323, 323, 323, 323, nil, - nil, nil, nil, 323, 323, 323, nil, 323, nil, nil, - nil, 323, 323, 326, 326, 319, 326, nil, 319, 326, - 319, nil, nil, nil, 326, 326, 326, nil, 326, 326, - 326, 326, nil, nil, nil, nil, 326, 326, 326, nil, - 326, nil, nil, nil, 326, 326, 327, 327, 323, 327, - nil, 323, 327, 323, nil, nil, nil, 327, 327, 327, - nil, 327, 327, 327, 327, nil, nil, nil, nil, 327, - 327, 327, nil, 327, nil, nil, nil, 327, 327, 328, - 328, 326, 328, nil, 326, 328, 326, nil, nil, nil, - 328, 328, 328, nil, 328, 328, 328, 328, nil, nil, - nil, nil, 328, 328, 328, nil, 328, nil, nil, nil, - 328, 328, 337, 337, 327, 337, nil, 327, 337, 327, - nil, nil, nil, 337, 337, 337, nil, 337, 337, 337, - 337, nil, nil, nil, nil, 337, 337, 337, nil, 337, - nil, nil, nil, 337, 337, 341, 341, 328, 341, nil, - 328, 341, 328, nil, nil, nil, 341, 341, 341, nil, - 341, 341, 341, 341, nil, nil, 341, nil, 341, 341, - 341, nil, 341, nil, nil, nil, 341, 341, 365, 365, - 337, 365, nil, 337, 365, 337, nil, nil, nil, 365, - 365, 365, nil, 365, 365, 365, 365, nil, nil, nil, - nil, 365, 365, 365, nil, 365, nil, nil, nil, 365, - 365, 418, 418, 341, 418, nil, 341, 418, 341, nil, - nil, nil, 418, 418, 418, nil, 418, 418, 418, 418, - nil, nil, nil, nil, 418, 418, 418, nil, 418, nil, - nil, nil, 418, 418, 435, 435, 365, 435, nil, 365, - 435, 365, nil, nil, nil, 435, 435, 435, nil, 435, - 435, 435, 435, nil, nil, nil, nil, 435, 435, 435, - nil, 435, nil, nil, nil, 435, 435, 437, 437, 418, - 437, nil, 418, 437, 418, nil, nil, nil, 437, 437, - 437, nil, 437, 437, 437, 437, nil, nil, nil, nil, - 437, 437, 437, nil, 437, nil, nil, nil, 437, 437, - 64, 64, 435, 64, nil, 435, nil, 435, nil, nil, - nil, 64, 64, 64, nil, 64, 64, 64, nil, nil, - nil, nil, nil, 64, 64, 64, nil, 64, nil, nil, - nil, 64, 64, 99, 99, 437, 99, nil, 437, nil, - 437, nil, nil, nil, 99, 99, 99, nil, 99, 99, - 99, 99, nil, nil, nil, nil, 99, 99, 99, nil, - 99, nil, nil, nil, 99, 99, 142, 142, 64, 142, - nil, 64, nil, nil, nil, nil, nil, 142, 142, 142, - nil, 142, 142, 142, 142, nil, nil, nil, nil, 142, - 142, 142, nil, 142, nil, nil, nil, 142, 142, nil, - nil, 99, nil, nil, 99, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 205, nil, nil, nil, nil, nil, 238, 238, 238, 238, - 238, 238, nil, nil, 142, nil, nil, 142, 205, 205, - 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, - 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, - 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, - 205, 205, 205, 206, 238, nil, nil, nil, nil, 239, - 239, 239, 239, 239, 239, nil, 205, nil, nil, nil, - nil, 206, 206, 206, 206, 206, 206, 206, 206, 206, - 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, - 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, - 206, 206, 206, 206, 206, 206, 381, 239, nil, nil, - nil, nil, 240, 240, 240, 240, 240, 240, nil, 206, - nil, nil, nil, nil, 381, 381, 381, 381, 381, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 381, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 381, 382, - 240, nil, nil, nil, nil, 241, 241, 241, 241, 241, - 241, nil, 381, nil, nil, nil, nil, 382, 382, 382, - 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, - 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, - 382, 382, 382, 382, 382, 382, 382, 382, 382, 382, - 382, 382, 383, 241, nil, nil, nil, nil, 242, 242, - 242, 242, 242, 242, nil, 382, nil, nil, nil, nil, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 439, 242, nil, nil, nil, - nil, 243, 243, 243, 243, 243, 243, nil, 383, nil, - nil, nil, nil, 439, 439, 439, 439, 439, 439, 439, - 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, - 439, 439, 439, 439, 439, 439, 439, 439, 439, 439, - 439, 439, 439, 439, 439, 439, 439, 439, 453, 243, - nil, nil, nil, 244, 244, 244, 244, 244, 244, nil, - nil, 439, nil, nil, nil, nil, 453, 453, 453, 453, - 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, - 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, - 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, - 453, 244, 245, 245, 245, 245, 245, 245, nil, nil, - nil, nil, nil, nil, 453, 145, 145, 145, 145, 145, - 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, - 245, nil, nil, nil, nil, nil, 145, 246, 246, 246, - 246, 246, 246, 145, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, - 156, 156, 156, 156, 156, 156, 156, 156, 156, nil, - nil, nil, nil, nil, nil, 246, nil, nil, nil, nil, - nil, nil, 156, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, - 159, 159, 159, 159, 159, 159, 159, 159, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 159, 159, 168, 168, 168, 168, 168, 168, 168, 168, - 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, - 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, - 168, 168, 168, 168, 168, 168, 168, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 168, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 179, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 179, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 201, 225, - 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, - 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, - 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, - 225, 225, 225, 225, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 225, 234, 234, - 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, - 234, 234, 234, 234, 234, 234, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, - 253, 253, 253, 253, 253, 253, 234, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 253, 254, 254, 254, 254, 254, - 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, - 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, - 254, 254, 254, 254, 254, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 254, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, 255, 255, 255, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 255, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 256, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 256, 257, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 257, 257, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 257, - 257, 259, 259, 259, 259, 259, 259, 259, 259, 259, - 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, - 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, - 259, 259, 259, 259, 259, 259, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 259, nil, nil, 259, 259, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, 289, 289, 289, 289, 289, - 289, 289, 289, 289, 289, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 289, 292, - 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, nil, nil, nil, nil, nil, nil, - 292, nil, nil, nil, nil, nil, nil, 292, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, - 296, 296, 296, nil, nil, nil, nil, nil, nil, 296, - nil, nil, nil, nil, nil, nil, 296, 303, 303, 303, - 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, - 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, - 303, 303, 303, 303, 303, 303, 303, 303, 303, 303, - 303, 303, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 303, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, 307, 307, 307, 307, 307, 307, 307, 307, 307, - 307, nil, nil, nil, nil, nil, nil, 307, nil, nil, - nil, nil, nil, nil, 307, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 308, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, 309, 309, 309, 309, 309, 309, 309, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 309, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 310, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 311, 311, 311, 311, 311, 311, 311, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 311, 338, 338, 338, 338, 338, 338, 338, 338, 338, - 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, - 338, 338, 338, 338, 338, 338, 338, 338, 338, 338, - 338, 338, 338, 338, 338, 338, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 338, nil, nil, 338, 338, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, 343, 343, 343, 343, 343, - 343, 343, 343, 343, 343, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 343, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, 347, 347, 347, 347, 347, 347, - 347, 347, 347, 347, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 347, nil, nil, nil, 347, 349, 349, - 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 349, 349, 349, 349, 349, - 349, 349, 349, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 349, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, 352, 352, 352, 352, 352, 352, 352, 352, - 352, 352, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 352, 358, 358, 358, 358, - 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, - 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, - 358, 358, 358, 358, 358, 358, 358, 358, 358, 358, - 358, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 358, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 364, 364, 364, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 364, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, 372, - 372, 372, 372, 372, 372, 372, 372, 372, 372, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 372, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, 373, 373, - 373, 373, 373, 373, 373, 373, 373, 373, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 373, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 395, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 398, - 398, 398, 398, 398, 398, 398, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 398, - 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, - 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, - 405, 405, 405, 405, 405, 405, 405, 405, 405, 405, - 405, 405, 405, 405, 405, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 405, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 452, 452, 452, 452, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 452 ] - -racc_action_pointer = [ - 81, 132, 172, -7, nil, nil, nil, nil, 209, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 66, - nil, nil, -2, 76, 182, nil, nil, 160, nil, 1805, - nil, 328, 219, 324, nil, 225, nil, nil, nil, nil, - 117, nil, 342, 229, nil, nil, nil, nil, nil, nil, - nil, nil, 1838, nil, 1871, 82, 1904, -7, 1155, 103, - nil, 1937, 1970, 2003, 4409, nil, 348, nil, nil, nil, - 288, nil, 120, 214, -42, nil, nil, nil, 2036, nil, - 2069, 2102, 2135, nil, nil, 2168, 178, 322, 317, 324, - 296, nil, 397, -3, 263, 354, 311, 362, nil, 4442, - 2201, 2234, 2267, 2300, 2333, 2366, 2399, 2432, 2465, 2498, - 2531, 2564, 2597, 2630, 2663, 2696, 2729, 2762, 2795, 2828, - 2861, 2894, 2927, 2960, 2993, 3026, 3059, 3092, 3125, 3158, - 3191, 3224, 3257, 3290, 3323, 3356, 3389, 3422, 160, 1045, - 381, 388, 4475, -89, nil, 4886, 347, 1218, 401, nil, - 402, 404, nil, nil, 394, -70, 4935, -75, nil, 4984, - 398, 137, 143, nil, 3455, 1252, 400, nil, 5033, 400, - 447, 1316, nil, 3488, 399, 121, 1350, nil, 404, 5082, - 3521, 126, -25, 405, 452, 398, 192, 273, 3554, 404, - nil, 3587, 3620, 3653, 3686, nil, nil, nil, nil, 456, - 127, 5131, 38, 400, 479, 4519, 4572, 483, 484, 485, - 145, 562, 460, 129, nil, 1414, nil, nil, nil, nil, - 569, 660, 283, 751, 842, 5180, 1170, 1266, 1364, 1462, - 1560, 1657, 1755, 3831, 5229, 388, 466, 472, 4507, 4560, - 4613, 4666, 4719, 4772, 4824, 4873, 4928, 516, 780, 406, - 407, 871, 408, 5247, 5296, 5345, 5394, 5443, 1121, 5492, - 413, 3719, nil, nil, nil, nil, 185, 1448, 417, nil, - 3752, nil, 3785, nil, 1512, 3818, 1546, 135, 144, nil, - nil, 218, 231, 54, 145, 233, 155, 67, 3881, 5541, - 256, 3914, 5590, 418, 3947, 1610, 5639, 419, 42, 419, - 423, 423, 1644, 5688, 145, 470, nil, 5737, 5786, 5835, - 5884, 5933, 472, 185, 188, 225, 3980, 4013, 568, 4046, - 653, nil, 571, 4079, 574, 575, 4112, 4145, 4178, nil, - 29, 385, 55, -26, 499, 517, 521, 4211, 5982, 519, - nil, 4244, nil, 6031, 573, 525, nil, 6080, nil, 6129, - nil, nil, 6178, 562, nil, 562, 563, nil, 6227, 577, - 191, nil, 1707, nil, 6276, 4277, nil, 627, 628, -20, - -9, nil, 6325, 6374, nil, 973, 3, nil, 1050, nil, - nil, 4625, 4678, 4731, nil, 642, 389, 325, nil, 648, - nil, 688, 652, 1741, nil, 6423, nil, nil, 6472, nil, - nil, nil, nil, 213, 612, 6521, nil, nil, 696, nil, - 241, 614, 623, nil, nil, nil, 370, 677, 4310, nil, - 734, 736, 741, 742, nil, 720, nil, nil, 716, 670, - 214, nil, 721, -7, 722, 4343, nil, 4376, 744, 4784, - nil, nil, nil, nil, nil, 739, nil, 111, 696, 703, - nil, 113, 6570, 4837, 66, 835, 786, 787, 753, 791, - 926, 76, nil, nil, 114, nil, 100, 792, nil ] - -racc_action_default = [ - -1, -259, -2, -3, -4, -8, -9, -10, -11, -12, - -13, -14, -15, -16, -17, -18, -19, -20, -21, -22, - -23, -24, -25, -26, -27, -29, -30, -31, -32, -116, - -34, -35, -36, -37, -38, -39, -40, -49, -50, -51, - -52, -53, -54, -55, -56, -57, -58, -59, -60, -63, - -64, -65, -69, -72, -75, -259, -116, -116, -119, -116, - -115, -116, -116, -116, -116, -168, -259, -177, -179, -180, - -259, -184, -116, -116, -116, -200, -201, -202, -217, -219, - -116, -116, -116, -228, -229, -116, -116, -259, -116, -116, - -257, -258, -259, -7, -116, -6, -259, -259, -188, -116, - -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, - -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, - -116, -116, -116, -116, -116, -116, -116, -116, -116, -116, - -116, -116, -116, -116, -116, -116, -116, -116, -83, -116, - -28, -259, -116, -26, -31, -259, -259, -116, -80, -94, - -79, -81, -61, -62, -182, -259, -70, -259, -76, -259, - -259, -183, -185, -189, -116, -116, -101, -102, -127, -35, - -37, -116, -54, -69, -259, -259, -116, -107, -120, -123, - -116, -111, -116, -109, -259, -164, -165, -166, -116, -259, - -167, -116, -116, -116, -116, -181, -186, -187, -117, -259, - -259, -218, -214, -259, -259, -259, -259, -259, -259, -259, - -237, -245, -259, -259, -255, -116, 469, -5, -183, -170, - -129, -130, -131, -132, -133, -134, -135, -136, -137, -138, - -139, -140, -141, -142, -143, -144, -145, -146, -147, -148, - -149, -150, -151, -152, -153, -154, -155, -156, -157, -158, - -159, -160, -161, -162, -163, -222, -225, -259, -116, -259, - -259, -93, -97, -96, -169, -41, -33, -116, -259, -95, - -116, -67, -116, -73, -116, -116, -116, -259, -190, -191, - -192, -29, -30, -35, -36, -37, -39, -52, -75, -259, - -259, -116, -123, -259, -116, -116, -123, -259, -259, -83, - -259, -259, -116, -124, -259, -116, -110, -259, -171, -172, - -173, -174, -259, -204, -203, -207, -116, -116, -259, -116, - -116, -246, -259, -116, -259, -259, -116, -116, -116, -234, - -259, -259, -244, -259, -105, -122, -259, -116, -259, -259, - -86, -91, -87, -92, -82, -84, -99, -259, -68, -71, - -74, -77, -78, -259, -193, -259, -259, -100, -128, -259, - -259, -103, -116, -106, -125, -116, -108, -259, -116, -259, - -208, -205, -215, -216, -220, -259, -244, -223, -259, -227, - -230, -259, -259, -259, -235, -259, -259, -243, -238, -259, - -242, -259, -116, -116, -256, -226, -88, -89, -90, -66, - -98, -194, -195, -114, -259, -126, -112, -118, -259, -206, - -259, -259, -209, -210, -221, -247, -248, -259, -116, -224, - -259, -259, -259, -259, -240, -259, -239, -253, -259, -259, - -113, -196, -207, -259, -207, -116, -249, -116, -116, -259, - -231, -232, -233, -236, -241, -259, -104, -259, -259, -211, - -212, -259, -213, -259, -250, -116, -259, -259, -207, -259, - -116, -251, -254, -197, -259, -198, -252, -259, -199 ] - -racc_goto_table = [ - 2, 154, 3, 95, 27, 169, 27, 96, 210, 98, - 390, 170, 148, 281, 155, 151, 183, 369, 413, 260, - 389, 415, 172, 318, 322, 1, 282, 217, 140, 356, - 284, 286, 209, 351, 166, 214, 97, 200, 335, 336, - 190, 207, 410, 202, 177, 330, 416, nil, nil, nil, - nil, 208, nil, nil, 154, nil, nil, nil, nil, nil, - nil, 436, nil, nil, nil, 390, nil, nil, nil, nil, - nil, 96, 96, 196, 197, 425, nil, nil, nil, nil, - nil, 450, nil, nil, nil, 175, nil, 184, nil, nil, - nil, nil, 160, 95, nil, nil, 145, nil, 27, 27, - 97, 97, 198, 219, nil, nil, 181, nil, nil, nil, - nil, nil, 283, nil, 97, nil, 212, 213, 285, 156, - nil, 159, nil, 168, nil, 179, 324, 325, 185, 186, - 187, 162, 299, 268, 447, 298, 451, 281, 339, 304, - 281, 280, nil, 291, nil, 201, 264, 203, 204, 205, - 282, 293, 206, 282, 284, 286, nil, 284, 286, nil, - 464, nil, 301, nil, nil, nil, nil, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, nil, 259, nil, nil, nil, - 184, 287, 300, 332, 179, 27, nil, nil, nil, nil, - nil, nil, nil, nil, 345, nil, nil, nil, nil, 181, - nil, 289, 292, nil, nil, nil, 283, 315, 296, 283, - 156, nil, 285, 292, nil, 285, 344, 303, nil, nil, - 334, 162, 388, nil, 391, 307, nil, 280, 308, 309, - 310, 311, 353, nil, 148, nil, 151, 291, nil, 355, - nil, nil, nil, nil, nil, nil, 314, nil, nil, nil, - nil, 359, 179, nil, nil, nil, nil, nil, nil, 314, - 408, nil, nil, 280, nil, nil, nil, nil, nil, nil, - nil, nil, 420, 421, 422, nil, 423, 424, nil, nil, - 426, nil, nil, nil, nil, nil, nil, nil, 345, nil, - nil, nil, 376, nil, 27, 338, nil, nil, 343, nil, - nil, nil, 95, 367, 179, 287, 143, 347, 287, 349, - 344, 159, 352, 179, nil, nil, 444, nil, 404, nil, - nil, nil, nil, nil, nil, 159, nil, nil, 289, nil, - nil, 358, 179, nil, 174, nil, 456, nil, 457, 364, - nil, 189, 459, nil, nil, nil, 95, nil, 387, 429, - nil, nil, nil, 372, 373, 467, 375, nil, nil, nil, - 378, nil, nil, 381, 382, 383, 407, nil, nil, nil, - nil, nil, nil, nil, 395, nil, 189, nil, 398, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 428, nil, nil, nil, nil, nil, nil, nil, nil, 179, - nil, nil, 405, 387, nil, nil, nil, nil, nil, nil, - 454, nil, 27, nil, nil, nil, nil, nil, nil, 189, - nil, nil, nil, nil, 95, nil, nil, 461, nil, 27, - 179, 95, 466, nil, 27, nil, 95, nil, nil, nil, - nil, nil, 143, nil, nil, nil, nil, nil, 143, nil, - nil, nil, nil, 143, nil, 439, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 143, nil, nil, nil, nil, - nil, nil, 452, nil, 453 ] - -racc_goto_check = [ - 2, 50, 3, 2, 28, 31, 28, 42, 70, 64, - 40, 33, 49, 26, 45, 49, 58, 69, 72, 52, - 76, 77, 41, 74, 74, 1, 27, 4, 25, 37, - 32, 35, 44, 48, 56, 57, 53, 59, 60, 61, - 62, 65, 71, 73, 55, 75, 78, nil, nil, nil, - nil, 41, nil, nil, 50, nil, nil, nil, nil, nil, - nil, 77, nil, nil, nil, 40, nil, nil, nil, nil, - nil, 42, 42, 64, 64, 76, nil, nil, nil, nil, - nil, 72, nil, nil, nil, 53, nil, 53, nil, nil, - nil, nil, 54, 2, nil, nil, 22, nil, 28, 28, - 53, 53, 53, 28, nil, nil, 38, nil, nil, nil, - nil, nil, 31, nil, 53, nil, 53, 53, 33, 22, - nil, 22, nil, 22, nil, 22, 70, 70, 22, 22, - 22, 66, 50, 55, 69, 45, 69, 26, 52, 58, - 26, 67, nil, 67, nil, 22, 28, 22, 22, 22, - 27, 55, 22, 27, 32, 35, nil, 32, 35, nil, - 69, nil, 55, nil, nil, nil, nil, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, 22, nil, 22, nil, nil, nil, - 53, 38, 54, 3, 22, 28, nil, nil, nil, nil, - nil, nil, nil, nil, 50, nil, nil, nil, nil, 38, - nil, 22, 22, nil, nil, nil, 31, 54, 22, 31, - 22, nil, 33, 22, nil, 33, 49, 22, nil, nil, - 54, 66, 70, nil, 70, 22, nil, 67, 22, 22, - 22, 22, 55, nil, 49, nil, 49, 67, nil, 67, - nil, nil, nil, nil, nil, nil, 66, nil, nil, nil, - nil, 55, 22, nil, nil, nil, nil, nil, nil, 66, - 70, nil, nil, 67, nil, nil, nil, nil, nil, nil, - nil, nil, 70, 70, 70, nil, 70, 70, nil, nil, - 70, nil, nil, nil, nil, nil, nil, nil, 50, nil, - nil, nil, 3, nil, 28, 22, nil, nil, 22, nil, - nil, nil, 2, 53, 22, 38, 23, 22, 38, 22, - 49, 22, 22, 22, nil, nil, 70, nil, 55, nil, - nil, nil, nil, nil, nil, 22, nil, nil, 22, nil, - nil, 22, 22, nil, 23, nil, 70, nil, 70, 22, - nil, 23, 70, nil, nil, nil, 2, nil, 38, 55, - nil, nil, nil, 22, 22, 70, 22, nil, nil, nil, - 22, nil, nil, 22, 22, 22, 53, nil, nil, nil, - nil, nil, nil, nil, 22, nil, 23, nil, 22, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 53, nil, nil, nil, nil, nil, nil, nil, nil, 22, - nil, nil, 22, 38, nil, nil, nil, nil, nil, nil, - 3, nil, 28, nil, nil, nil, nil, nil, nil, 23, - nil, nil, nil, nil, 2, nil, nil, 3, nil, 28, - 22, 2, 3, nil, 28, nil, 2, nil, nil, nil, - nil, nil, 23, nil, nil, nil, nil, nil, 23, nil, - nil, nil, nil, 23, nil, 22, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 23, nil, nil, nil, nil, - nil, nil, 22, nil, 22 ] - -racc_goto_pointer = [ - nil, 25, 0, 2, -68, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 67, 307, nil, 4, -151, -138, 4, nil, - nil, -52, -134, -46, nil, -133, nil, -262, 47, nil, - -321, -35, -1, nil, -54, -38, nil, nil, -241, -20, - -42, nil, -120, 28, 37, -14, -22, -54, -43, -37, - -177, -176, -24, nil, 1, -45, 76, -21, nil, -298, - -79, -328, -352, -35, -180, -165, -311, -355, -330 ] - -racc_goto_default = [ - nil, nil, 94, 93, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, nil, 25, 26, 144, 28, - 30, 31, 32, 33, 34, 35, 36, 290, 40, 39, - 41, 42, 43, 51, 67, nil, 53, 157, 158, 150, - 138, 68, nil, 55, nil, 297, nil, nil, nil, nil, - 178, nil, 65, 66, 71, 69, 278, 163, 74, nil, - 321, nil, nil, nil, nil, nil, nil, nil, nil ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 0, 99, :_reduce_1, - 1, 99, :_reduce_2, - 1, 99, :_reduce_3, - 1, 101, :_reduce_4, - 3, 101, :_reduce_5, - 2, 101, :_reduce_6, - 2, 101, :_reduce_7, - 1, 102, :_reduce_8, - 1, 102, :_reduce_9, - 1, 102, :_reduce_10, - 1, 102, :_reduce_11, - 1, 102, :_reduce_12, - 1, 102, :_reduce_13, - 1, 102, :_reduce_14, - 1, 102, :_reduce_15, - 1, 102, :_reduce_16, - 1, 102, :_reduce_17, - 1, 102, :_reduce_18, - 1, 102, :_reduce_19, - 1, 102, :_reduce_20, - 1, 102, :_reduce_21, - 1, 102, :_reduce_22, - 1, 102, :_reduce_23, - 1, 102, :_reduce_24, - 1, 102, :_reduce_25, - 1, 120, :_reduce_26, - 1, 120, :_reduce_27, - 2, 120, :_reduce_28, - 1, 120, :_reduce_29, - 1, 120, :_reduce_30, - 1, 120, :_reduce_31, - 1, 120, :_reduce_32, - 3, 120, :_reduce_33, - 1, 121, :_reduce_34, - 1, 121, :_reduce_35, - 1, 121, :_reduce_36, - 1, 121, :_reduce_37, - 1, 121, :_reduce_38, - 1, 121, :_reduce_39, - 1, 121, :_reduce_40, - 3, 121, :_reduce_41, - 1, 135, :_reduce_42, - 1, 135, :_reduce_43, - 1, 135, :_reduce_44, - 1, 135, :_reduce_45, - 1, 135, :_reduce_46, - 1, 135, :_reduce_47, - 1, 135, :_reduce_48, - 1, 100, :_reduce_49, - 1, 100, :_reduce_50, - 1, 132, :_reduce_51, - 1, 132, :_reduce_52, - 1, 132, :_reduce_53, - 1, 132, :_reduce_54, - 1, 132, :_reduce_55, - 1, 132, :_reduce_56, - 1, 132, :_reduce_57, - 1, 137, :_reduce_58, - 1, 136, :_reduce_59, - 1, 136, :_reduce_60, - 2, 136, :_reduce_61, - 2, 136, :_reduce_62, - 1, 138, :_reduce_63, - 1, 140, :_reduce_64, - 1, 139, :_reduce_65, - 5, 142, :_reduce_66, - 3, 141, :_reduce_67, - 4, 141, :_reduce_68, - 0, 143, :_reduce_69, - 1, 143, :_reduce_70, - 3, 143, :_reduce_71, - 1, 122, :_reduce_72, - 3, 144, :_reduce_73, - 4, 144, :_reduce_74, - 0, 145, :_reduce_75, - 1, 145, :_reduce_76, - 3, 145, :_reduce_77, - 3, 146, :_reduce_78, - 2, 129, :_reduce_79, - 2, 129, :_reduce_80, - 2, 129, :_reduce_81, - 4, 129, :_reduce_82, - 2, 130, :_reduce_83, - 4, 130, :_reduce_84, - 2, 149, :_reduce_85, - 3, 148, :_reduce_86, - 3, 148, :_reduce_87, - 4, 148, :_reduce_88, - 4, 148, :_reduce_89, - 3, 150, :_reduce_90, - 2, 150, :_reduce_91, - 2, 150, :_reduce_92, - 1, 150, :_reduce_93, - 1, 147, :_reduce_94, - 2, 147, :_reduce_95, - 2, 123, :_reduce_96, - 2, 123, :_reduce_97, - 5, 133, :_reduce_98, - 4, 133, :_reduce_99, - 4, 133, :_reduce_100, - 2, 133, :_reduce_101, - 2, 133, :_reduce_102, - 4, 133, :_reduce_103, - 5, 155, :_reduce_104, - 2, 155, :_reduce_105, - 4, 115, :_reduce_106, - 2, 115, :_reduce_107, - 4, 116, :_reduce_108, - 2, 116, :_reduce_109, - 2, 156, :_reduce_110, - 1, 156, :_reduce_111, - 4, 156, :_reduce_112, - 6, 103, :_reduce_113, - 5, 103, :_reduce_114, - 1, 151, :_reduce_115, - 0, 151, :_reduce_116, - 1, 157, :_reduce_117, - 4, 157, :_reduce_118, - 0, 153, :_reduce_119, - 1, 153, :_reduce_120, - 0, 159, :_reduce_121, - 1, 159, :_reduce_122, - 1, 158, :_reduce_123, - 2, 158, :_reduce_124, - 3, 158, :_reduce_125, - 4, 158, :_reduce_126, - 1, 154, :_reduce_127, - 3, 154, :_reduce_128, - 3, 124, :_reduce_129, - 3, 124, :_reduce_130, - 3, 124, :_reduce_131, - 3, 124, :_reduce_132, - 3, 124, :_reduce_133, - 3, 124, :_reduce_134, - 3, 124, :_reduce_135, - 3, 124, :_reduce_136, - 3, 124, :_reduce_137, - 3, 124, :_reduce_138, - 3, 124, :_reduce_139, - 3, 124, :_reduce_140, - 3, 124, :_reduce_141, - 3, 124, :_reduce_142, - 3, 124, :_reduce_143, - 3, 124, :_reduce_144, - 3, 124, :_reduce_145, - 3, 124, :_reduce_146, - 3, 124, :_reduce_147, - 3, 124, :_reduce_148, - 3, 124, :_reduce_149, - 3, 124, :_reduce_150, - 3, 124, :_reduce_151, - 3, 124, :_reduce_152, - 3, 124, :_reduce_153, - 3, 124, :_reduce_154, - 3, 124, :_reduce_155, - 3, 124, :_reduce_156, - 3, 124, :_reduce_157, - 3, 124, :_reduce_158, - 3, 124, :_reduce_159, - 3, 124, :_reduce_160, - 3, 124, :_reduce_161, - 3, 124, :_reduce_162, - 3, 124, :_reduce_163, - 2, 128, :_reduce_164, - 2, 128, :_reduce_165, - 2, 128, :_reduce_166, - 2, 126, :_reduce_167, - 1, 126, :_reduce_168, - 3, 117, :_reduce_169, - 3, 117, :_reduce_170, - 3, 160, :_reduce_171, - 3, 160, :_reduce_172, - 3, 160, :_reduce_173, - 3, 160, :_reduce_174, - 1, 161, :_reduce_175, - 1, 161, :_reduce_176, - 1, 161, :_reduce_177, - 1, 161, :_reduce_178, - 1, 161, :_reduce_179, - 1, 162, :_reduce_180, - 2, 162, :_reduce_181, - 2, 162, :_reduce_182, - 2, 163, :_reduce_183, - 1, 131, :_reduce_184, - 2, 131, :_reduce_185, - 2, 106, :_reduce_186, - 2, 106, :_reduce_187, - 2, 106, :_reduce_188, - 1, 164, :_reduce_189, - 2, 164, :_reduce_190, - 2, 164, :_reduce_191, - 2, 164, :_reduce_192, - 3, 165, :_reduce_193, - 4, 165, :_reduce_194, - 4, 165, :_reduce_195, - 6, 104, :_reduce_196, - 9, 104, :_reduce_197, - 9, 104, :_reduce_198, - 11, 104, :_reduce_199, - 1, 166, :_reduce_200, - 1, 166, :_reduce_201, - 1, 166, :_reduce_202, - 1, 152, :_reduce_203, - 1, 152, :_reduce_204, - 1, 167, :_reduce_205, - 2, 167, :_reduce_206, - 0, 167, :_reduce_207, - 0, 169, :_reduce_208, - 1, 169, :_reduce_209, - 1, 169, :_reduce_210, - 3, 169, :_reduce_211, - 3, 169, :_reduce_212, - 3, 170, :_reduce_213, - 2, 105, :_reduce_214, - 4, 105, :_reduce_215, - 4, 105, :_reduce_216, - 0, 171, :_reduce_217, - 1, 171, :_reduce_218, - 1, 114, :_reduce_219, - 4, 118, :_reduce_220, - 5, 118, :_reduce_221, - 3, 118, :_reduce_222, - 4, 119, :_reduce_223, - 5, 119, :_reduce_224, - 3, 119, :_reduce_225, - 5, 125, :_reduce_226, - 4, 109, :_reduce_227, - 1, 113, :_reduce_228, - 1, 113, :_reduce_229, - 4, 110, :_reduce_230, - 6, 108, :_reduce_231, - 6, 108, :_reduce_232, - 6, 108, :_reduce_233, - 3, 111, :_reduce_234, - 4, 111, :_reduce_235, - 6, 111, :_reduce_236, - 0, 173, :_reduce_237, - 2, 173, :_reduce_238, - 3, 173, :_reduce_239, - 3, 173, :_reduce_240, - 4, 173, :_reduce_241, - 1, 174, :_reduce_242, - 1, 174, :_reduce_243, - 2, 168, :_reduce_244, - 1, 168, :_reduce_245, - 1, 172, :_reduce_246, - 3, 172, :_reduce_247, - 3, 172, :_reduce_248, - 4, 172, :_reduce_249, - 3, 175, :_reduce_250, - 4, 176, :_reduce_251, - 5, 176, :_reduce_252, - 5, 112, :_reduce_253, - 8, 112, :_reduce_254, - 2, 134, :_reduce_255, - 4, 127, :_reduce_256, - 1, 127, :_reduce_257, - 1, 107, :_reduce_258 ] - -racc_reduce_n = 259 - -racc_shift_n = 469 - -racc_token_table = { - false => 0, - :error => 1, - :IF => 2, - :ELSE => 3, - :ELSEIF => 4, - :THEN => 5, - :UNLESS => 6, - :END => 7, - :WHILE => 8, - :UNTIL => 9, - :BREAK => 10, - :CONTINUE => 11, - :TRY => 12, - :CATCH => 13, - :FINALLY => 14, - :FOR => 15, - :IN => 16, - :DEF => 17, - :DEF_BANG => 18, - :SPLAT_PARAM => 19, - :SPLAT_ARG => 20, - :CALL => 21, - :BUILTIN_COMMAND => 22, - :CLASS => 23, - :NEW => 24, - :DEFM => 25, - :DEFM_BANG => 26, - :SUPER => 27, - :RIML_FILE_COMMAND => 28, - :RIML_CLASS_COMMAND => 29, - :RETURN => 30, - :NEWLINE => 31, - :NUMBER => 32, - :STRING_D => 33, - :STRING_S => 34, - :EX_LITERAL => 35, - :REGEXP => 36, - :TRUE => 37, - :FALSE => 38, - :LET => 39, - :UNLET => 40, - :UNLET_BANG => 41, - :IDENTIFIER => 42, - :DICT_VAL => 43, - :SCOPE_MODIFIER => 44, - :SCOPE_MODIFIER_LITERAL => 45, - :SPECIAL_VAR_PREFIX => 46, - :FINISH => 47, - "!" => 48, - "*" => 49, - "/" => 50, - "%" => 51, - "+" => 52, - "-" => 53, - "." => 54, - ">" => 55, - ">#" => 56, - ">?" => 57, - "<" => 58, - "<#" => 59, - "<?" => 60, - ">=" => 61, - ">=#" => 62, - ">=?" => 63, - "<=" => 64, - "<=#" => 65, - "<=?" => 66, - "==" => 67, - "==?" => 68, - "==#" => 69, - "=~" => 70, - "=~?" => 71, - "=~#" => 72, - "!~" => 73, - "!~?" => 74, - "!~#" => 75, - "!=" => 76, - "!=?" => 77, - "!=#" => 78, - :IS => 79, - :ISNOT => 80, - "&&" => 81, - "||" => 82, - "?" => 83, - "=" => 84, - "+=" => 85, - "-=" => 86, - ".=" => 87, - "," => 88, - "(" => 89, - ")" => 90, - ";" => 91, - "[" => 92, - "]" => 93, - "{" => 94, - "}" => 95, - ":" => 96, - "===" => 97 } - -racc_nt_base = 98 - -racc_use_result_var = true - -Racc_arg = [ - racc_action_table, - racc_action_check, - racc_action_default, - racc_action_pointer, - racc_goto_table, - racc_goto_check, - racc_goto_default, - racc_goto_pointer, - racc_nt_base, - racc_reduce_table, - racc_token_table, - racc_shift_n, - racc_reduce_n, - racc_use_result_var ] - -Racc_token_to_s_table = [ - "$end", - "error", - "IF", - "ELSE", - "ELSEIF", - "THEN", - "UNLESS", - "END", - "WHILE", - "UNTIL", - "BREAK", - "CONTINUE", - "TRY", - "CATCH", - "FINALLY", - "FOR", - "IN", - "DEF", - "DEF_BANG", - "SPLAT_PARAM", - "SPLAT_ARG", - "CALL", - "BUILTIN_COMMAND", - "CLASS", - "NEW", - "DEFM", - "DEFM_BANG", - "SUPER", - "RIML_FILE_COMMAND", - "RIML_CLASS_COMMAND", - "RETURN", - "NEWLINE", - "NUMBER", - "STRING_D", - "STRING_S", - "EX_LITERAL", - "REGEXP", - "TRUE", - "FALSE", - "LET", - "UNLET", - "UNLET_BANG", - "IDENTIFIER", - "DICT_VAL", - "SCOPE_MODIFIER", - "SCOPE_MODIFIER_LITERAL", - "SPECIAL_VAR_PREFIX", - "FINISH", - "\"!\"", - "\"*\"", - "\"/\"", - "\"%\"", - "\"+\"", - "\"-\"", - "\".\"", - "\">\"", - "\">#\"", - "\">?\"", - "\"<\"", - "\"<#\"", - "\"<?\"", - "\">=\"", - "\">=#\"", - "\">=?\"", - "\"<=\"", - "\"<=#\"", - "\"<=?\"", - "\"==\"", - "\"==?\"", - "\"==#\"", - "\"=~\"", - "\"=~?\"", - "\"=~#\"", - "\"!~\"", - "\"!~?\"", - "\"!~#\"", - "\"!=\"", - "\"!=?\"", - "\"!=#\"", - "IS", - "ISNOT", - "\"&&\"", - "\"||\"", - "\"?\"", - "\"=\"", - "\"+=\"", - "\"-=\"", - "\".=\"", - "\",\"", - "\"(\"", - "\")\"", - "\";\"", - "\"[\"", - "\"]\"", - "\"{\"", - "\"}\"", - "\":\"", - "\"===\"", - "$start", - "Root", - "Terminator", - "Statements", - "Statement", - "ExplicitCall", - "Def", - "Return", - "UnletVariable", - "ExLiteral", - "For", - "While", - "Until", - "Try", - "ClassDefinition", - "LoopKeyword", - "EndScript", - "RimlFileCommand", - "RimlClassCommand", - "MultiAssign", - "If", - "Unless", - "Expression", - "ExpressionWithoutDictLiteral", - "Dictionary", - "DictGetWithDotLiteral", - "BinaryOperator", - "Ternary", - "Assign", - "Super", - "UnaryOperator", - "DictGet", - "ListOrDictGet", - "AllVariableRetrieval", - "LiteralWithoutDictLiteral", - "Call", - "ObjectInstantiation", - "PossibleStringValue", - "String", - "Number", - "Regexp", - "List", - "ScopeModifierLiteral", - "ListLiteral", - "ListUnpack", - "ListItems", - "DictionaryLiteral", - "DictItems", - "DictItem", - "DictGetWithDot", - "ListOrDictGetWithBrackets", - "ListOrDictGetAssign", - "SubList", - "Scope", - "DefCallIdentifier", - "ArgList", - "ArgListWithoutNothing", - "ObjectInstantiationCall", - "ClassArgList", - "SIDAndScope", - "ArgListWithoutNothingWithSplat", - "ArgListWithSplat", - "AssignExpression", - "AssignLHS", - "VariableRetrieval", - "SimpleVariableRetrieval", - "CurlyBraceName", - "CurlyBraceVarPart", - "FunctionType", - "DefKeywords", - "Block", - "ParamList", - "DefaultParam", - "Returnable", - "IfBlock", - "Catch", - "Catchable", - "ElseBlock", - "ElseifBlock" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'riml.y', 61) - def _reduce_1(val, _values, result) - result = make_node(val) { |_| Riml::Nodes.new([]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 62) - def _reduce_2(val, _values, result) - result = make_node(val) { |_| Riml::Nodes.new([]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 63) - def _reduce_3(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 68) - def _reduce_4(val, _values, result) - result = make_node(val) { |v| Riml::Nodes.new([ v[0] ]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 69) - def _reduce_5(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 70) - def _reduce_6(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 71) - def _reduce_7(val, _values, result) - result = make_node(val) { |v| Riml::Nodes.new(v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 76) - def _reduce_8(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 77) - def _reduce_9(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 78) - def _reduce_10(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 79) - def _reduce_11(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 80) - def _reduce_12(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 81) - def _reduce_13(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 82) - def _reduce_14(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 83) - def _reduce_15(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 84) - def _reduce_16(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 85) - def _reduce_17(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 86) - def _reduce_18(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 87) - def _reduce_19(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 88) - def _reduce_20(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 89) - def _reduce_21(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 90) - def _reduce_22(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 91) - def _reduce_23(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 92) - def _reduce_24(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 93) - def _reduce_25(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 97) - def _reduce_26(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 98) - def _reduce_27(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 99) - def _reduce_28(val, _values, result) - result = make_node(val) { |v| Riml::DictGetDotNode.new(v[0], v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 100) - def _reduce_29(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 101) - def _reduce_30(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 102) - def _reduce_31(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 103) - def _reduce_32(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 104) - def _reduce_33(val, _values, result) - result = make_node(val) { |v| Riml::WrapInParensNode.new(v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 108) - def _reduce_34(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 109) - def _reduce_35(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 110) - def _reduce_36(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 111) - def _reduce_37(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 112) - def _reduce_38(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 113) - def _reduce_39(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 114) - def _reduce_40(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 115) - def _reduce_41(val, _values, result) - result = make_node(val) { |v| Riml::WrapInParensNode.new(v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 120) - def _reduce_42(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 121) - def _reduce_43(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 122) - def _reduce_44(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 123) - def _reduce_45(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 124) - def _reduce_46(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 125) - def _reduce_47(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 126) - def _reduce_48(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 130) - def _reduce_49(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 131) - def _reduce_50(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 135) - def _reduce_51(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 136) - def _reduce_52(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 137) - def _reduce_53(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 138) - def _reduce_54(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 139) - def _reduce_55(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 140) - def _reduce_56(val, _values, result) - result = make_node(val) { |_| Riml::TrueNode.new } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 141) - def _reduce_57(val, _values, result) - result = make_node(val) { |_| Riml::FalseNode.new } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 145) - def _reduce_58(val, _values, result) - result = make_node(val) { |v| Riml::NumberNode.new(v[0]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 149) - def _reduce_59(val, _values, result) - result = make_node(val) { |v| Riml::StringNode.new(v[0], :s) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 150) - def _reduce_60(val, _values, result) - result = make_node(val) { |v| Riml::StringNode.new(v[0], :d) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 151) - def _reduce_61(val, _values, result) - result = make_node(val) { |v| Riml::StringLiteralConcatNode.new(v[0], Riml::StringNode.new(v[1], :s)) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 152) - def _reduce_62(val, _values, result) - result = make_node(val) { |v| Riml::StringLiteralConcatNode.new(v[0], Riml::StringNode.new(v[1], :d)) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 156) - def _reduce_63(val, _values, result) - result = make_node(val) { |v| Riml::RegexpNode.new(v[0]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 160) - def _reduce_64(val, _values, result) - result = make_node(val) { |v| Riml::ScopeModifierLiteralNode.new(v[0]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 164) - def _reduce_65(val, _values, result) - result = make_node(val) { |v| Riml::ListNode.new(v[0]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 168) - def _reduce_66(val, _values, result) - result = make_node(val) { |v| Riml::ListUnpackNode.new(v[1] << v[3]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 172) - def _reduce_67(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 173) - def _reduce_68(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 177) - def _reduce_69(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 178) - def _reduce_70(val, _values, result) - result = [val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 179) - def _reduce_71(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 183) - def _reduce_72(val, _values, result) - result = make_node(val) { |v| Riml::DictionaryNode.new(v[0]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 190) - def _reduce_73(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 191) - def _reduce_74(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 196) - def _reduce_75(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 197) - def _reduce_76(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 198) - def _reduce_77(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 203) - def _reduce_78(val, _values, result) - result = [val[0], val[2]] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 207) - def _reduce_79(val, _values, result) - result = make_node(val) { |v| Riml::DictGetDotNode.new(v[0], v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 208) - def _reduce_80(val, _values, result) - result = make_node(val) { |v| Riml::DictGetDotNode.new(v[0], v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 209) - def _reduce_81(val, _values, result) - result = make_node(val) { |v| Riml::DictGetDotNode.new(v[0], v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 210) - def _reduce_82(val, _values, result) - result = make_node(val) { |v| Riml::DictGetDotNode.new(Riml::WrapInParensNode.new(v[1]), v[3]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 214) - def _reduce_83(val, _values, result) - result = make_node(val) { |v| Riml::ListOrDictGetNode.new(v[0], v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 215) - def _reduce_84(val, _values, result) - result = make_node(val) { |v| Riml::ListOrDictGetNode.new(Riml::WrapInParensNode.new(v[1]), v[3]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 219) - def _reduce_85(val, _values, result) - result = make_node(val) { |v| Riml::ListOrDictGetNode.new(v[0], v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 223) - def _reduce_86(val, _values, result) - result = [val[1]] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 224) - def _reduce_87(val, _values, result) - result = [val[1]] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 225) - def _reduce_88(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 226) - def _reduce_89(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 230) - def _reduce_90(val, _values, result) - result = make_node(val) { |v| Riml::SublistNode.new([v[0], Riml::LiteralNode.new(' : '), v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 231) - def _reduce_91(val, _values, result) - result = make_node(val) { |v| Riml::SublistNode.new([v[0], Riml::LiteralNode.new(' :')]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 232) - def _reduce_92(val, _values, result) - result = make_node(val) { |v| Riml::SublistNode.new([Riml::LiteralNode.new(': '), v[1]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 233) - def _reduce_93(val, _values, result) - result = make_node(val) { |_| Riml::SublistNode.new([Riml::LiteralNode.new(':')]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 237) - def _reduce_94(val, _values, result) - result = [val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 238) - def _reduce_95(val, _values, result) - result = val[0] << val[1] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 242) - def _reduce_96(val, _values, result) - result = [val[1]] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 243) - def _reduce_97(val, _values, result) - result = val[0] << val[1] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 247) - def _reduce_98(val, _values, result) - result = make_node(val) { |v| Riml::CallNode.new(v[0], v[1], v[3]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 248) - def _reduce_99(val, _values, result) - result = make_node(val) { |v| Riml::CallNode.new(nil, v[0], v[2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 249) - def _reduce_100(val, _values, result) - result = make_node(val) { |v| Riml::CallNode.new(nil, v[0], v[2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 250) - def _reduce_101(val, _values, result) - result = make_node(val) { |v| Riml::CallNode.new(nil, v[0], v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 251) - def _reduce_102(val, _values, result) - result = make_node(val) { |v| Riml::CallNode.new(nil, v[0], []) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 252) - def _reduce_103(val, _values, result) - result = make_node(val) { |v| Riml::ExplicitCallNode.new(nil, nil, v[2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 256) - def _reduce_104(val, _values, result) - result = make_node(val) { |v| Riml::CallNode.new(v[0], v[1], v[3]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 257) - def _reduce_105(val, _values, result) - result = make_node(val) { |v| Riml::CallNode.new(v[0], v[1], []) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 261) - def _reduce_106(val, _values, result) - result = make_node(val) { |v| Riml::RimlFileCommandNode.new(nil, v[0], v[2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 262) - def _reduce_107(val, _values, result) - result = make_node(val) { |v| Riml::RimlFileCommandNode.new(nil, v[0], v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 266) - def _reduce_108(val, _values, result) - result = make_node(val) { |v| Riml::RimlClassCommandNode.new(nil, v[0], v[2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 267) - def _reduce_109(val, _values, result) - result = make_node(val) { |v| Riml::RimlClassCommandNode.new(nil, v[0], v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 271) - def _reduce_110(val, _values, result) - result = ["#{val[0]}#{val[1]}"] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 272) - def _reduce_111(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 273) - def _reduce_112(val, _values, result) - result = val[0].concat ["#{val[2]}#{val[3]}"] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 277) - def _reduce_113(val, _values, result) - result = make_node(val) { |v| Riml::ExplicitCallNode.new(v[1], v[2], v[4]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 278) - def _reduce_114(val, _values, result) - result = make_node(val) { |v| Riml::ExplicitCallNode.new(nil, v[1], v[3]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 282) - def _reduce_115(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 283) - def _reduce_116(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 288) - def _reduce_117(val, _values, result) - result = [ nil, val[0] ] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 289) - def _reduce_118(val, _values, result) - result = [ make_node(val) { |v| Riml::SIDNode.new(v[1]) }, val[3] ] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 293) - def _reduce_119(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 294) - def _reduce_120(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 298) - def _reduce_121(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 299) - def _reduce_122(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 303) - def _reduce_123(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 304) - def _reduce_124(val, _values, result) - result = [ make_node(val) { |v| Riml::SplatNode.new(v[1]) } ] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 305) - def _reduce_125(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 306) - def _reduce_126(val, _values, result) - result = val[0] << make_node(val) { |v| Riml::SplatNode.new(v[3]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 310) - def _reduce_127(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 311) - def _reduce_128(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 315) - def _reduce_129(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 316) - def _reduce_130(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 318) - def _reduce_131(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 319) - def _reduce_132(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 320) - def _reduce_133(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 323) - def _reduce_134(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 325) - def _reduce_135(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 326) - def _reduce_136(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 327) - def _reduce_137(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 329) - def _reduce_138(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 330) - def _reduce_139(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 331) - def _reduce_140(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 333) - def _reduce_141(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 334) - def _reduce_142(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 335) - def _reduce_143(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 337) - def _reduce_144(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 338) - def _reduce_145(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 339) - def _reduce_146(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 341) - def _reduce_147(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 342) - def _reduce_148(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 343) - def _reduce_149(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 345) - def _reduce_150(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 346) - def _reduce_151(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 347) - def _reduce_152(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 349) - def _reduce_153(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 350) - def _reduce_154(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 351) - def _reduce_155(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 353) - def _reduce_156(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 354) - def _reduce_157(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 355) - def _reduce_158(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 356) - def _reduce_159(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 357) - def _reduce_160(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 358) - def _reduce_161(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 360) - def _reduce_162(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 361) - def _reduce_163(val, _values, result) - result = make_node(val) { |v| Riml::BinaryOperatorNode.new(v[1], [v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 365) - def _reduce_164(val, _values, result) - result = make_node(val) { |v| Riml::UnaryOperatorNode.new(val[0], [val[1]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 366) - def _reduce_165(val, _values, result) - result = make_node(val) { |v| Riml::UnaryOperatorNode.new(val[0], [val[1]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 367) - def _reduce_166(val, _values, result) - result = make_node(val) { |v| Riml::UnaryOperatorNode.new(val[0], [val[1]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 372) - def _reduce_167(val, _values, result) - result = make_node(val) { |v| Riml::AssignNode.new(v[1][0], v[1][1], v[1][2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 373) - def _reduce_168(val, _values, result) - result = make_node(val) { |v| Riml::AssignNode.new(v[0][0], v[0][1], v[0][2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 377) - def _reduce_169(val, _values, result) - result = make_node(val) { |v| Riml::MultiAssignNode.new([v[0], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 378) - def _reduce_170(val, _values, result) - val[0].assigns << val[2]; result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 383) - def _reduce_171(val, _values, result) - result = [val[1], val[0], val[2]] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 384) - def _reduce_172(val, _values, result) - result = [val[1], val[0], val[2]] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 385) - def _reduce_173(val, _values, result) - result = [val[1], val[0], val[2]] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 386) - def _reduce_174(val, _values, result) - result = [val[1], val[0], val[2]] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 390) - def _reduce_175(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 391) - def _reduce_176(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 392) - def _reduce_177(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 393) - def _reduce_178(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 394) - def _reduce_179(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 399) - def _reduce_180(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 400) - def _reduce_181(val, _values, result) - result = make_node(val) { |v| Riml::GetSpecialVariableNode.new(v[0], v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 401) - def _reduce_182(val, _values, result) - result = make_node(val) { |v| Riml::GetVariableByScopeAndDictNameNode.new(v[0], v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 405) - def _reduce_183(val, _values, result) - result = make_node(val) { |v| Riml::GetVariableNode.new(v[0], v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 409) - def _reduce_184(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 410) - def _reduce_185(val, _values, result) - result = make_node(val) { |v| Riml::GetCurlyBraceNameNode.new(v[0], v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 414) - def _reduce_186(val, _values, result) - result = make_node(val) { |v| Riml::UnletVariableNode.new('!', [ v[1] ]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 415) - def _reduce_187(val, _values, result) - result = make_node(val) { |v| Riml::UnletVariableNode.new('!', [ v[1] ]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 416) - def _reduce_188(val, _values, result) - result = val[0] << val[1] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 420) - def _reduce_189(val, _values, result) - result = make_node(val) { |v| Riml::CurlyBraceVariable.new([ v[0] ]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 421) - def _reduce_190(val, _values, result) - result = make_node(val) { |v| Riml::CurlyBraceVariable.new([ Riml::CurlyBracePart.new(v[0]), v[1] ]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 422) - def _reduce_191(val, _values, result) - result = val[0] << make_node(val) { |v| Riml::CurlyBracePart.new(v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 423) - def _reduce_192(val, _values, result) - result = val[0] << val[1] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 427) - def _reduce_193(val, _values, result) - result = make_node(val) { |v| Riml::CurlyBracePart.new(v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 428) - def _reduce_194(val, _values, result) - result = make_node(val) { |v| Riml::CurlyBracePart.new([v[1], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 429) - def _reduce_195(val, _values, result) - result = make_node(val) { |v| Riml::CurlyBracePart.new([v[1], v[2]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 435) - def _reduce_196(val, _values, result) - result = make_node(val) { |v| Riml.const_get(val[0]).new('!', v[1][0], v[1][1], v[2], [], v[3], v[4]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 436) - def _reduce_197(val, _values, result) - result = make_node(val) { |v| Riml.const_get(val[0]).new('!', v[1][0], v[1][1], v[2], v[4], v[6], v[7]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 437) - def _reduce_198(val, _values, result) - result = make_node(val) { |v| Riml.const_get(val[0]).new('!', v[1][0], v[1][1], v[2], [v[4]], v[6], v[7]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 438) - def _reduce_199(val, _values, result) - result = make_node(val) { |v| Riml.const_get(val[0]).new('!', v[1][0], v[1][1], v[2], v[4] << v[6], v[8], v[9]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 442) - def _reduce_200(val, _values, result) - result = "DefNode" - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 443) - def _reduce_201(val, _values, result) - result = "DefNode" - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 444) - def _reduce_202(val, _values, result) - result = "DefMethodNode" - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 449) - def _reduce_203(val, _values, result) - result = make_node(val) { |v| Riml::GetCurlyBraceNameNode.new('', v[0]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 450) - def _reduce_204(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 455) - def _reduce_205(val, _values, result) - result = [val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 456) - def _reduce_206(val, _values, result) - result = val[0] << val[1] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 457) - def _reduce_207(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 461) - def _reduce_208(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 462) - def _reduce_209(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 463) - def _reduce_210(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 464) - def _reduce_211(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 465) - def _reduce_212(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 469) - def _reduce_213(val, _values, result) - result = make_node(val) { |v| Riml::DefaultParamNode.new(v[0], v[2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 473) - def _reduce_214(val, _values, result) - result = make_node(val) { |v| Riml::ReturnNode.new(v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 474) - def _reduce_215(val, _values, result) - result = make_node(val) { |v| Riml::IfNode.new(v[3], Nodes.new([ReturnNode.new(v[1])])) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 475) - def _reduce_216(val, _values, result) - result = make_node(val) { |v| Riml::UnlessNode.new(v[3], Nodes.new([ReturnNode.new(v[1])])) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 479) - def _reduce_217(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 480) - def _reduce_218(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 484) - def _reduce_219(val, _values, result) - result = make_node(val) { |_| Riml::FinishNode.new } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 489) - def _reduce_220(val, _values, result) - result = make_node(val) { |v| Riml::IfNode.new(v[1], v[2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 490) - def _reduce_221(val, _values, result) - result = make_node(val) { |v| Riml::IfNode.new(v[1], Riml::Nodes.new([v[3]])) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 491) - def _reduce_222(val, _values, result) - result = make_node(val) { |v| Riml::IfNode.new(v[2], Riml::Nodes.new([v[0]])) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 495) - def _reduce_223(val, _values, result) - result = make_node(val) { |v| Riml::UnlessNode.new(v[1], v[2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 496) - def _reduce_224(val, _values, result) - result = make_node(val) { |v| Riml::UnlessNode.new(v[1], Riml::Nodes.new([v[3]])) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 497) - def _reduce_225(val, _values, result) - result = make_node(val) { |v| Riml::UnlessNode.new(v[2], Riml::Nodes.new([v[0]])) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 501) - def _reduce_226(val, _values, result) - result = make_node(val) { |v| Riml::TernaryOperatorNode.new([v[0], v[2], v[4]]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 505) - def _reduce_227(val, _values, result) - result = make_node(val) { |v| Riml::WhileNode.new(v[1], v[2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 509) - def _reduce_228(val, _values, result) - result = make_node(val) { |_| Riml::BreakNode.new } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 510) - def _reduce_229(val, _values, result) - result = make_node(val) { |_| Riml::ContinueNode.new } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 514) - def _reduce_230(val, _values, result) - result = make_node(val) { |v| Riml::UntilNode.new(v[1], v[2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 518) - def _reduce_231(val, _values, result) - result = make_node(val) { |v| Riml::ForNode.new(v[1], v[3], v[4]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 519) - def _reduce_232(val, _values, result) - result = make_node(val) { |v| Riml::ForNode.new(v[1], v[3], v[4]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 520) - def _reduce_233(val, _values, result) - result = make_node(val) { |v| Riml::ForNode.new(v[1], v[3], v[4]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 524) - def _reduce_234(val, _values, result) - result = make_node(val) { |v| Riml::TryNode.new(v[1], nil, nil) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 525) - def _reduce_235(val, _values, result) - result = make_node(val) { |v| Riml::TryNode.new(v[1], v[2], nil) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 526) - def _reduce_236(val, _values, result) - result = make_node(val) { |v| Riml::TryNode.new(v[1], v[2], v[4]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 530) - def _reduce_237(val, _values, result) - result = nil - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 531) - def _reduce_238(val, _values, result) - result = [ make_node(val) { |v| Riml::CatchNode.new(nil, v[1]) } ] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 532) - def _reduce_239(val, _values, result) - result = [ make_node(val) { |v| Riml::CatchNode.new(v[1], v[2]) } ] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 533) - def _reduce_240(val, _values, result) - result = val[0] << make_node(val) { |v| Riml::CatchNode.new(nil, v[2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 534) - def _reduce_241(val, _values, result) - result = val[0] << make_node(val) { |v| Riml::CatchNode.new(v[2], v[3]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 538) - def _reduce_242(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 539) - def _reduce_243(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 546) - def _reduce_244(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 547) - def _reduce_245(val, _values, result) - result = make_node(val) { |_| Riml::Nodes.new([]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 551) - def _reduce_246(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 552) - def _reduce_247(val, _values, result) - result = val[1] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 553) - def _reduce_248(val, _values, result) - result = val[1] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 554) - def _reduce_249(val, _values, result) - result = val[1] << val[2] << val[3] - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 558) - def _reduce_250(val, _values, result) - result = make_node(val) { |v| Riml::ElseNode.new(v[2]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 562) - def _reduce_251(val, _values, result) - result = make_node(val) { |v| Riml::Nodes.new([Riml::ElseifNode.new(v[1], v[3])]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 563) - def _reduce_252(val, _values, result) - result = val[0] << make_node(val) { |v| Riml::ElseifNode.new(v[2], v[4]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 567) - def _reduce_253(val, _values, result) - result = make_node(val) { |v| Riml::ClassDefinitionNode.new(v[1], v[2], nil, v[3]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 568) - def _reduce_254(val, _values, result) - result = make_node(val) { |v| Riml::ClassDefinitionNode.new(v[1], v[2], (v[4] || ClassDefinitionNode::DEFAULT_SCOPE_MODIFIER) + v[5], v[6]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 572) - def _reduce_255(val, _values, result) - result = make_node(val) { |v| Riml::ObjectInstantiationNode.new(v[1]) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 576) - def _reduce_256(val, _values, result) - result = make_node(val) { |v| Riml::SuperNode.new(v[2], true) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 577) - def _reduce_257(val, _values, result) - result = make_node(val) { |_| Riml::SuperNode.new([], false) } - result - end -.,., - -module_eval(<<'.,.,', 'riml.y', 581) - def _reduce_258(val, _values, result) - result = make_node(val) { |v| Riml::ExLiteralNode.new(v[0]) } - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser -end # module Riml diff --git a/test/racc/regress/ruby18 b/test/racc/regress/ruby18 deleted file mode 100644 index 9e9c55d564..0000000000 --- a/test/racc/regress/ruby18 +++ /dev/null @@ -1,9945 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.2 -# from Racc grammar file "". -# - -require 'racc/parser.rb' - - -require 'parser' - -module Parser - class Ruby18 < Racc::Parser - -module_eval(<<'...end ruby18.y/module_eval...', 'ruby18.y', 1936) - - def version - 18 - end - - def default_encoding - Encoding::BINARY if defined? Encoding - end -...end ruby18.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - -480, 195, 196, 195, 196, 489, 814, -480, -480, -480, - 511, 578, 578, -480, -480, -80, -480, -429, 579, 579, - 489, 72, 531, -87, 558, -480, 99, 489, -86, 73, - 95, 98, 395, 195, 196, -480, -480, -82, -480, -480, - -480, -480, -480, 489, 489, 558, 495, -84, 496, -83, - -81, 463, 659, 658, 662, 661, 186, 99, 557, 558, - 291, 291, 98, -80, -480, -480, -480, -480, -480, -480, - -480, -480, -480, -480, -480, -480, -480, -480, -87, 557, - -480, -480, -480, 259, 546, 530, 722, -74, -480, -61, - 99, -480, 291, 557, 621, 98, -480, -86, -480, -85, - -480, -480, -480, -480, -480, -480, -480, -277, -480, -480, - -480, 187, -476, 510, -277, -277, -277, 99, -72, 488, - -277, -277, 98, -277, -480, -480, -79, -75, -69, -480, - -83, -78, 99, 99, 488, 621, -76, 98, 98, 99, - -74, 488, -277, -277, 98, -277, -277, -277, -277, -277, - -76, -74, -75, -73, 431, 99, 99, 488, 488, 621, - 98, 98, -477, 259, 502, 195, 196, 258, 503, -74, - 690, -277, -277, -277, -277, -277, -277, -277, -277, -277, - -277, -277, -277, -277, -277, 558, 259, -277, -277, -277, - -74, 549, 99, -74, 620, -277, 713, 98, -277, 691, - -76, 188, -77, -277, 521, -277, 521, -277, -277, -277, - -277, -277, -277, -277, -272, -277, -82, -277, -76, 557, - 189, -272, -272, -272, 99, 254, -272, -272, -272, 98, - -272, -277, -277, 99, -77, 620, -277, -85, 98, -76, - -272, -272, -76, 477, 190, -84, 476, 258, 254, -272, - -272, 768, -272, -272, -272, -272, -272, 99, 194, 620, - 477, 234, 98, 479, 521, 523, 522, 523, 522, 519, - 258, 477, 358, 282, 482, 673, 360, 359, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, 521, 192, -272, -272, -272, -81, 283, -272, - 193, -79, -272, 521, -87, -272, -272, 291, -272, 191, - -272, 349, -272, 215, -272, -272, -272, -272, -272, -272, - -272, -226, -272, 361, -272, 523, 522, 524, -226, -226, - -226, 814, 394, -226, -226, -226, 521, -226, -272, -272, - -272, -272, 396, -272, -473, 212, 606, -226, 496, 214, - 213, 210, 211, 523, 522, 526, -226, -226, 397, -226, - -226, -226, -226, -226, 523, 522, 527, 251, 477, 426, - -474, 479, -480, -480, 252, -319, -226, 659, 658, 662, - 661, 428, -319, -226, -226, -226, -417, -476, -226, -226, - -226, -319, -226, -417, -417, 431, -226, 523, 522, 532, - -429, -417, -226, -226, 284, 285, -473, 436, 254, -226, - -417, -226, -226, -60, -226, -226, -226, -226, -226, 463, - -421, 451, -480, -480, 541, -477, 542, -421, -473, -480, - -480, -226, -474, 680, -476, -476, -421, -476, -480, -480, - 452, 215, 453, -72, -476, -226, -80, -226, 215, -476, - -226, -226, 391, -476, -474, 99, -480, -480, -226, 392, - 98, 99, -78, 254, -226, -86, 98, -74, 393, -76, - -82, -476, -84, 212, -428, -477, -73, 214, 213, -81, - 212, -428, -477, 459, 214, 213, -226, -477, 461, 462, - -428, -477, 195, 196, -421, -476, -476, -476, 263, -476, - -226, -421, -226, -476, -476, -226, 291, -480, -476, -477, - -476, -476, -476, -476, -476, -476, -476, 195, 196, 734, - 606, -476, -476, -476, -476, -476, -476, -476, -427, 215, - 254, -426, -425, 662, 661, -427, 464, -476, -426, -425, - -476, -476, -476, -476, -476, -476, -476, -476, -476, -476, - 465, -476, -476, -422, -476, -476, -476, -480, 734, 606, - -422, 212, 215, -423, -480, 214, 213, 210, 211, -476, - -423, 457, 471, -480, -424, 472, -476, 692, 458, -476, - -476, -424, -476, -476, 291, 481, -476, 456, -476, 484, - -476, -480, -476, 351, 516, -271, 466, 498, 500, 501, - -476, 517, -271, 467, 499, -476, -476, -476, -476, -476, - -476, -271, 393, 497, -476, -476, -477, -477, -477, 535, - -477, 536, 538, -83, -477, -477, -259, 540, 254, -477, - 215, -477, -477, -477, -477, -477, -477, -477, 215, 215, - 215, 568, -477, -477, -477, -477, -477, -477, -477, 667, - 668, 575, 669, 93, 94, 291, 580, 234, -477, 590, - 591, -477, -477, -477, -477, -477, -477, -477, -477, -477, - -477, -69, -477, -477, 592, -477, -477, -477, 215, 219, - 224, 225, 226, 221, 223, 231, 232, 227, 228, 507, - -497, -497, -278, 469, 229, 230, 505, -477, 549, -278, - -477, -477, 606, -477, -477, 506, 291, -477, -278, -477, - 212, -477, 218, -477, 214, 213, 210, 211, 222, 220, - 216, -477, 217, 616, 496, 624, -477, -477, -477, -477, - -477, -477, 672, -278, 675, -477, -477, 62, 63, 64, - -278, 51, 436, 436, -85, 56, 57, 693, 704, -278, - 60, 431, 58, 59, 61, 23, 24, 65, 66, 431, - 243, 707, 708, 22, 28, 27, 88, 87, 89, 90, - 715, 717, 17, 721, 254, 254, 215, 537, 215, 41, - 724, -259, 92, 91, 82, 50, 84, 83, 86, 85, - 93, 94, 728, 80, 81, 730, 38, 39, 37, 215, - 219, 224, 225, 226, 221, 223, 231, 232, 227, 228, - -277, 208, 209, -279, 606, 229, 230, -277, 200, 738, - -279, 204, -477, 739, 52, 53, -277, 740, 54, -279, - 743, 212, 745, 218, 40, 214, 213, 210, 211, 222, - 220, 216, 18, 217, 749, 753, 755, 79, 72, 74, - 75, 76, 77, 758, 759, 760, 73, 78, 761, 99, - 233, 763, -215, -277, 98, 62, 63, 64, 7, 51, - -277, -260, 769, 56, 57, -477, 777, 778, 60, -277, - 58, 59, 61, 23, 24, 65, 66, 568, 568, 254, - 254, 22, 28, 27, 88, 87, 89, 90, 234, 568, - 17, 101, 102, 103, 104, 105, 6, 41, 8, 9, - 92, 91, 82, 50, 84, 83, 86, 85, 93, 94, - 790, 80, 81, 791, 38, 39, 37, 215, 219, 224, - 225, 226, 221, 223, 231, 232, 227, 228, -428, -497, - -497, 823, 792, 229, 230, -428, 36, 797, 824, 30, - 799, 805, 52, 53, -428, 807, 54, 822, 32, 212, - 291, 218, 40, 214, 213, 210, 211, 222, 220, 216, - 18, 217, 818, 825, 826, 79, 72, 74, 75, 76, - 77, 827, -271, 829, 73, 78, 62, 63, 64, -271, - 51, 830, 351, -278, 56, 57, 832, 835, -271, 60, - -278, 58, 59, 61, 246, 247, 65, 66, 839, -278, - 840, 846, 245, 275, 279, 88, 87, 89, 90, 101, - 102, 103, 104, 105, 847, 848, 758, 758, 276, 759, - 861, 92, 91, 82, 50, 84, 83, 86, 85, 93, - 94, 568, 80, 81, 215, 568, 655, 280, 653, 652, - 651, 654, -277, 471, 874, -279, 875, 876, 880, -277, - 229, 230, -279, 883, -477, 758, 885, 772, -277, 886, - 204, -279, 568, 52, 53, 568, 212, 54, 218, 568, - 214, 213, 210, 211, 645, nil, 216, nil, 217, nil, - nil, nil, 659, 658, 662, 661, 79, 72, 74, 75, - 76, 77, nil, nil, nil, 73, 78, nil, 62, 63, - 64, 775, 51, nil, nil, nil, 56, 57, nil, nil, - nil, 60, nil, 58, 59, 61, 246, 247, 65, 66, - nil, nil, nil, nil, 245, 275, 279, 88, 87, 89, - 90, 101, 102, 103, 104, 105, nil, nil, 537, nil, - 276, nil, nil, 92, 91, 82, 50, 84, 83, 86, - 85, 93, 94, nil, 80, 81, nil, nil, nil, 280, - 215, 219, 224, 225, 226, 221, 223, 231, 232, 227, - 228, nil, 208, 209, nil, nil, 229, 230, nil, 772, - nil, nil, 204, nil, nil, 52, 53, nil, nil, 54, - nil, nil, 212, nil, 218, nil, 214, 213, 210, 211, - 222, 220, 216, nil, 217, nil, nil, nil, 79, 72, - 74, 75, 76, 77, nil, nil, nil, 73, 78, nil, - nil, 233, nil, 855, 5, 62, 63, 64, 7, 51, - nil, nil, nil, 56, 57, nil, nil, nil, 60, nil, - 58, 59, 61, 23, 24, 65, 66, nil, nil, nil, - nil, 22, 28, 27, 88, 87, 89, 90, nil, nil, - 17, nil, nil, nil, nil, nil, 6, 41, 8, 9, - 92, 91, 82, 50, 84, 83, 86, 85, 93, 94, - nil, 80, 81, nil, 38, 39, 37, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 36, nil, nil, 30, - nil, nil, 52, 53, nil, nil, 54, nil, 32, nil, - nil, nil, 40, 655, nil, 653, 652, 651, 654, nil, - 18, nil, nil, nil, nil, 79, 72, 74, 75, 76, - 77, nil, nil, nil, 73, 78, 5, 62, 63, 64, - 7, 51, nil, nil, nil, 56, 57, nil, nil, nil, - 60, nil, 58, 59, 61, 23, 24, 65, 66, 659, - 658, 662, 661, 22, 28, 27, 88, 87, 89, 90, - nil, nil, 17, nil, nil, nil, nil, nil, 6, 41, - 8, 9, 92, 91, 82, 50, 84, 83, 86, 85, - 93, 94, nil, 80, 81, nil, 38, 39, 37, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 36, nil, - nil, 265, nil, nil, 52, 53, nil, nil, 54, nil, - 32, nil, nil, nil, 40, 655, nil, 653, 652, 651, - 654, nil, 18, nil, nil, nil, nil, 79, 72, 74, - 75, 76, 77, nil, nil, nil, 73, 78, 5, 62, - 63, 64, 7, 51, nil, nil, nil, 56, 57, nil, - nil, nil, 60, nil, 58, 59, 61, 23, 24, 65, - 66, 659, 658, 662, 661, 22, 28, 27, 88, 87, - 89, 90, nil, nil, 17, nil, nil, nil, nil, nil, - 6, 41, 8, 9, 92, 91, 82, 50, 84, 83, - 86, 85, 93, 94, nil, 80, 81, nil, 38, 39, - 37, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 36, nil, nil, 30, nil, nil, 52, 53, nil, nil, - 54, nil, 32, nil, nil, nil, 40, 655, nil, 653, - 652, 651, 654, nil, 18, nil, nil, nil, nil, 79, - 72, 74, 75, 76, 77, nil, nil, nil, 73, 78, - 5, 62, 63, 64, 7, 51, nil, nil, nil, 56, - 57, nil, nil, nil, 60, 645, 58, 59, 61, 23, - 24, 65, 66, 659, 658, 662, 661, 22, 28, 27, - 88, 87, 89, 90, nil, nil, 17, nil, nil, nil, - nil, nil, 6, 41, 8, 9, 92, 91, 82, 50, - 84, 83, 86, 85, 93, 94, nil, 80, 81, nil, - 38, 39, 37, 215, -497, -497, -497, -497, 221, 223, - nil, nil, -497, -497, nil, nil, nil, nil, nil, 229, - 230, nil, 36, nil, nil, 30, nil, nil, 52, 53, - nil, nil, 54, nil, 32, 212, nil, 218, 40, 214, - 213, 210, 211, 222, 220, 216, 18, 217, nil, nil, - nil, 79, 72, 74, 75, 76, 77, nil, nil, nil, - 73, 78, 5, 62, 63, 64, 7, 51, nil, nil, - nil, 56, 57, nil, nil, nil, 60, nil, 58, 59, - 61, 23, 24, 65, 66, nil, nil, nil, nil, 22, - 28, 27, 88, 87, 89, 90, nil, nil, 17, nil, - nil, nil, nil, nil, 6, 41, 8, 9, 92, 91, - 82, 50, 84, 83, 86, 85, 93, 94, nil, 80, - 81, nil, 38, 39, 37, 215, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 229, 230, nil, 36, nil, nil, 30, nil, nil, - 52, 53, nil, nil, 54, nil, 32, 212, nil, 218, - 40, 214, 213, 210, 211, nil, nil, 216, 18, 217, - nil, nil, nil, 79, 72, 74, 75, 76, 77, nil, - nil, nil, 73, 78, 5, 62, 63, 64, 7, 51, - nil, nil, nil, 56, 57, nil, nil, nil, 60, nil, - 58, 59, 61, 23, 24, 65, 66, nil, nil, nil, - nil, 22, 28, 27, 88, 87, 89, 90, nil, nil, - 17, nil, nil, nil, nil, nil, 6, 41, 8, 9, - 92, 91, 82, 50, 84, 83, 86, 85, 93, 94, - nil, 80, 81, nil, 38, 39, 37, 215, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 229, 230, nil, 36, nil, nil, 30, - nil, nil, 52, 53, nil, nil, 54, nil, 32, 212, - nil, 218, 40, 214, 213, 210, 211, nil, nil, 216, - 18, 217, nil, nil, nil, 79, 72, 74, 75, 76, - 77, nil, nil, nil, 73, 78, 5, 62, 63, 64, - 7, 51, nil, nil, nil, 56, 57, nil, nil, nil, - 60, nil, 58, 59, 61, 23, 24, 65, 66, nil, - nil, nil, nil, 22, 28, 27, 88, 87, 89, 90, - nil, nil, 17, nil, nil, nil, nil, nil, 6, 41, - 8, 9, 92, 91, 82, 50, 84, 83, 86, 85, - 93, 94, nil, 80, 81, nil, 38, 39, 37, 215, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 229, 230, nil, 36, nil, - nil, 265, nil, nil, 52, 53, nil, nil, 54, nil, - 32, 212, nil, 218, 40, 214, 213, 210, 211, nil, - nil, 216, 18, 217, nil, nil, nil, 79, 72, 74, - 75, 76, 77, nil, nil, nil, 73, 78, 5, 62, - 63, 64, 7, 51, nil, nil, nil, 56, 57, nil, - nil, nil, 60, nil, 58, 59, 61, 23, 24, 65, - 66, nil, nil, nil, nil, 22, 28, 27, 88, 87, - 89, 90, nil, nil, 17, nil, nil, nil, nil, nil, - 6, 41, 8, 9, 92, 91, 82, 50, 84, 83, - 86, 85, 93, 94, nil, 80, 81, nil, 38, 39, - 37, 215, -497, -497, -497, -497, 221, 223, nil, nil, - -497, -497, nil, nil, nil, nil, nil, 229, 230, nil, - 36, nil, nil, 265, nil, nil, 52, 53, nil, nil, - 54, nil, 32, 212, nil, 218, 40, 214, 213, 210, - 211, 222, 220, 216, 18, 217, nil, nil, nil, 79, - 72, 74, 75, 76, 77, nil, nil, nil, 73, 78, - 5, 62, 63, 64, 7, 51, nil, nil, nil, 56, - 57, nil, nil, nil, 60, nil, 58, 59, 61, 23, - 24, 65, 66, nil, nil, nil, nil, 22, 28, 27, - 88, 87, 89, 90, nil, nil, 17, nil, nil, nil, - nil, nil, 6, 41, 8, 9, 92, 91, 82, 50, - 84, 83, 86, 85, 93, 94, nil, 80, 81, nil, - 38, 39, 37, 215, -497, -497, -497, -497, 221, 223, - nil, nil, -497, -497, nil, nil, nil, nil, nil, 229, - 230, nil, 36, nil, nil, 30, nil, nil, 52, 53, - nil, nil, 54, nil, 32, 212, nil, 218, 40, 214, - 213, 210, 211, 222, 220, 216, 18, 217, nil, nil, - nil, 79, 72, 74, 75, 76, 77, nil, nil, nil, - 73, 78, 5, 62, 63, 64, 7, 51, nil, nil, - nil, 56, 57, nil, nil, nil, 60, nil, 58, 59, - 61, 23, 24, 65, 66, nil, nil, nil, nil, 22, - 28, 27, 88, 87, 89, 90, nil, nil, 17, nil, - nil, nil, nil, nil, 6, 41, 8, 9, 92, 91, - 82, 50, 84, 83, 86, 85, 93, 94, nil, 80, - 81, nil, 38, 39, 37, 215, -497, -497, -497, -497, - 221, 223, nil, nil, -497, -497, nil, nil, nil, nil, - nil, 229, 230, nil, 36, nil, nil, 30, nil, nil, - 52, 53, nil, nil, 54, nil, 32, 212, nil, 218, - 40, 214, 213, 210, 211, 222, 220, 216, 18, 217, - nil, nil, nil, 79, 72, 74, 75, 76, 77, nil, - nil, nil, 73, 78, 5, 62, 63, 64, 7, 51, - nil, nil, nil, 56, 57, nil, nil, nil, 60, nil, - 58, 59, 61, 23, 24, 65, 66, nil, nil, nil, - nil, 22, 28, 27, 88, 87, 89, 90, nil, nil, - 17, nil, nil, nil, nil, nil, 6, 41, 8, 9, - 92, 91, 82, 50, 84, 83, 86, 85, 93, 94, - nil, 80, 81, nil, 38, 39, 37, 215, -497, -497, - -497, -497, 221, 223, nil, nil, -497, -497, nil, nil, - nil, nil, nil, 229, 230, nil, 36, nil, nil, 30, - nil, nil, 52, 53, nil, nil, 54, nil, 32, 212, - nil, 218, 40, 214, 213, 210, 211, 222, 220, 216, - 18, 217, nil, nil, nil, 79, 72, 74, 75, 76, - 77, nil, nil, nil, 73, 78, 5, 62, 63, 64, - 7, 51, nil, nil, nil, 56, 57, nil, nil, nil, - 60, nil, 58, 59, 61, 23, 24, 65, 66, nil, - nil, nil, nil, 22, 28, 27, 88, 87, 89, 90, - nil, nil, 17, nil, nil, nil, nil, nil, 6, 41, - 8, 9, 92, 91, 82, 50, 84, 83, 86, 85, - 93, 94, nil, 80, 81, nil, 38, 39, 37, 215, - -497, -497, -497, -497, 221, 223, nil, nil, -497, -497, - nil, nil, nil, nil, nil, 229, 230, nil, 36, nil, - nil, 30, nil, nil, 52, 53, nil, nil, 54, nil, - 32, 212, nil, 218, 40, 214, 213, 210, 211, 222, - 220, 216, 18, 217, nil, nil, nil, 79, 72, 74, - 75, 76, 77, nil, nil, nil, 73, 78, 5, 62, - 63, 64, 7, 51, nil, nil, nil, 56, 57, nil, - nil, nil, 60, nil, 58, 59, 61, 23, 24, 65, - 66, nil, nil, nil, nil, 22, 28, 27, 88, 87, - 89, 90, nil, nil, 17, nil, nil, nil, nil, nil, - 6, 41, 8, 9, 92, 91, 82, 50, 84, 83, - 86, 85, 93, 94, nil, 80, 81, nil, 38, 39, - 37, 215, 219, 224, 225, 226, 221, 223, nil, nil, - 227, 228, nil, nil, nil, nil, nil, 229, 230, nil, - 36, nil, nil, 30, nil, nil, 52, 53, nil, nil, - 54, nil, 32, 212, nil, 218, 40, 214, 213, 210, - 211, 222, 220, 216, 18, 217, nil, nil, nil, 79, - 72, 74, 75, 76, 77, nil, nil, nil, 73, 78, - 5, 62, 63, 64, 7, 51, nil, nil, nil, 56, - 57, nil, nil, nil, 60, nil, 58, 59, 61, 23, - 24, 65, 66, nil, nil, nil, nil, 22, 28, 27, - 88, 87, 89, 90, nil, nil, 17, nil, nil, nil, - nil, nil, 6, 41, 8, 9, 92, 91, 82, 50, - 84, 83, 86, 85, 93, 94, nil, 80, 81, nil, - 38, 39, 37, 215, 219, 224, 225, 226, 221, 223, - 231, nil, 227, 228, nil, nil, nil, nil, nil, 229, - 230, nil, 36, nil, nil, 30, nil, nil, 52, 53, - nil, nil, 54, nil, 32, 212, nil, 218, 40, 214, - 213, 210, 211, 222, 220, 216, 18, 217, nil, nil, - nil, 79, 72, 74, 75, 76, 77, nil, nil, nil, - 73, 78, 5, 62, 63, 64, 7, 51, nil, nil, - nil, 56, 57, nil, nil, nil, 60, nil, 58, 59, - 61, 23, 24, 65, 66, nil, nil, nil, nil, 22, - 28, 27, 88, 87, 89, 90, nil, nil, 17, nil, - nil, nil, nil, nil, 6, 41, 8, 9, 92, 91, - 82, 50, 84, 83, 86, 85, 93, 94, nil, 80, - 81, nil, 38, 39, 37, 215, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 229, 230, nil, 36, nil, nil, 30, nil, nil, - 52, 53, nil, nil, 54, nil, 32, 212, nil, 218, - 40, 214, 213, 210, 211, nil, nil, nil, 18, nil, - nil, nil, nil, 79, 72, 74, 75, 76, 77, nil, - nil, nil, 73, 78, 5, 62, 63, 64, 7, 51, - nil, nil, nil, 56, 57, nil, nil, nil, 60, nil, - 58, 59, 61, 23, 24, 65, 66, nil, nil, nil, - nil, 22, 28, 27, 88, 87, 89, 90, nil, nil, - 17, nil, nil, nil, nil, nil, 6, 41, 8, 9, - 92, 91, 82, 50, 84, 83, 86, 85, 93, 94, - nil, 80, 81, nil, 38, 39, 37, 215, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 229, 230, nil, 36, nil, nil, 30, - nil, nil, 52, 53, nil, nil, 54, nil, 32, 212, - nil, 218, 40, 214, 213, 210, 211, nil, nil, nil, - 18, nil, nil, nil, nil, 79, 72, 74, 75, 76, - 77, nil, nil, nil, 73, 78, 5, 62, 63, 64, - 7, 51, nil, nil, nil, 56, 57, nil, nil, nil, - 60, nil, 58, 59, 61, 23, 24, 65, 66, nil, - nil, nil, nil, 22, 28, 27, 88, 87, 89, 90, - nil, nil, 17, nil, nil, nil, nil, nil, 6, 41, - 8, 9, 92, 91, 82, 50, 84, 83, 86, 85, - 93, 94, nil, 80, 81, nil, 38, 39, 37, 215, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 229, 230, nil, 36, nil, - nil, 30, nil, nil, 52, 53, nil, nil, 54, nil, - 32, 212, nil, nil, 40, 214, 213, 210, 211, nil, - nil, nil, 18, nil, nil, nil, nil, 79, 72, 74, - 75, 76, 77, nil, nil, nil, 73, 78, 5, 62, - 63, 64, 7, 51, nil, nil, nil, 56, 57, nil, - nil, nil, 60, nil, 58, 59, 61, 23, 24, 65, - 66, nil, nil, nil, nil, 22, 28, 27, 88, 87, - 89, 90, nil, nil, 17, nil, nil, nil, nil, nil, - 6, 41, 8, 9, 92, 91, 82, 50, 84, 83, - 86, 85, 93, 94, nil, 80, 81, nil, 38, 39, - 37, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 36, nil, nil, 30, nil, nil, 52, 53, nil, nil, - 54, nil, 32, nil, nil, nil, 40, nil, nil, nil, - nil, nil, nil, nil, 18, nil, nil, nil, nil, 79, - 72, 74, 75, 76, 77, nil, nil, nil, 73, 78, - 5, 62, 63, 64, 7, 51, nil, nil, nil, 56, - 57, nil, nil, nil, 60, nil, 58, 59, 61, 23, - 24, 65, 66, nil, nil, nil, nil, 22, 28, 27, - 88, 87, 89, 90, nil, nil, 17, nil, nil, nil, - nil, nil, 6, 41, 8, 9, 92, 91, 82, 50, - 84, 83, 86, 85, 93, 94, nil, 80, 81, nil, - 38, 39, 37, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 36, nil, nil, 30, nil, nil, 52, 53, - nil, nil, 54, nil, 32, nil, nil, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 18, nil, nil, nil, - nil, 79, 72, 74, 75, 76, 77, nil, nil, nil, - 73, 78, 5, 62, 63, 64, 7, 51, nil, nil, - nil, 56, 57, nil, nil, nil, 60, nil, 58, 59, - 61, 23, 24, 65, 66, nil, nil, nil, nil, 22, - 28, 27, 88, 87, 89, 90, nil, nil, 17, nil, - nil, nil, nil, nil, 6, 41, 8, 9, 92, 91, - 82, 50, 84, 83, 86, 85, 93, 94, nil, 80, - 81, nil, 38, 39, 37, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 36, nil, nil, 30, nil, nil, - 52, 53, nil, nil, 54, nil, 32, nil, nil, nil, - 40, nil, nil, nil, nil, nil, nil, nil, 18, nil, - nil, nil, nil, 79, 72, 74, 75, 76, 77, nil, - nil, nil, 73, 78, 5, 62, 63, 64, 7, 51, - nil, nil, nil, 56, 57, nil, nil, nil, 60, nil, - 58, 59, 61, 23, 24, 65, 66, nil, nil, nil, - nil, 22, 28, 27, 88, 87, 89, 90, nil, nil, - 17, nil, nil, nil, nil, nil, 6, 41, 8, 9, - 92, 91, 82, 50, 84, 83, 86, 85, 93, 94, - nil, 80, 81, nil, 38, 39, 37, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 36, nil, nil, 30, - nil, nil, 52, 53, nil, nil, 54, nil, 32, nil, - nil, nil, 40, nil, nil, nil, nil, nil, nil, nil, - 18, nil, nil, nil, nil, 79, 72, 74, 75, 76, - 77, nil, nil, nil, 73, 78, 5, 62, 63, 64, - 7, 51, nil, nil, nil, 56, 57, nil, nil, nil, - 60, nil, 58, 59, 61, 23, 24, 65, 66, nil, - nil, nil, nil, 22, 28, 27, 88, 87, 89, 90, - nil, nil, 17, nil, nil, nil, nil, nil, 6, 41, - 8, 9, 92, 91, 82, 50, 84, 83, 86, 85, - 93, 94, nil, 80, 81, nil, 38, 39, 37, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 36, nil, - nil, 30, nil, nil, 52, 53, nil, nil, 54, nil, - 32, nil, nil, nil, 40, nil, nil, nil, nil, nil, - nil, nil, 18, nil, nil, nil, nil, 79, 72, 74, - 75, 76, 77, nil, nil, nil, 73, 78, 5, 62, - 63, 64, 7, 51, nil, nil, nil, 56, 57, nil, - nil, nil, 60, nil, 58, 59, 61, 23, 24, 65, - 66, nil, nil, nil, nil, 22, 28, 27, 88, 87, - 89, 90, nil, nil, 17, nil, nil, nil, nil, nil, - 6, 41, 8, 9, 92, 91, 82, 50, 84, 83, - 86, 85, 93, 94, nil, 80, 81, nil, 38, 39, - 37, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 36, nil, nil, 30, nil, nil, 52, 53, nil, nil, - 54, nil, 32, nil, nil, nil, 40, nil, nil, nil, - nil, nil, nil, nil, 18, nil, nil, nil, nil, 79, - 72, 74, 75, 76, 77, nil, nil, nil, 73, 78, - 5, 62, 63, 64, 7, 51, nil, nil, nil, 56, - 57, nil, nil, nil, 60, nil, 58, 59, 61, 23, - 24, 65, 66, nil, nil, nil, nil, 22, 28, 27, - 88, 87, 89, 90, nil, nil, 17, nil, nil, nil, - nil, nil, 6, 41, 8, 9, 92, 91, 82, 50, - 84, 83, 86, 85, 93, 94, nil, 80, 81, nil, - 38, 39, 37, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 36, nil, nil, 30, nil, nil, 52, 53, - nil, nil, 54, nil, 32, nil, nil, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 18, nil, nil, nil, - nil, 79, 72, 74, 75, 76, 77, nil, nil, nil, - 73, 78, 5, 62, 63, 64, 7, 51, nil, nil, - nil, 56, 57, nil, nil, nil, 60, nil, 58, 59, - 61, 23, 24, 65, 66, nil, nil, nil, nil, 22, - 28, 27, 88, 87, 89, 90, nil, nil, 17, nil, - nil, nil, nil, nil, 6, 41, 8, 9, 92, 91, - 82, 50, 84, 83, 86, 85, 93, 94, nil, 80, - 81, nil, 38, 39, 37, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 36, nil, nil, 30, nil, nil, - 52, 53, nil, nil, 54, nil, 32, nil, nil, nil, - 40, nil, nil, nil, nil, nil, nil, nil, 18, nil, - nil, nil, nil, 79, 72, 74, 75, 76, 77, nil, - nil, nil, 73, 78, 5, 62, 63, 64, 7, 51, - nil, nil, nil, 56, 57, nil, nil, nil, 60, nil, - 58, 59, 61, 23, 24, 65, 66, nil, nil, nil, - nil, 22, 28, 27, 88, 87, 89, 90, nil, nil, - 17, nil, nil, nil, nil, nil, 6, 41, 8, 9, - 92, 91, 82, 50, 84, 83, 86, 85, 93, 94, - nil, 80, 81, nil, 38, 39, 37, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 36, nil, nil, 30, - nil, nil, 52, 53, nil, nil, 54, nil, 32, nil, - nil, nil, 40, nil, nil, nil, nil, nil, nil, nil, - 18, nil, nil, nil, nil, 79, 72, 74, 75, 76, - 77, nil, nil, nil, 73, 78, 5, 62, 63, 64, - 7, 51, nil, nil, nil, 56, 57, nil, nil, nil, - 60, nil, 58, 59, 61, 23, 24, 65, 66, nil, - nil, nil, nil, 22, 28, 27, 88, 87, 89, 90, - nil, nil, 17, nil, nil, nil, nil, nil, 6, 41, - 8, 9, 92, 91, 82, 50, 84, 83, 86, 85, - 93, 94, nil, 80, 81, nil, 38, 39, 37, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 36, nil, - nil, 30, nil, nil, 52, 53, nil, nil, 54, nil, - 32, nil, nil, nil, 40, nil, nil, nil, nil, nil, - nil, nil, 18, nil, nil, nil, nil, 79, 72, 74, - 75, 76, 77, nil, nil, nil, 73, 78, 5, 62, - 63, 64, 7, 51, nil, nil, nil, 56, 57, nil, - nil, nil, 60, nil, 58, 59, 61, 23, 24, 65, - 66, nil, nil, nil, nil, 22, 28, 27, 88, 87, - 89, 90, nil, nil, 17, nil, nil, nil, nil, nil, - 6, 41, 8, 9, 92, 91, 82, 50, 84, 83, - 86, 85, 93, 94, nil, 80, 81, nil, 38, 39, - 37, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 36, nil, nil, 30, nil, nil, 52, 53, nil, nil, - 54, nil, 32, nil, nil, nil, 40, nil, nil, nil, - nil, nil, nil, nil, 18, nil, nil, nil, nil, 79, - 72, 74, 75, 76, 77, nil, nil, nil, 73, 78, - 5, 62, 63, 64, 7, 51, nil, nil, nil, 56, - 57, nil, nil, nil, 60, nil, 58, 59, 61, 23, - 24, 65, 66, nil, nil, nil, nil, 22, 28, 27, - 88, 87, 89, 90, nil, nil, 17, nil, nil, nil, - nil, nil, 6, 41, 8, 9, 92, 91, 82, 50, - 84, 83, 86, 85, 93, 94, nil, 80, 81, nil, - 38, 39, 37, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 36, nil, nil, 30, nil, nil, 52, 53, - nil, nil, 54, nil, 32, nil, nil, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 18, nil, nil, nil, - nil, 79, 72, 74, 75, 76, 77, nil, nil, nil, - 73, 78, 62, 63, 64, 7, 51, nil, nil, nil, - 56, 57, nil, nil, nil, 60, nil, 58, 59, 61, - 23, 24, 65, 66, nil, nil, nil, nil, 22, 28, - 27, 88, 87, 89, 90, nil, nil, 17, nil, nil, - nil, nil, nil, 6, 41, 8, 9, 92, 91, 82, - 50, 84, 83, 86, 85, 93, 94, nil, 80, 81, - nil, 38, 39, 37, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 36, nil, nil, 30, nil, nil, 52, - 53, nil, nil, 54, nil, 32, nil, nil, nil, 40, - nil, nil, nil, nil, nil, nil, nil, 18, nil, nil, - nil, nil, 79, 72, 74, 75, 76, 77, nil, nil, - nil, 73, 78, 153, 164, 154, 177, 150, 170, 160, - 159, 180, 181, 175, 158, 157, 152, 178, 182, 183, - 162, 151, 165, 169, 171, 163, 156, nil, nil, 172, - 179, 174, 173, 166, 176, 161, 149, 168, 167, nil, - nil, nil, nil, nil, 148, 155, 146, 147, 144, 145, - 109, 111, 108, nil, 110, nil, nil, nil, nil, nil, - nil, nil, 139, 140, nil, 137, 121, 122, 123, nil, - 126, 128, nil, nil, 124, nil, nil, nil, nil, 141, - 142, 129, 130, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 134, 133, nil, 120, - 138, 136, 135, 131, 132, 127, 125, 118, nil, 119, - nil, nil, 143, 79, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 78, 153, 164, 154, 177, 150, 170, - 160, 159, 180, 181, 175, 158, 157, 152, 178, 182, - 183, 162, 151, 165, 169, 171, 163, 156, nil, nil, - 172, 179, 174, 173, 166, 176, 161, 149, 168, 167, - nil, nil, nil, nil, nil, 148, 155, 146, 147, 144, - 145, 109, 111, nil, nil, 110, nil, nil, nil, nil, - nil, nil, nil, 139, 140, nil, 137, 121, 122, 123, - nil, 126, 128, nil, nil, 124, nil, nil, nil, nil, - 141, 142, 129, 130, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 134, 133, nil, - 120, 138, 136, 135, 131, 132, 127, 125, 118, nil, - 119, nil, nil, 143, 79, nil, nil, 62, 63, 64, - nil, 51, nil, nil, 78, 56, 57, nil, nil, nil, - 60, nil, 58, 59, 61, 23, 24, 65, 66, nil, - nil, nil, nil, 22, 28, 27, 88, 87, 89, 90, - nil, nil, 17, nil, nil, nil, nil, nil, nil, 41, - nil, nil, 92, 91, 82, 50, 84, 83, 86, 85, - 93, 94, nil, 80, 81, nil, 38, 39, 37, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 200, nil, - nil, 204, nil, nil, 52, 53, nil, nil, 54, nil, - nil, nil, nil, nil, 40, nil, nil, nil, nil, nil, - nil, nil, 18, nil, nil, nil, nil, 79, 72, 74, - 75, 76, 77, nil, nil, nil, 73, 78, 62, 63, - 64, nil, 51, nil, nil, nil, 56, 57, nil, nil, - nil, 60, nil, 58, 59, 61, 23, 24, 65, 66, - nil, nil, nil, nil, 22, 28, 27, 88, 87, 89, - 90, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 41, nil, nil, 92, 91, 82, 50, 84, 83, 86, - 85, 93, 94, nil, 80, 81, nil, 38, 39, 37, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 200, - nil, nil, 204, nil, nil, 52, 53, nil, nil, 54, - nil, nil, nil, nil, nil, 40, nil, nil, nil, nil, - nil, nil, nil, 207, nil, nil, nil, nil, 79, 72, - 74, 75, 76, 77, nil, nil, nil, 73, 78, 62, - 63, 64, nil, 51, nil, nil, nil, 56, 57, nil, - nil, nil, 60, nil, 58, 59, 61, 246, 247, 65, - 66, nil, nil, nil, nil, 245, 28, 27, 88, 87, - 89, 90, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 41, nil, nil, 92, 91, 82, 50, 84, 83, - 86, 85, 93, 94, nil, 80, 81, nil, 38, 39, - 37, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 200, nil, nil, 204, nil, nil, 52, 53, nil, nil, - 54, nil, 241, nil, 243, nil, 40, nil, nil, nil, - nil, nil, nil, nil, 207, nil, nil, nil, nil, 79, - 72, 74, 75, 76, 77, nil, nil, nil, 73, 78, - 62, 63, 64, nil, 51, nil, nil, nil, 56, 57, - nil, nil, nil, 60, nil, 58, 59, 61, 246, 247, - 65, 66, nil, nil, nil, nil, 245, 28, 27, 88, - 87, 89, 90, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 41, nil, nil, 92, 91, 82, 50, 84, - 83, 86, 85, 93, 94, nil, 80, 81, nil, 38, - 39, 37, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 200, nil, nil, 204, nil, nil, 52, 53, nil, - nil, 54, nil, 241, nil, 243, nil, 40, nil, nil, - nil, nil, nil, nil, nil, 207, nil, nil, nil, nil, - 79, 72, 74, 75, 76, 77, nil, nil, nil, 73, - 78, 62, 63, 64, nil, 51, nil, nil, nil, 56, - 57, nil, nil, nil, 60, nil, 58, 59, 61, 246, - 247, 65, 66, nil, nil, nil, nil, 245, 28, 27, - 88, 87, 89, 90, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 41, nil, nil, 92, 91, 82, 50, - 84, 83, 86, 85, 93, 94, nil, 80, 81, nil, - 38, 39, 37, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 200, nil, nil, 204, nil, nil, 52, 53, - nil, nil, 54, nil, 241, nil, 243, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 207, nil, nil, nil, - nil, 79, 72, 74, 75, 76, 77, nil, nil, nil, - 73, 78, -249, -249, -249, nil, -249, nil, nil, nil, - -249, -249, nil, nil, nil, -249, nil, -249, -249, -249, - -249, -249, -249, -249, nil, nil, nil, nil, -249, -249, - -249, -249, -249, -249, -249, nil, nil, nil, nil, nil, - nil, nil, nil, nil, -249, nil, nil, -249, -249, -249, - -249, -249, -249, -249, -249, -249, -249, nil, -249, -249, - nil, -249, -249, -249, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, -249, nil, nil, -249, 254, nil, -249, - -249, nil, nil, -249, nil, -249, nil, -249, nil, -249, - nil, nil, nil, nil, nil, nil, nil, -249, nil, nil, - nil, nil, -249, -249, -249, -249, -249, -249, nil, nil, - nil, -249, -249, -249, -249, -249, nil, -249, nil, nil, - nil, -249, -249, nil, nil, nil, -249, nil, -249, -249, - -249, -249, -249, -249, -249, nil, nil, nil, nil, -249, - -249, -249, -249, -249, -249, -249, nil, nil, nil, nil, - nil, nil, nil, nil, nil, -249, nil, nil, -249, -249, - -249, -249, -249, -249, -249, -249, -249, -249, nil, -249, - -249, nil, -249, -249, -249, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, -249, nil, nil, -249, 263, nil, - -249, -249, nil, nil, -249, nil, -249, nil, -249, nil, - -249, nil, nil, nil, nil, nil, nil, nil, -249, nil, - nil, nil, nil, -249, -249, -249, -249, -249, -249, nil, - nil, nil, -249, -249, 62, 63, 64, nil, 51, nil, - nil, nil, 56, 57, nil, nil, nil, 60, nil, 58, - 59, 61, 246, 247, 65, 66, nil, nil, nil, nil, - 245, 275, 279, 88, 87, 89, 90, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 276, nil, nil, 92, - 91, 82, 50, 84, 83, 86, 85, 93, 94, nil, - 80, 81, nil, nil, nil, 280, nil, 215, 219, 224, - 225, 226, 221, 223, 231, 232, 227, 228, nil, 208, - 209, nil, nil, 229, 230, 273, nil, nil, 270, nil, - nil, 52, 53, nil, nil, 54, nil, 269, nil, 212, - nil, 218, nil, 214, 213, 210, 211, 222, 220, 216, - nil, 217, nil, nil, 79, 72, 74, 75, 76, 77, - nil, nil, nil, 73, 78, 62, 63, 64, 233, 51, - 568, nil, nil, 56, 57, nil, nil, nil, 60, nil, - 58, 59, 61, 246, 247, 65, 66, nil, nil, nil, - nil, 245, 275, 279, 88, 87, 89, 90, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 276, nil, nil, - 92, 91, 82, 50, 84, 83, 86, 85, 93, 94, - nil, 80, 81, nil, nil, nil, 280, nil, 215, 219, - 224, 225, 226, 221, 223, 231, 232, 227, 228, nil, - 208, 209, nil, nil, 229, 230, 273, nil, nil, 204, - nil, nil, 52, 53, nil, nil, 54, nil, nil, nil, - 212, nil, 218, nil, 214, 213, 210, 211, 222, 220, - 216, nil, 217, nil, nil, 79, 72, 74, 75, 76, - 77, nil, nil, nil, 73, 78, 62, 63, 64, 233, - 51, nil, nil, nil, 56, 57, nil, nil, nil, 60, - nil, 58, 59, 61, 246, 247, 65, 66, nil, nil, - nil, nil, 245, 275, 279, 88, 87, 89, 90, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 41, nil, - nil, 92, 91, 82, 50, 84, 83, 86, 85, 93, - 94, nil, 80, 81, nil, 38, 39, 37, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 200, nil, nil, - 204, nil, nil, 52, 53, nil, nil, 54, nil, nil, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, 207, nil, nil, nil, nil, 79, 72, 74, 75, - 76, 77, nil, nil, nil, 73, 78, 62, 63, 64, - nil, 51, nil, nil, nil, 56, 57, nil, nil, nil, - 60, nil, 58, 59, 61, 246, 247, 65, 66, nil, - nil, nil, nil, 245, 275, 279, 88, 87, 89, 90, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 41, - nil, nil, 92, 91, 82, 50, 84, 83, 86, 85, - 93, 94, nil, 80, 81, nil, 38, 39, 37, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 200, nil, - nil, 204, nil, nil, 52, 53, nil, nil, 54, nil, - nil, nil, nil, nil, 40, nil, nil, nil, nil, nil, - nil, nil, 207, nil, nil, nil, nil, 79, 72, 74, - 75, 76, 77, nil, nil, nil, 73, 78, 62, 63, - 64, nil, 51, nil, nil, nil, 56, 57, nil, nil, - nil, 60, nil, 58, 59, 61, 246, 247, 65, 66, - nil, nil, nil, nil, 245, 275, 279, 88, 87, 89, - 90, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 41, nil, nil, 92, 91, 82, 50, 84, 83, 86, - 85, 93, 94, nil, 80, 81, nil, 38, 39, 37, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 200, - nil, nil, 204, nil, nil, 52, 53, nil, nil, 54, - nil, nil, nil, nil, nil, 40, nil, nil, nil, nil, - nil, nil, nil, 207, nil, nil, nil, nil, 79, 72, - 74, 75, 76, 77, nil, nil, nil, 73, 78, 62, - 63, 64, nil, 51, nil, nil, nil, 56, 57, nil, - nil, nil, 60, nil, 58, 59, 61, 23, 24, 65, - 66, nil, nil, nil, nil, 22, 28, 27, 88, 87, - 89, 90, nil, nil, 17, nil, nil, nil, nil, nil, - nil, 41, nil, nil, 92, 91, 82, 50, 84, 83, - 86, 85, 93, 94, nil, 80, 81, nil, 38, 39, - 37, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 200, nil, nil, 204, nil, nil, 52, 53, nil, nil, - 54, nil, nil, nil, nil, nil, 40, nil, nil, nil, - nil, nil, nil, nil, 18, nil, nil, nil, nil, 79, - 72, 74, 75, 76, 77, nil, nil, nil, 73, 78, - 62, 63, 64, nil, 51, nil, nil, nil, 56, 57, - nil, nil, nil, 60, nil, 58, 59, 61, 246, 247, - 65, 66, nil, nil, nil, nil, 245, 28, 27, 88, - 87, 89, 90, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 41, nil, nil, 92, 91, 82, 50, 84, - 83, 86, 85, 93, 94, nil, 80, 81, nil, 38, - 39, 37, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 200, nil, nil, 204, nil, nil, 52, 53, nil, - nil, 54, nil, 299, nil, nil, nil, 40, nil, nil, - nil, nil, nil, nil, nil, 207, nil, nil, nil, nil, - 79, 72, 74, 75, 76, 77, nil, nil, nil, 73, - 78, 62, 63, 64, nil, 51, nil, nil, nil, 56, - 57, nil, nil, nil, 60, nil, 58, 59, 61, 246, - 247, 65, 66, nil, nil, nil, nil, 245, 275, 279, - 88, 87, 89, 90, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 41, nil, nil, 92, 91, 82, 50, - 84, 83, 86, 85, 93, 94, nil, 80, 81, nil, - 38, 39, 37, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 200, nil, nil, 204, nil, nil, 52, 53, - nil, nil, 54, nil, nil, nil, nil, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 207, nil, nil, nil, - nil, 79, 72, 74, 75, 76, 77, nil, nil, nil, - 73, 78, 62, 63, 64, nil, 51, nil, nil, nil, - 56, 57, nil, nil, nil, 60, nil, 58, 59, 61, - 23, 24, 65, 66, nil, nil, nil, nil, 22, 28, - 27, 88, 87, 89, 90, nil, nil, 17, nil, nil, - nil, nil, nil, nil, 41, nil, nil, 92, 91, 82, - 50, 84, 83, 86, 85, 93, 94, nil, 80, 81, - nil, 38, 39, 37, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 200, nil, nil, 204, nil, nil, 52, - 53, nil, nil, 54, nil, nil, nil, nil, nil, 40, - nil, nil, nil, nil, nil, nil, nil, 18, nil, nil, - nil, nil, 79, 72, 74, 75, 76, 77, nil, nil, - nil, 73, 78, 62, 63, 64, nil, 51, nil, nil, - nil, 56, 57, nil, nil, nil, 60, nil, 58, 59, - 61, 23, 24, 65, 66, nil, nil, nil, nil, 22, - 28, 27, 88, 87, 89, 90, nil, nil, 17, nil, - nil, nil, nil, nil, nil, 41, nil, nil, 92, 91, - 82, 50, 84, 83, 86, 85, 93, 94, nil, 80, - 81, nil, 38, 39, 37, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 200, nil, nil, 204, nil, nil, - 52, 53, nil, nil, 54, nil, nil, nil, nil, nil, - 40, nil, nil, nil, nil, nil, nil, nil, 18, nil, - nil, nil, nil, 79, 72, 74, 75, 76, 77, nil, - nil, nil, 73, 78, 62, 63, 64, nil, 51, nil, - nil, nil, 56, 57, nil, nil, nil, 60, nil, 58, - 59, 61, 246, 247, 65, 66, nil, nil, nil, nil, - 245, 275, 279, 88, 87, 89, 90, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 276, nil, nil, 92, - 91, 82, 50, 84, 83, 86, 85, 93, 94, nil, - 80, 81, nil, nil, nil, 280, nil, 215, 219, 224, - 225, 226, 221, 223, 231, 232, 227, 228, nil, 208, - 209, nil, nil, 229, 230, 315, nil, nil, 30, nil, - nil, 52, 53, nil, nil, 54, nil, 32, nil, 212, - nil, 218, nil, 214, 213, 210, 211, 222, 220, 216, - nil, 217, nil, nil, 79, 72, 74, 75, 76, 77, - nil, nil, nil, 73, 78, 62, 63, 64, 233, 51, - nil, nil, nil, 56, 57, nil, nil, nil, 60, nil, - 58, 59, 61, 246, 247, 65, 66, nil, nil, nil, - nil, 245, 275, 279, 88, 87, 89, 90, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 276, nil, nil, - 92, 91, 320, 50, 84, 83, 321, 85, 93, 94, - nil, 80, 81, nil, nil, nil, 280, nil, 215, 219, - 224, 225, 226, 221, 223, 231, 232, 227, 228, nil, - 208, 209, nil, 327, 229, 230, 322, nil, nil, 204, - nil, nil, 52, 53, nil, nil, 54, nil, nil, nil, - 212, nil, 218, nil, 214, 213, 210, 211, 222, 220, - 216, nil, 217, nil, nil, 79, 72, 74, 75, 76, - 77, nil, nil, nil, 73, 78, 62, 63, 64, 233, - 51, nil, nil, nil, 56, 57, nil, nil, nil, 60, - nil, 58, 59, 61, 246, 247, 65, 66, nil, nil, - nil, nil, 245, 275, 279, 88, 87, 89, 90, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 276, nil, - nil, 92, 91, 320, 50, 84, 83, 321, 85, 93, - 94, nil, 80, 81, nil, nil, nil, 280, nil, 215, - 219, 224, 225, 226, 221, 223, 231, 232, 227, 228, - nil, 208, 209, nil, nil, 229, 230, 322, nil, nil, - 204, nil, nil, 52, 53, nil, nil, 54, nil, nil, - nil, 212, nil, 218, nil, 214, 213, 210, 211, 222, - 220, 216, nil, 217, nil, nil, 79, 72, 74, 75, - 76, 77, nil, nil, nil, 73, 78, -473, -473, -473, - 233, -473, nil, nil, nil, -473, -473, nil, nil, nil, - -473, nil, -473, -473, -473, -473, -473, -473, -473, nil, - -473, nil, nil, -473, -473, -473, -473, -473, -473, -473, - nil, nil, nil, nil, nil, nil, nil, nil, nil, -473, - nil, nil, -473, -473, -473, -473, -473, -473, -473, -473, - -473, -473, nil, -473, -473, nil, -473, -473, -473, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, -473, nil, - nil, -473, -473, nil, -473, -473, nil, nil, -473, nil, - -473, nil, -473, nil, -473, nil, nil, nil, nil, nil, - nil, nil, -473, nil, -473, nil, nil, -473, -473, -473, - -473, -473, -473, nil, nil, nil, -473, -473, -474, -474, - -474, nil, -474, nil, nil, nil, -474, -474, nil, nil, - nil, -474, nil, -474, -474, -474, -474, -474, -474, -474, - nil, -474, nil, nil, -474, -474, -474, -474, -474, -474, - -474, nil, nil, nil, nil, nil, nil, nil, nil, nil, - -474, nil, nil, -474, -474, -474, -474, -474, -474, -474, - -474, -474, -474, nil, -474, -474, nil, -474, -474, -474, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, -474, - nil, nil, -474, -474, nil, -474, -474, nil, nil, -474, - nil, -474, nil, -474, nil, -474, nil, nil, nil, nil, - nil, nil, nil, -474, nil, -474, nil, nil, -474, -474, - -474, -474, -474, -474, nil, nil, nil, -474, -474, 62, - 63, 64, nil, 51, nil, nil, nil, 56, 57, nil, - nil, nil, 60, nil, 58, 59, 61, 23, 24, 65, - 66, nil, nil, nil, nil, 22, 28, 27, 88, 87, - 89, 90, nil, nil, 17, nil, nil, nil, nil, nil, - nil, 41, nil, nil, 92, 91, 82, 50, 84, 83, - 86, 85, 93, 94, nil, 80, 81, nil, 38, 39, - 37, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 200, nil, nil, 204, nil, nil, 52, 53, nil, nil, - 54, nil, nil, nil, nil, nil, 40, nil, nil, nil, - nil, nil, nil, nil, 18, nil, nil, nil, nil, 79, - 72, 74, 75, 76, 77, nil, nil, nil, 73, 78, - 62, 63, 64, nil, 51, nil, nil, nil, 56, 57, - nil, nil, nil, 60, nil, 58, 59, 61, 23, 24, - 65, 66, nil, nil, nil, nil, 22, 28, 27, 88, - 87, 89, 90, nil, nil, 17, nil, nil, nil, nil, - nil, nil, 41, nil, nil, 92, 91, 82, 50, 84, - 83, 86, 85, 93, 94, nil, 80, 81, nil, 38, - 39, 37, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 200, nil, nil, 204, nil, nil, 52, 53, nil, - nil, 54, nil, nil, nil, nil, nil, 40, nil, nil, - nil, nil, nil, nil, nil, 18, nil, nil, nil, nil, - 79, 72, 74, 75, 76, 77, nil, nil, nil, 73, - 78, 62, 63, 64, nil, 51, nil, nil, nil, 56, - 57, nil, nil, nil, 60, nil, 58, 59, 61, 23, - 24, 65, 66, nil, nil, nil, nil, 22, 28, 27, - 88, 87, 89, 90, nil, nil, 17, nil, nil, nil, - nil, nil, nil, 41, nil, nil, 92, 91, 82, 50, - 84, 83, 86, 85, 93, 94, nil, 80, 81, nil, - 38, 39, 37, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 200, nil, nil, 204, nil, nil, 52, 53, - nil, nil, 54, nil, nil, nil, nil, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 18, nil, nil, nil, - nil, 79, 72, 74, 75, 76, 77, nil, nil, nil, - 73, 78, 62, 63, 64, nil, 51, nil, nil, nil, - 56, 57, nil, nil, nil, 60, nil, 58, 59, 61, - 23, 24, 65, 66, nil, nil, nil, nil, 22, 28, - 27, 88, 87, 89, 90, nil, nil, 17, nil, nil, - nil, nil, nil, nil, 41, nil, nil, 92, 91, 82, - 50, 84, 83, 86, 85, 93, 94, nil, 80, 81, - nil, 38, 39, 37, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 200, nil, nil, 204, nil, nil, 52, - 53, nil, nil, 54, nil, nil, nil, nil, nil, 40, - nil, nil, nil, nil, nil, nil, nil, 18, nil, nil, - nil, nil, 79, 72, 74, 75, 76, 77, nil, nil, - nil, 73, 78, 62, 63, 64, 7, 51, nil, nil, - nil, 56, 57, nil, nil, nil, 60, nil, 58, 59, - 61, 23, 24, 65, 66, nil, nil, nil, nil, 22, - 28, 27, 88, 87, 89, 90, nil, nil, 17, nil, - nil, nil, nil, nil, 6, 41, 8, 9, 92, 91, - 82, 50, 84, 83, 86, 85, 93, 94, nil, 80, - 81, nil, 38, 39, 37, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 36, nil, nil, 30, nil, nil, - 52, 53, nil, nil, 54, nil, 32, nil, nil, nil, - 40, nil, nil, nil, nil, nil, nil, nil, 18, nil, - nil, nil, nil, 79, 72, 74, 75, 76, 77, nil, - nil, nil, 73, 78, 62, 63, 64, nil, 51, nil, - nil, nil, 56, 57, nil, nil, nil, 60, nil, 58, - 59, 61, 23, 24, 65, 66, nil, nil, nil, nil, - 22, 28, 27, 88, 87, 89, 90, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 41, nil, nil, 92, - 91, 82, 50, 84, 83, 86, 85, 93, 94, nil, - 80, 81, nil, 38, 39, 37, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 200, nil, nil, 204, nil, - nil, 52, 53, nil, nil, 54, nil, 369, nil, nil, - nil, 40, nil, nil, nil, nil, nil, nil, nil, 207, - nil, nil, nil, nil, 79, 72, 74, 75, 76, 77, - nil, nil, nil, 73, 78, 62, 63, 64, nil, 51, - nil, nil, nil, 56, 57, nil, nil, nil, 60, nil, - 58, 59, 61, 23, 24, 65, 66, nil, nil, nil, - nil, 22, 28, 27, 88, 87, 89, 90, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 41, nil, nil, - 92, 91, 82, 50, 84, 83, 86, 85, 93, 94, - nil, 80, 81, nil, 38, 39, 37, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 200, nil, nil, 204, - nil, nil, 52, 53, nil, nil, 54, nil, 369, nil, - nil, nil, 40, nil, nil, nil, nil, nil, nil, nil, - 207, nil, nil, nil, nil, 79, 72, 74, 75, 76, - 77, nil, nil, nil, 73, 78, 62, 63, 64, nil, - 51, nil, nil, nil, 56, 57, nil, nil, nil, 60, - nil, 58, 59, 61, 23, 24, 65, 66, nil, nil, - nil, nil, 22, 28, 27, 88, 87, 89, 90, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 41, nil, - nil, 92, 91, 82, 50, 84, 83, 86, 85, 93, - 94, nil, 80, 81, nil, 38, 39, 37, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 200, nil, nil, - 204, nil, nil, 52, 53, nil, nil, 54, nil, nil, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, 207, nil, nil, nil, nil, 79, 72, 74, 75, - 76, 77, nil, nil, nil, 73, 78, 62, 63, 64, - nil, 51, nil, nil, nil, 56, 57, nil, nil, nil, - 60, nil, 58, 59, 61, 246, 247, 65, 66, nil, - nil, nil, nil, 245, 28, 27, 88, 87, 89, 90, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 41, - nil, nil, 92, 91, 82, 50, 84, 83, 86, 85, - 93, 94, nil, 80, 81, nil, 38, 39, 37, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 200, nil, - nil, 204, nil, nil, 52, 53, nil, nil, 54, nil, - 299, nil, nil, nil, 40, nil, nil, nil, nil, nil, - nil, nil, 207, nil, nil, nil, nil, 79, 72, 74, - 75, 76, 77, nil, nil, nil, 73, 78, 62, 63, - 64, nil, 51, nil, nil, nil, 56, 57, nil, nil, - nil, 60, nil, 58, 59, 61, 23, 24, 65, 66, - nil, nil, nil, nil, 22, 28, 27, 88, 87, 89, - 90, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 41, nil, nil, 92, 91, 82, 50, 84, 83, 86, - 85, 93, 94, nil, 80, 81, nil, 38, 39, 37, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 200, - nil, nil, 204, nil, nil, 52, 53, nil, nil, 54, - nil, nil, nil, nil, nil, 40, nil, nil, nil, nil, - nil, nil, nil, 207, nil, nil, nil, nil, 79, 72, - 74, 75, 76, 77, nil, nil, nil, 73, 78, 62, - 63, 64, nil, 51, nil, nil, nil, 56, 57, nil, - nil, nil, 60, nil, 58, 59, 61, 23, 24, 65, - 66, nil, nil, nil, nil, 22, 28, 27, 88, 87, - 89, 90, nil, nil, 17, nil, nil, nil, nil, nil, - nil, 41, nil, nil, 92, 91, 82, 50, 84, 83, - 86, 85, 93, 94, nil, 80, 81, nil, 38, 39, - 37, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 200, nil, nil, 204, nil, nil, 52, 53, nil, nil, - 54, nil, nil, nil, nil, nil, 40, nil, nil, nil, - nil, nil, nil, nil, 18, nil, nil, nil, nil, 79, - 72, 74, 75, 76, 77, nil, nil, nil, 73, 78, - 62, 63, 64, nil, 51, nil, nil, nil, 56, 57, - nil, nil, nil, 60, nil, 58, 59, 61, 23, 24, - 65, 66, nil, nil, nil, nil, 22, 28, 27, 88, - 87, 89, 90, nil, nil, 17, nil, nil, nil, nil, - nil, nil, 41, nil, nil, 92, 91, 82, 50, 84, - 83, 86, 85, 93, 94, nil, 80, 81, nil, 38, - 39, 37, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 200, nil, nil, 204, nil, nil, 52, 53, nil, - nil, 54, nil, nil, nil, nil, nil, 40, nil, nil, - nil, nil, nil, nil, nil, 18, nil, nil, nil, nil, - 79, 72, 74, 75, 76, 77, nil, nil, nil, 73, - 78, 62, 63, 64, nil, 51, nil, nil, nil, 56, - 57, nil, nil, nil, 60, nil, 58, 59, 61, 246, - 247, 65, 66, nil, nil, nil, nil, 245, 275, 279, - 88, 87, 89, 90, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 41, nil, nil, 92, 91, 82, 50, - 84, 83, 86, 85, 93, 94, nil, 80, 81, nil, - 38, 39, 37, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 200, nil, nil, 204, nil, nil, 52, 53, - nil, nil, 54, nil, nil, nil, nil, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 207, nil, nil, nil, - nil, 79, 72, 74, 75, 76, 77, nil, nil, nil, - 73, 78, 62, 63, 64, nil, 51, nil, nil, nil, - 56, 57, nil, nil, nil, 60, nil, 58, 59, 61, - 246, 247, 65, 66, nil, nil, nil, nil, 245, 275, - 279, 88, 87, 89, 90, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 41, nil, nil, 92, 91, 82, - 50, 84, 83, 86, 85, 93, 94, nil, 80, 81, - nil, 38, 39, 37, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 200, nil, nil, 204, nil, nil, 52, - 53, nil, nil, 54, nil, nil, nil, nil, nil, 40, - nil, nil, nil, nil, nil, nil, nil, 207, nil, nil, - nil, nil, 79, 72, 74, 75, 76, 77, nil, nil, - nil, 73, 78, 62, 63, 64, nil, 51, nil, nil, - nil, 56, 57, nil, nil, nil, 60, nil, 58, 59, - 61, 246, 247, 65, 66, nil, nil, nil, nil, 245, - 275, 279, 88, 87, 89, 90, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 41, nil, nil, 92, 91, - 82, 50, 84, 83, 86, 85, 93, 94, nil, 80, - 81, nil, 38, 39, 37, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 200, nil, nil, 204, nil, nil, - 52, 53, nil, nil, 54, nil, nil, nil, nil, nil, - 40, nil, nil, nil, nil, nil, nil, nil, 207, nil, - nil, nil, nil, 79, 72, 74, 75, 76, 77, nil, - nil, nil, 73, 78, 62, 63, 64, nil, 51, nil, - nil, nil, 56, 57, nil, nil, nil, 60, nil, 58, - 59, 61, 246, 247, 65, 66, nil, nil, nil, nil, - 245, 275, 279, 88, 87, 89, 90, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 41, nil, nil, 92, - 91, 82, 50, 84, 83, 86, 85, 93, 94, nil, - 80, 81, nil, 38, 39, 37, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 200, nil, nil, 204, nil, - nil, 52, 53, nil, nil, 54, nil, nil, nil, nil, - nil, 40, nil, nil, nil, nil, nil, nil, nil, 207, - nil, nil, nil, nil, 79, 72, 74, 75, 76, 77, - nil, nil, nil, 73, 78, 62, 63, 64, nil, 51, - nil, nil, nil, 56, 57, nil, nil, nil, 60, nil, - 58, 59, 61, 246, 247, 65, 66, nil, nil, nil, - nil, 245, 275, 279, 88, 87, 89, 90, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 41, nil, nil, - 92, 91, 82, 50, 84, 83, 86, 85, 93, 94, - nil, 80, 81, nil, 38, 39, 37, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 200, nil, nil, 204, - nil, nil, 52, 53, nil, nil, 54, nil, nil, nil, - nil, nil, 40, nil, nil, nil, nil, nil, nil, nil, - 207, nil, nil, nil, nil, 79, 72, 74, 75, 76, - 77, nil, nil, nil, 73, 78, 62, 63, 64, nil, - 51, nil, nil, nil, 56, 57, nil, nil, nil, 60, - nil, 58, 59, 61, 246, 247, 65, 66, nil, nil, - nil, nil, 245, 275, 279, 88, 87, 89, 90, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 41, nil, - nil, 92, 91, 82, 50, 84, 83, 86, 85, 93, - 94, nil, 80, 81, nil, 38, 39, 37, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 200, nil, nil, - 204, nil, nil, 52, 53, nil, nil, 54, nil, nil, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, 207, nil, nil, nil, nil, 79, 72, 74, 75, - 76, 77, nil, nil, nil, 73, 78, 62, 63, 64, - nil, 51, nil, nil, nil, 56, 57, nil, nil, nil, - 60, nil, 58, 59, 61, 246, 247, 65, 66, nil, - nil, nil, nil, 245, 275, 279, 88, 87, 89, 90, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 41, - nil, nil, 92, 91, 82, 50, 84, 83, 86, 85, - 93, 94, nil, 80, 81, nil, 38, 39, 37, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 200, nil, - nil, 204, nil, nil, 52, 53, nil, nil, 54, nil, - nil, nil, nil, nil, 40, nil, nil, nil, nil, nil, - nil, nil, 207, nil, nil, nil, nil, 79, 72, 74, - 75, 76, 77, nil, nil, nil, 73, 78, 62, 63, - 64, nil, 51, nil, nil, nil, 56, 57, nil, nil, - nil, 60, nil, 58, 59, 61, 246, 247, 65, 66, - nil, nil, nil, nil, 245, 275, 279, 88, 87, 89, - 90, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 41, nil, nil, 92, 91, 82, 50, 84, 83, 86, - 85, 93, 94, nil, 80, 81, nil, 38, 39, 37, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 200, - nil, nil, 204, nil, nil, 52, 53, nil, nil, 54, - nil, nil, nil, nil, nil, 40, nil, nil, nil, nil, - nil, nil, nil, 207, nil, nil, nil, nil, 79, 72, - 74, 75, 76, 77, nil, nil, nil, 73, 78, 62, - 63, 64, nil, 51, nil, nil, nil, 56, 57, nil, - nil, nil, 60, nil, 58, 59, 61, 246, 247, 65, - 66, nil, nil, nil, nil, 245, 275, 279, 88, 87, - 89, 90, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 41, nil, nil, 92, 91, 82, 50, 84, 83, - 86, 85, 93, 94, nil, 80, 81, nil, 38, 39, - 37, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 200, nil, nil, 204, nil, nil, 52, 53, nil, nil, - 54, nil, nil, nil, nil, nil, 40, nil, nil, nil, - nil, nil, nil, nil, 207, nil, nil, nil, nil, 79, - 72, 74, 75, 76, 77, nil, nil, nil, 73, 78, - 62, 63, 64, nil, 51, nil, nil, nil, 56, 57, - nil, nil, nil, 60, nil, 58, 59, 61, 246, 247, - 65, 66, nil, nil, nil, nil, 245, 275, 279, 88, - 87, 89, 90, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 41, nil, nil, 92, 91, 82, 50, 84, - 83, 86, 85, 93, 94, nil, 80, 81, nil, 38, - 39, 37, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 200, nil, nil, 204, nil, nil, 52, 53, nil, - nil, 54, nil, nil, nil, nil, nil, 40, nil, nil, - nil, nil, nil, nil, nil, 207, nil, nil, nil, nil, - 79, 72, 74, 75, 76, 77, nil, nil, nil, 73, - 78, 62, 63, 64, nil, 51, nil, nil, nil, 56, - 57, nil, nil, nil, 60, nil, 58, 59, 61, 246, - 247, 65, 66, nil, nil, nil, nil, 245, 275, 279, - 88, 87, 89, 90, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 41, nil, nil, 92, 91, 82, 50, - 84, 83, 86, 85, 93, 94, nil, 80, 81, nil, - 38, 39, 37, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 200, nil, nil, 204, nil, nil, 52, 53, - nil, nil, 54, nil, nil, nil, nil, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 207, nil, nil, nil, - nil, 79, 72, 74, 75, 76, 77, nil, nil, nil, - 73, 78, 62, 63, 64, nil, 51, nil, nil, nil, - 56, 57, nil, nil, nil, 60, nil, 58, 59, 61, - 246, 247, 65, 66, nil, nil, nil, nil, 245, 275, - 279, 88, 87, 89, 90, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 41, nil, nil, 92, 91, 82, - 50, 84, 83, 86, 85, 93, 94, nil, 80, 81, - nil, 38, 39, 37, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 200, nil, nil, 204, nil, nil, 52, - 53, nil, nil, 54, nil, nil, nil, nil, nil, 40, - nil, nil, nil, nil, nil, nil, nil, 207, nil, nil, - nil, nil, 79, 72, 74, 75, 76, 77, nil, nil, - nil, 73, 78, 62, 63, 64, nil, 51, nil, nil, - nil, 56, 57, nil, nil, nil, 60, nil, 58, 59, - 61, 246, 247, 65, 66, nil, nil, nil, nil, 245, - 275, 279, 88, 87, 89, 90, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 41, nil, nil, 92, 91, - 82, 50, 84, 83, 86, 85, 93, 94, nil, 80, - 81, nil, 38, 39, 37, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 200, nil, nil, 204, nil, nil, - 52, 53, nil, nil, 54, nil, nil, nil, nil, nil, - 40, nil, nil, nil, nil, nil, nil, nil, 207, nil, - nil, nil, nil, 79, 72, 74, 75, 76, 77, nil, - nil, nil, 73, 78, 62, 63, 64, nil, 51, nil, - nil, nil, 56, 57, nil, nil, nil, 60, nil, 58, - 59, 61, 246, 247, 65, 66, nil, nil, nil, nil, - 245, 275, 279, 88, 87, 89, 90, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 41, nil, nil, 92, - 91, 82, 50, 84, 83, 86, 85, 93, 94, nil, - 80, 81, nil, 38, 39, 37, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 200, nil, nil, 204, nil, - nil, 52, 53, nil, nil, 54, nil, nil, nil, nil, - nil, 40, nil, nil, nil, nil, nil, nil, nil, 207, - nil, nil, nil, nil, 79, 72, 74, 75, 76, 77, - nil, nil, nil, 73, 78, 62, 63, 64, nil, 51, - nil, nil, nil, 56, 57, nil, nil, nil, 60, nil, - 58, 59, 61, 246, 247, 65, 66, nil, nil, nil, - nil, 245, 275, 279, 88, 87, 89, 90, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 41, nil, nil, - 92, 91, 82, 50, 84, 83, 86, 85, 93, 94, - nil, 80, 81, nil, 38, 39, 37, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 200, nil, nil, 204, - nil, nil, 52, 53, nil, nil, 54, nil, nil, nil, - nil, nil, 40, nil, nil, nil, nil, nil, nil, nil, - 207, nil, nil, nil, nil, 79, 72, 74, 75, 76, - 77, nil, nil, nil, 73, 78, 62, 63, 64, nil, - 51, nil, nil, nil, 56, 57, nil, nil, nil, 60, - nil, 58, 59, 61, 246, 247, 65, 66, nil, nil, - nil, nil, 245, 275, 279, 88, 87, 89, 90, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 41, nil, - nil, 92, 91, 82, 50, 84, 83, 86, 85, 93, - 94, nil, 80, 81, nil, 38, 39, 37, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 200, nil, nil, - 204, nil, nil, 52, 53, nil, nil, 54, nil, nil, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, 207, nil, nil, nil, nil, 79, 72, 74, 75, - 76, 77, nil, nil, nil, 73, 78, 62, 63, 64, - nil, 51, nil, nil, nil, 56, 57, nil, nil, nil, - 60, nil, 58, 59, 61, 246, 247, 65, 66, nil, - nil, nil, nil, 245, 275, 279, 88, 87, 89, 90, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 41, - nil, nil, 92, 91, 82, 50, 84, 83, 86, 85, - 93, 94, nil, 80, 81, nil, 38, 39, 37, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 200, nil, - nil, 204, nil, nil, 52, 53, nil, nil, 54, nil, - nil, nil, nil, nil, 40, nil, nil, nil, nil, nil, - nil, nil, 207, nil, nil, nil, nil, 79, 72, 74, - 75, 76, 77, nil, nil, nil, 73, 78, 62, 63, - 64, nil, 51, nil, nil, nil, 56, 57, nil, nil, - nil, 60, nil, 58, 59, 61, 246, 247, 65, 66, - nil, nil, nil, nil, 245, 275, 279, 88, 87, 89, - 90, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 41, nil, nil, 92, 91, 82, 50, 84, 83, 86, - 85, 93, 94, nil, 80, 81, nil, 38, 39, 37, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 200, - nil, nil, 204, nil, nil, 52, 53, nil, nil, 54, - nil, nil, nil, nil, nil, 40, nil, nil, nil, nil, - nil, nil, nil, 207, nil, nil, nil, nil, 79, 72, - 74, 75, 76, 77, nil, nil, nil, 73, 78, 62, - 63, 64, nil, 51, nil, nil, nil, 56, 57, nil, - nil, nil, 60, nil, 58, 59, 61, 246, 247, 65, - 66, nil, nil, nil, nil, 245, 275, 279, 88, 87, - 89, 90, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 41, nil, nil, 92, 91, 82, 50, 84, 83, - 86, 85, 93, 94, nil, 80, 81, nil, 38, 39, - 37, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 200, nil, nil, 204, nil, nil, 52, 53, nil, nil, - 54, nil, nil, nil, nil, nil, 40, nil, nil, nil, - nil, nil, nil, nil, 207, nil, nil, nil, nil, 79, - 72, 74, 75, 76, 77, nil, nil, nil, 73, 78, - 62, 63, 64, nil, 51, nil, nil, nil, 56, 57, - nil, nil, nil, 60, nil, 58, 59, 61, 246, 247, - 65, 66, nil, nil, nil, nil, 245, 275, 279, 88, - 87, 89, 90, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 41, nil, nil, 92, 91, 82, 50, 84, - 83, 86, 85, 93, 94, nil, 80, 81, nil, 38, - 39, 37, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 200, nil, nil, 204, nil, nil, 52, 53, nil, - nil, 54, nil, nil, nil, nil, nil, 40, nil, nil, - nil, nil, nil, nil, nil, 207, nil, nil, nil, nil, - 79, 72, 74, 75, 76, 77, nil, nil, nil, 73, - 78, 62, 63, 64, nil, 51, nil, nil, nil, 56, - 57, nil, nil, nil, 60, nil, 58, 59, 61, 246, - 247, 65, 66, nil, nil, nil, nil, 245, 275, 279, - 88, 87, 89, 90, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 41, nil, nil, 92, 91, 82, 50, - 84, 83, 86, 85, 93, 94, nil, 80, 81, nil, - 38, 39, 37, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 200, nil, nil, 204, nil, nil, 52, 53, - nil, nil, 54, nil, nil, nil, nil, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 207, nil, nil, nil, - nil, 79, 72, 74, 75, 76, 77, nil, nil, nil, - 73, 78, 62, 63, 64, nil, 51, nil, nil, nil, - 56, 57, nil, nil, nil, 60, nil, 58, 59, 61, - 246, 247, 65, 66, nil, nil, nil, nil, 245, 275, - 279, 88, 87, 89, 90, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 41, nil, nil, 92, 91, 82, - 50, 84, 83, 86, 85, 93, 94, nil, 80, 81, - nil, 38, 39, 37, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 200, nil, nil, 204, nil, nil, 52, - 53, nil, nil, 54, nil, nil, nil, nil, nil, 40, - nil, nil, nil, nil, nil, nil, nil, 207, nil, nil, - nil, nil, 79, 72, 74, 75, 76, 77, nil, nil, - nil, 73, 78, 62, 63, 64, nil, 51, nil, nil, - nil, 56, 57, nil, nil, nil, 60, nil, 58, 59, - 61, 246, 247, 65, 66, nil, nil, nil, nil, 245, - 275, 279, 88, 87, 89, 90, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 41, nil, nil, 92, 91, - 82, 50, 84, 83, 86, 85, 93, 94, nil, 80, - 81, nil, 38, 39, 37, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 200, nil, nil, 204, nil, nil, - 52, 53, nil, nil, 54, nil, nil, nil, nil, nil, - 40, nil, nil, nil, nil, nil, nil, nil, 207, nil, - nil, nil, nil, 79, 72, 74, 75, 76, 77, nil, - nil, nil, 73, 78, 62, 63, 64, nil, 51, nil, - nil, nil, 56, 57, nil, nil, nil, 60, nil, 58, - 59, 61, 246, 247, 65, 66, nil, nil, nil, nil, - 245, 275, 279, 88, 87, 89, 90, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 41, nil, nil, 92, - 91, 82, 50, 84, 83, 86, 85, 93, 94, nil, - 80, 81, nil, 38, 39, 37, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 200, nil, nil, 204, nil, - nil, 52, 53, nil, nil, 54, nil, nil, nil, nil, - nil, 40, nil, nil, nil, nil, nil, nil, nil, 207, - nil, nil, nil, nil, 79, 72, 74, 75, 76, 77, - nil, nil, nil, 73, 78, 62, 63, 64, nil, 51, - nil, nil, nil, 56, 57, nil, nil, nil, 60, nil, - 58, 59, 61, 246, 247, 65, 66, nil, nil, nil, - nil, 245, 275, 279, 88, 87, 89, 90, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 41, nil, nil, - 92, 91, 82, 50, 84, 83, 86, 85, 93, 94, - nil, 80, 81, nil, 38, 39, 37, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 200, nil, nil, 204, - nil, nil, 52, 53, nil, nil, 54, nil, nil, nil, - nil, nil, 40, nil, nil, nil, nil, nil, nil, nil, - 207, nil, nil, nil, nil, 79, 72, 74, 75, 76, - 77, nil, nil, nil, 73, 78, 62, 63, 64, nil, - 51, nil, nil, nil, 56, 57, nil, nil, nil, 60, - nil, 58, 59, 61, 246, 247, 65, 66, nil, nil, - nil, nil, 245, 275, 279, 88, 87, 89, 90, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 41, nil, - nil, 92, 91, 82, 50, 84, 83, 86, 85, 93, - 94, nil, 80, 81, nil, 38, 39, 37, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 200, nil, nil, - 204, nil, nil, 52, 53, nil, nil, 54, nil, nil, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, 207, nil, nil, nil, nil, 79, 72, 74, 75, - 76, 77, nil, nil, nil, 73, 78, 62, 63, 64, - nil, 51, nil, nil, nil, 56, 57, nil, nil, nil, - 60, nil, 58, 59, 61, 246, 247, 65, 66, nil, - nil, nil, nil, 245, 275, 279, 88, 87, 89, 90, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 41, - nil, nil, 92, 91, 82, 50, 84, 83, 86, 85, - 93, 94, nil, 80, 81, nil, 38, 39, 37, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 200, nil, - nil, 204, nil, nil, 52, 53, nil, nil, 54, nil, - nil, nil, nil, nil, 40, nil, nil, nil, nil, nil, - nil, nil, 207, nil, nil, nil, nil, 79, 72, 74, - 75, 76, 77, nil, nil, nil, 73, 78, 62, 63, - 64, nil, 51, nil, nil, nil, 56, 57, nil, nil, - nil, 60, nil, 58, 59, 61, 246, 247, 65, 66, - nil, nil, nil, nil, 245, 275, 279, 88, 87, 89, - 90, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 41, nil, nil, 92, 91, 82, 50, 84, 83, 86, - 85, 93, 94, nil, 80, 81, nil, 38, 39, 37, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 200, - nil, nil, 204, nil, nil, 52, 53, nil, nil, 54, - nil, nil, nil, nil, nil, 40, nil, nil, nil, nil, - nil, nil, nil, 207, nil, nil, nil, nil, 79, 72, - 74, 75, 76, 77, nil, nil, nil, 73, 78, 62, - 63, 64, nil, 51, nil, nil, nil, 56, 57, nil, - nil, nil, 60, nil, 58, 59, 61, 246, 247, 65, - 66, nil, nil, nil, nil, 245, 275, 279, 88, 87, - 89, 90, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 41, nil, nil, 92, 91, 82, 50, 84, 83, - 86, 85, 93, 94, nil, 80, 81, nil, 38, 39, - 37, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 200, nil, nil, 204, nil, nil, 52, 53, nil, nil, - 54, nil, nil, nil, nil, nil, 40, nil, nil, nil, - nil, nil, nil, nil, 207, nil, nil, nil, nil, 79, - 72, 74, 75, 76, 77, nil, nil, nil, 73, 78, - 62, 63, 64, nil, 51, nil, nil, nil, 56, 57, - nil, nil, nil, 60, nil, 58, 59, 61, 246, 247, - 65, 66, nil, nil, nil, nil, 245, 28, 27, 88, - 87, 89, 90, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 41, nil, nil, 92, 91, 82, 50, 84, - 83, 86, 85, 93, 94, nil, 80, 81, nil, 38, - 39, 37, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 200, nil, nil, 204, nil, nil, 52, 53, nil, - nil, 54, nil, 241, nil, 243, nil, 40, nil, nil, - nil, nil, nil, nil, nil, 207, nil, nil, nil, nil, - 79, 72, 74, 75, 76, 77, nil, nil, nil, 73, - 78, 62, 63, 64, nil, 51, nil, nil, nil, 56, - 57, nil, nil, nil, 60, nil, 58, 59, 61, 246, - 247, 65, 66, nil, nil, nil, nil, 245, 28, 27, - 88, 87, 89, 90, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 41, nil, nil, 92, 91, 82, 50, - 84, 83, 86, 85, 93, 94, nil, 80, 81, nil, - 38, 39, 37, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 200, nil, nil, 204, nil, nil, 445, 53, - nil, nil, 54, nil, 241, nil, 243, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 207, nil, nil, nil, - nil, 79, 72, 74, 75, 76, 77, nil, nil, nil, - 73, 78, 62, 63, 64, nil, 51, nil, nil, nil, - 56, 57, nil, nil, nil, 60, nil, 58, 59, 61, - 246, 247, 65, 66, nil, nil, nil, nil, 245, 28, - 27, 88, 87, 89, 90, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 41, nil, nil, 92, 91, 82, - 50, 84, 83, 86, 85, 93, 94, nil, 80, 81, - nil, 38, 39, 37, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 200, nil, nil, 204, nil, 449, 52, - 53, nil, nil, 54, nil, 241, nil, 243, nil, 40, - nil, nil, nil, nil, nil, nil, nil, 207, nil, nil, - nil, nil, 79, 72, 74, 75, 76, 77, nil, nil, - nil, 73, 78, 62, 63, 64, nil, 51, nil, nil, - nil, 56, 57, nil, nil, nil, 60, nil, 58, 59, - 61, 246, 247, 65, 66, nil, nil, nil, nil, 245, - 275, 279, 88, 87, 89, 90, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 276, nil, nil, 92, 91, - 82, 50, 84, 83, 86, 85, 93, 94, nil, 80, - 81, nil, nil, nil, 280, nil, 215, 219, 224, 225, - 226, 221, 223, 231, 232, 227, 228, nil, 208, 209, - nil, nil, 229, 230, 273, nil, nil, 204, nil, nil, - 52, 53, nil, nil, 54, nil, nil, nil, 212, nil, - 218, nil, 214, 213, 210, 211, 222, 220, 216, nil, - 217, nil, nil, 79, 72, 74, 75, 76, 77, nil, - nil, nil, 73, 78, 62, 63, 64, 233, 51, nil, - nil, nil, 56, 57, nil, nil, nil, 60, nil, 58, - 59, 61, 246, 247, 65, 66, nil, nil, nil, nil, - 245, 275, 279, 88, 87, 89, 90, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 41, nil, nil, 92, - 91, 82, 50, 84, 83, 86, 85, 93, 94, nil, - 80, 81, nil, 38, 39, 37, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 200, nil, nil, 204, 469, - nil, 52, 53, nil, nil, 54, nil, nil, nil, nil, - nil, 40, nil, nil, nil, nil, nil, nil, nil, 207, - nil, nil, nil, nil, 79, 72, 74, 75, 76, 77, - nil, nil, nil, 73, 78, 62, 63, 64, nil, 51, - nil, nil, nil, 56, 57, nil, nil, nil, 60, nil, - 58, 59, 61, 246, 247, 65, 66, nil, nil, nil, - nil, 245, 275, 279, 88, 87, 89, 90, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 41, nil, nil, - 92, 91, 82, 50, 84, 83, 86, 85, 93, 94, - nil, 80, 81, nil, 38, 39, 37, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 200, nil, nil, 204, - nil, nil, 52, 53, nil, nil, 54, nil, nil, nil, - nil, nil, 40, nil, nil, nil, nil, nil, nil, nil, - 207, nil, nil, nil, nil, 79, 72, 74, 75, 76, - 77, nil, nil, nil, 73, 78, 62, 63, 64, nil, - 51, nil, nil, nil, 56, 57, nil, nil, nil, 60, - nil, 58, 59, 61, 23, 24, 65, 66, nil, nil, - nil, nil, 22, 28, 27, 88, 87, 89, 90, nil, - nil, 17, nil, nil, nil, nil, nil, nil, 41, nil, - nil, 92, 91, 82, 50, 84, 83, 86, 85, 93, - 94, nil, 80, 81, nil, 38, 39, 37, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 200, nil, nil, - 204, nil, nil, 52, 53, nil, nil, 54, nil, nil, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, 18, nil, nil, nil, nil, 79, 72, 74, 75, - 76, 77, nil, nil, nil, 73, 78, 62, 63, 64, - nil, 51, nil, nil, nil, 56, 57, nil, nil, nil, - 60, nil, 58, 59, 61, 23, 24, 65, 66, nil, - nil, nil, nil, 22, 28, 27, 88, 87, 89, 90, - nil, nil, 17, nil, nil, nil, nil, nil, nil, 41, - nil, nil, 92, 91, 82, 50, 84, 83, 86, 85, - 93, 94, nil, 80, 81, nil, 38, 39, 37, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 200, nil, - nil, 204, nil, nil, 52, 53, nil, nil, 54, nil, - nil, nil, nil, nil, 40, nil, nil, nil, nil, nil, - nil, nil, 18, nil, nil, nil, nil, 79, 72, 74, - 75, 76, 77, nil, nil, nil, 73, 78, 62, 63, - 64, nil, 51, nil, nil, nil, 56, 57, nil, nil, - nil, 60, nil, 58, 59, 61, 23, 24, 65, 66, - nil, nil, nil, nil, 22, 28, 27, 88, 87, 89, - 90, nil, nil, 17, nil, nil, nil, nil, nil, nil, - 41, nil, nil, 92, 91, 82, 50, 84, 83, 86, - 85, 93, 94, nil, 80, 81, nil, 38, 39, 37, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 200, - nil, nil, 204, nil, nil, 52, 53, nil, nil, 54, - nil, nil, nil, nil, nil, 40, nil, nil, nil, nil, - nil, nil, nil, 18, nil, nil, nil, nil, 79, 72, - 74, 75, 76, 77, nil, nil, nil, 73, 78, 62, - 63, 64, nil, 51, nil, nil, nil, 56, 57, nil, - nil, nil, 60, nil, 58, 59, 61, 23, 24, 65, - 66, nil, nil, nil, nil, 22, 28, 27, 88, 87, - 89, 90, nil, nil, 17, nil, nil, nil, nil, nil, - nil, 41, nil, nil, 92, 91, 82, 50, 84, 83, - 86, 85, 93, 94, nil, 80, 81, nil, 38, 39, - 37, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 200, nil, nil, 204, nil, nil, 52, 53, nil, nil, - 54, nil, nil, nil, nil, nil, 40, nil, nil, nil, - nil, nil, nil, nil, 18, nil, nil, nil, nil, 79, - 72, 74, 75, 76, 77, nil, nil, nil, 73, 78, - 153, 164, 154, 177, 150, 170, 160, 159, 180, 181, - 175, 158, 157, 152, 178, 182, 183, 162, 151, 165, - 169, 171, 163, 156, nil, nil, 172, 179, 174, 173, - 166, 176, 161, 149, 168, 167, nil, nil, nil, nil, - nil, 148, 155, 146, 147, 144, 145, 109, 111, nil, - nil, 110, nil, nil, nil, nil, nil, nil, nil, 139, - 140, nil, 137, 121, 122, 123, nil, 126, 128, nil, - nil, 124, nil, nil, nil, nil, 141, 142, 129, 130, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 134, 133, nil, 120, 138, 136, 135, - 131, 132, 127, 125, 118, nil, 119, nil, nil, 143, - 79, nil, nil, 62, 63, 64, nil, 51, nil, nil, - 78, 56, 57, nil, nil, nil, 60, nil, 58, 59, - 61, 246, 247, 65, 66, nil, nil, nil, nil, 245, - 275, 279, 88, 87, 89, 90, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 41, nil, nil, 92, 91, - 82, 50, 84, 83, 86, 85, 93, 94, nil, 80, - 81, nil, 38, 39, 37, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 200, nil, nil, 204, nil, nil, - 52, 53, nil, nil, 54, nil, nil, nil, nil, nil, - 40, nil, nil, nil, nil, nil, nil, nil, 207, nil, - nil, nil, nil, 79, 72, 74, 75, 76, 77, nil, - nil, nil, 73, 78, -249, -249, -249, nil, -249, nil, - nil, nil, -249, -249, nil, nil, nil, -249, nil, -249, - -249, -249, -249, -249, -249, -249, nil, nil, nil, nil, - -249, -249, -249, -249, -249, -249, -249, nil, nil, nil, - nil, nil, nil, nil, nil, nil, -249, nil, nil, -249, - -249, -249, -249, -249, -249, -249, -249, -249, -249, nil, - -249, -249, nil, -249, -249, -249, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, -249, nil, nil, -249, 254, - nil, -249, -249, nil, nil, -249, nil, -249, nil, -249, - nil, -249, nil, nil, nil, nil, nil, nil, nil, -249, - nil, nil, nil, nil, -249, -249, -249, -249, -249, -249, - nil, nil, nil, -249, -249, -478, -478, -478, nil, -478, - nil, nil, nil, -478, -478, nil, nil, nil, -478, nil, - -478, -478, -478, -478, -478, -478, -478, nil, nil, nil, - nil, -478, -478, -478, -478, -478, -478, -478, nil, nil, - nil, nil, nil, nil, nil, nil, nil, -478, nil, nil, - -478, -478, -478, -478, -478, -478, -478, -478, -478, -478, - nil, -478, -478, nil, -478, -478, -478, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, -478, nil, nil, -478, - -478, nil, -478, -478, nil, nil, -478, nil, -478, nil, - -478, nil, -478, nil, nil, nil, nil, nil, nil, nil, - -478, nil, nil, nil, nil, -478, -478, -478, -478, -478, - -478, nil, nil, nil, -478, -478, -479, -479, -479, nil, - -479, nil, nil, nil, -479, -479, nil, nil, nil, -479, - nil, -479, -479, -479, -479, -479, -479, -479, nil, nil, - nil, nil, -479, -479, -479, -479, -479, -479, -479, nil, - nil, nil, nil, nil, nil, nil, nil, nil, -479, nil, - nil, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, nil, -479, -479, nil, -479, -479, -479, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, -479, nil, nil, - -479, -479, nil, -479, -479, nil, nil, -479, nil, -479, - nil, -479, nil, -479, nil, nil, nil, nil, nil, nil, - nil, -479, nil, nil, nil, nil, -479, -479, -479, -479, - -479, -479, nil, nil, nil, -479, -479, 62, 63, 64, - nil, 51, nil, nil, nil, 56, 57, nil, nil, nil, - 60, nil, 58, 59, 61, 246, 247, 65, 66, nil, - nil, nil, nil, 245, 28, 27, 88, 87, 89, 90, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 41, - nil, nil, 92, 91, 82, 50, 84, 83, 86, 85, - 93, 94, nil, 80, 81, nil, 38, 39, 37, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 200, nil, - nil, 204, nil, nil, 52, 53, nil, nil, 54, nil, - 299, nil, nil, nil, 40, nil, nil, nil, nil, nil, - nil, nil, 207, nil, nil, nil, nil, 79, 72, 74, - 75, 76, 77, nil, nil, nil, 73, 78, 62, 63, - 64, nil, 51, nil, nil, nil, 56, 57, nil, nil, - nil, 60, nil, 58, 59, 61, 246, 247, 65, 66, - nil, nil, nil, nil, 245, 275, 279, 88, 87, 89, - 90, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 41, nil, nil, 92, 91, 82, 50, 84, 83, 86, - 85, 93, 94, nil, 80, 81, nil, 38, 39, 37, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 200, - nil, nil, 204, nil, nil, 52, 53, nil, nil, 54, - nil, nil, nil, nil, nil, 40, nil, nil, nil, nil, - nil, nil, nil, 207, nil, nil, nil, nil, 79, 72, - 74, 75, 76, 77, nil, nil, nil, 73, 78, 62, - 63, 64, nil, 51, nil, nil, nil, 56, 57, nil, - nil, nil, 60, nil, 58, 59, 61, 246, 247, 65, - 66, nil, nil, nil, nil, 245, 275, 279, 88, 87, - 89, 90, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 41, nil, nil, 92, 91, 82, 50, 84, 83, - 86, 85, 93, 94, nil, 80, 81, nil, 38, 39, - 37, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 200, nil, nil, 204, nil, nil, 52, 53, nil, nil, - 54, nil, nil, nil, nil, nil, 40, nil, nil, nil, - nil, nil, nil, nil, 207, nil, nil, nil, nil, 79, - 72, 74, 75, 76, 77, nil, nil, nil, 73, 78, - 62, 63, 64, nil, 51, nil, nil, nil, 56, 57, - nil, nil, nil, 60, nil, 58, 59, 61, 246, 247, - 65, 66, nil, nil, nil, nil, 245, 275, 279, 88, - 87, 89, 90, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 41, nil, nil, 92, 91, 82, 50, 84, - 83, 86, 85, 93, 94, nil, 80, 81, nil, 38, - 39, 37, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 200, nil, nil, 204, nil, nil, 52, 53, nil, - nil, 54, nil, nil, nil, nil, nil, 40, nil, nil, - nil, nil, nil, nil, nil, 207, nil, nil, nil, nil, - 79, 72, 74, 75, 76, 77, nil, nil, nil, 73, - 78, 62, 63, 64, nil, 51, nil, nil, nil, 56, - 57, nil, nil, nil, 60, nil, 58, 59, 61, 246, - 247, 65, 66, nil, nil, nil, nil, 245, 275, 279, - 88, 87, 89, 90, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 41, nil, nil, 92, 91, 82, 50, - 84, 83, 86, 85, 93, 94, nil, 80, 81, nil, - 38, 39, 37, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 200, nil, nil, 204, nil, nil, 52, 53, - nil, nil, 54, nil, 560, nil, 243, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 207, nil, nil, nil, - nil, 79, 72, 74, 75, 76, 77, nil, nil, nil, - 73, 78, 62, 63, 64, nil, 51, nil, nil, nil, - 56, 57, nil, nil, nil, 60, nil, 58, 59, 61, - 246, 247, 65, 66, nil, nil, nil, nil, 245, 275, - 279, 88, 87, 89, 90, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 41, nil, nil, 92, 91, 82, - 50, 84, 83, 86, 85, 93, 94, nil, 80, 81, - nil, 38, 39, 37, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 200, nil, nil, 204, nil, nil, 52, - 53, nil, nil, 54, nil, 564, nil, 243, nil, 40, - nil, nil, nil, nil, nil, nil, nil, 207, nil, nil, - nil, nil, 79, 72, 74, 75, 76, 77, nil, nil, - nil, 73, 78, 62, 63, 64, nil, 51, nil, nil, - nil, 56, 57, nil, nil, nil, 60, nil, 58, 59, - 61, 246, 247, 65, 66, nil, nil, nil, nil, 245, - 275, 279, 88, 87, 89, 90, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 41, nil, nil, 92, 91, - 82, 50, 84, 83, 86, 85, 93, 94, nil, 80, - 81, nil, 38, 39, 37, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 200, nil, nil, 204, nil, nil, - 52, 53, nil, nil, 54, nil, nil, nil, nil, nil, - 40, nil, nil, nil, nil, nil, nil, nil, 207, nil, - nil, nil, nil, 79, 72, 74, 75, 76, 77, nil, - nil, nil, 73, 78, 62, 63, 64, nil, 51, nil, - nil, nil, 56, 57, nil, nil, nil, 60, nil, 58, - 59, 61, 23, 24, 65, 66, nil, nil, nil, nil, - 22, 28, 27, 88, 87, 89, 90, nil, nil, 17, - nil, nil, nil, nil, nil, nil, 41, nil, nil, 92, - 91, 82, 50, 84, 83, 86, 85, 93, 94, nil, - 80, 81, nil, 38, 39, 37, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 200, nil, nil, 204, nil, - nil, 52, 53, nil, nil, 54, nil, 584, nil, 243, - nil, 40, nil, nil, nil, nil, nil, nil, nil, 18, - nil, nil, nil, nil, 79, 72, 74, 75, 76, 77, - nil, nil, nil, 73, 78, 62, 63, 64, nil, 51, - nil, nil, nil, 56, 57, nil, nil, nil, 60, nil, - 58, 59, 61, 246, 247, 65, 66, nil, nil, nil, - nil, 245, 28, 27, 88, 87, 89, 90, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 41, nil, nil, - 92, 91, 82, 50, 84, 83, 86, 85, 93, 94, - nil, 80, 81, nil, 38, 39, 37, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 200, nil, nil, 204, - nil, nil, 52, 53, nil, nil, 54, nil, 299, nil, - nil, nil, 40, nil, nil, nil, nil, nil, nil, nil, - 207, nil, nil, nil, nil, 79, 72, 74, 75, 76, - 77, nil, nil, nil, 73, 78, 62, 63, 64, nil, - 51, nil, nil, nil, 56, 57, nil, nil, nil, 60, - nil, 58, 59, 61, 246, 247, 65, 66, nil, nil, - nil, nil, 245, 275, 279, 88, 87, 89, 90, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 41, nil, - nil, 92, 91, 82, 50, 84, 83, 86, 85, 93, - 94, nil, 80, 81, nil, 38, 39, 37, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 200, nil, nil, - 204, nil, nil, 52, 53, nil, nil, 54, nil, nil, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, 207, nil, nil, nil, nil, 79, 72, 74, 75, - 76, 77, nil, nil, nil, 73, 78, 62, 63, 64, - nil, 51, nil, nil, nil, 56, 57, nil, nil, nil, - 60, nil, 58, 59, 61, 246, 247, 65, 66, nil, - nil, nil, nil, 245, 275, 279, 88, 87, 89, 90, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 41, - nil, nil, 92, 91, 82, 50, 84, 83, 86, 85, - 93, 94, nil, 80, 81, nil, 38, 39, 37, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 200, nil, - nil, 204, nil, nil, 52, 53, nil, nil, 54, nil, - nil, nil, nil, nil, 40, nil, nil, nil, nil, nil, - nil, nil, 207, nil, nil, nil, nil, 79, 72, 74, - 75, 76, 77, nil, nil, nil, 73, 78, 62, 63, - 64, nil, 51, nil, nil, nil, 56, 57, nil, nil, - nil, 60, nil, 58, 59, 61, 246, 247, 65, 66, - nil, nil, nil, nil, 245, 275, 279, 88, 87, 89, - 90, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 41, nil, nil, 92, 91, 82, 50, 84, 83, 86, - 85, 93, 94, nil, 80, 81, nil, 38, 39, 37, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 200, - nil, nil, 204, nil, nil, 52, 53, nil, nil, 54, - nil, nil, nil, nil, nil, 40, nil, nil, nil, nil, - nil, nil, nil, 207, nil, nil, nil, nil, 79, 72, - 74, 75, 76, 77, nil, nil, nil, 73, 78, 62, - 63, 64, nil, 51, nil, nil, nil, 56, 57, nil, - nil, nil, 60, nil, 58, 59, 61, 23, 24, 65, - 66, nil, nil, nil, nil, 22, 28, 27, 88, 87, - 89, 90, nil, nil, 17, nil, nil, nil, nil, nil, - nil, 41, nil, nil, 92, 91, 82, 50, 84, 83, - 86, 85, 93, 94, nil, 80, 81, nil, 38, 39, - 37, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 200, nil, nil, 204, nil, nil, 52, 53, nil, nil, - 54, nil, nil, nil, nil, nil, 40, nil, nil, nil, - nil, nil, nil, nil, 18, nil, nil, nil, nil, 79, - 72, 74, 75, 76, 77, nil, nil, nil, 73, 78, - 62, 63, 64, nil, 51, nil, nil, nil, 56, 57, - nil, nil, nil, 60, nil, 58, 59, 61, 246, 247, - 65, 66, nil, nil, nil, nil, 245, 275, 279, 88, - 87, 89, 90, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 41, nil, nil, 92, 91, 82, 50, 84, - 83, 86, 85, 93, 94, nil, 80, 81, nil, 38, - 39, 37, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 200, nil, nil, 204, nil, nil, 52, 53, nil, - nil, 54, nil, 369, nil, nil, nil, 40, nil, nil, - nil, nil, nil, nil, nil, 207, nil, nil, nil, nil, - 79, 72, 74, 75, 76, 77, nil, nil, nil, 73, - 78, 62, 63, 64, nil, 51, nil, nil, nil, 56, - 57, nil, nil, nil, 60, nil, 58, 59, 61, 246, - 247, 65, 66, nil, nil, nil, nil, 245, 275, 279, - 88, 87, 89, 90, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 41, nil, nil, 92, 91, 82, 50, - 84, 83, 86, 85, 93, 94, nil, 80, 81, nil, - 38, 39, 37, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 200, nil, nil, 204, nil, nil, 52, 53, - nil, nil, 54, nil, 612, nil, nil, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 207, nil, nil, nil, - nil, 79, 72, 74, 75, 76, 77, nil, nil, nil, - 73, 78, 62, 63, 64, nil, 51, nil, nil, nil, - 56, 57, nil, nil, nil, 60, nil, 58, 59, 61, - 246, 247, 65, 66, nil, nil, nil, nil, 245, 275, - 279, 88, 87, 89, 90, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 41, nil, nil, 92, 91, 82, - 50, 84, 83, 86, 85, 93, 94, nil, 80, 81, - nil, 38, 39, 37, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 200, nil, nil, 204, nil, nil, 52, - 53, nil, nil, 54, nil, nil, nil, nil, nil, 40, - nil, nil, nil, nil, nil, nil, nil, 207, nil, nil, - nil, nil, 79, 72, 74, 75, 76, 77, nil, nil, - nil, 73, 78, 62, 63, 64, nil, 51, nil, nil, - nil, 56, 57, nil, nil, nil, 60, nil, 58, 59, - 61, 246, 247, 65, 66, nil, nil, nil, nil, 245, - 275, 279, 88, 87, 89, 90, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 41, nil, nil, 92, 91, - 82, 50, 84, 83, 86, 85, 93, 94, nil, 80, - 81, nil, 38, 39, 37, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 200, nil, nil, 204, nil, nil, - 52, 53, nil, nil, 54, nil, nil, nil, nil, nil, - 40, nil, nil, nil, nil, nil, nil, nil, 207, nil, - nil, nil, nil, 79, 72, 74, 75, 76, 77, nil, - nil, nil, 73, 78, 62, 63, 64, nil, 51, nil, - nil, nil, 56, 57, nil, nil, nil, 60, nil, 58, - 59, 61, 246, 247, 65, 66, nil, nil, nil, nil, - 245, 275, 279, 88, 87, 89, 90, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 41, nil, nil, 92, - 91, 82, 50, 84, 83, 86, 85, 93, 94, nil, - 80, 81, nil, 38, 39, 37, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 200, nil, nil, 204, nil, - nil, 52, 53, nil, nil, 54, nil, 628, nil, nil, - nil, 40, nil, nil, nil, nil, nil, nil, nil, 207, - nil, nil, nil, nil, 79, 72, 74, 75, 76, 77, - nil, nil, nil, 73, 78, 62, 63, 64, nil, 51, - nil, nil, nil, 56, 57, nil, nil, nil, 60, nil, - 58, 59, 61, 246, 247, 65, 66, nil, nil, nil, - nil, 245, 28, 27, 88, 87, 89, 90, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 41, nil, nil, - 92, 91, 82, 50, 84, 83, 86, 85, 93, 94, - nil, 80, 81, nil, 38, 39, 37, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 200, nil, nil, 204, - nil, nil, 52, 53, nil, nil, 54, nil, 299, nil, - nil, nil, 40, nil, nil, nil, nil, nil, nil, nil, - 207, nil, nil, nil, nil, 79, 72, 74, 75, 76, - 77, nil, nil, nil, 73, 78, 62, 63, 64, nil, - 51, nil, nil, nil, 56, 57, nil, nil, nil, 60, - nil, 58, 59, 61, 246, 247, 65, 66, nil, nil, - nil, nil, 245, 28, 27, 88, 87, 89, 90, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 41, nil, - nil, 92, 91, 82, 50, 84, 83, 86, 85, 93, - 94, nil, 80, 81, nil, 38, 39, 37, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 200, nil, nil, - 204, nil, nil, 52, 53, nil, nil, 54, nil, 299, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, 207, nil, nil, nil, nil, 79, 72, 74, 75, - 76, 77, nil, nil, nil, 73, 78, 62, 63, 64, - nil, 51, nil, nil, nil, 56, 57, nil, nil, nil, - 60, nil, 58, 59, 61, 23, 24, 65, 66, nil, - nil, nil, nil, 22, 28, 27, 88, 87, 89, 90, - nil, nil, 17, nil, nil, nil, nil, nil, nil, 41, - nil, nil, 92, 91, 82, 50, 84, 83, 86, 85, - 93, 94, nil, 80, 81, nil, 38, 39, 37, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 200, nil, - nil, 204, nil, nil, 52, 53, nil, nil, 54, nil, - nil, nil, nil, nil, 40, nil, nil, nil, nil, nil, - nil, nil, 18, nil, nil, nil, nil, 79, 72, 74, - 75, 76, 77, nil, nil, nil, 73, 78, 153, 164, - 154, 177, 150, 170, 160, 159, 180, 181, 175, 158, - 157, 152, 178, 182, 183, 162, 151, 165, 169, 171, - 163, 156, nil, nil, 172, 179, 174, 173, 166, 176, - 161, 149, 168, 167, nil, nil, nil, nil, nil, 148, - 155, 146, 147, 144, 145, 109, 111, nil, nil, 110, - nil, nil, nil, nil, nil, nil, nil, 139, 140, nil, - 137, 121, 122, 123, nil, 126, 128, nil, nil, 124, - nil, nil, nil, nil, 141, 142, 129, 130, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 134, 133, nil, 120, 138, 136, 135, 131, 132, - 127, 125, 118, nil, 119, nil, nil, 143, 79, nil, - nil, 62, 63, 64, nil, 51, nil, nil, 78, 56, - 57, nil, nil, nil, 60, nil, 58, 59, 61, 246, - 247, 65, 66, nil, nil, nil, nil, 245, 275, 279, - 88, 87, 89, 90, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 41, nil, nil, 92, 91, 82, 50, - 84, 83, 86, 85, 93, 94, nil, 80, 81, nil, - 38, 39, 37, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 200, nil, nil, 204, nil, nil, 52, 53, - nil, nil, 54, nil, nil, nil, nil, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 207, nil, nil, nil, - nil, 79, 72, 74, 75, 76, 77, nil, nil, nil, - 73, 78, 62, 63, 64, nil, 51, nil, nil, nil, - 56, 57, nil, nil, nil, 60, nil, 58, 59, 61, - 246, 247, 65, 66, nil, nil, nil, nil, 245, 275, - 279, 88, 87, 89, 90, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 41, nil, nil, 92, 91, 82, - 50, 84, 83, 86, 85, 93, 94, nil, 80, 81, - nil, 38, 39, 37, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 200, nil, nil, 204, nil, nil, 52, - 53, nil, nil, 54, nil, 679, nil, nil, nil, 40, - nil, nil, nil, nil, nil, nil, nil, 207, nil, nil, - nil, nil, 79, 72, 74, 75, 76, 77, nil, nil, - nil, 73, 78, 62, 63, 64, nil, 51, nil, nil, - nil, 56, 57, nil, nil, nil, 60, nil, 58, 59, - 61, 23, 24, 65, 66, nil, nil, nil, nil, 22, - 28, 27, 88, 87, 89, 90, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 41, nil, nil, 92, 91, - 82, 50, 84, 83, 86, 85, 93, 94, nil, 80, - 81, nil, 38, 39, 37, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 200, nil, nil, 204, nil, nil, - 52, 53, nil, nil, 54, nil, nil, nil, nil, nil, - 40, nil, nil, nil, nil, nil, nil, nil, 207, nil, - nil, nil, nil, 79, 72, 74, 75, 76, 77, nil, - nil, nil, 73, 78, 62, 63, 64, nil, 51, nil, - nil, nil, 56, 57, nil, nil, nil, 60, nil, 58, - 59, 61, 23, 24, 65, 66, nil, nil, nil, nil, - 22, 28, 27, 88, 87, 89, 90, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 41, nil, nil, 92, - 91, 82, 50, 84, 83, 86, 85, 93, 94, nil, - 80, 81, nil, 38, 39, 37, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 200, nil, nil, 204, nil, - nil, 52, 53, nil, nil, 54, nil, nil, nil, nil, - nil, 40, nil, nil, nil, nil, nil, nil, nil, 207, - nil, nil, nil, nil, 79, 72, 74, 75, 76, 77, - nil, nil, nil, 73, 78, 62, 63, 64, nil, 51, - nil, nil, nil, 56, 57, nil, nil, nil, 60, nil, - 58, 59, 61, 23, 24, 65, 66, nil, nil, nil, - nil, 22, 28, 27, 88, 87, 89, 90, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 41, nil, nil, - 92, 91, 82, 50, 84, 83, 86, 85, 93, 94, - nil, 80, 81, nil, 38, 39, 37, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 200, nil, nil, 204, - nil, nil, 52, 53, nil, nil, 54, nil, nil, nil, - nil, nil, 40, nil, nil, nil, nil, nil, nil, nil, - 207, nil, nil, nil, nil, 79, 72, 74, 75, 76, - 77, nil, nil, nil, 73, 78, 62, 63, 64, nil, - 51, nil, nil, nil, 56, 57, nil, nil, nil, 60, - nil, 58, 59, 61, 246, 247, 65, 66, nil, nil, - nil, nil, 245, 275, 279, 88, 87, 89, 90, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 41, nil, - nil, 92, 91, 82, 50, 84, 83, 86, 85, 93, - 94, nil, 80, 81, nil, 38, 39, 37, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 200, nil, nil, - 204, nil, nil, 52, 53, nil, nil, 54, nil, nil, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, 207, nil, nil, nil, nil, 79, 72, 74, 75, - 76, 77, nil, nil, nil, 73, 78, 62, 63, 64, - nil, 51, nil, nil, nil, 56, 57, nil, nil, nil, - 60, nil, 58, 59, 61, 246, 247, 65, 66, nil, - nil, nil, nil, 245, 275, 279, 88, 87, 89, 90, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 41, - nil, nil, 92, 91, 82, 50, 84, 83, 86, 85, - 93, 94, nil, 80, 81, nil, 38, 39, 37, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 200, nil, - nil, 204, nil, nil, 52, 53, nil, nil, 54, nil, - nil, nil, nil, nil, 40, nil, nil, nil, nil, nil, - nil, nil, 207, nil, nil, nil, nil, 79, 72, 74, - 75, 76, 77, nil, nil, nil, 73, 78, 62, 63, - 64, nil, 51, nil, nil, nil, 56, 57, nil, nil, - nil, 60, nil, 58, 59, 61, 246, 247, 65, 66, - nil, nil, nil, nil, 245, 275, 279, 88, 87, 89, - 90, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 276, nil, nil, 92, 91, 82, 50, 84, 83, 86, - 85, 93, 94, nil, 80, 81, nil, nil, nil, 280, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 273, - nil, nil, 270, nil, nil, 52, 53, nil, nil, 54, - nil, 697, nil, 698, nil, nil, nil, nil, nil, nil, - nil, nil, 699, nil, nil, nil, nil, nil, 79, 72, - 74, 75, 76, 77, nil, nil, nil, 73, 78, 62, - 63, 64, nil, 51, nil, nil, nil, 56, 57, nil, - nil, nil, 60, nil, 58, 59, 61, 246, 247, 65, - 66, nil, nil, nil, nil, 245, 275, 279, 88, 87, - 89, 90, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 41, nil, nil, 92, 91, 82, 50, 84, 83, - 86, 85, 93, 94, nil, 80, 81, nil, 38, 39, - 37, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 200, nil, nil, 204, nil, nil, 52, 53, nil, nil, - 54, nil, nil, nil, nil, nil, 40, nil, nil, nil, - nil, nil, nil, nil, 207, nil, nil, nil, nil, 79, - 72, 74, 75, 76, 77, nil, nil, nil, 73, 78, - 62, 63, 64, nil, 51, nil, nil, nil, 56, 57, - nil, nil, nil, 60, nil, 58, 59, 61, 246, 247, - 65, 66, nil, nil, nil, nil, 245, 275, 279, 88, - 87, 89, 90, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 41, nil, nil, 92, 91, 82, 50, 84, - 83, 86, 85, 93, 94, nil, 80, 81, nil, 38, - 39, 37, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 200, nil, nil, 204, nil, nil, 52, 53, nil, - nil, 54, nil, nil, nil, nil, nil, 40, nil, nil, - nil, nil, nil, nil, nil, 207, nil, nil, nil, nil, - 79, 72, 74, 75, 76, 77, nil, nil, nil, 73, - 78, 62, 63, 64, nil, 51, nil, nil, nil, 56, - 57, nil, nil, nil, 60, nil, 58, 59, 61, 246, - 247, 65, 66, nil, nil, nil, nil, 245, 28, 27, - 88, 87, 89, 90, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 41, nil, nil, 92, 91, 82, 50, - 84, 83, 86, 85, 93, 94, nil, 80, 81, nil, - 38, 39, 37, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 200, nil, nil, 204, nil, nil, 52, 53, - nil, nil, 54, nil, 560, nil, 243, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 207, nil, nil, nil, - nil, 79, 72, 74, 75, 76, 77, nil, nil, nil, - 73, 78, 62, 63, 64, nil, 51, nil, nil, nil, - 56, 57, nil, nil, nil, 60, nil, 58, 59, 61, - 246, 247, 65, 66, nil, nil, nil, nil, 245, 275, - 279, 88, 87, 89, 90, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 41, nil, nil, 92, 91, 82, - 50, 84, 83, 86, 85, 93, 94, nil, 80, 81, - nil, 38, 39, 37, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 200, nil, nil, 204, nil, nil, 52, - 53, nil, nil, 54, nil, nil, nil, nil, nil, 40, - nil, nil, nil, nil, nil, nil, nil, 207, nil, nil, - nil, nil, 79, 72, 74, 75, 76, 77, nil, nil, - nil, 73, 78, 62, 63, 64, nil, 51, nil, nil, - nil, 56, 57, nil, nil, nil, 60, nil, 58, 59, - 61, 246, 247, 65, 66, nil, nil, nil, nil, 245, - 275, 279, 88, 87, 89, 90, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 41, nil, nil, 92, 91, - 82, 50, 84, 83, 86, 85, 93, 94, nil, 80, - 81, nil, 38, 39, 37, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 200, nil, nil, 204, nil, nil, - 52, 53, nil, nil, 54, nil, nil, nil, nil, nil, - 40, nil, nil, nil, nil, nil, nil, nil, 207, nil, - nil, nil, nil, 79, 72, 74, 75, 76, 77, nil, - nil, nil, 73, 78, 62, 63, 64, nil, 51, nil, - nil, nil, 56, 57, nil, nil, nil, 60, nil, 58, - 59, 61, 246, 247, 65, 66, nil, nil, nil, nil, - 245, 275, 279, 88, 87, 89, 90, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 41, nil, nil, 92, - 91, 82, 50, 84, 83, 86, 85, 93, 94, nil, - 80, 81, nil, 38, 39, 37, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 200, nil, nil, 204, nil, - nil, 52, 53, nil, nil, 54, nil, nil, nil, nil, - nil, 40, nil, nil, nil, nil, nil, nil, nil, 207, - nil, nil, nil, nil, 79, 72, 74, 75, 76, 77, - nil, nil, nil, 73, 78, 62, 63, 64, nil, 51, - nil, nil, nil, 56, 57, nil, nil, nil, 60, nil, - 58, 59, 61, 23, 24, 65, 66, nil, nil, nil, - nil, 22, 28, 27, 88, 87, 89, 90, nil, nil, - 17, nil, nil, nil, nil, nil, nil, 41, nil, nil, - 92, 91, 82, 50, 84, 83, 86, 85, 93, 94, - nil, 80, 81, nil, 38, 39, 37, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 200, nil, nil, 204, - nil, nil, 52, 53, nil, nil, 54, nil, nil, nil, - nil, nil, 40, nil, nil, nil, nil, nil, nil, nil, - 18, nil, nil, nil, nil, 79, 72, 74, 75, 76, - 77, nil, nil, nil, 73, 78, 62, 63, 64, nil, - 51, nil, nil, nil, 56, 57, nil, nil, nil, 60, - nil, 58, 59, 61, 246, 247, 65, 66, nil, nil, - nil, nil, 245, 275, 279, 88, 87, 89, 90, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 41, nil, - nil, 92, 91, 82, 50, 84, 83, 86, 85, 93, - 94, nil, 80, 81, nil, 38, 39, 37, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 200, nil, nil, - 204, nil, nil, 52, 53, nil, nil, 54, nil, nil, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, 207, nil, nil, nil, nil, 79, 72, 74, 75, - 76, 77, nil, nil, nil, 73, 78, 62, 63, 64, - nil, 51, nil, nil, nil, 56, 57, nil, nil, nil, - 60, nil, 58, 59, 61, 23, 24, 65, 66, nil, - nil, nil, nil, 22, 28, 27, 88, 87, 89, 90, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 41, - nil, nil, 92, 91, 82, 50, 84, 83, 86, 85, - 93, 94, nil, 80, 81, nil, 38, 39, 37, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 200, nil, - nil, 204, nil, nil, 52, 53, nil, nil, 54, nil, - nil, nil, nil, nil, 40, nil, nil, nil, nil, nil, - nil, nil, 207, nil, nil, nil, nil, 79, 72, 74, - 75, 76, 77, nil, nil, nil, 73, 78, 62, 63, - 64, nil, 51, nil, nil, nil, 56, 57, nil, nil, - nil, 60, nil, 58, 59, 61, 246, 247, 65, 66, - nil, nil, nil, nil, 245, 275, 279, 88, 87, 89, - 90, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 41, nil, nil, 92, 91, 82, 50, 84, 83, 86, - 85, 93, 94, nil, 80, 81, nil, 38, 39, 37, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 200, - nil, nil, 204, nil, nil, 52, 53, nil, nil, 54, - nil, nil, nil, nil, nil, 40, nil, nil, nil, nil, - nil, nil, nil, 207, nil, nil, nil, nil, 79, 72, - 74, 75, 76, 77, nil, nil, nil, 73, 78, 62, - 63, 64, nil, 51, nil, nil, nil, 56, 57, nil, - nil, nil, 60, nil, 58, 59, 61, 246, 247, 65, - 66, nil, nil, nil, nil, 245, 275, 279, 88, 87, - 89, 90, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 41, nil, nil, 92, 91, 82, 50, 84, 83, - 86, 85, 93, 94, nil, 80, 81, nil, 38, 39, - 37, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 200, nil, nil, 204, nil, nil, 52, 53, nil, nil, - 54, nil, nil, nil, nil, nil, 40, nil, nil, nil, - nil, nil, nil, nil, 207, nil, nil, nil, nil, 79, - 72, 74, 75, 76, 77, nil, nil, nil, 73, 78, - 62, 63, 64, nil, 51, nil, nil, nil, 56, 57, - nil, nil, nil, 60, nil, 58, 59, 61, 246, 247, - 65, 66, nil, nil, nil, nil, 245, 275, 279, 88, - 87, 89, 90, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 41, nil, nil, 92, 91, 82, 50, 84, - 83, 86, 85, 93, 94, nil, 80, 81, nil, 38, - 39, 37, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 200, nil, nil, 204, nil, nil, 52, 53, nil, - nil, 54, nil, nil, nil, nil, nil, 40, nil, nil, - nil, nil, nil, nil, nil, 207, nil, nil, nil, nil, - 79, 72, 74, 75, 76, 77, nil, nil, nil, 73, - 78, 62, 63, 64, nil, 51, nil, nil, nil, 56, - 57, nil, nil, nil, 60, nil, 58, 59, 61, 246, - 247, 65, 66, nil, nil, nil, nil, 245, 275, 279, - 88, 87, 89, 90, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 276, nil, nil, 92, 91, 82, 50, - 84, 83, 86, 85, 93, 94, nil, 80, 81, nil, - nil, nil, 280, nil, 215, 219, 224, 225, 226, 221, - 223, 231, 232, 227, 228, nil, 208, 209, nil, nil, - 229, 230, 772, nil, nil, 204, nil, nil, 52, 53, - nil, nil, 54, nil, nil, nil, 212, nil, 218, nil, - 214, 213, 210, 211, 222, 220, 216, nil, 217, nil, - nil, 79, 72, 74, 75, 76, 77, nil, nil, nil, - 73, 78, 62, 63, 64, 233, 51, nil, nil, nil, - 56, 57, nil, nil, nil, 60, nil, 58, 59, 61, - 246, 247, 65, 66, nil, nil, nil, nil, 245, 275, - 279, 88, 87, 89, 90, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 41, nil, nil, 92, 91, 82, - 50, 84, 83, 86, 85, 93, 94, nil, 80, 81, - nil, 38, 39, 37, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 200, nil, nil, 204, nil, nil, 52, - 53, nil, nil, 54, nil, 780, nil, 243, nil, 40, - nil, nil, nil, nil, nil, nil, nil, 207, nil, nil, - nil, nil, 79, 72, 74, 75, 76, 77, nil, nil, - nil, 73, 78, 62, 63, 64, nil, 51, nil, nil, - nil, 56, 57, nil, nil, nil, 60, nil, 58, 59, - 61, 246, 247, 65, 66, nil, nil, nil, nil, 245, - 275, 279, 88, 87, 89, 90, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 41, nil, nil, 92, 91, - 82, 50, 84, 83, 86, 85, 93, 94, nil, 80, - 81, nil, 38, 39, 37, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 200, nil, nil, 204, nil, nil, - 52, 53, nil, nil, 54, nil, 786, nil, 243, nil, - 40, nil, nil, nil, nil, nil, nil, nil, 207, nil, - nil, nil, nil, 79, 72, 74, 75, 76, 77, nil, - nil, nil, 73, 78, 62, 63, 64, nil, 51, nil, - nil, nil, 56, 57, nil, nil, nil, 60, nil, 58, - 59, 61, 246, 247, 65, 66, nil, nil, nil, nil, - 245, 275, 279, 88, 87, 89, 90, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 41, nil, nil, 92, - 91, 82, 50, 84, 83, 86, 85, 93, 94, nil, - 80, 81, nil, 38, 39, 37, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 200, nil, nil, 204, nil, - nil, 52, 53, nil, nil, 54, nil, 788, nil, 243, - nil, 40, nil, nil, nil, nil, nil, nil, nil, 207, - nil, nil, nil, nil, 79, 72, 74, 75, 76, 77, - nil, nil, nil, 73, 78, 62, 63, 64, nil, 51, - nil, nil, nil, 56, 57, nil, nil, nil, 60, nil, - 58, 59, 61, 246, 247, 65, 66, nil, nil, nil, - nil, 245, 275, 279, 88, 87, 89, 90, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 276, nil, nil, - 92, 91, 82, 50, 84, 83, 86, 85, 93, 94, - nil, 80, 81, nil, nil, nil, 280, nil, 215, 219, - 224, 225, 226, 221, 223, 231, 232, 227, 228, nil, - 208, 209, nil, nil, 229, 230, 772, nil, nil, 204, - nil, nil, 52, 53, nil, nil, 54, nil, nil, nil, - 212, nil, 218, nil, 214, 213, 210, 211, 222, 220, - 216, nil, 217, nil, nil, 79, 72, 74, 75, 76, - 77, nil, nil, nil, 73, 78, 62, 63, 64, 233, - 51, nil, nil, nil, 56, 57, nil, nil, nil, 60, - nil, 58, 59, 61, 23, 24, 65, 66, nil, nil, - nil, nil, 22, 28, 27, 88, 87, 89, 90, nil, - nil, 17, nil, nil, nil, nil, nil, nil, 41, nil, - nil, 92, 91, 82, 50, 84, 83, 86, 85, 93, - 94, nil, 80, 81, nil, 38, 39, 37, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 200, nil, nil, - 204, nil, nil, 52, 53, nil, nil, 54, nil, nil, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, 18, nil, nil, nil, nil, 79, 72, 74, 75, - 76, 77, nil, nil, nil, 73, 78, 62, 63, 64, - nil, 51, nil, nil, nil, 56, 57, nil, nil, nil, - 60, nil, 58, 59, 61, 246, 247, 65, 66, nil, - nil, nil, nil, 245, 275, 279, 88, 87, 89, 90, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 41, - nil, nil, 92, 91, 82, 50, 84, 83, 86, 85, - 93, 94, nil, 80, 81, nil, 38, 39, 37, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 200, nil, - nil, 204, nil, nil, 52, 53, nil, nil, 54, nil, - 802, nil, nil, nil, 40, nil, nil, nil, nil, nil, - nil, nil, 207, nil, nil, nil, nil, 79, 72, 74, - 75, 76, 77, nil, nil, nil, 73, 78, 62, 63, - 64, nil, 51, nil, nil, nil, 56, 57, nil, nil, - nil, 60, nil, 58, 59, 61, 246, 247, 65, 66, - nil, nil, nil, nil, 245, 275, 279, 88, 87, 89, - 90, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 41, nil, nil, 92, 91, 82, 50, 84, 83, 86, - 85, 93, 94, nil, 80, 81, nil, 38, 39, 37, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 200, - nil, nil, 204, nil, nil, 52, 53, nil, nil, 54, - nil, nil, nil, nil, nil, 40, nil, nil, nil, nil, - nil, nil, nil, 207, nil, nil, nil, nil, 79, 72, - 74, 75, 76, 77, nil, nil, nil, 73, 78, 62, - 63, 64, nil, 51, nil, nil, nil, 56, 57, nil, - nil, nil, 60, nil, 58, 59, 61, 246, 247, 65, - 66, nil, nil, nil, nil, 245, 275, 279, 88, 87, - 89, 90, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 41, nil, nil, 92, 91, 82, 50, 84, 83, - 86, 85, 93, 94, nil, 80, 81, nil, 38, 39, - 37, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 200, nil, nil, 204, nil, nil, 52, 53, nil, nil, - 54, nil, nil, nil, nil, nil, 40, nil, nil, nil, - nil, nil, nil, nil, 207, nil, nil, nil, nil, 79, - 72, 74, 75, 76, 77, nil, nil, nil, 73, 78, - 62, 63, 64, nil, 51, nil, nil, nil, 56, 57, - nil, nil, nil, 60, nil, 58, 59, 61, 246, 247, - 65, 66, nil, nil, nil, nil, 245, 275, 279, 88, - 87, 89, 90, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 276, nil, nil, 92, 91, 82, 50, 84, - 83, 86, 85, 93, 94, nil, 80, 81, nil, nil, - nil, 280, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 273, nil, nil, 270, nil, nil, 52, 53, nil, - nil, 54, nil, 821, nil, 820, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 79, 72, 74, 75, 76, 77, nil, nil, nil, 73, - 78, 62, 63, 64, nil, 51, nil, nil, nil, 56, - 57, nil, nil, nil, 60, nil, 58, 59, 61, 246, - 247, 65, 66, nil, nil, nil, nil, 245, 275, 279, - 88, 87, 89, 90, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 41, nil, nil, 92, 91, 82, 50, - 84, 83, 86, 85, 93, 94, nil, 80, 81, nil, - 38, 39, 37, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 200, nil, nil, 204, nil, nil, 52, 53, - nil, nil, 54, nil, nil, nil, nil, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 207, nil, nil, nil, - nil, 79, 72, 74, 75, 76, 77, nil, nil, nil, - 73, 78, 62, 63, 64, nil, 51, nil, nil, nil, - 56, 57, nil, nil, nil, 60, nil, 58, 59, 61, - 246, 247, 65, 66, nil, nil, nil, nil, 245, 275, - 279, 88, 87, 89, 90, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 41, nil, nil, 92, 91, 82, - 50, 84, 83, 86, 85, 93, 94, nil, 80, 81, - nil, 38, 39, 37, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 200, nil, nil, 204, nil, nil, 52, - 53, nil, nil, 54, nil, nil, nil, nil, nil, 40, - nil, nil, nil, nil, nil, nil, nil, 207, nil, nil, - nil, nil, 79, 72, 74, 75, 76, 77, nil, nil, - nil, 73, 78, 62, 63, 64, nil, 51, nil, nil, - nil, 56, 57, nil, nil, nil, 60, nil, 58, 59, - 61, 246, 247, 65, 66, nil, nil, nil, nil, 245, - 275, 279, 88, 87, 89, 90, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 41, nil, nil, 92, 91, - 82, 50, 84, 83, 86, 85, 93, 94, nil, 80, - 81, nil, 38, 39, 37, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 200, nil, nil, 204, nil, nil, - 52, 53, nil, nil, 54, nil, nil, nil, nil, nil, - 40, nil, nil, nil, nil, nil, nil, nil, 207, nil, - nil, nil, nil, 79, 72, 74, 75, 76, 77, nil, - nil, nil, 73, 78, 62, 63, 64, nil, 51, nil, - nil, nil, 56, 57, nil, nil, nil, 60, nil, 58, - 59, 61, 246, 247, 65, 66, nil, nil, nil, nil, - 245, 275, 279, 88, 87, 89, 90, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 41, nil, nil, 92, - 91, 82, 50, 84, 83, 86, 85, 93, 94, nil, - 80, 81, nil, 38, 39, 37, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 200, nil, nil, 204, nil, - nil, 52, 53, nil, nil, 54, nil, nil, nil, nil, - nil, 40, nil, nil, nil, nil, nil, nil, nil, 207, - nil, nil, nil, nil, 79, 72, 74, 75, 76, 77, - nil, nil, nil, 73, 78, 62, 63, 64, nil, 51, - nil, nil, nil, 56, 57, nil, nil, nil, 60, nil, - 58, 59, 61, 246, 247, 65, 66, nil, nil, nil, - nil, 245, 275, 279, 88, 87, 89, 90, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 276, nil, nil, - 92, 91, 82, 50, 84, 83, 86, 85, 93, 94, - nil, 80, 81, nil, nil, nil, 280, nil, 215, 219, - 224, 225, 226, 221, 223, 231, 232, 227, 228, nil, - 208, 209, nil, nil, 229, 230, 772, nil, nil, 204, - nil, nil, 52, 53, nil, nil, 54, nil, nil, nil, - 212, nil, 218, nil, 214, 213, 210, 211, 222, 220, - 216, nil, 217, nil, nil, 79, 72, 74, 75, 76, - 77, nil, nil, nil, 73, 78, 62, 63, 64, 233, - 51, nil, nil, nil, 56, 57, nil, nil, nil, 60, - nil, 58, 59, 61, 246, 247, 65, 66, nil, nil, - nil, nil, 245, 28, 27, 88, 87, 89, 90, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 41, nil, - nil, 92, 91, 82, 50, 84, 83, 86, 85, 93, - 94, nil, 80, 81, nil, 38, 39, 37, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 200, nil, nil, - 204, nil, nil, 52, 53, nil, nil, 54, nil, 299, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, 207, nil, nil, nil, nil, 79, 72, 74, 75, - 76, 77, nil, nil, nil, 73, 78, 62, 63, 64, - nil, 51, nil, nil, nil, 56, 57, nil, nil, nil, - 60, nil, 58, 59, 61, 246, 247, 65, 66, nil, - nil, nil, nil, 245, 275, 279, 88, 87, 89, 90, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 276, - nil, nil, 92, 91, 82, 50, 84, 83, 86, 85, - 93, 94, nil, 80, 81, nil, nil, nil, 280, nil, - 215, 219, 224, 225, 226, 221, 223, 231, 232, 227, - 228, nil, 208, 209, nil, nil, 229, 230, 772, nil, - nil, 204, nil, nil, 52, 53, nil, nil, 54, nil, - nil, nil, 212, nil, 218, nil, 214, 213, 210, 211, - 222, 220, 216, nil, 217, nil, nil, 79, 72, 74, - 75, 76, 77, nil, nil, nil, 73, 78, 62, 63, - 64, 233, 51, nil, nil, nil, 56, 57, nil, nil, - nil, 60, nil, 58, 59, 61, 246, 247, 65, 66, - nil, nil, nil, nil, 245, 275, 279, 88, 87, 89, - 90, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 41, nil, nil, 92, 91, 82, 50, 84, 83, 86, - 85, 93, 94, nil, 80, 81, nil, 38, 39, 37, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 200, - nil, nil, 204, nil, nil, 52, 53, nil, nil, 54, - nil, 864, nil, 243, nil, 40, nil, nil, nil, nil, - nil, nil, nil, 207, nil, nil, nil, nil, 79, 72, - 74, 75, 76, 77, nil, nil, nil, 73, 78, 62, - 63, 64, nil, 51, nil, nil, nil, 56, 57, nil, - nil, nil, 60, nil, 58, 59, 61, 246, 247, 65, - 66, nil, nil, nil, nil, 245, 275, 279, 88, 87, - 89, 90, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 41, nil, nil, 92, 91, 82, 50, 84, 83, - 86, 85, 93, 94, nil, 80, 81, nil, 38, 39, - 37, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 200, nil, nil, 204, nil, nil, 52, 53, nil, nil, - 54, nil, 867, nil, 243, nil, 40, nil, nil, nil, - nil, nil, nil, nil, 207, nil, nil, nil, nil, 79, - 72, 74, 75, 76, 77, nil, nil, nil, 73, 78, - 62, 63, 64, nil, 51, nil, nil, nil, 56, 57, - nil, nil, nil, 60, nil, 58, 59, 61, 246, 247, - 65, 66, nil, nil, nil, nil, 245, 275, 279, 88, - 87, 89, 90, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 276, nil, nil, 92, 91, 82, 50, 84, - 83, 86, 85, 93, 94, nil, 80, 81, nil, nil, - nil, 280, nil, 215, 219, 224, 225, 226, 221, 223, - 231, 232, 227, 228, nil, 208, 209, nil, nil, 229, - 230, 772, nil, nil, 204, nil, nil, 52, 53, nil, - nil, 54, nil, nil, nil, 212, nil, 218, nil, 214, - 213, 210, 211, 222, 220, 216, nil, 217, nil, nil, - 79, 72, 74, 75, 76, 77, nil, nil, nil, 73, - 78, 62, 63, 64, 233, 51, nil, nil, nil, 56, - 57, nil, nil, nil, 60, nil, 58, 59, 61, 246, - 247, 65, 66, nil, nil, nil, nil, 245, 275, 279, - 88, 87, 89, 90, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 41, nil, nil, 92, 91, 82, 50, - 84, 83, 86, 85, 93, 94, nil, 80, 81, nil, - 38, 39, 37, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 200, nil, nil, 204, nil, nil, 52, 53, - nil, nil, 54, nil, nil, nil, nil, nil, 40, nil, - nil, nil, nil, nil, nil, nil, 207, nil, nil, nil, - nil, 79, 72, 74, 75, 76, 77, nil, nil, nil, - 73, 78, 62, 63, 64, nil, 51, nil, nil, nil, - 56, 57, nil, nil, nil, 60, nil, 58, 59, 61, - 246, 247, 65, 66, nil, nil, nil, nil, 245, 275, - 279, 88, 87, 89, 90, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 41, nil, nil, 92, 91, 82, - 50, 84, 83, 86, 85, 93, 94, nil, 80, 81, - nil, 38, 39, 37, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 200, nil, nil, 204, nil, nil, 52, - 53, nil, nil, 54, nil, nil, nil, nil, nil, 40, - nil, nil, nil, nil, nil, nil, nil, 207, nil, nil, - nil, nil, 79, 72, 74, 75, 76, 77, nil, nil, - nil, 73, 78, 62, 63, 64, nil, 51, nil, nil, - nil, 56, 57, nil, nil, nil, 60, nil, 58, 59, - 61, 246, 247, 65, 66, nil, nil, nil, nil, 245, - 275, 279, 88, 87, 89, 90, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 276, nil, nil, 92, 91, - 82, 50, 84, 83, 86, 85, 93, 94, nil, 80, - 81, nil, nil, nil, 280, nil, 215, 219, 224, 225, - 226, 221, 223, 231, 232, 227, 228, nil, 208, 209, - nil, nil, 229, 230, 772, nil, nil, 204, nil, nil, - 52, 53, nil, nil, 54, nil, nil, nil, 212, nil, - 218, nil, 214, 213, 210, 211, 222, 220, 216, nil, - 217, nil, nil, 79, 72, 74, 75, 76, 77, nil, - nil, nil, 73, 78, 62, 63, 64, 233, 51, nil, - nil, nil, 56, 57, nil, nil, nil, 60, nil, 58, - 59, 61, 246, 247, 65, 66, nil, nil, nil, nil, - 245, 275, 279, 88, 87, 89, 90, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 41, nil, nil, 92, - 91, 82, 50, 84, 83, 86, 85, 93, 94, nil, - 80, 81, nil, 38, 39, 37, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 200, nil, nil, 204, nil, - nil, 52, 53, nil, nil, 54, nil, 889, nil, 243, - nil, 40, nil, nil, nil, nil, nil, nil, nil, 207, - nil, nil, nil, nil, 79, 72, 74, 75, 76, 77, - nil, nil, nil, 73, 78, 62, 63, 64, nil, 51, - nil, nil, nil, 56, 57, nil, nil, nil, 60, nil, - 58, 59, 61, 246, 247, 65, 66, nil, nil, nil, - nil, 245, 275, 279, 88, 87, 89, 90, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 276, nil, nil, - 92, 91, 82, 50, 84, 83, 86, 85, 93, 94, - nil, 80, 81, nil, nil, nil, 280, nil, 215, 219, - 224, 225, 226, 221, 223, 231, 232, 227, 228, nil, - 208, 209, nil, nil, 229, 230, 772, nil, nil, 204, - nil, nil, 52, 53, nil, nil, 54, nil, nil, nil, - 212, nil, 218, nil, 214, 213, 210, 211, 222, 220, - 216, nil, 217, nil, nil, 79, 72, 74, 75, 76, - 77, nil, nil, nil, 73, 78, 62, 63, 64, 233, - 51, nil, nil, nil, 56, 57, nil, nil, nil, 60, - nil, 58, 59, 61, 246, 247, 65, 66, nil, nil, - nil, nil, 245, 275, 279, 88, 87, 89, 90, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 41, nil, - nil, 92, 91, 82, 50, 84, 83, 86, 85, 93, - 94, nil, 80, 81, nil, 38, 39, 37, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 200, nil, nil, - 204, nil, nil, 52, 53, nil, nil, 54, nil, nil, - nil, nil, nil, 40, nil, nil, nil, nil, nil, nil, - nil, 207, nil, nil, nil, nil, 79, 72, 74, 75, - 76, 77, nil, nil, nil, 73, 78, 153, 164, 154, - 177, 150, 170, 160, 159, 180, 181, 175, 158, 157, - 152, 178, 182, 183, 162, 151, 165, 169, 171, 163, - 156, nil, nil, 172, 179, 174, 336, 335, 337, 334, - 149, 168, 167, nil, nil, nil, nil, nil, 148, 155, - 146, 147, 332, 333, 330, 111, 84, 83, 331, 85, - nil, nil, nil, nil, nil, nil, 139, 140, nil, 137, - 121, 122, 123, nil, 126, 128, nil, nil, 124, nil, - nil, nil, nil, 141, 142, 129, 130, nil, nil, nil, - nil, nil, 341, nil, nil, nil, nil, nil, nil, nil, - 134, 133, nil, 120, 138, 136, 135, 131, 132, 127, - 125, 118, nil, 119, nil, nil, 143, 153, 164, 154, - 177, 150, 170, 160, 159, 180, 181, 175, 158, 157, - 152, 178, 182, 183, 162, 151, 165, 169, 171, 163, - 156, nil, nil, 172, 179, 174, 173, 166, 176, 161, - 149, 168, 167, nil, nil, nil, nil, nil, 148, 155, - 146, 147, 144, 145, 109, 111, nil, nil, 110, nil, - nil, nil, nil, nil, nil, nil, 139, 140, nil, 137, - 121, 122, 123, nil, 126, 128, nil, nil, 124, nil, - nil, nil, nil, 141, 142, 129, 130, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 134, 133, nil, 120, 138, 136, 135, 131, 132, 127, - 125, 118, nil, 119, nil, nil, 143, 215, 219, 224, - 225, 226, 221, 223, 231, 232, 227, 228, nil, 208, - 209, nil, nil, 229, 230, nil, nil, nil, -215, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 212, - nil, 218, nil, 214, 213, 210, 211, 222, 220, 216, - nil, 217, nil, nil, nil, nil, nil, nil, nil, 376, - 379, nil, nil, 377, nil, nil, nil, nil, 233, nil, - -215, 139, 140, nil, 137, 121, 122, 123, nil, 126, - 128, nil, nil, 124, nil, nil, nil, nil, 141, 142, - 129, 130, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 134, 133, nil, 120, 138, - 136, 135, 131, 132, 127, 125, 118, nil, 119, 381, - 385, 143, nil, 383, nil, nil, nil, nil, nil, nil, - nil, 139, 140, nil, 137, 121, 122, 123, nil, 126, - 128, nil, nil, 124, nil, nil, nil, nil, 141, 142, - 129, 130, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 134, 133, nil, 120, 138, - 136, 135, 131, 132, 127, 125, 118, nil, 119, 433, - 379, 143, nil, 434, nil, nil, nil, nil, nil, nil, - nil, 139, 140, nil, 137, 121, 122, 123, nil, 126, - 128, nil, nil, 124, nil, nil, nil, nil, 141, 142, - 129, 130, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 134, 133, nil, 120, 138, - 136, 135, 131, 132, 127, 125, 118, nil, 119, 433, - 379, 143, nil, 434, nil, nil, nil, nil, nil, nil, - nil, 139, 140, nil, 137, 121, 122, 123, nil, 126, - 128, nil, nil, 124, nil, nil, nil, nil, 141, 142, - 129, 130, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 134, 133, nil, 120, 138, - 136, 135, 131, 132, 127, 125, 118, nil, 119, 550, - 379, 143, nil, 551, nil, nil, nil, nil, nil, nil, - nil, 139, 140, nil, 137, 121, 122, 123, nil, 126, - 128, nil, nil, 124, nil, nil, nil, nil, 141, 142, - 129, 130, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 134, 133, nil, 120, 138, - 136, 135, 131, 132, 127, 125, 118, nil, 119, 552, - 385, 143, nil, 553, nil, nil, nil, nil, nil, nil, - nil, 139, 140, nil, 137, 121, 122, 123, nil, 126, - 128, nil, nil, 124, nil, nil, nil, nil, 141, 142, - 129, 130, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 134, 133, nil, 120, 138, - 136, 135, 131, 132, 127, 125, 118, nil, 119, nil, - nil, 143, 215, 219, 224, 225, 226, 221, 223, 231, - 232, 227, 228, nil, 208, 209, nil, nil, 229, 230, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 212, nil, 218, nil, 214, 213, - 210, 211, 222, 220, 216, nil, 217, nil, nil, nil, - nil, nil, nil, 594, 379, nil, nil, 595, nil, nil, - nil, nil, nil, 233, 556, 139, 140, nil, 137, 121, - 122, 123, nil, 126, 128, nil, nil, 124, nil, nil, - nil, nil, 141, 142, 129, 130, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 134, - 133, nil, 120, 138, 136, 135, 131, 132, 127, 125, - 118, nil, 119, 597, 385, 143, nil, 598, nil, nil, - nil, nil, nil, nil, nil, 139, 140, nil, 137, 121, - 122, 123, nil, 126, 128, nil, nil, 124, nil, nil, - nil, nil, 141, 142, 129, 130, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 134, - 133, nil, 120, 138, 136, 135, 131, 132, 127, 125, - 118, nil, 119, 550, 379, 143, nil, 551, nil, nil, - nil, nil, nil, nil, nil, 139, 140, nil, 137, 121, - 122, 123, nil, 126, 128, nil, nil, 124, nil, nil, - nil, nil, 141, 142, 129, 130, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 134, - 133, nil, 120, 138, 136, 135, 131, 132, 127, 125, - 118, nil, 119, 552, 385, 143, nil, 553, nil, nil, - nil, nil, nil, nil, nil, 139, 140, nil, 137, 121, - 122, 123, nil, 126, 128, nil, nil, 124, nil, nil, - nil, nil, 141, 142, 129, 130, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 134, - 133, nil, 120, 138, 136, 135, 131, 132, 127, 125, - 118, nil, 119, 630, 379, 143, nil, 631, nil, nil, - nil, nil, nil, nil, nil, 139, 140, nil, 137, 121, - 122, 123, nil, 126, 128, nil, nil, 124, nil, nil, - nil, nil, 141, 142, 129, 130, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 134, - 133, nil, 120, 138, 136, 135, 131, 132, 127, 125, - 118, nil, 119, 632, 385, 143, nil, 633, nil, nil, - nil, nil, nil, nil, nil, 139, 140, nil, 137, 121, - 122, 123, nil, 126, 128, nil, nil, 124, nil, nil, - nil, nil, 141, 142, 129, 130, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 134, - 133, nil, 120, 138, 136, 135, 131, 132, 127, 125, - 118, nil, 119, 635, 385, 143, nil, 636, nil, nil, - nil, nil, nil, nil, nil, 139, 140, nil, 137, 121, - 122, 123, nil, 126, 128, nil, nil, 124, nil, nil, - nil, nil, 141, 142, 129, 130, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 134, - 133, nil, 120, 138, 136, 135, 131, 132, 127, 125, - 118, nil, 119, 433, 379, 143, nil, 434, nil, nil, - nil, nil, nil, nil, nil, 139, 140, nil, 137, 121, - 122, 123, nil, 126, 128, nil, nil, 124, nil, nil, - nil, nil, 141, 142, 129, 130, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 134, - 133, nil, 120, 138, 136, 135, 131, 132, 127, 125, - 118, nil, 119, 433, 379, 143, nil, 434, nil, nil, - nil, nil, nil, nil, nil, 139, 140, nil, 137, 121, - 122, 123, nil, 126, 128, nil, nil, 124, nil, nil, - nil, nil, 141, 142, 129, 130, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 134, - 133, nil, 120, 138, 136, 135, 131, 132, 127, 125, - 118, nil, 119, 433, 379, 143, nil, 434, nil, nil, - nil, nil, nil, nil, nil, 139, 140, nil, 137, 121, - 122, 123, nil, 126, 128, nil, nil, 124, nil, nil, - nil, nil, 141, 142, 129, 130, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 134, - 133, nil, 120, 138, 136, 135, 131, 132, 127, 125, - 118, nil, 119, 857, 379, 143, nil, 858, nil, nil, - nil, nil, nil, nil, nil, 139, 140, nil, 137, 121, - 122, 123, nil, 126, 128, nil, nil, 124, nil, nil, - nil, nil, 141, 142, 129, 130, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 134, - 133, nil, 120, 138, 136, 135, 131, 132, 127, 125, - 118, nil, 119, 859, 385, 143, nil, 860, nil, nil, - nil, nil, nil, nil, nil, 139, 140, nil, 137, 121, - 122, 123, nil, 126, 128, nil, nil, 124, nil, nil, - nil, nil, 141, 142, 129, 130, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 134, - 133, nil, 120, 138, 136, 135, 131, 132, 127, 125, - 118, nil, 119, nil, nil, 143, 215, 219, 224, 225, - 226, 221, 223, 231, 232, 227, 228, nil, 208, 209, - nil, nil, 229, 230, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 212, nil, - 218, nil, 214, 213, 210, 211, 222, 220, 216, nil, - 217, nil, 215, 219, 224, 225, 226, 221, 223, 231, - 232, 227, 228, nil, 208, 209, 291, 233, 229, 230, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 212, nil, 218, nil, 214, 213, - 210, 211, 222, 220, 216, nil, 217, nil, 215, 219, - 224, 225, 226, 221, 223, 231, 232, 227, 228, nil, - 208, 209, 291, 233, 229, 230, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 212, nil, 218, nil, 214, 213, 210, 211, 222, 220, - 216, nil, 217, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 233 ] - -racc_action_check = [ - 381, 512, 512, 518, 518, 306, 755, 381, 381, 381, - 326, 440, 711, 381, 381, 313, 381, 199, 440, 711, - 307, 70, 347, 316, 424, 381, 3, 627, 500, 70, - 1, 3, 201, 603, 603, 381, 381, 630, 381, 381, - 381, 381, 381, 727, 798, 446, 311, 631, 311, 632, - 743, 394, 755, 755, 755, 755, 8, 310, 424, 447, - 440, 711, 310, 199, 381, 381, 381, 381, 381, 381, - 381, 381, 381, 381, 381, 381, 381, 381, 201, 446, - 381, 381, 381, 55, 381, 347, 603, 594, 381, 591, - 512, 381, 518, 447, 491, 512, 381, 394, 381, 633, - 381, 381, 381, 381, 381, 381, 381, 383, 381, 381, - 381, 9, 632, 326, 383, 383, 383, 306, 313, 306, - 383, 383, 306, 383, 381, 381, 316, 381, 591, 381, - 381, 500, 307, 326, 307, 492, 595, 307, 326, 627, - 630, 627, 383, 383, 627, 383, 383, 383, 383, 383, - 631, 594, 632, 743, 582, 727, 798, 727, 798, 744, - 727, 798, 633, 26, 322, 15, 15, 55, 322, 594, - 550, 383, 383, 383, 383, 383, 383, 383, 383, 383, - 383, 383, 383, 383, 383, 574, 277, 383, 383, 383, - 594, 383, 491, 594, 491, 383, 582, 491, 383, 551, - 595, 10, 633, 383, 528, 383, 343, 383, 383, 383, - 383, 383, 383, 383, 50, 383, 550, 383, 595, 574, - 11, 50, 50, 50, 511, 26, 50, 50, 50, 511, - 50, 383, 383, 492, 383, 492, 383, 383, 492, 595, - 50, 50, 595, 297, 12, 551, 297, 26, 277, 50, - 50, 693, 50, 50, 50, 50, 50, 744, 14, 744, - 298, 20, 744, 298, 344, 528, 528, 343, 343, 343, - 277, 301, 108, 34, 301, 528, 108, 108, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 345, 13, 50, 50, 50, 693, 36, 50, - 13, 14, 50, 346, 14, 50, 50, 41, 50, 13, - 50, 95, 50, 419, 50, 50, 50, 50, 50, 50, - 50, 432, 50, 184, 50, 344, 344, 344, 432, 432, - 432, 848, 200, 432, 432, 432, 348, 432, 50, 50, - 50, 50, 202, 50, 320, 419, 803, 432, 803, 419, - 419, 419, 419, 345, 345, 345, 432, 432, 203, 432, - 432, 432, 432, 432, 346, 346, 346, 25, 303, 239, - 321, 303, 597, 635, 25, 42, 435, 848, 848, 848, - 848, 240, 42, 435, 435, 435, 330, 857, 435, 435, - 435, 42, 435, 330, 320, 244, 432, 348, 348, 348, - 35, 320, 435, 432, 37, 37, 320, 253, 432, 432, - 320, 435, 435, 264, 435, 435, 435, 435, 435, 283, - 321, 266, 597, 635, 376, 858, 377, 321, 320, 597, - 635, 432, 321, 540, 597, 635, 321, 857, 597, 635, - 267, 400, 268, 35, 857, 432, 35, 432, 401, 857, - 432, 435, 198, 857, 321, 640, 597, 635, 435, 198, - 640, 646, 283, 435, 435, 283, 646, 376, 198, 377, - 376, 857, 377, 400, 271, 858, 540, 400, 400, 540, - 401, 271, 858, 273, 401, 401, 435, 858, 280, 280, - 271, 858, 294, 294, 331, 552, 552, 552, 275, 552, - 435, 331, 435, 552, 552, 435, 276, 859, 552, 858, - 552, 552, 552, 552, 552, 552, 552, 305, 305, 615, - 615, 552, 552, 552, 552, 552, 552, 552, 332, 420, - 279, 333, 334, 758, 758, 332, 284, 552, 333, 334, - 552, 552, 552, 552, 552, 552, 552, 552, 552, 552, - 285, 552, 552, 335, 552, 552, 552, 859, 870, 870, - 335, 420, 288, 336, 859, 420, 420, 420, 420, 859, - 336, 272, 292, 859, 337, 293, 552, 552, 272, 552, - 552, 337, 552, 552, 296, 300, 552, 272, 552, 302, - 552, 859, 552, 312, 339, 274, 286, 314, 315, 317, - 552, 339, 274, 286, 314, 552, 552, 552, 552, 552, - 552, 274, 286, 314, 552, 552, 553, 553, 553, 362, - 553, 363, 368, 552, 553, 553, 371, 375, 382, 553, - 402, 553, 553, 553, 553, 553, 553, 553, 403, 404, - 405, 429, 553, 553, 553, 553, 553, 553, 553, 522, - 522, 438, 522, 522, 522, 439, 441, 442, 553, 448, - 450, 553, 553, 553, 553, 553, 553, 553, 553, 553, - 553, 451, 553, 553, 455, 553, 553, 553, 398, 398, - 398, 398, 398, 398, 398, 398, 398, 398, 398, 324, - 398, 398, 459, 460, 398, 398, 324, 553, 553, 459, - 553, 553, 470, 553, 553, 324, 473, 553, 459, 553, - 398, 553, 398, 553, 398, 398, 398, 398, 398, 398, - 398, 553, 398, 487, 493, 494, 553, 553, 553, 553, - 553, 553, 526, 503, 531, 553, 553, 60, 60, 60, - 503, 60, 543, 547, 553, 60, 60, 554, 561, 503, - 60, 563, 60, 60, 60, 60, 60, 60, 60, 566, - 568, 576, 577, 60, 60, 60, 60, 60, 60, 60, - 583, 586, 60, 593, 596, 599, 601, 366, 602, 60, - 604, 607, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 608, 60, 60, 611, 60, 60, 60, 366, - 366, 366, 366, 366, 366, 366, 366, 366, 366, 366, - 598, 366, 366, 721, 617, 366, 366, 598, 60, 623, - 721, 60, 598, 625, 60, 60, 598, 626, 60, 721, - 629, 366, 638, 366, 60, 366, 366, 366, 366, 366, - 366, 366, 60, 366, 643, 647, 648, 60, 60, 60, - 60, 60, 60, 649, 655, 660, 60, 60, 663, 60, - 366, 665, 366, 636, 60, 97, 97, 97, 97, 97, - 636, 678, 696, 97, 97, 636, 700, 701, 97, 636, - 97, 97, 97, 97, 97, 97, 97, 702, 705, 709, - 710, 97, 97, 97, 97, 97, 97, 97, 712, 716, - 97, 4, 4, 4, 4, 4, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 718, 97, 97, 719, 97, 97, 97, 399, 399, 399, - 399, 399, 399, 399, 399, 399, 399, 399, 770, 399, - 399, 771, 720, 399, 399, 770, 97, 732, 771, 97, - 735, 746, 97, 97, 770, 750, 97, 771, 97, 399, - 751, 399, 97, 399, 399, 399, 399, 399, 399, 399, - 97, 399, 764, 772, 774, 97, 97, 97, 97, 97, - 97, 775, 773, 782, 97, 97, 697, 697, 697, 773, - 697, 783, 97, 825, 697, 697, 784, 787, 773, 697, - 825, 697, 697, 697, 697, 697, 697, 697, 800, 825, - 801, 806, 697, 697, 697, 697, 697, 697, 697, 106, - 106, 106, 106, 106, 808, 809, 810, 813, 697, 814, - 826, 697, 697, 697, 697, 697, 697, 697, 697, 697, - 697, 833, 697, 697, 410, 836, 514, 697, 514, 514, - 514, 514, 860, 837, 854, 876, 855, 856, 865, 860, - 410, 410, 876, 871, 860, 872, 873, 697, 860, 874, - 697, 876, 878, 697, 697, 881, 410, 697, 410, 892, - 410, 410, 410, 410, 514, nil, 410, nil, 410, nil, - nil, nil, 514, 514, 514, 514, 697, 697, 697, 697, - 697, 697, nil, nil, nil, 697, 697, nil, 821, 821, - 821, 697, 821, nil, nil, nil, 821, 821, nil, nil, - nil, 821, nil, 821, 821, 821, 821, 821, 821, 821, - nil, nil, nil, nil, 821, 821, 821, 821, 821, 821, - 821, 350, 350, 350, 350, 350, nil, nil, 555, nil, - 821, nil, nil, 821, 821, 821, 821, 821, 821, 821, - 821, 821, 821, nil, 821, 821, nil, nil, nil, 821, - 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, - 555, nil, 555, 555, nil, nil, 555, 555, nil, 821, - nil, nil, 821, nil, nil, 821, 821, nil, nil, 821, - nil, nil, 555, nil, 555, nil, 555, 555, 555, 555, - 555, 555, 555, nil, 555, nil, nil, nil, 821, 821, - 821, 821, 821, 821, nil, nil, nil, 821, 821, nil, - nil, 555, nil, 821, 0, 0, 0, 0, 0, 0, - nil, nil, nil, 0, 0, nil, nil, nil, 0, nil, - 0, 0, 0, 0, 0, 0, 0, nil, nil, nil, - nil, 0, 0, 0, 0, 0, 0, 0, nil, nil, - 0, nil, nil, nil, nil, nil, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - nil, 0, 0, nil, 0, 0, 0, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 0, nil, nil, 0, - nil, nil, 0, 0, nil, nil, 0, nil, 0, nil, - nil, nil, 0, 645, nil, 645, 645, 645, 645, nil, - 0, nil, nil, nil, nil, 0, 0, 0, 0, 0, - 0, nil, nil, nil, 0, 0, 30, 30, 30, 30, - 30, 30, nil, nil, nil, 30, 30, nil, nil, nil, - 30, nil, 30, 30, 30, 30, 30, 30, 30, 645, - 645, 645, 645, 30, 30, 30, 30, 30, 30, 30, - nil, nil, 30, nil, nil, nil, nil, nil, 30, 30, - 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, - 30, 30, nil, 30, 30, nil, 30, 30, 30, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 30, nil, - nil, 30, nil, nil, 30, 30, nil, nil, 30, nil, - 30, nil, nil, nil, 30, 753, nil, 753, 753, 753, - 753, nil, 30, nil, nil, nil, nil, 30, 30, 30, - 30, 30, 30, nil, nil, nil, 30, 30, 51, 51, - 51, 51, 51, 51, nil, nil, nil, 51, 51, nil, - nil, nil, 51, nil, 51, 51, 51, 51, 51, 51, - 51, 753, 753, 753, 753, 51, 51, 51, 51, 51, - 51, 51, nil, nil, 51, nil, nil, nil, nil, nil, - 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, - 51, 51, 51, 51, nil, 51, 51, nil, 51, 51, - 51, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 51, nil, nil, 51, nil, nil, 51, 51, nil, nil, - 51, nil, 51, nil, nil, nil, 51, 817, nil, 817, - 817, 817, 817, nil, 51, nil, nil, nil, nil, 51, - 51, 51, 51, 51, 51, nil, nil, nil, 51, 51, - 186, 186, 186, 186, 186, 186, nil, nil, nil, 186, - 186, nil, nil, nil, 186, 817, 186, 186, 186, 186, - 186, 186, 186, 817, 817, 817, 817, 186, 186, 186, - 186, 186, 186, 186, nil, nil, 186, nil, nil, nil, - nil, nil, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, nil, 186, 186, nil, - 186, 186, 186, 409, 409, 409, 409, 409, 409, 409, - nil, nil, 409, 409, nil, nil, nil, nil, nil, 409, - 409, nil, 186, nil, nil, 186, nil, nil, 186, 186, - nil, nil, 186, nil, 186, 409, nil, 409, 186, 409, - 409, 409, 409, 409, 409, 409, 186, 409, nil, nil, - nil, 186, 186, 186, 186, 186, 186, nil, nil, nil, - 186, 186, 187, 187, 187, 187, 187, 187, nil, nil, - nil, 187, 187, nil, nil, nil, 187, nil, 187, 187, - 187, 187, 187, 187, 187, nil, nil, nil, nil, 187, - 187, 187, 187, 187, 187, 187, nil, nil, 187, nil, - nil, nil, nil, nil, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, nil, 187, - 187, nil, 187, 187, 187, 411, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 411, 411, nil, 187, nil, nil, 187, nil, nil, - 187, 187, nil, nil, 187, nil, 187, 411, nil, 411, - 187, 411, 411, 411, 411, nil, nil, 411, 187, 411, - nil, nil, nil, 187, 187, 187, 187, 187, 187, nil, - nil, nil, 187, 187, 204, 204, 204, 204, 204, 204, - nil, nil, nil, 204, 204, nil, nil, nil, 204, nil, - 204, 204, 204, 204, 204, 204, 204, nil, nil, nil, - nil, 204, 204, 204, 204, 204, 204, 204, nil, nil, - 204, nil, nil, nil, nil, nil, 204, 204, 204, 204, - 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, - nil, 204, 204, nil, 204, 204, 204, 412, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 412, 412, nil, 204, nil, nil, 204, - nil, nil, 204, 204, nil, nil, 204, nil, 204, 412, - nil, 412, 204, 412, 412, 412, 412, nil, nil, 412, - 204, 412, nil, nil, nil, 204, 204, 204, 204, 204, - 204, nil, nil, nil, 204, 204, 265, 265, 265, 265, - 265, 265, nil, nil, nil, 265, 265, nil, nil, nil, - 265, nil, 265, 265, 265, 265, 265, 265, 265, nil, - nil, nil, nil, 265, 265, 265, 265, 265, 265, 265, - nil, nil, 265, nil, nil, nil, nil, nil, 265, 265, - 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, - 265, 265, nil, 265, 265, nil, 265, 265, 265, 413, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 413, 413, nil, 265, nil, - nil, 265, nil, nil, 265, 265, nil, nil, 265, nil, - 265, 413, nil, 413, 265, 413, 413, 413, 413, nil, - nil, 413, 265, 413, nil, nil, nil, 265, 265, 265, - 265, 265, 265, nil, nil, nil, 265, 265, 270, 270, - 270, 270, 270, 270, nil, nil, nil, 270, 270, nil, - nil, nil, 270, nil, 270, 270, 270, 270, 270, 270, - 270, nil, nil, nil, nil, 270, 270, 270, 270, 270, - 270, 270, nil, nil, 270, nil, nil, nil, nil, nil, - 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, - 270, 270, 270, 270, nil, 270, 270, nil, 270, 270, - 270, 414, 414, 414, 414, 414, 414, 414, nil, nil, - 414, 414, nil, nil, nil, nil, nil, 414, 414, nil, - 270, nil, nil, 270, nil, nil, 270, 270, nil, nil, - 270, nil, 270, 414, nil, 414, 270, 414, 414, 414, - 414, 414, 414, 414, 270, 414, nil, nil, nil, 270, - 270, 270, 270, 270, 270, nil, nil, nil, 270, 270, - 486, 486, 486, 486, 486, 486, nil, nil, nil, 486, - 486, nil, nil, nil, 486, nil, 486, 486, 486, 486, - 486, 486, 486, nil, nil, nil, nil, 486, 486, 486, - 486, 486, 486, 486, nil, nil, 486, nil, nil, nil, - nil, nil, 486, 486, 486, 486, 486, 486, 486, 486, - 486, 486, 486, 486, 486, 486, nil, 486, 486, nil, - 486, 486, 486, 415, 415, 415, 415, 415, 415, 415, - nil, nil, 415, 415, nil, nil, nil, nil, nil, 415, - 415, nil, 486, nil, nil, 486, nil, nil, 486, 486, - nil, nil, 486, nil, 486, 415, nil, 415, 486, 415, - 415, 415, 415, 415, 415, 415, 486, 415, nil, nil, - nil, 486, 486, 486, 486, 486, 486, nil, nil, nil, - 486, 486, 490, 490, 490, 490, 490, 490, nil, nil, - nil, 490, 490, nil, nil, nil, 490, nil, 490, 490, - 490, 490, 490, 490, 490, nil, nil, nil, nil, 490, - 490, 490, 490, 490, 490, 490, nil, nil, 490, nil, - nil, nil, nil, nil, 490, 490, 490, 490, 490, 490, - 490, 490, 490, 490, 490, 490, 490, 490, nil, 490, - 490, nil, 490, 490, 490, 416, 416, 416, 416, 416, - 416, 416, nil, nil, 416, 416, nil, nil, nil, nil, - nil, 416, 416, nil, 490, nil, nil, 490, nil, nil, - 490, 490, nil, nil, 490, nil, 490, 416, nil, 416, - 490, 416, 416, 416, 416, 416, 416, 416, 490, 416, - nil, nil, nil, 490, 490, 490, 490, 490, 490, nil, - nil, nil, 490, 490, 495, 495, 495, 495, 495, 495, - nil, nil, nil, 495, 495, nil, nil, nil, 495, nil, - 495, 495, 495, 495, 495, 495, 495, nil, nil, nil, - nil, 495, 495, 495, 495, 495, 495, 495, nil, nil, - 495, nil, nil, nil, nil, nil, 495, 495, 495, 495, - 495, 495, 495, 495, 495, 495, 495, 495, 495, 495, - nil, 495, 495, nil, 495, 495, 495, 417, 417, 417, - 417, 417, 417, 417, nil, nil, 417, 417, nil, nil, - nil, nil, nil, 417, 417, nil, 495, nil, nil, 495, - nil, nil, 495, 495, nil, nil, 495, nil, 495, 417, - nil, 417, 495, 417, 417, 417, 417, 417, 417, 417, - 495, 417, nil, nil, nil, 495, 495, 495, 495, 495, - 495, nil, nil, nil, 495, 495, 513, 513, 513, 513, - 513, 513, nil, nil, nil, 513, 513, nil, nil, nil, - 513, nil, 513, 513, 513, 513, 513, 513, 513, nil, - nil, nil, nil, 513, 513, 513, 513, 513, 513, 513, - nil, nil, 513, nil, nil, nil, nil, nil, 513, 513, - 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, - 513, 513, nil, 513, 513, nil, 513, 513, 513, 418, - 418, 418, 418, 418, 418, 418, nil, nil, 418, 418, - nil, nil, nil, nil, nil, 418, 418, nil, 513, nil, - nil, 513, nil, nil, 513, 513, nil, nil, 513, nil, - 513, 418, nil, 418, 513, 418, 418, 418, 418, 418, - 418, 418, 513, 418, nil, nil, nil, 513, 513, 513, - 513, 513, 513, nil, nil, nil, 513, 513, 559, 559, - 559, 559, 559, 559, nil, nil, nil, 559, 559, nil, - nil, nil, 559, nil, 559, 559, 559, 559, 559, 559, - 559, nil, nil, nil, nil, 559, 559, 559, 559, 559, - 559, 559, nil, nil, 559, nil, nil, nil, nil, nil, - 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, - 559, 559, 559, 559, nil, 559, 559, nil, 559, 559, - 559, 421, 421, 421, 421, 421, 421, 421, nil, nil, - 421, 421, nil, nil, nil, nil, nil, 421, 421, nil, - 559, nil, nil, 559, nil, nil, 559, 559, nil, nil, - 559, nil, 559, 421, nil, 421, 559, 421, 421, 421, - 421, 421, 421, 421, 559, 421, nil, nil, nil, 559, - 559, 559, 559, 559, 559, nil, nil, nil, 559, 559, - 588, 588, 588, 588, 588, 588, nil, nil, nil, 588, - 588, nil, nil, nil, 588, nil, 588, 588, 588, 588, - 588, 588, 588, nil, nil, nil, nil, 588, 588, 588, - 588, 588, 588, 588, nil, nil, 588, nil, nil, nil, - nil, nil, 588, 588, 588, 588, 588, 588, 588, 588, - 588, 588, 588, 588, 588, 588, nil, 588, 588, nil, - 588, 588, 588, 422, 422, 422, 422, 422, 422, 422, - 422, nil, 422, 422, nil, nil, nil, nil, nil, 422, - 422, nil, 588, nil, nil, 588, nil, nil, 588, 588, - nil, nil, 588, nil, 588, 422, nil, 422, 588, 422, - 422, 422, 422, 422, 422, 422, 588, 422, nil, nil, - nil, 588, 588, 588, 588, 588, 588, nil, nil, nil, - 588, 588, 589, 589, 589, 589, 589, 589, nil, nil, - nil, 589, 589, nil, nil, nil, 589, nil, 589, 589, - 589, 589, 589, 589, 589, nil, nil, nil, nil, 589, - 589, 589, 589, 589, 589, 589, nil, nil, 589, nil, - nil, nil, nil, nil, 589, 589, 589, 589, 589, 589, - 589, 589, 589, 589, 589, 589, 589, 589, nil, 589, - 589, nil, 589, 589, 589, 406, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 406, 406, nil, 589, nil, nil, 589, nil, nil, - 589, 589, nil, nil, 589, nil, 589, 406, nil, 406, - 589, 406, 406, 406, 406, nil, nil, nil, 589, nil, - nil, nil, nil, 589, 589, 589, 589, 589, 589, nil, - nil, nil, 589, 589, 606, 606, 606, 606, 606, 606, - nil, nil, nil, 606, 606, nil, nil, nil, 606, nil, - 606, 606, 606, 606, 606, 606, 606, nil, nil, nil, - nil, 606, 606, 606, 606, 606, 606, 606, nil, nil, - 606, nil, nil, nil, nil, nil, 606, 606, 606, 606, - 606, 606, 606, 606, 606, 606, 606, 606, 606, 606, - nil, 606, 606, nil, 606, 606, 606, 407, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 407, 407, nil, 606, nil, nil, 606, - nil, nil, 606, 606, nil, nil, 606, nil, 606, 407, - nil, 407, 606, 407, 407, 407, 407, nil, nil, nil, - 606, nil, nil, nil, nil, 606, 606, 606, 606, 606, - 606, nil, nil, nil, 606, 606, 639, 639, 639, 639, - 639, 639, nil, nil, nil, 639, 639, nil, nil, nil, - 639, nil, 639, 639, 639, 639, 639, 639, 639, nil, - nil, nil, nil, 639, 639, 639, 639, 639, 639, 639, - nil, nil, 639, nil, nil, nil, nil, nil, 639, 639, - 639, 639, 639, 639, 639, 639, 639, 639, 639, 639, - 639, 639, nil, 639, 639, nil, 639, 639, 639, 408, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 408, 408, nil, 639, nil, - nil, 639, nil, nil, 639, 639, nil, nil, 639, nil, - 639, 408, nil, nil, 639, 408, 408, 408, 408, nil, - nil, nil, 639, nil, nil, nil, nil, 639, 639, 639, - 639, 639, 639, nil, nil, nil, 639, 639, 644, 644, - 644, 644, 644, 644, nil, nil, nil, 644, 644, nil, - nil, nil, 644, nil, 644, 644, 644, 644, 644, 644, - 644, nil, nil, nil, nil, 644, 644, 644, 644, 644, - 644, 644, nil, nil, 644, nil, nil, nil, nil, nil, - 644, 644, 644, 644, 644, 644, 644, 644, 644, 644, - 644, 644, 644, 644, nil, 644, 644, nil, 644, 644, - 644, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 644, nil, nil, 644, nil, nil, 644, 644, nil, nil, - 644, nil, 644, nil, nil, nil, 644, nil, nil, nil, - nil, nil, nil, nil, 644, nil, nil, nil, nil, 644, - 644, 644, 644, 644, 644, nil, nil, nil, 644, 644, - 671, 671, 671, 671, 671, 671, nil, nil, nil, 671, - 671, nil, nil, nil, 671, nil, 671, 671, 671, 671, - 671, 671, 671, nil, nil, nil, nil, 671, 671, 671, - 671, 671, 671, 671, nil, nil, 671, nil, nil, nil, - nil, nil, 671, 671, 671, 671, 671, 671, 671, 671, - 671, 671, 671, 671, 671, 671, nil, 671, 671, nil, - 671, 671, 671, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 671, nil, nil, 671, nil, nil, 671, 671, - nil, nil, 671, nil, 671, nil, nil, nil, 671, nil, - nil, nil, nil, nil, nil, nil, 671, nil, nil, nil, - nil, 671, 671, 671, 671, 671, 671, nil, nil, nil, - 671, 671, 706, 706, 706, 706, 706, 706, nil, nil, - nil, 706, 706, nil, nil, nil, 706, nil, 706, 706, - 706, 706, 706, 706, 706, nil, nil, nil, nil, 706, - 706, 706, 706, 706, 706, 706, nil, nil, 706, nil, - nil, nil, nil, nil, 706, 706, 706, 706, 706, 706, - 706, 706, 706, 706, 706, 706, 706, 706, nil, 706, - 706, nil, 706, 706, 706, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 706, nil, nil, 706, nil, nil, - 706, 706, nil, nil, 706, nil, 706, nil, nil, nil, - 706, nil, nil, nil, nil, nil, nil, nil, 706, nil, - nil, nil, nil, 706, 706, 706, 706, 706, 706, nil, - nil, nil, 706, 706, 724, 724, 724, 724, 724, 724, - nil, nil, nil, 724, 724, nil, nil, nil, 724, nil, - 724, 724, 724, 724, 724, 724, 724, nil, nil, nil, - nil, 724, 724, 724, 724, 724, 724, 724, nil, nil, - 724, nil, nil, nil, nil, nil, 724, 724, 724, 724, - 724, 724, 724, 724, 724, 724, 724, 724, 724, 724, - nil, 724, 724, nil, 724, 724, 724, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 724, nil, nil, 724, - nil, nil, 724, 724, nil, nil, 724, nil, 724, nil, - nil, nil, 724, nil, nil, nil, nil, nil, nil, nil, - 724, nil, nil, nil, nil, 724, 724, 724, 724, 724, - 724, nil, nil, nil, 724, 724, 736, 736, 736, 736, - 736, 736, nil, nil, nil, 736, 736, nil, nil, nil, - 736, nil, 736, 736, 736, 736, 736, 736, 736, nil, - nil, nil, nil, 736, 736, 736, 736, 736, 736, 736, - nil, nil, 736, nil, nil, nil, nil, nil, 736, 736, - 736, 736, 736, 736, 736, 736, 736, 736, 736, 736, - 736, 736, nil, 736, 736, nil, 736, 736, 736, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 736, nil, - nil, 736, nil, nil, 736, 736, nil, nil, 736, nil, - 736, nil, nil, nil, 736, nil, nil, nil, nil, nil, - nil, nil, 736, nil, nil, nil, nil, 736, 736, 736, - 736, 736, 736, nil, nil, nil, 736, 736, 737, 737, - 737, 737, 737, 737, nil, nil, nil, 737, 737, nil, - nil, nil, 737, nil, 737, 737, 737, 737, 737, 737, - 737, nil, nil, nil, nil, 737, 737, 737, 737, 737, - 737, 737, nil, nil, 737, nil, nil, nil, nil, nil, - 737, 737, 737, 737, 737, 737, 737, 737, 737, 737, - 737, 737, 737, 737, nil, 737, 737, nil, 737, 737, - 737, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 737, nil, nil, 737, nil, nil, 737, 737, nil, nil, - 737, nil, 737, nil, nil, nil, 737, nil, nil, nil, - nil, nil, nil, nil, 737, nil, nil, nil, nil, 737, - 737, 737, 737, 737, 737, nil, nil, nil, 737, 737, - 741, 741, 741, 741, 741, 741, nil, nil, nil, 741, - 741, nil, nil, nil, 741, nil, 741, 741, 741, 741, - 741, 741, 741, nil, nil, nil, nil, 741, 741, 741, - 741, 741, 741, 741, nil, nil, 741, nil, nil, nil, - nil, nil, 741, 741, 741, 741, 741, 741, 741, 741, - 741, 741, 741, 741, 741, 741, nil, 741, 741, nil, - 741, 741, 741, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 741, nil, nil, 741, nil, nil, 741, 741, - nil, nil, 741, nil, 741, nil, nil, nil, 741, nil, - nil, nil, nil, nil, nil, nil, 741, nil, nil, nil, - nil, 741, 741, 741, 741, 741, 741, nil, nil, nil, - 741, 741, 748, 748, 748, 748, 748, 748, nil, nil, - nil, 748, 748, nil, nil, nil, 748, nil, 748, 748, - 748, 748, 748, 748, 748, nil, nil, nil, nil, 748, - 748, 748, 748, 748, 748, 748, nil, nil, 748, nil, - nil, nil, nil, nil, 748, 748, 748, 748, 748, 748, - 748, 748, 748, 748, 748, 748, 748, 748, nil, 748, - 748, nil, 748, 748, 748, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 748, nil, nil, 748, nil, nil, - 748, 748, nil, nil, 748, nil, 748, nil, nil, nil, - 748, nil, nil, nil, nil, nil, nil, nil, 748, nil, - nil, nil, nil, 748, 748, 748, 748, 748, 748, nil, - nil, nil, 748, 748, 794, 794, 794, 794, 794, 794, - nil, nil, nil, 794, 794, nil, nil, nil, 794, nil, - 794, 794, 794, 794, 794, 794, 794, nil, nil, nil, - nil, 794, 794, 794, 794, 794, 794, 794, nil, nil, - 794, nil, nil, nil, nil, nil, 794, 794, 794, 794, - 794, 794, 794, 794, 794, 794, 794, 794, 794, 794, - nil, 794, 794, nil, 794, 794, 794, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 794, nil, nil, 794, - nil, nil, 794, 794, nil, nil, 794, nil, 794, nil, - nil, nil, 794, nil, nil, nil, nil, nil, nil, nil, - 794, nil, nil, nil, nil, 794, 794, 794, 794, 794, - 794, nil, nil, nil, 794, 794, 838, 838, 838, 838, - 838, 838, nil, nil, nil, 838, 838, nil, nil, nil, - 838, nil, 838, 838, 838, 838, 838, 838, 838, nil, - nil, nil, nil, 838, 838, 838, 838, 838, 838, 838, - nil, nil, 838, nil, nil, nil, nil, nil, 838, 838, - 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - 838, 838, nil, 838, 838, nil, 838, 838, 838, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 838, nil, - nil, 838, nil, nil, 838, 838, nil, nil, 838, nil, - 838, nil, nil, nil, 838, nil, nil, nil, nil, nil, - nil, nil, 838, nil, nil, nil, nil, 838, 838, 838, - 838, 838, 838, nil, nil, nil, 838, 838, 845, 845, - 845, 845, 845, 845, nil, nil, nil, 845, 845, nil, - nil, nil, 845, nil, 845, 845, 845, 845, 845, 845, - 845, nil, nil, nil, nil, 845, 845, 845, 845, 845, - 845, 845, nil, nil, 845, nil, nil, nil, nil, nil, - 845, 845, 845, 845, 845, 845, 845, 845, 845, 845, - 845, 845, 845, 845, nil, 845, 845, nil, 845, 845, - 845, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 845, nil, nil, 845, nil, nil, 845, 845, nil, nil, - 845, nil, 845, nil, nil, nil, 845, nil, nil, nil, - nil, nil, nil, nil, 845, nil, nil, nil, nil, 845, - 845, 845, 845, 845, 845, nil, nil, nil, 845, 845, - 852, 852, 852, 852, 852, 852, nil, nil, nil, 852, - 852, nil, nil, nil, 852, nil, 852, 852, 852, 852, - 852, 852, 852, nil, nil, nil, nil, 852, 852, 852, - 852, 852, 852, 852, nil, nil, 852, nil, nil, nil, - nil, nil, 852, 852, 852, 852, 852, 852, 852, 852, - 852, 852, 852, 852, 852, 852, nil, 852, 852, nil, - 852, 852, 852, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 852, nil, nil, 852, nil, nil, 852, 852, - nil, nil, 852, nil, 852, nil, nil, nil, 852, nil, - nil, nil, nil, nil, nil, nil, 852, nil, nil, nil, - nil, 852, 852, 852, 852, 852, 852, nil, nil, nil, - 852, 852, 5, 5, 5, 5, 5, nil, nil, nil, - 5, 5, nil, nil, nil, 5, nil, 5, 5, 5, - 5, 5, 5, 5, nil, nil, nil, nil, 5, 5, - 5, 5, 5, 5, 5, nil, nil, 5, nil, nil, - nil, nil, nil, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, nil, 5, 5, - nil, 5, 5, 5, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 5, nil, nil, 5, nil, nil, 5, - 5, nil, nil, 5, nil, 5, nil, nil, nil, 5, - nil, nil, nil, nil, nil, nil, nil, 5, nil, nil, - nil, nil, 5, 5, 5, 5, 5, 5, nil, nil, - nil, 5, 5, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, nil, nil, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 6, nil, - nil, nil, nil, nil, 6, 6, 6, 6, 6, 6, - 6, 6, 6, nil, 6, nil, nil, nil, nil, nil, - nil, nil, 6, 6, nil, 6, 6, 6, 6, nil, - 6, 6, nil, nil, 6, nil, nil, nil, nil, 6, - 6, 6, 6, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 6, 6, nil, 6, - 6, 6, 6, 6, 6, 6, 6, 6, nil, 6, - nil, nil, 6, 6, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 6, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, nil, nil, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - nil, nil, nil, nil, nil, 7, 7, 7, 7, 7, - 7, 7, 7, nil, nil, 7, nil, nil, nil, nil, - nil, nil, nil, 7, 7, nil, 7, 7, 7, 7, - nil, 7, 7, nil, nil, 7, nil, nil, nil, nil, - 7, 7, 7, 7, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 7, 7, nil, - 7, 7, 7, 7, 7, 7, 7, 7, 7, nil, - 7, nil, nil, 7, 7, nil, nil, 17, 17, 17, - nil, 17, nil, nil, 7, 17, 17, nil, nil, nil, - 17, nil, 17, 17, 17, 17, 17, 17, 17, nil, - nil, nil, nil, 17, 17, 17, 17, 17, 17, 17, - nil, nil, 17, nil, nil, nil, nil, nil, nil, 17, - nil, nil, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, nil, 17, 17, nil, 17, 17, 17, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 17, nil, - nil, 17, nil, nil, 17, 17, nil, nil, 17, nil, - nil, nil, nil, nil, 17, nil, nil, nil, nil, nil, - nil, nil, 17, nil, nil, nil, nil, 17, 17, 17, - 17, 17, 17, nil, nil, nil, 17, 17, 18, 18, - 18, nil, 18, nil, nil, nil, 18, 18, nil, nil, - nil, 18, nil, 18, 18, 18, 18, 18, 18, 18, - nil, nil, nil, nil, 18, 18, 18, 18, 18, 18, - 18, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 18, nil, nil, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, nil, 18, 18, nil, 18, 18, 18, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 18, - nil, nil, 18, nil, nil, 18, 18, nil, nil, 18, - nil, nil, nil, nil, nil, 18, nil, nil, nil, nil, - nil, nil, nil, 18, nil, nil, nil, nil, 18, 18, - 18, 18, 18, 18, nil, nil, nil, 18, 18, 22, - 22, 22, nil, 22, nil, nil, nil, 22, 22, nil, - nil, nil, 22, nil, 22, 22, 22, 22, 22, 22, - 22, nil, nil, nil, nil, 22, 22, 22, 22, 22, - 22, 22, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 22, nil, nil, 22, 22, 22, 22, 22, 22, - 22, 22, 22, 22, nil, 22, 22, nil, 22, 22, - 22, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 22, nil, nil, 22, nil, nil, 22, 22, nil, nil, - 22, nil, 22, nil, 22, nil, 22, nil, nil, nil, - nil, nil, nil, nil, 22, nil, nil, nil, nil, 22, - 22, 22, 22, 22, 22, nil, nil, nil, 22, 22, - 23, 23, 23, nil, 23, nil, nil, nil, 23, 23, - nil, nil, nil, 23, nil, 23, 23, 23, 23, 23, - 23, 23, nil, nil, nil, nil, 23, 23, 23, 23, - 23, 23, 23, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 23, nil, nil, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, nil, 23, 23, nil, 23, - 23, 23, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 23, nil, nil, 23, nil, nil, 23, 23, nil, - nil, 23, nil, 23, nil, 23, nil, 23, nil, nil, - nil, nil, nil, nil, nil, 23, nil, nil, nil, nil, - 23, 23, 23, 23, 23, 23, nil, nil, nil, 23, - 23, 24, 24, 24, nil, 24, nil, nil, nil, 24, - 24, nil, nil, nil, 24, nil, 24, 24, 24, 24, - 24, 24, 24, nil, nil, nil, nil, 24, 24, 24, - 24, 24, 24, 24, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 24, nil, nil, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 24, nil, 24, 24, nil, - 24, 24, 24, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 24, nil, nil, 24, nil, nil, 24, 24, - nil, nil, 24, nil, 24, nil, 24, nil, 24, nil, - nil, nil, nil, nil, nil, nil, 24, nil, nil, nil, - nil, 24, 24, 24, 24, 24, 24, nil, nil, nil, - 24, 24, 27, 27, 27, nil, 27, nil, nil, nil, - 27, 27, nil, nil, nil, 27, nil, 27, 27, 27, - 27, 27, 27, 27, nil, nil, nil, nil, 27, 27, - 27, 27, 27, 27, 27, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 27, nil, nil, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, nil, 27, 27, - nil, 27, 27, 27, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 27, nil, nil, 27, 27, nil, 27, - 27, nil, nil, 27, nil, 27, nil, 27, nil, 27, - nil, nil, nil, nil, nil, nil, nil, 27, nil, nil, - nil, nil, 27, 27, 27, 27, 27, 27, nil, nil, - nil, 27, 27, 28, 28, 28, nil, 28, nil, nil, - nil, 28, 28, nil, nil, nil, 28, nil, 28, 28, - 28, 28, 28, 28, 28, nil, nil, nil, nil, 28, - 28, 28, 28, 28, 28, 28, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 28, nil, nil, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, nil, 28, - 28, nil, 28, 28, 28, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 28, nil, nil, 28, 28, nil, - 28, 28, nil, nil, 28, nil, 28, nil, 28, nil, - 28, nil, nil, nil, nil, nil, nil, nil, 28, nil, - nil, nil, nil, 28, 28, 28, 28, 28, 28, nil, - nil, nil, 28, 28, 31, 31, 31, nil, 31, nil, - nil, nil, 31, 31, nil, nil, nil, 31, nil, 31, - 31, 31, 31, 31, 31, 31, nil, nil, nil, nil, - 31, 31, 31, 31, 31, 31, 31, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 31, nil, nil, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, nil, - 31, 31, nil, nil, nil, 31, nil, 828, 828, 828, - 828, 828, 828, 828, 828, 828, 828, 828, nil, 828, - 828, nil, nil, 828, 828, 31, nil, nil, 31, nil, - nil, 31, 31, nil, nil, 31, nil, 31, nil, 828, - nil, 828, nil, 828, 828, 828, 828, 828, 828, 828, - nil, 828, nil, nil, 31, 31, 31, 31, 31, 31, - nil, nil, nil, 31, 31, 32, 32, 32, 828, 32, - 828, nil, nil, 32, 32, nil, nil, nil, 32, nil, - 32, 32, 32, 32, 32, 32, 32, nil, nil, nil, - nil, 32, 32, 32, 32, 32, 32, 32, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 32, nil, nil, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - nil, 32, 32, nil, nil, nil, 32, nil, 19, 19, - 19, 19, 19, 19, 19, 19, 19, 19, 19, nil, - 19, 19, nil, nil, 19, 19, 32, nil, nil, 32, - nil, nil, 32, 32, nil, nil, 32, nil, nil, nil, - 19, nil, 19, nil, 19, 19, 19, 19, 19, 19, - 19, nil, 19, nil, nil, 32, 32, 32, 32, 32, - 32, nil, nil, nil, 32, 32, 38, 38, 38, 19, - 38, nil, nil, nil, 38, 38, nil, nil, nil, 38, - nil, 38, 38, 38, 38, 38, 38, 38, nil, nil, - nil, nil, 38, 38, 38, 38, 38, 38, 38, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 38, nil, - nil, 38, 38, 38, 38, 38, 38, 38, 38, 38, - 38, nil, 38, 38, nil, 38, 38, 38, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 38, nil, nil, - 38, nil, nil, 38, 38, nil, nil, 38, nil, nil, - nil, nil, nil, 38, nil, nil, nil, nil, nil, nil, - nil, 38, nil, nil, nil, nil, 38, 38, 38, 38, - 38, 38, nil, nil, nil, 38, 38, 39, 39, 39, - nil, 39, nil, nil, nil, 39, 39, nil, nil, nil, - 39, nil, 39, 39, 39, 39, 39, 39, 39, nil, - nil, nil, nil, 39, 39, 39, 39, 39, 39, 39, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 39, - nil, nil, 39, 39, 39, 39, 39, 39, 39, 39, - 39, 39, nil, 39, 39, nil, 39, 39, 39, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 39, nil, - nil, 39, nil, nil, 39, 39, nil, nil, 39, nil, - nil, nil, nil, nil, 39, nil, nil, nil, nil, nil, - nil, nil, 39, nil, nil, nil, nil, 39, 39, 39, - 39, 39, 39, nil, nil, nil, 39, 39, 40, 40, - 40, nil, 40, nil, nil, nil, 40, 40, nil, nil, - nil, 40, nil, 40, 40, 40, 40, 40, 40, 40, - nil, nil, nil, nil, 40, 40, 40, 40, 40, 40, - 40, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 40, nil, nil, 40, 40, 40, 40, 40, 40, 40, - 40, 40, 40, nil, 40, 40, nil, 40, 40, 40, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 40, - nil, nil, 40, nil, nil, 40, 40, nil, nil, 40, - nil, nil, nil, nil, nil, 40, nil, nil, nil, nil, - nil, nil, nil, 40, nil, nil, nil, nil, 40, 40, - 40, 40, 40, 40, nil, nil, nil, 40, 40, 52, - 52, 52, nil, 52, nil, nil, nil, 52, 52, nil, - nil, nil, 52, nil, 52, 52, 52, 52, 52, 52, - 52, nil, nil, nil, nil, 52, 52, 52, 52, 52, - 52, 52, nil, nil, 52, nil, nil, nil, nil, nil, - nil, 52, nil, nil, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 52, nil, 52, 52, nil, 52, 52, - 52, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 52, nil, nil, 52, nil, nil, 52, 52, nil, nil, - 52, nil, nil, nil, nil, nil, 52, nil, nil, nil, - nil, nil, nil, nil, 52, nil, nil, nil, nil, 52, - 52, 52, 52, 52, 52, nil, nil, nil, 52, 52, - 53, 53, 53, nil, 53, nil, nil, nil, 53, 53, - nil, nil, nil, 53, nil, 53, 53, 53, 53, 53, - 53, 53, nil, nil, nil, nil, 53, 53, 53, 53, - 53, 53, 53, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 53, nil, nil, 53, 53, 53, 53, 53, - 53, 53, 53, 53, 53, nil, 53, 53, nil, 53, - 53, 53, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 53, nil, nil, 53, nil, nil, 53, 53, nil, - nil, 53, nil, 53, nil, nil, nil, 53, nil, nil, - nil, nil, nil, nil, nil, 53, nil, nil, nil, nil, - 53, 53, 53, 53, 53, 53, nil, nil, nil, 53, - 53, 54, 54, 54, nil, 54, nil, nil, nil, 54, - 54, nil, nil, nil, 54, nil, 54, 54, 54, 54, - 54, 54, 54, nil, nil, nil, nil, 54, 54, 54, - 54, 54, 54, 54, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 54, nil, nil, 54, 54, 54, 54, - 54, 54, 54, 54, 54, 54, nil, 54, 54, nil, - 54, 54, 54, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 54, nil, nil, 54, nil, nil, 54, 54, - nil, nil, 54, nil, nil, nil, nil, nil, 54, nil, - nil, nil, nil, nil, nil, nil, 54, nil, nil, nil, - nil, 54, 54, 54, 54, 54, 54, nil, nil, nil, - 54, 54, 56, 56, 56, nil, 56, nil, nil, nil, - 56, 56, nil, nil, nil, 56, nil, 56, 56, 56, - 56, 56, 56, 56, nil, nil, nil, nil, 56, 56, - 56, 56, 56, 56, 56, nil, nil, 56, nil, nil, - nil, nil, nil, nil, 56, nil, nil, 56, 56, 56, - 56, 56, 56, 56, 56, 56, 56, nil, 56, 56, - nil, 56, 56, 56, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 56, nil, nil, 56, nil, nil, 56, - 56, nil, nil, 56, nil, nil, nil, nil, nil, 56, - nil, nil, nil, nil, nil, nil, nil, 56, nil, nil, - nil, nil, 56, 56, 56, 56, 56, 56, nil, nil, - nil, 56, 56, 57, 57, 57, nil, 57, nil, nil, - nil, 57, 57, nil, nil, nil, 57, nil, 57, 57, - 57, 57, 57, 57, 57, nil, nil, nil, nil, 57, - 57, 57, 57, 57, 57, 57, nil, nil, 57, nil, - nil, nil, nil, nil, nil, 57, nil, nil, 57, 57, - 57, 57, 57, 57, 57, 57, 57, 57, nil, 57, - 57, nil, 57, 57, 57, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 57, nil, nil, 57, nil, nil, - 57, 57, nil, nil, 57, nil, nil, nil, nil, nil, - 57, nil, nil, nil, nil, nil, nil, nil, 57, nil, - nil, nil, nil, 57, 57, 57, 57, 57, 57, nil, - nil, nil, 57, 57, 61, 61, 61, nil, 61, nil, - nil, nil, 61, 61, nil, nil, nil, 61, nil, 61, - 61, 61, 61, 61, 61, 61, nil, nil, nil, nil, - 61, 61, 61, 61, 61, 61, 61, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 61, nil, nil, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, nil, - 61, 61, nil, nil, nil, 61, nil, 237, 237, 237, - 237, 237, 237, 237, 237, 237, 237, 237, nil, 237, - 237, nil, nil, 237, 237, 61, nil, nil, 61, nil, - nil, 61, 61, nil, nil, 61, nil, 61, nil, 237, - nil, 237, nil, 237, 237, 237, 237, 237, 237, 237, - nil, 237, nil, nil, 61, 61, 61, 61, 61, 61, - nil, nil, nil, 61, 61, 62, 62, 62, 237, 62, - nil, nil, nil, 62, 62, nil, nil, nil, 62, nil, - 62, 62, 62, 62, 62, 62, 62, nil, nil, nil, - nil, 62, 62, 62, 62, 62, 62, 62, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 62, nil, nil, - 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, - nil, 62, 62, nil, nil, nil, 62, nil, 374, 374, - 374, 374, 374, 374, 374, 374, 374, 374, 374, nil, - 374, 374, nil, 62, 374, 374, 62, nil, nil, 62, - nil, nil, 62, 62, nil, nil, 62, nil, nil, nil, - 374, nil, 374, nil, 374, 374, 374, 374, 374, 374, - 374, nil, 374, nil, nil, 62, 62, 62, 62, 62, - 62, nil, nil, nil, 62, 62, 63, 63, 63, 374, - 63, nil, nil, nil, 63, 63, nil, nil, nil, 63, - nil, 63, 63, 63, 63, 63, 63, 63, nil, nil, - nil, nil, 63, 63, 63, 63, 63, 63, 63, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 63, nil, - nil, 63, 63, 63, 63, 63, 63, 63, 63, 63, - 63, nil, 63, 63, nil, nil, nil, 63, nil, 388, - 388, 388, 388, 388, 388, 388, 388, 388, 388, 388, - nil, 388, 388, nil, nil, 388, 388, 63, nil, nil, - 63, nil, nil, 63, 63, nil, nil, 63, nil, nil, - nil, 388, nil, 388, nil, 388, 388, 388, 388, 388, - 388, 388, nil, 388, nil, nil, 63, 63, 63, 63, - 63, 63, nil, nil, nil, 63, 63, 82, 82, 82, - 388, 82, nil, nil, nil, 82, 82, nil, nil, nil, - 82, nil, 82, 82, 82, 82, 82, 82, 82, nil, - 82, nil, nil, 82, 82, 82, 82, 82, 82, 82, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 82, - nil, nil, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, nil, 82, 82, nil, 82, 82, 82, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 82, nil, - nil, 82, 82, nil, 82, 82, nil, nil, 82, nil, - 82, nil, 82, nil, 82, nil, nil, nil, nil, nil, - nil, nil, 82, nil, 82, nil, nil, 82, 82, 82, - 82, 82, 82, nil, nil, nil, 82, 82, 86, 86, - 86, nil, 86, nil, nil, nil, 86, 86, nil, nil, - nil, 86, nil, 86, 86, 86, 86, 86, 86, 86, - nil, 86, nil, nil, 86, 86, 86, 86, 86, 86, - 86, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 86, nil, nil, 86, 86, 86, 86, 86, 86, 86, - 86, 86, 86, nil, 86, 86, nil, 86, 86, 86, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 86, - nil, nil, 86, 86, nil, 86, 86, nil, nil, 86, - nil, 86, nil, 86, nil, 86, nil, nil, nil, nil, - nil, nil, nil, 86, nil, 86, nil, nil, 86, 86, - 86, 86, 86, 86, nil, nil, nil, 86, 86, 101, - 101, 101, nil, 101, nil, nil, nil, 101, 101, nil, - nil, nil, 101, nil, 101, 101, 101, 101, 101, 101, - 101, nil, nil, nil, nil, 101, 101, 101, 101, 101, - 101, 101, nil, nil, 101, nil, nil, nil, nil, nil, - nil, 101, nil, nil, 101, 101, 101, 101, 101, 101, - 101, 101, 101, 101, nil, 101, 101, nil, 101, 101, - 101, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 101, nil, nil, 101, nil, nil, 101, 101, nil, nil, - 101, nil, nil, nil, nil, nil, 101, nil, nil, nil, - nil, nil, nil, nil, 101, nil, nil, nil, nil, 101, - 101, 101, 101, 101, 101, nil, nil, nil, 101, 101, - 102, 102, 102, nil, 102, nil, nil, nil, 102, 102, - nil, nil, nil, 102, nil, 102, 102, 102, 102, 102, - 102, 102, nil, nil, nil, nil, 102, 102, 102, 102, - 102, 102, 102, nil, nil, 102, nil, nil, nil, nil, - nil, nil, 102, nil, nil, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, nil, 102, 102, nil, 102, - 102, 102, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 102, nil, nil, 102, nil, nil, 102, 102, nil, - nil, 102, nil, nil, nil, nil, nil, 102, nil, nil, - nil, nil, nil, nil, nil, 102, nil, nil, nil, nil, - 102, 102, 102, 102, 102, 102, nil, nil, nil, 102, - 102, 103, 103, 103, nil, 103, nil, nil, nil, 103, - 103, nil, nil, nil, 103, nil, 103, 103, 103, 103, - 103, 103, 103, nil, nil, nil, nil, 103, 103, 103, - 103, 103, 103, 103, nil, nil, 103, nil, nil, nil, - nil, nil, nil, 103, nil, nil, 103, 103, 103, 103, - 103, 103, 103, 103, 103, 103, nil, 103, 103, nil, - 103, 103, 103, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 103, nil, nil, 103, nil, nil, 103, 103, - nil, nil, 103, nil, nil, nil, nil, nil, 103, nil, - nil, nil, nil, nil, nil, nil, 103, nil, nil, nil, - nil, 103, 103, 103, 103, 103, 103, nil, nil, nil, - 103, 103, 104, 104, 104, nil, 104, nil, nil, nil, - 104, 104, nil, nil, nil, 104, nil, 104, 104, 104, - 104, 104, 104, 104, nil, nil, nil, nil, 104, 104, - 104, 104, 104, 104, 104, nil, nil, 104, nil, nil, - nil, nil, nil, nil, 104, nil, nil, 104, 104, 104, - 104, 104, 104, 104, 104, 104, 104, nil, 104, 104, - nil, 104, 104, 104, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 104, nil, nil, 104, nil, nil, 104, - 104, nil, nil, 104, nil, nil, nil, nil, nil, 104, - nil, nil, nil, nil, nil, nil, nil, 104, nil, nil, - nil, nil, 104, 104, 104, 104, 104, 104, nil, nil, - nil, 104, 104, 105, 105, 105, 105, 105, nil, nil, - nil, 105, 105, nil, nil, nil, 105, nil, 105, 105, - 105, 105, 105, 105, 105, nil, nil, nil, nil, 105, - 105, 105, 105, 105, 105, 105, nil, nil, 105, nil, - nil, nil, nil, nil, 105, 105, 105, 105, 105, 105, - 105, 105, 105, 105, 105, 105, 105, 105, nil, 105, - 105, nil, 105, 105, 105, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 105, nil, nil, 105, nil, nil, - 105, 105, nil, nil, 105, nil, 105, nil, nil, nil, - 105, nil, nil, nil, nil, nil, nil, nil, 105, nil, - nil, nil, nil, 105, 105, 105, 105, 105, 105, nil, - nil, nil, 105, 105, 188, 188, 188, nil, 188, nil, - nil, nil, 188, 188, nil, nil, nil, 188, nil, 188, - 188, 188, 188, 188, 188, 188, nil, nil, nil, nil, - 188, 188, 188, 188, 188, 188, 188, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 188, nil, nil, 188, - 188, 188, 188, 188, 188, 188, 188, 188, 188, nil, - 188, 188, nil, 188, 188, 188, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 188, nil, nil, 188, nil, - nil, 188, 188, nil, nil, 188, nil, 188, nil, nil, - nil, 188, nil, nil, nil, nil, nil, nil, nil, 188, - nil, nil, nil, nil, 188, 188, 188, 188, 188, 188, - nil, nil, nil, 188, 188, 189, 189, 189, nil, 189, - nil, nil, nil, 189, 189, nil, nil, nil, 189, nil, - 189, 189, 189, 189, 189, 189, 189, nil, nil, nil, - nil, 189, 189, 189, 189, 189, 189, 189, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 189, nil, nil, - 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, - nil, 189, 189, nil, 189, 189, 189, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 189, nil, nil, 189, - nil, nil, 189, 189, nil, nil, 189, nil, 189, nil, - nil, nil, 189, nil, nil, nil, nil, nil, nil, nil, - 189, nil, nil, nil, nil, 189, 189, 189, 189, 189, - 189, nil, nil, nil, 189, 189, 190, 190, 190, nil, - 190, nil, nil, nil, 190, 190, nil, nil, nil, 190, - nil, 190, 190, 190, 190, 190, 190, 190, nil, nil, - nil, nil, 190, 190, 190, 190, 190, 190, 190, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 190, nil, - nil, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, nil, 190, 190, nil, 190, 190, 190, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 190, nil, nil, - 190, nil, nil, 190, 190, nil, nil, 190, nil, nil, - nil, nil, nil, 190, nil, nil, nil, nil, nil, nil, - nil, 190, nil, nil, nil, nil, 190, 190, 190, 190, - 190, 190, nil, nil, nil, 190, 190, 191, 191, 191, - nil, 191, nil, nil, nil, 191, 191, nil, nil, nil, - 191, nil, 191, 191, 191, 191, 191, 191, 191, nil, - nil, nil, nil, 191, 191, 191, 191, 191, 191, 191, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 191, - nil, nil, 191, 191, 191, 191, 191, 191, 191, 191, - 191, 191, nil, 191, 191, nil, 191, 191, 191, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 191, nil, - nil, 191, nil, nil, 191, 191, nil, nil, 191, nil, - 191, nil, nil, nil, 191, nil, nil, nil, nil, nil, - nil, nil, 191, nil, nil, nil, nil, 191, 191, 191, - 191, 191, 191, nil, nil, nil, 191, 191, 194, 194, - 194, nil, 194, nil, nil, nil, 194, 194, nil, nil, - nil, 194, nil, 194, 194, 194, 194, 194, 194, 194, - nil, nil, nil, nil, 194, 194, 194, 194, 194, 194, - 194, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 194, nil, nil, 194, 194, 194, 194, 194, 194, 194, - 194, 194, 194, nil, 194, 194, nil, 194, 194, 194, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 194, - nil, nil, 194, nil, nil, 194, 194, nil, nil, 194, - nil, nil, nil, nil, nil, 194, nil, nil, nil, nil, - nil, nil, nil, 194, nil, nil, nil, nil, 194, 194, - 194, 194, 194, 194, nil, nil, nil, 194, 194, 195, - 195, 195, nil, 195, nil, nil, nil, 195, 195, nil, - nil, nil, 195, nil, 195, 195, 195, 195, 195, 195, - 195, nil, nil, nil, nil, 195, 195, 195, 195, 195, - 195, 195, nil, nil, 195, nil, nil, nil, nil, nil, - nil, 195, nil, nil, 195, 195, 195, 195, 195, 195, - 195, 195, 195, 195, nil, 195, 195, nil, 195, 195, - 195, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 195, nil, nil, 195, nil, nil, 195, 195, nil, nil, - 195, nil, nil, nil, nil, nil, 195, nil, nil, nil, - nil, nil, nil, nil, 195, nil, nil, nil, nil, 195, - 195, 195, 195, 195, 195, nil, nil, nil, 195, 195, - 196, 196, 196, nil, 196, nil, nil, nil, 196, 196, - nil, nil, nil, 196, nil, 196, 196, 196, 196, 196, - 196, 196, nil, nil, nil, nil, 196, 196, 196, 196, - 196, 196, 196, nil, nil, 196, nil, nil, nil, nil, - nil, nil, 196, nil, nil, 196, 196, 196, 196, 196, - 196, 196, 196, 196, 196, nil, 196, 196, nil, 196, - 196, 196, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 196, nil, nil, 196, nil, nil, 196, 196, nil, - nil, 196, nil, nil, nil, nil, nil, 196, nil, nil, - nil, nil, nil, nil, nil, 196, nil, nil, nil, nil, - 196, 196, 196, 196, 196, 196, nil, nil, nil, 196, - 196, 207, 207, 207, nil, 207, nil, nil, nil, 207, - 207, nil, nil, nil, 207, nil, 207, 207, 207, 207, - 207, 207, 207, nil, nil, nil, nil, 207, 207, 207, - 207, 207, 207, 207, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 207, nil, nil, 207, 207, 207, 207, - 207, 207, 207, 207, 207, 207, nil, 207, 207, nil, - 207, 207, 207, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 207, nil, nil, 207, nil, nil, 207, 207, - nil, nil, 207, nil, nil, nil, nil, nil, 207, nil, - nil, nil, nil, nil, nil, nil, 207, nil, nil, nil, - nil, 207, 207, 207, 207, 207, 207, nil, nil, nil, - 207, 207, 208, 208, 208, nil, 208, nil, nil, nil, - 208, 208, nil, nil, nil, 208, nil, 208, 208, 208, - 208, 208, 208, 208, nil, nil, nil, nil, 208, 208, - 208, 208, 208, 208, 208, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 208, nil, nil, 208, 208, 208, - 208, 208, 208, 208, 208, 208, 208, nil, 208, 208, - nil, 208, 208, 208, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 208, nil, nil, 208, nil, nil, 208, - 208, nil, nil, 208, nil, nil, nil, nil, nil, 208, - nil, nil, nil, nil, nil, nil, nil, 208, nil, nil, - nil, nil, 208, 208, 208, 208, 208, 208, nil, nil, - nil, 208, 208, 209, 209, 209, nil, 209, nil, nil, - nil, 209, 209, nil, nil, nil, 209, nil, 209, 209, - 209, 209, 209, 209, 209, nil, nil, nil, nil, 209, - 209, 209, 209, 209, 209, 209, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 209, nil, nil, 209, 209, - 209, 209, 209, 209, 209, 209, 209, 209, nil, 209, - 209, nil, 209, 209, 209, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 209, nil, nil, 209, nil, nil, - 209, 209, nil, nil, 209, nil, nil, nil, nil, nil, - 209, nil, nil, nil, nil, nil, nil, nil, 209, nil, - nil, nil, nil, 209, 209, 209, 209, 209, 209, nil, - nil, nil, 209, 209, 210, 210, 210, nil, 210, nil, - nil, nil, 210, 210, nil, nil, nil, 210, nil, 210, - 210, 210, 210, 210, 210, 210, nil, nil, nil, nil, - 210, 210, 210, 210, 210, 210, 210, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 210, nil, nil, 210, - 210, 210, 210, 210, 210, 210, 210, 210, 210, nil, - 210, 210, nil, 210, 210, 210, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 210, nil, nil, 210, nil, - nil, 210, 210, nil, nil, 210, nil, nil, nil, nil, - nil, 210, nil, nil, nil, nil, nil, nil, nil, 210, - nil, nil, nil, nil, 210, 210, 210, 210, 210, 210, - nil, nil, nil, 210, 210, 211, 211, 211, nil, 211, - nil, nil, nil, 211, 211, nil, nil, nil, 211, nil, - 211, 211, 211, 211, 211, 211, 211, nil, nil, nil, - nil, 211, 211, 211, 211, 211, 211, 211, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 211, nil, nil, - 211, 211, 211, 211, 211, 211, 211, 211, 211, 211, - nil, 211, 211, nil, 211, 211, 211, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 211, nil, nil, 211, - nil, nil, 211, 211, nil, nil, 211, nil, nil, nil, - nil, nil, 211, nil, nil, nil, nil, nil, nil, nil, - 211, nil, nil, nil, nil, 211, 211, 211, 211, 211, - 211, nil, nil, nil, 211, 211, 212, 212, 212, nil, - 212, nil, nil, nil, 212, 212, nil, nil, nil, 212, - nil, 212, 212, 212, 212, 212, 212, 212, nil, nil, - nil, nil, 212, 212, 212, 212, 212, 212, 212, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 212, nil, - nil, 212, 212, 212, 212, 212, 212, 212, 212, 212, - 212, nil, 212, 212, nil, 212, 212, 212, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 212, nil, nil, - 212, nil, nil, 212, 212, nil, nil, 212, nil, nil, - nil, nil, nil, 212, nil, nil, nil, nil, nil, nil, - nil, 212, nil, nil, nil, nil, 212, 212, 212, 212, - 212, 212, nil, nil, nil, 212, 212, 213, 213, 213, - nil, 213, nil, nil, nil, 213, 213, nil, nil, nil, - 213, nil, 213, 213, 213, 213, 213, 213, 213, nil, - nil, nil, nil, 213, 213, 213, 213, 213, 213, 213, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 213, - nil, nil, 213, 213, 213, 213, 213, 213, 213, 213, - 213, 213, nil, 213, 213, nil, 213, 213, 213, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 213, nil, - nil, 213, nil, nil, 213, 213, nil, nil, 213, nil, - nil, nil, nil, nil, 213, nil, nil, nil, nil, nil, - nil, nil, 213, nil, nil, nil, nil, 213, 213, 213, - 213, 213, 213, nil, nil, nil, 213, 213, 214, 214, - 214, nil, 214, nil, nil, nil, 214, 214, nil, nil, - nil, 214, nil, 214, 214, 214, 214, 214, 214, 214, - nil, nil, nil, nil, 214, 214, 214, 214, 214, 214, - 214, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 214, nil, nil, 214, 214, 214, 214, 214, 214, 214, - 214, 214, 214, nil, 214, 214, nil, 214, 214, 214, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 214, - nil, nil, 214, nil, nil, 214, 214, nil, nil, 214, - nil, nil, nil, nil, nil, 214, nil, nil, nil, nil, - nil, nil, nil, 214, nil, nil, nil, nil, 214, 214, - 214, 214, 214, 214, nil, nil, nil, 214, 214, 215, - 215, 215, nil, 215, nil, nil, nil, 215, 215, nil, - nil, nil, 215, nil, 215, 215, 215, 215, 215, 215, - 215, nil, nil, nil, nil, 215, 215, 215, 215, 215, - 215, 215, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 215, nil, nil, 215, 215, 215, 215, 215, 215, - 215, 215, 215, 215, nil, 215, 215, nil, 215, 215, - 215, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 215, nil, nil, 215, nil, nil, 215, 215, nil, nil, - 215, nil, nil, nil, nil, nil, 215, nil, nil, nil, - nil, nil, nil, nil, 215, nil, nil, nil, nil, 215, - 215, 215, 215, 215, 215, nil, nil, nil, 215, 215, - 216, 216, 216, nil, 216, nil, nil, nil, 216, 216, - nil, nil, nil, 216, nil, 216, 216, 216, 216, 216, - 216, 216, nil, nil, nil, nil, 216, 216, 216, 216, - 216, 216, 216, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 216, nil, nil, 216, 216, 216, 216, 216, - 216, 216, 216, 216, 216, nil, 216, 216, nil, 216, - 216, 216, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 216, nil, nil, 216, nil, nil, 216, 216, nil, - nil, 216, nil, nil, nil, nil, nil, 216, nil, nil, - nil, nil, nil, nil, nil, 216, nil, nil, nil, nil, - 216, 216, 216, 216, 216, 216, nil, nil, nil, 216, - 216, 217, 217, 217, nil, 217, nil, nil, nil, 217, - 217, nil, nil, nil, 217, nil, 217, 217, 217, 217, - 217, 217, 217, nil, nil, nil, nil, 217, 217, 217, - 217, 217, 217, 217, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 217, nil, nil, 217, 217, 217, 217, - 217, 217, 217, 217, 217, 217, nil, 217, 217, nil, - 217, 217, 217, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 217, nil, nil, 217, nil, nil, 217, 217, - nil, nil, 217, nil, nil, nil, nil, nil, 217, nil, - nil, nil, nil, nil, nil, nil, 217, nil, nil, nil, - nil, 217, 217, 217, 217, 217, 217, nil, nil, nil, - 217, 217, 218, 218, 218, nil, 218, nil, nil, nil, - 218, 218, nil, nil, nil, 218, nil, 218, 218, 218, - 218, 218, 218, 218, nil, nil, nil, nil, 218, 218, - 218, 218, 218, 218, 218, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 218, nil, nil, 218, 218, 218, - 218, 218, 218, 218, 218, 218, 218, nil, 218, 218, - nil, 218, 218, 218, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 218, nil, nil, 218, nil, nil, 218, - 218, nil, nil, 218, nil, nil, nil, nil, nil, 218, - nil, nil, nil, nil, nil, nil, nil, 218, nil, nil, - nil, nil, 218, 218, 218, 218, 218, 218, nil, nil, - nil, 218, 218, 219, 219, 219, nil, 219, nil, nil, - nil, 219, 219, nil, nil, nil, 219, nil, 219, 219, - 219, 219, 219, 219, 219, nil, nil, nil, nil, 219, - 219, 219, 219, 219, 219, 219, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 219, nil, nil, 219, 219, - 219, 219, 219, 219, 219, 219, 219, 219, nil, 219, - 219, nil, 219, 219, 219, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 219, nil, nil, 219, nil, nil, - 219, 219, nil, nil, 219, nil, nil, nil, nil, nil, - 219, nil, nil, nil, nil, nil, nil, nil, 219, nil, - nil, nil, nil, 219, 219, 219, 219, 219, 219, nil, - nil, nil, 219, 219, 220, 220, 220, nil, 220, nil, - nil, nil, 220, 220, nil, nil, nil, 220, nil, 220, - 220, 220, 220, 220, 220, 220, nil, nil, nil, nil, - 220, 220, 220, 220, 220, 220, 220, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 220, nil, nil, 220, - 220, 220, 220, 220, 220, 220, 220, 220, 220, nil, - 220, 220, nil, 220, 220, 220, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 220, nil, nil, 220, nil, - nil, 220, 220, nil, nil, 220, nil, nil, nil, nil, - nil, 220, nil, nil, nil, nil, nil, nil, nil, 220, - nil, nil, nil, nil, 220, 220, 220, 220, 220, 220, - nil, nil, nil, 220, 220, 221, 221, 221, nil, 221, - nil, nil, nil, 221, 221, nil, nil, nil, 221, nil, - 221, 221, 221, 221, 221, 221, 221, nil, nil, nil, - nil, 221, 221, 221, 221, 221, 221, 221, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 221, nil, nil, - 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, - nil, 221, 221, nil, 221, 221, 221, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 221, nil, nil, 221, - nil, nil, 221, 221, nil, nil, 221, nil, nil, nil, - nil, nil, 221, nil, nil, nil, nil, nil, nil, nil, - 221, nil, nil, nil, nil, 221, 221, 221, 221, 221, - 221, nil, nil, nil, 221, 221, 222, 222, 222, nil, - 222, nil, nil, nil, 222, 222, nil, nil, nil, 222, - nil, 222, 222, 222, 222, 222, 222, 222, nil, nil, - nil, nil, 222, 222, 222, 222, 222, 222, 222, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 222, nil, - nil, 222, 222, 222, 222, 222, 222, 222, 222, 222, - 222, nil, 222, 222, nil, 222, 222, 222, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 222, nil, nil, - 222, nil, nil, 222, 222, nil, nil, 222, nil, nil, - nil, nil, nil, 222, nil, nil, nil, nil, nil, nil, - nil, 222, nil, nil, nil, nil, 222, 222, 222, 222, - 222, 222, nil, nil, nil, 222, 222, 223, 223, 223, - nil, 223, nil, nil, nil, 223, 223, nil, nil, nil, - 223, nil, 223, 223, 223, 223, 223, 223, 223, nil, - nil, nil, nil, 223, 223, 223, 223, 223, 223, 223, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 223, - nil, nil, 223, 223, 223, 223, 223, 223, 223, 223, - 223, 223, nil, 223, 223, nil, 223, 223, 223, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 223, nil, - nil, 223, nil, nil, 223, 223, nil, nil, 223, nil, - nil, nil, nil, nil, 223, nil, nil, nil, nil, nil, - nil, nil, 223, nil, nil, nil, nil, 223, 223, 223, - 223, 223, 223, nil, nil, nil, 223, 223, 224, 224, - 224, nil, 224, nil, nil, nil, 224, 224, nil, nil, - nil, 224, nil, 224, 224, 224, 224, 224, 224, 224, - nil, nil, nil, nil, 224, 224, 224, 224, 224, 224, - 224, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 224, nil, nil, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 224, nil, 224, 224, nil, 224, 224, 224, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 224, - nil, nil, 224, nil, nil, 224, 224, nil, nil, 224, - nil, nil, nil, nil, nil, 224, nil, nil, nil, nil, - nil, nil, nil, 224, nil, nil, nil, nil, 224, 224, - 224, 224, 224, 224, nil, nil, nil, 224, 224, 225, - 225, 225, nil, 225, nil, nil, nil, 225, 225, nil, - nil, nil, 225, nil, 225, 225, 225, 225, 225, 225, - 225, nil, nil, nil, nil, 225, 225, 225, 225, 225, - 225, 225, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 225, nil, nil, 225, 225, 225, 225, 225, 225, - 225, 225, 225, 225, nil, 225, 225, nil, 225, 225, - 225, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 225, nil, nil, 225, nil, nil, 225, 225, nil, nil, - 225, nil, nil, nil, nil, nil, 225, nil, nil, nil, - nil, nil, nil, nil, 225, nil, nil, nil, nil, 225, - 225, 225, 225, 225, 225, nil, nil, nil, 225, 225, - 226, 226, 226, nil, 226, nil, nil, nil, 226, 226, - nil, nil, nil, 226, nil, 226, 226, 226, 226, 226, - 226, 226, nil, nil, nil, nil, 226, 226, 226, 226, - 226, 226, 226, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 226, nil, nil, 226, 226, 226, 226, 226, - 226, 226, 226, 226, 226, nil, 226, 226, nil, 226, - 226, 226, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 226, nil, nil, 226, nil, nil, 226, 226, nil, - nil, 226, nil, nil, nil, nil, nil, 226, nil, nil, - nil, nil, nil, nil, nil, 226, nil, nil, nil, nil, - 226, 226, 226, 226, 226, 226, nil, nil, nil, 226, - 226, 227, 227, 227, nil, 227, nil, nil, nil, 227, - 227, nil, nil, nil, 227, nil, 227, 227, 227, 227, - 227, 227, 227, nil, nil, nil, nil, 227, 227, 227, - 227, 227, 227, 227, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 227, nil, nil, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, nil, 227, 227, nil, - 227, 227, 227, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 227, nil, nil, 227, nil, nil, 227, 227, - nil, nil, 227, nil, nil, nil, nil, nil, 227, nil, - nil, nil, nil, nil, nil, nil, 227, nil, nil, nil, - nil, 227, 227, 227, 227, 227, 227, nil, nil, nil, - 227, 227, 228, 228, 228, nil, 228, nil, nil, nil, - 228, 228, nil, nil, nil, 228, nil, 228, 228, 228, - 228, 228, 228, 228, nil, nil, nil, nil, 228, 228, - 228, 228, 228, 228, 228, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 228, nil, nil, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, nil, 228, 228, - nil, 228, 228, 228, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 228, nil, nil, 228, nil, nil, 228, - 228, nil, nil, 228, nil, nil, nil, nil, nil, 228, - nil, nil, nil, nil, nil, nil, nil, 228, nil, nil, - nil, nil, 228, 228, 228, 228, 228, 228, nil, nil, - nil, 228, 228, 229, 229, 229, nil, 229, nil, nil, - nil, 229, 229, nil, nil, nil, 229, nil, 229, 229, - 229, 229, 229, 229, 229, nil, nil, nil, nil, 229, - 229, 229, 229, 229, 229, 229, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 229, nil, nil, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 229, nil, 229, - 229, nil, 229, 229, 229, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 229, nil, nil, 229, nil, nil, - 229, 229, nil, nil, 229, nil, nil, nil, nil, nil, - 229, nil, nil, nil, nil, nil, nil, nil, 229, nil, - nil, nil, nil, 229, 229, 229, 229, 229, 229, nil, - nil, nil, 229, 229, 230, 230, 230, nil, 230, nil, - nil, nil, 230, 230, nil, nil, nil, 230, nil, 230, - 230, 230, 230, 230, 230, 230, nil, nil, nil, nil, - 230, 230, 230, 230, 230, 230, 230, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 230, nil, nil, 230, - 230, 230, 230, 230, 230, 230, 230, 230, 230, nil, - 230, 230, nil, 230, 230, 230, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 230, nil, nil, 230, nil, - nil, 230, 230, nil, nil, 230, nil, nil, nil, nil, - nil, 230, nil, nil, nil, nil, nil, nil, nil, 230, - nil, nil, nil, nil, 230, 230, 230, 230, 230, 230, - nil, nil, nil, 230, 230, 231, 231, 231, nil, 231, - nil, nil, nil, 231, 231, nil, nil, nil, 231, nil, - 231, 231, 231, 231, 231, 231, 231, nil, nil, nil, - nil, 231, 231, 231, 231, 231, 231, 231, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 231, nil, nil, - 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, - nil, 231, 231, nil, 231, 231, 231, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 231, nil, nil, 231, - nil, nil, 231, 231, nil, nil, 231, nil, nil, nil, - nil, nil, 231, nil, nil, nil, nil, nil, nil, nil, - 231, nil, nil, nil, nil, 231, 231, 231, 231, 231, - 231, nil, nil, nil, 231, 231, 232, 232, 232, nil, - 232, nil, nil, nil, 232, 232, nil, nil, nil, 232, - nil, 232, 232, 232, 232, 232, 232, 232, nil, nil, - nil, nil, 232, 232, 232, 232, 232, 232, 232, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 232, nil, - nil, 232, 232, 232, 232, 232, 232, 232, 232, 232, - 232, nil, 232, 232, nil, 232, 232, 232, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 232, nil, nil, - 232, nil, nil, 232, 232, nil, nil, 232, nil, nil, - nil, nil, nil, 232, nil, nil, nil, nil, nil, nil, - nil, 232, nil, nil, nil, nil, 232, 232, 232, 232, - 232, 232, nil, nil, nil, 232, 232, 233, 233, 233, - nil, 233, nil, nil, nil, 233, 233, nil, nil, nil, - 233, nil, 233, 233, 233, 233, 233, 233, 233, nil, - nil, nil, nil, 233, 233, 233, 233, 233, 233, 233, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 233, - nil, nil, 233, 233, 233, 233, 233, 233, 233, 233, - 233, 233, nil, 233, 233, nil, 233, 233, 233, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 233, nil, - nil, 233, nil, nil, 233, 233, nil, nil, 233, nil, - nil, nil, nil, nil, 233, nil, nil, nil, nil, nil, - nil, nil, 233, nil, nil, nil, nil, 233, 233, 233, - 233, 233, 233, nil, nil, nil, 233, 233, 241, 241, - 241, nil, 241, nil, nil, nil, 241, 241, nil, nil, - nil, 241, nil, 241, 241, 241, 241, 241, 241, 241, - nil, nil, nil, nil, 241, 241, 241, 241, 241, 241, - 241, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 241, nil, nil, 241, 241, 241, 241, 241, 241, 241, - 241, 241, 241, nil, 241, 241, nil, 241, 241, 241, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 241, - nil, nil, 241, nil, nil, 241, 241, nil, nil, 241, - nil, nil, nil, nil, nil, 241, nil, nil, nil, nil, - nil, nil, nil, 241, nil, nil, nil, nil, 241, 241, - 241, 241, 241, 241, nil, nil, nil, 241, 241, 243, - 243, 243, nil, 243, nil, nil, nil, 243, 243, nil, - nil, nil, 243, nil, 243, 243, 243, 243, 243, 243, - 243, nil, nil, nil, nil, 243, 243, 243, 243, 243, - 243, 243, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 243, nil, nil, 243, 243, 243, 243, 243, 243, - 243, 243, 243, 243, nil, 243, 243, nil, 243, 243, - 243, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 243, nil, nil, 243, nil, nil, 243, 243, nil, nil, - 243, nil, nil, nil, nil, nil, 243, nil, nil, nil, - nil, nil, nil, nil, 243, nil, nil, nil, nil, 243, - 243, 243, 243, 243, 243, nil, nil, nil, 243, 243, - 254, 254, 254, nil, 254, nil, nil, nil, 254, 254, - nil, nil, nil, 254, nil, 254, 254, 254, 254, 254, - 254, 254, nil, nil, nil, nil, 254, 254, 254, 254, - 254, 254, 254, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 254, nil, nil, 254, 254, 254, 254, 254, - 254, 254, 254, 254, 254, nil, 254, 254, nil, 254, - 254, 254, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 254, nil, nil, 254, nil, nil, 254, 254, nil, - nil, 254, nil, 254, nil, 254, nil, 254, nil, nil, - nil, nil, nil, nil, nil, 254, nil, nil, nil, nil, - 254, 254, 254, 254, 254, 254, nil, nil, nil, 254, - 254, 255, 255, 255, nil, 255, nil, nil, nil, 255, - 255, nil, nil, nil, 255, nil, 255, 255, 255, 255, - 255, 255, 255, nil, nil, nil, nil, 255, 255, 255, - 255, 255, 255, 255, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 255, nil, nil, 255, 255, 255, 255, - 255, 255, 255, 255, 255, 255, nil, 255, 255, nil, - 255, 255, 255, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 255, nil, nil, 255, nil, nil, 255, 255, - nil, nil, 255, nil, 255, nil, 255, nil, 255, nil, - nil, nil, nil, nil, nil, nil, 255, nil, nil, nil, - nil, 255, 255, 255, 255, 255, 255, nil, nil, nil, - 255, 255, 263, 263, 263, nil, 263, nil, nil, nil, - 263, 263, nil, nil, nil, 263, nil, 263, 263, 263, - 263, 263, 263, 263, nil, nil, nil, nil, 263, 263, - 263, 263, 263, 263, 263, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 263, nil, nil, 263, 263, 263, - 263, 263, 263, 263, 263, 263, 263, nil, 263, 263, - nil, 263, 263, 263, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 263, nil, nil, 263, nil, 263, 263, - 263, nil, nil, 263, nil, 263, nil, 263, nil, 263, - nil, nil, nil, nil, nil, nil, nil, 263, nil, nil, - nil, nil, 263, 263, 263, 263, 263, 263, nil, nil, - nil, 263, 263, 269, 269, 269, nil, 269, nil, nil, - nil, 269, 269, nil, nil, nil, 269, nil, 269, 269, - 269, 269, 269, 269, 269, nil, nil, nil, nil, 269, - 269, 269, 269, 269, 269, 269, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 269, nil, nil, 269, 269, - 269, 269, 269, 269, 269, 269, 269, 269, nil, 269, - 269, nil, nil, nil, 269, nil, 468, 468, 468, 468, - 468, 468, 468, 468, 468, 468, 468, nil, 468, 468, - nil, nil, 468, 468, 269, nil, nil, 269, nil, nil, - 269, 269, nil, nil, 269, nil, nil, nil, 468, nil, - 468, nil, 468, 468, 468, 468, 468, 468, 468, nil, - 468, nil, nil, 269, 269, 269, 269, 269, 269, nil, - nil, nil, 269, 269, 290, 290, 290, 468, 290, nil, - nil, nil, 290, 290, nil, nil, nil, 290, nil, 290, - 290, 290, 290, 290, 290, 290, nil, nil, nil, nil, - 290, 290, 290, 290, 290, 290, 290, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 290, nil, nil, 290, - 290, 290, 290, 290, 290, 290, 290, 290, 290, nil, - 290, 290, nil, 290, 290, 290, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 290, nil, nil, 290, 290, - nil, 290, 290, nil, nil, 290, nil, nil, nil, nil, - nil, 290, nil, nil, nil, nil, nil, nil, nil, 290, - nil, nil, nil, nil, 290, 290, 290, 290, 290, 290, - nil, nil, nil, 290, 290, 299, 299, 299, nil, 299, - nil, nil, nil, 299, 299, nil, nil, nil, 299, nil, - 299, 299, 299, 299, 299, 299, 299, nil, nil, nil, - nil, 299, 299, 299, 299, 299, 299, 299, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 299, nil, nil, - 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, - nil, 299, 299, nil, 299, 299, 299, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 299, nil, nil, 299, - nil, nil, 299, 299, nil, nil, 299, nil, nil, nil, - nil, nil, 299, nil, nil, nil, nil, nil, nil, nil, - 299, nil, nil, nil, nil, 299, 299, 299, 299, 299, - 299, nil, nil, nil, 299, 299, 308, 308, 308, nil, - 308, nil, nil, nil, 308, 308, nil, nil, nil, 308, - nil, 308, 308, 308, 308, 308, 308, 308, nil, nil, - nil, nil, 308, 308, 308, 308, 308, 308, 308, nil, - nil, 308, nil, nil, nil, nil, nil, nil, 308, nil, - nil, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, nil, 308, 308, nil, 308, 308, 308, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 308, nil, nil, - 308, nil, nil, 308, 308, nil, nil, 308, nil, nil, - nil, nil, nil, 308, nil, nil, nil, nil, nil, nil, - nil, 308, nil, nil, nil, nil, 308, 308, 308, 308, - 308, 308, nil, nil, nil, 308, 308, 309, 309, 309, - nil, 309, nil, nil, nil, 309, 309, nil, nil, nil, - 309, nil, 309, 309, 309, 309, 309, 309, 309, nil, - nil, nil, nil, 309, 309, 309, 309, 309, 309, 309, - nil, nil, 309, nil, nil, nil, nil, nil, nil, 309, - nil, nil, 309, 309, 309, 309, 309, 309, 309, 309, - 309, 309, nil, 309, 309, nil, 309, 309, 309, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 309, nil, - nil, 309, nil, nil, 309, 309, nil, nil, 309, nil, - nil, nil, nil, nil, 309, nil, nil, nil, nil, nil, - nil, nil, 309, nil, nil, nil, nil, 309, 309, 309, - 309, 309, 309, nil, nil, nil, 309, 309, 327, 327, - 327, nil, 327, nil, nil, nil, 327, 327, nil, nil, - nil, 327, nil, 327, 327, 327, 327, 327, 327, 327, - nil, nil, nil, nil, 327, 327, 327, 327, 327, 327, - 327, nil, nil, 327, nil, nil, nil, nil, nil, nil, - 327, nil, nil, 327, 327, 327, 327, 327, 327, 327, - 327, 327, 327, nil, 327, 327, nil, 327, 327, 327, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 327, - nil, nil, 327, nil, nil, 327, 327, nil, nil, 327, - nil, nil, nil, nil, nil, 327, nil, nil, nil, nil, - nil, nil, nil, 327, nil, nil, nil, nil, 327, 327, - 327, 327, 327, 327, nil, nil, nil, 327, 327, 341, - 341, 341, nil, 341, nil, nil, nil, 341, 341, nil, - nil, nil, 341, nil, 341, 341, 341, 341, 341, 341, - 341, nil, nil, nil, nil, 341, 341, 341, 341, 341, - 341, 341, nil, nil, 341, nil, nil, nil, nil, nil, - nil, 341, nil, nil, 341, 341, 341, 341, 341, 341, - 341, 341, 341, 341, nil, 341, 341, nil, 341, 341, - 341, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 341, nil, nil, 341, nil, nil, 341, 341, nil, nil, - 341, nil, nil, nil, nil, nil, 341, nil, nil, nil, - nil, nil, nil, nil, 341, nil, nil, nil, nil, 341, - 341, 341, 341, 341, 341, nil, nil, nil, 341, 341, - 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, - 357, 357, 357, 357, 357, 357, 357, 357, 357, 357, - 357, 357, 357, 357, nil, nil, 357, 357, 357, 357, - 357, 357, 357, 357, 357, 357, nil, nil, nil, nil, - nil, 357, 357, 357, 357, 357, 357, 357, 357, nil, - nil, 357, nil, nil, nil, nil, nil, nil, nil, 357, - 357, nil, 357, 357, 357, 357, nil, 357, 357, nil, - nil, 357, nil, nil, nil, nil, 357, 357, 357, 357, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 357, 357, nil, 357, 357, 357, 357, - 357, 357, 357, 357, 357, nil, 357, nil, nil, 357, - 357, nil, nil, 369, 369, 369, nil, 369, nil, nil, - 357, 369, 369, nil, nil, nil, 369, nil, 369, 369, - 369, 369, 369, 369, 369, nil, nil, nil, nil, 369, - 369, 369, 369, 369, 369, 369, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 369, nil, nil, 369, 369, - 369, 369, 369, 369, 369, 369, 369, 369, nil, 369, - 369, nil, 369, 369, 369, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 369, nil, nil, 369, nil, nil, - 369, 369, nil, nil, 369, nil, nil, nil, nil, nil, - 369, nil, nil, nil, nil, nil, nil, nil, 369, nil, - nil, nil, nil, 369, 369, 369, 369, 369, 369, nil, - nil, nil, 369, 369, 378, 378, 378, nil, 378, nil, - nil, nil, 378, 378, nil, nil, nil, 378, nil, 378, - 378, 378, 378, 378, 378, 378, nil, nil, nil, nil, - 378, 378, 378, 378, 378, 378, 378, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 378, nil, nil, 378, - 378, 378, 378, 378, 378, 378, 378, 378, 378, nil, - 378, 378, nil, 378, 378, 378, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 378, nil, nil, 378, 378, - nil, 378, 378, nil, nil, 378, nil, 378, nil, 378, - nil, 378, nil, nil, nil, nil, nil, nil, nil, 378, - nil, nil, nil, nil, 378, 378, 378, 378, 378, 378, - nil, nil, nil, 378, 378, 385, 385, 385, nil, 385, - nil, nil, nil, 385, 385, nil, nil, nil, 385, nil, - 385, 385, 385, 385, 385, 385, 385, nil, nil, nil, - nil, 385, 385, 385, 385, 385, 385, 385, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 385, nil, nil, - 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, - nil, 385, 385, nil, 385, 385, 385, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 385, nil, nil, 385, - 385, nil, 385, 385, nil, nil, 385, nil, 385, nil, - 385, nil, 385, nil, nil, nil, nil, nil, nil, nil, - 385, nil, nil, nil, nil, 385, 385, 385, 385, 385, - 385, nil, nil, nil, 385, 385, 386, 386, 386, nil, - 386, nil, nil, nil, 386, 386, nil, nil, nil, 386, - nil, 386, 386, 386, 386, 386, 386, 386, nil, nil, - nil, nil, 386, 386, 386, 386, 386, 386, 386, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 386, nil, - nil, 386, 386, 386, 386, 386, 386, 386, 386, 386, - 386, nil, 386, 386, nil, 386, 386, 386, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 386, nil, nil, - 386, 386, nil, 386, 386, nil, nil, 386, nil, 386, - nil, 386, nil, 386, nil, nil, nil, nil, nil, nil, - nil, 386, nil, nil, nil, nil, 386, 386, 386, 386, - 386, 386, nil, nil, nil, 386, 386, 393, 393, 393, - nil, 393, nil, nil, nil, 393, 393, nil, nil, nil, - 393, nil, 393, 393, 393, 393, 393, 393, 393, nil, - nil, nil, nil, 393, 393, 393, 393, 393, 393, 393, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 393, - nil, nil, 393, 393, 393, 393, 393, 393, 393, 393, - 393, 393, nil, 393, 393, nil, 393, 393, 393, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 393, nil, - nil, 393, nil, nil, 393, 393, nil, nil, 393, nil, - 393, nil, nil, nil, 393, nil, nil, nil, nil, nil, - nil, nil, 393, nil, nil, nil, nil, 393, 393, 393, - 393, 393, 393, nil, nil, nil, 393, 393, 395, 395, - 395, nil, 395, nil, nil, nil, 395, 395, nil, nil, - nil, 395, nil, 395, 395, 395, 395, 395, 395, 395, - nil, nil, nil, nil, 395, 395, 395, 395, 395, 395, - 395, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 395, nil, nil, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, nil, 395, 395, nil, 395, 395, 395, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 395, - nil, nil, 395, nil, nil, 395, 395, nil, nil, 395, - nil, nil, nil, nil, nil, 395, nil, nil, nil, nil, - nil, nil, nil, 395, nil, nil, nil, nil, 395, 395, - 395, 395, 395, 395, nil, nil, nil, 395, 395, 396, - 396, 396, nil, 396, nil, nil, nil, 396, 396, nil, - nil, nil, 396, nil, 396, 396, 396, 396, 396, 396, - 396, nil, nil, nil, nil, 396, 396, 396, 396, 396, - 396, 396, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 396, nil, nil, 396, 396, 396, 396, 396, 396, - 396, 396, 396, 396, nil, 396, 396, nil, 396, 396, - 396, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 396, nil, nil, 396, nil, nil, 396, 396, nil, nil, - 396, nil, nil, nil, nil, nil, 396, nil, nil, nil, - nil, nil, nil, nil, 396, nil, nil, nil, nil, 396, - 396, 396, 396, 396, 396, nil, nil, nil, 396, 396, - 397, 397, 397, nil, 397, nil, nil, nil, 397, 397, - nil, nil, nil, 397, nil, 397, 397, 397, 397, 397, - 397, 397, nil, nil, nil, nil, 397, 397, 397, 397, - 397, 397, 397, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 397, nil, nil, 397, 397, 397, 397, 397, - 397, 397, 397, 397, 397, nil, 397, 397, nil, 397, - 397, 397, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 397, nil, nil, 397, nil, nil, 397, 397, nil, - nil, 397, nil, nil, nil, nil, nil, 397, nil, nil, - nil, nil, nil, nil, nil, 397, nil, nil, nil, nil, - 397, 397, 397, 397, 397, 397, nil, nil, nil, 397, - 397, 426, 426, 426, nil, 426, nil, nil, nil, 426, - 426, nil, nil, nil, 426, nil, 426, 426, 426, 426, - 426, 426, 426, nil, nil, nil, nil, 426, 426, 426, - 426, 426, 426, 426, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 426, nil, nil, 426, 426, 426, 426, - 426, 426, 426, 426, 426, 426, nil, 426, 426, nil, - 426, 426, 426, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 426, nil, nil, 426, nil, nil, 426, 426, - nil, nil, 426, nil, 426, nil, 426, nil, 426, nil, - nil, nil, nil, nil, nil, nil, 426, nil, nil, nil, - nil, 426, 426, 426, 426, 426, 426, nil, nil, nil, - 426, 426, 428, 428, 428, nil, 428, nil, nil, nil, - 428, 428, nil, nil, nil, 428, nil, 428, 428, 428, - 428, 428, 428, 428, nil, nil, nil, nil, 428, 428, - 428, 428, 428, 428, 428, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 428, nil, nil, 428, 428, 428, - 428, 428, 428, 428, 428, 428, 428, nil, 428, 428, - nil, 428, 428, 428, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 428, nil, nil, 428, nil, nil, 428, - 428, nil, nil, 428, nil, 428, nil, 428, nil, 428, - nil, nil, nil, nil, nil, nil, nil, 428, nil, nil, - nil, nil, 428, 428, 428, 428, 428, 428, nil, nil, - nil, 428, 428, 431, 431, 431, nil, 431, nil, nil, - nil, 431, 431, nil, nil, nil, 431, nil, 431, 431, - 431, 431, 431, 431, 431, nil, nil, nil, nil, 431, - 431, 431, 431, 431, 431, 431, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 431, nil, nil, 431, 431, - 431, 431, 431, 431, 431, 431, 431, 431, nil, 431, - 431, nil, 431, 431, 431, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 431, nil, nil, 431, nil, nil, - 431, 431, nil, nil, 431, nil, nil, nil, nil, nil, - 431, nil, nil, nil, nil, nil, nil, nil, 431, nil, - nil, nil, nil, 431, 431, 431, 431, 431, 431, nil, - nil, nil, 431, 431, 445, 445, 445, nil, 445, nil, - nil, nil, 445, 445, nil, nil, nil, 445, nil, 445, - 445, 445, 445, 445, 445, 445, nil, nil, nil, nil, - 445, 445, 445, 445, 445, 445, 445, nil, nil, 445, - nil, nil, nil, nil, nil, nil, 445, nil, nil, 445, - 445, 445, 445, 445, 445, 445, 445, 445, 445, nil, - 445, 445, nil, 445, 445, 445, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 445, nil, nil, 445, nil, - nil, 445, 445, nil, nil, 445, nil, 445, nil, 445, - nil, 445, nil, nil, nil, nil, nil, nil, nil, 445, - nil, nil, nil, nil, 445, 445, 445, 445, 445, 445, - nil, nil, nil, 445, 445, 456, 456, 456, nil, 456, - nil, nil, nil, 456, 456, nil, nil, nil, 456, nil, - 456, 456, 456, 456, 456, 456, 456, nil, nil, nil, - nil, 456, 456, 456, 456, 456, 456, 456, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 456, nil, nil, - 456, 456, 456, 456, 456, 456, 456, 456, 456, 456, - nil, 456, 456, nil, 456, 456, 456, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 456, nil, nil, 456, - nil, nil, 456, 456, nil, nil, 456, nil, 456, nil, - nil, nil, 456, nil, nil, nil, nil, nil, nil, nil, - 456, nil, nil, nil, nil, 456, 456, 456, 456, 456, - 456, nil, nil, nil, 456, 456, 463, 463, 463, nil, - 463, nil, nil, nil, 463, 463, nil, nil, nil, 463, - nil, 463, 463, 463, 463, 463, 463, 463, nil, nil, - nil, nil, 463, 463, 463, 463, 463, 463, 463, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 463, nil, - nil, 463, 463, 463, 463, 463, 463, 463, 463, 463, - 463, nil, 463, 463, nil, 463, 463, 463, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 463, nil, nil, - 463, nil, nil, 463, 463, nil, nil, 463, nil, nil, - nil, nil, nil, 463, nil, nil, nil, nil, nil, nil, - nil, 463, nil, nil, nil, nil, 463, 463, 463, 463, - 463, 463, nil, nil, nil, 463, 463, 464, 464, 464, - nil, 464, nil, nil, nil, 464, 464, nil, nil, nil, - 464, nil, 464, 464, 464, 464, 464, 464, 464, nil, - nil, nil, nil, 464, 464, 464, 464, 464, 464, 464, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 464, - nil, nil, 464, 464, 464, 464, 464, 464, 464, 464, - 464, 464, nil, 464, 464, nil, 464, 464, 464, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 464, nil, - nil, 464, nil, nil, 464, 464, nil, nil, 464, nil, - nil, nil, nil, nil, 464, nil, nil, nil, nil, nil, - nil, nil, 464, nil, nil, nil, nil, 464, 464, 464, - 464, 464, 464, nil, nil, nil, 464, 464, 465, 465, - 465, nil, 465, nil, nil, nil, 465, 465, nil, nil, - nil, 465, nil, 465, 465, 465, 465, 465, 465, 465, - nil, nil, nil, nil, 465, 465, 465, 465, 465, 465, - 465, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 465, nil, nil, 465, 465, 465, 465, 465, 465, 465, - 465, 465, 465, nil, 465, 465, nil, 465, 465, 465, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 465, - nil, nil, 465, nil, nil, 465, 465, nil, nil, 465, - nil, nil, nil, nil, nil, 465, nil, nil, nil, nil, - nil, nil, nil, 465, nil, nil, nil, nil, 465, 465, - 465, 465, 465, 465, nil, nil, nil, 465, 465, 469, - 469, 469, nil, 469, nil, nil, nil, 469, 469, nil, - nil, nil, 469, nil, 469, 469, 469, 469, 469, 469, - 469, nil, nil, nil, nil, 469, 469, 469, 469, 469, - 469, 469, nil, nil, 469, nil, nil, nil, nil, nil, - nil, 469, nil, nil, 469, 469, 469, 469, 469, 469, - 469, 469, 469, 469, nil, 469, 469, nil, 469, 469, - 469, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 469, nil, nil, 469, nil, nil, 469, 469, nil, nil, - 469, nil, nil, nil, nil, nil, 469, nil, nil, nil, - nil, nil, nil, nil, 469, nil, nil, nil, nil, 469, - 469, 469, 469, 469, 469, nil, nil, nil, 469, 469, - 471, 471, 471, nil, 471, nil, nil, nil, 471, 471, - nil, nil, nil, 471, nil, 471, 471, 471, 471, 471, - 471, 471, nil, nil, nil, nil, 471, 471, 471, 471, - 471, 471, 471, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 471, nil, nil, 471, 471, 471, 471, 471, - 471, 471, 471, 471, 471, nil, 471, 471, nil, 471, - 471, 471, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 471, nil, nil, 471, nil, nil, 471, 471, nil, - nil, 471, nil, 471, nil, nil, nil, 471, nil, nil, - nil, nil, nil, nil, nil, 471, nil, nil, nil, nil, - 471, 471, 471, 471, 471, 471, nil, nil, nil, 471, - 471, 476, 476, 476, nil, 476, nil, nil, nil, 476, - 476, nil, nil, nil, 476, nil, 476, 476, 476, 476, - 476, 476, 476, nil, nil, nil, nil, 476, 476, 476, - 476, 476, 476, 476, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 476, nil, nil, 476, 476, 476, 476, - 476, 476, 476, 476, 476, 476, nil, 476, 476, nil, - 476, 476, 476, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 476, nil, nil, 476, nil, nil, 476, 476, - nil, nil, 476, nil, 476, nil, nil, nil, 476, nil, - nil, nil, nil, nil, nil, nil, 476, nil, nil, nil, - nil, 476, 476, 476, 476, 476, 476, nil, nil, nil, - 476, 476, 479, 479, 479, nil, 479, nil, nil, nil, - 479, 479, nil, nil, nil, 479, nil, 479, 479, 479, - 479, 479, 479, 479, nil, nil, nil, nil, 479, 479, - 479, 479, 479, 479, 479, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 479, nil, nil, 479, 479, 479, - 479, 479, 479, 479, 479, 479, 479, nil, 479, 479, - nil, 479, 479, 479, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 479, nil, nil, 479, nil, nil, 479, - 479, nil, nil, 479, nil, nil, nil, nil, nil, 479, - nil, nil, nil, nil, nil, nil, nil, 479, nil, nil, - nil, nil, 479, 479, 479, 479, 479, 479, nil, nil, - nil, 479, 479, 482, 482, 482, nil, 482, nil, nil, - nil, 482, 482, nil, nil, nil, 482, nil, 482, 482, - 482, 482, 482, 482, 482, nil, nil, nil, nil, 482, - 482, 482, 482, 482, 482, 482, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 482, nil, nil, 482, 482, - 482, 482, 482, 482, 482, 482, 482, 482, nil, 482, - 482, nil, 482, 482, 482, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 482, nil, nil, 482, nil, nil, - 482, 482, nil, nil, 482, nil, nil, nil, nil, nil, - 482, nil, nil, nil, nil, nil, nil, nil, 482, nil, - nil, nil, nil, 482, 482, 482, 482, 482, 482, nil, - nil, nil, 482, 482, 496, 496, 496, nil, 496, nil, - nil, nil, 496, 496, nil, nil, nil, 496, nil, 496, - 496, 496, 496, 496, 496, 496, nil, nil, nil, nil, - 496, 496, 496, 496, 496, 496, 496, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 496, nil, nil, 496, - 496, 496, 496, 496, 496, 496, 496, 496, 496, nil, - 496, 496, nil, 496, 496, 496, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 496, nil, nil, 496, nil, - nil, 496, 496, nil, nil, 496, nil, 496, nil, nil, - nil, 496, nil, nil, nil, nil, nil, nil, nil, 496, - nil, nil, nil, nil, 496, 496, 496, 496, 496, 496, - nil, nil, nil, 496, 496, 497, 497, 497, nil, 497, - nil, nil, nil, 497, 497, nil, nil, nil, 497, nil, - 497, 497, 497, 497, 497, 497, 497, nil, nil, nil, - nil, 497, 497, 497, 497, 497, 497, 497, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 497, nil, nil, - 497, 497, 497, 497, 497, 497, 497, 497, 497, 497, - nil, 497, 497, nil, 497, 497, 497, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 497, nil, nil, 497, - nil, nil, 497, 497, nil, nil, 497, nil, 497, nil, - nil, nil, 497, nil, nil, nil, nil, nil, nil, nil, - 497, nil, nil, nil, nil, 497, 497, 497, 497, 497, - 497, nil, nil, nil, 497, 497, 506, 506, 506, nil, - 506, nil, nil, nil, 506, 506, nil, nil, nil, 506, - nil, 506, 506, 506, 506, 506, 506, 506, nil, nil, - nil, nil, 506, 506, 506, 506, 506, 506, 506, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 506, nil, - nil, 506, 506, 506, 506, 506, 506, 506, 506, 506, - 506, nil, 506, 506, nil, 506, 506, 506, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 506, nil, nil, - 506, nil, nil, 506, 506, nil, nil, 506, nil, 506, - nil, nil, nil, 506, nil, nil, nil, nil, nil, nil, - nil, 506, nil, nil, nil, nil, 506, 506, 506, 506, - 506, 506, nil, nil, nil, 506, 506, 510, 510, 510, - nil, 510, nil, nil, nil, 510, 510, nil, nil, nil, - 510, nil, 510, 510, 510, 510, 510, 510, 510, nil, - nil, nil, nil, 510, 510, 510, 510, 510, 510, 510, - nil, nil, 510, nil, nil, nil, nil, nil, nil, 510, - nil, nil, 510, 510, 510, 510, 510, 510, 510, 510, - 510, 510, nil, 510, 510, nil, 510, 510, 510, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 510, nil, - nil, 510, nil, nil, 510, 510, nil, nil, 510, nil, - nil, nil, nil, nil, 510, nil, nil, nil, nil, nil, - nil, nil, 510, nil, nil, nil, nil, 510, 510, 510, - 510, 510, 510, nil, nil, nil, 510, 510, 534, 534, - 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, - 534, 534, 534, 534, 534, 534, 534, 534, 534, 534, - 534, 534, nil, nil, 534, 534, 534, 534, 534, 534, - 534, 534, 534, 534, nil, nil, nil, nil, nil, 534, - 534, 534, 534, 534, 534, 534, 534, nil, nil, 534, - nil, nil, nil, nil, nil, nil, nil, 534, 534, nil, - 534, 534, 534, 534, nil, 534, 534, nil, nil, 534, - nil, nil, nil, nil, 534, 534, 534, 534, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 534, 534, nil, 534, 534, 534, 534, 534, 534, - 534, 534, 534, nil, 534, nil, nil, 534, 534, nil, - nil, 537, 537, 537, nil, 537, nil, nil, 534, 537, - 537, nil, nil, nil, 537, nil, 537, 537, 537, 537, - 537, 537, 537, nil, nil, nil, nil, 537, 537, 537, - 537, 537, 537, 537, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 537, nil, nil, 537, 537, 537, 537, - 537, 537, 537, 537, 537, 537, nil, 537, 537, nil, - 537, 537, 537, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 537, nil, nil, 537, nil, nil, 537, 537, - nil, nil, 537, nil, nil, nil, nil, nil, 537, nil, - nil, nil, nil, nil, nil, nil, 537, nil, nil, nil, - nil, 537, 537, 537, 537, 537, 537, nil, nil, nil, - 537, 537, 538, 538, 538, nil, 538, nil, nil, nil, - 538, 538, nil, nil, nil, 538, nil, 538, 538, 538, - 538, 538, 538, 538, nil, nil, nil, nil, 538, 538, - 538, 538, 538, 538, 538, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 538, nil, nil, 538, 538, 538, - 538, 538, 538, 538, 538, 538, 538, nil, 538, 538, - nil, 538, 538, 538, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 538, nil, nil, 538, nil, nil, 538, - 538, nil, nil, 538, nil, 538, nil, nil, nil, 538, - nil, nil, nil, nil, nil, nil, nil, 538, nil, nil, - nil, nil, 538, 538, 538, 538, 538, 538, nil, nil, - nil, 538, 538, 541, 541, 541, nil, 541, nil, nil, - nil, 541, 541, nil, nil, nil, 541, nil, 541, 541, - 541, 541, 541, 541, 541, nil, nil, nil, nil, 541, - 541, 541, 541, 541, 541, 541, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 541, nil, nil, 541, 541, - 541, 541, 541, 541, 541, 541, 541, 541, nil, 541, - 541, nil, 541, 541, 541, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 541, nil, nil, 541, nil, nil, - 541, 541, nil, nil, 541, nil, nil, nil, nil, nil, - 541, nil, nil, nil, nil, nil, nil, nil, 541, nil, - nil, nil, nil, 541, 541, 541, 541, 541, 541, nil, - nil, nil, 541, 541, 542, 542, 542, nil, 542, nil, - nil, nil, 542, 542, nil, nil, nil, 542, nil, 542, - 542, 542, 542, 542, 542, 542, nil, nil, nil, nil, - 542, 542, 542, 542, 542, 542, 542, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 542, nil, nil, 542, - 542, 542, 542, 542, 542, 542, 542, 542, 542, nil, - 542, 542, nil, 542, 542, 542, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 542, nil, nil, 542, nil, - nil, 542, 542, nil, nil, 542, nil, nil, nil, nil, - nil, 542, nil, nil, nil, nil, nil, nil, nil, 542, - nil, nil, nil, nil, 542, 542, 542, 542, 542, 542, - nil, nil, nil, 542, 542, 546, 546, 546, nil, 546, - nil, nil, nil, 546, 546, nil, nil, nil, 546, nil, - 546, 546, 546, 546, 546, 546, 546, nil, nil, nil, - nil, 546, 546, 546, 546, 546, 546, 546, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 546, nil, nil, - 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, - nil, 546, 546, nil, 546, 546, 546, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 546, nil, nil, 546, - nil, nil, 546, 546, nil, nil, 546, nil, nil, nil, - nil, nil, 546, nil, nil, nil, nil, nil, nil, nil, - 546, nil, nil, nil, nil, 546, 546, 546, 546, 546, - 546, nil, nil, nil, 546, 546, 549, 549, 549, nil, - 549, nil, nil, nil, 549, 549, nil, nil, nil, 549, - nil, 549, 549, 549, 549, 549, 549, 549, nil, nil, - nil, nil, 549, 549, 549, 549, 549, 549, 549, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 549, nil, - nil, 549, 549, 549, 549, 549, 549, 549, 549, 549, - 549, nil, 549, 549, nil, 549, 549, 549, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 549, nil, nil, - 549, nil, nil, 549, 549, nil, nil, 549, nil, nil, - nil, nil, nil, 549, nil, nil, nil, nil, nil, nil, - nil, 549, nil, nil, nil, nil, 549, 549, 549, 549, - 549, 549, nil, nil, nil, 549, 549, 556, 556, 556, - nil, 556, nil, nil, nil, 556, 556, nil, nil, nil, - 556, nil, 556, 556, 556, 556, 556, 556, 556, nil, - nil, nil, nil, 556, 556, 556, 556, 556, 556, 556, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 556, - nil, nil, 556, 556, 556, 556, 556, 556, 556, 556, - 556, 556, nil, 556, 556, nil, 556, 556, 556, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 556, nil, - nil, 556, nil, nil, 556, 556, nil, nil, 556, nil, - nil, nil, nil, nil, 556, nil, nil, nil, nil, nil, - nil, nil, 556, nil, nil, nil, nil, 556, 556, 556, - 556, 556, 556, nil, nil, nil, 556, 556, 557, 557, - 557, nil, 557, nil, nil, nil, 557, 557, nil, nil, - nil, 557, nil, 557, 557, 557, 557, 557, 557, 557, - nil, nil, nil, nil, 557, 557, 557, 557, 557, 557, - 557, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 557, nil, nil, 557, 557, 557, 557, 557, 557, 557, - 557, 557, 557, nil, 557, 557, nil, nil, nil, 557, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 557, - nil, nil, 557, nil, nil, 557, 557, nil, nil, 557, - nil, 557, nil, 557, nil, nil, nil, nil, nil, nil, - nil, nil, 557, nil, nil, nil, nil, nil, 557, 557, - 557, 557, 557, 557, nil, nil, nil, 557, 557, 560, - 560, 560, nil, 560, nil, nil, nil, 560, 560, nil, - nil, nil, 560, nil, 560, 560, 560, 560, 560, 560, - 560, nil, nil, nil, nil, 560, 560, 560, 560, 560, - 560, 560, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 560, nil, nil, 560, 560, 560, 560, 560, 560, - 560, 560, 560, 560, nil, 560, 560, nil, 560, 560, - 560, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 560, nil, nil, 560, nil, nil, 560, 560, nil, nil, - 560, nil, nil, nil, nil, nil, 560, nil, nil, nil, - nil, nil, nil, nil, 560, nil, nil, nil, nil, 560, - 560, 560, 560, 560, 560, nil, nil, nil, 560, 560, - 564, 564, 564, nil, 564, nil, nil, nil, 564, 564, - nil, nil, nil, 564, nil, 564, 564, 564, 564, 564, - 564, 564, nil, nil, nil, nil, 564, 564, 564, 564, - 564, 564, 564, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 564, nil, nil, 564, 564, 564, 564, 564, - 564, 564, 564, 564, 564, nil, 564, 564, nil, 564, - 564, 564, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 564, nil, nil, 564, nil, nil, 564, 564, nil, - nil, 564, nil, nil, nil, nil, nil, 564, nil, nil, - nil, nil, nil, nil, nil, 564, nil, nil, nil, nil, - 564, 564, 564, 564, 564, 564, nil, nil, nil, 564, - 564, 580, 580, 580, nil, 580, nil, nil, nil, 580, - 580, nil, nil, nil, 580, nil, 580, 580, 580, 580, - 580, 580, 580, nil, nil, nil, nil, 580, 580, 580, - 580, 580, 580, 580, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 580, nil, nil, 580, 580, 580, 580, - 580, 580, 580, 580, 580, 580, nil, 580, 580, nil, - 580, 580, 580, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 580, nil, nil, 580, nil, nil, 580, 580, - nil, nil, 580, nil, 580, nil, 580, nil, 580, nil, - nil, nil, nil, nil, nil, nil, 580, nil, nil, nil, - nil, 580, 580, 580, 580, 580, 580, nil, nil, nil, - 580, 580, 584, 584, 584, nil, 584, nil, nil, nil, - 584, 584, nil, nil, nil, 584, nil, 584, 584, 584, - 584, 584, 584, 584, nil, nil, nil, nil, 584, 584, - 584, 584, 584, 584, 584, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 584, nil, nil, 584, 584, 584, - 584, 584, 584, 584, 584, 584, 584, nil, 584, 584, - nil, 584, 584, 584, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 584, nil, nil, 584, nil, nil, 584, - 584, nil, nil, 584, nil, nil, nil, nil, nil, 584, - nil, nil, nil, nil, nil, nil, nil, 584, nil, nil, - nil, nil, 584, 584, 584, 584, 584, 584, nil, nil, - nil, 584, 584, 612, 612, 612, nil, 612, nil, nil, - nil, 612, 612, nil, nil, nil, 612, nil, 612, 612, - 612, 612, 612, 612, 612, nil, nil, nil, nil, 612, - 612, 612, 612, 612, 612, 612, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 612, nil, nil, 612, 612, - 612, 612, 612, 612, 612, 612, 612, 612, nil, 612, - 612, nil, 612, 612, 612, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 612, nil, nil, 612, nil, nil, - 612, 612, nil, nil, 612, nil, nil, nil, nil, nil, - 612, nil, nil, nil, nil, nil, nil, nil, 612, nil, - nil, nil, nil, 612, 612, 612, 612, 612, 612, nil, - nil, nil, 612, 612, 628, 628, 628, nil, 628, nil, - nil, nil, 628, 628, nil, nil, nil, 628, nil, 628, - 628, 628, 628, 628, 628, 628, nil, nil, nil, nil, - 628, 628, 628, 628, 628, 628, 628, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 628, nil, nil, 628, - 628, 628, 628, 628, 628, 628, 628, 628, 628, nil, - 628, 628, nil, 628, 628, 628, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 628, nil, nil, 628, nil, - nil, 628, 628, nil, nil, 628, nil, nil, nil, nil, - nil, 628, nil, nil, nil, nil, nil, nil, nil, 628, - nil, nil, nil, nil, 628, 628, 628, 628, 628, 628, - nil, nil, nil, 628, 628, 634, 634, 634, nil, 634, - nil, nil, nil, 634, 634, nil, nil, nil, 634, nil, - 634, 634, 634, 634, 634, 634, 634, nil, nil, nil, - nil, 634, 634, 634, 634, 634, 634, 634, nil, nil, - 634, nil, nil, nil, nil, nil, nil, 634, nil, nil, - 634, 634, 634, 634, 634, 634, 634, 634, 634, 634, - nil, 634, 634, nil, 634, 634, 634, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 634, nil, nil, 634, - nil, nil, 634, 634, nil, nil, 634, nil, nil, nil, - nil, nil, 634, nil, nil, nil, nil, nil, nil, nil, - 634, nil, nil, nil, nil, 634, 634, 634, 634, 634, - 634, nil, nil, nil, 634, 634, 679, 679, 679, nil, - 679, nil, nil, nil, 679, 679, nil, nil, nil, 679, - nil, 679, 679, 679, 679, 679, 679, 679, nil, nil, - nil, nil, 679, 679, 679, 679, 679, 679, 679, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 679, nil, - nil, 679, 679, 679, 679, 679, 679, 679, 679, 679, - 679, nil, 679, 679, nil, 679, 679, 679, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 679, nil, nil, - 679, nil, nil, 679, 679, nil, nil, 679, nil, nil, - nil, nil, nil, 679, nil, nil, nil, nil, nil, nil, - nil, 679, nil, nil, nil, nil, 679, 679, 679, 679, - 679, 679, nil, nil, nil, 679, 679, 680, 680, 680, - nil, 680, nil, nil, nil, 680, 680, nil, nil, nil, - 680, nil, 680, 680, 680, 680, 680, 680, 680, nil, - nil, nil, nil, 680, 680, 680, 680, 680, 680, 680, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 680, - nil, nil, 680, 680, 680, 680, 680, 680, 680, 680, - 680, 680, nil, 680, 680, nil, 680, 680, 680, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 680, nil, - nil, 680, nil, nil, 680, 680, nil, nil, 680, nil, - nil, nil, nil, nil, 680, nil, nil, nil, nil, nil, - nil, nil, 680, nil, nil, nil, nil, 680, 680, 680, - 680, 680, 680, nil, nil, nil, 680, 680, 690, 690, - 690, nil, 690, nil, nil, nil, 690, 690, nil, nil, - nil, 690, nil, 690, 690, 690, 690, 690, 690, 690, - nil, nil, nil, nil, 690, 690, 690, 690, 690, 690, - 690, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 690, nil, nil, 690, 690, 690, 690, 690, 690, 690, - 690, 690, 690, nil, 690, 690, nil, 690, 690, 690, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 690, - nil, nil, 690, nil, nil, 690, 690, nil, nil, 690, - nil, nil, nil, nil, nil, 690, nil, nil, nil, nil, - nil, nil, nil, 690, nil, nil, nil, nil, 690, 690, - 690, 690, 690, 690, nil, nil, nil, 690, 690, 691, - 691, 691, nil, 691, nil, nil, nil, 691, 691, nil, - nil, nil, 691, nil, 691, 691, 691, 691, 691, 691, - 691, nil, nil, nil, nil, 691, 691, 691, 691, 691, - 691, 691, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 691, nil, nil, 691, 691, 691, 691, 691, 691, - 691, 691, 691, 691, nil, 691, 691, nil, 691, 691, - 691, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 691, nil, nil, 691, nil, nil, 691, 691, nil, nil, - 691, nil, nil, nil, nil, nil, 691, nil, nil, nil, - nil, nil, nil, nil, 691, nil, nil, nil, nil, 691, - 691, 691, 691, 691, 691, nil, nil, nil, 691, 691, - 692, 692, 692, nil, 692, nil, nil, nil, 692, 692, - nil, nil, nil, 692, nil, 692, 692, 692, 692, 692, - 692, 692, nil, nil, nil, nil, 692, 692, 692, 692, - 692, 692, 692, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 692, nil, nil, 692, 692, 692, 692, 692, - 692, 692, 692, 692, 692, nil, 692, 692, nil, 692, - 692, 692, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 692, nil, nil, 692, nil, nil, 692, 692, nil, - nil, 692, nil, nil, nil, nil, nil, 692, nil, nil, - nil, nil, nil, nil, nil, 692, nil, nil, nil, nil, - 692, 692, 692, 692, 692, 692, nil, nil, nil, 692, - 692, 698, 698, 698, nil, 698, nil, nil, nil, 698, - 698, nil, nil, nil, 698, nil, 698, 698, 698, 698, - 698, 698, 698, nil, nil, nil, nil, 698, 698, 698, - 698, 698, 698, 698, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 698, nil, nil, 698, 698, 698, 698, - 698, 698, 698, 698, 698, 698, nil, 698, 698, nil, - nil, nil, 698, nil, 600, 600, 600, 600, 600, 600, - 600, 600, 600, 600, 600, nil, 600, 600, nil, nil, - 600, 600, 698, nil, nil, 698, nil, nil, 698, 698, - nil, nil, 698, nil, nil, nil, 600, nil, 600, nil, - 600, 600, 600, 600, 600, 600, 600, nil, 600, nil, - nil, 698, 698, 698, 698, 698, 698, nil, nil, nil, - 698, 698, 704, 704, 704, 600, 704, nil, nil, nil, - 704, 704, nil, nil, nil, 704, nil, 704, 704, 704, - 704, 704, 704, 704, nil, nil, nil, nil, 704, 704, - 704, 704, 704, 704, 704, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 704, nil, nil, 704, 704, 704, - 704, 704, 704, 704, 704, 704, 704, nil, 704, 704, - nil, 704, 704, 704, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 704, nil, nil, 704, nil, nil, 704, - 704, nil, nil, 704, nil, 704, nil, 704, nil, 704, - nil, nil, nil, nil, nil, nil, nil, 704, nil, nil, - nil, nil, 704, 704, 704, 704, 704, 704, nil, nil, - nil, 704, 704, 713, 713, 713, nil, 713, nil, nil, - nil, 713, 713, nil, nil, nil, 713, nil, 713, 713, - 713, 713, 713, 713, 713, nil, nil, nil, nil, 713, - 713, 713, 713, 713, 713, 713, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 713, nil, nil, 713, 713, - 713, 713, 713, 713, 713, 713, 713, 713, nil, 713, - 713, nil, 713, 713, 713, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 713, nil, nil, 713, nil, nil, - 713, 713, nil, nil, 713, nil, 713, nil, 713, nil, - 713, nil, nil, nil, nil, nil, nil, nil, 713, nil, - nil, nil, nil, 713, 713, 713, 713, 713, 713, nil, - nil, nil, 713, 713, 715, 715, 715, nil, 715, nil, - nil, nil, 715, 715, nil, nil, nil, 715, nil, 715, - 715, 715, 715, 715, 715, 715, nil, nil, nil, nil, - 715, 715, 715, 715, 715, 715, 715, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 715, nil, nil, 715, - 715, 715, 715, 715, 715, 715, 715, 715, 715, nil, - 715, 715, nil, 715, 715, 715, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 715, nil, nil, 715, nil, - nil, 715, 715, nil, nil, 715, nil, 715, nil, 715, - nil, 715, nil, nil, nil, nil, nil, nil, nil, 715, - nil, nil, nil, nil, 715, 715, 715, 715, 715, 715, - nil, nil, nil, 715, 715, 728, 728, 728, nil, 728, - nil, nil, nil, 728, 728, nil, nil, nil, 728, nil, - 728, 728, 728, 728, 728, 728, 728, nil, nil, nil, - nil, 728, 728, 728, 728, 728, 728, 728, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 728, nil, nil, - 728, 728, 728, 728, 728, 728, 728, 728, 728, 728, - nil, 728, 728, nil, nil, nil, 728, nil, 677, 677, - 677, 677, 677, 677, 677, 677, 677, 677, 677, nil, - 677, 677, nil, nil, 677, 677, 728, nil, nil, 728, - nil, nil, 728, 728, nil, nil, 728, nil, nil, nil, - 677, nil, 677, nil, 677, 677, 677, 677, 677, 677, - 677, nil, 677, nil, nil, 728, 728, 728, 728, 728, - 728, nil, nil, nil, 728, 728, 734, 734, 734, 677, - 734, nil, nil, nil, 734, 734, nil, nil, nil, 734, - nil, 734, 734, 734, 734, 734, 734, 734, nil, nil, - nil, nil, 734, 734, 734, 734, 734, 734, 734, nil, - nil, 734, nil, nil, nil, nil, nil, nil, 734, nil, - nil, 734, 734, 734, 734, 734, 734, 734, 734, 734, - 734, nil, 734, 734, nil, 734, 734, 734, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 734, nil, nil, - 734, nil, nil, 734, 734, nil, nil, 734, nil, nil, - nil, nil, nil, 734, nil, nil, nil, nil, nil, nil, - nil, 734, nil, nil, nil, nil, 734, 734, 734, 734, - 734, 734, nil, nil, nil, 734, 734, 740, 740, 740, - nil, 740, nil, nil, nil, 740, 740, nil, nil, nil, - 740, nil, 740, 740, 740, 740, 740, 740, 740, nil, - nil, nil, nil, 740, 740, 740, 740, 740, 740, 740, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 740, - nil, nil, 740, 740, 740, 740, 740, 740, 740, 740, - 740, 740, nil, 740, 740, nil, 740, 740, 740, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 740, nil, - nil, 740, nil, nil, 740, 740, nil, nil, 740, nil, - 740, nil, nil, nil, 740, nil, nil, nil, nil, nil, - nil, nil, 740, nil, nil, nil, nil, 740, 740, 740, - 740, 740, 740, nil, nil, nil, 740, 740, 759, 759, - 759, nil, 759, nil, nil, nil, 759, 759, nil, nil, - nil, 759, nil, 759, 759, 759, 759, 759, 759, 759, - nil, nil, nil, nil, 759, 759, 759, 759, 759, 759, - 759, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 759, nil, nil, 759, 759, 759, 759, 759, 759, 759, - 759, 759, 759, nil, 759, 759, nil, 759, 759, 759, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 759, - nil, nil, 759, nil, nil, 759, 759, nil, nil, 759, - nil, nil, nil, nil, nil, 759, nil, nil, nil, nil, - nil, nil, nil, 759, nil, nil, nil, nil, 759, 759, - 759, 759, 759, 759, nil, nil, nil, 759, 759, 768, - 768, 768, nil, 768, nil, nil, nil, 768, 768, nil, - nil, nil, 768, nil, 768, 768, 768, 768, 768, 768, - 768, nil, nil, nil, nil, 768, 768, 768, 768, 768, - 768, 768, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 768, nil, nil, 768, 768, 768, 768, 768, 768, - 768, 768, 768, 768, nil, 768, 768, nil, 768, 768, - 768, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 768, nil, nil, 768, nil, nil, 768, 768, nil, nil, - 768, nil, nil, nil, nil, nil, 768, nil, nil, nil, - nil, nil, nil, nil, 768, nil, nil, nil, nil, 768, - 768, 768, 768, 768, 768, nil, nil, nil, 768, 768, - 769, 769, 769, nil, 769, nil, nil, nil, 769, 769, - nil, nil, nil, 769, nil, 769, 769, 769, 769, 769, - 769, 769, nil, nil, nil, nil, 769, 769, 769, 769, - 769, 769, 769, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 769, nil, nil, 769, 769, 769, 769, 769, - 769, 769, 769, 769, 769, nil, 769, 769, nil, nil, - nil, 769, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 769, nil, nil, 769, nil, nil, 769, 769, nil, - nil, 769, nil, 769, nil, 769, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 769, 769, 769, 769, 769, 769, nil, nil, nil, 769, - 769, 780, 780, 780, nil, 780, nil, nil, nil, 780, - 780, nil, nil, nil, 780, nil, 780, 780, 780, 780, - 780, 780, 780, nil, nil, nil, nil, 780, 780, 780, - 780, 780, 780, 780, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 780, nil, nil, 780, 780, 780, 780, - 780, 780, 780, 780, 780, 780, nil, 780, 780, nil, - 780, 780, 780, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 780, nil, nil, 780, nil, nil, 780, 780, - nil, nil, 780, nil, nil, nil, nil, nil, 780, nil, - nil, nil, nil, nil, nil, nil, 780, nil, nil, nil, - nil, 780, 780, 780, 780, 780, 780, nil, nil, nil, - 780, 780, 786, 786, 786, nil, 786, nil, nil, nil, - 786, 786, nil, nil, nil, 786, nil, 786, 786, 786, - 786, 786, 786, 786, nil, nil, nil, nil, 786, 786, - 786, 786, 786, 786, 786, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 786, nil, nil, 786, 786, 786, - 786, 786, 786, 786, 786, 786, 786, nil, 786, 786, - nil, 786, 786, 786, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 786, nil, nil, 786, nil, nil, 786, - 786, nil, nil, 786, nil, nil, nil, nil, nil, 786, - nil, nil, nil, nil, nil, nil, nil, 786, nil, nil, - nil, nil, 786, 786, 786, 786, 786, 786, nil, nil, - nil, 786, 786, 788, 788, 788, nil, 788, nil, nil, - nil, 788, 788, nil, nil, nil, 788, nil, 788, 788, - 788, 788, 788, 788, 788, nil, nil, nil, nil, 788, - 788, 788, 788, 788, 788, 788, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 788, nil, nil, 788, 788, - 788, 788, 788, 788, 788, 788, 788, 788, nil, 788, - 788, nil, 788, 788, 788, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 788, nil, nil, 788, nil, nil, - 788, 788, nil, nil, 788, nil, nil, nil, nil, nil, - 788, nil, nil, nil, nil, nil, nil, nil, 788, nil, - nil, nil, nil, 788, 788, 788, 788, 788, 788, nil, - nil, nil, 788, 788, 802, 802, 802, nil, 802, nil, - nil, nil, 802, 802, nil, nil, nil, 802, nil, 802, - 802, 802, 802, 802, 802, 802, nil, nil, nil, nil, - 802, 802, 802, 802, 802, 802, 802, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 802, nil, nil, 802, - 802, 802, 802, 802, 802, 802, 802, 802, 802, nil, - 802, 802, nil, 802, 802, 802, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 802, nil, nil, 802, nil, - nil, 802, 802, nil, nil, 802, nil, nil, nil, nil, - nil, 802, nil, nil, nil, nil, nil, nil, nil, 802, - nil, nil, nil, nil, 802, 802, 802, 802, 802, 802, - nil, nil, nil, 802, 802, 820, 820, 820, nil, 820, - nil, nil, nil, 820, 820, nil, nil, nil, 820, nil, - 820, 820, 820, 820, 820, 820, 820, nil, nil, nil, - nil, 820, 820, 820, 820, 820, 820, 820, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 820, nil, nil, - 820, 820, 820, 820, 820, 820, 820, 820, 820, 820, - nil, 820, 820, nil, nil, nil, 820, nil, 682, 682, - 682, 682, 682, 682, 682, 682, 682, 682, 682, nil, - 682, 682, nil, nil, 682, 682, 820, nil, nil, 820, - nil, nil, 820, 820, nil, nil, 820, nil, nil, nil, - 682, nil, 682, nil, 682, 682, 682, 682, 682, 682, - 682, nil, 682, nil, nil, 820, 820, 820, 820, 820, - 820, nil, nil, nil, 820, 820, 822, 822, 822, 682, - 822, nil, nil, nil, 822, 822, nil, nil, nil, 822, - nil, 822, 822, 822, 822, 822, 822, 822, nil, nil, - nil, nil, 822, 822, 822, 822, 822, 822, 822, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 822, nil, - nil, 822, 822, 822, 822, 822, 822, 822, 822, 822, - 822, nil, 822, 822, nil, 822, 822, 822, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 822, nil, nil, - 822, nil, nil, 822, 822, nil, nil, 822, nil, 822, - nil, nil, nil, 822, nil, nil, nil, nil, nil, nil, - nil, 822, nil, nil, nil, nil, 822, 822, 822, 822, - 822, 822, nil, nil, nil, 822, 822, 827, 827, 827, - nil, 827, nil, nil, nil, 827, 827, nil, nil, nil, - 827, nil, 827, 827, 827, 827, 827, 827, 827, nil, - nil, nil, nil, 827, 827, 827, 827, 827, 827, 827, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 827, - nil, nil, 827, 827, 827, 827, 827, 827, 827, 827, - 827, 827, nil, 827, 827, nil, nil, nil, 827, nil, - 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, - 684, nil, 684, 684, nil, nil, 684, 684, 827, nil, - nil, 827, nil, nil, 827, 827, nil, nil, 827, nil, - nil, nil, 684, nil, 684, nil, 684, 684, 684, 684, - 684, 684, 684, nil, 684, nil, nil, 827, 827, 827, - 827, 827, 827, nil, nil, nil, 827, 827, 832, 832, - 832, 684, 832, nil, nil, nil, 832, 832, nil, nil, - nil, 832, nil, 832, 832, 832, 832, 832, 832, 832, - nil, nil, nil, nil, 832, 832, 832, 832, 832, 832, - 832, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 832, nil, nil, 832, 832, 832, 832, 832, 832, 832, - 832, 832, 832, nil, 832, 832, nil, 832, 832, 832, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 832, - nil, nil, 832, nil, nil, 832, 832, nil, nil, 832, - nil, 832, nil, 832, nil, 832, nil, nil, nil, nil, - nil, nil, nil, 832, nil, nil, nil, nil, 832, 832, - 832, 832, 832, 832, nil, nil, nil, 832, 832, 835, - 835, 835, nil, 835, nil, nil, nil, 835, 835, nil, - nil, nil, 835, nil, 835, 835, 835, 835, 835, 835, - 835, nil, nil, nil, nil, 835, 835, 835, 835, 835, - 835, 835, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 835, nil, nil, 835, 835, 835, 835, 835, 835, - 835, 835, 835, 835, nil, 835, 835, nil, 835, 835, - 835, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 835, nil, nil, 835, nil, nil, 835, 835, nil, nil, - 835, nil, 835, nil, 835, nil, 835, nil, nil, nil, - nil, nil, nil, nil, 835, nil, nil, nil, nil, 835, - 835, 835, 835, 835, 835, nil, nil, nil, 835, 835, - 861, 861, 861, nil, 861, nil, nil, nil, 861, 861, - nil, nil, nil, 861, nil, 861, 861, 861, 861, 861, - 861, 861, nil, nil, nil, nil, 861, 861, 861, 861, - 861, 861, 861, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 861, nil, nil, 861, 861, 861, 861, 861, - 861, 861, 861, 861, 861, nil, 861, 861, nil, nil, - nil, 861, nil, 687, 687, 687, 687, 687, 687, 687, - 687, 687, 687, 687, nil, 687, 687, nil, nil, 687, - 687, 861, nil, nil, 861, nil, nil, 861, 861, nil, - nil, 861, nil, nil, nil, 687, nil, 687, nil, 687, - 687, 687, 687, 687, 687, 687, nil, 687, nil, nil, - 861, 861, 861, 861, 861, 861, nil, nil, nil, 861, - 861, 864, 864, 864, 687, 864, nil, nil, nil, 864, - 864, nil, nil, nil, 864, nil, 864, 864, 864, 864, - 864, 864, 864, nil, nil, nil, nil, 864, 864, 864, - 864, 864, 864, 864, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 864, nil, nil, 864, 864, 864, 864, - 864, 864, 864, 864, 864, 864, nil, 864, 864, nil, - 864, 864, 864, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 864, nil, nil, 864, nil, nil, 864, 864, - nil, nil, 864, nil, nil, nil, nil, nil, 864, nil, - nil, nil, nil, nil, nil, nil, 864, nil, nil, nil, - nil, 864, 864, 864, 864, 864, 864, nil, nil, nil, - 864, 864, 867, 867, 867, nil, 867, nil, nil, nil, - 867, 867, nil, nil, nil, 867, nil, 867, 867, 867, - 867, 867, 867, 867, nil, nil, nil, nil, 867, 867, - 867, 867, 867, 867, 867, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 867, nil, nil, 867, 867, 867, - 867, 867, 867, 867, 867, 867, 867, nil, 867, 867, - nil, 867, 867, 867, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 867, nil, nil, 867, nil, nil, 867, - 867, nil, nil, 867, nil, nil, nil, nil, nil, 867, - nil, nil, nil, nil, nil, nil, nil, 867, nil, nil, - nil, nil, 867, 867, 867, 867, 867, 867, nil, nil, - nil, 867, 867, 875, 875, 875, nil, 875, nil, nil, - nil, 875, 875, nil, nil, nil, 875, nil, 875, 875, - 875, 875, 875, 875, 875, nil, nil, nil, nil, 875, - 875, 875, 875, 875, 875, 875, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 875, nil, nil, 875, 875, - 875, 875, 875, 875, 875, 875, 875, 875, nil, 875, - 875, nil, nil, nil, 875, nil, 689, 689, 689, 689, - 689, 689, 689, 689, 689, 689, 689, nil, 689, 689, - nil, nil, 689, 689, 875, nil, nil, 875, nil, nil, - 875, 875, nil, nil, 875, nil, nil, nil, 689, nil, - 689, nil, 689, 689, 689, 689, 689, 689, 689, nil, - 689, nil, nil, 875, 875, 875, 875, 875, 875, nil, - nil, nil, 875, 875, 880, 880, 880, 689, 880, nil, - nil, nil, 880, 880, nil, nil, nil, 880, nil, 880, - 880, 880, 880, 880, 880, 880, nil, nil, nil, nil, - 880, 880, 880, 880, 880, 880, 880, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 880, nil, nil, 880, - 880, 880, 880, 880, 880, 880, 880, 880, 880, nil, - 880, 880, nil, 880, 880, 880, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 880, nil, nil, 880, nil, - nil, 880, 880, nil, nil, 880, nil, 880, nil, 880, - nil, 880, nil, nil, nil, nil, nil, nil, nil, 880, - nil, nil, nil, nil, 880, 880, 880, 880, 880, 880, - nil, nil, nil, 880, 880, 886, 886, 886, nil, 886, - nil, nil, nil, 886, 886, nil, nil, nil, 886, nil, - 886, 886, 886, 886, 886, 886, 886, nil, nil, nil, - nil, 886, 886, 886, 886, 886, 886, 886, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 886, nil, nil, - 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, - nil, 886, 886, nil, nil, nil, 886, nil, 694, 694, - 694, 694, 694, 694, 694, 694, 694, 694, 694, nil, - 694, 694, nil, nil, 694, 694, 886, nil, nil, 886, - nil, nil, 886, 886, nil, nil, 886, nil, nil, nil, - 694, nil, 694, nil, 694, 694, 694, 694, 694, 694, - 694, nil, 694, nil, nil, 886, 886, 886, 886, 886, - 886, nil, nil, nil, 886, 886, 889, 889, 889, 694, - 889, nil, nil, nil, 889, 889, nil, nil, nil, 889, - nil, 889, 889, 889, 889, 889, 889, 889, nil, nil, - nil, nil, 889, 889, 889, 889, 889, 889, 889, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 889, nil, - nil, 889, 889, 889, 889, 889, 889, 889, 889, 889, - 889, nil, 889, 889, nil, 889, 889, 889, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 889, nil, nil, - 889, nil, nil, 889, 889, nil, nil, 889, nil, nil, - nil, nil, nil, 889, nil, nil, nil, nil, nil, nil, - nil, 889, nil, nil, nil, nil, 889, 889, 889, 889, - 889, 889, nil, nil, nil, 889, 889, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, nil, nil, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, nil, nil, nil, nil, nil, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - nil, nil, nil, nil, nil, nil, 64, 64, nil, 64, - 64, 64, 64, nil, 64, 64, nil, nil, 64, nil, - nil, nil, nil, 64, 64, 64, 64, nil, nil, nil, - nil, nil, 64, nil, nil, nil, nil, nil, nil, nil, - 64, 64, nil, 64, 64, 64, 64, 64, 64, 64, - 64, 64, nil, 64, nil, nil, 64, 664, 664, 664, - 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, - 664, 664, 664, 664, 664, 664, 664, 664, 664, 664, - 664, nil, nil, 664, 664, 664, 664, 664, 664, 664, - 664, 664, 664, nil, nil, nil, nil, nil, 664, 664, - 664, 664, 664, 664, 664, 664, nil, nil, 664, nil, - nil, nil, nil, nil, nil, nil, 664, 664, nil, 664, - 664, 664, 664, nil, 664, 664, nil, nil, 664, nil, - nil, nil, nil, 664, 664, 664, 664, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 664, 664, nil, 664, 664, 664, 664, 664, 664, 664, - 664, 664, nil, 664, nil, nil, 664, 581, 581, 581, - 581, 581, 581, 581, 581, 581, 581, 581, nil, 581, - 581, nil, nil, 581, 581, nil, nil, nil, 581, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 581, - nil, 581, nil, 581, 581, 581, 581, 581, 581, 581, - nil, 581, nil, nil, nil, nil, nil, nil, nil, 192, - 192, nil, nil, 192, nil, nil, nil, nil, 581, nil, - 581, 192, 192, nil, 192, 192, 192, 192, nil, 192, - 192, nil, nil, 192, nil, nil, nil, nil, 192, 192, - 192, 192, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 192, 192, nil, 192, 192, - 192, 192, 192, 192, 192, 192, 192, nil, 192, 193, - 193, 192, nil, 193, nil, nil, nil, nil, nil, nil, - nil, 193, 193, nil, 193, 193, 193, 193, nil, 193, - 193, nil, nil, 193, nil, nil, nil, nil, 193, 193, - 193, 193, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 193, 193, nil, 193, 193, - 193, 193, 193, 193, 193, 193, 193, nil, 193, 251, - 251, 193, nil, 251, nil, nil, nil, nil, nil, nil, - nil, 251, 251, nil, 251, 251, 251, 251, nil, 251, - 251, nil, nil, 251, nil, nil, nil, nil, 251, 251, - 251, 251, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 251, 251, nil, 251, 251, - 251, 251, 251, 251, 251, 251, 251, nil, 251, 252, - 252, 251, nil, 252, nil, nil, nil, nil, nil, nil, - nil, 252, 252, nil, 252, 252, 252, 252, nil, 252, - 252, nil, nil, 252, nil, nil, nil, nil, 252, 252, - 252, 252, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 252, 252, nil, 252, 252, - 252, 252, 252, 252, 252, 252, 252, nil, 252, 391, - 391, 252, nil, 391, nil, nil, nil, nil, nil, nil, - nil, 391, 391, nil, 391, 391, 391, 391, nil, 391, - 391, nil, nil, 391, nil, nil, nil, nil, 391, 391, - 391, 391, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 391, 391, nil, 391, 391, - 391, 391, 391, 391, 391, 391, 391, nil, 391, 392, - 392, 391, nil, 392, nil, nil, nil, nil, nil, nil, - nil, 392, 392, nil, 392, 392, 392, 392, nil, 392, - 392, nil, nil, 392, nil, nil, nil, nil, 392, 392, - 392, 392, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 392, 392, nil, 392, 392, - 392, 392, 392, 392, 392, 392, 392, nil, 392, nil, - nil, 392, 423, 423, 423, 423, 423, 423, 423, 423, - 423, 423, 423, nil, 423, 423, nil, nil, 423, 423, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 423, nil, 423, nil, 423, 423, - 423, 423, 423, 423, 423, nil, 423, nil, nil, nil, - nil, nil, nil, 457, 457, nil, nil, 457, nil, nil, - nil, nil, nil, 423, 423, 457, 457, nil, 457, 457, - 457, 457, nil, 457, 457, nil, nil, 457, nil, nil, - nil, nil, 457, 457, 457, 457, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 457, - 457, nil, 457, 457, 457, 457, 457, 457, 457, 457, - 457, nil, 457, 458, 458, 457, nil, 458, nil, nil, - nil, nil, nil, nil, nil, 458, 458, nil, 458, 458, - 458, 458, nil, 458, 458, nil, nil, 458, nil, nil, - nil, nil, 458, 458, 458, 458, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 458, - 458, nil, 458, 458, 458, 458, 458, 458, 458, 458, - 458, nil, 458, 466, 466, 458, nil, 466, nil, nil, - nil, nil, nil, nil, nil, 466, 466, nil, 466, 466, - 466, 466, nil, 466, 466, nil, nil, 466, nil, nil, - nil, nil, 466, 466, 466, 466, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 466, - 466, nil, 466, 466, 466, 466, 466, 466, 466, 466, - 466, nil, 466, 467, 467, 466, nil, 467, nil, nil, - nil, nil, nil, nil, nil, 467, 467, nil, 467, 467, - 467, 467, nil, 467, 467, nil, nil, 467, nil, nil, - nil, nil, 467, 467, 467, 467, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 467, - 467, nil, 467, 467, 467, 467, 467, 467, 467, 467, - 467, nil, 467, 498, 498, 467, nil, 498, nil, nil, - nil, nil, nil, nil, nil, 498, 498, nil, 498, 498, - 498, 498, nil, 498, 498, nil, nil, 498, nil, nil, - nil, nil, 498, 498, 498, 498, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 498, - 498, nil, 498, 498, 498, 498, 498, 498, 498, 498, - 498, nil, 498, 499, 499, 498, nil, 499, nil, nil, - nil, nil, nil, nil, nil, 499, 499, nil, 499, 499, - 499, 499, nil, 499, 499, nil, nil, 499, nil, nil, - nil, nil, 499, 499, 499, 499, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 499, - 499, nil, 499, 499, 499, 499, 499, 499, 499, 499, - 499, nil, 499, 505, 505, 499, nil, 505, nil, nil, - nil, nil, nil, nil, nil, 505, 505, nil, 505, 505, - 505, 505, nil, 505, 505, nil, nil, 505, nil, nil, - nil, nil, 505, 505, 505, 505, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 505, - 505, nil, 505, 505, 505, 505, 505, 505, 505, 505, - 505, nil, 505, 507, 507, 505, nil, 507, nil, nil, - nil, nil, nil, nil, nil, 507, 507, nil, 507, 507, - 507, 507, nil, 507, 507, nil, nil, 507, nil, nil, - nil, nil, 507, 507, 507, 507, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 507, - 507, nil, 507, 507, 507, 507, 507, 507, 507, 507, - 507, nil, 507, 578, 578, 507, nil, 578, nil, nil, - nil, nil, nil, nil, nil, 578, 578, nil, 578, 578, - 578, 578, nil, 578, 578, nil, nil, 578, nil, nil, - nil, nil, 578, 578, 578, 578, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 578, - 578, nil, 578, 578, 578, 578, 578, 578, 578, 578, - 578, nil, 578, 579, 579, 578, nil, 579, nil, nil, - nil, nil, nil, nil, nil, 579, 579, nil, 579, 579, - 579, 579, nil, 579, 579, nil, nil, 579, nil, nil, - nil, nil, 579, 579, 579, 579, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 579, - 579, nil, 579, 579, 579, 579, 579, 579, 579, 579, - 579, nil, 579, 823, 823, 579, nil, 823, nil, nil, - nil, nil, nil, nil, nil, 823, 823, nil, 823, 823, - 823, 823, nil, 823, 823, nil, nil, 823, nil, nil, - nil, nil, 823, 823, 823, 823, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 823, - 823, nil, 823, 823, 823, 823, 823, 823, 823, 823, - 823, nil, 823, 824, 824, 823, nil, 824, nil, nil, - nil, nil, nil, nil, nil, 824, 824, nil, 824, 824, - 824, 824, nil, 824, 824, nil, nil, 824, nil, nil, - nil, nil, 824, 824, 824, 824, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 824, - 824, nil, 824, 824, 824, 824, 824, 824, 824, 824, - 824, nil, 824, nil, nil, 824, 480, 480, 480, 480, - 480, 480, 480, 480, 480, 480, 480, nil, 480, 480, - nil, nil, 480, 480, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 480, nil, - 480, nil, 480, 480, 480, 480, 480, 480, 480, nil, - 480, nil, 731, 731, 731, 731, 731, 731, 731, 731, - 731, 731, 731, nil, 731, 731, 480, 480, 731, 731, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 731, nil, 731, nil, 731, 731, - 731, 731, 731, 731, 731, nil, 731, nil, 767, 767, - 767, 767, 767, 767, 767, 767, 767, 767, 767, nil, - 767, 767, 731, 731, 767, 767, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 767, nil, 767, nil, 767, 767, 767, 767, 767, 767, - 767, nil, 767, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 767 ] - -racc_action_pointer = [ - 1233, 30, nil, -98, 863, 4770, 4891, 5012, -53, 2, - 71, 90, 160, 218, 174, 130, nil, 5125, 5246, 6094, - 234, nil, 5367, 5488, 5609, 292, 138, 5730, 5851, nil, - 1355, 5972, 6093, nil, 146, 316, 245, 346, 6214, 6335, - 6456, 183, 300, nil, nil, nil, nil, nil, nil, nil, - 214, 1477, 6577, 6698, 6819, 58, 6940, 7061, nil, nil, - 735, 7182, 7303, 7424, 22775, nil, nil, nil, nil, nil, - -92, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 7545, nil, nil, nil, 7666, nil, nil, nil, - nil, nil, nil, nil, nil, 311, nil, 863, nil, nil, - nil, 7787, 7908, 8029, 8150, 8271, 981, nil, 221, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 196, nil, 1599, 1721, 8392, 8513, - 8634, 8755, 23000, 23060, 8876, 8997, 9118, nil, 377, -67, - 279, -52, 212, 274, 1843, nil, nil, 9239, 9360, 9481, - 9602, 9723, 9844, 9965, 10086, 10207, 10328, 10449, 10570, 10691, - 10812, 10933, 11054, 11175, 11296, 11417, 11538, 11659, 11780, 11901, - 12022, 12143, 12264, 12385, nil, nil, nil, 7183, nil, 242, - 254, 12506, nil, 12627, 310, nil, nil, nil, nil, nil, - nil, 23120, 23180, 313, 12748, 12869, nil, nil, nil, nil, - nil, nil, nil, 12990, 325, 1965, 333, 352, 315, 13111, - 2087, 399, 496, 430, 520, 411, 382, 161, nil, 443, - 430, nil, nil, 335, 472, 486, 521, nil, 498, nil, - 13232, nil, 565, 566, 457, nil, 460, 119, 136, 13353, - 493, 147, 479, 244, nil, 482, -7, 8, 13474, 13595, - -67, 32, 464, -9, 522, 545, -1, 575, nil, nil, - 319, 345, 115, nil, 614, nil, 9, 13716, nil, nil, - 311, 419, 453, 456, 457, 478, 488, 499, nil, 519, - nil, 13837, nil, 149, 207, 235, 246, -35, 279, nil, - 1103, nil, nil, nil, nil, nil, nil, 13958, nil, nil, - nil, nil, 509, 511, nil, nil, 735, nil, 495, 14071, - nil, 499, nil, nil, 7304, 535, 340, 342, 14192, nil, - nil, 0, 541, 107, nil, 14313, 14434, nil, 7425, nil, - nil, 23240, 23300, 14555, -33, 14676, 14797, 14918, 614, 863, - 377, 384, 566, 574, 575, 576, 2941, 3063, 3185, 1599, - 980, 1721, 1843, 1965, 2087, 2209, 2331, 2453, 2575, 249, - 465, 2697, 2819, 23348, -48, nil, 15039, nil, 15160, 514, - nil, 15281, 321, nil, nil, 376, nil, nil, 563, 531, - -64, 529, 630, nil, nil, 15402, -27, -13, 571, nil, - 572, 544, nil, nil, nil, 586, 15523, 23414, 23474, 617, - 606, nil, nil, 15644, 15765, 15886, 23534, 23594, 13112, 16007, - 688, 16128, nil, 582, nil, nil, 16249, nil, nil, 16370, - 24122, nil, 16491, nil, nil, nil, 2209, 711, nil, nil, - 2331, 68, 109, 708, 716, 2453, 16612, 16733, 23654, 23714, - 4, nil, nil, 658, nil, 23774, 16854, 23834, nil, nil, - 16975, 100, -34, 2575, 997, nil, nil, nil, -32, nil, - nil, nil, 598, nil, nil, nil, 609, nil, 147, nil, - nil, 606, nil, nil, 17096, nil, nil, 17209, 17330, nil, - 349, 17451, 17572, 648, nil, nil, 17693, 649, nil, 17814, - 86, 115, 493, 614, 655, 1106, 17935, 18056, nil, 2697, - 18177, 621, nil, 666, 18298, nil, 674, nil, 663, nil, - nil, nil, nil, nil, 113, nil, 673, 674, 23894, 23954, - 18419, 22933, 69, 643, 18540, nil, 683, nil, 2819, 2941, - nil, 1, nil, 681, 63, 112, 687, 347, 735, 688, - 19630, 712, 714, -2, 772, nil, 3063, 654, 707, nil, - nil, 707, 18661, nil, nil, 506, nil, 800, nil, nil, - nil, nil, nil, 810, nil, 814, 700, 15, 18782, 738, - 13, 23, 25, 75, 18903, 348, 788, nil, 740, 3185, - 331, nil, nil, 835, 3307, 1284, 337, 718, 719, 726, - nil, nil, nil, nil, nil, 724, nil, nil, nil, nil, - 806, nil, nil, 809, 22885, 773, nil, nil, nil, nil, - nil, 3429, nil, nil, nil, nil, nil, 20114, 744, 19024, - 19145, nil, 21324, nil, 21566, nil, nil, 21929, nil, 22292, - 19266, 19387, 19508, 167, 22534, nil, 745, 984, 19629, nil, - 770, 868, 760, nil, 19750, 761, 3551, nil, nil, 802, - 803, -63, 871, 19871, nil, 19992, 772, nil, 832, 813, - 933, 738, nil, nil, 3673, nil, nil, 31, 20113, nil, - nil, 24168, 938, nil, 20234, 941, 3795, 3917, nil, nil, - 20355, 4039, nil, 26, 133, nil, 942, nil, 4161, nil, - 946, 836, nil, 1406, nil, -43, nil, nil, 436, 20476, - nil, nil, nil, nil, 862, nil, nil, 24214, 20597, 20718, - 863, 866, 920, 907, 847, 884, nil, nil, nil, nil, - 20839, nil, 873, 903, 869, nil, 20960, 870, 21081, nil, - nil, nil, nil, nil, 4283, nil, nil, nil, 32, nil, - 999, 1001, 21202, 332, nil, nil, 1002, nil, 936, 898, - 899, nil, nil, 900, 899, nil, nil, 1528, nil, nil, - 21323, 1106, 21444, 24014, 24074, 918, 933, 21565, 5973, nil, - nil, nil, 21686, 914, nil, 21807, 918, 1046, 4405, nil, - nil, nil, nil, nil, nil, 4527, nil, nil, 282, nil, - nil, nil, 4649, nil, 927, 959, 965, 362, 400, 482, - 977, 21928, nil, nil, 22049, 931, nil, 22170, nil, nil, - 545, 1054, 938, 1057, 972, 22291, 980, nil, 945, nil, - 22412, 948, nil, nil, nil, nil, 22533, nil, nil, 22654, - nil, nil, 952, nil ] - -racc_action_default = [ - -4, -497, -1, -485, -5, -497, -497, -497, -497, -497, - -497, -497, -497, -497, -271, -32, -33, -497, -497, -38, - -40, -41, -282, -315, -316, -45, -249, -361, -285, -58, - -4, -62, -67, -68, -497, -428, -497, -497, -497, -497, - -497, -487, -214, -264, -265, -266, -267, -268, -269, -270, - -475, -4, -497, -496, -467, -288, -497, -497, -292, -295, - -485, -497, -497, -497, -497, -317, -318, -381, -382, -383, - -384, -385, -399, -388, -401, -401, -392, -397, -411, -401, - -413, -414, -417, -418, -419, -420, -421, -422, -423, -424, - -425, -426, -427, -430, -431, -497, -3, -486, -492, -493, - -494, -497, -497, -497, -497, -497, -6, -8, -497, -93, - -94, -95, -96, -97, -98, -99, -100, -101, -105, -106, - -107, -108, -109, -110, -111, -112, -113, -114, -115, -116, - -117, -118, -119, -120, -121, -122, -123, -124, -125, -126, - -127, -128, -129, -130, -131, -132, -133, -134, -135, -136, - -137, -138, -139, -140, -141, -142, -143, -144, -145, -146, - -147, -148, -149, -150, -151, -152, -153, -154, -155, -156, - -157, -158, -159, -160, -161, -162, -163, -164, -165, -166, - -167, -168, -169, -170, -13, -102, -4, -4, -497, -497, - -497, -496, -497, -497, -497, -497, -497, -36, -497, -428, - -497, -271, -497, -497, -4, -37, -206, -497, -497, -497, - -497, -497, -497, -497, -497, -497, -497, -497, -497, -497, - -497, -497, -497, -497, -497, -497, -497, -497, -497, -497, - -497, -497, -497, -497, -351, -353, -42, -215, -228, -258, - -258, -497, -236, -497, -259, -282, -315, -316, -470, -43, - -44, -497, -497, -50, -496, -497, -287, -356, -362, -364, - -56, -360, -57, -497, -58, -4, -497, -497, -63, -65, - -4, -72, -497, -497, -79, -285, -487, -497, -319, -361, - -497, -66, -70, -278, -415, -416, -497, -191, -192, -207, - -497, -488, -373, -497, -274, -216, -487, -489, -489, -497, - -497, -489, -497, -489, -289, -39, -497, -497, -497, -497, - -485, -497, -486, -428, -497, -497, -271, -497, -331, -332, - -88, -89, -497, -91, -497, -271, -497, -497, -428, -308, - -93, -94, -131, -132, -148, -153, -160, -163, -310, -497, - -465, -497, -386, -497, -497, -497, -497, -497, -497, 894, - -7, -495, -14, -15, -16, -17, -18, -497, -10, -11, - -12, -103, -497, -497, -21, -29, -171, -259, -497, -497, - -22, -30, -31, -23, -173, -497, -476, -477, -226, -478, - -479, -476, -249, -477, -359, -481, -482, -28, -180, -34, - -35, -497, -497, -496, -278, -497, -497, -497, -181, -182, - -183, -184, -185, -186, -187, -188, -193, -194, -195, -196, - -197, -198, -199, -200, -201, -202, -203, -204, -205, -208, - -209, -210, -211, -497, -347, -229, -497, -231, -497, -258, - -256, -497, -249, -476, -477, -249, -48, -51, -497, -487, - -487, -258, -228, -250, -251, -252, -347, -347, -497, -284, - -497, -59, -276, -71, -64, -497, -496, -497, -497, -78, - -497, -415, -416, -497, -497, -497, -497, -497, -212, -497, - -496, -496, -273, -487, -217, -218, -491, -490, -220, -491, - -487, -280, -491, -469, -281, -468, -4, -320, -321, -322, - -4, -497, -497, -497, -497, -4, -497, -496, -497, -497, - -278, -301, -88, -89, -90, -497, -496, -497, -304, -432, - -497, -497, -497, -4, -445, -312, -483, -484, -487, -387, - -400, -403, -497, -405, -389, -402, -497, -391, -497, -394, - -396, -497, -412, -9, -497, -19, -20, -497, -497, -263, - -279, -497, -497, -52, -227, -357, -497, -54, -358, -497, - -476, -477, -480, -277, -497, -171, -497, -497, -349, -4, - -497, -258, -257, -260, -497, -471, -497, -235, -497, -472, - -46, -354, -47, -355, -347, -222, -497, -497, -497, -497, - -497, -38, -497, -258, -497, -248, -497, -254, -4, -4, - -283, -59, -69, -497, -476, -477, -226, -75, -77, -497, - -179, -189, -190, -497, -496, -329, -4, -374, -496, -375, - -376, -497, -497, -260, -221, -496, -323, -496, -293, -324, - -325, -326, -296, -497, -299, -497, -367, -497, -497, -497, - -476, -477, -480, -277, -497, -88, -89, -92, -497, -4, - -497, -434, -306, -497, -4, -445, -497, -464, -464, -464, - -444, -446, -447, -448, -449, -450, -451, -454, -456, -457, - -459, -460, -461, -497, -497, -497, -404, -407, -408, -409, - -410, -4, -390, -393, -395, -398, -104, -172, -261, -497, - -497, -25, -175, -26, -176, -53, -27, -177, -55, -178, - -497, -497, -497, -279, -213, -333, -335, -345, -497, -348, - -497, -497, -258, -233, -497, -258, -4, -223, -224, -226, - -226, -487, -497, -497, -241, -497, -258, -253, -497, -497, - -497, -73, -286, -2, -4, -380, -330, -497, -497, -378, - -275, -487, -497, -327, -497, -497, -4, -4, -298, -300, - -497, -4, -369, -279, -497, -279, -497, -433, -4, -309, - -497, -487, -436, -497, -440, -497, -442, -443, -497, -497, - -458, -462, -313, -466, -497, -262, -24, -174, -497, -336, - -80, -497, -497, -87, -344, -497, -346, -350, -352, -230, - -497, -232, -497, -497, -258, -238, -497, -258, -497, -247, - -255, -363, -365, -379, -4, -377, -219, -290, -497, -291, - -497, -497, -497, -496, -302, -305, -497, -311, -497, -464, - -464, -452, -463, -464, -497, -455, -453, -445, -406, -334, - -497, -341, -496, -497, -497, -86, -497, -497, -258, -49, - -225, -237, -497, -258, -243, -497, -258, -373, -4, -294, - -297, -368, -366, -370, -371, -4, -307, -435, -497, -438, - -439, -441, -4, -337, -340, -497, -497, -82, -84, -83, - -85, -497, -343, -234, -497, -258, -239, -497, -242, -372, - -496, -497, -464, -497, -497, -497, -81, -342, -258, -244, - -497, -258, -328, -303, -437, -314, -497, -339, -240, -497, - -245, -338, -258, -246 ] - -racc_goto_table = [ - 10, 205, 240, 240, 240, 10, 268, 438, 112, 112, - 100, 300, 338, 470, 293, 644, 242, 242, 242, 440, - 107, 185, 238, 238, 238, 115, 115, 117, 117, 494, - 10, 486, 490, 650, 303, 437, 239, 239, 239, 253, - 260, 262, 604, 290, 365, 372, 732, 618, 622, 96, - 565, 10, 815, 296, 257, 261, 281, 571, 504, 520, - 573, 318, 529, 236, 249, 250, 112, 100, 301, 559, - 810, 264, 813, 266, 106, 475, 478, 344, 345, 483, - 1, 485, 348, 723, 754, 756, 757, 326, 329, 306, - 307, 588, 589, 310, 97, 13, 184, 10, 319, 357, - 13, 565, 574, 534, 587, 10, 311, 443, 586, 718, - 340, 302, 198, 198, 304, 317, 508, 198, 198, 198, - 339, 515, 473, 308, 736, 13, 272, 272, 309, 737, - 634, 278, 278, 845, 352, 353, 354, 355, 639, 748, - 513, 197, 514, 664, 817, 815, 13, 198, 198, 375, - 696, 198, 198, 700, 424, 198, 314, 324, 324, 446, - 447, 278, 278, 278, 650, 872, 350, 627, 842, 608, - 727, 364, 370, 373, 356, 342, 294, 387, 343, 346, - 305, 305, 528, 347, 305, 666, 10, 10, 671, 735, - 751, 296, 13, 809, 811, 386, 198, 198, 198, 198, - 13, 2, 368, 368, 10, nil, nil, nil, nil, nil, - nil, 623, nil, nil, nil, nil, nil, nil, nil, 706, - nil, nil, nil, 605, 610, 305, 305, 305, 305, nil, - nil, 267, nil, nil, 240, 240, nil, nil, nil, nil, - nil, 637, nil, 240, 674, nil, 849, 850, 242, 242, - 851, nil, nil, nil, 442, 238, nil, 242, nil, nil, - nil, nil, nil, 238, nil, 10, nil, nil, 441, 239, - 10, nil, nil, nil, nil, nil, nil, 239, 460, nil, - nil, 13, 13, 198, 198, 198, 198, nil, nil, 198, - 198, 198, 14, 454, nil, 439, 444, 14, 474, 13, - 804, 882, nil, 427, 448, 257, 264, 261, 450, 884, - nil, 264, nil, 455, nil, nil, nil, 100, 852, 389, - 390, nil, 14, 274, 274, 685, 565, 609, nil, 688, - nil, nil, nil, 509, 571, 573, 650, 565, nil, nil, - nil, 491, 492, 14, nil, 711, nil, nil, nil, 198, - 198, 554, 741, 316, 325, 325, 493, 725, 198, 112, - 13, 729, nil, nil, 272, 13, nil, nil, 605, 278, - 605, 533, nil, nil, nil, 843, 115, nil, 117, nil, - nil, nil, nil, nil, nil, nil, nil, 362, 363, 14, - nil, 543, nil, 296, 386, 547, nil, 14, nil, nil, - nil, nil, nil, 198, 198, 267, 561, nil, nil, nil, - 548, nil, nil, nil, 593, nil, nil, nil, nil, nil, - nil, nil, 198, nil, nil, 583, nil, nil, nil, nil, - nil, nil, 305, 305, nil, nil, 198, nil, nil, 585, - nil, 576, 577, nil, nil, 570, nil, nil, 572, nil, - nil, 512, 794, nil, nil, 629, 296, 565, nil, nil, - 386, nil, nil, nil, 638, 518, 267, nil, nil, 386, - nil, 267, nil, nil, nil, 611, 643, nil, 14, 14, - nil, nil, 614, nil, nil, 368, 10, nil, 198, nil, - 10, nil, 567, nil, nil, 10, 14, 296, 619, 619, - nil, 386, 565, nil, nil, nil, 296, 386, nil, nil, - 626, nil, nil, 10, nil, nil, nil, nil, 641, 642, - 665, 844, nil, 838, 681, 683, nil, nil, nil, 686, - nil, nil, 695, nil, nil, nil, 112, nil, nil, nil, - 198, nil, nil, 640, nil, nil, nil, nil, 676, nil, - nil, 198, nil, 115, nil, 117, 605, 14, 869, 10, - 561, 274, 14, nil, 198, nil, nil, nil, nil, 294, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 712, 13, nil, nil, nil, 13, nil, nil, 10, 10, - 13, nil, 198, 603, nil, nil, 378, 382, 35, nil, - nil, 198, 746, 35, nil, 198, 10, 750, 13, nil, - nil, nil, 762, 12, nil, nil, nil, nil, 12, nil, - nil, nil, nil, 605, 703, nil, nil, 548, 35, 271, - 271, nil, nil, nil, 305, nil, 198, 198, nil, 10, - nil, 198, nil, 12, 10, nil, 714, 747, nil, 35, - nil, nil, 272, 752, 13, 432, 435, 278, nil, 313, - 328, 328, 328, 766, 12, nil, 112, 744, nil, nil, - nil, 10, nil, nil, nil, 198, nil, nil, nil, nil, - nil, nil, nil, 13, 13, nil, nil, 615, nil, nil, - nil, 617, nil, 787, nil, 35, 625, 774, 776, nil, - nil, 13, nil, 35, nil, nil, 10, 785, nil, nil, - 12, 806, nil, 783, nil, nil, nil, nil, 12, nil, - nil, nil, nil, nil, 10, nil, nil, 784, 795, 198, - nil, nil, nil, 796, 13, nil, 10, 10, nil, 13, - nil, 10, nil, nil, 819, nil, nil, nil, 10, nil, - nil, 619, nil, 808, nil, nil, nil, nil, 305, nil, - 701, nil, nil, nil, nil, 779, 13, 798, 781, nil, - nil, nil, nil, nil, nil, 198, nil, nil, 14, 789, - 856, nil, 14, nil, 35, 35, nil, 14, nil, 719, - 720, nil, 771, 771, 10, 378, 382, 278, 278, 12, - 12, 13, 35, nil, nil, 14, nil, 726, nil, nil, - nil, nil, 865, nil, 670, 873, nil, 12, nil, 13, - 853, 854, 296, 771, nil, nil, 386, 862, 278, 198, - nil, 13, 13, nil, nil, nil, 13, nil, 10, nil, - nil, nil, nil, 13, nil, 10, nil, 831, nil, 274, - 834, 14, 10, nil, nil, nil, nil, nil, 305, nil, - nil, 877, 599, 35, 272, nil, nil, 271, 35, 278, - nil, 599, 764, nil, nil, 887, nil, nil, 12, nil, - 14, 14, nil, 12, nil, nil, 891, nil, nil, 13, - nil, 863, nil, nil, nil, nil, 866, nil, 14, 868, - nil, nil, nil, 599, nil, nil, nil, 782, nil, 599, - nil, nil, nil, nil, nil, 771, 771, 198, nil, nil, - 278, 278, 771, nil, nil, 793, nil, 278, 879, nil, - nil, 14, nil, 13, nil, nil, 14, 800, 801, nil, - 13, 888, 803, nil, 890, nil, nil, 13, nil, nil, - nil, nil, nil, nil, nil, 893, 771, nil, nil, nil, - nil, 278, nil, 14, nil, nil, nil, nil, nil, nil, - 771, nil, nil, nil, nil, 278, nil, nil, nil, nil, - nil, 771, 709, 710, nil, nil, 278, nil, nil, 773, - 773, nil, nil, nil, nil, 837, nil, nil, 14, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 14, nil, nil, nil, - 773, nil, nil, nil, nil, nil, nil, nil, 14, 14, - nil, nil, nil, 14, nil, nil, nil, nil, nil, 870, - 14, nil, nil, nil, nil, nil, 871, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 274, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 35, nil, 14, nil, 35, nil, - nil, nil, nil, 35, nil, nil, nil, nil, nil, 12, - nil, nil, nil, 12, nil, nil, nil, nil, 12, nil, - nil, 35, 773, 773, nil, nil, nil, nil, nil, 773, - nil, nil, nil, nil, nil, nil, 12, nil, nil, nil, - 14, nil, nil, nil, nil, nil, nil, 14, nil, nil, - nil, nil, nil, nil, 14, nil, nil, nil, nil, nil, - nil, nil, nil, 773, nil, 271, nil, 35, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 773, nil, nil, - nil, nil, 12, nil, nil, nil, nil, nil, 773, nil, - nil, nil, nil, nil, nil, nil, 35, 35, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 12, 12, nil, 35, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 12, - nil, nil, nil, nil, nil, nil, nil, nil, 599, nil, - nil, nil, nil, nil, nil, nil, nil, 35, nil, nil, - nil, nil, 35, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 12, nil, nil, nil, nil, 12, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 35, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 12, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 770, 770, nil, nil, nil, - nil, nil, nil, nil, 35, nil, nil, 206, nil, nil, - nil, 237, 237, 237, nil, nil, nil, nil, nil, 12, - nil, nil, 35, nil, nil, nil, 770, 287, 288, 289, - nil, nil, nil, nil, 35, 35, nil, 12, nil, 35, - nil, nil, 237, 237, nil, nil, 35, nil, nil, 12, - 12, nil, nil, nil, 12, nil, nil, nil, nil, 367, - 371, 12, nil, nil, nil, nil, nil, 271, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 35, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 12, nil, nil, - nil, nil, 429, nil, 430, nil, nil, nil, 770, 770, - nil, nil, nil, nil, nil, 770, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 35, nil, nil, nil, - nil, nil, nil, 35, nil, nil, nil, nil, nil, nil, - 35, 12, nil, nil, nil, nil, nil, nil, 12, 770, - nil, nil, nil, nil, nil, 12, nil, nil, nil, nil, - nil, nil, nil, 770, nil, nil, nil, 366, 237, 374, - 237, nil, nil, 388, 770, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 206, 398, 399, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, nil, nil, nil, nil, nil, nil, nil, - 237, nil, 237, nil, nil, nil, nil, nil, nil, nil, - 539, nil, nil, 237, 237, nil, nil, nil, nil, nil, - nil, nil, 237, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 468, - nil, nil, nil, nil, nil, nil, nil, nil, 480, nil, - nil, nil, nil, nil, nil, nil, nil, 563, nil, 566, - nil, nil, 569, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 582, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 607, nil, nil, nil, nil, 613, nil, nil, - 566, nil, nil, 613, nil, nil, nil, nil, 237, nil, - nil, nil, nil, nil, nil, nil, nil, 367, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 237, nil, 388, 555, 374, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 678, - nil, nil, nil, nil, nil, 237, nil, 237, nil, nil, - 237, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 702, nil, nil, 581, 705, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 237, nil, nil, nil, nil, - nil, 563, 600, 601, 602, 716, nil, 26, nil, nil, - 237, nil, 26, nil, nil, 237, nil, nil, 237, nil, - nil, 237, nil, nil, 26, 26, nil, nil, nil, 26, - 26, 26, nil, nil, nil, 237, 237, 26, nil, nil, - nil, nil, nil, nil, nil, 237, nil, nil, nil, 742, - nil, nil, nil, nil, nil, nil, nil, nil, 26, 26, - 26, nil, nil, 26, 26, nil, nil, 26, nil, nil, - nil, nil, nil, nil, nil, nil, 677, 237, nil, nil, - 682, 684, nil, nil, nil, 687, nil, nil, 689, nil, - nil, nil, nil, nil, nil, 694, nil, nil, nil, 237, - 765, nil, nil, 237, 26, nil, nil, nil, 26, 26, - 26, 26, 26, nil, nil, nil, nil, nil, nil, 237, - nil, nil, nil, 237, nil, 566, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 566, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 731, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 613, nil, nil, nil, nil, nil, 237, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 816, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 26, 26, 26, 26, 26, 26, nil, - nil, 26, 26, 26, nil, nil, nil, 833, nil, 836, - nil, 26, nil, nil, nil, nil, nil, nil, 237, 767, - nil, nil, nil, 841, nil, nil, nil, nil, nil, 682, - 684, 687, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 237, nil, nil, nil, nil, nil, nil, - nil, nil, 237, 563, 237, nil, 566, nil, nil, nil, - nil, 26, 26, nil, nil, nil, nil, nil, nil, nil, - 26, nil, 26, nil, nil, nil, nil, 26, nil, 237, - nil, nil, nil, nil, nil, 878, nil, nil, 881, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 237, nil, - nil, 566, nil, nil, nil, nil, nil, 767, nil, nil, - 892, nil, nil, nil, nil, 26, 26, nil, nil, 828, - nil, nil, nil, nil, nil, 237, nil, 237, nil, nil, - nil, nil, nil, nil, 26, nil, nil, nil, nil, nil, - nil, 237, nil, nil, nil, nil, nil, nil, 26, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 237, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 237, nil, nil, 237, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 26, nil, nil, 237, nil, nil, 237, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 237, - nil, nil, nil, nil, nil, nil, nil, nil, 237, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 26, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 26, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 26, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 26, nil, nil, nil, 26, nil, nil, - nil, nil, 26, nil, 26, nil, nil, nil, nil, nil, - nil, nil, nil, 26, nil, nil, nil, 26, nil, nil, - 26, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 26, 26, - nil, nil, nil, 26, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 26, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 26, nil, nil, - nil, nil, nil, nil, nil, 26, 26, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 26, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 26, nil, nil, nil, nil, 26, nil, nil, nil, - nil, 26, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 26, nil, - nil, nil, nil, nil, nil, nil, nil, 26, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 26, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 26, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 26, nil, 26, 26, nil, nil, nil, 26, nil, - nil, nil, nil, nil, nil, 26, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 26, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 26, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 26, nil, nil, nil, nil, - nil, nil, 26, nil, nil, nil, nil, nil, nil, 26 ] - -racc_goto_check = [ - 14, 15, 56, 56, 56, 14, 39, 53, 45, 45, - 82, 19, 44, 4, 3, 83, 60, 60, 60, 29, - 11, 11, 26, 26, 26, 48, 48, 49, 49, 79, - 14, 76, 76, 126, 56, 32, 54, 54, 54, 31, - 31, 31, 5, 51, 21, 21, 77, 78, 78, 8, - 131, 14, 128, 26, 57, 57, 40, 58, 42, 117, - 58, 14, 117, 28, 28, 28, 45, 82, 54, 33, - 124, 36, 124, 37, 9, 55, 55, 114, 114, 55, - 1, 55, 114, 6, 125, 125, 125, 43, 43, 13, - 13, 33, 33, 13, 10, 18, 12, 14, 16, 24, - 18, 131, 34, 50, 61, 14, 8, 62, 64, 65, - 72, 73, 18, 18, 74, 80, 81, 18, 18, 18, - 84, 85, 86, 87, 88, 18, 18, 18, 89, 90, - 91, 52, 52, 92, 13, 13, 13, 13, 93, 94, - 95, 23, 96, 97, 98, 128, 18, 18, 18, 19, - 99, 18, 18, 100, 102, 18, 18, 18, 18, 104, - 105, 52, 52, 52, 126, 124, 9, 106, 107, 108, - 109, 15, 15, 15, 9, 112, 23, 15, 113, 115, - 23, 23, 116, 118, 23, 119, 14, 14, 120, 5, - 121, 26, 18, 123, 127, 45, 18, 18, 18, 18, - 18, 2, 54, 54, 14, nil, nil, nil, nil, nil, - nil, 79, nil, nil, nil, nil, nil, nil, nil, 33, - nil, nil, nil, 53, 53, 23, 23, 23, 23, nil, - nil, 2, nil, nil, 56, 56, nil, nil, nil, nil, - nil, 42, nil, 56, 117, nil, 125, 125, 60, 60, - 125, nil, nil, nil, 26, 26, nil, 60, nil, nil, - nil, nil, nil, 26, nil, 14, nil, nil, 54, 54, - 14, nil, nil, nil, nil, nil, nil, 54, 51, nil, - nil, 18, 18, 18, 18, 18, 18, nil, nil, 18, - 18, 18, 20, 40, nil, 28, 28, 20, 51, 18, - 78, 77, nil, 59, 28, 57, 36, 57, 37, 125, - nil, 36, nil, 37, nil, nil, nil, 82, 83, 23, - 23, nil, 20, 20, 20, 32, 131, 21, nil, 32, - nil, nil, nil, 82, 58, 58, 126, 131, nil, nil, - nil, 13, 13, 20, nil, 29, nil, nil, nil, 18, - 18, 19, 76, 20, 20, 20, 8, 53, 18, 45, - 18, 53, nil, nil, 18, 18, nil, nil, 53, 52, - 53, 11, nil, nil, nil, 5, 48, nil, 49, nil, - nil, nil, nil, nil, nil, nil, nil, 2, 2, 20, - nil, 31, nil, 26, 45, 31, nil, 20, nil, nil, - nil, nil, nil, 18, 18, 2, 56, nil, nil, nil, - 57, nil, nil, nil, 19, nil, nil, nil, nil, nil, - nil, nil, 18, nil, nil, 56, nil, nil, nil, nil, - nil, nil, 23, 23, nil, nil, 18, nil, nil, 60, - nil, 51, 51, nil, nil, 31, nil, nil, 31, nil, - nil, 23, 76, nil, nil, 19, 26, 131, nil, nil, - 45, nil, nil, nil, 19, 23, 2, nil, nil, 45, - nil, 2, nil, nil, nil, 51, 3, nil, 20, 20, - nil, nil, 51, nil, nil, 54, 14, nil, 18, nil, - 14, nil, 59, nil, nil, 14, 20, 26, 82, 82, - nil, 45, 131, nil, nil, nil, 26, 45, nil, nil, - 54, nil, nil, 14, nil, nil, nil, nil, 82, 82, - 51, 79, nil, 76, 15, 15, nil, nil, nil, 15, - nil, nil, 39, nil, nil, nil, 45, nil, nil, nil, - 18, nil, nil, 13, nil, nil, nil, nil, 11, nil, - nil, 18, nil, 48, nil, 49, 53, 20, 4, 14, - 56, 20, 20, nil, 18, nil, nil, nil, nil, 23, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 26, 18, nil, nil, nil, 18, nil, nil, 14, 14, - 18, nil, 18, 23, nil, nil, 30, 30, 41, nil, - nil, 18, 3, 41, nil, 18, 14, 3, 18, nil, - nil, nil, 44, 17, nil, nil, nil, nil, 17, nil, - nil, nil, nil, 53, 59, nil, nil, 57, 41, 41, - 41, nil, nil, nil, 23, nil, 18, 18, nil, 14, - nil, 18, nil, 17, 14, nil, 59, 82, nil, 41, - nil, nil, 18, 82, 18, 30, 30, 52, nil, 41, - 41, 41, 41, 15, 17, nil, 45, 13, nil, nil, - nil, 14, nil, nil, nil, 18, nil, nil, nil, nil, - nil, nil, nil, 18, 18, nil, nil, 2, nil, nil, - nil, 2, nil, 56, nil, 41, 2, 14, 14, nil, - nil, 18, nil, 41, nil, nil, 14, 60, nil, nil, - 17, 3, nil, 51, nil, nil, nil, nil, 17, nil, - nil, nil, nil, nil, 14, nil, nil, 54, 14, 18, - nil, nil, nil, 51, 18, nil, 14, 14, nil, 18, - nil, 14, nil, nil, 39, nil, nil, nil, 14, nil, - nil, 82, nil, 51, nil, nil, nil, nil, 23, nil, - 2, nil, nil, nil, nil, 59, 18, 13, 59, nil, - nil, nil, nil, nil, nil, 18, nil, nil, 20, 59, - 19, nil, 20, nil, 41, 41, nil, 20, nil, 2, - 2, nil, 18, 18, 14, 30, 30, 52, 52, 17, - 17, 18, 41, nil, nil, 20, nil, 2, nil, nil, - nil, nil, 56, nil, 20, 3, nil, 17, nil, 18, - 14, 14, 26, 18, nil, nil, 45, 14, 52, 18, - nil, 18, 18, nil, nil, nil, 18, nil, 14, nil, - nil, nil, nil, 18, nil, 14, nil, 59, nil, 20, - 59, 20, 14, nil, nil, nil, nil, nil, 23, nil, - nil, 14, 30, 41, 18, nil, nil, 41, 41, 52, - nil, 30, 2, nil, nil, 14, nil, nil, 17, nil, - 20, 20, nil, 17, nil, nil, 14, nil, nil, 18, - nil, 59, nil, nil, nil, nil, 59, nil, 20, 59, - nil, nil, nil, 30, nil, nil, nil, 2, nil, 30, - nil, nil, nil, nil, nil, 18, 18, 18, nil, nil, - 52, 52, 18, nil, nil, 2, nil, 52, 59, nil, - nil, 20, nil, 18, nil, nil, 20, 2, 2, nil, - 18, 59, 2, nil, 59, nil, nil, 18, nil, nil, - nil, nil, nil, nil, nil, 59, 18, nil, nil, nil, - nil, 52, nil, 20, nil, nil, nil, nil, nil, nil, - 18, nil, nil, nil, nil, 52, nil, nil, nil, nil, - nil, 18, 30, 30, nil, nil, 52, nil, nil, 20, - 20, nil, nil, nil, nil, 2, nil, nil, 20, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 20, nil, nil, nil, - 20, nil, nil, nil, nil, nil, nil, nil, 20, 20, - nil, nil, nil, 20, nil, nil, nil, nil, nil, 2, - 20, nil, nil, nil, nil, nil, 2, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 20, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 41, nil, 20, nil, 41, nil, - nil, nil, nil, 41, nil, nil, nil, nil, nil, 17, - nil, nil, nil, 17, nil, nil, nil, nil, 17, nil, - nil, 41, 20, 20, nil, nil, nil, nil, nil, 20, - nil, nil, nil, nil, nil, nil, 17, nil, nil, nil, - 20, nil, nil, nil, nil, nil, nil, 20, nil, nil, - nil, nil, nil, nil, 20, nil, nil, nil, nil, nil, - nil, nil, nil, 20, nil, 41, nil, 41, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 20, nil, nil, - nil, nil, 17, nil, nil, nil, nil, nil, 20, nil, - nil, nil, nil, nil, nil, nil, 41, 41, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 17, 17, nil, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 17, - nil, nil, nil, nil, nil, nil, nil, nil, 30, nil, - nil, nil, nil, nil, nil, nil, nil, 41, nil, nil, - nil, nil, 41, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 17, nil, nil, nil, nil, 17, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 41, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 17, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 41, 41, nil, nil, nil, - nil, nil, nil, nil, 41, nil, nil, 25, nil, nil, - nil, 25, 25, 25, nil, nil, nil, nil, nil, 17, - nil, nil, 41, nil, nil, nil, 41, 25, 25, 25, - nil, nil, nil, nil, 41, 41, nil, 17, nil, 41, - nil, nil, 25, 25, nil, nil, 41, nil, nil, 17, - 17, nil, nil, nil, 17, nil, nil, nil, nil, 22, - 22, 17, nil, nil, nil, nil, nil, 41, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 41, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 17, nil, nil, - nil, nil, 22, nil, 22, nil, nil, nil, 41, 41, - nil, nil, nil, nil, nil, 41, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 41, nil, nil, nil, - nil, nil, nil, 41, nil, nil, nil, nil, nil, nil, - 41, 17, nil, nil, nil, nil, nil, nil, 17, 41, - nil, nil, nil, nil, nil, 17, nil, nil, nil, nil, - nil, nil, nil, 41, nil, nil, nil, 25, 25, 25, - 25, nil, nil, 25, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, nil, nil, nil, nil, nil, nil, nil, - 25, nil, 25, nil, nil, nil, nil, nil, nil, nil, - 22, nil, nil, 25, 25, nil, nil, nil, nil, nil, - nil, nil, 25, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 25, - nil, nil, nil, nil, nil, nil, nil, nil, 25, nil, - nil, nil, nil, nil, nil, nil, nil, 22, nil, 22, - nil, nil, 22, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 22, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 22, nil, nil, nil, nil, 22, nil, nil, - 22, nil, nil, 22, nil, nil, nil, nil, 25, nil, - nil, nil, nil, nil, nil, nil, nil, 22, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 25, nil, 25, 25, 25, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 22, - nil, nil, nil, nil, nil, 25, nil, 25, nil, nil, - 25, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 22, nil, nil, 25, 22, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 25, nil, nil, nil, nil, - nil, 22, 25, 25, 25, 22, nil, 35, nil, nil, - 25, nil, 35, nil, nil, 25, nil, nil, 25, nil, - nil, 25, nil, nil, 35, 35, nil, nil, nil, 35, - 35, 35, nil, nil, nil, 25, 25, 35, nil, nil, - nil, nil, nil, nil, nil, 25, nil, nil, nil, 22, - nil, nil, nil, nil, nil, nil, nil, nil, 35, 35, - 35, nil, nil, 35, 35, nil, nil, 35, nil, nil, - nil, nil, nil, nil, nil, nil, 25, 25, nil, nil, - 25, 25, nil, nil, nil, 25, nil, nil, 25, nil, - nil, nil, nil, nil, nil, 25, nil, nil, nil, 25, - 22, nil, nil, 25, 35, nil, nil, nil, 35, 35, - 35, 35, 35, nil, nil, nil, nil, nil, nil, 25, - nil, nil, nil, 25, nil, 22, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 22, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 25, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 22, nil, nil, nil, nil, nil, 25, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 22, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 35, 35, 35, 35, 35, 35, nil, - nil, 35, 35, 35, nil, nil, nil, 22, nil, 22, - nil, 35, nil, nil, nil, nil, nil, nil, 25, 25, - nil, nil, nil, 22, nil, nil, nil, nil, nil, 25, - 25, 25, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 25, nil, nil, nil, nil, nil, nil, - nil, nil, 25, 22, 25, nil, 22, nil, nil, nil, - nil, 35, 35, nil, nil, nil, nil, nil, nil, nil, - 35, nil, 35, nil, nil, nil, nil, 35, nil, 25, - nil, nil, nil, nil, nil, 22, nil, nil, 22, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 25, nil, - nil, 22, nil, nil, nil, nil, nil, 25, nil, nil, - 22, nil, nil, nil, nil, 35, 35, nil, nil, 25, - nil, nil, nil, nil, nil, 25, nil, 25, nil, nil, - nil, nil, nil, nil, 35, nil, nil, nil, nil, nil, - nil, 25, nil, nil, nil, nil, nil, nil, 35, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 25, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 25, nil, nil, 25, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 35, nil, nil, 25, nil, nil, 25, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 25, - nil, nil, nil, nil, nil, nil, nil, nil, 25, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 35, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 35, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 35, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 35, nil, nil, nil, 35, nil, nil, - nil, nil, 35, nil, 35, nil, nil, nil, nil, nil, - nil, nil, nil, 35, nil, nil, nil, 35, nil, nil, - 35, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 35, 35, - nil, nil, nil, 35, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 35, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 35, nil, nil, - nil, nil, nil, nil, nil, 35, 35, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 35, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 35, nil, nil, nil, nil, 35, nil, nil, nil, - nil, 35, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 35, nil, - nil, nil, nil, nil, nil, nil, nil, 35, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 35, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 35, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 35, nil, 35, 35, nil, nil, nil, 35, nil, - nil, nil, nil, nil, nil, 35, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 35, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 35, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 35, nil, nil, nil, nil, - nil, nil, 35, nil, nil, nil, nil, nil, nil, 35 ] - -racc_goto_pointer = [ - nil, 80, 201, -37, -279, -428, -521, nil, 46, 69, - 91, 14, 89, 33, 0, -17, 37, 613, 95, -42, - 292, -144, 1171, 124, -8, 1289, 0, nil, 41, -235, - 404, 13, -218, -355, -334, 1757, 41, 43, nil, -25, - 24, 598, -264, 25, -52, 2, nil, nil, 19, 21, - -258, 2, 100, -247, 14, -222, -20, 28, -375, 63, - -6, -341, -148, nil, -337, -478, nil, nil, nil, nil, - nil, nil, 46, 57, 59, nil, -275, -569, -444, -282, - 54, -210, 7, -499, 56, -218, -172, 65, -494, 69, - -493, -371, -671, -370, -503, -189, -196, -372, -618, -407, - -404, nil, -80, nil, -99, -99, -329, -635, -302, -438, - nil, nil, 105, 106, 3, 103, -164, -284, 106, -337, - -335, -455, nil, -560, -683, -563, -481, -559, -703, nil, - nil, -378 ] - -racc_goto_default = [ - nil, nil, 292, nil, nil, 733, nil, 3, nil, 4, - 312, nil, nil, nil, 202, 16, 11, 203, 286, nil, - 201, nil, 244, 15, nil, 19, 20, 21, nil, 25, - 596, nil, nil, nil, nil, 277, 29, nil, 31, 34, - 33, 199, 323, nil, 114, 380, 113, 116, 68, 69, - nil, nil, 42, 295, 297, nil, 298, 544, 545, 425, - 562, nil, nil, 255, nil, nil, 43, 44, 45, 46, - 47, 48, 49, nil, 256, 55, nil, nil, nil, nil, - nil, nil, 487, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 235, nil, 384, nil, nil, nil, nil, nil, nil, - 67, 70, 71, nil, nil, nil, nil, 525, nil, nil, - nil, 646, 647, 648, 649, nil, 812, 656, 657, 660, - 663, 248 ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 1, 133, :_reduce_1, - 4, 135, :_reduce_2, - 2, 134, :_reduce_3, - 0, 139, :_reduce_4, - 1, 139, :_reduce_5, - 2, 139, :_reduce_6, - 3, 139, :_reduce_7, - 0, 156, :_reduce_8, - 4, 141, :_reduce_9, - 3, 141, :_reduce_10, - 3, 141, :_reduce_11, - 3, 141, :_reduce_12, - 2, 141, :_reduce_13, - 3, 141, :_reduce_14, - 3, 141, :_reduce_15, - 3, 141, :_reduce_16, - 3, 141, :_reduce_17, - 3, 141, :_reduce_18, - 4, 141, :_reduce_19, - 4, 141, :_reduce_20, - 3, 141, :_reduce_21, - 3, 141, :_reduce_22, - 3, 141, :_reduce_23, - 6, 141, :_reduce_24, - 5, 141, :_reduce_25, - 5, 141, :_reduce_26, - 5, 141, :_reduce_27, - 3, 141, :_reduce_28, - 3, 141, :_reduce_29, - 3, 141, :_reduce_30, - 3, 141, :_reduce_31, - 1, 141, :_reduce_none, - 1, 155, :_reduce_none, - 3, 155, :_reduce_34, - 3, 155, :_reduce_35, - 2, 155, :_reduce_36, - 2, 155, :_reduce_37, - 1, 155, :_reduce_none, - 1, 145, :_reduce_none, - 1, 147, :_reduce_none, - 1, 147, :_reduce_none, - 2, 147, :_reduce_42, - 2, 147, :_reduce_43, - 2, 147, :_reduce_44, - 1, 159, :_reduce_none, - 4, 159, :_reduce_46, - 4, 159, :_reduce_47, - 0, 166, :_reduce_48, - 5, 164, :_reduce_49, - 2, 158, :_reduce_50, - 3, 158, :_reduce_51, - 4, 158, :_reduce_52, - 5, 158, :_reduce_53, - 4, 158, :_reduce_54, - 5, 158, :_reduce_55, - 2, 158, :_reduce_56, - 2, 158, :_reduce_57, - 1, 148, :_reduce_58, - 3, 148, :_reduce_59, - 1, 169, :_reduce_60, - 3, 169, :_reduce_61, - 1, 168, :_reduce_62, - 2, 168, :_reduce_63, - 3, 168, :_reduce_64, - 2, 168, :_reduce_65, - 2, 168, :_reduce_66, - 1, 168, :_reduce_67, - 1, 171, :_reduce_none, - 3, 171, :_reduce_69, - 2, 170, :_reduce_70, - 3, 170, :_reduce_71, - 1, 172, :_reduce_72, - 4, 172, :_reduce_73, - 3, 172, :_reduce_74, - 3, 172, :_reduce_75, - 3, 172, :_reduce_76, - 3, 172, :_reduce_77, - 2, 172, :_reduce_78, - 1, 172, :_reduce_79, - 1, 146, :_reduce_80, - 4, 146, :_reduce_81, - 3, 146, :_reduce_82, - 3, 146, :_reduce_83, - 3, 146, :_reduce_84, - 3, 146, :_reduce_85, - 2, 146, :_reduce_86, - 1, 146, :_reduce_87, - 1, 174, :_reduce_88, - 1, 174, :_reduce_none, - 2, 175, :_reduce_90, - 1, 175, :_reduce_91, - 3, 175, :_reduce_92, - 1, 176, :_reduce_none, - 1, 176, :_reduce_none, - 1, 176, :_reduce_none, - 1, 176, :_reduce_none, - 1, 176, :_reduce_none, - 1, 179, :_reduce_98, - 1, 179, :_reduce_none, - 1, 143, :_reduce_none, - 1, 143, :_reduce_none, - 1, 144, :_reduce_102, - 0, 182, :_reduce_103, - 4, 144, :_reduce_104, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 177, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 1, 178, :_reduce_none, - 3, 157, :_reduce_171, - 5, 157, :_reduce_172, - 3, 157, :_reduce_173, - 6, 157, :_reduce_174, - 5, 157, :_reduce_175, - 5, 157, :_reduce_176, - 5, 157, :_reduce_177, - 5, 157, :_reduce_178, - 4, 157, :_reduce_179, - 3, 157, :_reduce_180, - 3, 157, :_reduce_181, - 3, 157, :_reduce_182, - 3, 157, :_reduce_183, - 3, 157, :_reduce_184, - 3, 157, :_reduce_185, - 3, 157, :_reduce_186, - 3, 157, :_reduce_187, - 3, 157, :_reduce_188, - 4, 157, :_reduce_189, - 4, 157, :_reduce_190, - 2, 157, :_reduce_191, - 2, 157, :_reduce_192, - 3, 157, :_reduce_193, - 3, 157, :_reduce_194, - 3, 157, :_reduce_195, - 3, 157, :_reduce_196, - 3, 157, :_reduce_197, - 3, 157, :_reduce_198, - 3, 157, :_reduce_199, - 3, 157, :_reduce_200, - 3, 157, :_reduce_201, - 3, 157, :_reduce_202, - 3, 157, :_reduce_203, - 3, 157, :_reduce_204, - 3, 157, :_reduce_205, - 2, 157, :_reduce_206, - 2, 157, :_reduce_207, - 3, 157, :_reduce_208, - 3, 157, :_reduce_209, - 3, 157, :_reduce_210, - 3, 157, :_reduce_211, - 3, 157, :_reduce_212, - 5, 157, :_reduce_213, - 1, 157, :_reduce_none, - 1, 154, :_reduce_none, - 1, 151, :_reduce_none, - 2, 151, :_reduce_217, - 2, 151, :_reduce_218, - 5, 151, :_reduce_219, - 2, 151, :_reduce_220, - 3, 151, :_reduce_221, - 3, 189, :_reduce_222, - 4, 189, :_reduce_223, - 4, 189, :_reduce_224, - 6, 189, :_reduce_225, - 0, 190, :_reduce_226, - 1, 190, :_reduce_none, - 1, 160, :_reduce_228, - 2, 160, :_reduce_229, - 5, 160, :_reduce_230, - 2, 160, :_reduce_231, - 5, 160, :_reduce_232, - 4, 160, :_reduce_233, - 7, 160, :_reduce_234, - 3, 160, :_reduce_235, - 1, 160, :_reduce_236, - 4, 193, :_reduce_237, - 3, 193, :_reduce_238, - 5, 193, :_reduce_239, - 7, 193, :_reduce_240, - 2, 193, :_reduce_241, - 5, 193, :_reduce_242, - 4, 193, :_reduce_243, - 6, 193, :_reduce_244, - 7, 193, :_reduce_245, - 9, 193, :_reduce_246, - 3, 193, :_reduce_247, - 1, 193, :_reduce_248, - 0, 195, :_reduce_249, - 2, 163, :_reduce_250, - 1, 194, :_reduce_251, - 0, 196, :_reduce_252, - 3, 194, :_reduce_253, - 0, 197, :_reduce_254, - 4, 194, :_reduce_255, - 2, 192, :_reduce_256, - 2, 191, :_reduce_257, - 0, 191, :_reduce_258, - 1, 186, :_reduce_259, - 3, 186, :_reduce_260, - 3, 153, :_reduce_261, - 4, 153, :_reduce_262, - 2, 153, :_reduce_263, - 1, 184, :_reduce_none, - 1, 184, :_reduce_none, - 1, 184, :_reduce_none, - 1, 184, :_reduce_none, - 1, 184, :_reduce_none, - 1, 184, :_reduce_none, - 1, 184, :_reduce_none, - 1, 184, :_reduce_none, - 1, 184, :_reduce_272, - 3, 184, :_reduce_273, - 0, 218, :_reduce_274, - 5, 184, :_reduce_275, - 3, 184, :_reduce_276, - 3, 184, :_reduce_277, - 2, 184, :_reduce_278, - 4, 184, :_reduce_279, - 3, 184, :_reduce_280, - 3, 184, :_reduce_281, - 1, 184, :_reduce_282, - 4, 184, :_reduce_283, - 3, 184, :_reduce_284, - 1, 184, :_reduce_285, - 5, 184, :_reduce_286, - 2, 184, :_reduce_287, - 1, 184, :_reduce_none, - 2, 184, :_reduce_289, - 6, 184, :_reduce_290, - 6, 184, :_reduce_291, - 0, 219, :_reduce_292, - 0, 220, :_reduce_293, - 7, 184, :_reduce_294, - 0, 221, :_reduce_295, - 0, 222, :_reduce_296, - 7, 184, :_reduce_297, - 5, 184, :_reduce_298, - 4, 184, :_reduce_299, - 5, 184, :_reduce_300, - 0, 223, :_reduce_301, - 0, 224, :_reduce_302, - 9, 184, :_reduce_303, - 0, 225, :_reduce_304, - 6, 184, :_reduce_305, - 0, 226, :_reduce_306, - 7, 184, :_reduce_307, - 0, 227, :_reduce_308, - 5, 184, :_reduce_309, - 0, 228, :_reduce_310, - 6, 184, :_reduce_311, - 0, 229, :_reduce_312, - 0, 230, :_reduce_313, - 9, 184, :_reduce_314, - 1, 184, :_reduce_315, - 1, 184, :_reduce_316, - 1, 184, :_reduce_317, - 1, 184, :_reduce_318, - 1, 150, :_reduce_none, - 1, 208, :_reduce_none, - 1, 208, :_reduce_none, - 1, 208, :_reduce_none, - 2, 208, :_reduce_323, - 1, 210, :_reduce_none, - 1, 210, :_reduce_none, - 1, 210, :_reduce_none, - 1, 209, :_reduce_none, - 5, 209, :_reduce_328, - 1, 137, :_reduce_none, - 2, 137, :_reduce_330, - 1, 212, :_reduce_none, - 1, 212, :_reduce_none, - 1, 231, :_reduce_333, - 3, 231, :_reduce_334, - 1, 232, :_reduce_none, - 2, 232, :_reduce_none, - 4, 232, :_reduce_337, - 7, 232, :_reduce_338, - 6, 232, :_reduce_339, - 4, 232, :_reduce_340, - 3, 232, :_reduce_341, - 5, 232, :_reduce_342, - 4, 232, :_reduce_343, - 2, 232, :_reduce_344, - 1, 232, :_reduce_345, - 2, 232, :_reduce_346, - 0, 165, :_reduce_347, - 2, 165, :_reduce_348, - 1, 165, :_reduce_349, - 3, 165, :_reduce_350, - 0, 234, :_reduce_351, - 5, 233, :_reduce_352, - 2, 161, :_reduce_353, - 4, 161, :_reduce_354, - 4, 161, :_reduce_355, - 2, 207, :_reduce_356, - 4, 207, :_reduce_357, - 4, 207, :_reduce_358, - 3, 207, :_reduce_359, - 2, 207, :_reduce_360, - 1, 207, :_reduce_361, - 0, 236, :_reduce_362, - 5, 206, :_reduce_363, - 0, 237, :_reduce_364, - 5, 206, :_reduce_365, - 5, 211, :_reduce_366, - 1, 238, :_reduce_none, - 4, 238, :_reduce_368, - 2, 238, :_reduce_369, - 1, 239, :_reduce_370, - 1, 239, :_reduce_none, - 6, 136, :_reduce_372, - 0, 136, :_reduce_373, - 1, 240, :_reduce_374, - 1, 240, :_reduce_none, - 1, 240, :_reduce_none, - 2, 241, :_reduce_377, - 1, 241, :_reduce_none, - 2, 138, :_reduce_379, - 1, 138, :_reduce_none, - 1, 198, :_reduce_none, - 1, 198, :_reduce_none, - 1, 198, :_reduce_none, - 1, 199, :_reduce_384, - 1, 243, :_reduce_385, - 2, 243, :_reduce_386, - 3, 244, :_reduce_387, - 1, 244, :_reduce_388, - 3, 200, :_reduce_389, - 4, 201, :_reduce_390, - 3, 202, :_reduce_391, - 0, 247, :_reduce_392, - 3, 247, :_reduce_393, - 1, 248, :_reduce_394, - 2, 248, :_reduce_395, - 3, 203, :_reduce_396, - 0, 250, :_reduce_397, - 3, 250, :_reduce_398, - 0, 245, :_reduce_399, - 2, 245, :_reduce_400, - 0, 246, :_reduce_401, - 2, 246, :_reduce_402, - 1, 249, :_reduce_403, - 2, 249, :_reduce_404, - 0, 252, :_reduce_405, - 4, 249, :_reduce_406, - 1, 251, :_reduce_407, - 1, 251, :_reduce_408, - 1, 251, :_reduce_409, - 1, 251, :_reduce_none, - 1, 180, :_reduce_411, - 3, 181, :_reduce_412, - 1, 242, :_reduce_413, - 1, 242, :_reduce_414, - 2, 242, :_reduce_415, - 2, 242, :_reduce_416, - 1, 173, :_reduce_417, - 1, 173, :_reduce_418, - 1, 173, :_reduce_419, - 1, 173, :_reduce_420, - 1, 173, :_reduce_421, - 1, 173, :_reduce_422, - 1, 173, :_reduce_423, - 1, 173, :_reduce_424, - 1, 173, :_reduce_425, - 1, 173, :_reduce_426, - 1, 173, :_reduce_427, - 1, 204, :_reduce_428, - 1, 149, :_reduce_429, - 1, 152, :_reduce_430, - 1, 152, :_reduce_431, - 1, 213, :_reduce_432, - 3, 213, :_reduce_433, - 2, 213, :_reduce_434, - 4, 215, :_reduce_435, - 2, 215, :_reduce_436, - 6, 253, :_reduce_437, - 4, 253, :_reduce_438, - 4, 253, :_reduce_439, - 2, 253, :_reduce_440, - 4, 253, :_reduce_441, - 2, 253, :_reduce_442, - 2, 253, :_reduce_443, - 1, 253, :_reduce_444, - 0, 253, :_reduce_445, - 1, 259, :_reduce_446, - 1, 259, :_reduce_447, - 1, 259, :_reduce_448, - 1, 259, :_reduce_449, - 1, 259, :_reduce_450, - 1, 254, :_reduce_451, - 3, 254, :_reduce_452, - 3, 260, :_reduce_453, - 1, 255, :_reduce_454, - 3, 255, :_reduce_455, - 1, 261, :_reduce_none, - 1, 261, :_reduce_none, - 2, 256, :_reduce_458, - 1, 256, :_reduce_459, - 1, 262, :_reduce_none, - 1, 262, :_reduce_none, - 2, 258, :_reduce_462, - 2, 257, :_reduce_463, - 0, 257, :_reduce_464, - 1, 216, :_reduce_none, - 4, 216, :_reduce_466, - 0, 205, :_reduce_467, - 2, 205, :_reduce_468, - 2, 205, :_reduce_469, - 1, 188, :_reduce_470, - 3, 188, :_reduce_471, - 3, 263, :_reduce_472, - 1, 167, :_reduce_none, - 1, 167, :_reduce_none, - 1, 167, :_reduce_none, - 1, 162, :_reduce_none, - 1, 162, :_reduce_none, - 1, 162, :_reduce_none, - 1, 162, :_reduce_none, - 1, 235, :_reduce_none, - 1, 235, :_reduce_none, - 1, 235, :_reduce_none, - 1, 217, :_reduce_none, - 1, 217, :_reduce_none, - 0, 140, :_reduce_none, - 1, 140, :_reduce_none, - 0, 183, :_reduce_none, - 1, 183, :_reduce_none, - 0, 187, :_reduce_none, - 1, 187, :_reduce_none, - 1, 187, :_reduce_none, - 1, 214, :_reduce_492, - 1, 214, :_reduce_none, - 1, 142, :_reduce_none, - 2, 142, :_reduce_none, - 0, 185, :_reduce_496 ] - -racc_reduce_n = 497 - -racc_shift_n = 894 - -racc_token_table = { - false => 0, - :error => 1, - :kCLASS => 2, - :kMODULE => 3, - :kDEF => 4, - :kUNDEF => 5, - :kBEGIN => 6, - :kRESCUE => 7, - :kENSURE => 8, - :kEND => 9, - :kIF => 10, - :kUNLESS => 11, - :kTHEN => 12, - :kELSIF => 13, - :kELSE => 14, - :kCASE => 15, - :kWHEN => 16, - :kWHILE => 17, - :kUNTIL => 18, - :kFOR => 19, - :kBREAK => 20, - :kNEXT => 21, - :kREDO => 22, - :kRETRY => 23, - :kIN => 24, - :kDO => 25, - :kDO_COND => 26, - :kDO_BLOCK => 27, - :kRETURN => 28, - :kYIELD => 29, - :kSUPER => 30, - :kSELF => 31, - :kNIL => 32, - :kTRUE => 33, - :kFALSE => 34, - :kAND => 35, - :kOR => 36, - :kNOT => 37, - :kIF_MOD => 38, - :kUNLESS_MOD => 39, - :kWHILE_MOD => 40, - :kUNTIL_MOD => 41, - :kRESCUE_MOD => 42, - :kALIAS => 43, - :kDEFINED => 44, - :klBEGIN => 45, - :klEND => 46, - :k__LINE__ => 47, - :k__FILE__ => 48, - :tIDENTIFIER => 49, - :tFID => 50, - :tGVAR => 51, - :tIVAR => 52, - :tCONSTANT => 53, - :tCVAR => 54, - :tNTH_REF => 55, - :tBACK_REF => 56, - :tSTRING_CONTENT => 57, - :tINTEGER => 58, - :tFLOAT => 59, - :tREGEXP_END => 60, - :tUPLUS => 61, - :tUMINUS => 62, - :tUMINUS_NUM => 63, - :tPOW => 64, - :tCMP => 65, - :tEQ => 66, - :tEQQ => 67, - :tNEQ => 68, - :tGEQ => 69, - :tLEQ => 70, - :tANDOP => 71, - :tOROP => 72, - :tMATCH => 73, - :tNMATCH => 74, - :tDOT => 75, - :tDOT2 => 76, - :tDOT3 => 77, - :tAREF => 78, - :tASET => 79, - :tLSHFT => 80, - :tRSHFT => 81, - :tCOLON2 => 82, - :tCOLON3 => 83, - :tOP_ASGN => 84, - :tASSOC => 85, - :tLPAREN => 86, - :tLPAREN2 => 87, - :tRPAREN => 88, - :tLPAREN_ARG => 89, - :tLBRACK => 90, - :tLBRACK2 => 91, - :tRBRACK => 92, - :tLBRACE => 93, - :tLBRACE_ARG => 94, - :tSTAR => 95, - :tSTAR2 => 96, - :tAMPER => 97, - :tAMPER2 => 98, - :tTILDE => 99, - :tPERCENT => 100, - :tDIVIDE => 101, - :tPLUS => 102, - :tMINUS => 103, - :tLT => 104, - :tGT => 105, - :tPIPE => 106, - :tBANG => 107, - :tCARET => 108, - :tLCURLY => 109, - :tRCURLY => 110, - :tBACK_REF2 => 111, - :tSYMBEG => 112, - :tSTRING_BEG => 113, - :tXSTRING_BEG => 114, - :tREGEXP_BEG => 115, - :tWORDS_BEG => 116, - :tQWORDS_BEG => 117, - :tSTRING_DBEG => 118, - :tSTRING_DVAR => 119, - :tSTRING_END => 120, - :tSTRING => 121, - :tSYMBOL => 122, - :tREGEXP_OPT => 123, - :tNL => 124, - :tEH => 125, - :tCOLON => 126, - :tCOMMA => 127, - :tSPACE => 128, - :tSEMI => 129, - :tEQL => 130, - :tLOWEST => 131 } - -racc_nt_base = 132 - -racc_use_result_var = true - -Racc_arg = [ - racc_action_table, - racc_action_check, - racc_action_default, - racc_action_pointer, - racc_goto_table, - racc_goto_check, - racc_goto_default, - racc_goto_pointer, - racc_nt_base, - racc_reduce_table, - racc_token_table, - racc_shift_n, - racc_reduce_n, - racc_use_result_var ] - -Racc_token_to_s_table = [ - "$end", - "error", - "kCLASS", - "kMODULE", - "kDEF", - "kUNDEF", - "kBEGIN", - "kRESCUE", - "kENSURE", - "kEND", - "kIF", - "kUNLESS", - "kTHEN", - "kELSIF", - "kELSE", - "kCASE", - "kWHEN", - "kWHILE", - "kUNTIL", - "kFOR", - "kBREAK", - "kNEXT", - "kREDO", - "kRETRY", - "kIN", - "kDO", - "kDO_COND", - "kDO_BLOCK", - "kRETURN", - "kYIELD", - "kSUPER", - "kSELF", - "kNIL", - "kTRUE", - "kFALSE", - "kAND", - "kOR", - "kNOT", - "kIF_MOD", - "kUNLESS_MOD", - "kWHILE_MOD", - "kUNTIL_MOD", - "kRESCUE_MOD", - "kALIAS", - "kDEFINED", - "klBEGIN", - "klEND", - "k__LINE__", - "k__FILE__", - "tIDENTIFIER", - "tFID", - "tGVAR", - "tIVAR", - "tCONSTANT", - "tCVAR", - "tNTH_REF", - "tBACK_REF", - "tSTRING_CONTENT", - "tINTEGER", - "tFLOAT", - "tREGEXP_END", - "tUPLUS", - "tUMINUS", - "tUMINUS_NUM", - "tPOW", - "tCMP", - "tEQ", - "tEQQ", - "tNEQ", - "tGEQ", - "tLEQ", - "tANDOP", - "tOROP", - "tMATCH", - "tNMATCH", - "tDOT", - "tDOT2", - "tDOT3", - "tAREF", - "tASET", - "tLSHFT", - "tRSHFT", - "tCOLON2", - "tCOLON3", - "tOP_ASGN", - "tASSOC", - "tLPAREN", - "tLPAREN2", - "tRPAREN", - "tLPAREN_ARG", - "tLBRACK", - "tLBRACK2", - "tRBRACK", - "tLBRACE", - "tLBRACE_ARG", - "tSTAR", - "tSTAR2", - "tAMPER", - "tAMPER2", - "tTILDE", - "tPERCENT", - "tDIVIDE", - "tPLUS", - "tMINUS", - "tLT", - "tGT", - "tPIPE", - "tBANG", - "tCARET", - "tLCURLY", - "tRCURLY", - "tBACK_REF2", - "tSYMBEG", - "tSTRING_BEG", - "tXSTRING_BEG", - "tREGEXP_BEG", - "tWORDS_BEG", - "tQWORDS_BEG", - "tSTRING_DBEG", - "tSTRING_DVAR", - "tSTRING_END", - "tSTRING", - "tSYMBOL", - "tREGEXP_OPT", - "tNL", - "tEH", - "tCOLON", - "tCOMMA", - "tSPACE", - "tSEMI", - "tEQL", - "tLOWEST", - "$start", - "program", - "compstmt", - "bodystmt", - "opt_rescue", - "opt_else", - "opt_ensure", - "stmts", - "opt_terms", - "stmt", - "terms", - "fitem", - "undef_list", - "expr_value", - "lhs", - "command_call", - "mlhs", - "var_lhs", - "primary_value", - "aref_args", - "backref", - "mrhs", - "arg_value", - "expr", - "@1", - "arg", - "command", - "block_command", - "call_args", - "block_call", - "operation2", - "command_args", - "cmd_brace_block", - "opt_block_var", - "@2", - "operation", - "mlhs_basic", - "mlhs_entry", - "mlhs_head", - "mlhs_item", - "mlhs_node", - "variable", - "cname", - "cpath", - "fname", - "op", - "reswords", - "fsym", - "symbol", - "dsym", - "@3", - "opt_nl", - "primary", - "none", - "args", - "trailer", - "assocs", - "paren_args", - "opt_paren_args", - "opt_block_arg", - "block_arg", - "call_args2", - "open_args", - "@4", - "@5", - "@6", - "literal", - "strings", - "xstring", - "regexp", - "words", - "qwords", - "var_ref", - "assoc_list", - "brace_block", - "method_call", - "then", - "if_tail", - "do", - "case_body", - "for_var", - "superclass", - "term", - "f_arglist", - "singleton", - "dot_or_colon", - "@7", - "@8", - "@9", - "@10", - "@11", - "@12", - "@13", - "@14", - "@15", - "@16", - "@17", - "@18", - "@19", - "block_par", - "block_var", - "do_block", - "@20", - "operation3", - "@21", - "@22", - "when_args", - "cases", - "exc_list", - "exc_var", - "numeric", - "string", - "string1", - "string_contents", - "xstring_contents", - "word_list", - "word", - "string_content", - "qword_list", - "string_dvar", - "@23", - "f_args", - "f_arg", - "f_optarg", - "f_rest_arg", - "opt_f_block_arg", - "f_block_arg", - "f_norm_arg", - "f_opt", - "restarg_mark", - "blkarg_mark", - "assoc" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'ruby18.y', 73) - def _reduce_1(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 78) - def _reduce_2(val, _values, result) - rescue_bodies = val[1] - else_t, else_ = val[2] - ensure_t, ensure_ = val[3] - - if rescue_bodies.empty? && !else_.nil? - diagnostic :warning, :useless_else, nil, else_t - end - - result = @builder.begin_body(val[0], - rescue_bodies, - else_t, else_, - ensure_t, ensure_) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 94) - def _reduce_3(val, _values, result) - result = @builder.compstmt(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 99) - def _reduce_4(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 103) - def _reduce_5(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 107) - def _reduce_6(val, _values, result) - result = [ val[1] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 111) - def _reduce_7(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 116) - def _reduce_8(val, _values, result) - @lexer.state = :expr_fname - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 120) - def _reduce_9(val, _values, result) - result = @builder.alias(val[0], val[1], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 124) - def _reduce_10(val, _values, result) - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.gvar(val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 130) - def _reduce_11(val, _values, result) - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.back_ref(val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 136) - def _reduce_12(val, _values, result) - diagnostic :error, :nth_ref_alias, nil, val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 140) - def _reduce_13(val, _values, result) - result = @builder.undef_method(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 144) - def _reduce_14(val, _values, result) - result = @builder.condition_mod(val[0], nil, - val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 149) - def _reduce_15(val, _values, result) - result = @builder.condition_mod(nil, val[0], - val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 154) - def _reduce_16(val, _values, result) - result = @builder.loop_mod(:while, val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 158) - def _reduce_17(val, _values, result) - result = @builder.loop_mod(:until, val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 162) - def _reduce_18(val, _values, result) - rescue_body = @builder.rescue_body(val[1], - nil, nil, nil, - nil, val[2]) - - result = @builder.begin_body(val[0], [ rescue_body ]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 170) - def _reduce_19(val, _values, result) - if in_def? - diagnostic :error, :begin_in_method, nil, val[0] - end - - result = @builder.preexe(val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 178) - def _reduce_20(val, _values, result) - result = @builder.postexe(val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 182) - def _reduce_21(val, _values, result) - result = @builder.assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 186) - def _reduce_22(val, _values, result) - result = @builder.multi_assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 190) - def _reduce_23(val, _values, result) - result = @builder.op_assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 194) - def _reduce_24(val, _values, result) - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 201) - def _reduce_25(val, _values, result) - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 208) - def _reduce_26(val, _values, result) - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 215) - def _reduce_27(val, _values, result) - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 222) - def _reduce_28(val, _values, result) - @builder.op_assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 226) - def _reduce_29(val, _values, result) - result = @builder.assign(val[0], val[1], - @builder.array(nil, val[2], nil)) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 231) - def _reduce_30(val, _values, result) - result = @builder.multi_assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 235) - def _reduce_31(val, _values, result) - result = @builder.multi_assign(val[0], val[1], - @builder.array(nil, val[2], nil)) - - result - end -.,., - -# reduce 32 omitted - -# reduce 33 omitted - -module_eval(<<'.,.,', 'ruby18.y', 243) - def _reduce_34(val, _values, result) - result = @builder.logical_op(:and, val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 247) - def _reduce_35(val, _values, result) - result = @builder.logical_op(:or, val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 251) - def _reduce_36(val, _values, result) - result = @builder.not_op(val[0], nil, val[1], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 255) - def _reduce_37(val, _values, result) - result = @builder.not_op(val[0], nil, val[1], nil) - - result - end -.,., - -# reduce 38 omitted - -# reduce 39 omitted - -# reduce 40 omitted - -# reduce 41 omitted - -module_eval(<<'.,.,', 'ruby18.y', 265) - def _reduce_42(val, _values, result) - result = @builder.keyword_cmd(:return, val[0], - nil, val[1], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 270) - def _reduce_43(val, _values, result) - result = @builder.keyword_cmd(:break, val[0], - nil, val[1], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 275) - def _reduce_44(val, _values, result) - result = @builder.keyword_cmd(:next, val[0], - nil, val[1], nil) - - result - end -.,., - -# reduce 45 omitted - -module_eval(<<'.,.,', 'ruby18.y', 282) - def _reduce_46(val, _values, result) - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 288) - def _reduce_47(val, _values, result) - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 295) - def _reduce_48(val, _values, result) - @static_env.extend_dynamic - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 299) - def _reduce_49(val, _values, result) - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 306) - def _reduce_50(val, _values, result) - lparen_t, args, rparen_t = val[1] - result = @builder.call_method(nil, nil, val[0], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 312) - def _reduce_51(val, _values, result) - lparen_t, args, rparen_t = val[1] - method_call = @builder.call_method(nil, nil, val[0], - lparen_t, args, rparen_t) - - begin_t, block_args, body, end_t = val[2] - result = @builder.block(method_call, - begin_t, block_args, body, end_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 322) - def _reduce_52(val, _values, result) - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 329) - def _reduce_53(val, _values, result) - lparen_t, args, rparen_t = val[3] - method_call = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - begin_t, block_args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, block_args, body, end_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 339) - def _reduce_54(val, _values, result) - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 345) - def _reduce_55(val, _values, result) - lparen_t, args, rparen_t = val[3] - method_call = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - begin_t, block_args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, block_args, body, end_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 355) - def _reduce_56(val, _values, result) - lparen_t, args, rparen_t = val[1] - result = @builder.keyword_cmd(:super, val[0], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 361) - def _reduce_57(val, _values, result) - lparen_t, args, rparen_t = val[1] - result = @builder.keyword_cmd(:yield, val[0], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 368) - def _reduce_58(val, _values, result) - result = @builder.multi_lhs(nil, val[0], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 372) - def _reduce_59(val, _values, result) - result = @builder.begin(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 377) - def _reduce_60(val, _values, result) - result = @builder.multi_lhs(nil, val[0], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 381) - def _reduce_61(val, _values, result) - result = @builder.multi_lhs(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 386) - def _reduce_62(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 390) - def _reduce_63(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 394) - def _reduce_64(val, _values, result) - result = val[0] << @builder.splat(val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 398) - def _reduce_65(val, _values, result) - result = val[0] << @builder.splat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 402) - def _reduce_66(val, _values, result) - result = [ @builder.splat(val[0], val[1]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 406) - def _reduce_67(val, _values, result) - result = [ @builder.splat(val[0]) ] - - result - end -.,., - -# reduce 68 omitted - -module_eval(<<'.,.,', 'ruby18.y', 412) - def _reduce_69(val, _values, result) - result = @builder.begin(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 417) - def _reduce_70(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 421) - def _reduce_71(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 426) - def _reduce_72(val, _values, result) - result = @builder.assignable(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 430) - def _reduce_73(val, _values, result) - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 434) - def _reduce_74(val, _values, result) - result = @builder.attr_asgn(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 438) - def _reduce_75(val, _values, result) - result = @builder.attr_asgn(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 442) - def _reduce_76(val, _values, result) - result = @builder.attr_asgn(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 446) - def _reduce_77(val, _values, result) - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 451) - def _reduce_78(val, _values, result) - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 456) - def _reduce_79(val, _values, result) - result = @builder.assignable(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 461) - def _reduce_80(val, _values, result) - result = @builder.assignable(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 465) - def _reduce_81(val, _values, result) - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 469) - def _reduce_82(val, _values, result) - result = @builder.attr_asgn(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 473) - def _reduce_83(val, _values, result) - result = @builder.attr_asgn(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 477) - def _reduce_84(val, _values, result) - result = @builder.attr_asgn(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 481) - def _reduce_85(val, _values, result) - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 486) - def _reduce_86(val, _values, result) - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 491) - def _reduce_87(val, _values, result) - result = @builder.assignable(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 496) - def _reduce_88(val, _values, result) - diagnostic :error, :module_name_const, nil, val[0] - - result - end -.,., - -# reduce 89 omitted - -module_eval(<<'.,.,', 'ruby18.y', 502) - def _reduce_90(val, _values, result) - result = @builder.const_global(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 506) - def _reduce_91(val, _values, result) - result = @builder.const(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 510) - def _reduce_92(val, _values, result) - result = @builder.const_fetch(val[0], val[1], val[2]) - - result - end -.,., - -# reduce 93 omitted - -# reduce 94 omitted - -# reduce 95 omitted - -# reduce 96 omitted - -# reduce 97 omitted - -module_eval(<<'.,.,', 'ruby18.y', 519) - def _reduce_98(val, _values, result) - result = @builder.symbol(val[0]) - - result - end -.,., - -# reduce 99 omitted - -# reduce 100 omitted - -# reduce 101 omitted - -module_eval(<<'.,.,', 'ruby18.y', 528) - def _reduce_102(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 532) - def _reduce_103(val, _values, result) - @lexer.state = :expr_fname - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 536) - def _reduce_104(val, _values, result) - result = val[0] << val[3] - - result - end -.,., - -# reduce 105 omitted - -# reduce 106 omitted - -# reduce 107 omitted - -# reduce 108 omitted - -# reduce 109 omitted - -# reduce 110 omitted - -# reduce 111 omitted - -# reduce 112 omitted - -# reduce 113 omitted - -# reduce 114 omitted - -# reduce 115 omitted - -# reduce 116 omitted - -# reduce 117 omitted - -# reduce 118 omitted - -# reduce 119 omitted - -# reduce 120 omitted - -# reduce 121 omitted - -# reduce 122 omitted - -# reduce 123 omitted - -# reduce 124 omitted - -# reduce 125 omitted - -# reduce 126 omitted - -# reduce 127 omitted - -# reduce 128 omitted - -# reduce 129 omitted - -# reduce 130 omitted - -# reduce 131 omitted - -# reduce 132 omitted - -# reduce 133 omitted - -# reduce 134 omitted - -# reduce 135 omitted - -# reduce 136 omitted - -# reduce 137 omitted - -# reduce 138 omitted - -# reduce 139 omitted - -# reduce 140 omitted - -# reduce 141 omitted - -# reduce 142 omitted - -# reduce 143 omitted - -# reduce 144 omitted - -# reduce 145 omitted - -# reduce 146 omitted - -# reduce 147 omitted - -# reduce 148 omitted - -# reduce 149 omitted - -# reduce 150 omitted - -# reduce 151 omitted - -# reduce 152 omitted - -# reduce 153 omitted - -# reduce 154 omitted - -# reduce 155 omitted - -# reduce 156 omitted - -# reduce 157 omitted - -# reduce 158 omitted - -# reduce 159 omitted - -# reduce 160 omitted - -# reduce 161 omitted - -# reduce 162 omitted - -# reduce 163 omitted - -# reduce 164 omitted - -# reduce 165 omitted - -# reduce 166 omitted - -# reduce 167 omitted - -# reduce 168 omitted - -# reduce 169 omitted - -# reduce 170 omitted - -module_eval(<<'.,.,', 'ruby18.y', 555) - def _reduce_171(val, _values, result) - result = @builder.assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 559) - def _reduce_172(val, _values, result) - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.assign(val[0], val[1], rescue_) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 569) - def _reduce_173(val, _values, result) - result = @builder.op_assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 573) - def _reduce_174(val, _values, result) - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 580) - def _reduce_175(val, _values, result) - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 587) - def _reduce_176(val, _values, result) - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 594) - def _reduce_177(val, _values, result) - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 601) - def _reduce_178(val, _values, result) - diagnostic :error, :dynamic_const, nil, val[2], [ val[3] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 605) - def _reduce_179(val, _values, result) - diagnostic :error, :dynamic_const, nil, val[1], [ val[2] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 609) - def _reduce_180(val, _values, result) - result = @builder.op_assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 613) - def _reduce_181(val, _values, result) - result = @builder.range_inclusive(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 617) - def _reduce_182(val, _values, result) - result = @builder.range_exclusive(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 621) - def _reduce_183(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 625) - def _reduce_184(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 629) - def _reduce_185(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 633) - def _reduce_186(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 637) - def _reduce_187(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 641) - def _reduce_188(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 645) - def _reduce_189(val, _values, result) - result = @builder.unary_op(val[0], - @builder.binary_op( - @builder.integer(val[1]), - val[2], val[3])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 652) - def _reduce_190(val, _values, result) - result = @builder.unary_op(val[0], - @builder.binary_op( - @builder.float(val[1]), - val[2], val[3])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 659) - def _reduce_191(val, _values, result) - result = @builder.unary_op(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 663) - def _reduce_192(val, _values, result) - result = @builder.unary_op(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 667) - def _reduce_193(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 671) - def _reduce_194(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 675) - def _reduce_195(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 679) - def _reduce_196(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 683) - def _reduce_197(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 687) - def _reduce_198(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 691) - def _reduce_199(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 695) - def _reduce_200(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 699) - def _reduce_201(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 703) - def _reduce_202(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 707) - def _reduce_203(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 711) - def _reduce_204(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 715) - def _reduce_205(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 719) - def _reduce_206(val, _values, result) - result = @builder.not_op(val[0], nil, val[1], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 723) - def _reduce_207(val, _values, result) - result = @builder.unary_op(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 727) - def _reduce_208(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 731) - def _reduce_209(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 735) - def _reduce_210(val, _values, result) - result = @builder.logical_op(:and, val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 739) - def _reduce_211(val, _values, result) - result = @builder.logical_op(:or, val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 743) - def _reduce_212(val, _values, result) - result = @builder.keyword_cmd(:defined?, val[0], nil, [ val[2] ], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 747) - def _reduce_213(val, _values, result) - result = @builder.ternary(val[0], val[1], - val[2], val[3], val[4]) - - result - end -.,., - -# reduce 214 omitted - -# reduce 215 omitted - -# reduce 216 omitted - -module_eval(<<'.,.,', 'ruby18.y', 757) - def _reduce_217(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 761) - def _reduce_218(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 765) - def _reduce_219(val, _values, result) - result = val[0] << @builder.splat(val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 769) - def _reduce_220(val, _values, result) - result = [ @builder.associate(nil, val[0], nil) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 773) - def _reduce_221(val, _values, result) - result = [ @builder.splat(val[0], val[1]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 778) - def _reduce_222(val, _values, result) - result = [ val[0], [], val[2] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 782) - def _reduce_223(val, _values, result) - result = [ val[0], val[1], val[3] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 786) - def _reduce_224(val, _values, result) - result = [ val[0], [ val[1] ], val[3] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 790) - def _reduce_225(val, _values, result) - result = [ val[0], val[1] << val[3], val[5] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 795) - def _reduce_226(val, _values, result) - result = [ nil, [], nil ] - - result - end -.,., - -# reduce 227 omitted - -module_eval(<<'.,.,', 'ruby18.y', 801) - def _reduce_228(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 805) - def _reduce_229(val, _values, result) - result = val[0].concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 809) - def _reduce_230(val, _values, result) - result = val[0].concat( - [ @builder.splat(val[2], val[3]), - *val[4] ]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 815) - def _reduce_231(val, _values, result) - result = [ @builder.associate(nil, val[0], nil), - *val[1] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 820) - def _reduce_232(val, _values, result) - result = [ @builder.associate(nil, val[0], nil), - @builder.splat(val[2], val[3]), - *val[4] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 826) - def _reduce_233(val, _values, result) - result = val[0].concat( - [ @builder.associate(nil, val[2], nil), - *val[3] ]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 832) - def _reduce_234(val, _values, result) - result = val[0].concat( - [ @builder.associate(nil, val[2], nil), - @builder.splat(val[4], val[5]), - *val[6] ]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 839) - def _reduce_235(val, _values, result) - result = [ @builder.splat(val[0], val[1]), - *val[2] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 844) - def _reduce_236(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 849) - def _reduce_237(val, _values, result) - result = [ val[0], *val[2].concat(val[3]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 853) - def _reduce_238(val, _values, result) - result = [ val[0], val[2] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 857) - def _reduce_239(val, _values, result) - result = [ val[0], - @builder.splat(val[2], val[3]), - *val[4] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 863) - def _reduce_240(val, _values, result) - result = [ val[0], - *val[2]. - push(@builder.splat(val[4], val[5])). - concat(val[6]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 870) - def _reduce_241(val, _values, result) - result = [ @builder.associate(nil, val[0], nil), - *val[1] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 875) - def _reduce_242(val, _values, result) - result = [ @builder.associate(nil, val[0], nil), - @builder.splat(val[2], val[3]), - *val[4] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 881) - def _reduce_243(val, _values, result) - result = [ val[0], - @builder.associate(nil, val[2], nil), - *val[3] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 887) - def _reduce_244(val, _values, result) - result = [ val[0], - *val[2]. - push(@builder.associate(nil, val[4], nil)). - concat(val[5]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 894) - def _reduce_245(val, _values, result) - result = [ val[0], - @builder.associate(nil, val[2], nil), - @builder.splat(val[4], val[5]), - *val[6] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 901) - def _reduce_246(val, _values, result) - result = [ val[0], - *val[2]. - push(@builder.associate(nil, val[4], nil)). - push(@builder.splat(val[6], val[7])). - concat(val[8]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 909) - def _reduce_247(val, _values, result) - result = [ @builder.splat(val[0], val[1]), - *val[2] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 914) - def _reduce_248(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 918) - def _reduce_249(val, _values, result) - result = @lexer.cmdarg.dup - @lexer.cmdarg.push(true) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 923) - def _reduce_250(val, _values, result) - @lexer.cmdarg = val[0] - - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 930) - def _reduce_251(val, _values, result) - result = [ nil, val[0], nil ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 934) - def _reduce_252(val, _values, result) - @lexer.state = :expr_endarg - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 938) - def _reduce_253(val, _values, result) - result = [ val[0], [], val[2] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 942) - def _reduce_254(val, _values, result) - @lexer.state = :expr_endarg - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 946) - def _reduce_255(val, _values, result) - result = [ val[0], val[1], val[3] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 951) - def _reduce_256(val, _values, result) - result = @builder.block_pass(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 956) - def _reduce_257(val, _values, result) - result = [ val[1] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 960) - def _reduce_258(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 965) - def _reduce_259(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 969) - def _reduce_260(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 974) - def _reduce_261(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 978) - def _reduce_262(val, _values, result) - result = val[0] << @builder.splat(val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 982) - def _reduce_263(val, _values, result) - result = [ @builder.splat(val[0], val[1]) ] - - result - end -.,., - -# reduce 264 omitted - -# reduce 265 omitted - -# reduce 266 omitted - -# reduce 267 omitted - -# reduce 268 omitted - -# reduce 269 omitted - -# reduce 270 omitted - -# reduce 271 omitted - -module_eval(<<'.,.,', 'ruby18.y', 995) - def _reduce_272(val, _values, result) - result = @builder.call_method(nil, nil, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 999) - def _reduce_273(val, _values, result) - result = @builder.begin_keyword(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1003) - def _reduce_274(val, _values, result) - @lexer.state = :expr_endarg - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1007) - def _reduce_275(val, _values, result) - result = @builder.begin(val[0], val[1], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1011) - def _reduce_276(val, _values, result) - result = @builder.begin(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1015) - def _reduce_277(val, _values, result) - result = @builder.const_fetch(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1019) - def _reduce_278(val, _values, result) - result = @builder.const_global(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1023) - def _reduce_279(val, _values, result) - result = @builder.index(val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1027) - def _reduce_280(val, _values, result) - result = @builder.array(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1031) - def _reduce_281(val, _values, result) - result = @builder.associate(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1035) - def _reduce_282(val, _values, result) - result = @builder.keyword_cmd(:return, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1039) - def _reduce_283(val, _values, result) - result = @builder.keyword_cmd(:yield, val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1043) - def _reduce_284(val, _values, result) - result = @builder.keyword_cmd(:yield, val[0], val[1], [], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1047) - def _reduce_285(val, _values, result) - result = @builder.keyword_cmd(:yield, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1051) - def _reduce_286(val, _values, result) - result = @builder.keyword_cmd(:defined?, val[0], - val[2], [ val[3] ], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1056) - def _reduce_287(val, _values, result) - method_call = @builder.call_method(nil, nil, val[0]) - - begin_t, args, body, end_t = val[1] - result = @builder.block(method_call, - begin_t, args, body, end_t) - - result - end -.,., - -# reduce 288 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1065) - def _reduce_289(val, _values, result) - begin_t, args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, args, body, end_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1071) - def _reduce_290(val, _values, result) - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1078) - def _reduce_291(val, _values, result) - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - else_, else_t, - val[3], val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1085) - def _reduce_292(val, _values, result) - @lexer.cond.push(true) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1089) - def _reduce_293(val, _values, result) - @lexer.cond.pop - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1093) - def _reduce_294(val, _values, result) - result = @builder.loop(:while, val[0], val[2], val[3], - val[5], val[6]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1098) - def _reduce_295(val, _values, result) - @lexer.cond.push(true) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1102) - def _reduce_296(val, _values, result) - @lexer.cond.pop - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1106) - def _reduce_297(val, _values, result) - result = @builder.loop(:until, val[0], val[2], val[3], - val[5], val[6]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1111) - def _reduce_298(val, _values, result) - when_bodies = val[3][0..-2] - else_t, else_body = val[3][-1] - - result = @builder.case(val[0], val[1], - when_bodies, else_t, else_body, - val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1120) - def _reduce_299(val, _values, result) - when_bodies = val[2][0..-2] - else_t, else_body = val[2][-1] - - result = @builder.case(val[0], nil, - when_bodies, else_t, else_body, - val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1129) - def _reduce_300(val, _values, result) - result = @builder.case(val[0], nil, - [], val[2], val[3], - val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1135) - def _reduce_301(val, _values, result) - @lexer.cond.push(true) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1139) - def _reduce_302(val, _values, result) - @lexer.cond.pop - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1143) - def _reduce_303(val, _values, result) - result = @builder.for(val[0], val[1], - val[2], val[4], - val[5], val[7], val[8]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1149) - def _reduce_304(val, _values, result) - @static_env.extend_static - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1153) - def _reduce_305(val, _values, result) - if in_def? - diagnostic :error, :class_in_def, nil, val[0] - end - - lt_t, superclass = val[2] - result = @builder.def_class(val[0], val[1], - lt_t, superclass, - val[4], val[5]) - - @static_env.unextend - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1166) - def _reduce_306(val, _values, result) - result = @def_level - @def_level = 0 - - @static_env.extend_static - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1173) - def _reduce_307(val, _values, result) - result = @builder.def_sclass(val[0], val[1], val[2], - val[5], val[6]) - - @static_env.unextend - - @def_level = val[4] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1182) - def _reduce_308(val, _values, result) - @static_env.extend_static - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1186) - def _reduce_309(val, _values, result) - if in_def? - diagnostic :error, :module_in_def, nil, val[0] - end - - result = @builder.def_module(val[0], val[1], - val[3], val[4]) - - @static_env.unextend - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1197) - def _reduce_310(val, _values, result) - @def_level += 1 - @static_env.extend_static - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1202) - def _reduce_311(val, _values, result) - result = @builder.def_method(val[0], val[1], - val[3], val[4], val[5]) - - @static_env.unextend - @def_level -= 1 - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1210) - def _reduce_312(val, _values, result) - @lexer.state = :expr_fname - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1214) - def _reduce_313(val, _values, result) - @def_level += 1 - @static_env.extend_static - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1219) - def _reduce_314(val, _values, result) - result = @builder.def_singleton(val[0], val[1], val[2], - val[4], val[6], val[7], val[8]) - - @static_env.unextend - @def_level -= 1 - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1227) - def _reduce_315(val, _values, result) - result = @builder.keyword_cmd(:break, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1231) - def _reduce_316(val, _values, result) - result = @builder.keyword_cmd(:next, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1235) - def _reduce_317(val, _values, result) - result = @builder.keyword_cmd(:redo, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1239) - def _reduce_318(val, _values, result) - result = @builder.keyword_cmd(:retry, val[0]) - - result - end -.,., - -# reduce 319 omitted - -# reduce 320 omitted - -# reduce 321 omitted - -# reduce 322 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1249) - def _reduce_323(val, _values, result) - result = val[1] - - result - end -.,., - -# reduce 324 omitted - -# reduce 325 omitted - -# reduce 326 omitted - -# reduce 327 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1259) - def _reduce_328(val, _values, result) - else_t, else_ = val[4] - result = [ val[0], - @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, nil), - ] - - result - end -.,., - -# reduce 329 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1270) - def _reduce_330(val, _values, result) - result = val - - result - end -.,., - -# reduce 331 omitted - -# reduce 332 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1278) - def _reduce_333(val, _values, result) - result = [ @builder.arg_expr(val[0]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1282) - def _reduce_334(val, _values, result) - result = val[0] << @builder.arg_expr(val[2]) - - result - end -.,., - -# reduce 335 omitted - -# reduce 336 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1289) - def _reduce_337(val, _values, result) - result = val[0]. - push(@builder.blockarg_expr(val[2], val[3])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1294) - def _reduce_338(val, _values, result) - result = val[0]. - push(@builder.restarg_expr(val[2], val[3])). - push(@builder.blockarg_expr(val[5], val[6])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1300) - def _reduce_339(val, _values, result) - result = val[0]. - push(@builder.restarg_expr(val[2])). - push(@builder.blockarg_expr(val[4], val[5])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1306) - def _reduce_340(val, _values, result) - result = val[0]. - push(@builder.restarg_expr(val[2], val[3])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1311) - def _reduce_341(val, _values, result) - result = val[0]. - push(@builder.restarg_expr(val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1316) - def _reduce_342(val, _values, result) - result = [ @builder.restarg_expr(val[0], val[1]), - @builder.blockarg_expr(val[3], val[4]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1321) - def _reduce_343(val, _values, result) - result = [ @builder.restarg_expr(val[0]), - @builder.blockarg_expr(val[2], val[3]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1326) - def _reduce_344(val, _values, result) - result = [ @builder.restarg_expr(val[0], val[1]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1330) - def _reduce_345(val, _values, result) - result = [ @builder.restarg_expr(val[0]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1334) - def _reduce_346(val, _values, result) - result = [ @builder.blockarg_expr(val[0], val[1]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1340) - def _reduce_347(val, _values, result) - result = @builder.args(nil, [], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1344) - def _reduce_348(val, _values, result) - result = @builder.args(val[0], [], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1348) - def _reduce_349(val, _values, result) - result = @builder.args(val[0], [], val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1352) - def _reduce_350(val, _values, result) - result = @builder.args(val[0], val[1], val[2], false) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1357) - def _reduce_351(val, _values, result) - @static_env.extend_dynamic - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1361) - def _reduce_352(val, _values, result) - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1368) - def _reduce_353(val, _values, result) - begin_t, block_args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, block_args, body, end_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1374) - def _reduce_354(val, _values, result) - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1380) - def _reduce_355(val, _values, result) - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1387) - def _reduce_356(val, _values, result) - lparen_t, args, rparen_t = val[1] - result = @builder.call_method(nil, nil, val[0], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1393) - def _reduce_357(val, _values, result) - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1399) - def _reduce_358(val, _values, result) - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1405) - def _reduce_359(val, _values, result) - result = @builder.call_method(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1409) - def _reduce_360(val, _values, result) - lparen_t, args, rparen_t = val[1] - result = @builder.keyword_cmd(:super, val[0], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1415) - def _reduce_361(val, _values, result) - result = @builder.keyword_cmd(:zsuper, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1420) - def _reduce_362(val, _values, result) - @static_env.extend_dynamic - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1424) - def _reduce_363(val, _values, result) - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1430) - def _reduce_364(val, _values, result) - @static_env.extend_dynamic - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1434) - def _reduce_365(val, _values, result) - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1441) - def _reduce_366(val, _values, result) - result = [ @builder.when(val[0], val[1], val[2], val[3]), - *val[4] ] - - result - end -.,., - -# reduce 367 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1448) - def _reduce_368(val, _values, result) - result = val[0] << @builder.splat(val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1452) - def _reduce_369(val, _values, result) - result = [ @builder.splat(val[0], val[1]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1457) - def _reduce_370(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -# reduce 371 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1463) - def _reduce_372(val, _values, result) - assoc_t, exc_var = val[2] - - if val[1] - exc_list = @builder.array(nil, val[1], nil) - end - - result = [ @builder.rescue_body(val[0], - exc_list, assoc_t, exc_var, - val[3], val[4]), - *val[5] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1476) - def _reduce_373(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1481) - def _reduce_374(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -# reduce 375 omitted - -# reduce 376 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1488) - def _reduce_377(val, _values, result) - result = [ val[0], val[1] ] - - result - end -.,., - -# reduce 378 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1494) - def _reduce_379(val, _values, result) - result = [ val[0], val[1] ] - - result - end -.,., - -# reduce 380 omitted - -# reduce 381 omitted - -# reduce 382 omitted - -# reduce 383 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1504) - def _reduce_384(val, _values, result) - result = @builder.string_compose(nil, val[0], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1509) - def _reduce_385(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1513) - def _reduce_386(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1518) - def _reduce_387(val, _values, result) - result = @builder.string_compose(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1522) - def _reduce_388(val, _values, result) - result = @builder.string(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1527) - def _reduce_389(val, _values, result) - result = @builder.xstring_compose(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1532) - def _reduce_390(val, _values, result) - opts = @builder.regexp_options(val[3]) - result = @builder.regexp_compose(val[0], val[1], val[2], opts) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1538) - def _reduce_391(val, _values, result) - result = @builder.words_compose(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1543) - def _reduce_392(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1547) - def _reduce_393(val, _values, result) - result = val[0] << @builder.word(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1552) - def _reduce_394(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1556) - def _reduce_395(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1561) - def _reduce_396(val, _values, result) - result = @builder.words_compose(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1566) - def _reduce_397(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1570) - def _reduce_398(val, _values, result) - result = val[0] << @builder.string_internal(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1575) - def _reduce_399(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1579) - def _reduce_400(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1584) - def _reduce_401(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1588) - def _reduce_402(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1593) - def _reduce_403(val, _values, result) - result = @builder.string_internal(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1597) - def _reduce_404(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1601) - def _reduce_405(val, _values, result) - @lexer.cond.push(false) - @lexer.cmdarg.push(false) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1606) - def _reduce_406(val, _values, result) - @lexer.cond.lexpop - @lexer.cmdarg.lexpop - - result = @builder.begin(val[0], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1614) - def _reduce_407(val, _values, result) - result = @builder.gvar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1618) - def _reduce_408(val, _values, result) - result = @builder.ivar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1622) - def _reduce_409(val, _values, result) - result = @builder.cvar(val[0]) - - result - end -.,., - -# reduce 410 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1629) - def _reduce_411(val, _values, result) - result = @builder.symbol(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1634) - def _reduce_412(val, _values, result) - result = @builder.symbol_compose(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1639) - def _reduce_413(val, _values, result) - result = @builder.integer(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1643) - def _reduce_414(val, _values, result) - result = @builder.float(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1647) - def _reduce_415(val, _values, result) - result = @builder.negate(val[0], - @builder.integer(val[1])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1652) - def _reduce_416(val, _values, result) - result = @builder.negate(val[0], - @builder.float(val[1])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1658) - def _reduce_417(val, _values, result) - result = @builder.ident(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1662) - def _reduce_418(val, _values, result) - result = @builder.ivar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1666) - def _reduce_419(val, _values, result) - result = @builder.gvar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1670) - def _reduce_420(val, _values, result) - result = @builder.cvar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1674) - def _reduce_421(val, _values, result) - result = @builder.const(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1678) - def _reduce_422(val, _values, result) - result = @builder.nil(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1682) - def _reduce_423(val, _values, result) - result = @builder.self(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1686) - def _reduce_424(val, _values, result) - result = @builder.true(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1690) - def _reduce_425(val, _values, result) - result = @builder.false(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1694) - def _reduce_426(val, _values, result) - result = @builder.__FILE__(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1698) - def _reduce_427(val, _values, result) - result = @builder.__LINE__(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1703) - def _reduce_428(val, _values, result) - result = @builder.accessible(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1708) - def _reduce_429(val, _values, result) - result = @builder.assignable(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1713) - def _reduce_430(val, _values, result) - result = @builder.nth_ref(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1717) - def _reduce_431(val, _values, result) - result = @builder.back_ref(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1722) - def _reduce_432(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1726) - def _reduce_433(val, _values, result) - result = [ val[0], val[1] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1730) - def _reduce_434(val, _values, result) - yyerrok - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1736) - def _reduce_435(val, _values, result) - result = @builder.args(val[0], val[1], val[3]) - - @lexer.state = :expr_beg - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1742) - def _reduce_436(val, _values, result) - result = @builder.args(nil, val[0], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1747) - def _reduce_437(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1754) - def _reduce_438(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1760) - def _reduce_439(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1766) - def _reduce_440(val, _values, result) - result = val[0]. - concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1771) - def _reduce_441(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1777) - def _reduce_442(val, _values, result) - result = val[0]. - concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1782) - def _reduce_443(val, _values, result) - result = val[0]. - concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1787) - def _reduce_444(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1791) - def _reduce_445(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1796) - def _reduce_446(val, _values, result) - diagnostic :error, :argument_const, nil, val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1800) - def _reduce_447(val, _values, result) - diagnostic :error, :argument_ivar, nil, val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1804) - def _reduce_448(val, _values, result) - diagnostic :error, :argument_gvar, nil, val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1808) - def _reduce_449(val, _values, result) - diagnostic :error, :argument_cvar, nil, val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1812) - def _reduce_450(val, _values, result) - @static_env.declare val[0][0] - - result = @builder.arg(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1819) - def _reduce_451(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1823) - def _reduce_452(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1828) - def _reduce_453(val, _values, result) - @static_env.declare val[0][0] - - result = @builder.optarg(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1835) - def _reduce_454(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1839) - def _reduce_455(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -# reduce 456 omitted - -# reduce 457 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1846) - def _reduce_458(val, _values, result) - @static_env.declare val[1][0] - - result = [ @builder.restarg(val[0], val[1]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1852) - def _reduce_459(val, _values, result) - result = [ @builder.restarg(val[0]) ] - - result - end -.,., - -# reduce 460 omitted - -# reduce 461 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1859) - def _reduce_462(val, _values, result) - @static_env.declare val[1][0] - - result = @builder.blockarg(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1866) - def _reduce_463(val, _values, result) - result = [ val[1] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1870) - def _reduce_464(val, _values, result) - result = [] - - result - end -.,., - -# reduce 465 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1876) - def _reduce_466(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1881) - def _reduce_467(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1885) - def _reduce_468(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1889) - def _reduce_469(val, _values, result) - result = @builder.pair_list_18(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1894) - def _reduce_470(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1898) - def _reduce_471(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby18.y', 1903) - def _reduce_472(val, _values, result) - result = @builder.pair(val[0], val[1], val[2]) - - result - end -.,., - -# reduce 473 omitted - -# reduce 474 omitted - -# reduce 475 omitted - -# reduce 476 omitted - -# reduce 477 omitted - -# reduce 478 omitted - -# reduce 479 omitted - -# reduce 480 omitted - -# reduce 481 omitted - -# reduce 482 omitted - -# reduce 483 omitted - -# reduce 484 omitted - -# reduce 485 omitted - -# reduce 486 omitted - -# reduce 487 omitted - -# reduce 488 omitted - -# reduce 489 omitted - -# reduce 490 omitted - -# reduce 491 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1916) - def _reduce_492(val, _values, result) - yyerrok - - result - end -.,., - -# reduce 493 omitted - -# reduce 494 omitted - -# reduce 495 omitted - -module_eval(<<'.,.,', 'ruby18.y', 1925) - def _reduce_496(val, _values, result) - result = nil - - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Ruby18 -end # module Parser diff --git a/test/racc/regress/ruby22 b/test/racc/regress/ruby22 deleted file mode 100644 index 4731071275..0000000000 --- a/test/racc/regress/ruby22 +++ /dev/null @@ -1,11180 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.2 -# from Racc grammar file "". -# - -require 'racc/parser.rb' - - -require 'parser' - -Parser.check_for_encoding_support - -module Parser - class Ruby22 < Racc::Parser - -module_eval(<<'...end ruby22.y/module_eval...', 'ruby22.y', 2374) - - def version - 22 - end - - def default_encoding - Encoding::UTF_8 - end -...end ruby22.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - -476, -97, 268, 214, 215, -98, -105, -476, -476, -476, - -490, 568, -476, -476, -476, 610, -476, 580, 217, 612, - -288, 581, 214, 215, -476, -491, -476, -476, -476, 647, - 268, 268, 214, 215, -104, 589, -476, -476, 568, -476, - -476, -476, -476, -476, 568, 568, 212, 109, 568, 815, - -100, 121, -100, -83, -102, -99, 214, 215, 268, 218, - -288, 806, -69, 574, 646, -102, -97, -476, -476, -476, - -476, -476, -476, -476, -476, -476, -476, -476, -476, -476, - -476, -98, 609, -476, -476, -476, 611, -476, -476, 715, - 267, -476, 206, -96, -476, -476, 263, -476, 218, -476, - 207, -476, -105, -476, -476, -99, -476, -476, -476, -476, - -476, -88, -476, -479, -476, -89, -96, 218, 267, 267, - -479, -479, -479, 263, -101, -479, -479, -479, -476, -479, - 113, -476, -476, -476, -476, 112, -476, -479, -476, -479, - -479, -479, 588, -476, -95, 715, 267, -101, 715, -479, - -479, 218, -479, -479, -479, -479, -479, 113, 208, 814, - -91, -91, 112, 113, 113, 113, 842, 113, 112, 112, - 112, -100, 112, -102, -99, -93, -100, 213, -102, -99, - -479, -479, -479, -479, -479, -479, -479, -479, -479, -479, - -479, -479, -479, -479, 113, 257, -479, -479, -479, 112, - -479, -479, -574, -93, -479, 316, -103, -479, -479, 317, - -479, 597, -479, -574, -479, -90, -479, -479, 444, -479, - -479, -479, -479, -479, -291, -479, 218, -479, -91, 214, - 215, -291, -291, -291, 647, 260, 527, -291, -291, 526, - -291, -479, 261, -101, -479, -479, -479, -479, -101, -479, - 113, -479, -571, 113, 113, 112, -479, -92, 112, 112, - -291, -291, 386, -291, -291, -291, -291, -291, -91, 646, - -93, -91, -575, 396, -105, 399, 599, 598, 398, 397, - -91, 548, 597, 545, 544, 543, 747, 546, 443, 91, - 92, -291, -291, -291, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -476, -572, -291, -291, -291, - -93, 630, -476, -93, -490, -291, -94, -571, -291, 91, - 92, -476, -93, -291, 113, -291, 515, -291, -291, 112, - -291, -291, -291, -291, -291, 597, -291, -578, -291, 445, - -571, -491, -476, 446, -578, -578, -578, 599, 598, -476, - -578, -578, -291, -578, 647, -291, -291, 749, -94, -479, - -291, -88, -578, 217, 833, -578, -479, -103, 93, 94, - -97, -572, 477, -578, -578, -479, -578, -578, -578, -578, - -578, 548, -104, 545, 544, 543, 515, 546, -89, 646, - 527, 647, 597, 529, -572, 597, 486, -98, 93, 94, - 599, 598, 595, -412, -578, -578, -578, -578, -578, -578, - -578, -578, -578, -578, -578, -578, -578, -578, -578, 625, - -578, -578, -578, 597, 631, -578, 646, 113, -578, 626, - -574, -578, 112, -95, -578, 597, -578, 770, -578, -578, - -578, -578, -104, -578, -578, -578, -578, -578, 488, -578, - -578, -578, 597, -578, 490, 597, -412, 599, 598, 595, - 599, 598, 600, -412, 957, -578, -91, 756, -578, -578, - -578, -92, -412, -578, 662, -100, -93, -578, -578, -578, - -101, 498, -578, -578, -578, -102, -578, -479, 599, 598, - 602, -412, -578, -100, -479, -578, -578, -578, -578, -578, - 599, 598, 604, 771, -574, -68, -578, -578, -578, -578, - -578, -578, -578, -578, -90, 218, 860, 599, 598, 608, - 599, 598, 613, -99, 214, 215, -486, -578, 548, -485, - 545, 544, 543, -486, 546, 501, -485, -578, -578, -578, - -578, -578, -578, -578, -578, -578, -578, -578, -578, -578, - -578, 553, 502, -578, -578, -578, -487, 772, -578, -102, - 509, -578, 556, -487, -578, -578, 701, -578, 272, -578, - 218, -578, -99, -578, -578, 704, -578, -578, -578, -578, - -578, 553, -578, -578, -578, 527, -484, 79, 529, 113, - -481, 263, 556, -484, 112, 564, 563, -481, -578, 80, - 557, -578, -578, -578, -578, 238, -578, -291, -578, 81, - -482, 210, 512, -101, -291, -291, -291, -482, 211, -291, - -291, -291, -334, -291, 440, 564, 563, 209, 516, -334, - 557, 441, -483, -291, -291, -291, 238, 235, -334, -483, - 442, 237, 236, -291, -291, 260, -291, -291, -291, -291, - -291, 548, 261, 545, 544, 543, -488, 546, 548, 218, - 545, 544, 543, -488, 546, 548, 530, 545, 544, 543, - 527, 546, -488, 529, -291, -291, -291, -291, -291, -291, - -291, -291, -291, -291, -291, -291, -291, -291, 238, 701, - -291, -291, -291, -489, 773, -291, 701, 238, -291, 531, - -489, -291, -291, 701, -291, 704, -291, 490, -291, -489, - -291, -291, 904, -291, -291, -291, -291, -291, 113, -291, - 235, -291, 574, 112, 237, 236, 238, 233, 234, 235, - 214, 215, 388, 237, 236, -291, 233, 234, -291, -291, - -291, -291, 113, -291, 113, -291, 578, 112, 579, 112, - -103, 5, 69, 70, 71, 9, 57, 614, 235, 507, - 63, 64, 237, 236, 617, 67, 508, 65, 66, 68, - 30, 31, 72, 73, 218, 506, -263, 981, 619, 29, - 28, 27, 101, 100, 102, 103, 741, 742, 19, 218, - 743, 107, 108, 635, 8, 45, 7, 10, 105, 104, - 106, 95, 56, 97, 96, 98, 623, 99, 107, 108, - 624, 91, 92, 263, 42, 43, 41, 238, 242, 247, - 248, 249, 244, 246, 254, 255, 250, 251, -281, 231, - 232, 517, 634, 252, 253, -281, 40, 637, 518, 33, - 564, 563, 58, 59, -281, 238, 60, 442, 35, 235, - 238, 241, 44, 237, 236, 238, 233, 234, 245, 243, - 239, 20, 240, 837, 806, 238, 89, 79, 82, 83, - 576, 84, 86, 85, 87, 837, 806, 577, 218, 80, - 88, 218, 256, 218, -240, -83, 575, 62, 666, 81, - 93, 94, 290, 69, 70, 71, 9, 57, 218, 520, - 584, 63, 64, 677, 682, 683, 67, 583, 65, 66, - 68, 30, 31, 72, 73, 685, 585, 689, 692, 693, - 29, 28, 27, 101, 100, 102, 103, 695, 697, 19, - 699, 707, 708, 709, 620, 8, 45, 292, 10, 105, - 104, 106, 95, 56, 97, 96, 98, 711, 99, 107, - 108, 574, 91, 92, 718, 42, 43, 41, 238, 242, - 247, 248, 249, 244, 246, 254, 255, 250, 251, -292, - 231, 232, -292, 736, 252, 253, -292, 40, 746, -292, - 294, 750, 751, 58, 59, -292, -264, 60, -292, 35, - 235, 757, 241, 44, 237, 236, 477, 233, 234, 245, - 243, 239, 20, 240, 477, 218, 257, 89, 79, 82, - 83, 584, 84, 86, 85, 87, 488, 490, 939, 799, - 80, 88, 677, 256, 218, 263, 263, 585, 62, 677, - 81, 93, 94, 5, 69, 70, 71, 9, 57, 238, - 806, 584, 63, 64, 218, 218, 831, 67, 939, 65, - 66, 68, 30, 31, 72, 73, 218, 585, 806, 841, - 218, 29, 28, 27, 101, 100, 102, 103, 218, 850, - 19, -265, 859, 861, 862, 635, 8, 45, 7, 10, - 105, 104, 106, 95, 56, 97, 96, 98, 692, 99, - 107, 108, 865, 91, 92, 867, 42, 43, 41, 238, - 242, 247, 248, 249, 244, 246, 254, 255, 250, 251, - -291, 231, 232, -488, 869, 252, 253, -291, 40, 871, - -488, 33, -575, 218, 58, 59, -291, 873, 60, -488, - 35, 235, 874, 241, 44, 237, 236, 877, 233, 234, - 245, 243, 239, 20, 240, 879, 880, 677, 89, 79, - 82, 83, -489, 84, 86, 85, 87, 882, -263, -489, - 886, 80, 88, 888, 256, 891, 692, 893, -489, 62, - 895, 81, 93, 94, 290, 69, 70, 71, 9, 57, - 897, 899, 986, 63, 64, 899, 218, 905, 67, 987, - 65, 66, 68, 30, 31, 72, 73, 907, 985, 909, - 915, 918, 29, 28, 27, 101, 100, 102, 103, 218, - 936, 19, 545, 544, 543, 922, 546, 8, 45, 292, - 10, 105, 104, 106, 95, 56, 97, 96, 98, -266, - 99, 107, 108, 933, 91, 92, 940, 42, 43, 41, - 238, 242, 247, 248, 249, 244, 246, 254, 255, 250, - 251, -291, 231, 232, -281, 941, 252, 253, -291, 40, - 950, -281, 33, -575, 951, 58, 59, -291, 959, 60, - -281, 35, 235, 961, 241, 44, 237, 236, 962, 233, - 234, 245, 243, 239, 20, 240, 967, 736, 692, 89, - 79, 82, 83, -292, 84, 86, 85, 87, 971, 973, - -292, 975, 80, 88, 977, 256, 977, 988, 989, -292, - 62, 899, 81, 93, 94, 290, 69, 70, 71, 9, - 57, 899, 899, 994, 63, 64, 959, -575, -574, 67, - 682, 65, 66, 68, 30, 31, 72, 73, 116, 117, - 118, 119, 120, 29, 28, 27, 101, 100, 102, 103, - 959, 936, 19, 545, 544, 543, 1013, 546, 8, 45, - 292, 10, 105, 104, 106, 95, 56, 97, 96, 98, - 1014, 99, 107, 108, 1015, 91, 92, 977, 42, 43, - 41, 238, 242, 247, 248, 249, 244, 246, 254, 255, - 250, 251, -291, 231, 232, 977, 977, 252, 253, -291, - 40, 218, 899, 33, -575, 959, 58, 59, -291, 977, - 60, nil, 35, 235, nil, 241, 44, 237, 236, nil, - 233, 234, 245, 243, 239, 20, 240, nil, nil, nil, - 89, 79, 82, 83, nil, 84, 86, 85, 87, nil, - nil, nil, nil, 80, 88, nil, 256, nil, nil, nil, - nil, 62, nil, 81, 93, 94, 290, 69, 70, 71, - 9, 57, nil, nil, nil, 63, 64, nil, nil, nil, - 67, nil, 65, 66, 68, 30, 31, 72, 73, 116, - 117, 118, 119, 120, 29, 28, 27, 101, 100, 102, - 103, nil, nil, 19, 116, 117, 118, 119, 120, 8, - 45, 292, 10, 105, 104, 106, 95, 56, 97, 96, - 98, nil, 99, 107, 108, nil, 91, 92, nil, 42, - 43, 41, 238, 242, 247, 248, 249, 244, 246, 254, - 255, 250, 251, nil, 231, 232, nil, nil, 252, 253, - nil, 40, nil, nil, 294, nil, nil, 58, 59, nil, - nil, 60, nil, 35, 235, nil, 241, 44, 237, 236, - nil, 233, 234, 245, 243, 239, 20, 240, nil, nil, - nil, 89, 79, 82, 83, nil, 84, 86, 85, 87, - nil, nil, nil, nil, 80, 88, nil, 256, nil, nil, - nil, nil, 62, nil, 81, 93, 94, 290, 69, 70, - 71, 9, 57, nil, nil, nil, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 30, 31, 72, 73, - nil, nil, nil, nil, nil, 29, 28, 27, 101, 100, - 102, 103, nil, nil, 19, nil, nil, nil, nil, nil, - 8, 45, 292, 10, 105, 104, 106, 95, 56, 97, - 96, 98, nil, 99, 107, 108, nil, 91, 92, nil, - 42, 43, 41, 238, 242, 247, 248, 249, 244, 246, - 254, 255, 250, 251, nil, 231, 232, nil, nil, 252, - 253, nil, 40, nil, nil, 294, nil, nil, 58, 59, - nil, nil, 60, nil, 35, 235, nil, 241, 44, 237, - 236, nil, 233, 234, 245, 243, 239, 20, 240, nil, - nil, nil, 89, 79, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, 256, nil, - nil, nil, nil, 62, nil, 81, 93, 94, 290, 69, - 70, 71, 9, 57, nil, nil, nil, 63, 64, nil, - nil, nil, 67, nil, 65, 66, 68, 30, 31, 72, - 73, nil, nil, nil, nil, nil, 29, 28, 27, 101, - 100, 102, 103, nil, nil, 19, nil, nil, nil, nil, - nil, 8, 45, 292, 10, 105, 104, 106, 95, 56, - 97, 96, 98, nil, 99, 107, 108, nil, 91, 92, - nil, 42, 43, 41, 238, 242, 247, 248, 249, 244, - 246, 254, 255, 250, 251, nil, 231, 232, nil, nil, - 252, 253, nil, 40, nil, nil, 33, nil, nil, 58, - 59, nil, nil, 60, nil, 35, 235, nil, 241, 44, - 237, 236, nil, 233, 234, 245, 243, 239, 20, 240, - nil, nil, nil, 89, 79, 82, 83, nil, 84, 86, - 85, 87, nil, nil, nil, nil, 80, 88, 218, 256, - nil, nil, nil, nil, 62, nil, 81, 93, 94, 5, - 69, 70, 71, 9, 57, nil, nil, nil, 63, 64, - nil, nil, nil, 67, nil, 65, 66, 68, 30, 31, - 72, 73, nil, nil, nil, nil, nil, 29, 28, 27, - 101, 100, 102, 103, nil, nil, 19, nil, nil, nil, - nil, nil, 8, 45, 7, 10, 105, 104, 106, 95, - 56, 97, 96, 98, nil, 99, 107, 108, nil, 91, - 92, nil, 42, 43, 41, 238, 242, 247, 248, 249, - 244, 246, 254, 255, 250, 251, nil, 231, 232, nil, - nil, 252, 253, nil, 40, nil, nil, 33, nil, nil, - 58, 59, nil, nil, 60, nil, 35, 235, nil, 241, - 44, 237, 236, nil, 233, 234, 245, 243, 239, 20, - 240, nil, nil, nil, 89, 79, 82, 83, nil, 84, - 86, 85, 87, nil, nil, nil, nil, 80, 88, nil, - 256, nil, nil, nil, nil, 62, nil, 81, 93, 94, - 290, 69, 70, 71, 9, 57, nil, nil, nil, 63, - 64, nil, nil, nil, 67, nil, 65, 66, 68, 30, - 31, 72, 73, nil, nil, nil, nil, nil, 29, 28, - 27, 101, 100, 102, 103, nil, nil, 19, nil, nil, - nil, nil, nil, 8, 45, 292, 10, 105, 104, 106, - 95, 56, 97, 96, 98, nil, 99, 107, 108, nil, - 91, 92, nil, 42, 43, 41, 238, 242, 247, 248, - 249, 244, 246, 254, 255, 250, 251, nil, 231, 232, - nil, nil, 252, 253, nil, 40, nil, nil, 33, nil, - nil, 58, 59, nil, nil, 60, nil, 35, 235, nil, - 241, 44, 237, 236, nil, 233, 234, 245, 243, 239, - 20, 240, nil, nil, nil, 89, 79, 82, 83, nil, - 84, 86, 85, 87, nil, nil, nil, nil, 80, 88, - nil, 256, nil, nil, nil, nil, 62, nil, 81, 93, - 94, 290, 69, 70, 71, 9, 57, nil, nil, nil, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 30, 31, 72, 73, nil, nil, nil, nil, nil, 29, - 28, 27, 101, 100, 102, 103, nil, nil, 19, nil, - nil, nil, nil, nil, 8, 45, 292, 10, 105, 104, - 106, 95, 56, 97, 96, 98, nil, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, 238, 242, 247, - 248, 249, 244, 246, 254, 255, 250, 251, nil, 231, - 232, nil, nil, 252, 253, nil, 40, nil, nil, 33, - nil, nil, 58, 59, nil, nil, 60, nil, 35, 235, - nil, 241, 44, 237, 236, nil, 233, 234, 245, 243, - 239, 20, 240, nil, nil, nil, 89, 79, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, 256, nil, nil, nil, nil, 62, nil, 81, - 93, 94, 290, 69, 70, 71, 9, 57, nil, nil, - nil, 63, 64, nil, nil, nil, 67, nil, 65, 66, - 68, 30, 31, 72, 73, nil, nil, nil, nil, nil, - 29, 28, 27, 101, 100, 102, 103, nil, nil, 19, - nil, nil, nil, nil, nil, 8, 45, 292, 10, 105, - 104, 106, 95, 56, 97, 96, 98, nil, 99, 107, - 108, nil, 91, 92, nil, 42, 43, 41, 238, 242, - 247, 248, 249, 244, 246, 254, 255, 250, 251, nil, - 231, 232, nil, nil, 252, 253, nil, 40, nil, nil, - 33, nil, nil, 58, 59, nil, nil, 60, nil, 35, - 235, nil, 241, 44, 237, 236, nil, 233, 234, 245, - 243, 239, 20, 240, nil, nil, nil, 89, 79, 82, - 83, nil, 84, 86, 85, 87, nil, nil, nil, nil, - 80, 88, nil, 256, nil, nil, nil, nil, 62, nil, - 81, 93, 94, 290, 69, 70, 71, 9, 57, nil, - nil, nil, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 30, 31, 72, 73, nil, nil, nil, nil, - nil, 29, 28, 27, 101, 100, 102, 103, nil, nil, - 19, nil, nil, nil, nil, nil, 8, 45, 292, 10, - 105, 104, 106, 95, 56, 97, 96, 98, nil, 99, - 107, 108, nil, 91, 92, nil, 42, 43, 41, 238, - 242, 247, 248, 249, 244, 246, 254, 255, 250, 251, - nil, 231, 232, nil, nil, 252, 253, nil, 40, nil, - nil, 33, nil, nil, 58, 59, nil, nil, 60, nil, - 35, 235, nil, 241, 44, 237, 236, nil, 233, 234, - 245, 243, 239, 20, 240, nil, nil, nil, 89, 79, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, 256, nil, nil, nil, nil, 62, - nil, 81, 93, 94, 290, 69, 70, 71, 9, 57, - nil, nil, nil, 63, 64, nil, nil, nil, 67, nil, - 65, 66, 68, 30, 31, 72, 73, nil, nil, nil, - nil, nil, 29, 28, 27, 101, 100, 102, 103, nil, - nil, 19, nil, nil, nil, nil, nil, 8, 45, 292, - 10, 105, 104, 106, 95, 56, 97, 96, 98, nil, - 99, 107, 108, nil, 91, 92, nil, 42, 43, 41, - 238, 242, 247, 248, 249, 244, 246, 254, 255, 250, - 251, nil, 231, 232, nil, nil, 252, 253, nil, 40, - nil, nil, 33, nil, nil, 58, 59, nil, nil, 60, - nil, 35, 235, nil, 241, 44, 237, 236, nil, 233, - 234, 245, 243, 239, 20, 240, nil, nil, nil, 89, - 79, 82, 83, nil, 84, 86, 85, 87, nil, nil, - nil, nil, 80, 88, nil, 256, nil, nil, nil, nil, - 62, nil, 81, 93, 94, 290, 69, 70, 71, 9, - 57, nil, nil, nil, 63, 64, nil, nil, nil, 67, - nil, 65, 66, 68, 30, 31, 72, 73, nil, nil, - nil, nil, nil, 29, 28, 27, 101, 100, 102, 103, - nil, nil, 19, nil, nil, nil, nil, nil, 8, 45, - 292, 10, 105, 104, 106, 95, 56, 97, 96, 98, - nil, 99, 107, 108, nil, 91, 92, nil, 42, 43, - 41, 238, 242, 247, 248, 249, 244, 246, 254, 255, - 250, 251, nil, 231, 232, nil, nil, 252, 253, nil, - 40, nil, nil, 33, nil, nil, 58, 59, nil, nil, - 60, nil, 35, 235, nil, 241, 44, 237, 236, nil, - 233, 234, 245, 243, 239, 20, 240, nil, nil, nil, - 89, 79, 82, 83, nil, 84, 86, 85, 87, nil, - nil, nil, nil, 80, 88, nil, 256, nil, nil, nil, - nil, 62, nil, 81, 93, 94, 290, 69, 70, 71, - 9, 57, nil, nil, nil, 63, 64, nil, nil, nil, - 67, nil, 65, 66, 68, 30, 31, 72, 73, nil, - nil, nil, nil, nil, 29, 28, 27, 101, 100, 102, - 103, nil, nil, 19, nil, nil, nil, nil, nil, 8, - 45, 292, 10, 105, 104, 106, 95, 56, 97, 96, - 98, nil, 99, 107, 108, nil, 91, 92, nil, 42, - 43, 41, 238, 242, 247, 248, 249, 244, 246, 254, - 255, 250, 251, nil, 231, 232, nil, nil, 252, 253, - nil, 40, nil, nil, 33, nil, nil, 58, 59, nil, - nil, 60, nil, 35, 235, nil, 241, 44, 237, 236, - nil, 233, 234, 245, 243, 239, 20, 240, nil, nil, - nil, 89, 79, 82, 83, nil, 84, 86, 85, 87, - nil, nil, nil, nil, 80, 88, nil, 256, nil, nil, - nil, nil, 62, nil, 81, 93, 94, 290, 69, 70, - 71, 9, 57, nil, nil, nil, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 30, 31, 72, 73, - nil, nil, nil, nil, nil, 29, 28, 27, 101, 100, - 102, 103, nil, nil, 19, nil, nil, nil, nil, nil, - 8, 45, 292, 10, 105, 104, 106, 95, 56, 97, - 96, 98, nil, 99, 107, 108, nil, 91, 92, nil, - 42, 43, 41, 238, 242, 247, 248, 249, 244, 246, - 254, 255, 250, 251, nil, 231, 232, nil, nil, 252, - 253, nil, 40, nil, nil, 33, nil, nil, 58, 59, - nil, nil, 60, nil, 35, 235, nil, 241, 44, 237, - 236, nil, 233, 234, 245, 243, 239, 20, 240, nil, - nil, nil, 89, 79, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, 256, nil, - nil, nil, nil, 62, nil, 81, 93, 94, 290, 69, - 70, 71, 9, 57, nil, nil, nil, 63, 64, nil, - nil, nil, 67, nil, 65, 66, 68, 30, 31, 72, - 73, nil, nil, nil, nil, nil, 29, 28, 27, 101, - 100, 102, 103, nil, nil, 19, nil, nil, nil, nil, - nil, 8, 45, 292, 10, 105, 104, 106, 95, 56, - 97, 96, 98, nil, 99, 107, 108, nil, 91, 92, - nil, 42, 43, 41, 238, 242, 247, 248, 249, 244, - 246, 254, 255, 250, 251, nil, -597, -597, nil, nil, - 252, 253, nil, 40, nil, nil, 33, nil, nil, 58, - 59, nil, nil, 60, nil, 35, 235, nil, 241, 44, - 237, 236, nil, 233, 234, 245, 243, 239, 20, 240, - nil, nil, nil, 89, 79, 82, 83, nil, 84, 86, - 85, 87, nil, nil, nil, nil, 80, 88, nil, nil, - nil, nil, nil, nil, 62, nil, 81, 93, 94, 290, - 69, 70, 71, 9, 57, nil, nil, nil, 63, 64, - nil, nil, nil, 67, nil, 65, 66, 68, 30, 31, - 72, 73, nil, nil, nil, nil, nil, 29, 28, 27, - 101, 100, 102, 103, nil, nil, 19, nil, nil, nil, - nil, nil, 8, 45, 292, 10, 105, 104, 106, 95, - 56, 97, 96, 98, nil, 99, 107, 108, nil, 91, - 92, nil, 42, 43, 41, 238, 242, 247, 248, 249, - 244, 246, 254, 255, 250, 251, nil, -597, -597, nil, - nil, 252, 253, nil, 40, nil, nil, 33, nil, nil, - 58, 59, nil, nil, 60, nil, 35, 235, nil, 241, - 44, 237, 236, nil, 233, 234, 245, 243, 239, 20, - 240, nil, nil, nil, 89, 79, 82, 83, nil, 84, - 86, 85, 87, nil, nil, nil, nil, 80, 88, nil, - nil, nil, nil, nil, nil, 62, nil, 81, 93, 94, - 290, 69, 70, 71, 9, 57, nil, nil, nil, 63, - 64, nil, nil, nil, 67, nil, 65, 66, 68, 30, - 31, 72, 73, nil, nil, nil, nil, nil, 29, 28, - 27, 101, 100, 102, 103, nil, 548, 19, 545, 544, - 543, nil, 546, 8, 45, 292, 10, 105, 104, 106, - 95, 56, 97, 96, 98, nil, 99, 107, 108, nil, - 91, 92, nil, 42, 43, 41, 238, -597, -597, -597, - -597, 244, 246, nil, 701, -597, -597, nil, nil, nil, - nil, nil, 252, 253, nil, 40, nil, nil, 33, nil, - nil, 58, 59, nil, nil, 60, nil, 35, 235, nil, - 241, 44, 237, 236, nil, 233, 234, 245, 243, 239, - 20, 240, nil, nil, nil, 89, 79, 82, 83, nil, - 84, 86, 85, 87, nil, nil, nil, nil, 80, 88, - nil, nil, nil, nil, nil, nil, 62, nil, 81, 93, - 94, 290, 69, 70, 71, 9, 57, nil, nil, nil, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 30, 31, 72, 73, nil, nil, nil, nil, nil, 29, - 28, 27, 101, 100, 102, 103, nil, 548, 19, 545, - 544, 543, nil, 546, 8, 45, 292, 10, 105, 104, - 106, 95, 56, 97, 96, 98, nil, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, 238, nil, nil, - 548, nil, 545, 544, 543, 701, 546, nil, nil, nil, - nil, nil, nil, 252, 253, nil, 40, nil, nil, 33, - nil, nil, 58, 59, nil, nil, 60, nil, 35, 235, - nil, 241, 44, 237, 236, nil, 233, 234, 701, nil, - 239, 20, 240, nil, nil, nil, 89, 79, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, nil, nil, nil, 62, nil, 81, - 93, 94, 290, 69, 70, 71, 9, 57, nil, nil, - nil, 63, 64, nil, nil, nil, 67, nil, 65, 66, - 68, 30, 31, 72, 73, nil, nil, nil, nil, nil, - 29, 28, 27, 101, 100, 102, 103, nil, 548, 19, - 545, 544, 543, nil, 546, 8, 45, 292, 10, 105, - 104, 106, 95, 56, 97, 96, 98, nil, 99, 107, - 108, nil, 91, 92, nil, 42, 43, 41, 238, nil, - nil, nil, nil, nil, nil, nil, 701, nil, nil, nil, - nil, nil, nil, nil, 252, 253, nil, 40, nil, nil, - 33, nil, nil, 58, 59, nil, nil, 60, nil, 35, - 235, nil, 241, 44, 237, 236, nil, 233, 234, nil, - nil, 239, 20, 240, nil, nil, nil, 89, 79, 82, - 83, nil, 84, 86, 85, 87, nil, nil, nil, nil, - 80, 88, nil, nil, nil, nil, nil, nil, 62, nil, - 81, 93, 94, 290, 69, 70, 71, 9, 57, nil, - nil, nil, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 30, 31, 72, 73, nil, nil, nil, nil, - nil, 29, 28, 27, 101, 100, 102, 103, nil, nil, - 19, nil, nil, nil, nil, nil, 8, 45, 292, 10, - 105, 104, 106, 95, 56, 97, 96, 98, nil, 99, - 107, 108, nil, 91, 92, nil, 42, 43, 41, 238, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 252, 253, nil, 40, nil, - nil, 33, nil, nil, 58, 59, nil, nil, 60, nil, - 35, 235, nil, 241, 44, 237, 236, nil, 233, 234, - nil, nil, 239, 20, 240, nil, nil, nil, 89, 79, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, nil, nil, nil, 62, - nil, 81, 93, 94, 290, 69, 70, 71, 9, 57, - nil, nil, nil, 63, 64, nil, nil, nil, 67, nil, - 65, 66, 68, 30, 31, 72, 73, nil, nil, nil, - nil, nil, 29, 28, 27, 101, 100, 102, 103, nil, - nil, 19, nil, nil, nil, nil, nil, 8, 45, 292, - 10, 105, 104, 106, 95, 56, 97, 96, 98, nil, - 99, 107, 108, nil, 91, 92, nil, 42, 43, 41, - 238, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 252, 253, nil, 40, - nil, nil, 33, nil, nil, 58, 59, nil, nil, 60, - nil, 35, 235, nil, 241, 44, 237, 236, nil, 233, - 234, nil, nil, 239, 20, 240, nil, nil, nil, 89, - 79, 82, 83, nil, 84, 86, 85, 87, nil, nil, - nil, nil, 80, 88, nil, nil, nil, nil, nil, nil, - 62, nil, 81, 93, 94, 290, 69, 70, 71, 9, - 57, nil, nil, nil, 63, 64, nil, nil, nil, 67, - nil, 65, 66, 68, 30, 31, 72, 73, nil, nil, - nil, nil, nil, 29, 28, 27, 101, 100, 102, 103, - nil, nil, 19, nil, nil, nil, nil, nil, 8, 45, - 292, 10, 105, 104, 106, 95, 56, 97, 96, 98, - nil, 99, 107, 108, nil, 91, 92, nil, 42, 43, - 41, 238, -597, -597, -597, -597, 244, 246, nil, nil, - -597, -597, nil, nil, nil, nil, nil, 252, 253, nil, - 40, nil, nil, 33, nil, nil, 58, 59, nil, nil, - 60, nil, 35, 235, nil, 241, 44, 237, 236, nil, - 233, 234, 245, 243, 239, 20, 240, nil, nil, nil, - 89, 79, 82, 83, nil, 84, 86, 85, 87, nil, - nil, nil, nil, 80, 88, nil, nil, nil, nil, nil, - nil, 62, nil, 81, 93, 94, 290, 69, 70, 71, - 9, 57, nil, nil, nil, 63, 64, nil, nil, nil, - 67, nil, 65, 66, 68, 30, 31, 72, 73, nil, - nil, nil, nil, nil, 29, 28, 27, 101, 100, 102, - 103, nil, nil, 19, nil, nil, nil, nil, nil, 8, - 45, 292, 10, 105, 104, 106, 95, 56, 97, 96, - 98, nil, 99, 107, 108, nil, 91, 92, nil, 42, - 43, 41, 238, -597, -597, -597, -597, 244, 246, nil, - nil, -597, -597, nil, nil, nil, nil, nil, 252, 253, - nil, 40, nil, nil, 33, nil, nil, 58, 59, nil, - nil, 60, nil, 35, 235, nil, 241, 44, 237, 236, - nil, 233, 234, 245, 243, 239, 20, 240, nil, nil, - nil, 89, 79, 82, 83, nil, 84, 86, 85, 87, - nil, nil, nil, nil, 80, 88, nil, nil, nil, nil, - nil, nil, 62, nil, 81, 93, 94, 290, 69, 70, - 71, 9, 57, nil, nil, nil, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 30, 31, 72, 73, - nil, nil, nil, nil, nil, 29, 28, 27, 101, 100, - 102, 103, nil, nil, 19, nil, nil, nil, nil, nil, - 8, 45, 292, 10, 105, 104, 106, 95, 56, 97, - 96, 98, nil, 99, 107, 108, nil, 91, 92, nil, - 42, 43, 41, 238, -597, -597, -597, -597, 244, 246, - nil, nil, -597, -597, nil, nil, nil, nil, nil, 252, - 253, nil, 40, nil, nil, 33, nil, nil, 58, 59, - nil, nil, 60, nil, 35, 235, nil, 241, 44, 237, - 236, nil, 233, 234, 245, 243, 239, 20, 240, nil, - nil, nil, 89, 79, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, nil, nil, - nil, nil, nil, 62, nil, 81, 93, 94, 290, 69, - 70, 71, 9, 57, nil, nil, nil, 63, 64, nil, - nil, nil, 67, nil, 65, 66, 68, 30, 31, 72, - 73, nil, nil, nil, nil, nil, 29, 28, 27, 101, - 100, 102, 103, nil, nil, 19, nil, nil, nil, nil, - nil, 8, 45, 292, 10, 105, 104, 106, 95, 56, - 97, 96, 98, nil, 99, 107, 108, nil, 91, 92, - nil, 42, 43, 41, 238, -597, -597, -597, -597, 244, - 246, nil, nil, -597, -597, nil, nil, nil, nil, nil, - 252, 253, nil, 40, nil, nil, 33, nil, nil, 58, - 59, nil, nil, 60, nil, 35, 235, nil, 241, 44, - 237, 236, nil, 233, 234, 245, 243, 239, 20, 240, - nil, nil, nil, 89, 79, 82, 83, nil, 84, 86, - 85, 87, nil, nil, nil, nil, 80, 88, nil, nil, - nil, nil, nil, nil, 62, nil, 81, 93, 94, 290, - 69, 70, 71, 9, 57, nil, nil, nil, 63, 64, - nil, nil, nil, 67, nil, 65, 66, 68, 30, 31, - 72, 73, nil, nil, nil, nil, nil, 29, 28, 27, - 101, 100, 102, 103, nil, nil, 19, nil, nil, nil, - nil, nil, 8, 45, 292, 10, 105, 104, 106, 95, - 56, 97, 96, 98, nil, 99, 107, 108, nil, 91, - 92, nil, 42, 43, 41, 238, -597, -597, -597, -597, - 244, 246, nil, nil, -597, -597, nil, nil, nil, nil, - nil, 252, 253, nil, 40, nil, nil, 33, nil, nil, - 58, 59, nil, nil, 60, nil, 35, 235, nil, 241, - 44, 237, 236, nil, 233, 234, 245, 243, 239, 20, - 240, nil, nil, nil, 89, 79, 82, 83, nil, 84, - 86, 85, 87, nil, nil, nil, nil, 80, 88, nil, - nil, nil, nil, nil, nil, 62, nil, 81, 93, 94, - 290, 69, 70, 71, 9, 57, nil, nil, nil, 63, - 64, nil, nil, nil, 67, nil, 65, 66, 68, 30, - 31, 72, 73, nil, nil, nil, nil, nil, 29, 28, - 27, 101, 100, 102, 103, nil, nil, 19, nil, nil, - nil, nil, nil, 8, 45, 292, 10, 105, 104, 106, - 95, 56, 97, 96, 98, nil, 99, 107, 108, nil, - 91, 92, nil, 42, 43, 41, 238, 242, 247, 248, - 249, 244, 246, nil, nil, 250, 251, nil, nil, nil, - nil, nil, 252, 253, nil, 40, nil, nil, 33, nil, - nil, 58, 59, nil, nil, 60, nil, 35, 235, nil, - 241, 44, 237, 236, nil, 233, 234, 245, 243, 239, - 20, 240, nil, nil, nil, 89, 79, 82, 83, nil, - 84, 86, 85, 87, nil, nil, nil, nil, 80, 88, - nil, nil, nil, nil, nil, nil, 62, nil, 81, 93, - 94, 290, 69, 70, 71, 9, 57, nil, nil, nil, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 30, 31, 72, 73, nil, nil, nil, nil, nil, 29, - 28, 27, 101, 100, 102, 103, nil, nil, 19, nil, - nil, nil, nil, nil, 8, 45, 292, 10, 105, 104, - 106, 95, 56, 97, 96, 98, nil, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, 238, 242, 247, - 248, 249, 244, 246, 254, nil, 250, 251, nil, nil, - nil, nil, nil, 252, 253, nil, 40, nil, nil, 33, - nil, nil, 58, 59, nil, nil, 60, nil, 35, 235, - nil, 241, 44, 237, 236, nil, 233, 234, 245, 243, - 239, 20, 240, nil, nil, nil, 89, 79, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, nil, nil, nil, 62, nil, 81, - 93, 94, 69, 70, 71, 9, 57, nil, nil, nil, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 30, 31, 72, 73, nil, nil, nil, nil, nil, 29, - 28, 27, 101, 100, 102, 103, nil, nil, 19, nil, - nil, nil, nil, nil, 8, 45, 7, 10, 105, 104, - 106, 95, 56, 97, 96, 98, nil, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, 238, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 252, 253, nil, 40, nil, nil, 33, - nil, nil, 58, 59, nil, nil, 60, nil, 35, 235, - nil, 241, 44, 237, 236, nil, 233, 234, nil, nil, - nil, 20, nil, nil, nil, nil, 89, 79, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, 69, 70, 71, 62, 57, 81, - 93, 94, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 30, 31, 72, 73, nil, nil, nil, nil, - nil, 29, 28, 27, 101, 100, 102, 103, nil, nil, - 230, nil, nil, nil, nil, nil, nil, 45, nil, nil, - 105, 104, 106, 95, 56, 97, 96, 98, nil, 99, - 107, 108, nil, 91, 92, nil, 42, 43, 41, 238, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 252, 253, nil, 223, nil, - nil, 229, nil, nil, 58, 59, nil, nil, 60, nil, - nil, 235, nil, 241, 44, 237, 236, nil, 233, 234, - nil, nil, nil, 228, nil, nil, nil, nil, 89, 79, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, 69, 70, 71, 62, - 57, 81, 93, 94, 63, 64, nil, nil, nil, 67, - nil, 65, 66, 68, 30, 31, 72, 73, nil, nil, - nil, nil, nil, 29, 28, 27, 101, 100, 102, 103, - nil, nil, 230, nil, nil, nil, nil, nil, nil, 45, - nil, nil, 105, 104, 106, 95, 56, 97, 96, 98, - 284, 99, 107, 108, nil, 91, 92, nil, 42, 43, - 41, 238, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 252, 253, nil, - 223, nil, nil, 229, nil, nil, 58, 59, nil, nil, - 60, nil, 281, 235, 279, nil, 44, 237, 236, 285, - 233, 234, nil, nil, nil, 228, nil, nil, nil, nil, - 89, 282, 82, 83, nil, 84, 86, 85, 87, nil, - nil, nil, nil, 80, 88, nil, nil, nil, 69, 70, - 71, 62, 57, 81, 93, 94, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 30, 31, 72, 73, - nil, nil, nil, nil, nil, 29, 28, 27, 101, 100, - 102, 103, nil, nil, 230, nil, nil, nil, nil, nil, - nil, 45, nil, nil, 105, 104, 106, 95, 56, 97, - 96, 98, 284, 99, 107, 108, nil, 91, 92, nil, - 42, 43, 41, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 223, nil, nil, 229, nil, nil, 58, 59, - nil, nil, 60, nil, 281, nil, 279, nil, 44, nil, - nil, 285, nil, nil, nil, nil, nil, 228, nil, nil, - nil, nil, 89, 282, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, nil, nil, - 69, 70, 71, 62, 57, 81, 93, 94, 63, 64, - nil, nil, nil, 67, nil, 65, 66, 68, 30, 31, - 72, 73, nil, nil, nil, nil, nil, 29, 28, 27, - 101, 100, 102, 103, nil, nil, 230, nil, nil, nil, - nil, nil, nil, 45, nil, nil, 105, 104, 106, 95, - 56, 97, 96, 98, 284, 99, 107, 108, nil, 91, - 92, nil, 42, 43, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 223, nil, nil, 229, nil, nil, - 58, 59, nil, nil, 60, nil, 281, nil, 279, nil, - 44, nil, nil, 285, nil, nil, nil, nil, nil, 228, - nil, nil, nil, nil, 89, 282, 82, 83, nil, 84, - 86, 85, 87, nil, nil, nil, nil, 80, 88, nil, - nil, nil, 69, 70, 71, 62, 57, 81, 93, 94, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 309, 310, 72, 73, nil, nil, nil, nil, nil, 305, - 306, 312, 101, 100, 102, 103, nil, nil, 230, nil, - nil, nil, nil, nil, nil, 307, nil, nil, 105, 104, - 106, 95, 56, 97, 96, 98, nil, 99, 107, 108, - nil, 91, 92, nil, nil, nil, 313, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 303, nil, nil, 299, - nil, nil, 58, 59, nil, nil, 60, nil, 298, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 89, 79, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, 69, 70, 71, 62, 57, 81, - 93, 94, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 309, 310, 72, 73, nil, nil, nil, nil, - nil, 305, 306, 312, 101, 100, 102, 103, nil, nil, - 230, nil, nil, nil, nil, nil, nil, 307, nil, nil, - 105, 104, 106, 95, 56, 97, 96, 98, nil, 99, - 107, 108, nil, 91, 92, nil, nil, nil, 313, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 303, nil, - nil, 229, nil, nil, 58, 59, nil, nil, 60, nil, - 548, nil, 545, 544, 543, 553, 546, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 556, nil, 89, 79, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, 315, nil, 551, 62, - nil, 81, 93, 94, 69, 70, 71, nil, 57, 564, - 563, nil, 63, 64, 557, nil, nil, 67, nil, 65, - 66, 68, 309, 310, 72, 73, nil, nil, nil, nil, - nil, 305, 306, 312, 101, 100, 102, 103, nil, nil, - 230, nil, nil, nil, nil, nil, nil, 45, nil, nil, - 105, 104, 106, 95, 56, 97, 96, 98, nil, 99, - 107, 108, nil, 91, 92, nil, 42, 43, 41, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 223, nil, - nil, 229, nil, nil, 58, 59, nil, nil, 60, nil, - nil, nil, nil, nil, 44, nil, nil, nil, nil, nil, - nil, nil, nil, 228, nil, nil, nil, nil, 89, 79, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, 69, 70, 71, 62, - 57, 81, 93, 94, 63, 64, nil, nil, nil, 67, - nil, 65, 66, 68, 309, 310, 72, 73, nil, nil, - nil, nil, nil, 305, 306, 312, 101, 100, 102, 103, - nil, nil, 230, nil, nil, nil, nil, nil, nil, 45, - nil, nil, 105, 104, 106, 95, 56, 97, 96, 98, - nil, 99, 107, 108, nil, 91, 92, nil, 42, 43, - 41, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 223, nil, nil, 229, nil, nil, 58, 59, nil, nil, - 60, nil, nil, nil, nil, nil, 44, nil, nil, nil, - nil, nil, nil, nil, nil, 228, nil, nil, nil, nil, - 89, 79, 82, 83, nil, 84, 86, 85, 87, nil, - nil, nil, nil, 80, 88, nil, nil, nil, 69, 70, - 71, 62, 57, 81, 93, 94, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 309, 310, 72, 73, - nil, nil, nil, nil, nil, 305, 306, 312, 101, 100, - 102, 103, nil, nil, 230, nil, nil, nil, nil, nil, - nil, 45, nil, nil, 105, 104, 106, 95, 56, 97, - 96, 98, nil, 99, 107, 108, nil, 91, 92, nil, - 42, 43, 41, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 223, nil, nil, 229, nil, nil, 58, 59, - nil, nil, 60, nil, nil, nil, nil, nil, 44, nil, - nil, nil, nil, nil, nil, nil, nil, 228, nil, nil, - nil, nil, 89, 79, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, nil, nil, - 69, 70, 71, 62, 57, 81, 93, 94, 63, 64, - nil, nil, nil, 67, nil, 65, 66, 68, 309, 310, - 72, 73, nil, nil, nil, nil, nil, 305, 306, 312, - 101, 100, 102, 103, nil, nil, 230, nil, nil, nil, - nil, nil, nil, 45, nil, nil, 105, 104, 106, 95, - 56, 97, 96, 98, 284, 99, 107, 108, nil, 91, - 92, nil, 42, 43, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 223, nil, nil, 229, nil, nil, - 58, 59, nil, nil, 60, nil, 281, nil, nil, nil, - 44, nil, nil, 285, nil, nil, nil, nil, nil, 228, - nil, nil, nil, nil, 89, 282, 82, 83, nil, 84, - 86, 85, 87, nil, nil, nil, nil, 80, 88, nil, - nil, nil, 69, 70, 71, 62, 57, 81, 93, 94, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 309, 310, 72, 73, nil, nil, nil, nil, nil, 305, - 306, 312, 101, 100, 102, 103, nil, nil, 230, nil, - nil, nil, nil, nil, nil, 45, nil, nil, 105, 104, - 106, 95, 56, 97, 96, 98, 284, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 223, nil, nil, 229, - nil, nil, 58, 59, nil, nil, 60, nil, nil, nil, - nil, nil, 44, nil, nil, 285, nil, nil, nil, nil, - nil, 228, nil, nil, nil, nil, 89, 282, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, 69, 70, 71, 62, 57, 81, - 93, 94, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 30, 31, 72, 73, nil, nil, nil, nil, - nil, 29, 28, 27, 101, 100, 102, 103, nil, nil, - 19, nil, nil, nil, nil, nil, nil, 45, nil, nil, - 105, 104, 106, 95, 56, 97, 96, 98, nil, 99, - 107, 108, nil, 91, 92, nil, 42, 43, 41, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 223, nil, - nil, 229, nil, nil, 58, 59, nil, nil, 60, nil, - nil, nil, nil, nil, 44, nil, nil, nil, nil, nil, - nil, nil, nil, 20, nil, nil, nil, nil, 89, 79, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, 69, 70, 71, 62, - 57, 81, 93, 94, 63, 64, nil, nil, nil, 67, - nil, 65, 66, 68, 30, 31, 72, 73, nil, nil, - nil, nil, nil, 29, 28, 27, 101, 100, 102, 103, - nil, nil, 19, nil, nil, nil, nil, nil, nil, 45, - nil, nil, 105, 104, 106, 95, 56, 97, 96, 98, - nil, 99, 107, 108, nil, 91, 92, nil, 42, 43, - 41, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 223, nil, nil, 229, nil, nil, 58, 59, nil, nil, - 60, nil, nil, nil, nil, nil, 44, nil, nil, nil, - nil, nil, nil, nil, nil, 20, nil, nil, nil, nil, - 89, 79, 82, 83, nil, 84, 86, 85, 87, nil, - nil, nil, nil, 80, 88, nil, nil, nil, 69, 70, - 71, 62, 57, 81, 93, 94, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 30, 31, 72, 73, - nil, nil, nil, nil, nil, 29, 28, 27, 101, 100, - 102, 103, nil, nil, 19, nil, nil, nil, nil, nil, - nil, 45, nil, nil, 105, 104, 106, 95, 56, 97, - 96, 98, nil, 99, 107, 108, nil, 91, 92, nil, - 42, 43, 41, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 223, nil, nil, 229, nil, nil, 58, 59, - nil, nil, 60, nil, nil, nil, nil, nil, 44, nil, - nil, nil, nil, nil, nil, nil, nil, 20, nil, nil, - nil, nil, 89, 79, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, 113, nil, nil, - nil, nil, 112, 62, nil, 81, 93, 94, 69, 70, - 71, nil, 57, nil, nil, nil, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 309, 310, 72, 73, - nil, nil, nil, nil, nil, 305, 306, 312, 101, 100, - 102, 103, nil, nil, 230, nil, nil, nil, nil, nil, - nil, 307, nil, nil, 105, 104, 106, 95, 56, 97, - 96, 98, nil, 99, 107, 108, nil, 91, 92, nil, - nil, nil, 313, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 348, nil, nil, 33, nil, nil, 58, 59, - nil, nil, 60, nil, 35, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 89, 79, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, nil, nil, - 69, 70, 71, 62, 57, 81, 93, 94, 63, 64, - nil, nil, nil, 67, nil, 65, 66, 68, 309, 310, - 72, 73, nil, nil, nil, nil, nil, 305, 306, 312, - 101, 100, 102, 103, nil, nil, 230, nil, nil, nil, - nil, nil, nil, 307, nil, nil, 105, 104, 106, 353, - 56, 97, 96, 354, nil, 99, 107, 108, nil, 91, - 92, nil, nil, nil, 313, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 360, nil, nil, 355, nil, nil, 229, nil, nil, - 58, 59, nil, nil, 60, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 89, 79, 82, 83, nil, 84, - 86, 85, 87, nil, nil, nil, nil, 80, 88, nil, - nil, nil, 69, 70, 71, 62, 57, 81, 93, 94, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 309, 310, 72, 73, nil, nil, nil, nil, nil, 305, - 306, 312, 101, 100, 102, 103, nil, nil, 230, nil, - nil, nil, nil, nil, nil, 307, nil, nil, 105, 104, - 106, 353, 56, 97, 96, 354, nil, 99, 107, 108, - nil, 91, 92, nil, nil, nil, 313, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 355, nil, nil, 229, - nil, nil, 58, 59, nil, nil, 60, nil, 548, nil, - 545, 544, 543, 553, 546, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 556, nil, 89, 79, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, nil, nil, 551, 62, nil, 81, - 93, 94, 69, 70, 71, 9, 57, 564, 563, nil, - 63, 64, 557, nil, nil, 67, nil, 65, 66, 68, - 30, 31, 72, 73, nil, nil, nil, nil, nil, 29, - 28, 27, 101, 100, 102, 103, nil, nil, 19, nil, - nil, nil, nil, nil, 8, 45, 7, 10, 105, 104, - 106, 95, 56, 97, 96, 98, nil, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 40, nil, nil, 33, - nil, nil, 58, 59, nil, nil, 60, nil, 35, nil, - nil, nil, 44, nil, nil, nil, nil, nil, nil, nil, - nil, 20, nil, nil, nil, nil, 89, 79, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, nil, nil, 388, 62, nil, 81, - 93, 94, 69, 70, 71, nil, 57, nil, nil, nil, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 30, 31, 72, 73, nil, nil, nil, nil, nil, 29, - 28, 27, 101, 100, 102, 103, nil, nil, 19, nil, - nil, nil, nil, nil, nil, 45, nil, nil, 105, 104, - 106, 95, 56, 97, 96, 98, nil, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 223, nil, nil, 229, - nil, nil, 58, 59, nil, nil, 60, nil, nil, nil, - nil, nil, 44, nil, nil, nil, nil, nil, nil, nil, - nil, 20, nil, nil, nil, nil, 89, 79, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, 69, 70, 71, 62, 57, 81, - 93, 94, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 30, 31, 72, 73, nil, nil, nil, nil, - nil, 29, 28, 27, 101, 100, 102, 103, nil, nil, - 19, nil, nil, nil, nil, nil, nil, 45, nil, nil, - 105, 104, 106, 95, 56, 97, 96, 98, nil, 99, - 107, 108, nil, 91, 92, nil, 42, 43, 41, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 223, nil, - nil, 229, nil, nil, 58, 59, nil, nil, 60, nil, - nil, nil, nil, nil, 44, nil, nil, nil, nil, nil, - nil, nil, nil, 20, nil, nil, nil, nil, 89, 79, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, 69, 70, 71, 62, - 57, 81, 93, 94, 63, 64, nil, nil, nil, 67, - nil, 65, 66, 68, 30, 31, 72, 73, nil, nil, - nil, nil, nil, 29, 28, 27, 101, 100, 102, 103, - nil, nil, 19, nil, nil, nil, nil, nil, nil, 45, - nil, nil, 105, 104, 106, 95, 56, 97, 96, 98, - nil, 99, 107, 108, nil, 91, 92, nil, 42, 43, - 41, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 223, nil, nil, 229, nil, nil, 58, 59, nil, nil, - 60, nil, nil, nil, nil, nil, 44, nil, nil, nil, - nil, nil, nil, nil, nil, 20, nil, nil, nil, nil, - 89, 79, 82, 83, nil, 84, 86, 85, 87, nil, - nil, nil, nil, 80, 88, nil, nil, nil, 69, 70, - 71, 62, 57, 81, 93, 94, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 30, 31, 72, 73, - nil, nil, nil, nil, nil, 29, 28, 27, 101, 100, - 102, 103, nil, nil, 19, nil, nil, nil, nil, nil, - nil, 45, nil, nil, 105, 104, 106, 95, 56, 97, - 96, 98, nil, 99, 107, 108, nil, 91, 92, nil, - 42, 43, 41, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 223, nil, nil, 229, nil, nil, 58, 59, - nil, nil, 60, nil, nil, nil, nil, nil, 44, nil, - nil, nil, nil, nil, nil, nil, nil, 20, nil, nil, - nil, nil, 89, 79, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, nil, nil, - nil, nil, nil, 62, nil, 81, 93, 94, 69, 70, - 71, 9, 57, nil, nil, nil, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 30, 31, 72, 73, - nil, nil, nil, nil, nil, 29, 28, 27, 101, 100, - 102, 103, nil, nil, 19, nil, nil, nil, nil, nil, - 8, 45, nil, 10, 105, 104, 106, 95, 56, 97, - 96, 98, nil, 99, 107, 108, nil, 91, 92, nil, - 42, 43, 41, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 40, nil, nil, 33, nil, nil, 58, 59, - nil, nil, 60, nil, 35, nil, nil, nil, 44, nil, - nil, nil, nil, nil, nil, nil, nil, 20, nil, nil, - nil, nil, 89, 79, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, nil, nil, - 69, 70, 71, 62, 57, 81, 93, 94, 63, 64, - nil, nil, nil, 67, nil, 65, 66, 68, 30, 31, - 72, 73, nil, nil, nil, nil, nil, 29, 28, 27, - 101, 100, 102, 103, nil, nil, 230, nil, nil, nil, - nil, nil, nil, 45, nil, nil, 105, 104, 106, 95, - 56, 97, 96, 98, nil, 99, 107, 108, nil, 91, - 92, nil, 42, 43, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 223, nil, nil, 229, nil, nil, - 58, 59, nil, nil, 60, nil, 404, nil, nil, nil, - 44, nil, nil, nil, nil, nil, nil, nil, nil, 228, - nil, nil, nil, nil, 89, 79, 82, 83, nil, 84, - 86, 85, 87, nil, nil, nil, nil, 80, 88, nil, - nil, nil, 69, 70, 71, 62, 57, 81, 93, 94, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 30, 31, 72, 73, nil, nil, nil, nil, nil, 29, - 28, 27, 101, 100, 102, 103, nil, nil, 230, nil, - nil, nil, nil, nil, nil, 45, nil, nil, 105, 104, - 106, 95, 56, 97, 96, 98, nil, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 223, nil, nil, 229, - nil, nil, 58, 59, nil, nil, 60, nil, nil, nil, - nil, nil, 44, nil, nil, nil, nil, nil, nil, nil, - nil, 228, nil, nil, nil, nil, 89, 79, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, 69, 70, 71, 62, 57, 81, - 93, 94, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 30, 31, 72, 73, nil, nil, nil, nil, - nil, 29, 28, 27, 101, 100, 102, 103, nil, nil, - 230, nil, nil, nil, nil, nil, nil, 45, nil, nil, - 105, 104, 106, 95, 56, 97, 96, 98, 284, 99, - 107, 108, nil, 91, 92, nil, 42, 43, 41, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 223, nil, - nil, 229, nil, nil, 58, 59, nil, nil, 60, nil, - 281, nil, 279, nil, 44, nil, nil, 285, nil, nil, - nil, nil, nil, 228, nil, nil, nil, nil, 89, 282, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, 69, 70, 71, 62, - 57, 81, 93, 94, 63, 64, nil, nil, nil, 67, - nil, 65, 66, 68, 30, 31, 72, 73, nil, nil, - nil, nil, nil, 29, 28, 27, 101, 100, 102, 103, - nil, nil, 230, nil, nil, nil, nil, nil, nil, 45, - nil, nil, 105, 104, 106, 95, 56, 97, 96, 98, - nil, 99, 107, 108, nil, 91, 92, nil, 42, 43, - 41, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 223, nil, nil, 229, nil, nil, 58, 59, nil, nil, - 60, nil, nil, nil, nil, nil, 44, nil, nil, nil, - nil, nil, nil, nil, nil, 228, nil, nil, nil, nil, - 89, 79, 82, 83, nil, 84, 86, 85, 87, nil, - nil, nil, nil, 80, 88, nil, nil, nil, 69, 70, - 71, 62, 57, 81, 93, 94, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 30, 31, 72, 73, - nil, nil, nil, nil, nil, 29, 28, 27, 101, 100, - 102, 103, nil, nil, 230, nil, nil, nil, nil, nil, - nil, 45, nil, nil, 105, 104, 106, 95, 56, 97, - 96, 98, nil, 99, 107, 108, nil, 91, 92, nil, - 42, 43, 41, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 223, nil, nil, 229, nil, nil, 58, 59, - nil, nil, 60, nil, 404, nil, nil, nil, 44, nil, - nil, nil, nil, nil, nil, nil, nil, 228, nil, nil, - nil, nil, 89, 79, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, nil, nil, - 69, 70, 71, 62, 57, 81, 93, 94, 63, 64, - nil, nil, nil, 67, nil, 65, 66, 68, 30, 31, - 72, 73, nil, nil, nil, nil, nil, 29, 28, 27, - 101, 100, 102, 103, nil, nil, 19, nil, nil, nil, - nil, nil, nil, 45, nil, nil, 105, 104, 106, 95, - 56, 97, 96, 98, nil, 99, 107, 108, nil, 91, - 92, nil, 42, 43, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 223, nil, nil, 229, nil, nil, - 58, 59, nil, nil, 60, nil, nil, nil, nil, nil, - 44, nil, nil, nil, nil, nil, nil, nil, nil, 20, - nil, nil, nil, nil, 89, 79, 82, 83, nil, 84, - 86, 85, 87, nil, nil, nil, nil, 80, 88, nil, - nil, nil, 69, 70, 71, 62, 57, 81, 93, 94, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 30, 31, 72, 73, nil, nil, nil, nil, nil, 29, - 28, 27, 101, 100, 102, 103, nil, nil, 19, nil, - nil, nil, nil, nil, nil, 45, nil, nil, 105, 104, - 106, 95, 56, 97, 96, 98, nil, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 223, nil, nil, 229, - nil, nil, 58, 59, nil, nil, 60, nil, nil, nil, - nil, nil, 44, nil, nil, nil, nil, nil, nil, nil, - nil, 20, nil, nil, nil, nil, 89, 79, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, 69, 70, 71, 62, 57, 81, - 93, 94, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 30, 31, 72, 73, nil, nil, nil, nil, - nil, 29, 28, 27, 101, 100, 102, 103, nil, nil, - 19, nil, nil, nil, nil, nil, nil, 45, nil, nil, - 105, 104, 106, 95, 56, 97, 96, 98, nil, 99, - 107, 108, nil, 91, 92, nil, 42, 43, 41, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 223, nil, - nil, 229, nil, nil, 58, 59, nil, nil, 60, nil, - nil, nil, nil, nil, 44, nil, nil, nil, nil, nil, - nil, nil, nil, 20, nil, nil, nil, nil, 89, 79, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, 69, 70, 71, 62, - 57, 81, 93, 94, 63, 64, nil, nil, nil, 67, - nil, 65, 66, 68, 30, 31, 72, 73, nil, nil, - nil, nil, nil, 29, 28, 27, 101, 100, 102, 103, - nil, nil, 19, nil, nil, nil, nil, nil, nil, 45, - nil, nil, 105, 104, 106, 95, 56, 97, 96, 98, - nil, 99, 107, 108, nil, 91, 92, nil, 42, 43, - 41, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 223, nil, nil, 229, nil, nil, 58, 59, nil, nil, - 60, nil, nil, nil, nil, nil, 44, nil, nil, nil, - nil, nil, nil, nil, nil, 20, nil, nil, nil, nil, - 89, 79, 82, 83, nil, 84, 86, 85, 87, nil, - nil, nil, nil, 80, 88, 218, nil, nil, 69, 70, - 71, 62, 57, 81, 93, 94, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 309, 310, 72, 73, - nil, nil, nil, nil, nil, 305, 306, 312, 101, 100, - 102, 103, nil, nil, 230, nil, nil, nil, nil, nil, - nil, 45, nil, nil, 105, 104, 106, 95, 56, 97, - 96, 98, nil, 99, 107, 108, nil, 91, 92, nil, - 42, 43, 41, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 223, nil, nil, 229, nil, nil, 58, 59, - nil, nil, 60, nil, nil, nil, nil, nil, 44, nil, - nil, nil, nil, nil, nil, nil, nil, 228, nil, nil, - nil, nil, 89, 79, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, nil, nil, - 69, 70, 71, 62, 57, 81, 93, 94, 63, 64, - nil, nil, nil, 67, nil, 65, 66, 68, 309, 310, - 72, 73, nil, nil, nil, nil, nil, 305, 306, 312, - 101, 100, 102, 103, nil, nil, 230, nil, nil, nil, - nil, nil, nil, 45, nil, nil, 105, 104, 106, 95, - 56, 97, 96, 98, nil, 99, 107, 108, nil, 91, - 92, nil, 42, 43, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 223, nil, nil, 229, nil, nil, - 58, 59, nil, nil, 60, nil, nil, nil, nil, nil, - 44, nil, nil, nil, nil, nil, nil, nil, nil, 228, - nil, nil, nil, nil, 89, 79, 82, 83, nil, 84, - 86, 85, 87, nil, nil, nil, nil, 80, 88, nil, - nil, nil, 69, 70, 71, 62, 57, 81, 93, 94, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 309, 310, 72, 73, nil, nil, nil, nil, nil, 305, - 306, 312, 101, 100, 102, 103, nil, nil, 230, nil, - nil, nil, nil, nil, nil, 45, nil, nil, 105, 104, - 106, 95, 56, 97, 96, 98, nil, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 223, nil, nil, 229, - nil, nil, 58, 59, nil, nil, 60, nil, nil, nil, - nil, nil, 44, nil, nil, nil, nil, nil, nil, nil, - nil, 228, nil, nil, nil, nil, 89, 79, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, 69, 70, 71, 62, 57, 81, - 93, 94, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 309, 310, 72, 73, nil, nil, nil, nil, - nil, 305, 306, 312, 101, 100, 102, 103, nil, nil, - 230, nil, nil, nil, nil, nil, nil, 45, nil, nil, - 105, 104, 106, 95, 56, 97, 96, 98, nil, 99, - 107, 108, nil, 91, 92, nil, 42, 43, 41, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 223, nil, - nil, 229, nil, nil, 58, 59, nil, nil, 60, nil, - nil, nil, nil, nil, 44, nil, nil, nil, nil, nil, - nil, nil, nil, 228, nil, nil, nil, nil, 89, 79, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, 69, 70, 71, 62, - 57, 81, 93, 94, 63, 64, nil, nil, nil, 67, - nil, 65, 66, 68, 309, 310, 72, 73, nil, nil, - nil, nil, nil, 305, 306, 312, 101, 100, 102, 103, - nil, nil, 230, nil, nil, nil, nil, nil, nil, 45, - nil, nil, 105, 104, 106, 95, 56, 97, 96, 98, - nil, 99, 107, 108, nil, 91, 92, nil, 42, 43, - 41, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 223, nil, nil, 229, nil, nil, 58, 59, nil, nil, - 60, nil, nil, nil, nil, nil, 44, nil, nil, nil, - nil, nil, nil, nil, nil, 228, nil, nil, nil, nil, - 89, 79, 82, 83, nil, 84, 86, 85, 87, nil, - nil, nil, nil, 80, 88, nil, nil, nil, 69, 70, - 71, 62, 57, 81, 93, 94, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 309, 310, 72, 73, - nil, nil, nil, nil, nil, 305, 306, 312, 101, 100, - 102, 103, nil, nil, 230, nil, nil, nil, nil, nil, - nil, 45, nil, nil, 105, 104, 106, 95, 56, 97, - 96, 98, nil, 99, 107, 108, nil, 91, 92, nil, - 42, 43, 41, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 223, nil, nil, 229, nil, nil, 58, 59, - nil, nil, 60, nil, nil, nil, nil, nil, 44, nil, - nil, nil, nil, nil, nil, nil, nil, 228, nil, nil, - nil, nil, 89, 79, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, nil, nil, - 69, 70, 71, 62, 57, 81, 93, 94, 63, 64, - nil, nil, nil, 67, nil, 65, 66, 68, 309, 310, - 72, 73, nil, nil, nil, nil, nil, 305, 306, 312, - 101, 100, 102, 103, nil, nil, 230, nil, nil, nil, - nil, nil, nil, 45, nil, nil, 105, 104, 106, 95, - 56, 97, 96, 98, nil, 99, 107, 108, nil, 91, - 92, nil, 42, 43, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 223, nil, nil, 229, nil, nil, - 58, 59, nil, nil, 60, nil, nil, nil, nil, nil, - 44, nil, nil, nil, nil, nil, nil, nil, nil, 228, - nil, nil, nil, nil, 89, 79, 82, 83, nil, 84, - 86, 85, 87, nil, nil, nil, nil, 80, 88, nil, - nil, nil, 69, 70, 71, 62, 57, 81, 93, 94, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 309, 310, 72, 73, nil, nil, nil, nil, nil, 305, - 306, 312, 101, 100, 102, 103, nil, nil, 230, nil, - nil, nil, nil, nil, nil, 45, nil, nil, 105, 104, - 106, 95, 56, 97, 96, 98, nil, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 223, nil, nil, 229, - nil, nil, 58, 59, nil, nil, 60, nil, nil, nil, - nil, nil, 44, nil, nil, nil, nil, nil, nil, nil, - nil, 228, nil, nil, nil, nil, 89, 79, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, 69, 70, 71, 62, 57, 81, - 93, 94, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 309, 310, 72, 73, nil, nil, nil, nil, - nil, 305, 306, 312, 101, 100, 102, 103, nil, nil, - 230, nil, nil, nil, nil, nil, nil, 45, nil, nil, - 105, 104, 106, 95, 56, 97, 96, 98, nil, 99, - 107, 108, nil, 91, 92, nil, 42, 43, 41, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 223, nil, - nil, 229, nil, nil, 58, 59, nil, nil, 60, nil, - nil, nil, nil, nil, 44, nil, nil, nil, nil, nil, - nil, nil, nil, 228, nil, nil, nil, nil, 89, 79, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, 69, 70, 71, 62, - 57, 81, 93, 94, 63, 64, nil, nil, nil, 67, - nil, 65, 66, 68, 309, 310, 72, 73, nil, nil, - nil, nil, nil, 305, 306, 312, 101, 100, 102, 103, - nil, nil, 230, nil, nil, nil, nil, nil, nil, 45, - nil, nil, 105, 104, 106, 95, 56, 97, 96, 98, - nil, 99, 107, 108, nil, 91, 92, nil, 42, 43, - 41, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 223, nil, nil, 229, nil, nil, 58, 59, nil, nil, - 60, nil, nil, nil, nil, nil, 44, nil, nil, nil, - nil, nil, nil, nil, nil, 228, nil, nil, nil, nil, - 89, 79, 82, 83, nil, 84, 86, 85, 87, nil, - nil, nil, nil, 80, 88, nil, nil, nil, 69, 70, - 71, 62, 57, 81, 93, 94, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 309, 310, 72, 73, - nil, nil, nil, nil, nil, 305, 306, 312, 101, 100, - 102, 103, nil, nil, 230, nil, nil, nil, nil, nil, - nil, 45, nil, nil, 105, 104, 106, 95, 56, 97, - 96, 98, nil, 99, 107, 108, nil, 91, 92, nil, - 42, 43, 41, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 223, nil, nil, 229, nil, nil, 58, 59, - nil, nil, 60, nil, nil, nil, nil, nil, 44, nil, - nil, nil, nil, nil, nil, nil, nil, 228, nil, nil, - nil, nil, 89, 79, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, nil, nil, - 69, 70, 71, 62, 57, 81, 93, 94, 63, 64, - nil, nil, nil, 67, nil, 65, 66, 68, 309, 310, - 72, 73, nil, nil, nil, nil, nil, 305, 306, 312, - 101, 100, 102, 103, nil, nil, 230, nil, nil, nil, - nil, nil, nil, 45, nil, nil, 105, 104, 106, 95, - 56, 97, 96, 98, nil, 99, 107, 108, nil, 91, - 92, nil, 42, 43, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 223, nil, nil, 229, nil, nil, - 58, 59, nil, nil, 60, nil, nil, nil, nil, nil, - 44, nil, nil, nil, nil, nil, nil, nil, nil, 228, - nil, nil, nil, nil, 89, 79, 82, 83, nil, 84, - 86, 85, 87, nil, nil, nil, nil, 80, 88, nil, - nil, nil, 69, 70, 71, 62, 57, 81, 93, 94, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 309, 310, 72, 73, nil, nil, nil, nil, nil, 305, - 306, 312, 101, 100, 102, 103, nil, nil, 230, nil, - nil, nil, nil, nil, nil, 45, nil, nil, 105, 104, - 106, 95, 56, 97, 96, 98, nil, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 223, nil, nil, 229, - nil, nil, 58, 59, nil, nil, 60, nil, nil, nil, - nil, nil, 44, nil, nil, nil, nil, nil, nil, nil, - nil, 228, nil, nil, nil, nil, 89, 79, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, 69, 70, 71, 62, 57, 81, - 93, 94, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 309, 310, 72, 73, nil, nil, nil, nil, - nil, 305, 306, 312, 101, 100, 102, 103, nil, nil, - 230, nil, nil, nil, nil, nil, nil, 45, nil, nil, - 105, 104, 106, 95, 56, 97, 96, 98, nil, 99, - 107, 108, nil, 91, 92, nil, 42, 43, 41, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 223, nil, - nil, 229, nil, nil, 58, 59, nil, nil, 60, nil, - nil, nil, nil, nil, 44, nil, nil, nil, nil, nil, - nil, nil, nil, 228, nil, nil, nil, nil, 89, 79, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, 69, 70, 71, 62, - 57, 81, 93, 94, 63, 64, nil, nil, nil, 67, - nil, 65, 66, 68, 309, 310, 72, 73, nil, nil, - nil, nil, nil, 305, 306, 312, 101, 100, 102, 103, - nil, nil, 230, nil, nil, nil, nil, nil, nil, 45, - nil, nil, 105, 104, 106, 95, 56, 97, 96, 98, - nil, 99, 107, 108, nil, 91, 92, nil, 42, 43, - 41, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 223, nil, nil, 229, nil, nil, 58, 59, nil, nil, - 60, nil, nil, nil, nil, nil, 44, nil, nil, nil, - nil, nil, nil, nil, nil, 228, nil, nil, nil, nil, - 89, 79, 82, 83, nil, 84, 86, 85, 87, nil, - nil, nil, nil, 80, 88, nil, nil, nil, 69, 70, - 71, 62, 57, 81, 93, 94, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 309, 310, 72, 73, - nil, nil, nil, nil, nil, 305, 306, 312, 101, 100, - 102, 103, nil, nil, 230, nil, nil, nil, nil, nil, - nil, 45, nil, nil, 105, 104, 106, 95, 56, 97, - 96, 98, nil, 99, 107, 108, nil, 91, 92, nil, - 42, 43, 41, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 223, nil, nil, 229, nil, nil, 58, 59, - nil, nil, 60, nil, nil, nil, nil, nil, 44, nil, - nil, nil, nil, nil, nil, nil, nil, 228, nil, nil, - nil, nil, 89, 79, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, nil, nil, - 69, 70, 71, 62, 57, 81, 93, 94, 63, 64, - nil, nil, nil, 67, nil, 65, 66, 68, 309, 310, - 72, 73, nil, nil, nil, nil, nil, 305, 306, 312, - 101, 100, 102, 103, nil, nil, 230, nil, nil, nil, - nil, nil, nil, 45, nil, nil, 105, 104, 106, 95, - 56, 97, 96, 98, nil, 99, 107, 108, nil, 91, - 92, nil, 42, 43, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 223, nil, nil, 229, nil, nil, - 58, 59, nil, nil, 60, nil, nil, nil, nil, nil, - 44, nil, nil, nil, nil, nil, nil, nil, nil, 228, - nil, nil, nil, nil, 89, 79, 82, 83, nil, 84, - 86, 85, 87, nil, nil, nil, nil, 80, 88, nil, - nil, nil, 69, 70, 71, 62, 57, 81, 93, 94, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 309, 310, 72, 73, nil, nil, nil, nil, nil, 305, - 306, 312, 101, 100, 102, 103, nil, nil, 230, nil, - nil, nil, nil, nil, nil, 45, nil, nil, 105, 104, - 106, 95, 56, 97, 96, 98, nil, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 223, nil, nil, 229, - nil, nil, 58, 59, nil, nil, 60, nil, nil, nil, - nil, nil, 44, nil, nil, nil, nil, nil, nil, nil, - nil, 228, nil, nil, nil, nil, 89, 79, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, 69, 70, 71, 62, 57, 81, - 93, 94, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 309, 310, 72, 73, nil, nil, nil, nil, - nil, 305, 306, 312, 101, 100, 102, 103, nil, nil, - 230, nil, nil, nil, nil, nil, nil, 45, nil, nil, - 105, 104, 106, 95, 56, 97, 96, 98, nil, 99, - 107, 108, nil, 91, 92, nil, 42, 43, 41, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 223, nil, - nil, 229, nil, nil, 58, 59, nil, nil, 60, nil, - nil, nil, nil, nil, 44, nil, nil, nil, nil, nil, - nil, nil, nil, 228, nil, nil, nil, nil, 89, 79, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, 69, 70, 71, 62, - 57, 81, 93, 94, 63, 64, nil, nil, nil, 67, - nil, 65, 66, 68, 309, 310, 72, 73, nil, nil, - nil, nil, nil, 305, 306, 312, 101, 100, 102, 103, - nil, nil, 230, nil, nil, nil, nil, nil, nil, 45, - nil, nil, 105, 104, 106, 95, 56, 97, 96, 98, - nil, 99, 107, 108, nil, 91, 92, nil, 42, 43, - 41, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 223, nil, nil, 229, nil, nil, 58, 59, nil, nil, - 60, nil, nil, nil, nil, nil, 44, nil, nil, nil, - nil, nil, nil, nil, nil, 228, nil, nil, nil, nil, - 89, 79, 82, 83, nil, 84, 86, 85, 87, nil, - nil, nil, nil, 80, 88, nil, nil, nil, 69, 70, - 71, 62, 57, 81, 93, 94, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 309, 310, 72, 73, - nil, nil, nil, nil, nil, 305, 306, 312, 101, 100, - 102, 103, nil, nil, 230, nil, nil, nil, nil, nil, - nil, 45, nil, nil, 105, 104, 106, 95, 56, 97, - 96, 98, nil, 99, 107, 108, nil, 91, 92, nil, - 42, 43, 41, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 223, nil, nil, 229, nil, nil, 58, 59, - nil, nil, 60, nil, nil, nil, nil, nil, 44, nil, - nil, nil, nil, nil, nil, nil, nil, 228, nil, nil, - nil, nil, 89, 79, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, nil, nil, - 69, 70, 71, 62, 57, 81, 93, 94, 63, 64, - nil, nil, nil, 67, nil, 65, 66, 68, 309, 310, - 72, 73, nil, nil, nil, nil, nil, 305, 306, 312, - 101, 100, 102, 103, nil, nil, 230, nil, nil, nil, - nil, nil, nil, 45, nil, nil, 105, 104, 106, 95, - 56, 97, 96, 98, nil, 99, 107, 108, nil, 91, - 92, nil, 42, 43, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 223, nil, nil, 229, nil, nil, - 58, 59, nil, nil, 60, nil, nil, nil, nil, nil, - 44, nil, nil, nil, nil, nil, nil, nil, nil, 228, - nil, nil, nil, nil, 89, 79, 82, 83, nil, 84, - 86, 85, 87, nil, nil, nil, nil, 80, 88, nil, - nil, nil, 69, 70, 71, 62, 57, 81, 93, 94, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 309, 310, 72, 73, nil, nil, nil, nil, nil, 305, - 306, 312, 101, 100, 102, 103, nil, nil, 230, nil, - nil, nil, nil, nil, nil, 45, nil, nil, 105, 104, - 106, 95, 56, 97, 96, 98, nil, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 223, nil, nil, 229, - nil, nil, 58, 59, nil, nil, 60, nil, nil, nil, - nil, nil, 44, nil, nil, nil, nil, nil, nil, nil, - nil, 228, nil, nil, nil, nil, 89, 79, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, 69, 70, 71, 62, 57, 81, - 93, 94, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 309, 310, 72, 73, nil, nil, nil, nil, - nil, 305, 306, 312, 101, 100, 102, 103, nil, nil, - 230, nil, nil, nil, nil, nil, nil, 45, nil, nil, - 105, 104, 106, 95, 56, 97, 96, 98, nil, 99, - 107, 108, nil, 91, 92, nil, 42, 43, 41, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 223, nil, - nil, 229, nil, nil, 58, 59, nil, nil, 60, nil, - nil, nil, nil, nil, 44, nil, nil, nil, nil, nil, - nil, nil, nil, 228, nil, nil, nil, nil, 89, 79, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, 69, 70, 71, 62, - 57, 81, 93, 94, 63, 64, nil, nil, nil, 67, - nil, 65, 66, 68, 309, 310, 72, 73, nil, nil, - nil, nil, nil, 305, 306, 312, 101, 100, 102, 103, - nil, nil, 230, nil, nil, nil, nil, nil, nil, 45, - nil, nil, 105, 104, 106, 95, 56, 97, 96, 98, - nil, 99, 107, 108, nil, 91, 92, nil, 42, 43, - 41, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 223, nil, nil, 229, nil, nil, 58, 59, nil, nil, - 60, nil, nil, nil, nil, nil, 44, nil, nil, nil, - nil, nil, nil, nil, nil, 228, nil, nil, nil, nil, - 89, 79, 82, 83, nil, 84, 86, 85, 87, nil, - nil, nil, nil, 80, 88, nil, nil, nil, 69, 70, - 71, 62, 57, 81, 93, 94, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 309, 310, 72, 73, - nil, nil, nil, nil, nil, 305, 306, 312, 101, 100, - 102, 103, nil, nil, 230, nil, nil, nil, nil, nil, - nil, 45, nil, nil, 105, 104, 106, 95, 56, 97, - 96, 98, nil, 99, 107, 108, nil, 91, 92, nil, - 42, 43, 41, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 223, nil, nil, 229, nil, nil, 58, 59, - nil, nil, 60, nil, nil, nil, nil, nil, 44, nil, - nil, nil, nil, nil, nil, nil, nil, 228, nil, nil, - nil, nil, 89, 79, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, nil, nil, - 69, 70, 71, 62, 57, 81, 93, 94, 63, 64, - nil, nil, nil, 67, nil, 65, 66, 68, 30, 31, - 72, 73, nil, nil, nil, nil, nil, 29, 28, 27, - 101, 100, 102, 103, nil, nil, 230, nil, nil, nil, - nil, nil, nil, 45, nil, nil, 105, 104, 106, 95, - 56, 97, 96, 98, 284, 99, 107, 108, nil, 91, - 92, nil, 42, 43, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 223, nil, nil, 229, nil, nil, - 58, 59, nil, nil, 60, nil, 281, nil, 279, nil, - 44, nil, nil, 285, nil, nil, nil, nil, nil, 228, - nil, nil, nil, nil, 89, 282, 82, 83, nil, 84, - 86, 85, 87, nil, nil, nil, nil, 80, 88, nil, - nil, nil, 69, 70, 71, 62, 57, 81, 93, 94, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 30, 31, 72, 73, nil, nil, nil, nil, nil, 29, - 28, 27, 101, 100, 102, 103, nil, nil, 230, nil, - nil, nil, nil, nil, nil, 45, nil, nil, 105, 104, - 106, 95, 56, 97, 96, 98, 284, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 223, nil, nil, 229, - nil, nil, 58, 59, nil, nil, 60, nil, 281, nil, - 279, nil, 44, nil, nil, 285, nil, nil, nil, nil, - nil, 228, nil, nil, nil, nil, 89, 282, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, 69, 70, 71, 62, 57, 81, - 93, 94, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 30, 31, 72, 73, nil, nil, nil, nil, - nil, 29, 28, 27, 101, 100, 102, 103, nil, nil, - 230, nil, nil, nil, nil, nil, nil, 45, nil, nil, - 105, 104, 106, 95, 56, 97, 96, 98, 284, 99, - 107, 108, nil, 91, 92, nil, 42, 43, 41, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 223, nil, - nil, 229, nil, nil, 58, 59, nil, nil, 60, nil, - 281, nil, 279, nil, 44, nil, nil, 285, nil, nil, - nil, nil, nil, 228, nil, nil, nil, nil, 89, 282, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, 218, nil, nil, 69, 70, 71, 62, - 57, 81, 93, 94, 63, 64, nil, nil, nil, 67, - nil, 65, 66, 68, 309, 310, 72, 73, nil, nil, - nil, nil, nil, 305, 306, 312, 101, 100, 102, 103, - nil, nil, 230, nil, nil, nil, nil, nil, nil, 45, - nil, nil, 105, 104, 106, 95, 56, 97, 96, 98, - nil, 99, 107, 108, nil, 91, 92, nil, 42, 43, - 41, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 223, nil, nil, 229, nil, nil, 58, 59, nil, nil, - 60, nil, nil, nil, nil, nil, 44, nil, nil, nil, - nil, nil, nil, nil, nil, 228, nil, nil, nil, nil, - 89, 79, 82, 83, nil, 84, 86, 85, 87, nil, - nil, nil, nil, 80, 88, nil, nil, nil, 69, 70, - 71, 62, 57, 81, 93, 94, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 309, 310, 72, 73, - nil, nil, nil, nil, nil, 305, 306, 312, 101, 100, - 102, 103, nil, nil, 230, nil, nil, nil, nil, nil, - nil, 45, nil, nil, 105, 104, 106, 95, 56, 97, - 96, 98, nil, 99, 107, 108, nil, 91, 92, nil, - 42, 43, 41, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 223, nil, nil, 229, nil, nil, 58, 59, - nil, nil, 60, nil, nil, nil, nil, nil, 44, nil, - nil, nil, nil, nil, nil, nil, nil, 228, nil, nil, - nil, nil, 89, 79, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, nil, nil, - 69, 70, 71, 62, 57, 81, 93, 94, 63, 64, - nil, nil, nil, 67, nil, 65, 66, 68, 309, 310, - 72, 73, nil, nil, nil, nil, nil, 305, 306, 312, - 101, 100, 102, 103, nil, nil, 230, nil, nil, nil, - nil, nil, nil, 45, nil, nil, 105, 104, 106, 95, - 56, 97, 96, 98, nil, 99, 107, 108, nil, 91, - 92, nil, 42, 43, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 223, nil, nil, 229, nil, nil, - 58, 59, nil, nil, 60, nil, nil, nil, nil, nil, - 44, nil, nil, nil, nil, nil, nil, nil, nil, 228, - nil, nil, nil, nil, 89, 79, 82, 83, nil, 84, - 86, 85, 87, nil, nil, nil, nil, 80, 88, nil, - nil, nil, 69, 70, 71, 62, 57, 81, 93, 94, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 309, 310, 72, 73, nil, nil, nil, nil, nil, 305, - 306, 312, 101, 100, 102, 103, nil, nil, 230, nil, - nil, nil, nil, nil, nil, 45, nil, nil, 105, 104, - 106, 95, 56, 97, 96, 98, nil, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 223, nil, nil, 229, - nil, nil, 58, 59, nil, nil, 60, nil, nil, nil, - nil, nil, 44, nil, nil, nil, nil, nil, nil, nil, - nil, 228, nil, nil, nil, nil, 89, 79, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, nil, nil, nil, 62, nil, 81, - 93, 94, 69, 70, 71, 9, 57, nil, nil, nil, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 30, 31, 72, 73, nil, nil, nil, nil, nil, 29, - 28, 27, 101, 100, 102, 103, nil, nil, 19, nil, - nil, nil, nil, nil, 8, 45, nil, 10, 105, 104, - 106, 95, 56, 97, 96, 98, nil, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 40, nil, nil, 33, - nil, nil, 58, 59, nil, nil, 60, nil, 35, nil, - nil, nil, 44, nil, nil, nil, nil, nil, nil, nil, - nil, 20, nil, nil, nil, nil, 89, 79, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, 69, 70, 71, 62, 57, 81, - 93, 94, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 309, 310, 72, 73, nil, nil, nil, nil, - nil, 305, 306, 312, 101, 100, 102, 103, nil, nil, - 230, nil, nil, nil, nil, nil, nil, 307, nil, nil, - 105, 104, 106, 95, 56, 97, 96, 98, nil, 99, - 107, 108, nil, 91, 92, nil, nil, nil, 313, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 303, nil, - nil, 229, nil, nil, 58, 59, nil, nil, 60, nil, - 548, nil, 545, 544, 543, 553, 546, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 556, nil, 89, 79, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, 504, nil, 551, 62, - nil, 81, 93, 94, 69, 70, 71, nil, 57, 564, - 563, nil, 63, 64, 557, nil, nil, 67, nil, 65, - 66, 68, 309, 310, 72, 73, nil, nil, nil, nil, - nil, 305, 306, 312, 101, 100, 102, 103, nil, nil, - 230, nil, nil, nil, nil, nil, nil, 307, nil, nil, - 105, 104, 106, 95, 56, 97, 96, 98, nil, 99, - 107, 108, nil, 91, 92, nil, nil, nil, 313, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 303, nil, - nil, 299, nil, nil, 58, 59, nil, nil, 60, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 89, 79, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, 69, 70, 71, 62, - 57, 81, 93, 94, 63, 64, nil, nil, nil, 67, - nil, 65, 66, 68, 309, 310, 72, 73, nil, nil, - nil, nil, nil, 305, 306, 312, 101, 100, 102, 103, - nil, nil, 230, nil, nil, nil, nil, nil, nil, 45, - nil, nil, 105, 104, 106, 95, 56, 97, 96, 98, - nil, 99, 107, 108, nil, 91, 92, nil, 42, 43, - 41, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 223, nil, nil, 229, 520, nil, 58, 59, nil, nil, - 60, nil, nil, nil, nil, nil, 44, nil, nil, nil, - nil, nil, nil, nil, nil, 228, nil, nil, nil, nil, - 89, 79, 82, 83, nil, 84, 86, 85, 87, nil, - nil, nil, nil, 80, 88, nil, nil, nil, 69, 70, - 71, 62, 57, 81, 93, 94, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 30, 31, 72, 73, - nil, nil, nil, nil, nil, 29, 28, 27, 101, 100, - 102, 103, nil, nil, 19, nil, nil, nil, nil, nil, - nil, 45, nil, nil, 105, 104, 106, 95, 56, 97, - 96, 98, nil, 99, 107, 108, nil, 91, 92, nil, - 42, 43, 41, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 223, nil, nil, 229, nil, nil, 58, 59, - nil, nil, 60, nil, nil, nil, nil, nil, 44, nil, - nil, nil, nil, nil, nil, nil, nil, 20, nil, nil, - nil, nil, 89, 79, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, nil, nil, - 69, 70, 71, 62, 57, 81, 93, 94, 63, 64, - nil, nil, nil, 67, nil, 65, 66, 68, 30, 31, - 72, 73, nil, nil, nil, nil, nil, 29, 28, 27, - 101, 100, 102, 103, nil, nil, 19, nil, nil, nil, - nil, nil, nil, 45, nil, nil, 105, 104, 106, 95, - 56, 97, 96, 98, nil, 99, 107, 108, nil, 91, - 92, nil, 42, 43, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 223, nil, nil, 229, nil, nil, - 58, 59, nil, nil, 60, nil, nil, nil, nil, nil, - 44, nil, nil, nil, nil, nil, nil, nil, nil, 20, - nil, nil, nil, nil, 89, 79, 82, 83, nil, 84, - 86, 85, 87, nil, nil, nil, nil, 80, 88, nil, - nil, nil, 69, 70, 71, 62, 57, 81, 93, 94, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 30, 31, 72, 73, nil, nil, nil, nil, nil, 29, - 28, 27, 101, 100, 102, 103, nil, nil, 19, nil, - nil, nil, nil, nil, nil, 45, nil, nil, 105, 104, - 106, 95, 56, 97, 96, 98, nil, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 223, nil, nil, 229, - nil, nil, 58, 59, nil, nil, 60, nil, nil, nil, - nil, nil, 44, nil, nil, nil, nil, nil, nil, nil, - nil, 20, nil, nil, nil, nil, 89, 79, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, 69, 70, 71, 62, 57, 81, - 93, 94, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 30, 31, 72, 73, nil, nil, nil, nil, - nil, 29, 28, 27, 101, 100, 102, 103, nil, nil, - 19, nil, nil, nil, nil, nil, nil, 45, nil, nil, - 105, 104, 106, 95, 56, 97, 96, 98, nil, 99, - 107, 108, nil, 91, 92, nil, 42, 43, 41, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 223, nil, - nil, 229, nil, nil, 58, 59, nil, nil, 60, nil, - nil, nil, nil, nil, 44, nil, nil, nil, nil, nil, - nil, nil, nil, 20, nil, nil, nil, nil, 89, 79, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, 69, 70, 71, 62, - 57, 81, 93, 94, 63, 64, nil, nil, nil, 67, - nil, 65, 66, 68, 30, 31, 72, 73, nil, nil, - nil, nil, nil, 29, 28, 27, 101, 100, 102, 103, - nil, nil, 19, nil, nil, nil, nil, nil, nil, 45, - nil, nil, 105, 104, 106, 95, 56, 97, 96, 98, - nil, 99, 107, 108, nil, 91, 92, nil, 42, 43, - 41, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 223, nil, nil, 229, nil, nil, 58, 59, nil, nil, - 60, nil, nil, nil, nil, nil, 44, nil, nil, nil, - nil, nil, nil, nil, nil, 20, nil, nil, nil, nil, - 89, 79, 82, 83, nil, 84, 86, 85, 87, nil, - nil, nil, nil, 80, 88, nil, nil, nil, 69, 70, - 71, 62, 57, 81, 93, 94, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 309, 310, 72, 73, - nil, nil, nil, nil, nil, 305, 306, 312, 101, 100, - 102, 103, nil, nil, 230, nil, nil, nil, nil, nil, - nil, 45, nil, nil, 105, 104, 106, 95, 56, 97, - 96, 98, nil, 99, 107, 108, nil, 91, 92, nil, - 42, 43, 41, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 223, nil, nil, 229, nil, nil, 58, 59, - nil, nil, 60, nil, nil, nil, nil, nil, 44, nil, - nil, nil, nil, nil, nil, nil, nil, 228, nil, nil, - nil, nil, 89, 79, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, nil, nil, - 69, 70, 71, 62, 57, 81, 93, 94, 63, 64, - nil, nil, nil, 67, nil, 65, 66, 68, 30, 31, - 72, 73, nil, nil, nil, nil, nil, 29, 28, 27, - 101, 100, 102, 103, nil, nil, 230, nil, nil, nil, - nil, nil, nil, 45, nil, nil, 105, 104, 106, 95, - 56, 97, 96, 98, 284, 99, 107, 108, nil, 91, - 92, nil, 42, 43, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 223, nil, nil, 229, nil, nil, - 58, 59, nil, nil, 60, nil, 281, nil, 279, nil, - 44, nil, nil, 285, nil, nil, nil, nil, nil, 228, - nil, nil, nil, nil, 89, 282, 82, 83, nil, 84, - 86, 85, 87, nil, nil, nil, nil, 80, 88, nil, - nil, nil, 69, 70, 71, 62, 57, 81, 93, 94, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 309, 310, 72, 73, nil, nil, nil, nil, nil, 305, - 306, 312, 101, 100, 102, 103, nil, nil, 230, nil, - nil, nil, nil, nil, nil, 45, nil, nil, 105, 104, - 106, 95, 56, 97, 96, 98, nil, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 223, nil, nil, 229, - nil, nil, 58, 59, nil, nil, 60, nil, nil, nil, - nil, nil, 44, nil, nil, nil, nil, nil, nil, nil, - nil, 228, nil, nil, nil, nil, 89, 79, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, 69, 70, 71, 62, 57, 81, - 93, 94, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 309, 310, 72, 73, nil, nil, nil, nil, - nil, 305, 306, 312, 101, 100, 102, 103, nil, nil, - 230, nil, nil, nil, nil, nil, nil, 45, nil, nil, - 105, 104, 106, 95, 56, 97, 96, 98, nil, 99, - 107, 108, nil, 91, 92, nil, 42, 43, 41, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 223, nil, - nil, 229, nil, nil, 58, 59, nil, nil, 60, nil, - nil, nil, nil, nil, 44, nil, nil, nil, nil, nil, - nil, nil, nil, 228, nil, nil, nil, nil, 89, 79, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, 69, 70, 71, 62, - 57, 81, 93, 94, 63, 64, nil, nil, nil, 67, - nil, 65, 66, 68, 309, 310, 72, 73, nil, nil, - nil, nil, nil, 305, 306, 312, 101, 100, 102, 103, - nil, nil, 230, nil, nil, nil, nil, nil, nil, 45, - nil, nil, 105, 104, 106, 95, 56, 97, 96, 98, - nil, 99, 107, 108, nil, 91, 92, nil, 42, 43, - 41, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 223, nil, nil, 229, nil, nil, 58, 59, nil, nil, - 60, nil, nil, nil, nil, nil, 44, nil, nil, nil, - nil, nil, nil, nil, nil, 228, nil, nil, nil, nil, - 89, 79, 82, 83, nil, 84, 86, 85, 87, nil, - nil, nil, nil, 80, 88, nil, nil, nil, 69, 70, - 71, 62, 57, 81, 93, 94, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 309, 310, 72, 73, - nil, nil, nil, nil, nil, 305, 306, 312, 101, 100, - 102, 103, nil, nil, 230, nil, nil, nil, nil, nil, - nil, 45, nil, nil, 105, 104, 106, 95, 56, 97, - 96, 98, nil, 99, 107, 108, nil, 91, 92, nil, - 42, 43, 41, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 223, nil, nil, 229, nil, nil, 58, 59, - nil, nil, 60, nil, nil, nil, nil, nil, 44, nil, - nil, nil, nil, nil, nil, nil, nil, 228, nil, nil, - nil, nil, 89, 79, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, nil, nil, - 69, 70, 71, 62, 57, 81, 93, 94, 63, 64, - nil, nil, nil, 67, nil, 65, 66, 68, 309, 310, - 72, 73, nil, nil, nil, nil, nil, 305, 306, 312, - 101, 100, 102, 103, nil, nil, 230, nil, nil, nil, - nil, nil, nil, 45, nil, nil, 105, 104, 106, 95, - 56, 97, 96, 98, 284, 99, 107, 108, nil, 91, - 92, nil, 42, 43, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 223, nil, nil, 229, nil, nil, - 58, 59, nil, nil, 60, nil, 659, nil, 279, nil, - 44, nil, nil, 285, nil, nil, nil, nil, nil, 228, - nil, nil, nil, nil, 89, 282, 82, 83, nil, 84, - 86, 85, 87, nil, nil, nil, nil, 80, 88, nil, - nil, nil, 69, 70, 71, 62, 57, 81, 93, 94, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 309, 310, 72, 73, nil, nil, nil, nil, nil, 305, - 306, 312, 101, 100, 102, 103, nil, nil, 230, nil, - nil, nil, nil, nil, nil, 45, nil, nil, 105, 104, - 106, 95, 56, 97, 96, 98, 284, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 223, nil, nil, 229, - nil, nil, 58, 59, nil, nil, 60, nil, nil, nil, - 279, nil, 44, nil, nil, 285, nil, nil, nil, nil, - nil, 228, nil, nil, nil, nil, 89, 282, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, 69, 70, 71, 62, 57, 81, - 93, 94, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 309, 310, 72, 73, nil, nil, nil, nil, - nil, 305, 306, 312, 101, 100, 102, 103, nil, nil, - 230, nil, nil, nil, nil, nil, nil, 45, nil, nil, - 105, 104, 106, 95, 56, 97, 96, 98, nil, 99, - 107, 108, nil, 91, 92, nil, 42, 43, 41, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 223, nil, - nil, 229, nil, nil, 58, 59, nil, nil, 60, nil, - nil, nil, nil, nil, 44, nil, nil, nil, nil, nil, - nil, nil, nil, 228, nil, nil, nil, nil, 89, 79, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, nil, nil, nil, 62, - nil, 81, 93, 94, 69, 70, 71, 9, 57, nil, - nil, nil, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 30, 31, 72, 73, nil, nil, nil, nil, - nil, 29, 28, 27, 101, 100, 102, 103, nil, nil, - 19, nil, nil, nil, nil, nil, 8, 45, 292, 10, - 105, 104, 106, 95, 56, 97, 96, 98, nil, 99, - 107, 108, nil, 91, 92, nil, 42, 43, 41, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 40, nil, - nil, 33, nil, nil, 58, 59, nil, nil, 60, nil, - 35, nil, nil, nil, 44, nil, nil, nil, nil, nil, - nil, nil, nil, 20, nil, nil, nil, nil, 89, 79, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, nil, nil, 388, 62, - nil, 81, 93, 94, 69, 70, 71, nil, 57, nil, - nil, nil, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 309, 310, 72, 73, nil, nil, nil, nil, - nil, 305, 306, 312, 101, 100, 102, 103, nil, nil, - 230, nil, nil, nil, nil, nil, nil, 307, nil, nil, - 105, 104, 106, 95, 56, 97, 96, 98, nil, 99, - 107, 108, nil, 91, 92, nil, nil, nil, 313, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 303, nil, - nil, 299, nil, nil, 58, 59, nil, nil, 60, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 89, 79, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, 69, 70, 71, 62, - 57, 81, 93, 94, 63, 64, nil, nil, nil, 67, - nil, 65, 66, 68, 30, 31, 72, 73, nil, nil, - nil, nil, nil, 29, 28, 27, 101, 100, 102, 103, - nil, nil, 230, nil, nil, nil, nil, nil, nil, 45, - nil, nil, 105, 104, 106, 95, 56, 97, 96, 98, - 284, 99, 107, 108, nil, 91, 92, nil, 42, 43, - 41, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 223, nil, nil, 229, nil, nil, 58, 59, nil, nil, - 60, nil, 281, nil, 279, nil, 44, nil, nil, 285, - nil, nil, nil, nil, nil, 228, nil, nil, nil, nil, - 89, 282, 82, 83, nil, 84, 86, 85, 87, nil, - nil, nil, nil, 80, 88, nil, nil, nil, 69, 70, - 71, 62, 57, 81, 93, 94, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 309, 310, 72, 73, - nil, nil, nil, nil, nil, 305, 306, 312, 101, 100, - 102, 103, nil, nil, 230, nil, nil, nil, nil, nil, - nil, 307, nil, nil, 105, 104, 106, 95, 56, 97, - 96, 98, nil, 99, 107, 108, nil, 91, 92, nil, - nil, nil, 313, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 303, nil, nil, 299, nil, nil, 58, 59, - nil, nil, 60, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 89, 79, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, nil, nil, - 69, 70, 71, 62, 57, 81, 93, 94, 63, 64, - nil, nil, nil, 67, nil, 65, 66, 68, 309, 310, - 72, 73, nil, nil, nil, nil, nil, 305, 306, 312, - 101, 100, 102, 103, nil, nil, 230, nil, nil, nil, - nil, nil, nil, 45, nil, nil, 105, 104, 106, 95, - 56, 97, 96, 98, nil, 99, 107, 108, nil, 91, - 92, nil, 42, 43, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 223, nil, nil, 229, nil, nil, - 58, 59, nil, nil, 60, nil, nil, nil, nil, nil, - 44, nil, nil, nil, nil, nil, nil, nil, nil, 228, - nil, nil, nil, nil, 89, 79, 82, 83, nil, 84, - 86, 85, 87, nil, nil, nil, nil, 80, 88, nil, - nil, nil, 69, 70, 71, 62, 57, 81, 93, 94, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 309, 310, 72, 73, nil, nil, nil, nil, nil, 305, - 306, 312, 101, 100, 102, 103, nil, nil, 230, nil, - nil, nil, nil, nil, nil, 45, nil, nil, 105, 104, - 106, 95, 56, 97, 96, 98, nil, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 223, nil, nil, 229, - nil, nil, 58, 59, nil, nil, 60, nil, nil, nil, - nil, nil, 44, nil, nil, nil, nil, nil, nil, nil, - nil, 228, nil, nil, nil, nil, 89, 79, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, 69, 70, 71, 62, 57, 81, - 93, 94, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 30, 31, 72, 73, nil, nil, nil, nil, - nil, 29, 28, 27, 101, 100, 102, 103, nil, nil, - 19, nil, nil, nil, nil, nil, nil, 45, nil, nil, - 105, 104, 106, 95, 56, 97, 96, 98, nil, 99, - 107, 108, nil, 91, 92, nil, 42, 43, 41, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 223, nil, - nil, 229, nil, nil, 58, 59, nil, nil, 60, nil, - nil, nil, nil, nil, 44, nil, nil, nil, nil, nil, - nil, nil, nil, 20, nil, nil, nil, nil, 89, 79, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, 69, 70, 71, 62, - 57, 81, 93, 94, 63, 64, nil, nil, nil, 67, - nil, 65, 66, 68, 309, 310, 72, 73, nil, nil, - nil, nil, nil, 305, 306, 312, 101, 100, 102, 103, - nil, nil, 230, nil, nil, nil, nil, nil, nil, 45, - nil, nil, 105, 104, 106, 95, 56, 97, 96, 98, - 284, 99, 107, 108, nil, 91, 92, nil, 42, 43, - 41, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 223, nil, nil, 229, nil, nil, 58, 59, nil, nil, - 60, nil, 659, nil, nil, nil, 44, nil, nil, 285, - nil, nil, nil, nil, nil, 228, nil, nil, nil, nil, - 89, 282, 82, 83, nil, 84, 86, 85, 87, nil, - nil, nil, nil, 80, 88, nil, nil, nil, 69, 70, - 71, 62, 57, 81, 93, 94, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 309, 310, 72, 73, - nil, nil, nil, nil, nil, 305, 306, 312, 101, 100, - 102, 103, nil, nil, 230, nil, nil, nil, nil, nil, - nil, 45, nil, nil, 105, 104, 106, 95, 56, 97, - 96, 98, 284, 99, 107, 108, nil, 91, 92, nil, - 42, 43, 41, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 223, nil, nil, 229, nil, nil, 58, 59, - nil, nil, 60, nil, nil, nil, nil, nil, 44, nil, - nil, 285, nil, nil, nil, nil, nil, 228, nil, nil, - nil, nil, 89, 282, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, nil, nil, - 69, 70, 71, 62, 57, 81, 93, 94, 63, 64, - nil, nil, nil, 67, nil, 65, 66, 68, 309, 310, - 72, 73, nil, nil, nil, nil, nil, 305, 306, 312, - 101, 100, 102, 103, nil, nil, 230, nil, nil, nil, - nil, nil, nil, 45, nil, nil, 105, 104, 106, 95, - 56, 97, 96, 98, nil, 99, 107, 108, nil, 91, - 92, nil, 42, 43, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 223, nil, nil, 229, nil, nil, - 58, 59, nil, nil, 60, nil, nil, nil, nil, nil, - 44, nil, nil, nil, nil, nil, nil, nil, nil, 228, - nil, nil, nil, nil, 89, 79, 82, 83, nil, 84, - 86, 85, 87, nil, nil, nil, nil, 80, 88, nil, - nil, nil, 69, 70, 71, 62, 57, 81, 93, 94, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 309, 310, 72, 73, nil, nil, nil, nil, nil, 305, - 306, 312, 101, 100, 102, 103, nil, nil, 230, nil, - nil, nil, nil, nil, nil, 45, nil, nil, 105, 104, - 106, 95, 56, 97, 96, 98, nil, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 223, nil, nil, 229, - nil, nil, 58, 59, nil, nil, 60, nil, 281, nil, - nil, nil, 44, nil, nil, nil, nil, nil, nil, nil, - nil, 228, nil, nil, nil, nil, 89, 79, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, 69, 70, 71, 62, 57, 81, - 93, 94, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 30, 31, 72, 73, nil, nil, nil, nil, - nil, 29, 28, 27, 101, 100, 102, 103, nil, nil, - 230, nil, nil, nil, nil, nil, nil, 45, nil, nil, - 105, 104, 106, 95, 56, 97, 96, 98, 284, 99, - 107, 108, nil, 91, 92, nil, 42, 43, 41, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 223, nil, - nil, 229, nil, nil, 58, 59, nil, nil, 60, nil, - 281, nil, 279, nil, 44, nil, nil, 285, nil, nil, - nil, nil, nil, 228, nil, nil, nil, nil, 89, 282, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, 69, 70, 71, 62, - 57, 81, 93, 94, 63, 64, nil, nil, nil, 67, - nil, 65, 66, 68, 30, 31, 72, 73, nil, nil, - nil, nil, nil, 29, 28, 27, 101, 100, 102, 103, - nil, nil, 230, nil, nil, nil, nil, nil, nil, 45, - nil, nil, 105, 104, 106, 95, 56, 97, 96, 98, - 284, 99, 107, 108, nil, 91, 92, nil, 42, 43, - 41, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 223, nil, nil, 229, nil, nil, 58, 59, nil, nil, - 60, nil, 281, nil, 279, nil, 44, nil, nil, 285, - nil, nil, nil, nil, nil, 228, nil, nil, nil, nil, - 89, 282, 82, 83, nil, 84, 86, 85, 87, nil, - nil, nil, nil, 80, 88, nil, nil, nil, 69, 70, - 71, 62, 57, 81, 93, 94, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 309, 310, 72, 73, - nil, nil, nil, nil, nil, 305, 306, 312, 101, 100, - 102, 103, nil, nil, 230, nil, nil, nil, nil, nil, - nil, 45, nil, nil, 105, 104, 106, 95, 56, 97, - 96, 98, nil, 99, 107, 108, nil, 91, 92, nil, - 42, 43, 41, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 223, nil, nil, 229, nil, nil, 58, 59, - nil, nil, 60, nil, 754, nil, nil, nil, 44, nil, - nil, nil, nil, nil, nil, nil, nil, 228, nil, nil, - nil, nil, 89, 79, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, nil, nil, - 69, 70, 71, 62, 57, 81, 93, 94, 63, 64, - nil, nil, nil, 67, nil, 65, 66, 68, 309, 310, - 72, 73, nil, nil, nil, nil, nil, 305, 306, 312, - 101, 100, 102, 103, nil, nil, 230, nil, nil, nil, - nil, nil, nil, 45, nil, nil, 105, 104, 106, 95, - 56, 97, 96, 98, nil, 99, 107, 108, nil, 91, - 92, nil, 42, 43, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 223, nil, nil, 229, nil, nil, - 58, 59, nil, nil, 60, nil, nil, nil, nil, nil, - 44, nil, nil, nil, nil, nil, nil, nil, nil, 228, - nil, nil, nil, nil, 89, 79, 82, 83, nil, 84, - 86, 85, 87, nil, nil, nil, nil, 80, 88, nil, - nil, nil, 69, 70, 71, 62, 57, 81, 93, 94, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 309, 310, 72, 73, nil, nil, nil, nil, nil, 305, - 306, 312, 101, 100, 102, 103, nil, nil, 230, nil, - nil, nil, nil, nil, nil, 45, nil, nil, 105, 104, - 106, 95, 56, 97, 96, 98, 284, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 223, nil, nil, 229, - nil, nil, 58, 59, nil, nil, 60, nil, 659, nil, - 279, nil, 44, nil, nil, 285, nil, nil, nil, nil, - nil, 228, nil, nil, nil, nil, 89, 282, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, 69, 70, 71, 62, 57, 81, - 93, 94, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 309, 310, 72, 73, nil, nil, nil, nil, - nil, 305, 306, 312, 101, 100, 102, 103, nil, nil, - 230, nil, nil, nil, nil, nil, nil, 45, nil, nil, - 105, 104, 106, 95, 56, 97, 96, 98, 284, 99, - 107, 108, nil, 91, 92, nil, 42, 43, 41, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 223, nil, - nil, 229, nil, nil, 58, 59, nil, nil, 60, nil, - nil, nil, 279, nil, 44, nil, nil, 285, nil, nil, - nil, nil, nil, 228, nil, nil, nil, nil, 89, 282, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, 69, 70, 71, 62, - 57, 81, 93, 94, 63, 64, nil, nil, nil, 67, - nil, 65, 66, 68, 30, 31, 72, 73, nil, nil, - nil, nil, nil, 29, 28, 27, 101, 100, 102, 103, - nil, nil, 230, nil, nil, nil, nil, nil, nil, 45, - nil, nil, 105, 104, 106, 95, 56, 97, 96, 98, - nil, 99, 107, 108, nil, 91, 92, nil, 42, 43, - 41, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 223, nil, nil, 229, nil, nil, 58, 59, nil, nil, - 60, nil, nil, nil, nil, nil, 44, nil, nil, nil, - nil, nil, nil, nil, nil, 228, nil, nil, nil, nil, - 89, 79, 82, 83, nil, 84, 86, 85, 87, nil, - nil, nil, nil, 80, 88, nil, nil, nil, 69, 70, - 71, 62, 57, 81, 93, 94, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 30, 31, 72, 73, - nil, nil, nil, nil, nil, 29, 28, 27, 101, 100, - 102, 103, nil, nil, 230, nil, nil, nil, nil, nil, - nil, 45, nil, nil, 105, 104, 106, 95, 56, 97, - 96, 98, nil, 99, 107, 108, nil, 91, 92, nil, - 42, 43, 41, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 223, nil, nil, 229, nil, nil, 58, 59, - nil, nil, 60, nil, nil, nil, nil, nil, 44, nil, - nil, nil, nil, nil, nil, nil, nil, 228, nil, nil, - nil, nil, 89, 79, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, nil, nil, - 69, 70, 71, 62, 57, 81, 93, 94, 63, 64, - nil, nil, nil, 67, nil, 65, 66, 68, 30, 31, - 72, 73, nil, nil, nil, nil, nil, 29, 28, 27, - 101, 100, 102, 103, nil, nil, 230, nil, nil, nil, - nil, nil, nil, 45, nil, nil, 105, 104, 106, 95, - 56, 97, 96, 98, nil, 99, 107, 108, nil, 91, - 92, nil, 42, 43, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 223, nil, nil, 229, nil, nil, - 58, 59, nil, nil, 60, nil, nil, nil, nil, nil, - 44, nil, nil, nil, nil, nil, nil, nil, nil, 228, - nil, nil, nil, nil, 89, 79, 82, 83, nil, 84, - 86, 85, 87, nil, nil, nil, nil, 80, 88, nil, - nil, nil, 69, 70, 71, 62, 57, 81, 93, 94, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 30, 31, 72, 73, nil, nil, nil, nil, nil, 29, - 28, 27, 101, 100, 102, 103, nil, nil, 230, nil, - nil, nil, nil, nil, nil, 45, nil, nil, 105, 104, - 106, 95, 56, 97, 96, 98, nil, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 223, nil, nil, 229, - nil, nil, 58, 59, nil, nil, 60, nil, nil, nil, - nil, nil, 44, nil, nil, nil, nil, nil, nil, nil, - nil, 228, nil, nil, nil, nil, 89, 79, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, 69, 70, 71, 62, 57, 81, - 93, 94, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 30, 31, 72, 73, nil, nil, nil, nil, - nil, 29, 28, 27, 101, 100, 102, 103, nil, nil, - 230, nil, nil, nil, nil, nil, nil, 45, nil, nil, - 105, 104, 106, 95, 56, 97, 96, 98, nil, 99, - 107, 108, nil, 91, 92, nil, 42, 43, 41, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 223, nil, - nil, 229, nil, nil, 58, 59, nil, nil, 60, nil, - nil, nil, nil, nil, 44, nil, nil, nil, nil, nil, - nil, nil, nil, 228, nil, nil, nil, nil, 89, 79, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, 69, 70, 71, 62, - 57, 81, 93, 94, 63, 64, nil, nil, nil, 67, - nil, 65, 66, 68, 309, 310, 72, 73, nil, nil, - nil, nil, nil, 305, 306, 312, 101, 100, 102, 103, - nil, nil, 230, nil, nil, nil, nil, nil, nil, 45, - nil, nil, 105, 104, 106, 95, 56, 97, 96, 98, - nil, 99, 107, 108, nil, 91, 92, nil, 42, 43, - 41, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 223, nil, nil, 229, nil, nil, 58, 59, nil, nil, - 60, nil, nil, nil, nil, nil, 44, nil, nil, nil, - nil, nil, nil, nil, nil, 228, nil, nil, nil, nil, - 89, 79, 82, 83, nil, 84, 86, 85, 87, nil, - nil, nil, nil, 80, 88, nil, nil, nil, 69, 70, - 71, 62, 57, 81, 93, 94, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 309, 310, 72, 73, - nil, nil, nil, nil, nil, 305, 306, 312, 101, 100, - 102, 103, nil, nil, 230, nil, nil, nil, nil, nil, - nil, 45, nil, nil, 105, 104, 106, 95, 56, 97, - 96, 98, nil, 99, 107, 108, nil, 91, 92, nil, - 42, 43, 41, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 223, nil, nil, 229, nil, nil, 58, 59, - nil, nil, 60, nil, nil, nil, nil, nil, 44, nil, - nil, nil, nil, nil, nil, nil, nil, 228, nil, nil, - nil, nil, 89, 79, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, nil, nil, - 69, 70, 71, 62, 57, 81, 93, 94, 63, 64, - nil, nil, nil, 67, nil, 65, 66, 68, 309, 310, - 72, 73, nil, nil, nil, nil, nil, 305, 306, 312, - 101, 100, 102, 103, nil, nil, 230, nil, nil, nil, - nil, nil, nil, 45, nil, nil, 105, 104, 106, 95, - 56, 97, 96, 98, nil, 99, 107, 108, nil, 91, - 92, nil, 42, 43, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 223, nil, nil, 229, nil, nil, - 58, 59, nil, nil, 60, nil, nil, nil, nil, nil, - 44, nil, nil, nil, nil, nil, nil, nil, nil, 228, - nil, nil, nil, nil, 89, 79, 82, 83, nil, 84, - 86, 85, 87, nil, nil, nil, nil, 80, 88, nil, - nil, nil, 69, 70, 71, 62, 57, 81, 93, 94, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 309, 310, 72, 73, nil, nil, nil, nil, nil, 305, - 306, 312, 101, 100, 102, 103, nil, nil, 230, nil, - nil, nil, nil, nil, nil, 307, nil, nil, 105, 104, - 106, 95, 56, 97, 96, 98, nil, 99, 107, 108, - nil, 91, 92, nil, nil, nil, 313, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 303, nil, nil, 299, - nil, nil, 58, 59, nil, nil, 60, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 89, 79, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, 69, 70, 71, 62, 57, 81, - 93, 94, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 309, 310, 72, 73, nil, nil, nil, nil, - nil, 305, 306, 312, 101, 100, 102, 103, nil, nil, - 230, nil, nil, nil, nil, nil, nil, 307, nil, nil, - 105, 104, 106, 95, 56, 97, 96, 98, nil, 99, - 107, 108, nil, 91, 92, nil, nil, nil, 313, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 303, nil, - nil, 299, nil, nil, 58, 59, nil, nil, 60, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 89, 79, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, 69, 70, 71, 62, - 57, 81, 93, 94, 63, 64, nil, nil, nil, 67, - nil, 65, 66, 68, 309, 310, 72, 73, nil, nil, - nil, nil, nil, 305, 306, 312, 101, 100, 102, 103, - nil, nil, 230, nil, nil, nil, nil, nil, nil, 45, - nil, nil, 105, 104, 106, 95, 56, 97, 96, 98, - nil, 99, 107, 108, nil, 91, 92, nil, 42, 43, - 41, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 223, nil, nil, 229, nil, nil, 58, 59, nil, nil, - 60, nil, 404, nil, nil, nil, 44, nil, nil, nil, - nil, nil, nil, nil, nil, 228, nil, nil, nil, nil, - 89, 79, 82, 83, nil, 84, 86, 85, 87, nil, - nil, nil, nil, 80, 88, nil, nil, nil, 69, 70, - 71, 62, 57, 81, 93, 94, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 309, 310, 72, 73, - nil, nil, nil, nil, nil, 305, 306, 312, 101, 100, - 102, 103, nil, nil, 230, nil, nil, nil, nil, nil, - nil, 45, nil, nil, 105, 104, 106, 95, 56, 97, - 96, 98, nil, 99, 107, 108, nil, 91, 92, nil, - 42, 43, 41, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 223, nil, nil, 229, nil, nil, 58, 59, - nil, nil, 60, nil, nil, nil, nil, nil, 44, nil, - nil, nil, nil, nil, nil, nil, nil, 228, nil, nil, - nil, nil, 89, 79, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, nil, nil, - 69, 70, 71, 62, 57, 81, 93, 94, 63, 64, - nil, nil, nil, 67, nil, 65, 66, 68, 30, 31, - 72, 73, nil, nil, nil, nil, nil, 29, 28, 27, - 101, 100, 102, 103, nil, nil, 19, nil, nil, nil, - nil, nil, nil, 45, nil, nil, 105, 104, 106, 95, - 56, 97, 96, 98, nil, 99, 107, 108, nil, 91, - 92, nil, 42, 43, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 223, nil, nil, 229, nil, nil, - 58, 59, nil, nil, 60, nil, nil, nil, nil, nil, - 44, nil, nil, nil, nil, nil, nil, nil, nil, 20, - nil, nil, nil, nil, 89, 79, 82, 83, nil, 84, - 86, 85, 87, nil, nil, nil, nil, 80, 88, nil, - nil, nil, 69, 70, 71, 62, 57, 81, 93, 94, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 30, 31, 72, 73, nil, nil, nil, nil, nil, 29, - 28, 27, 101, 100, 102, 103, nil, nil, 19, nil, - nil, nil, nil, nil, nil, 45, nil, nil, 105, 104, - 106, 95, 56, 97, 96, 98, nil, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 223, nil, nil, 229, - nil, nil, 58, 59, nil, nil, 60, nil, nil, nil, - nil, nil, 44, nil, nil, nil, nil, nil, nil, nil, - nil, 20, nil, nil, nil, nil, 89, 79, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, 69, 70, 71, 62, 57, 81, - 93, 94, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 309, 310, 72, 73, nil, nil, nil, nil, - nil, 305, 306, 312, 101, 100, 102, 103, nil, nil, - 230, nil, nil, nil, nil, nil, nil, 45, nil, nil, - 105, 104, 106, 95, 56, 97, 96, 98, nil, 99, - 107, 108, nil, 91, 92, nil, 42, 43, 41, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 223, nil, - nil, 229, nil, nil, 58, 59, nil, nil, 60, nil, - nil, nil, nil, nil, 44, nil, nil, nil, nil, nil, - nil, nil, nil, 228, nil, nil, nil, nil, 89, 79, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, 69, 70, 71, 62, - 57, 81, 93, 94, 63, 64, nil, nil, nil, 67, - nil, 65, 66, 68, 30, 31, 72, 73, nil, nil, - nil, nil, nil, 29, 28, 27, 101, 100, 102, 103, - nil, nil, 230, nil, nil, nil, nil, nil, nil, 45, - nil, nil, 105, 104, 106, 95, 56, 97, 96, 98, - nil, 99, 107, 108, nil, 91, 92, nil, 42, 43, - 41, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 223, nil, nil, 229, nil, nil, 58, 59, nil, nil, - 60, nil, nil, nil, nil, nil, 44, nil, nil, nil, - nil, nil, nil, nil, nil, 228, nil, nil, nil, nil, - 89, 79, 82, 83, nil, 84, 86, 85, 87, nil, - nil, nil, nil, 80, 88, nil, nil, nil, 69, 70, - 71, 62, 57, 81, 93, 94, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 309, 310, 72, 73, - nil, nil, nil, nil, nil, 305, 306, 312, 101, 100, - 102, 103, nil, nil, 230, nil, nil, nil, nil, nil, - nil, 45, nil, nil, 105, 104, 106, 95, 56, 97, - 96, 98, nil, 99, 107, 108, nil, 91, 92, nil, - 42, 43, 41, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 223, nil, nil, 229, nil, nil, 58, 59, - nil, nil, 60, nil, nil, nil, nil, nil, 44, nil, - nil, nil, nil, nil, nil, nil, nil, 228, nil, nil, - nil, nil, 89, 79, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, nil, nil, - 69, 70, 71, 62, 57, 81, 93, 94, 63, 64, - nil, nil, nil, 67, nil, 65, 66, 68, 309, 310, - 72, 73, nil, nil, nil, nil, nil, 305, 306, 312, - 101, 100, 102, 103, nil, nil, 230, nil, nil, nil, - nil, nil, nil, 45, nil, nil, 105, 104, 106, 95, - 56, 97, 96, 98, nil, 99, 107, 108, nil, 91, - 92, nil, 42, 43, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 223, nil, nil, 229, nil, nil, - 58, 59, nil, nil, 60, nil, nil, nil, nil, nil, - 44, nil, nil, nil, nil, nil, nil, nil, nil, 228, - nil, nil, nil, nil, 89, 79, 82, 83, nil, 84, - 86, 85, 87, nil, nil, nil, nil, 80, 88, nil, - nil, nil, 69, 70, 71, 62, 57, 81, 93, 94, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 309, 310, 72, 73, nil, nil, nil, nil, nil, 305, - 306, 312, 101, 100, 102, 103, nil, nil, 230, nil, - nil, nil, nil, nil, nil, 45, nil, nil, 105, 104, - 106, 95, 56, 97, 96, 98, nil, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 223, nil, nil, 229, - nil, nil, 58, 59, nil, nil, 60, nil, nil, nil, - nil, nil, 44, nil, nil, nil, nil, nil, nil, nil, - nil, 228, nil, nil, nil, nil, 89, 79, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, 69, 70, 71, 62, 57, 81, - 93, 94, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 309, 310, 72, 73, nil, nil, nil, nil, - nil, 305, 306, 312, 101, 100, 102, 103, nil, nil, - 230, nil, nil, nil, nil, nil, nil, 45, nil, nil, - 105, 104, 106, 95, 56, 97, 96, 98, nil, 99, - 107, 108, nil, 91, 92, nil, 42, 43, 41, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 223, nil, - nil, 229, nil, nil, 58, 59, nil, nil, 60, nil, - nil, nil, nil, nil, 44, nil, nil, nil, nil, nil, - nil, nil, nil, 228, nil, nil, nil, nil, 89, 79, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, 69, 70, 71, 62, - 57, 81, 93, 94, 63, 64, nil, nil, nil, 67, - nil, 65, 66, 68, 309, 310, 72, 73, nil, nil, - nil, nil, nil, 305, 306, 312, 101, 100, 102, 103, - nil, nil, 230, nil, nil, nil, nil, nil, nil, 307, - nil, nil, 105, 104, 106, 95, 56, 97, 96, 98, - nil, 99, 107, 108, nil, 91, 92, nil, nil, nil, - 313, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 876, nil, nil, 229, nil, nil, 58, 59, nil, nil, - 60, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 89, 79, 82, 83, nil, 84, 86, 85, 87, nil, - nil, nil, nil, 80, 88, nil, nil, nil, 69, 70, - 71, 62, 57, 81, 93, 94, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 30, 31, 72, 73, - nil, nil, nil, nil, nil, 29, 28, 27, 101, 100, - 102, 103, nil, nil, 19, nil, nil, nil, nil, nil, - nil, 45, nil, nil, 105, 104, 106, 95, 56, 97, - 96, 98, nil, 99, 107, 108, nil, 91, 92, nil, - 42, 43, 41, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 223, nil, nil, 229, nil, nil, 58, 59, - nil, nil, 60, nil, nil, nil, nil, nil, 44, nil, - nil, nil, nil, nil, nil, nil, nil, 20, nil, nil, - nil, nil, 89, 79, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, nil, nil, - 69, 70, 71, 62, 57, 81, 93, 94, 63, 64, - nil, nil, nil, 67, nil, 65, 66, 68, 309, 310, - 72, 73, nil, nil, nil, nil, nil, 305, 306, 312, - 101, 100, 102, 103, nil, nil, 230, nil, nil, nil, - nil, nil, nil, 45, nil, nil, 105, 104, 106, 95, - 56, 97, 96, 98, nil, 99, 107, 108, nil, 91, - 92, nil, 42, 43, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 223, nil, nil, 229, nil, nil, - 58, 59, nil, nil, 60, nil, 659, nil, nil, nil, - 44, nil, nil, nil, nil, nil, nil, nil, nil, 228, - nil, nil, nil, nil, 89, 79, 82, 83, nil, 84, - 86, 85, 87, nil, nil, nil, nil, 80, 88, nil, - nil, nil, 69, 70, 71, 62, 57, 81, 93, 94, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 309, 310, 72, 73, nil, nil, nil, nil, nil, 305, - 306, 312, 101, 100, 102, 103, nil, nil, 230, nil, - nil, nil, nil, nil, nil, 45, nil, nil, 105, 104, - 106, 95, 56, 97, 96, 98, 284, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 223, nil, nil, 229, - nil, nil, 58, 59, nil, nil, 60, nil, nil, nil, - 279, nil, 44, nil, nil, 285, nil, nil, nil, nil, - nil, 228, nil, nil, nil, nil, 89, 282, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, 69, 70, 71, 62, 57, 81, - 93, 94, 63, 64, nil, nil, nil, 67, nil, 65, - 66, 68, 309, 310, 72, 73, nil, nil, nil, nil, - nil, 305, 306, 312, 101, 100, 102, 103, nil, nil, - 230, nil, nil, nil, nil, nil, nil, 45, nil, nil, - 105, 104, 106, 95, 56, 97, 96, 98, nil, 99, - 107, 108, nil, 91, 92, nil, 42, 43, 41, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 223, nil, - nil, 229, nil, nil, 58, 59, nil, nil, 60, nil, - nil, nil, nil, nil, 44, nil, nil, nil, nil, nil, - nil, nil, nil, 228, nil, nil, nil, nil, 89, 79, - 82, 83, nil, 84, 86, 85, 87, nil, nil, nil, - nil, 80, 88, nil, nil, nil, 69, 70, 71, 62, - 57, 81, 93, 94, 63, 64, nil, nil, nil, 67, - nil, 65, 66, 68, 309, 310, 72, 73, nil, nil, - nil, nil, nil, 305, 306, 312, 101, 100, 102, 103, - nil, nil, 230, nil, nil, nil, nil, nil, nil, 307, - nil, nil, 105, 104, 106, 95, 56, 97, 96, 98, - nil, 99, 107, 108, nil, 91, 92, nil, nil, nil, - 313, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 876, nil, nil, 229, nil, nil, 58, 59, nil, nil, - 60, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 89, 79, 82, 83, nil, 84, 86, 85, 87, nil, - nil, nil, nil, 80, 88, nil, nil, nil, 69, 70, - 71, 62, 57, 81, 93, 94, 63, 64, nil, nil, - nil, 67, nil, 65, 66, 68, 309, 310, 72, 73, - nil, nil, nil, nil, nil, 305, 306, 312, 101, 100, - 102, 103, nil, nil, 230, nil, nil, nil, nil, nil, - nil, 307, nil, nil, 105, 104, 106, 95, 56, 97, - 96, 98, nil, 99, 107, 108, nil, 91, 92, nil, - nil, nil, 313, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 947, nil, nil, 229, nil, nil, 58, 59, - nil, nil, 60, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 89, 79, 82, 83, nil, 84, 86, 85, - 87, nil, nil, nil, nil, 80, 88, nil, nil, nil, - 69, 70, 71, 62, 57, 81, 93, 94, 63, 64, - nil, nil, nil, 67, nil, 65, 66, 68, 309, 310, - 72, 73, nil, nil, nil, nil, nil, 305, 306, 312, - 101, 100, 102, 103, nil, nil, 230, nil, nil, nil, - nil, nil, nil, 45, nil, nil, 105, 104, 106, 95, - 56, 97, 96, 98, nil, 99, 107, 108, nil, 91, - 92, nil, 42, 43, 41, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 223, nil, nil, 229, nil, nil, - 58, 59, nil, nil, 60, nil, nil, nil, nil, nil, - 44, nil, nil, nil, nil, nil, nil, nil, nil, 228, - nil, nil, nil, nil, 89, 79, 82, 83, nil, 84, - 86, 85, 87, nil, nil, nil, nil, 80, 88, nil, - nil, nil, 69, 70, 71, 62, 57, 81, 93, 94, - 63, 64, nil, nil, nil, 67, nil, 65, 66, 68, - 30, 31, 72, 73, nil, nil, nil, nil, nil, 29, - 28, 27, 101, 100, 102, 103, nil, nil, 230, nil, - nil, nil, nil, nil, nil, 45, nil, nil, 105, 104, - 106, 95, 56, 97, 96, 98, 284, 99, 107, 108, - nil, 91, 92, nil, 42, 43, 41, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 223, nil, nil, 229, - nil, nil, 58, 59, nil, nil, 60, nil, 281, nil, - 279, nil, 44, nil, nil, 285, nil, nil, nil, nil, - nil, 228, nil, nil, nil, nil, 89, 282, 82, 83, - nil, 84, 86, 85, 87, nil, nil, nil, nil, 80, - 88, nil, nil, nil, nil, -282, nil, 62, nil, 81, - 93, 94, -282, -282, -282, nil, nil, -282, -282, -282, - nil, -282, nil, nil, nil, nil, nil, nil, nil, nil, - nil, -282, -282, -282, nil, nil, nil, nil, nil, nil, - nil, -282, -282, nil, -282, -282, -282, -282, -282, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, -282, -282, -282, -282, -282, -282, -282, -282, - -282, -282, -282, -282, -282, -282, nil, nil, -282, -282, - -282, nil, nil, -282, nil, nil, -282, nil, nil, -282, - -282, nil, -282, nil, -282, nil, -282, nil, -282, -282, - nil, -282, -282, -282, -282, -282, nil, -282, nil, -282, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, -282, nil, nil, -282, -282, -282, -282, - -579, -282, nil, -282, nil, nil, nil, -579, -579, -579, - nil, nil, -579, -579, -579, nil, -579, nil, nil, nil, - nil, nil, nil, nil, nil, -579, -579, -579, -579, nil, - nil, nil, nil, nil, nil, nil, -579, -579, nil, -579, - -579, -579, -579, -579, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, -579, -579, -579, - -579, -579, -579, -579, -579, -579, -579, -579, -579, -579, - -579, nil, nil, -579, -579, -579, nil, nil, -579, nil, - nil, -579, nil, nil, -579, -579, nil, -579, nil, -579, - nil, -579, nil, -579, -579, nil, -579, -579, -579, -579, - -579, nil, -579, -579, -579, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, -579, nil, - nil, -579, -579, -579, -579, -580, -579, nil, -579, nil, - nil, nil, -580, -580, -580, nil, nil, -580, -580, -580, - nil, -580, nil, nil, nil, nil, nil, nil, nil, nil, - -580, -580, -580, -580, nil, nil, nil, nil, nil, nil, - nil, -580, -580, nil, -580, -580, -580, -580, -580, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, -580, -580, -580, -580, -580, -580, -580, -580, - -580, -580, -580, -580, -580, -580, nil, nil, -580, -580, - -580, nil, nil, -580, nil, nil, -580, nil, nil, -580, - -580, nil, -580, nil, -580, nil, -580, nil, -580, -580, - nil, -580, -580, -580, -580, -580, nil, -580, -580, -580, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, -580, nil, nil, -580, -580, -580, -580, - -411, -580, nil, -580, nil, nil, nil, -411, -411, -411, - nil, nil, -411, -411, -411, nil, -411, nil, nil, nil, - nil, nil, nil, nil, nil, -411, -411, -411, nil, nil, - nil, nil, nil, nil, nil, nil, -411, -411, nil, -411, - -411, -411, -411, -411, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, -411, -411, -411, - -411, -411, -411, -411, -411, -411, -411, -411, -411, -411, - -411, nil, nil, -411, -411, -411, nil, nil, -411, nil, - 263, -411, nil, nil, -411, -411, nil, -411, nil, -411, - nil, -411, nil, -411, -411, nil, -411, -411, -411, -411, - -411, -298, -411, -411, -411, nil, nil, nil, -298, -298, - -298, nil, nil, -298, -298, -298, nil, -298, -411, nil, - nil, -411, -411, nil, -411, nil, -411, -298, -298, nil, - nil, nil, nil, nil, nil, nil, nil, -298, -298, nil, - -298, -298, -298, -298, -298, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, -298, -298, - -298, -298, -298, -298, -298, -298, -298, -298, -298, -298, - -298, -298, nil, nil, -298, -298, -298, nil, nil, -298, - nil, 272, -298, nil, nil, -298, -298, nil, -298, nil, - -298, nil, -298, nil, -298, -298, nil, -298, -298, -298, - -298, -298, nil, -298, -246, -298, nil, nil, nil, nil, - nil, -246, -246, -246, nil, nil, -246, -246, -246, -298, - -246, nil, -298, -298, nil, -298, nil, -298, nil, -246, - -246, -246, nil, nil, nil, nil, nil, nil, nil, nil, - -246, -246, nil, -246, -246, -246, -246, -246, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, -246, -246, -246, -246, -246, -246, -246, -246, -246, - -246, -246, -246, -246, -246, nil, nil, -246, -246, -246, - nil, nil, -246, nil, 263, -246, nil, nil, -246, -246, - nil, -246, nil, -246, nil, -246, nil, -246, -246, nil, - -246, -246, -246, -246, -246, nil, -246, -246, -246, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, -246, nil, -246, -246, -246, nil, -246, nil, - -246, -246, -246, -246, nil, nil, -246, -246, -246, 548, - -246, 545, 544, 543, 553, 546, nil, nil, nil, -246, - -246, nil, nil, nil, nil, 556, nil, nil, nil, nil, - -246, -246, nil, -246, -246, -246, -246, -246, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 551, 548, nil, - 545, 544, 543, 553, 546, nil, 561, 560, 564, 563, - nil, nil, nil, 557, 556, 548, nil, 545, 544, 543, - 553, 546, -246, nil, nil, nil, nil, nil, nil, -246, - nil, 556, nil, nil, 263, -246, 551, 534, nil, 218, - nil, nil, nil, nil, nil, 561, 560, 564, 563, nil, - nil, nil, 557, 551, nil, nil, nil, -246, -246, nil, - nil, nil, 561, 560, 564, 563, nil, nil, nil, 557, - nil, nil, -246, nil, nil, -246, nil, nil, nil, nil, - -246, 173, 184, 174, 197, 170, 190, 180, 179, 200, - 201, 195, 178, 177, 172, 198, 202, 203, 182, 171, - 185, 189, 191, 183, 176, nil, nil, nil, 192, 199, - 194, 193, 186, 196, 181, 169, 188, 187, nil, nil, - nil, nil, nil, 168, 175, 166, 167, 163, 164, 165, - 124, 126, 123, nil, 125, nil, nil, nil, nil, nil, - nil, nil, nil, 157, 158, nil, 154, 136, 137, 138, - 145, 142, 144, nil, nil, 139, 140, nil, nil, nil, - 159, 160, 146, 147, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 151, 150, nil, - 135, 156, 153, 152, 161, 148, 149, 143, 141, 133, - 155, 134, nil, nil, 162, 89, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 88, - 173, 184, 174, 197, 170, 190, 180, 179, 200, 201, - 195, 178, 177, 172, 198, 202, 203, 182, 171, 185, - 189, 191, 183, 176, nil, nil, nil, 192, 199, 194, - 193, 186, 196, 181, 169, 188, 187, nil, nil, nil, - nil, nil, 168, 175, 166, 167, 163, 164, 165, 124, - 126, nil, nil, 125, nil, nil, nil, nil, nil, nil, - nil, nil, 157, 158, nil, 154, 136, 137, 138, 145, - 142, 144, nil, nil, 139, 140, nil, nil, nil, 159, - 160, 146, 147, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 151, 150, nil, 135, - 156, 153, 152, 161, 148, 149, 143, 141, 133, 155, - 134, nil, nil, 162, 89, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 88, 173, - 184, 174, 197, 170, 190, 180, 179, 200, 201, 195, - 178, 177, 172, 198, 202, 203, 182, 171, 185, 189, - 191, 183, 176, nil, nil, nil, 192, 199, 194, 193, - 186, 196, 181, 169, 188, 187, nil, nil, nil, nil, - nil, 168, 175, 166, 167, 163, 164, 165, 124, 126, - nil, nil, 125, nil, nil, nil, nil, nil, nil, nil, - nil, 157, 158, nil, 154, 136, 137, 138, 145, 142, - 144, nil, nil, 139, 140, nil, nil, nil, 159, 160, - 146, 147, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 151, 150, nil, 135, 156, - 153, 152, 161, 148, 149, 143, 141, 133, 155, 134, - nil, nil, 162, 89, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 88, 173, 184, - 174, 197, 170, 190, 180, 179, 200, 201, 195, 178, - 177, 172, 198, 202, 203, 182, 171, 185, 189, 191, - 183, 176, nil, nil, nil, 192, 199, 194, 193, 186, - 196, 181, 169, 188, 187, nil, nil, nil, nil, nil, - 168, 175, 166, 167, 163, 164, 165, 124, 126, nil, - nil, 125, nil, nil, nil, nil, nil, nil, nil, nil, - 157, 158, nil, 154, 136, 137, 138, 145, 142, 144, - nil, nil, 139, 140, nil, nil, nil, 159, 160, 146, - 147, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 151, 150, nil, 135, 156, 153, - 152, 161, 148, 149, 143, 141, 133, 155, 134, nil, - nil, 162, 89, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 88, 173, 184, 174, - 197, 170, 190, 180, 179, 200, 201, 195, 178, 177, - 172, 198, 202, 203, 182, 171, 185, 189, 191, 183, - 176, nil, nil, nil, 192, 199, 194, 371, 370, 372, - 369, 169, 188, 187, nil, nil, nil, nil, nil, 168, - 175, 166, 167, 366, 367, 368, 364, 126, 97, 96, - 365, nil, 99, nil, nil, nil, nil, nil, nil, 157, - 158, nil, 154, 136, 137, 138, 145, 142, 144, nil, - nil, 139, 140, nil, nil, nil, 159, 160, 146, 147, - nil, nil, nil, nil, nil, 376, nil, nil, nil, nil, - nil, nil, nil, 151, 150, nil, 135, 156, 153, 152, - 161, 148, 149, 143, 141, 133, 155, 134, nil, nil, - 162, 173, 184, 174, 197, 170, 190, 180, 179, 200, - 201, 195, 178, 177, 172, 198, 202, 203, 182, 171, - 185, 189, 191, 183, 176, nil, nil, nil, 192, 199, - 194, 193, 186, 196, 181, 169, 188, 187, nil, nil, - nil, nil, nil, 168, 175, 166, 167, 163, 164, 165, - 124, 126, nil, nil, 125, nil, nil, nil, nil, nil, - nil, nil, nil, 157, 158, nil, 154, 136, 137, 138, - 145, 142, 144, nil, nil, 139, 140, nil, nil, nil, - 159, 160, 146, 147, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 151, 150, nil, - 135, 156, 153, 152, 161, 148, 149, 143, 141, 133, - 155, 134, 413, 417, 162, nil, 414, nil, nil, nil, - nil, nil, nil, nil, nil, 157, 158, nil, 154, 136, - 137, 138, 145, 142, 144, nil, nil, 139, 140, nil, - nil, nil, 159, 160, 146, 147, nil, nil, nil, nil, - nil, 263, nil, nil, nil, nil, nil, nil, nil, 151, - 150, nil, 135, 156, 153, 152, 161, 148, 149, 143, - 141, 133, 155, 134, 420, 424, 162, nil, 419, nil, - nil, nil, nil, nil, nil, nil, nil, 157, 158, nil, - 154, 136, 137, 138, 145, 142, 144, nil, nil, 139, - 140, nil, nil, nil, 159, 160, 146, 147, nil, nil, - nil, nil, nil, 263, nil, nil, nil, nil, nil, nil, - nil, 151, 150, nil, 135, 156, 153, 152, 161, 148, - 149, 143, 141, 133, 155, 134, 475, 417, 162, nil, - 476, nil, nil, nil, nil, nil, nil, nil, nil, 157, - 158, nil, 154, 136, 137, 138, 145, 142, 144, nil, - nil, 139, 140, nil, nil, nil, 159, 160, 146, 147, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 151, 150, nil, 135, 156, 153, 152, - 161, 148, 149, 143, 141, 133, 155, 134, 638, 417, - 162, nil, 639, nil, nil, nil, nil, nil, nil, nil, - nil, 157, 158, nil, 154, 136, 137, 138, 145, 142, - 144, nil, nil, 139, 140, nil, nil, nil, 159, 160, - 146, 147, nil, nil, nil, nil, nil, 263, nil, nil, - nil, nil, nil, nil, nil, 151, 150, nil, 135, 156, - 153, 152, 161, 148, 149, 143, 141, 133, 155, 134, - 640, 424, 162, nil, 641, nil, nil, nil, nil, nil, - nil, nil, nil, 157, 158, nil, 154, 136, 137, 138, - 145, 142, 144, nil, nil, 139, 140, nil, nil, nil, - 159, 160, 146, 147, nil, nil, nil, nil, nil, 263, - nil, nil, nil, nil, nil, nil, nil, 151, 150, nil, - 135, 156, 153, 152, 161, 148, 149, 143, 141, 133, - 155, 134, 670, 417, 162, nil, 671, nil, nil, nil, - nil, nil, nil, nil, nil, 157, 158, nil, 154, 136, - 137, 138, 145, 142, 144, nil, nil, 139, 140, nil, - nil, nil, 159, 160, 146, 147, nil, nil, nil, nil, - nil, 263, nil, nil, nil, nil, nil, nil, nil, 151, - 150, nil, 135, 156, 153, 152, 161, 148, 149, 143, - 141, 133, 155, 134, 673, 424, 162, nil, 674, nil, - nil, nil, nil, nil, nil, nil, nil, 157, 158, nil, - 154, 136, 137, 138, 145, 142, 144, nil, nil, 139, - 140, nil, nil, nil, 159, 160, 146, 147, nil, nil, - nil, nil, nil, 263, nil, nil, nil, nil, nil, nil, - nil, 151, 150, nil, 135, 156, 153, 152, 161, 148, - 149, 143, 141, 133, 155, 134, 638, 417, 162, nil, - 639, nil, nil, nil, nil, nil, nil, nil, nil, 157, - 158, nil, 154, 136, 137, 138, 145, 142, 144, nil, - nil, 139, 140, nil, nil, nil, 159, 160, 146, 147, - nil, nil, nil, nil, nil, 263, nil, nil, nil, nil, - nil, nil, nil, 151, 150, nil, 135, 156, 153, 152, - 161, 148, 149, 143, 141, 133, 155, 134, 640, 424, - 162, nil, 641, nil, nil, nil, nil, nil, nil, nil, - nil, 157, 158, nil, 154, 136, 137, 138, 145, 142, - 144, nil, nil, 139, 140, nil, nil, nil, 159, 160, - 146, 147, nil, nil, nil, nil, nil, 263, nil, nil, - nil, nil, nil, nil, nil, 151, 150, nil, 135, 156, - 153, 152, 161, 148, 149, 143, 141, 133, 155, 134, - 721, 417, 162, nil, 722, nil, nil, nil, nil, nil, - nil, nil, nil, 157, 158, nil, 154, 136, 137, 138, - 145, 142, 144, nil, nil, 139, 140, nil, nil, nil, - 159, 160, 146, 147, nil, nil, nil, nil, nil, 263, - nil, nil, nil, nil, nil, nil, nil, 151, 150, nil, - 135, 156, 153, 152, 161, 148, 149, 143, 141, 133, - 155, 134, 723, 424, 162, nil, 724, nil, nil, nil, - nil, nil, nil, nil, nil, 157, 158, nil, 154, 136, - 137, 138, 145, 142, 144, nil, nil, 139, 140, nil, - nil, nil, 159, 160, 146, 147, nil, nil, nil, nil, - nil, 263, nil, nil, nil, nil, nil, nil, nil, 151, - 150, nil, 135, 156, 153, 152, 161, 148, 149, 143, - 141, 133, 155, 134, 726, 424, 162, nil, 727, nil, - nil, nil, nil, nil, nil, nil, nil, 157, 158, nil, - 154, 136, 137, 138, 145, 142, 144, nil, nil, 139, - 140, nil, nil, nil, 159, 160, 146, 147, nil, nil, - nil, nil, nil, 263, nil, nil, nil, nil, nil, nil, - nil, 151, 150, nil, 135, 156, 153, 152, 161, 148, - 149, 143, 141, 133, 155, 134, 475, 417, 162, nil, - 476, nil, nil, nil, nil, nil, nil, nil, nil, 157, - 158, nil, 154, 136, 137, 138, 145, 142, 144, nil, - nil, 139, 140, nil, nil, nil, 159, 160, 146, 147, - nil, nil, nil, nil, nil, 263, nil, nil, nil, nil, - nil, nil, nil, 151, 150, nil, 135, 156, 153, 152, - 161, 148, 149, 143, 141, 133, 155, 134, 983, 424, - 162, nil, 982, nil, nil, nil, nil, nil, nil, nil, - nil, 157, 158, nil, 154, 136, 137, 138, 145, 142, - 144, nil, nil, 139, 140, nil, nil, nil, 159, 160, - 146, 147, nil, nil, nil, nil, nil, 263, nil, nil, - nil, nil, nil, nil, nil, 151, 150, nil, 135, 156, - 153, 152, 161, 148, 149, 143, 141, 133, 155, 134, - 1006, 417, 162, nil, 1007, nil, nil, nil, nil, nil, - nil, nil, nil, 157, 158, nil, 154, 136, 137, 138, - 145, 142, 144, nil, nil, 139, 140, nil, nil, nil, - 159, 160, 146, 147, nil, nil, nil, nil, nil, 263, - nil, nil, nil, nil, nil, nil, nil, 151, 150, nil, - 135, 156, 153, 152, 161, 148, 149, 143, 141, 133, - 155, 134, 1008, 424, 162, nil, 1009, nil, nil, nil, - nil, nil, nil, nil, nil, 157, 158, nil, 154, 136, - 137, 138, 145, 142, 144, nil, nil, 139, 140, nil, - nil, nil, 159, 160, 146, 147, nil, nil, nil, nil, - nil, 263, nil, nil, nil, nil, nil, nil, nil, 151, - 150, nil, 135, 156, 153, 152, 161, 148, 149, 143, - 141, 133, 155, 134, nil, 548, 162, 545, 544, 543, - 553, 546, nil, 548, nil, 545, 544, 543, 553, 546, - nil, 556, nil, nil, nil, nil, nil, nil, 548, 556, - 545, 544, 543, 553, 546, nil, nil, nil, nil, nil, - nil, nil, nil, 551, 556, nil, nil, nil, nil, nil, - nil, 551, 561, 560, 564, 563, nil, nil, nil, 557, - 561, 560, 564, 563, nil, nil, 551, 557, 548, nil, - 545, 544, 543, 553, 546, 561, 560, 564, 563, nil, - nil, nil, 557, 548, 556, 545, 544, 543, 553, 546, - nil, 548, nil, 545, 544, 543, 553, 546, nil, 556, - nil, nil, nil, nil, nil, nil, 551, 556, 548, nil, - 545, 544, 543, 553, 546, 561, 560, 564, 563, nil, - nil, 551, 557, nil, 556, nil, nil, nil, nil, 551, - 561, 560, 564, 563, nil, nil, nil, 557, 561, 560, - 564, 563, nil, nil, nil, 557, 551, 548, nil, 545, - 544, 543, 553, 546, nil, 561, 560, 564, 563, nil, - nil, nil, 557, 556, 548, nil, 545, 544, 543, 553, - 546, nil, 548, nil, 545, 544, 543, 553, 546, nil, - 556, nil, nil, nil, nil, 551, nil, 548, 556, 545, - 544, 543, 553, 546, nil, nil, 564, 563, nil, nil, - nil, 557, 551, 556, nil, nil, nil, nil, nil, nil, - 551, nil, nil, 564, 563, nil, nil, nil, 557, 561, - 560, 564, 563, nil, nil, 551, 557, 548, nil, 545, - 544, 543, 553, 546, nil, nil, 564, 563, nil, nil, - nil, 557, 548, 556, 545, 544, 543, 553, 546, nil, - 548, nil, 545, 544, 543, 553, 546, 548, 556, 545, - 544, 543, 553, 546, nil, 551, 556, nil, nil, nil, - nil, nil, nil, 556, nil, nil, 564, 563, nil, nil, - 551, 557, nil, nil, nil, nil, nil, nil, 551, nil, - nil, 564, 563, nil, nil, 551, 557, nil, nil, 564, - 563, nil, nil, nil, 557, nil, 564, 563, nil, nil, - nil, 557 ] - -racc_action_check = [ - 95, 345, 61, 437, 437, 346, 349, 95, 95, 95, - 221, 338, 95, 95, 95, 383, 95, 355, 19, 384, - 58, 355, 594, 594, 95, 222, 95, 95, 95, 473, - 650, 26, 17, 17, 578, 359, 95, 95, 339, 95, - 95, 95, 95, 95, 719, 885, 15, 1, 908, 687, - 721, 7, 1006, 665, 1007, 1020, 680, 680, 308, 19, - 58, 913, 665, 913, 473, 722, 221, 95, 95, 95, - 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 222, 383, 95, 95, 95, 384, 95, 95, 570, - 61, 95, 10, 15, 95, 95, 26, 95, 437, 95, - 12, 95, 15, 95, 95, 844, 95, 95, 95, 95, - 95, 345, 95, 98, 95, 346, 349, 594, 650, 26, - 98, 98, 98, 308, 1008, 98, 98, 98, 95, 98, - 338, 95, 95, 95, 95, 338, 95, 98, 95, 98, - 98, 98, 359, 95, 578, 571, 308, 723, 845, 98, - 98, 680, 98, 98, 98, 98, 98, 339, 13, 687, - 721, 670, 339, 719, 885, 359, 719, 908, 719, 885, - 359, 1006, 908, 1007, 1020, 722, 1006, 16, 1007, 1020, - 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, - 98, 98, 98, 98, 570, 22, 98, 98, 98, 570, - 98, 98, 1008, 671, 98, 37, 724, 98, 98, 40, - 98, 605, 98, 723, 98, 844, 98, 98, 224, 98, - 98, 98, 98, 98, 419, 98, 45, 98, 670, 590, - 590, 419, 419, 419, 481, 24, 328, 419, 419, 328, - 419, 98, 24, 1008, 98, 98, 98, 98, 1008, 98, - 571, 98, 353, 845, 3, 571, 98, 723, 845, 3, - 419, 419, 109, 419, 419, 419, 419, 419, 670, 481, - 671, 670, 724, 123, 224, 204, 605, 605, 123, 123, - 670, 704, 607, 704, 704, 704, 605, 704, 223, 41, - 41, 419, 419, 419, 419, 419, 419, 419, 419, 419, - 419, 419, 419, 419, 419, 353, 354, 419, 419, 419, - 671, 419, 353, 671, 38, 419, 724, 353, 419, 313, - 313, 353, 671, 419, 590, 419, 443, 419, 419, 590, - 419, 419, 419, 419, 419, 378, 419, 420, 419, 225, - 353, 39, 364, 226, 420, 420, 420, 607, 607, 364, - 420, 420, 419, 420, 482, 419, 419, 607, 419, 354, - 419, 38, 420, 230, 704, 673, 354, 419, 41, 41, - 38, 354, 262, 420, 420, 354, 420, 420, 420, 420, - 420, 904, 443, 904, 904, 904, 317, 904, 39, 482, - 329, 651, 492, 329, 354, 379, 276, 39, 313, 313, - 378, 378, 378, 801, 420, 420, 420, 420, 420, 420, - 420, 420, 420, 420, 420, 420, 420, 420, 673, 413, - 420, 420, 420, 380, 420, 673, 651, 288, 420, 414, - 673, 420, 288, 317, 673, 381, 420, 638, 420, 726, - 420, 420, 317, 420, 420, 420, 420, 420, 277, 420, - 420, 420, 382, 673, 280, 385, 801, 492, 492, 492, - 379, 379, 379, 801, 904, 420, 413, 621, 420, 420, - 640, 420, 801, 420, 492, 413, 414, 640, 640, 640, - 420, 292, 640, 640, 640, 414, 640, 365, 380, 380, - 380, 801, 726, 638, 365, 640, 640, 640, 640, 726, - 381, 381, 381, 639, 726, 293, 640, 640, 726, 640, - 640, 640, 640, 640, 621, 295, 774, 382, 382, 382, - 385, 385, 385, 621, 337, 337, 366, 726, 551, 367, - 551, 551, 551, 366, 551, 296, 367, 640, 640, 640, - 640, 640, 640, 640, 640, 640, 640, 640, 640, 640, - 640, 689, 297, 640, 640, 640, 368, 640, 640, 639, - 303, 640, 689, 368, 640, 640, 551, 640, 306, 640, - 307, 640, 774, 640, 640, 551, 640, 640, 640, 640, - 640, 862, 640, 640, 640, 332, 369, 77, 332, 342, - 370, 312, 862, 369, 342, 689, 689, 370, 640, 77, - 689, 640, 640, 640, 640, 449, 640, 641, 640, 77, - 371, 14, 314, 640, 641, 641, 641, 371, 14, 641, - 641, 641, 46, 641, 220, 862, 862, 14, 318, 46, - 862, 220, 372, 641, 641, 641, 321, 449, 46, 372, - 220, 449, 449, 641, 641, 374, 641, 641, 641, 641, - 641, 833, 374, 833, 833, 833, 300, 833, 701, 326, - 701, 701, 701, 300, 701, 831, 330, 831, 831, 831, - 686, 831, 300, 686, 641, 641, 641, 641, 641, 641, - 641, 641, 641, 641, 641, 641, 641, 641, 468, 833, - 641, 641, 641, 301, 641, 641, 701, 469, 641, 331, - 301, 641, 641, 831, 641, 701, 641, 333, 641, 301, - 641, 641, 831, 641, 641, 641, 641, 641, 589, 641, - 468, 641, 343, 589, 468, 468, 450, 468, 468, 469, - 523, 523, 344, 469, 469, 641, 469, 469, 641, 641, - 641, 641, 848, 641, 853, 641, 348, 848, 350, 853, - 641, 0, 0, 0, 0, 0, 0, 394, 450, 302, - 0, 0, 450, 450, 400, 0, 302, 0, 0, 0, - 0, 0, 0, 0, 934, 302, 403, 934, 405, 0, - 0, 0, 0, 0, 0, 0, 598, 598, 0, 409, - 598, 598, 598, 432, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 411, 0, 0, 0, - 412, 0, 0, 421, 0, 0, 0, 432, 432, 432, - 432, 432, 432, 432, 432, 432, 432, 432, 304, 432, - 432, 319, 429, 432, 432, 304, 0, 439, 319, 0, - 692, 692, 0, 0, 304, 451, 0, 319, 0, 432, - 452, 432, 0, 432, 432, 453, 432, 432, 432, 432, - 432, 0, 432, 710, 710, 454, 0, 0, 0, 0, - 347, 0, 0, 0, 0, 996, 996, 347, 479, 0, - 0, 483, 432, 499, 432, 500, 347, 0, 503, 0, - 0, 0, 33, 33, 33, 33, 33, 33, 505, 510, - 357, 33, 33, 513, 521, 522, 33, 357, 33, 33, - 33, 33, 33, 33, 33, 524, 357, 536, 537, 539, - 33, 33, 33, 33, 33, 33, 33, 540, 541, 33, - 550, 558, 562, 565, 408, 33, 33, 33, 33, 33, - 33, 33, 33, 33, 33, 33, 33, 567, 33, 33, - 33, 572, 33, 33, 573, 33, 33, 33, 408, 408, - 408, 408, 408, 408, 408, 408, 408, 408, 408, 509, - 408, 408, 581, 592, 408, 408, 509, 33, 602, 581, - 33, 610, 612, 33, 33, 509, 618, 33, 581, 33, - 408, 622, 408, 33, 408, 408, 627, 408, 408, 408, - 408, 408, 33, 408, 632, 642, 649, 33, 33, 33, - 33, 875, 33, 33, 33, 33, 656, 658, 875, 664, - 33, 33, 667, 408, 669, 672, 675, 875, 33, 676, - 33, 33, 33, 121, 121, 121, 121, 121, 121, 679, - 681, 938, 121, 121, 684, 688, 703, 121, 938, 121, - 121, 121, 121, 121, 121, 121, 705, 938, 712, 717, - 720, 121, 121, 121, 121, 121, 121, 121, 729, 734, - 121, 753, 758, 775, 776, 643, 121, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 121, 121, 777, 121, - 121, 121, 779, 121, 121, 780, 121, 121, 121, 643, - 643, 643, 643, 643, 643, 643, 643, 643, 643, 643, - 674, 643, 643, 944, 781, 643, 643, 674, 121, 783, - 944, 121, 674, 784, 121, 121, 674, 785, 121, 944, - 121, 643, 786, 643, 121, 643, 643, 790, 643, 643, - 643, 643, 643, 121, 643, 794, 795, 800, 121, 121, - 121, 121, 945, 121, 121, 121, 121, 804, 807, 945, - 808, 121, 121, 811, 643, 816, 817, 821, 945, 121, - 822, 121, 121, 121, 206, 206, 206, 206, 206, 206, - 824, 825, 946, 206, 206, 827, 830, 832, 206, 946, - 206, 206, 206, 206, 206, 206, 206, 835, 946, 838, - 847, 851, 206, 206, 206, 206, 206, 206, 206, 852, - 873, 206, 873, 873, 873, 855, 873, 206, 206, 206, - 206, 206, 206, 206, 206, 206, 206, 206, 206, 856, - 206, 206, 206, 872, 206, 206, 876, 206, 206, 206, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 727, 21, 21, 948, 878, 21, 21, 727, 206, - 889, 948, 206, 727, 890, 206, 206, 727, 906, 206, - 948, 206, 21, 910, 21, 206, 21, 21, 911, 21, - 21, 21, 21, 21, 206, 21, 917, 921, 924, 206, - 206, 206, 206, 988, 206, 206, 206, 206, 927, 928, - 988, 929, 206, 206, 930, 21, 932, 947, 952, 988, - 206, 953, 206, 206, 206, 229, 229, 229, 229, 229, - 229, 954, 955, 956, 229, 229, 958, 982, 983, 229, - 984, 229, 229, 229, 229, 229, 229, 229, 6, 6, - 6, 6, 6, 229, 229, 229, 229, 229, 229, 229, - 995, 981, 229, 981, 981, 981, 997, 981, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 998, 229, 229, 229, 999, 229, 229, 1000, 229, 229, - 229, 274, 274, 274, 274, 274, 274, 274, 274, 274, - 274, 274, 1009, 274, 274, 1001, 1002, 274, 274, 1009, - 229, 1005, 1010, 229, 1009, 1011, 229, 229, 1009, 1022, - 229, nil, 229, 274, nil, 274, 229, 274, 274, nil, - 274, 274, 274, 274, 274, 229, 274, nil, nil, nil, - 229, 229, 229, 229, nil, 229, 229, 229, 229, nil, - nil, nil, nil, 229, 229, nil, 274, nil, nil, nil, - nil, 229, nil, 229, 229, 229, 294, 294, 294, 294, - 294, 294, nil, nil, nil, 294, 294, nil, nil, nil, - 294, nil, 294, 294, 294, 294, 294, 294, 294, 291, - 291, 291, 291, 291, 294, 294, 294, 294, 294, 294, - 294, nil, nil, 294, 497, 497, 497, 497, 497, 294, - 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, - 294, nil, 294, 294, 294, nil, 294, 294, nil, 294, - 294, 294, 427, 427, 427, 427, 427, 427, 427, 427, - 427, 427, 427, nil, 427, 427, nil, nil, 427, 427, - nil, 294, nil, nil, 294, nil, nil, 294, 294, nil, - nil, 294, nil, 294, 427, nil, 427, 294, 427, 427, - nil, 427, 427, 427, 427, 427, 294, 427, nil, nil, - nil, 294, 294, 294, 294, nil, 294, 294, 294, 294, - nil, nil, nil, nil, 294, 294, nil, 427, nil, nil, - nil, nil, 294, nil, 294, 294, 294, 299, 299, 299, - 299, 299, 299, nil, nil, nil, 299, 299, nil, nil, - nil, 299, nil, 299, 299, 299, 299, 299, 299, 299, - nil, nil, nil, nil, nil, 299, 299, 299, 299, 299, - 299, 299, nil, nil, 299, nil, nil, nil, nil, nil, - 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, - 299, 299, nil, 299, 299, 299, nil, 299, 299, nil, - 299, 299, 299, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, nil, 519, 519, nil, nil, 519, - 519, nil, 299, nil, nil, 299, nil, nil, 299, 299, - nil, nil, 299, nil, 299, 519, nil, 519, 299, 519, - 519, nil, 519, 519, 519, 519, 519, 299, 519, nil, - nil, nil, 299, 299, 299, 299, nil, 299, 299, 299, - 299, nil, nil, nil, nil, 299, 299, nil, 519, nil, - nil, nil, nil, 299, nil, 299, 299, 299, 324, 324, - 324, 324, 324, 324, nil, nil, nil, 324, 324, nil, - nil, nil, 324, nil, 324, 324, 324, 324, 324, 324, - 324, nil, nil, nil, nil, nil, 324, 324, 324, 324, - 324, 324, 324, nil, nil, 324, nil, nil, nil, nil, - nil, 324, 324, 324, 324, 324, 324, 324, 324, 324, - 324, 324, 324, nil, 324, 324, 324, nil, 324, 324, - nil, 324, 324, 324, 644, 644, 644, 644, 644, 644, - 644, 644, 644, 644, 644, nil, 644, 644, nil, nil, - 644, 644, nil, 324, nil, nil, 324, nil, nil, 324, - 324, nil, nil, 324, nil, 324, 644, nil, 644, 324, - 644, 644, nil, 644, 644, 644, 644, 644, 324, 644, - nil, nil, nil, 324, 324, 324, 324, nil, 324, 324, - 324, 324, nil, nil, nil, nil, 324, 324, 644, 644, - nil, nil, nil, nil, 324, nil, 324, 324, 324, 498, - 498, 498, 498, 498, 498, nil, nil, nil, 498, 498, - nil, nil, nil, 498, nil, 498, 498, 498, 498, 498, - 498, 498, nil, nil, nil, nil, nil, 498, 498, 498, - 498, 498, 498, 498, nil, nil, 498, nil, nil, nil, - nil, nil, 498, 498, 498, 498, 498, 498, 498, 498, - 498, 498, 498, 498, nil, 498, 498, 498, nil, 498, - 498, nil, 498, 498, 498, 678, 678, 678, 678, 678, - 678, 678, 678, 678, 678, 678, nil, 678, 678, nil, - nil, 678, 678, nil, 498, nil, nil, 498, nil, nil, - 498, 498, nil, nil, 498, nil, 498, 678, nil, 678, - 498, 678, 678, nil, 678, 678, 678, 678, 678, 498, - 678, nil, nil, nil, 498, 498, 498, 498, nil, 498, - 498, 498, 498, nil, nil, nil, nil, 498, 498, nil, - 678, nil, nil, nil, nil, 498, nil, 498, 498, 498, - 566, 566, 566, 566, 566, 566, nil, nil, nil, 566, - 566, nil, nil, nil, 566, nil, 566, 566, 566, 566, - 566, 566, 566, nil, nil, nil, nil, nil, 566, 566, - 566, 566, 566, 566, 566, nil, nil, 566, nil, nil, - nil, nil, nil, 566, 566, 566, 566, 566, 566, 566, - 566, 566, 566, 566, 566, nil, 566, 566, 566, nil, - 566, 566, nil, 566, 566, 566, 755, 755, 755, 755, - 755, 755, 755, 755, 755, 755, 755, nil, 755, 755, - nil, nil, 755, 755, nil, 566, nil, nil, 566, nil, - nil, 566, 566, nil, nil, 566, nil, 566, 755, nil, - 755, 566, 755, 755, nil, 755, 755, 755, 755, 755, - 566, 755, nil, nil, nil, 566, 566, 566, 566, nil, - 566, 566, 566, 566, nil, nil, nil, nil, 566, 566, - nil, 755, nil, nil, nil, nil, 566, nil, 566, 566, - 566, 569, 569, 569, 569, 569, 569, nil, nil, nil, - 569, 569, nil, nil, nil, 569, nil, 569, 569, 569, - 569, 569, 569, 569, nil, nil, nil, nil, nil, 569, - 569, 569, 569, 569, 569, 569, nil, nil, 569, nil, - nil, nil, nil, nil, 569, 569, 569, 569, 569, 569, - 569, 569, 569, 569, 569, 569, nil, 569, 569, 569, - nil, 569, 569, nil, 569, 569, 569, 760, 760, 760, - 760, 760, 760, 760, 760, 760, 760, 760, nil, 760, - 760, nil, nil, 760, 760, nil, 569, nil, nil, 569, - nil, nil, 569, 569, nil, nil, 569, nil, 569, 760, - nil, 760, 569, 760, 760, nil, 760, 760, 760, 760, - 760, 569, 760, nil, nil, nil, 569, 569, 569, 569, - nil, 569, 569, 569, 569, nil, nil, nil, nil, 569, - 569, nil, 760, nil, nil, nil, nil, 569, nil, 569, - 569, 569, 591, 591, 591, 591, 591, 591, nil, nil, - nil, 591, 591, nil, nil, nil, 591, nil, 591, 591, - 591, 591, 591, 591, 591, nil, nil, nil, nil, nil, - 591, 591, 591, 591, 591, 591, 591, nil, nil, 591, - nil, nil, nil, nil, nil, 591, 591, 591, 591, 591, - 591, 591, 591, 591, 591, 591, 591, nil, 591, 591, - 591, nil, 591, 591, nil, 591, 591, 591, 762, 762, - 762, 762, 762, 762, 762, 762, 762, 762, 762, nil, - 762, 762, nil, nil, 762, 762, nil, 591, nil, nil, - 591, nil, nil, 591, 591, nil, nil, 591, nil, 591, - 762, nil, 762, 591, 762, 762, nil, 762, 762, 762, - 762, 762, 591, 762, nil, nil, nil, 591, 591, 591, - 591, nil, 591, 591, 591, 591, nil, nil, nil, nil, - 591, 591, nil, 762, nil, nil, nil, nil, 591, nil, - 591, 591, 591, 648, 648, 648, 648, 648, 648, nil, - nil, nil, 648, 648, nil, nil, nil, 648, nil, 648, - 648, 648, 648, 648, 648, 648, nil, nil, nil, nil, - nil, 648, 648, 648, 648, 648, 648, 648, nil, nil, - 648, nil, nil, nil, nil, nil, 648, 648, 648, 648, - 648, 648, 648, 648, 648, 648, 648, 648, nil, 648, - 648, 648, nil, 648, 648, nil, 648, 648, 648, 765, - 765, 765, 765, 765, 765, 765, 765, 765, 765, 765, - nil, 765, 765, nil, nil, 765, 765, nil, 648, nil, - nil, 648, nil, nil, 648, 648, nil, nil, 648, nil, - 648, 765, nil, 765, 648, 765, 765, nil, 765, 765, - 765, 765, 765, 648, 765, nil, nil, nil, 648, 648, - 648, 648, nil, 648, 648, 648, 648, nil, nil, nil, - nil, 648, 648, nil, 765, nil, nil, nil, nil, 648, - nil, 648, 648, 648, 653, 653, 653, 653, 653, 653, - nil, nil, nil, 653, 653, nil, nil, nil, 653, nil, - 653, 653, 653, 653, 653, 653, 653, nil, nil, nil, - nil, nil, 653, 653, 653, 653, 653, 653, 653, nil, - nil, 653, nil, nil, nil, nil, nil, 653, 653, 653, - 653, 653, 653, 653, 653, 653, 653, 653, 653, nil, - 653, 653, 653, nil, 653, 653, nil, 653, 653, 653, - 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, - 767, nil, 767, 767, nil, nil, 767, 767, nil, 653, - nil, nil, 653, nil, nil, 653, 653, nil, nil, 653, - nil, 653, 767, nil, 767, 653, 767, 767, nil, 767, - 767, 767, 767, 767, 653, 767, nil, nil, nil, 653, - 653, 653, 653, nil, 653, 653, 653, 653, nil, nil, - nil, nil, 653, 653, nil, 767, nil, nil, nil, nil, - 653, nil, 653, 653, 653, 654, 654, 654, 654, 654, - 654, nil, nil, nil, 654, 654, nil, nil, nil, 654, - nil, 654, 654, 654, 654, 654, 654, 654, nil, nil, - nil, nil, nil, 654, 654, 654, 654, 654, 654, 654, - nil, nil, 654, nil, nil, nil, nil, nil, 654, 654, - 654, 654, 654, 654, 654, 654, 654, 654, 654, 654, - nil, 654, 654, 654, nil, 654, 654, nil, 654, 654, - 654, 769, 769, 769, 769, 769, 769, 769, 769, 769, - 769, 769, nil, 769, 769, nil, nil, 769, 769, nil, - 654, nil, nil, 654, nil, nil, 654, 654, nil, nil, - 654, nil, 654, 769, nil, 769, 654, 769, 769, nil, - 769, 769, 769, 769, 769, 654, 769, nil, nil, nil, - 654, 654, 654, 654, nil, 654, 654, 654, 654, nil, - nil, nil, nil, 654, 654, nil, 769, nil, nil, nil, - nil, 654, nil, 654, 654, 654, 730, 730, 730, 730, - 730, 730, nil, nil, nil, 730, 730, nil, nil, nil, - 730, nil, 730, 730, 730, 730, 730, 730, 730, nil, - nil, nil, nil, nil, 730, 730, 730, 730, 730, 730, - 730, nil, nil, 730, nil, nil, nil, nil, nil, 730, - 730, 730, 730, 730, 730, 730, 730, 730, 730, 730, - 730, nil, 730, 730, 730, nil, 730, 730, nil, 730, - 730, 730, 858, 858, 858, 858, 858, 858, 858, 858, - 858, 858, 858, nil, 858, 858, nil, nil, 858, 858, - nil, 730, nil, nil, 730, nil, nil, 730, 730, nil, - nil, 730, nil, 730, 858, nil, 858, 730, 858, 858, - nil, 858, 858, 858, 858, 858, 730, 858, nil, nil, - nil, 730, 730, 730, 730, nil, 730, 730, 730, 730, - nil, nil, nil, nil, 730, 730, nil, 858, nil, nil, - nil, nil, 730, nil, 730, 730, 730, 735, 735, 735, - 735, 735, 735, nil, nil, nil, 735, 735, nil, nil, - nil, 735, nil, 735, 735, 735, 735, 735, 735, 735, - nil, nil, nil, nil, nil, 735, 735, 735, 735, 735, - 735, 735, nil, nil, 735, nil, nil, nil, nil, nil, - 735, 735, 735, 735, 735, 735, 735, 735, 735, 735, - 735, 735, nil, 735, 735, 735, nil, 735, 735, nil, - 735, 735, 735, 969, 969, 969, 969, 969, 969, 969, - 969, 969, 969, 969, nil, 969, 969, nil, nil, 969, - 969, nil, 735, nil, nil, 735, nil, nil, 735, 735, - nil, nil, 735, nil, 735, 969, nil, 969, 735, 969, - 969, nil, 969, 969, 969, 969, 969, 735, 969, nil, - nil, nil, 735, 735, 735, 735, nil, 735, 735, 735, - 735, nil, nil, nil, nil, 735, 735, nil, 969, nil, - nil, nil, nil, 735, nil, 735, 735, 735, 745, 745, - 745, 745, 745, 745, nil, nil, nil, 745, 745, nil, - nil, nil, 745, nil, 745, 745, 745, 745, 745, 745, - 745, nil, nil, nil, nil, nil, 745, 745, 745, 745, - 745, 745, 745, nil, nil, 745, nil, nil, nil, nil, - nil, 745, 745, 745, 745, 745, 745, 745, 745, 745, - 745, 745, 745, nil, 745, 745, 745, nil, 745, 745, - nil, 745, 745, 745, 447, 447, 447, 447, 447, 447, - 447, 447, 447, 447, 447, nil, 447, 447, nil, nil, - 447, 447, nil, 745, nil, nil, 745, nil, nil, 745, - 745, nil, nil, 745, nil, 745, 447, nil, 447, 745, - 447, 447, nil, 447, 447, 447, 447, 447, 745, 447, - nil, nil, nil, 745, 745, 745, 745, nil, 745, 745, - 745, 745, nil, nil, nil, nil, 745, 745, nil, nil, - nil, nil, nil, nil, 745, nil, 745, 745, 745, 793, - 793, 793, 793, 793, 793, nil, nil, nil, 793, 793, - nil, nil, nil, 793, nil, 793, 793, 793, 793, 793, - 793, 793, nil, nil, nil, nil, nil, 793, 793, 793, - 793, 793, 793, 793, nil, nil, 793, nil, nil, nil, - nil, nil, 793, 793, 793, 793, 793, 793, 793, 793, - 793, 793, 793, 793, nil, 793, 793, 793, nil, 793, - 793, nil, 793, 793, 793, 448, 448, 448, 448, 448, - 448, 448, 448, 448, 448, 448, nil, 448, 448, nil, - nil, 448, 448, nil, 793, nil, nil, 793, nil, nil, - 793, 793, nil, nil, 793, nil, 793, 448, nil, 448, - 793, 448, 448, nil, 448, 448, 448, 448, 448, 793, - 448, nil, nil, nil, 793, 793, 793, 793, nil, 793, - 793, 793, 793, nil, nil, nil, nil, 793, 793, nil, - nil, nil, nil, nil, nil, 793, nil, 793, 793, 793, - 806, 806, 806, 806, 806, 806, nil, nil, nil, 806, - 806, nil, nil, nil, 806, nil, 806, 806, 806, 806, - 806, 806, 806, nil, nil, nil, nil, nil, 806, 806, - 806, 806, 806, 806, 806, nil, 905, 806, 905, 905, - 905, nil, 905, 806, 806, 806, 806, 806, 806, 806, - 806, 806, 806, 806, 806, nil, 806, 806, 806, nil, - 806, 806, nil, 806, 806, 806, 458, 458, 458, 458, - 458, 458, 458, nil, 905, 458, 458, nil, nil, nil, - nil, nil, 458, 458, nil, 806, nil, nil, 806, nil, - nil, 806, 806, nil, nil, 806, nil, 806, 458, nil, - 458, 806, 458, 458, nil, 458, 458, 458, 458, 458, - 806, 458, nil, nil, nil, 806, 806, 806, 806, nil, - 806, 806, 806, 806, nil, nil, nil, nil, 806, 806, - nil, nil, nil, nil, nil, nil, 806, nil, 806, 806, - 806, 814, 814, 814, 814, 814, 814, nil, nil, nil, - 814, 814, nil, nil, nil, 814, nil, 814, 814, 814, - 814, 814, 814, 814, nil, nil, nil, nil, nil, 814, - 814, 814, 814, 814, 814, 814, nil, 957, 814, 957, - 957, 957, nil, 957, 814, 814, 814, 814, 814, 814, - 814, 814, 814, 814, 814, 814, nil, 814, 814, 814, - nil, 814, 814, nil, 814, 814, 814, 459, nil, nil, - 959, nil, 959, 959, 959, 957, 959, nil, nil, nil, - nil, nil, nil, 459, 459, nil, 814, nil, nil, 814, - nil, nil, 814, 814, nil, nil, 814, nil, 814, 459, - nil, 459, 814, 459, 459, nil, 459, 459, 959, nil, - 459, 814, 459, nil, nil, nil, 814, 814, 814, 814, - nil, 814, 814, 814, 814, nil, nil, nil, nil, 814, - 814, nil, nil, nil, nil, nil, nil, 814, nil, 814, - 814, 814, 815, 815, 815, 815, 815, 815, nil, nil, - nil, 815, 815, nil, nil, nil, 815, nil, 815, 815, - 815, 815, 815, 815, 815, nil, nil, nil, nil, nil, - 815, 815, 815, 815, 815, 815, 815, nil, 994, 815, - 994, 994, 994, nil, 994, 815, 815, 815, 815, 815, - 815, 815, 815, 815, 815, 815, 815, nil, 815, 815, - 815, nil, 815, 815, nil, 815, 815, 815, 460, nil, - nil, nil, nil, nil, nil, nil, 994, nil, nil, nil, - nil, nil, nil, nil, 460, 460, nil, 815, nil, nil, - 815, nil, nil, 815, 815, nil, nil, 815, nil, 815, - 460, nil, 460, 815, 460, 460, nil, 460, 460, nil, - nil, 460, 815, 460, nil, nil, nil, 815, 815, 815, - 815, nil, 815, 815, 815, 815, nil, nil, nil, nil, - 815, 815, nil, nil, nil, nil, nil, nil, 815, nil, - 815, 815, 815, 839, 839, 839, 839, 839, 839, nil, - nil, nil, 839, 839, nil, nil, nil, 839, nil, 839, - 839, 839, 839, 839, 839, 839, nil, nil, nil, nil, - nil, 839, 839, 839, 839, 839, 839, 839, nil, nil, - 839, nil, nil, nil, nil, nil, 839, 839, 839, 839, - 839, 839, 839, 839, 839, 839, 839, 839, nil, 839, - 839, 839, nil, 839, 839, nil, 839, 839, 839, 461, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 461, 461, nil, 839, nil, - nil, 839, nil, nil, 839, 839, nil, nil, 839, nil, - 839, 461, nil, 461, 839, 461, 461, nil, 461, 461, - nil, nil, 461, 839, 461, nil, nil, nil, 839, 839, - 839, 839, nil, 839, 839, 839, 839, nil, nil, nil, - nil, 839, 839, nil, nil, nil, nil, nil, nil, 839, - nil, 839, 839, 839, 840, 840, 840, 840, 840, 840, - nil, nil, nil, 840, 840, nil, nil, nil, 840, nil, - 840, 840, 840, 840, 840, 840, 840, nil, nil, nil, - nil, nil, 840, 840, 840, 840, 840, 840, 840, nil, - nil, 840, nil, nil, nil, nil, nil, 840, 840, 840, - 840, 840, 840, 840, 840, 840, 840, 840, 840, nil, - 840, 840, 840, nil, 840, 840, nil, 840, 840, 840, - 462, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 462, 462, nil, 840, - nil, nil, 840, nil, nil, 840, 840, nil, nil, 840, - nil, 840, 462, nil, 462, 840, 462, 462, nil, 462, - 462, nil, nil, 462, 840, 462, nil, nil, nil, 840, - 840, 840, 840, nil, 840, 840, 840, 840, nil, nil, - nil, nil, 840, 840, nil, nil, nil, nil, nil, nil, - 840, nil, 840, 840, 840, 843, 843, 843, 843, 843, - 843, nil, nil, nil, 843, 843, nil, nil, nil, 843, - nil, 843, 843, 843, 843, 843, 843, 843, nil, nil, - nil, nil, nil, 843, 843, 843, 843, 843, 843, 843, - nil, nil, 843, nil, nil, nil, nil, nil, 843, 843, - 843, 843, 843, 843, 843, 843, 843, 843, 843, 843, - nil, 843, 843, 843, nil, 843, 843, nil, 843, 843, - 843, 463, 463, 463, 463, 463, 463, 463, nil, nil, - 463, 463, nil, nil, nil, nil, nil, 463, 463, nil, - 843, nil, nil, 843, nil, nil, 843, 843, nil, nil, - 843, nil, 843, 463, nil, 463, 843, 463, 463, nil, - 463, 463, 463, 463, 463, 843, 463, nil, nil, nil, - 843, 843, 843, 843, nil, 843, 843, 843, 843, nil, - nil, nil, nil, 843, 843, nil, nil, nil, nil, nil, - nil, 843, nil, 843, 843, 843, 849, 849, 849, 849, - 849, 849, nil, nil, nil, 849, 849, nil, nil, nil, - 849, nil, 849, 849, 849, 849, 849, 849, 849, nil, - nil, nil, nil, nil, 849, 849, 849, 849, 849, 849, - 849, nil, nil, 849, nil, nil, nil, nil, nil, 849, - 849, 849, 849, 849, 849, 849, 849, 849, 849, 849, - 849, nil, 849, 849, 849, nil, 849, 849, nil, 849, - 849, 849, 464, 464, 464, 464, 464, 464, 464, nil, - nil, 464, 464, nil, nil, nil, nil, nil, 464, 464, - nil, 849, nil, nil, 849, nil, nil, 849, 849, nil, - nil, 849, nil, 849, 464, nil, 464, 849, 464, 464, - nil, 464, 464, 464, 464, 464, 849, 464, nil, nil, - nil, 849, 849, 849, 849, nil, 849, 849, 849, 849, - nil, nil, nil, nil, 849, 849, nil, nil, nil, nil, - nil, nil, 849, nil, 849, 849, 849, 882, 882, 882, - 882, 882, 882, nil, nil, nil, 882, 882, nil, nil, - nil, 882, nil, 882, 882, 882, 882, 882, 882, 882, - nil, nil, nil, nil, nil, 882, 882, 882, 882, 882, - 882, 882, nil, nil, 882, nil, nil, nil, nil, nil, - 882, 882, 882, 882, 882, 882, 882, 882, 882, 882, - 882, 882, nil, 882, 882, 882, nil, 882, 882, nil, - 882, 882, 882, 465, 465, 465, 465, 465, 465, 465, - nil, nil, 465, 465, nil, nil, nil, nil, nil, 465, - 465, nil, 882, nil, nil, 882, nil, nil, 882, 882, - nil, nil, 882, nil, 882, 465, nil, 465, 882, 465, - 465, nil, 465, 465, 465, 465, 465, 882, 465, nil, - nil, nil, 882, 882, 882, 882, nil, 882, 882, 882, - 882, nil, nil, nil, nil, 882, 882, nil, nil, nil, - nil, nil, nil, 882, nil, 882, 882, 882, 943, 943, - 943, 943, 943, 943, nil, nil, nil, 943, 943, nil, - nil, nil, 943, nil, 943, 943, 943, 943, 943, 943, - 943, nil, nil, nil, nil, nil, 943, 943, 943, 943, - 943, 943, 943, nil, nil, 943, nil, nil, nil, nil, - nil, 943, 943, 943, 943, 943, 943, 943, 943, 943, - 943, 943, 943, nil, 943, 943, 943, nil, 943, 943, - nil, 943, 943, 943, 466, 466, 466, 466, 466, 466, - 466, nil, nil, 466, 466, nil, nil, nil, nil, nil, - 466, 466, nil, 943, nil, nil, 943, nil, nil, 943, - 943, nil, nil, 943, nil, 943, 466, nil, 466, 943, - 466, 466, nil, 466, 466, 466, 466, 466, 943, 466, - nil, nil, nil, 943, 943, 943, 943, nil, 943, 943, - 943, 943, nil, nil, nil, nil, 943, 943, nil, nil, - nil, nil, nil, nil, 943, nil, 943, 943, 943, 960, - 960, 960, 960, 960, 960, nil, nil, nil, 960, 960, - nil, nil, nil, 960, nil, 960, 960, 960, 960, 960, - 960, 960, nil, nil, nil, nil, nil, 960, 960, 960, - 960, 960, 960, 960, nil, nil, 960, nil, nil, nil, - nil, nil, 960, 960, 960, 960, 960, 960, 960, 960, - 960, 960, 960, 960, nil, 960, 960, 960, nil, 960, - 960, nil, 960, 960, 960, 467, 467, 467, 467, 467, - 467, 467, nil, nil, 467, 467, nil, nil, nil, nil, - nil, 467, 467, nil, 960, nil, nil, 960, nil, nil, - 960, 960, nil, nil, 960, nil, 960, 467, nil, 467, - 960, 467, 467, nil, 467, 467, 467, 467, 467, 960, - 467, nil, nil, nil, 960, 960, 960, 960, nil, 960, - 960, 960, 960, nil, nil, nil, nil, 960, 960, nil, - nil, nil, nil, nil, nil, 960, nil, 960, 960, 960, - 966, 966, 966, 966, 966, 966, nil, nil, nil, 966, - 966, nil, nil, nil, 966, nil, 966, 966, 966, 966, - 966, 966, 966, nil, nil, nil, nil, nil, 966, 966, - 966, 966, 966, 966, 966, nil, nil, 966, nil, nil, - nil, nil, nil, 966, 966, 966, 966, 966, 966, 966, - 966, 966, 966, 966, 966, nil, 966, 966, 966, nil, - 966, 966, nil, 966, 966, 966, 470, 470, 470, 470, - 470, 470, 470, nil, nil, 470, 470, nil, nil, nil, - nil, nil, 470, 470, nil, 966, nil, nil, 966, nil, - nil, 966, 966, nil, nil, 966, nil, 966, 470, nil, - 470, 966, 470, 470, nil, 470, 470, 470, 470, 470, - 966, 470, nil, nil, nil, 966, 966, 966, 966, nil, - 966, 966, 966, 966, nil, nil, nil, nil, 966, 966, - nil, nil, nil, nil, nil, nil, 966, nil, 966, 966, - 966, 968, 968, 968, 968, 968, 968, nil, nil, nil, - 968, 968, nil, nil, nil, 968, nil, 968, 968, 968, - 968, 968, 968, 968, nil, nil, nil, nil, nil, 968, - 968, 968, 968, 968, 968, 968, nil, nil, 968, nil, - nil, nil, nil, nil, 968, 968, 968, 968, 968, 968, - 968, 968, 968, 968, 968, 968, nil, 968, 968, 968, - nil, 968, 968, nil, 968, 968, 968, 471, 471, 471, - 471, 471, 471, 471, 471, nil, 471, 471, nil, nil, - nil, nil, nil, 471, 471, nil, 968, nil, nil, 968, - nil, nil, 968, 968, nil, nil, 968, nil, 968, 471, - nil, 471, 968, 471, 471, nil, 471, 471, 471, 471, - 471, 968, 471, nil, nil, nil, 968, 968, 968, 968, - nil, 968, 968, 968, 968, nil, nil, nil, nil, 968, - 968, nil, nil, nil, nil, nil, nil, 968, nil, 968, - 968, 968, 5, 5, 5, 5, 5, nil, nil, nil, - 5, 5, nil, nil, nil, 5, nil, 5, 5, 5, - 5, 5, 5, 5, nil, nil, nil, nil, nil, 5, - 5, 5, 5, 5, 5, 5, nil, nil, 5, nil, - nil, nil, nil, nil, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, nil, 5, 5, 5, - nil, 5, 5, nil, 5, 5, 5, 455, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 455, 455, nil, 5, nil, nil, 5, - nil, nil, 5, 5, nil, nil, 5, nil, 5, 455, - nil, 455, 5, 455, 455, nil, 455, 455, nil, nil, - nil, 5, nil, nil, nil, nil, 5, 5, 5, 5, - nil, 5, 5, 5, 5, nil, nil, nil, nil, 5, - 5, nil, nil, nil, 20, 20, 20, 5, 20, 5, - 5, 5, 20, 20, nil, nil, nil, 20, nil, 20, - 20, 20, 20, 20, 20, 20, nil, nil, nil, nil, - nil, 20, 20, 20, 20, 20, 20, 20, nil, nil, - 20, nil, nil, nil, nil, nil, nil, 20, nil, nil, - 20, 20, 20, 20, 20, 20, 20, 20, nil, 20, - 20, 20, nil, 20, 20, nil, 20, 20, 20, 456, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 456, 456, nil, 20, nil, - nil, 20, nil, nil, 20, 20, nil, nil, 20, nil, - nil, 456, nil, 456, 20, 456, 456, nil, 456, 456, - nil, nil, nil, 20, nil, nil, nil, nil, 20, 20, - 20, 20, nil, 20, 20, 20, 20, nil, nil, nil, - nil, 20, 20, nil, nil, nil, 29, 29, 29, 20, - 29, 20, 20, 20, 29, 29, nil, nil, nil, 29, - nil, 29, 29, 29, 29, 29, 29, 29, nil, nil, - nil, nil, nil, 29, 29, 29, 29, 29, 29, 29, - nil, nil, 29, nil, nil, nil, nil, nil, nil, 29, - nil, nil, 29, 29, 29, 29, 29, 29, 29, 29, - 29, 29, 29, 29, nil, 29, 29, nil, 29, 29, - 29, 457, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 457, 457, nil, - 29, nil, nil, 29, nil, nil, 29, 29, nil, nil, - 29, nil, 29, 457, 29, nil, 29, 457, 457, 29, - 457, 457, nil, nil, nil, 29, nil, nil, nil, nil, - 29, 29, 29, 29, nil, 29, 29, 29, 29, nil, - nil, nil, nil, 29, 29, nil, nil, nil, 30, 30, - 30, 29, 30, 29, 29, 29, 30, 30, nil, nil, - nil, 30, nil, 30, 30, 30, 30, 30, 30, 30, - nil, nil, nil, nil, nil, 30, 30, 30, 30, 30, - 30, 30, nil, nil, 30, nil, nil, nil, nil, nil, - nil, 30, nil, nil, 30, 30, 30, 30, 30, 30, - 30, 30, 30, 30, 30, 30, nil, 30, 30, nil, - 30, 30, 30, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 30, nil, nil, 30, nil, nil, 30, 30, - nil, nil, 30, nil, 30, nil, 30, nil, 30, nil, - nil, 30, nil, nil, nil, nil, nil, 30, nil, nil, - nil, nil, 30, 30, 30, 30, nil, 30, 30, 30, - 30, nil, nil, nil, nil, 30, 30, nil, nil, nil, - 31, 31, 31, 30, 31, 30, 30, 30, 31, 31, - nil, nil, nil, 31, nil, 31, 31, 31, 31, 31, - 31, 31, nil, nil, nil, nil, nil, 31, 31, 31, - 31, 31, 31, 31, nil, nil, 31, nil, nil, nil, - nil, nil, nil, 31, nil, nil, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, nil, 31, - 31, nil, 31, 31, 31, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 31, nil, nil, 31, nil, nil, - 31, 31, nil, nil, 31, nil, 31, nil, 31, nil, - 31, nil, nil, 31, nil, nil, nil, nil, nil, 31, - nil, nil, nil, nil, 31, 31, 31, 31, nil, 31, - 31, 31, 31, nil, nil, nil, nil, 31, 31, nil, - nil, nil, 34, 34, 34, 31, 34, 31, 31, 31, - 34, 34, nil, nil, nil, 34, nil, 34, 34, 34, - 34, 34, 34, 34, nil, nil, nil, nil, nil, 34, - 34, 34, 34, 34, 34, 34, nil, nil, 34, nil, - nil, nil, nil, nil, nil, 34, nil, nil, 34, 34, - 34, 34, 34, 34, 34, 34, nil, 34, 34, 34, - nil, 34, 34, nil, nil, nil, 34, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 34, nil, nil, 34, - nil, nil, 34, 34, nil, nil, 34, nil, 34, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 34, 34, 34, 34, - nil, 34, 34, 34, 34, nil, nil, nil, nil, 34, - 34, nil, nil, nil, 35, 35, 35, 34, 35, 34, - 34, 34, 35, 35, nil, nil, nil, 35, nil, 35, - 35, 35, 35, 35, 35, 35, nil, nil, nil, nil, - nil, 35, 35, 35, 35, 35, 35, 35, nil, nil, - 35, nil, nil, nil, nil, nil, nil, 35, nil, nil, - 35, 35, 35, 35, 35, 35, 35, 35, nil, 35, - 35, 35, nil, 35, 35, nil, nil, nil, 35, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 35, nil, - nil, 35, nil, nil, 35, 35, nil, nil, 35, nil, - 697, nil, 697, 697, 697, 697, 697, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 697, nil, 35, 35, - 35, 35, nil, 35, 35, 35, 35, nil, nil, nil, - nil, 35, 35, nil, nil, nil, 35, nil, 697, 35, - nil, 35, 35, 35, 42, 42, 42, nil, 42, 697, - 697, nil, 42, 42, 697, nil, nil, 42, nil, 42, - 42, 42, 42, 42, 42, 42, nil, nil, nil, nil, - nil, 42, 42, 42, 42, 42, 42, 42, nil, nil, - 42, nil, nil, nil, nil, nil, nil, 42, nil, nil, - 42, 42, 42, 42, 42, 42, 42, 42, nil, 42, - 42, 42, nil, 42, 42, nil, 42, 42, 42, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 42, nil, - nil, 42, nil, nil, 42, 42, nil, nil, 42, nil, - nil, nil, nil, nil, 42, nil, nil, nil, nil, nil, - nil, nil, nil, 42, nil, nil, nil, nil, 42, 42, - 42, 42, nil, 42, 42, 42, 42, nil, nil, nil, - nil, 42, 42, nil, nil, nil, 43, 43, 43, 42, - 43, 42, 42, 42, 43, 43, nil, nil, nil, 43, - nil, 43, 43, 43, 43, 43, 43, 43, nil, nil, - nil, nil, nil, 43, 43, 43, 43, 43, 43, 43, - nil, nil, 43, nil, nil, nil, nil, nil, nil, 43, - nil, nil, 43, 43, 43, 43, 43, 43, 43, 43, - nil, 43, 43, 43, nil, 43, 43, nil, 43, 43, - 43, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 43, nil, nil, 43, nil, nil, 43, 43, nil, nil, - 43, nil, nil, nil, nil, nil, 43, nil, nil, nil, - nil, nil, nil, nil, nil, 43, nil, nil, nil, nil, - 43, 43, 43, 43, nil, 43, 43, 43, 43, nil, - nil, nil, nil, 43, 43, nil, nil, nil, 44, 44, - 44, 43, 44, 43, 43, 43, 44, 44, nil, nil, - nil, 44, nil, 44, 44, 44, 44, 44, 44, 44, - nil, nil, nil, nil, nil, 44, 44, 44, 44, 44, - 44, 44, nil, nil, 44, nil, nil, nil, nil, nil, - nil, 44, nil, nil, 44, 44, 44, 44, 44, 44, - 44, 44, nil, 44, 44, 44, nil, 44, 44, nil, - 44, 44, 44, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 44, nil, nil, 44, nil, nil, 44, 44, - nil, nil, 44, nil, nil, nil, nil, nil, 44, nil, - nil, nil, nil, nil, nil, nil, nil, 44, nil, nil, - nil, nil, 44, 44, 44, 44, nil, 44, 44, 44, - 44, nil, nil, nil, nil, 44, 44, nil, nil, nil, - 59, 59, 59, 44, 59, 44, 44, 44, 59, 59, - nil, nil, nil, 59, nil, 59, 59, 59, 59, 59, - 59, 59, nil, nil, nil, nil, nil, 59, 59, 59, - 59, 59, 59, 59, nil, nil, 59, nil, nil, nil, - nil, nil, nil, 59, nil, nil, 59, 59, 59, 59, - 59, 59, 59, 59, 59, 59, 59, 59, nil, 59, - 59, nil, 59, 59, 59, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 59, nil, nil, 59, nil, nil, - 59, 59, nil, nil, 59, nil, 59, nil, nil, nil, - 59, nil, nil, 59, nil, nil, nil, nil, nil, 59, - nil, nil, nil, nil, 59, 59, 59, 59, nil, 59, - 59, 59, 59, nil, nil, nil, nil, 59, 59, nil, - nil, nil, 60, 60, 60, 59, 60, 59, 59, 59, - 60, 60, nil, nil, nil, 60, nil, 60, 60, 60, - 60, 60, 60, 60, nil, nil, nil, nil, nil, 60, - 60, 60, 60, 60, 60, 60, nil, nil, 60, nil, - nil, nil, nil, nil, nil, 60, nil, nil, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - nil, 60, 60, nil, 60, 60, 60, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 60, nil, nil, 60, - nil, nil, 60, 60, nil, nil, 60, nil, nil, nil, - nil, nil, 60, nil, nil, 60, nil, nil, nil, nil, - nil, 60, nil, nil, nil, nil, 60, 60, 60, 60, - nil, 60, 60, 60, 60, nil, nil, nil, nil, 60, - 60, nil, nil, nil, 63, 63, 63, 60, 63, 60, - 60, 60, 63, 63, nil, nil, nil, 63, nil, 63, - 63, 63, 63, 63, 63, 63, nil, nil, nil, nil, - nil, 63, 63, 63, 63, 63, 63, 63, nil, nil, - 63, nil, nil, nil, nil, nil, nil, 63, nil, nil, - 63, 63, 63, 63, 63, 63, 63, 63, nil, 63, - 63, 63, nil, 63, 63, nil, 63, 63, 63, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 63, nil, - nil, 63, nil, nil, 63, 63, nil, nil, 63, nil, - nil, nil, nil, nil, 63, nil, nil, nil, nil, nil, - nil, nil, nil, 63, nil, nil, nil, nil, 63, 63, - 63, 63, nil, 63, 63, 63, 63, nil, nil, nil, - nil, 63, 63, nil, nil, nil, 64, 64, 64, 63, - 64, 63, 63, 63, 64, 64, nil, nil, nil, 64, - nil, 64, 64, 64, 64, 64, 64, 64, nil, nil, - nil, nil, nil, 64, 64, 64, 64, 64, 64, 64, - nil, nil, 64, nil, nil, nil, nil, nil, nil, 64, - nil, nil, 64, 64, 64, 64, 64, 64, 64, 64, - nil, 64, 64, 64, nil, 64, 64, nil, 64, 64, - 64, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 64, nil, nil, 64, nil, nil, 64, 64, nil, nil, - 64, nil, nil, nil, nil, nil, 64, nil, nil, nil, - nil, nil, nil, nil, nil, 64, nil, nil, nil, nil, - 64, 64, 64, 64, nil, 64, 64, 64, 64, nil, - nil, nil, nil, 64, 64, nil, nil, nil, 67, 67, - 67, 64, 67, 64, 64, 64, 67, 67, nil, nil, - nil, 67, nil, 67, 67, 67, 67, 67, 67, 67, - nil, nil, nil, nil, nil, 67, 67, 67, 67, 67, - 67, 67, nil, nil, 67, nil, nil, nil, nil, nil, - nil, 67, nil, nil, 67, 67, 67, 67, 67, 67, - 67, 67, nil, 67, 67, 67, nil, 67, 67, nil, - 67, 67, 67, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 67, nil, nil, 67, nil, nil, 67, 67, - nil, nil, 67, nil, nil, nil, nil, nil, 67, nil, - nil, nil, nil, nil, nil, nil, nil, 67, nil, nil, - nil, nil, 67, 67, 67, 67, nil, 67, 67, 67, - 67, nil, nil, nil, nil, 67, 67, 67, nil, nil, - nil, nil, 67, 67, nil, 67, 67, 67, 68, 68, - 68, nil, 68, nil, nil, nil, 68, 68, nil, nil, - nil, 68, nil, 68, 68, 68, 68, 68, 68, 68, - nil, nil, nil, nil, nil, 68, 68, 68, 68, 68, - 68, 68, nil, nil, 68, nil, nil, nil, nil, nil, - nil, 68, nil, nil, 68, 68, 68, 68, 68, 68, - 68, 68, nil, 68, 68, 68, nil, 68, 68, nil, - nil, nil, 68, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 68, nil, nil, 68, nil, nil, 68, 68, - nil, nil, 68, nil, 68, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 68, 68, 68, 68, nil, 68, 68, 68, - 68, nil, nil, nil, nil, 68, 68, nil, nil, nil, - 69, 69, 69, 68, 69, 68, 68, 68, 69, 69, - nil, nil, nil, 69, nil, 69, 69, 69, 69, 69, - 69, 69, nil, nil, nil, nil, nil, 69, 69, 69, - 69, 69, 69, 69, nil, nil, 69, nil, nil, nil, - nil, nil, nil, 69, nil, nil, 69, 69, 69, 69, - 69, 69, 69, 69, nil, 69, 69, 69, nil, 69, - 69, nil, nil, nil, 69, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 69, nil, nil, 69, nil, nil, 69, nil, nil, - 69, 69, nil, nil, 69, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 69, 69, 69, 69, nil, 69, - 69, 69, 69, nil, nil, nil, nil, 69, 69, nil, - nil, nil, 70, 70, 70, 69, 70, 69, 69, 69, - 70, 70, nil, nil, nil, 70, nil, 70, 70, 70, - 70, 70, 70, 70, nil, nil, nil, nil, nil, 70, - 70, 70, 70, 70, 70, 70, nil, nil, 70, nil, - nil, nil, nil, nil, nil, 70, nil, nil, 70, 70, - 70, 70, 70, 70, 70, 70, nil, 70, 70, 70, - nil, 70, 70, nil, nil, nil, 70, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 70, nil, nil, 70, - nil, nil, 70, 70, nil, nil, 70, nil, 869, nil, - 869, 869, 869, 869, 869, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 869, nil, 70, 70, 70, 70, - nil, 70, 70, 70, 70, nil, nil, nil, nil, 70, - 70, nil, nil, nil, nil, nil, 869, 70, nil, 70, - 70, 70, 111, 111, 111, 111, 111, 869, 869, nil, - 111, 111, 869, nil, nil, 111, nil, 111, 111, 111, - 111, 111, 111, 111, nil, nil, nil, nil, nil, 111, - 111, 111, 111, 111, 111, 111, nil, nil, 111, nil, - nil, nil, nil, nil, 111, 111, 111, 111, 111, 111, - 111, 111, 111, 111, 111, 111, nil, 111, 111, 111, - nil, 111, 111, nil, 111, 111, 111, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 111, nil, nil, 111, - nil, nil, 111, 111, nil, nil, 111, nil, 111, nil, - nil, nil, 111, nil, nil, nil, nil, nil, nil, nil, - nil, 111, nil, nil, nil, nil, 111, 111, 111, 111, - nil, 111, 111, 111, 111, nil, nil, nil, nil, 111, - 111, nil, nil, nil, nil, nil, 111, 111, nil, 111, - 111, 111, 116, 116, 116, nil, 116, nil, nil, nil, - 116, 116, nil, nil, nil, 116, nil, 116, 116, 116, - 116, 116, 116, 116, nil, nil, nil, nil, nil, 116, - 116, 116, 116, 116, 116, 116, nil, nil, 116, nil, - nil, nil, nil, nil, nil, 116, nil, nil, 116, 116, - 116, 116, 116, 116, 116, 116, nil, 116, 116, 116, - nil, 116, 116, nil, 116, 116, 116, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 116, nil, nil, 116, - nil, nil, 116, 116, nil, nil, 116, nil, nil, nil, - nil, nil, 116, nil, nil, nil, nil, nil, nil, nil, - nil, 116, nil, nil, nil, nil, 116, 116, 116, 116, - nil, 116, 116, 116, 116, nil, nil, nil, nil, 116, - 116, nil, nil, nil, 117, 117, 117, 116, 117, 116, - 116, 116, 117, 117, nil, nil, nil, 117, nil, 117, - 117, 117, 117, 117, 117, 117, nil, nil, nil, nil, - nil, 117, 117, 117, 117, 117, 117, 117, nil, nil, - 117, nil, nil, nil, nil, nil, nil, 117, nil, nil, - 117, 117, 117, 117, 117, 117, 117, 117, nil, 117, - 117, 117, nil, 117, 117, nil, 117, 117, 117, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 117, nil, - nil, 117, nil, nil, 117, 117, nil, nil, 117, nil, - nil, nil, nil, nil, 117, nil, nil, nil, nil, nil, - nil, nil, nil, 117, nil, nil, nil, nil, 117, 117, - 117, 117, nil, 117, 117, 117, 117, nil, nil, nil, - nil, 117, 117, nil, nil, nil, 118, 118, 118, 117, - 118, 117, 117, 117, 118, 118, nil, nil, nil, 118, - nil, 118, 118, 118, 118, 118, 118, 118, nil, nil, - nil, nil, nil, 118, 118, 118, 118, 118, 118, 118, - nil, nil, 118, nil, nil, nil, nil, nil, nil, 118, - nil, nil, 118, 118, 118, 118, 118, 118, 118, 118, - nil, 118, 118, 118, nil, 118, 118, nil, 118, 118, - 118, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 118, nil, nil, 118, nil, nil, 118, 118, nil, nil, - 118, nil, nil, nil, nil, nil, 118, nil, nil, nil, - nil, nil, nil, nil, nil, 118, nil, nil, nil, nil, - 118, 118, 118, 118, nil, 118, 118, 118, 118, nil, - nil, nil, nil, 118, 118, nil, nil, nil, 119, 119, - 119, 118, 119, 118, 118, 118, 119, 119, nil, nil, - nil, 119, nil, 119, 119, 119, 119, 119, 119, 119, - nil, nil, nil, nil, nil, 119, 119, 119, 119, 119, - 119, 119, nil, nil, 119, nil, nil, nil, nil, nil, - nil, 119, nil, nil, 119, 119, 119, 119, 119, 119, - 119, 119, nil, 119, 119, 119, nil, 119, 119, nil, - 119, 119, 119, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 119, nil, nil, 119, nil, nil, 119, 119, - nil, nil, 119, nil, nil, nil, nil, nil, 119, nil, - nil, nil, nil, nil, nil, nil, nil, 119, nil, nil, - nil, nil, 119, 119, 119, 119, nil, 119, 119, 119, - 119, nil, nil, nil, nil, 119, 119, nil, nil, nil, - nil, nil, nil, 119, nil, 119, 119, 119, 120, 120, - 120, 120, 120, nil, nil, nil, 120, 120, nil, nil, - nil, 120, nil, 120, 120, 120, 120, 120, 120, 120, - nil, nil, nil, nil, nil, 120, 120, 120, 120, 120, - 120, 120, nil, nil, 120, nil, nil, nil, nil, nil, - 120, 120, nil, 120, 120, 120, 120, 120, 120, 120, - 120, 120, nil, 120, 120, 120, nil, 120, 120, nil, - 120, 120, 120, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 120, nil, nil, 120, nil, nil, 120, 120, - nil, nil, 120, nil, 120, nil, nil, nil, 120, nil, - nil, nil, nil, nil, nil, nil, nil, 120, nil, nil, - nil, nil, 120, 120, 120, 120, nil, 120, 120, 120, - 120, nil, nil, nil, nil, 120, 120, nil, nil, nil, - 207, 207, 207, 120, 207, 120, 120, 120, 207, 207, - nil, nil, nil, 207, nil, 207, 207, 207, 207, 207, - 207, 207, nil, nil, nil, nil, nil, 207, 207, 207, - 207, 207, 207, 207, nil, nil, 207, nil, nil, nil, - nil, nil, nil, 207, nil, nil, 207, 207, 207, 207, - 207, 207, 207, 207, nil, 207, 207, 207, nil, 207, - 207, nil, 207, 207, 207, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 207, nil, nil, 207, nil, nil, - 207, 207, nil, nil, 207, nil, 207, nil, nil, nil, - 207, nil, nil, nil, nil, nil, nil, nil, nil, 207, - nil, nil, nil, nil, 207, 207, 207, 207, nil, 207, - 207, 207, 207, nil, nil, nil, nil, 207, 207, nil, - nil, nil, 208, 208, 208, 207, 208, 207, 207, 207, - 208, 208, nil, nil, nil, 208, nil, 208, 208, 208, - 208, 208, 208, 208, nil, nil, nil, nil, nil, 208, - 208, 208, 208, 208, 208, 208, nil, nil, 208, nil, - nil, nil, nil, nil, nil, 208, nil, nil, 208, 208, - 208, 208, 208, 208, 208, 208, nil, 208, 208, 208, - nil, 208, 208, nil, 208, 208, 208, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 208, nil, nil, 208, - nil, nil, 208, 208, nil, nil, 208, nil, nil, nil, - nil, nil, 208, nil, nil, nil, nil, nil, nil, nil, - nil, 208, nil, nil, nil, nil, 208, 208, 208, 208, - nil, 208, 208, 208, 208, nil, nil, nil, nil, 208, - 208, nil, nil, nil, 209, 209, 209, 208, 209, 208, - 208, 208, 209, 209, nil, nil, nil, 209, nil, 209, - 209, 209, 209, 209, 209, 209, nil, nil, nil, nil, - nil, 209, 209, 209, 209, 209, 209, 209, nil, nil, - 209, nil, nil, nil, nil, nil, nil, 209, nil, nil, - 209, 209, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, nil, 209, 209, nil, 209, 209, 209, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 209, nil, - nil, 209, nil, nil, 209, 209, nil, nil, 209, nil, - 209, nil, 209, nil, 209, nil, nil, 209, nil, nil, - nil, nil, nil, 209, nil, nil, nil, nil, 209, 209, - 209, 209, nil, 209, 209, 209, 209, nil, nil, nil, - nil, 209, 209, nil, nil, nil, 212, 212, 212, 209, - 212, 209, 209, 209, 212, 212, nil, nil, nil, 212, - nil, 212, 212, 212, 212, 212, 212, 212, nil, nil, - nil, nil, nil, 212, 212, 212, 212, 212, 212, 212, - nil, nil, 212, nil, nil, nil, nil, nil, nil, 212, - nil, nil, 212, 212, 212, 212, 212, 212, 212, 212, - nil, 212, 212, 212, nil, 212, 212, nil, 212, 212, - 212, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 212, nil, nil, 212, nil, nil, 212, 212, nil, nil, - 212, nil, nil, nil, nil, nil, 212, nil, nil, nil, - nil, nil, nil, nil, nil, 212, nil, nil, nil, nil, - 212, 212, 212, 212, nil, 212, 212, 212, 212, nil, - nil, nil, nil, 212, 212, nil, nil, nil, 213, 213, - 213, 212, 213, 212, 212, 212, 213, 213, nil, nil, - nil, 213, nil, 213, 213, 213, 213, 213, 213, 213, - nil, nil, nil, nil, nil, 213, 213, 213, 213, 213, - 213, 213, nil, nil, 213, nil, nil, nil, nil, nil, - nil, 213, nil, nil, 213, 213, 213, 213, 213, 213, - 213, 213, nil, 213, 213, 213, nil, 213, 213, nil, - 213, 213, 213, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 213, nil, nil, 213, nil, nil, 213, 213, - nil, nil, 213, nil, 213, nil, nil, nil, 213, nil, - nil, nil, nil, nil, nil, nil, nil, 213, nil, nil, - nil, nil, 213, 213, 213, 213, nil, 213, 213, 213, - 213, nil, nil, nil, nil, 213, 213, nil, nil, nil, - 214, 214, 214, 213, 214, 213, 213, 213, 214, 214, - nil, nil, nil, 214, nil, 214, 214, 214, 214, 214, - 214, 214, nil, nil, nil, nil, nil, 214, 214, 214, - 214, 214, 214, 214, nil, nil, 214, nil, nil, nil, - nil, nil, nil, 214, nil, nil, 214, 214, 214, 214, - 214, 214, 214, 214, nil, 214, 214, 214, nil, 214, - 214, nil, 214, 214, 214, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 214, nil, nil, 214, nil, nil, - 214, 214, nil, nil, 214, nil, nil, nil, nil, nil, - 214, nil, nil, nil, nil, nil, nil, nil, nil, 214, - nil, nil, nil, nil, 214, 214, 214, 214, nil, 214, - 214, 214, 214, nil, nil, nil, nil, 214, 214, nil, - nil, nil, 215, 215, 215, 214, 215, 214, 214, 214, - 215, 215, nil, nil, nil, 215, nil, 215, 215, 215, - 215, 215, 215, 215, nil, nil, nil, nil, nil, 215, - 215, 215, 215, 215, 215, 215, nil, nil, 215, nil, - nil, nil, nil, nil, nil, 215, nil, nil, 215, 215, - 215, 215, 215, 215, 215, 215, nil, 215, 215, 215, - nil, 215, 215, nil, 215, 215, 215, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 215, nil, nil, 215, - nil, nil, 215, 215, nil, nil, 215, nil, nil, nil, - nil, nil, 215, nil, nil, nil, nil, nil, nil, nil, - nil, 215, nil, nil, nil, nil, 215, 215, 215, 215, - nil, 215, 215, 215, 215, nil, nil, nil, nil, 215, - 215, nil, nil, nil, 216, 216, 216, 215, 216, 215, - 215, 215, 216, 216, nil, nil, nil, 216, nil, 216, - 216, 216, 216, 216, 216, 216, nil, nil, nil, nil, - nil, 216, 216, 216, 216, 216, 216, 216, nil, nil, - 216, nil, nil, nil, nil, nil, nil, 216, nil, nil, - 216, 216, 216, 216, 216, 216, 216, 216, nil, 216, - 216, 216, nil, 216, 216, nil, 216, 216, 216, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 216, nil, - nil, 216, nil, nil, 216, 216, nil, nil, 216, nil, - nil, nil, nil, nil, 216, nil, nil, nil, nil, nil, - nil, nil, nil, 216, nil, nil, nil, nil, 216, 216, - 216, 216, nil, 216, 216, 216, 216, nil, nil, nil, - nil, 216, 216, nil, nil, nil, 217, 217, 217, 216, - 217, 216, 216, 216, 217, 217, nil, nil, nil, 217, - nil, 217, 217, 217, 217, 217, 217, 217, nil, nil, - nil, nil, nil, 217, 217, 217, 217, 217, 217, 217, - nil, nil, 217, nil, nil, nil, nil, nil, nil, 217, - nil, nil, 217, 217, 217, 217, 217, 217, 217, 217, - nil, 217, 217, 217, nil, 217, 217, nil, 217, 217, - 217, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 217, nil, nil, 217, nil, nil, 217, 217, nil, nil, - 217, nil, nil, nil, nil, nil, 217, nil, nil, nil, - nil, nil, nil, nil, nil, 217, nil, nil, nil, nil, - 217, 217, 217, 217, nil, 217, 217, 217, 217, nil, - nil, nil, nil, 217, 217, 217, nil, nil, 228, 228, - 228, 217, 228, 217, 217, 217, 228, 228, nil, nil, - nil, 228, nil, 228, 228, 228, 228, 228, 228, 228, - nil, nil, nil, nil, nil, 228, 228, 228, 228, 228, - 228, 228, nil, nil, 228, nil, nil, nil, nil, nil, - nil, 228, nil, nil, 228, 228, 228, 228, 228, 228, - 228, 228, nil, 228, 228, 228, nil, 228, 228, nil, - 228, 228, 228, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 228, nil, nil, 228, nil, nil, 228, 228, - nil, nil, 228, nil, nil, nil, nil, nil, 228, nil, - nil, nil, nil, nil, nil, nil, nil, 228, nil, nil, - nil, nil, 228, 228, 228, 228, nil, 228, 228, 228, - 228, nil, nil, nil, nil, 228, 228, nil, nil, nil, - 231, 231, 231, 228, 231, 228, 228, 228, 231, 231, - nil, nil, nil, 231, nil, 231, 231, 231, 231, 231, - 231, 231, nil, nil, nil, nil, nil, 231, 231, 231, - 231, 231, 231, 231, nil, nil, 231, nil, nil, nil, - nil, nil, nil, 231, nil, nil, 231, 231, 231, 231, - 231, 231, 231, 231, nil, 231, 231, 231, nil, 231, - 231, nil, 231, 231, 231, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 231, nil, nil, 231, nil, nil, - 231, 231, nil, nil, 231, nil, nil, nil, nil, nil, - 231, nil, nil, nil, nil, nil, nil, nil, nil, 231, - nil, nil, nil, nil, 231, 231, 231, 231, nil, 231, - 231, 231, 231, nil, nil, nil, nil, 231, 231, nil, - nil, nil, 232, 232, 232, 231, 232, 231, 231, 231, - 232, 232, nil, nil, nil, 232, nil, 232, 232, 232, - 232, 232, 232, 232, nil, nil, nil, nil, nil, 232, - 232, 232, 232, 232, 232, 232, nil, nil, 232, nil, - nil, nil, nil, nil, nil, 232, nil, nil, 232, 232, - 232, 232, 232, 232, 232, 232, nil, 232, 232, 232, - nil, 232, 232, nil, 232, 232, 232, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 232, nil, nil, 232, - nil, nil, 232, 232, nil, nil, 232, nil, nil, nil, - nil, nil, 232, nil, nil, nil, nil, nil, nil, nil, - nil, 232, nil, nil, nil, nil, 232, 232, 232, 232, - nil, 232, 232, 232, 232, nil, nil, nil, nil, 232, - 232, nil, nil, nil, 233, 233, 233, 232, 233, 232, - 232, 232, 233, 233, nil, nil, nil, 233, nil, 233, - 233, 233, 233, 233, 233, 233, nil, nil, nil, nil, - nil, 233, 233, 233, 233, 233, 233, 233, nil, nil, - 233, nil, nil, nil, nil, nil, nil, 233, nil, nil, - 233, 233, 233, 233, 233, 233, 233, 233, nil, 233, - 233, 233, nil, 233, 233, nil, 233, 233, 233, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 233, nil, - nil, 233, nil, nil, 233, 233, nil, nil, 233, nil, - nil, nil, nil, nil, 233, nil, nil, nil, nil, nil, - nil, nil, nil, 233, nil, nil, nil, nil, 233, 233, - 233, 233, nil, 233, 233, 233, 233, nil, nil, nil, - nil, 233, 233, nil, nil, nil, 234, 234, 234, 233, - 234, 233, 233, 233, 234, 234, nil, nil, nil, 234, - nil, 234, 234, 234, 234, 234, 234, 234, nil, nil, - nil, nil, nil, 234, 234, 234, 234, 234, 234, 234, - nil, nil, 234, nil, nil, nil, nil, nil, nil, 234, - nil, nil, 234, 234, 234, 234, 234, 234, 234, 234, - nil, 234, 234, 234, nil, 234, 234, nil, 234, 234, - 234, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 234, nil, nil, 234, nil, nil, 234, 234, nil, nil, - 234, nil, nil, nil, nil, nil, 234, nil, nil, nil, - nil, nil, nil, nil, nil, 234, nil, nil, nil, nil, - 234, 234, 234, 234, nil, 234, 234, 234, 234, nil, - nil, nil, nil, 234, 234, nil, nil, nil, 235, 235, - 235, 234, 235, 234, 234, 234, 235, 235, nil, nil, - nil, 235, nil, 235, 235, 235, 235, 235, 235, 235, - nil, nil, nil, nil, nil, 235, 235, 235, 235, 235, - 235, 235, nil, nil, 235, nil, nil, nil, nil, nil, - nil, 235, nil, nil, 235, 235, 235, 235, 235, 235, - 235, 235, nil, 235, 235, 235, nil, 235, 235, nil, - 235, 235, 235, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 235, nil, nil, 235, nil, nil, 235, 235, - nil, nil, 235, nil, nil, nil, nil, nil, 235, nil, - nil, nil, nil, nil, nil, nil, nil, 235, nil, nil, - nil, nil, 235, 235, 235, 235, nil, 235, 235, 235, - 235, nil, nil, nil, nil, 235, 235, nil, nil, nil, - 236, 236, 236, 235, 236, 235, 235, 235, 236, 236, - nil, nil, nil, 236, nil, 236, 236, 236, 236, 236, - 236, 236, nil, nil, nil, nil, nil, 236, 236, 236, - 236, 236, 236, 236, nil, nil, 236, nil, nil, nil, - nil, nil, nil, 236, nil, nil, 236, 236, 236, 236, - 236, 236, 236, 236, nil, 236, 236, 236, nil, 236, - 236, nil, 236, 236, 236, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 236, nil, nil, 236, nil, nil, - 236, 236, nil, nil, 236, nil, nil, nil, nil, nil, - 236, nil, nil, nil, nil, nil, nil, nil, nil, 236, - nil, nil, nil, nil, 236, 236, 236, 236, nil, 236, - 236, 236, 236, nil, nil, nil, nil, 236, 236, nil, - nil, nil, 237, 237, 237, 236, 237, 236, 236, 236, - 237, 237, nil, nil, nil, 237, nil, 237, 237, 237, - 237, 237, 237, 237, nil, nil, nil, nil, nil, 237, - 237, 237, 237, 237, 237, 237, nil, nil, 237, nil, - nil, nil, nil, nil, nil, 237, nil, nil, 237, 237, - 237, 237, 237, 237, 237, 237, nil, 237, 237, 237, - nil, 237, 237, nil, 237, 237, 237, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 237, nil, nil, 237, - nil, nil, 237, 237, nil, nil, 237, nil, nil, nil, - nil, nil, 237, nil, nil, nil, nil, nil, nil, nil, - nil, 237, nil, nil, nil, nil, 237, 237, 237, 237, - nil, 237, 237, 237, 237, nil, nil, nil, nil, 237, - 237, nil, nil, nil, 238, 238, 238, 237, 238, 237, - 237, 237, 238, 238, nil, nil, nil, 238, nil, 238, - 238, 238, 238, 238, 238, 238, nil, nil, nil, nil, - nil, 238, 238, 238, 238, 238, 238, 238, nil, nil, - 238, nil, nil, nil, nil, nil, nil, 238, nil, nil, - 238, 238, 238, 238, 238, 238, 238, 238, nil, 238, - 238, 238, nil, 238, 238, nil, 238, 238, 238, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 238, nil, - nil, 238, nil, nil, 238, 238, nil, nil, 238, nil, - nil, nil, nil, nil, 238, nil, nil, nil, nil, nil, - nil, nil, nil, 238, nil, nil, nil, nil, 238, 238, - 238, 238, nil, 238, 238, 238, 238, nil, nil, nil, - nil, 238, 238, nil, nil, nil, 239, 239, 239, 238, - 239, 238, 238, 238, 239, 239, nil, nil, nil, 239, - nil, 239, 239, 239, 239, 239, 239, 239, nil, nil, - nil, nil, nil, 239, 239, 239, 239, 239, 239, 239, - nil, nil, 239, nil, nil, nil, nil, nil, nil, 239, - nil, nil, 239, 239, 239, 239, 239, 239, 239, 239, - nil, 239, 239, 239, nil, 239, 239, nil, 239, 239, - 239, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 239, nil, nil, 239, nil, nil, 239, 239, nil, nil, - 239, nil, nil, nil, nil, nil, 239, nil, nil, nil, - nil, nil, nil, nil, nil, 239, nil, nil, nil, nil, - 239, 239, 239, 239, nil, 239, 239, 239, 239, nil, - nil, nil, nil, 239, 239, nil, nil, nil, 240, 240, - 240, 239, 240, 239, 239, 239, 240, 240, nil, nil, - nil, 240, nil, 240, 240, 240, 240, 240, 240, 240, - nil, nil, nil, nil, nil, 240, 240, 240, 240, 240, - 240, 240, nil, nil, 240, nil, nil, nil, nil, nil, - nil, 240, nil, nil, 240, 240, 240, 240, 240, 240, - 240, 240, nil, 240, 240, 240, nil, 240, 240, nil, - 240, 240, 240, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 240, nil, nil, 240, nil, nil, 240, 240, - nil, nil, 240, nil, nil, nil, nil, nil, 240, nil, - nil, nil, nil, nil, nil, nil, nil, 240, nil, nil, - nil, nil, 240, 240, 240, 240, nil, 240, 240, 240, - 240, nil, nil, nil, nil, 240, 240, nil, nil, nil, - 241, 241, 241, 240, 241, 240, 240, 240, 241, 241, - nil, nil, nil, 241, nil, 241, 241, 241, 241, 241, - 241, 241, nil, nil, nil, nil, nil, 241, 241, 241, - 241, 241, 241, 241, nil, nil, 241, nil, nil, nil, - nil, nil, nil, 241, nil, nil, 241, 241, 241, 241, - 241, 241, 241, 241, nil, 241, 241, 241, nil, 241, - 241, nil, 241, 241, 241, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 241, nil, nil, 241, nil, nil, - 241, 241, nil, nil, 241, nil, nil, nil, nil, nil, - 241, nil, nil, nil, nil, nil, nil, nil, nil, 241, - nil, nil, nil, nil, 241, 241, 241, 241, nil, 241, - 241, 241, 241, nil, nil, nil, nil, 241, 241, nil, - nil, nil, 242, 242, 242, 241, 242, 241, 241, 241, - 242, 242, nil, nil, nil, 242, nil, 242, 242, 242, - 242, 242, 242, 242, nil, nil, nil, nil, nil, 242, - 242, 242, 242, 242, 242, 242, nil, nil, 242, nil, - nil, nil, nil, nil, nil, 242, nil, nil, 242, 242, - 242, 242, 242, 242, 242, 242, nil, 242, 242, 242, - nil, 242, 242, nil, 242, 242, 242, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 242, nil, nil, 242, - nil, nil, 242, 242, nil, nil, 242, nil, nil, nil, - nil, nil, 242, nil, nil, nil, nil, nil, nil, nil, - nil, 242, nil, nil, nil, nil, 242, 242, 242, 242, - nil, 242, 242, 242, 242, nil, nil, nil, nil, 242, - 242, nil, nil, nil, 243, 243, 243, 242, 243, 242, - 242, 242, 243, 243, nil, nil, nil, 243, nil, 243, - 243, 243, 243, 243, 243, 243, nil, nil, nil, nil, - nil, 243, 243, 243, 243, 243, 243, 243, nil, nil, - 243, nil, nil, nil, nil, nil, nil, 243, nil, nil, - 243, 243, 243, 243, 243, 243, 243, 243, nil, 243, - 243, 243, nil, 243, 243, nil, 243, 243, 243, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 243, nil, - nil, 243, nil, nil, 243, 243, nil, nil, 243, nil, - nil, nil, nil, nil, 243, nil, nil, nil, nil, nil, - nil, nil, nil, 243, nil, nil, nil, nil, 243, 243, - 243, 243, nil, 243, 243, 243, 243, nil, nil, nil, - nil, 243, 243, nil, nil, nil, 244, 244, 244, 243, - 244, 243, 243, 243, 244, 244, nil, nil, nil, 244, - nil, 244, 244, 244, 244, 244, 244, 244, nil, nil, - nil, nil, nil, 244, 244, 244, 244, 244, 244, 244, - nil, nil, 244, nil, nil, nil, nil, nil, nil, 244, - nil, nil, 244, 244, 244, 244, 244, 244, 244, 244, - nil, 244, 244, 244, nil, 244, 244, nil, 244, 244, - 244, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 244, nil, nil, 244, nil, nil, 244, 244, nil, nil, - 244, nil, nil, nil, nil, nil, 244, nil, nil, nil, - nil, nil, nil, nil, nil, 244, nil, nil, nil, nil, - 244, 244, 244, 244, nil, 244, 244, 244, 244, nil, - nil, nil, nil, 244, 244, nil, nil, nil, 245, 245, - 245, 244, 245, 244, 244, 244, 245, 245, nil, nil, - nil, 245, nil, 245, 245, 245, 245, 245, 245, 245, - nil, nil, nil, nil, nil, 245, 245, 245, 245, 245, - 245, 245, nil, nil, 245, nil, nil, nil, nil, nil, - nil, 245, nil, nil, 245, 245, 245, 245, 245, 245, - 245, 245, nil, 245, 245, 245, nil, 245, 245, nil, - 245, 245, 245, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 245, nil, nil, 245, nil, nil, 245, 245, - nil, nil, 245, nil, nil, nil, nil, nil, 245, nil, - nil, nil, nil, nil, nil, nil, nil, 245, nil, nil, - nil, nil, 245, 245, 245, 245, nil, 245, 245, 245, - 245, nil, nil, nil, nil, 245, 245, nil, nil, nil, - 246, 246, 246, 245, 246, 245, 245, 245, 246, 246, - nil, nil, nil, 246, nil, 246, 246, 246, 246, 246, - 246, 246, nil, nil, nil, nil, nil, 246, 246, 246, - 246, 246, 246, 246, nil, nil, 246, nil, nil, nil, - nil, nil, nil, 246, nil, nil, 246, 246, 246, 246, - 246, 246, 246, 246, nil, 246, 246, 246, nil, 246, - 246, nil, 246, 246, 246, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 246, nil, nil, 246, nil, nil, - 246, 246, nil, nil, 246, nil, nil, nil, nil, nil, - 246, nil, nil, nil, nil, nil, nil, nil, nil, 246, - nil, nil, nil, nil, 246, 246, 246, 246, nil, 246, - 246, 246, 246, nil, nil, nil, nil, 246, 246, nil, - nil, nil, 247, 247, 247, 246, 247, 246, 246, 246, - 247, 247, nil, nil, nil, 247, nil, 247, 247, 247, - 247, 247, 247, 247, nil, nil, nil, nil, nil, 247, - 247, 247, 247, 247, 247, 247, nil, nil, 247, nil, - nil, nil, nil, nil, nil, 247, nil, nil, 247, 247, - 247, 247, 247, 247, 247, 247, nil, 247, 247, 247, - nil, 247, 247, nil, 247, 247, 247, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 247, nil, nil, 247, - nil, nil, 247, 247, nil, nil, 247, nil, nil, nil, - nil, nil, 247, nil, nil, nil, nil, nil, nil, nil, - nil, 247, nil, nil, nil, nil, 247, 247, 247, 247, - nil, 247, 247, 247, 247, nil, nil, nil, nil, 247, - 247, nil, nil, nil, 248, 248, 248, 247, 248, 247, - 247, 247, 248, 248, nil, nil, nil, 248, nil, 248, - 248, 248, 248, 248, 248, 248, nil, nil, nil, nil, - nil, 248, 248, 248, 248, 248, 248, 248, nil, nil, - 248, nil, nil, nil, nil, nil, nil, 248, nil, nil, - 248, 248, 248, 248, 248, 248, 248, 248, nil, 248, - 248, 248, nil, 248, 248, nil, 248, 248, 248, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 248, nil, - nil, 248, nil, nil, 248, 248, nil, nil, 248, nil, - nil, nil, nil, nil, 248, nil, nil, nil, nil, nil, - nil, nil, nil, 248, nil, nil, nil, nil, 248, 248, - 248, 248, nil, 248, 248, 248, 248, nil, nil, nil, - nil, 248, 248, nil, nil, nil, 249, 249, 249, 248, - 249, 248, 248, 248, 249, 249, nil, nil, nil, 249, - nil, 249, 249, 249, 249, 249, 249, 249, nil, nil, - nil, nil, nil, 249, 249, 249, 249, 249, 249, 249, - nil, nil, 249, nil, nil, nil, nil, nil, nil, 249, - nil, nil, 249, 249, 249, 249, 249, 249, 249, 249, - nil, 249, 249, 249, nil, 249, 249, nil, 249, 249, - 249, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 249, nil, nil, 249, nil, nil, 249, 249, nil, nil, - 249, nil, nil, nil, nil, nil, 249, nil, nil, nil, - nil, nil, nil, nil, nil, 249, nil, nil, nil, nil, - 249, 249, 249, 249, nil, 249, 249, 249, 249, nil, - nil, nil, nil, 249, 249, nil, nil, nil, 250, 250, - 250, 249, 250, 249, 249, 249, 250, 250, nil, nil, - nil, 250, nil, 250, 250, 250, 250, 250, 250, 250, - nil, nil, nil, nil, nil, 250, 250, 250, 250, 250, - 250, 250, nil, nil, 250, nil, nil, nil, nil, nil, - nil, 250, nil, nil, 250, 250, 250, 250, 250, 250, - 250, 250, nil, 250, 250, 250, nil, 250, 250, nil, - 250, 250, 250, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 250, nil, nil, 250, nil, nil, 250, 250, - nil, nil, 250, nil, nil, nil, nil, nil, 250, nil, - nil, nil, nil, nil, nil, nil, nil, 250, nil, nil, - nil, nil, 250, 250, 250, 250, nil, 250, 250, 250, - 250, nil, nil, nil, nil, 250, 250, nil, nil, nil, - 251, 251, 251, 250, 251, 250, 250, 250, 251, 251, - nil, nil, nil, 251, nil, 251, 251, 251, 251, 251, - 251, 251, nil, nil, nil, nil, nil, 251, 251, 251, - 251, 251, 251, 251, nil, nil, 251, nil, nil, nil, - nil, nil, nil, 251, nil, nil, 251, 251, 251, 251, - 251, 251, 251, 251, nil, 251, 251, 251, nil, 251, - 251, nil, 251, 251, 251, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 251, nil, nil, 251, nil, nil, - 251, 251, nil, nil, 251, nil, nil, nil, nil, nil, - 251, nil, nil, nil, nil, nil, nil, nil, nil, 251, - nil, nil, nil, nil, 251, 251, 251, 251, nil, 251, - 251, 251, 251, nil, nil, nil, nil, 251, 251, nil, - nil, nil, 252, 252, 252, 251, 252, 251, 251, 251, - 252, 252, nil, nil, nil, 252, nil, 252, 252, 252, - 252, 252, 252, 252, nil, nil, nil, nil, nil, 252, - 252, 252, 252, 252, 252, 252, nil, nil, 252, nil, - nil, nil, nil, nil, nil, 252, nil, nil, 252, 252, - 252, 252, 252, 252, 252, 252, nil, 252, 252, 252, - nil, 252, 252, nil, 252, 252, 252, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 252, nil, nil, 252, - nil, nil, 252, 252, nil, nil, 252, nil, nil, nil, - nil, nil, 252, nil, nil, nil, nil, nil, nil, nil, - nil, 252, nil, nil, nil, nil, 252, 252, 252, 252, - nil, 252, 252, 252, 252, nil, nil, nil, nil, 252, - 252, nil, nil, nil, 253, 253, 253, 252, 253, 252, - 252, 252, 253, 253, nil, nil, nil, 253, nil, 253, - 253, 253, 253, 253, 253, 253, nil, nil, nil, nil, - nil, 253, 253, 253, 253, 253, 253, 253, nil, nil, - 253, nil, nil, nil, nil, nil, nil, 253, nil, nil, - 253, 253, 253, 253, 253, 253, 253, 253, nil, 253, - 253, 253, nil, 253, 253, nil, 253, 253, 253, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 253, nil, - nil, 253, nil, nil, 253, 253, nil, nil, 253, nil, - nil, nil, nil, nil, 253, nil, nil, nil, nil, nil, - nil, nil, nil, 253, nil, nil, nil, nil, 253, 253, - 253, 253, nil, 253, 253, 253, 253, nil, nil, nil, - nil, 253, 253, nil, nil, nil, 254, 254, 254, 253, - 254, 253, 253, 253, 254, 254, nil, nil, nil, 254, - nil, 254, 254, 254, 254, 254, 254, 254, nil, nil, - nil, nil, nil, 254, 254, 254, 254, 254, 254, 254, - nil, nil, 254, nil, nil, nil, nil, nil, nil, 254, - nil, nil, 254, 254, 254, 254, 254, 254, 254, 254, - nil, 254, 254, 254, nil, 254, 254, nil, 254, 254, - 254, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 254, nil, nil, 254, nil, nil, 254, 254, nil, nil, - 254, nil, nil, nil, nil, nil, 254, nil, nil, nil, - nil, nil, nil, nil, nil, 254, nil, nil, nil, nil, - 254, 254, 254, 254, nil, 254, 254, 254, 254, nil, - nil, nil, nil, 254, 254, nil, nil, nil, 255, 255, - 255, 254, 255, 254, 254, 254, 255, 255, nil, nil, - nil, 255, nil, 255, 255, 255, 255, 255, 255, 255, - nil, nil, nil, nil, nil, 255, 255, 255, 255, 255, - 255, 255, nil, nil, 255, nil, nil, nil, nil, nil, - nil, 255, nil, nil, 255, 255, 255, 255, 255, 255, - 255, 255, nil, 255, 255, 255, nil, 255, 255, nil, - 255, 255, 255, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 255, nil, nil, 255, nil, nil, 255, 255, - nil, nil, 255, nil, nil, nil, nil, nil, 255, nil, - nil, nil, nil, nil, nil, nil, nil, 255, nil, nil, - nil, nil, 255, 255, 255, 255, nil, 255, 255, 255, - 255, nil, nil, nil, nil, 255, 255, nil, nil, nil, - 263, 263, 263, 255, 263, 255, 255, 255, 263, 263, - nil, nil, nil, 263, nil, 263, 263, 263, 263, 263, - 263, 263, nil, nil, nil, nil, nil, 263, 263, 263, - 263, 263, 263, 263, nil, nil, 263, nil, nil, nil, - nil, nil, nil, 263, nil, nil, 263, 263, 263, 263, - 263, 263, 263, 263, 263, 263, 263, 263, nil, 263, - 263, nil, 263, 263, 263, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 263, nil, nil, 263, nil, nil, - 263, 263, nil, nil, 263, nil, 263, nil, 263, nil, - 263, nil, nil, 263, nil, nil, nil, nil, nil, 263, - nil, nil, nil, nil, 263, 263, 263, 263, nil, 263, - 263, 263, 263, nil, nil, nil, nil, 263, 263, nil, - nil, nil, 264, 264, 264, 263, 264, 263, 263, 263, - 264, 264, nil, nil, nil, 264, nil, 264, 264, 264, - 264, 264, 264, 264, nil, nil, nil, nil, nil, 264, - 264, 264, 264, 264, 264, 264, nil, nil, 264, nil, - nil, nil, nil, nil, nil, 264, nil, nil, 264, 264, - 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, - nil, 264, 264, nil, 264, 264, 264, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 264, nil, nil, 264, - nil, nil, 264, 264, nil, nil, 264, nil, 264, nil, - 264, nil, 264, nil, nil, 264, nil, nil, nil, nil, - nil, 264, nil, nil, nil, nil, 264, 264, 264, 264, - nil, 264, 264, 264, 264, nil, nil, nil, nil, 264, - 264, nil, nil, nil, 272, 272, 272, 264, 272, 264, - 264, 264, 272, 272, nil, nil, nil, 272, nil, 272, - 272, 272, 272, 272, 272, 272, nil, nil, nil, nil, - nil, 272, 272, 272, 272, 272, 272, 272, nil, nil, - 272, nil, nil, nil, nil, nil, nil, 272, nil, nil, - 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, - 272, 272, nil, 272, 272, nil, 272, 272, 272, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 272, nil, - nil, 272, nil, nil, 272, 272, nil, nil, 272, nil, - 272, nil, 272, nil, 272, nil, nil, 272, nil, nil, - nil, nil, nil, 272, nil, nil, nil, nil, 272, 272, - 272, 272, nil, 272, 272, 272, 272, nil, nil, nil, - nil, 272, 272, 272, nil, nil, 279, 279, 279, 272, - 279, 272, 272, 272, 279, 279, nil, nil, nil, 279, - nil, 279, 279, 279, 279, 279, 279, 279, nil, nil, - nil, nil, nil, 279, 279, 279, 279, 279, 279, 279, - nil, nil, 279, nil, nil, nil, nil, nil, nil, 279, - nil, nil, 279, 279, 279, 279, 279, 279, 279, 279, - nil, 279, 279, 279, nil, 279, 279, nil, 279, 279, - 279, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 279, nil, nil, 279, nil, nil, 279, 279, nil, nil, - 279, nil, nil, nil, nil, nil, 279, nil, nil, nil, - nil, nil, nil, nil, nil, 279, nil, nil, nil, nil, - 279, 279, 279, 279, nil, 279, 279, 279, 279, nil, - nil, nil, nil, 279, 279, nil, nil, nil, 281, 281, - 281, 279, 281, 279, 279, 279, 281, 281, nil, nil, - nil, 281, nil, 281, 281, 281, 281, 281, 281, 281, - nil, nil, nil, nil, nil, 281, 281, 281, 281, 281, - 281, 281, nil, nil, 281, nil, nil, nil, nil, nil, - nil, 281, nil, nil, 281, 281, 281, 281, 281, 281, - 281, 281, nil, 281, 281, 281, nil, 281, 281, nil, - 281, 281, 281, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 281, nil, nil, 281, nil, nil, 281, 281, - nil, nil, 281, nil, nil, nil, nil, nil, 281, nil, - nil, nil, nil, nil, nil, nil, nil, 281, nil, nil, - nil, nil, 281, 281, 281, 281, nil, 281, 281, 281, - 281, nil, nil, nil, nil, 281, 281, nil, nil, nil, - 284, 284, 284, 281, 284, 281, 281, 281, 284, 284, - nil, nil, nil, 284, nil, 284, 284, 284, 284, 284, - 284, 284, nil, nil, nil, nil, nil, 284, 284, 284, - 284, 284, 284, 284, nil, nil, 284, nil, nil, nil, - nil, nil, nil, 284, nil, nil, 284, 284, 284, 284, - 284, 284, 284, 284, nil, 284, 284, 284, nil, 284, - 284, nil, 284, 284, 284, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 284, nil, nil, 284, nil, nil, - 284, 284, nil, nil, 284, nil, nil, nil, nil, nil, - 284, nil, nil, nil, nil, nil, nil, nil, nil, 284, - nil, nil, nil, nil, 284, 284, 284, 284, nil, 284, - 284, 284, 284, nil, nil, nil, nil, 284, 284, nil, - nil, nil, 285, 285, 285, 284, 285, 284, 284, 284, - 285, 285, nil, nil, nil, 285, nil, 285, 285, 285, - 285, 285, 285, 285, nil, nil, nil, nil, nil, 285, - 285, 285, 285, 285, 285, 285, nil, nil, 285, nil, - nil, nil, nil, nil, nil, 285, nil, nil, 285, 285, - 285, 285, 285, 285, 285, 285, nil, 285, 285, 285, - nil, 285, 285, nil, 285, 285, 285, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 285, nil, nil, 285, - nil, nil, 285, 285, nil, nil, 285, nil, nil, nil, - nil, nil, 285, nil, nil, nil, nil, nil, nil, nil, - nil, 285, nil, nil, nil, nil, 285, 285, 285, 285, - nil, 285, 285, 285, 285, nil, nil, nil, nil, 285, - 285, nil, nil, nil, nil, nil, nil, 285, nil, 285, - 285, 285, 290, 290, 290, 290, 290, nil, nil, nil, - 290, 290, nil, nil, nil, 290, nil, 290, 290, 290, - 290, 290, 290, 290, nil, nil, nil, nil, nil, 290, - 290, 290, 290, 290, 290, 290, nil, nil, 290, nil, - nil, nil, nil, nil, 290, 290, nil, 290, 290, 290, - 290, 290, 290, 290, 290, 290, nil, 290, 290, 290, - nil, 290, 290, nil, 290, 290, 290, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 290, nil, nil, 290, - nil, nil, 290, 290, nil, nil, 290, nil, 290, nil, - nil, nil, 290, nil, nil, nil, nil, nil, nil, nil, - nil, 290, nil, nil, nil, nil, 290, 290, 290, 290, - nil, 290, 290, 290, 290, nil, nil, nil, nil, 290, - 290, nil, nil, nil, 298, 298, 298, 290, 298, 290, - 290, 290, 298, 298, nil, nil, nil, 298, nil, 298, - 298, 298, 298, 298, 298, 298, nil, nil, nil, nil, - nil, 298, 298, 298, 298, 298, 298, 298, nil, nil, - 298, nil, nil, nil, nil, nil, nil, 298, nil, nil, - 298, 298, 298, 298, 298, 298, 298, 298, nil, 298, - 298, 298, nil, 298, 298, nil, nil, nil, 298, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 298, nil, - nil, 298, nil, nil, 298, 298, nil, nil, 298, nil, - 895, nil, 895, 895, 895, 895, 895, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 895, nil, 298, 298, - 298, 298, nil, 298, 298, 298, 298, nil, nil, nil, - nil, 298, 298, nil, nil, nil, 298, nil, 895, 298, - nil, 298, 298, 298, 315, 315, 315, nil, 315, 895, - 895, nil, 315, 315, 895, nil, nil, 315, nil, 315, - 315, 315, 315, 315, 315, 315, nil, nil, nil, nil, - nil, 315, 315, 315, 315, 315, 315, 315, nil, nil, - 315, nil, nil, nil, nil, nil, nil, 315, nil, nil, - 315, 315, 315, 315, 315, 315, 315, 315, nil, 315, - 315, 315, nil, 315, 315, nil, nil, nil, 315, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 315, nil, - nil, 315, nil, nil, 315, 315, nil, nil, 315, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 315, 315, - 315, 315, nil, 315, 315, 315, 315, nil, nil, nil, - nil, 315, 315, nil, nil, nil, 323, 323, 323, 315, - 323, 315, 315, 315, 323, 323, nil, nil, nil, 323, - nil, 323, 323, 323, 323, 323, 323, 323, nil, nil, - nil, nil, nil, 323, 323, 323, 323, 323, 323, 323, - nil, nil, 323, nil, nil, nil, nil, nil, nil, 323, - nil, nil, 323, 323, 323, 323, 323, 323, 323, 323, - nil, 323, 323, 323, nil, 323, 323, nil, 323, 323, - 323, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 323, nil, nil, 323, 323, nil, 323, 323, nil, nil, - 323, nil, nil, nil, nil, nil, 323, nil, nil, nil, - nil, nil, nil, nil, nil, 323, nil, nil, nil, nil, - 323, 323, 323, 323, nil, 323, 323, 323, 323, nil, - nil, nil, nil, 323, 323, nil, nil, nil, 325, 325, - 325, 323, 325, 323, 323, 323, 325, 325, nil, nil, - nil, 325, nil, 325, 325, 325, 325, 325, 325, 325, - nil, nil, nil, nil, nil, 325, 325, 325, 325, 325, - 325, 325, nil, nil, 325, nil, nil, nil, nil, nil, - nil, 325, nil, nil, 325, 325, 325, 325, 325, 325, - 325, 325, nil, 325, 325, 325, nil, 325, 325, nil, - 325, 325, 325, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 325, nil, nil, 325, nil, nil, 325, 325, - nil, nil, 325, nil, nil, nil, nil, nil, 325, nil, - nil, nil, nil, nil, nil, nil, nil, 325, nil, nil, - nil, nil, 325, 325, 325, 325, nil, 325, 325, 325, - 325, nil, nil, nil, nil, 325, 325, nil, nil, nil, - 340, 340, 340, 325, 340, 325, 325, 325, 340, 340, - nil, nil, nil, 340, nil, 340, 340, 340, 340, 340, - 340, 340, nil, nil, nil, nil, nil, 340, 340, 340, - 340, 340, 340, 340, nil, nil, 340, nil, nil, nil, - nil, nil, nil, 340, nil, nil, 340, 340, 340, 340, - 340, 340, 340, 340, nil, 340, 340, 340, nil, 340, - 340, nil, 340, 340, 340, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 340, nil, nil, 340, nil, nil, - 340, 340, nil, nil, 340, nil, nil, nil, nil, nil, - 340, nil, nil, nil, nil, nil, nil, nil, nil, 340, - nil, nil, nil, nil, 340, 340, 340, 340, nil, 340, - 340, 340, 340, nil, nil, nil, nil, 340, 340, nil, - nil, nil, 341, 341, 341, 340, 341, 340, 340, 340, - 341, 341, nil, nil, nil, 341, nil, 341, 341, 341, - 341, 341, 341, 341, nil, nil, nil, nil, nil, 341, - 341, 341, 341, 341, 341, 341, nil, nil, 341, nil, - nil, nil, nil, nil, nil, 341, nil, nil, 341, 341, - 341, 341, 341, 341, 341, 341, nil, 341, 341, 341, - nil, 341, 341, nil, 341, 341, 341, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 341, nil, nil, 341, - nil, nil, 341, 341, nil, nil, 341, nil, nil, nil, - nil, nil, 341, nil, nil, nil, nil, nil, nil, nil, - nil, 341, nil, nil, nil, nil, 341, 341, 341, 341, - nil, 341, 341, 341, 341, nil, nil, nil, nil, 341, - 341, nil, nil, nil, 360, 360, 360, 341, 360, 341, - 341, 341, 360, 360, nil, nil, nil, 360, nil, 360, - 360, 360, 360, 360, 360, 360, nil, nil, nil, nil, - nil, 360, 360, 360, 360, 360, 360, 360, nil, nil, - 360, nil, nil, nil, nil, nil, nil, 360, nil, nil, - 360, 360, 360, 360, 360, 360, 360, 360, nil, 360, - 360, 360, nil, 360, 360, nil, 360, 360, 360, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 360, nil, - nil, 360, nil, nil, 360, 360, nil, nil, 360, nil, - nil, nil, nil, nil, 360, nil, nil, nil, nil, nil, - nil, nil, nil, 360, nil, nil, nil, nil, 360, 360, - 360, 360, nil, 360, 360, 360, 360, nil, nil, nil, - nil, 360, 360, nil, nil, nil, 376, 376, 376, 360, - 376, 360, 360, 360, 376, 376, nil, nil, nil, 376, - nil, 376, 376, 376, 376, 376, 376, 376, nil, nil, - nil, nil, nil, 376, 376, 376, 376, 376, 376, 376, - nil, nil, 376, nil, nil, nil, nil, nil, nil, 376, - nil, nil, 376, 376, 376, 376, 376, 376, 376, 376, - nil, 376, 376, 376, nil, 376, 376, nil, 376, 376, - 376, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 376, nil, nil, 376, nil, nil, 376, 376, nil, nil, - 376, nil, nil, nil, nil, nil, 376, nil, nil, nil, - nil, nil, nil, nil, nil, 376, nil, nil, nil, nil, - 376, 376, 376, 376, nil, 376, 376, 376, 376, nil, - nil, nil, nil, 376, 376, nil, nil, nil, 404, 404, - 404, 376, 404, 376, 376, 376, 404, 404, nil, nil, - nil, 404, nil, 404, 404, 404, 404, 404, 404, 404, - nil, nil, nil, nil, nil, 404, 404, 404, 404, 404, - 404, 404, nil, nil, 404, nil, nil, nil, nil, nil, - nil, 404, nil, nil, 404, 404, 404, 404, 404, 404, - 404, 404, nil, 404, 404, 404, nil, 404, 404, nil, - 404, 404, 404, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 404, nil, nil, 404, nil, nil, 404, 404, - nil, nil, 404, nil, nil, nil, nil, nil, 404, nil, - nil, nil, nil, nil, nil, nil, nil, 404, nil, nil, - nil, nil, 404, 404, 404, 404, nil, 404, 404, 404, - 404, nil, nil, nil, nil, 404, 404, nil, nil, nil, - 442, 442, 442, 404, 442, 404, 404, 404, 442, 442, - nil, nil, nil, 442, nil, 442, 442, 442, 442, 442, - 442, 442, nil, nil, nil, nil, nil, 442, 442, 442, - 442, 442, 442, 442, nil, nil, 442, nil, nil, nil, - nil, nil, nil, 442, nil, nil, 442, 442, 442, 442, - 442, 442, 442, 442, 442, 442, 442, 442, nil, 442, - 442, nil, 442, 442, 442, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 442, nil, nil, 442, nil, nil, - 442, 442, nil, nil, 442, nil, 442, nil, 442, nil, - 442, nil, nil, 442, nil, nil, nil, nil, nil, 442, - nil, nil, nil, nil, 442, 442, 442, 442, nil, 442, - 442, 442, 442, nil, nil, nil, nil, 442, 442, nil, - nil, nil, 444, 444, 444, 442, 444, 442, 442, 442, - 444, 444, nil, nil, nil, 444, nil, 444, 444, 444, - 444, 444, 444, 444, nil, nil, nil, nil, nil, 444, - 444, 444, 444, 444, 444, 444, nil, nil, 444, nil, - nil, nil, nil, nil, nil, 444, nil, nil, 444, 444, - 444, 444, 444, 444, 444, 444, nil, 444, 444, 444, - nil, 444, 444, nil, 444, 444, 444, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 444, nil, nil, 444, - nil, nil, 444, 444, nil, nil, 444, nil, nil, nil, - nil, nil, 444, nil, nil, nil, nil, nil, nil, nil, - nil, 444, nil, nil, nil, nil, 444, 444, 444, 444, - nil, 444, 444, 444, 444, nil, nil, nil, nil, 444, - 444, nil, nil, nil, 445, 445, 445, 444, 445, 444, - 444, 444, 445, 445, nil, nil, nil, 445, nil, 445, - 445, 445, 445, 445, 445, 445, nil, nil, nil, nil, - nil, 445, 445, 445, 445, 445, 445, 445, nil, nil, - 445, nil, nil, nil, nil, nil, nil, 445, nil, nil, - 445, 445, 445, 445, 445, 445, 445, 445, nil, 445, - 445, 445, nil, 445, 445, nil, 445, 445, 445, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 445, nil, - nil, 445, nil, nil, 445, 445, nil, nil, 445, nil, - nil, nil, nil, nil, 445, nil, nil, nil, nil, nil, - nil, nil, nil, 445, nil, nil, nil, nil, 445, 445, - 445, 445, nil, 445, 445, 445, 445, nil, nil, nil, - nil, 445, 445, nil, nil, nil, 446, 446, 446, 445, - 446, 445, 445, 445, 446, 446, nil, nil, nil, 446, - nil, 446, 446, 446, 446, 446, 446, 446, nil, nil, - nil, nil, nil, 446, 446, 446, 446, 446, 446, 446, - nil, nil, 446, nil, nil, nil, nil, nil, nil, 446, - nil, nil, 446, 446, 446, 446, 446, 446, 446, 446, - nil, 446, 446, 446, nil, 446, 446, nil, 446, 446, - 446, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 446, nil, nil, 446, nil, nil, 446, 446, nil, nil, - 446, nil, nil, nil, nil, nil, 446, nil, nil, nil, - nil, nil, nil, nil, nil, 446, nil, nil, nil, nil, - 446, 446, 446, 446, nil, 446, 446, 446, 446, nil, - nil, nil, nil, 446, 446, nil, nil, nil, 472, 472, - 472, 446, 472, 446, 446, 446, 472, 472, nil, nil, - nil, 472, nil, 472, 472, 472, 472, 472, 472, 472, - nil, nil, nil, nil, nil, 472, 472, 472, 472, 472, - 472, 472, nil, nil, 472, nil, nil, nil, nil, nil, - nil, 472, nil, nil, 472, 472, 472, 472, 472, 472, - 472, 472, nil, 472, 472, 472, nil, 472, 472, nil, - 472, 472, 472, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 472, nil, nil, 472, nil, nil, 472, 472, - nil, nil, 472, nil, nil, nil, nil, nil, 472, nil, - nil, nil, nil, nil, nil, nil, nil, 472, nil, nil, - nil, nil, 472, 472, 472, 472, nil, 472, 472, 472, - 472, nil, nil, nil, nil, 472, 472, nil, nil, nil, - 486, 486, 486, 472, 486, 472, 472, 472, 486, 486, - nil, nil, nil, 486, nil, 486, 486, 486, 486, 486, - 486, 486, nil, nil, nil, nil, nil, 486, 486, 486, - 486, 486, 486, 486, nil, nil, 486, nil, nil, nil, - nil, nil, nil, 486, nil, nil, 486, 486, 486, 486, - 486, 486, 486, 486, 486, 486, 486, 486, nil, 486, - 486, nil, 486, 486, 486, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 486, nil, nil, 486, nil, nil, - 486, 486, nil, nil, 486, nil, 486, nil, 486, nil, - 486, nil, nil, 486, nil, nil, nil, nil, nil, 486, - nil, nil, nil, nil, 486, 486, 486, 486, nil, 486, - 486, 486, 486, nil, nil, nil, nil, 486, 486, nil, - nil, nil, 488, 488, 488, 486, 488, 486, 486, 486, - 488, 488, nil, nil, nil, 488, nil, 488, 488, 488, - 488, 488, 488, 488, nil, nil, nil, nil, nil, 488, - 488, 488, 488, 488, 488, 488, nil, nil, 488, nil, - nil, nil, nil, nil, nil, 488, nil, nil, 488, 488, - 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, - nil, 488, 488, nil, 488, 488, 488, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 488, nil, nil, 488, - nil, nil, 488, 488, nil, nil, 488, nil, nil, nil, - 488, nil, 488, nil, nil, 488, nil, nil, nil, nil, - nil, 488, nil, nil, nil, nil, 488, 488, 488, 488, - nil, 488, 488, 488, 488, nil, nil, nil, nil, 488, - 488, nil, nil, nil, 490, 490, 490, 488, 490, 488, - 488, 488, 490, 490, nil, nil, nil, 490, nil, 490, - 490, 490, 490, 490, 490, 490, nil, nil, nil, nil, - nil, 490, 490, 490, 490, 490, 490, 490, nil, nil, - 490, nil, nil, nil, nil, nil, nil, 490, nil, nil, - 490, 490, 490, 490, 490, 490, 490, 490, nil, 490, - 490, 490, nil, 490, 490, nil, 490, 490, 490, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 490, nil, - nil, 490, nil, nil, 490, 490, nil, nil, 490, nil, - nil, nil, nil, nil, 490, nil, nil, nil, nil, nil, - nil, nil, nil, 490, nil, nil, nil, nil, 490, 490, - 490, 490, nil, 490, 490, 490, 490, nil, nil, nil, - nil, 490, 490, nil, nil, nil, nil, nil, nil, 490, - nil, 490, 490, 490, 496, 496, 496, 496, 496, nil, - nil, nil, 496, 496, nil, nil, nil, 496, nil, 496, - 496, 496, 496, 496, 496, 496, nil, nil, nil, nil, - nil, 496, 496, 496, 496, 496, 496, 496, nil, nil, - 496, nil, nil, nil, nil, nil, 496, 496, 496, 496, - 496, 496, 496, 496, 496, 496, 496, 496, nil, 496, - 496, 496, nil, 496, 496, nil, 496, 496, 496, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 496, nil, - nil, 496, nil, nil, 496, 496, nil, nil, 496, nil, - 496, nil, nil, nil, 496, nil, nil, nil, nil, nil, - nil, nil, nil, 496, nil, nil, nil, nil, 496, 496, - 496, 496, nil, 496, 496, 496, 496, nil, nil, nil, - nil, 496, 496, nil, nil, nil, nil, nil, 496, 496, - nil, 496, 496, 496, 504, 504, 504, nil, 504, nil, - nil, nil, 504, 504, nil, nil, nil, 504, nil, 504, - 504, 504, 504, 504, 504, 504, nil, nil, nil, nil, - nil, 504, 504, 504, 504, 504, 504, 504, nil, nil, - 504, nil, nil, nil, nil, nil, nil, 504, nil, nil, - 504, 504, 504, 504, 504, 504, 504, 504, nil, 504, - 504, 504, nil, 504, 504, nil, nil, nil, 504, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 504, nil, - nil, 504, nil, nil, 504, 504, nil, nil, 504, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 504, 504, - 504, 504, nil, 504, 504, 504, 504, nil, nil, nil, - nil, 504, 504, nil, nil, nil, 506, 506, 506, 504, - 506, 504, 504, 504, 506, 506, nil, nil, nil, 506, - nil, 506, 506, 506, 506, 506, 506, 506, nil, nil, - nil, nil, nil, 506, 506, 506, 506, 506, 506, 506, - nil, nil, 506, nil, nil, nil, nil, nil, nil, 506, - nil, nil, 506, 506, 506, 506, 506, 506, 506, 506, - 506, 506, 506, 506, nil, 506, 506, nil, 506, 506, - 506, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 506, nil, nil, 506, nil, nil, 506, 506, nil, nil, - 506, nil, 506, nil, 506, nil, 506, nil, nil, 506, - nil, nil, nil, nil, nil, 506, nil, nil, nil, nil, - 506, 506, 506, 506, nil, 506, 506, 506, 506, nil, - nil, nil, nil, 506, 506, nil, nil, nil, 512, 512, - 512, 506, 512, 506, 506, 506, 512, 512, nil, nil, - nil, 512, nil, 512, 512, 512, 512, 512, 512, 512, - nil, nil, nil, nil, nil, 512, 512, 512, 512, 512, - 512, 512, nil, nil, 512, nil, nil, nil, nil, nil, - nil, 512, nil, nil, 512, 512, 512, 512, 512, 512, - 512, 512, nil, 512, 512, 512, nil, 512, 512, nil, - nil, nil, 512, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 512, nil, nil, 512, nil, nil, 512, 512, - nil, nil, 512, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 512, 512, 512, 512, nil, 512, 512, 512, - 512, nil, nil, nil, nil, 512, 512, nil, nil, nil, - 515, 515, 515, 512, 515, 512, 512, 512, 515, 515, - nil, nil, nil, 515, nil, 515, 515, 515, 515, 515, - 515, 515, nil, nil, nil, nil, nil, 515, 515, 515, - 515, 515, 515, 515, nil, nil, 515, nil, nil, nil, - nil, nil, nil, 515, nil, nil, 515, 515, 515, 515, - 515, 515, 515, 515, nil, 515, 515, 515, nil, 515, - 515, nil, 515, 515, 515, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 515, nil, nil, 515, nil, nil, - 515, 515, nil, nil, 515, nil, nil, nil, nil, nil, - 515, nil, nil, nil, nil, nil, nil, nil, nil, 515, - nil, nil, nil, nil, 515, 515, 515, 515, nil, 515, - 515, 515, 515, nil, nil, nil, nil, 515, 515, nil, - nil, nil, 516, 516, 516, 515, 516, 515, 515, 515, - 516, 516, nil, nil, nil, 516, nil, 516, 516, 516, - 516, 516, 516, 516, nil, nil, nil, nil, nil, 516, - 516, 516, 516, 516, 516, 516, nil, nil, 516, nil, - nil, nil, nil, nil, nil, 516, nil, nil, 516, 516, - 516, 516, 516, 516, 516, 516, nil, 516, 516, 516, - nil, 516, 516, nil, 516, 516, 516, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 516, nil, nil, 516, - nil, nil, 516, 516, nil, nil, 516, nil, nil, nil, - nil, nil, 516, nil, nil, nil, nil, nil, nil, nil, - nil, 516, nil, nil, nil, nil, 516, 516, 516, 516, - nil, 516, 516, 516, 516, nil, nil, nil, nil, 516, - 516, nil, nil, nil, 520, 520, 520, 516, 520, 516, - 516, 516, 520, 520, nil, nil, nil, 520, nil, 520, - 520, 520, 520, 520, 520, 520, nil, nil, nil, nil, - nil, 520, 520, 520, 520, 520, 520, 520, nil, nil, - 520, nil, nil, nil, nil, nil, nil, 520, nil, nil, - 520, 520, 520, 520, 520, 520, 520, 520, nil, 520, - 520, 520, nil, 520, 520, nil, 520, 520, 520, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 520, nil, - nil, 520, nil, nil, 520, 520, nil, nil, 520, nil, - nil, nil, nil, nil, 520, nil, nil, nil, nil, nil, - nil, nil, nil, 520, nil, nil, nil, nil, 520, 520, - 520, 520, nil, 520, 520, 520, 520, nil, nil, nil, - nil, 520, 520, nil, nil, nil, 526, 526, 526, 520, - 526, 520, 520, 520, 526, 526, nil, nil, nil, 526, - nil, 526, 526, 526, 526, 526, 526, 526, nil, nil, - nil, nil, nil, 526, 526, 526, 526, 526, 526, 526, - nil, nil, 526, nil, nil, nil, nil, nil, nil, 526, - nil, nil, 526, 526, 526, 526, 526, 526, 526, 526, - 526, 526, 526, 526, nil, 526, 526, nil, 526, 526, - 526, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 526, nil, nil, 526, nil, nil, 526, 526, nil, nil, - 526, nil, 526, nil, nil, nil, 526, nil, nil, 526, - nil, nil, nil, nil, nil, 526, nil, nil, nil, nil, - 526, 526, 526, 526, nil, 526, 526, 526, 526, nil, - nil, nil, nil, 526, 526, nil, nil, nil, 529, 529, - 529, 526, 529, 526, 526, 526, 529, 529, nil, nil, - nil, 529, nil, 529, 529, 529, 529, 529, 529, 529, - nil, nil, nil, nil, nil, 529, 529, 529, 529, 529, - 529, 529, nil, nil, 529, nil, nil, nil, nil, nil, - nil, 529, nil, nil, 529, 529, 529, 529, 529, 529, - 529, 529, 529, 529, 529, 529, nil, 529, 529, nil, - 529, 529, 529, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 529, nil, nil, 529, nil, nil, 529, 529, - nil, nil, 529, nil, nil, nil, nil, nil, 529, nil, - nil, 529, nil, nil, nil, nil, nil, 529, nil, nil, - nil, nil, 529, 529, 529, 529, nil, 529, 529, 529, - 529, nil, nil, nil, nil, 529, 529, nil, nil, nil, - 554, 554, 554, 529, 554, 529, 529, 529, 554, 554, - nil, nil, nil, 554, nil, 554, 554, 554, 554, 554, - 554, 554, nil, nil, nil, nil, nil, 554, 554, 554, - 554, 554, 554, 554, nil, nil, 554, nil, nil, nil, - nil, nil, nil, 554, nil, nil, 554, 554, 554, 554, - 554, 554, 554, 554, nil, 554, 554, 554, nil, 554, - 554, nil, 554, 554, 554, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 554, nil, nil, 554, nil, nil, - 554, 554, nil, nil, 554, nil, nil, nil, nil, nil, - 554, nil, nil, nil, nil, nil, nil, nil, nil, 554, - nil, nil, nil, nil, 554, 554, 554, 554, nil, 554, - 554, 554, 554, nil, nil, nil, nil, 554, 554, nil, - nil, nil, 574, 574, 574, 554, 574, 554, 554, 554, - 574, 574, nil, nil, nil, 574, nil, 574, 574, 574, - 574, 574, 574, 574, nil, nil, nil, nil, nil, 574, - 574, 574, 574, 574, 574, 574, nil, nil, 574, nil, - nil, nil, nil, nil, nil, 574, nil, nil, 574, 574, - 574, 574, 574, 574, 574, 574, nil, 574, 574, 574, - nil, 574, 574, nil, 574, 574, 574, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 574, nil, nil, 574, - nil, nil, 574, 574, nil, nil, 574, nil, 574, nil, - nil, nil, 574, nil, nil, nil, nil, nil, nil, nil, - nil, 574, nil, nil, nil, nil, 574, 574, 574, 574, - nil, 574, 574, 574, 574, nil, nil, nil, nil, 574, - 574, nil, nil, nil, 575, 575, 575, 574, 575, 574, - 574, 574, 575, 575, nil, nil, nil, 575, nil, 575, - 575, 575, 575, 575, 575, 575, nil, nil, nil, nil, - nil, 575, 575, 575, 575, 575, 575, 575, nil, nil, - 575, nil, nil, nil, nil, nil, nil, 575, nil, nil, - 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, - 575, 575, nil, 575, 575, nil, 575, 575, 575, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 575, nil, - nil, 575, nil, nil, 575, 575, nil, nil, 575, nil, - 575, nil, 575, nil, 575, nil, nil, 575, nil, nil, - nil, nil, nil, 575, nil, nil, nil, nil, 575, 575, - 575, 575, nil, 575, 575, 575, 575, nil, nil, nil, - nil, 575, 575, nil, nil, nil, 585, 585, 585, 575, - 585, 575, 575, 575, 585, 585, nil, nil, nil, 585, - nil, 585, 585, 585, 585, 585, 585, 585, nil, nil, - nil, nil, nil, 585, 585, 585, 585, 585, 585, 585, - nil, nil, 585, nil, nil, nil, nil, nil, nil, 585, - nil, nil, 585, 585, 585, 585, 585, 585, 585, 585, - 585, 585, 585, 585, nil, 585, 585, nil, 585, 585, - 585, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 585, nil, nil, 585, nil, nil, 585, 585, nil, nil, - 585, nil, 585, nil, 585, nil, 585, nil, nil, 585, - nil, nil, nil, nil, nil, 585, nil, nil, nil, nil, - 585, 585, 585, 585, nil, 585, 585, 585, 585, nil, - nil, nil, nil, 585, 585, nil, nil, nil, 619, 619, - 619, 585, 619, 585, 585, 585, 619, 619, nil, nil, - nil, 619, nil, 619, 619, 619, 619, 619, 619, 619, - nil, nil, nil, nil, nil, 619, 619, 619, 619, 619, - 619, 619, nil, nil, 619, nil, nil, nil, nil, nil, - nil, 619, nil, nil, 619, 619, 619, 619, 619, 619, - 619, 619, nil, 619, 619, 619, nil, 619, 619, nil, - 619, 619, 619, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 619, nil, nil, 619, nil, nil, 619, 619, - nil, nil, 619, nil, 619, nil, nil, nil, 619, nil, - nil, nil, nil, nil, nil, nil, nil, 619, nil, nil, - nil, nil, 619, 619, 619, 619, nil, 619, 619, 619, - 619, nil, nil, nil, nil, 619, 619, nil, nil, nil, - 620, 620, 620, 619, 620, 619, 619, 619, 620, 620, - nil, nil, nil, 620, nil, 620, 620, 620, 620, 620, - 620, 620, nil, nil, nil, nil, nil, 620, 620, 620, - 620, 620, 620, 620, nil, nil, 620, nil, nil, nil, - nil, nil, nil, 620, nil, nil, 620, 620, 620, 620, - 620, 620, 620, 620, nil, 620, 620, 620, nil, 620, - 620, nil, 620, 620, 620, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 620, nil, nil, 620, nil, nil, - 620, 620, nil, nil, 620, nil, nil, nil, nil, nil, - 620, nil, nil, nil, nil, nil, nil, nil, nil, 620, - nil, nil, nil, nil, 620, 620, 620, 620, nil, 620, - 620, 620, 620, nil, nil, nil, nil, 620, 620, nil, - nil, nil, 623, 623, 623, 620, 623, 620, 620, 620, - 623, 623, nil, nil, nil, 623, nil, 623, 623, 623, - 623, 623, 623, 623, nil, nil, nil, nil, nil, 623, - 623, 623, 623, 623, 623, 623, nil, nil, 623, nil, - nil, nil, nil, nil, nil, 623, nil, nil, 623, 623, - 623, 623, 623, 623, 623, 623, 623, 623, 623, 623, - nil, 623, 623, nil, 623, 623, 623, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 623, nil, nil, 623, - nil, nil, 623, 623, nil, nil, 623, nil, 623, nil, - 623, nil, 623, nil, nil, 623, nil, nil, nil, nil, - nil, 623, nil, nil, nil, nil, 623, 623, 623, 623, - nil, 623, 623, 623, 623, nil, nil, nil, nil, 623, - 623, nil, nil, nil, 624, 624, 624, 623, 624, 623, - 623, 623, 624, 624, nil, nil, nil, 624, nil, 624, - 624, 624, 624, 624, 624, 624, nil, nil, nil, nil, - nil, 624, 624, 624, 624, 624, 624, 624, nil, nil, - 624, nil, nil, nil, nil, nil, nil, 624, nil, nil, - 624, 624, 624, 624, 624, 624, 624, 624, 624, 624, - 624, 624, nil, 624, 624, nil, 624, 624, 624, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 624, nil, - nil, 624, nil, nil, 624, 624, nil, nil, 624, nil, - nil, nil, 624, nil, 624, nil, nil, 624, nil, nil, - nil, nil, nil, 624, nil, nil, nil, nil, 624, 624, - 624, 624, nil, 624, 624, 624, 624, nil, nil, nil, - nil, 624, 624, nil, nil, nil, 625, 625, 625, 624, - 625, 624, 624, 624, 625, 625, nil, nil, nil, 625, - nil, 625, 625, 625, 625, 625, 625, 625, nil, nil, - nil, nil, nil, 625, 625, 625, 625, 625, 625, 625, - nil, nil, 625, nil, nil, nil, nil, nil, nil, 625, - nil, nil, 625, 625, 625, 625, 625, 625, 625, 625, - nil, 625, 625, 625, nil, 625, 625, nil, 625, 625, - 625, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 625, nil, nil, 625, nil, nil, 625, 625, nil, nil, - 625, nil, nil, nil, nil, nil, 625, nil, nil, nil, - nil, nil, nil, nil, nil, 625, nil, nil, nil, nil, - 625, 625, 625, 625, nil, 625, 625, 625, 625, nil, - nil, nil, nil, 625, 625, nil, nil, nil, 626, 626, - 626, 625, 626, 625, 625, 625, 626, 626, nil, nil, - nil, 626, nil, 626, 626, 626, 626, 626, 626, 626, - nil, nil, nil, nil, nil, 626, 626, 626, 626, 626, - 626, 626, nil, nil, 626, nil, nil, nil, nil, nil, - nil, 626, nil, nil, 626, 626, 626, 626, 626, 626, - 626, 626, nil, 626, 626, 626, nil, 626, 626, nil, - 626, 626, 626, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 626, nil, nil, 626, nil, nil, 626, 626, - nil, nil, 626, nil, nil, nil, nil, nil, 626, nil, - nil, nil, nil, nil, nil, nil, nil, 626, nil, nil, - nil, nil, 626, 626, 626, 626, nil, 626, 626, 626, - 626, nil, nil, nil, nil, 626, 626, nil, nil, nil, - 630, 630, 630, 626, 630, 626, 626, 626, 630, 630, - nil, nil, nil, 630, nil, 630, 630, 630, 630, 630, - 630, 630, nil, nil, nil, nil, nil, 630, 630, 630, - 630, 630, 630, 630, nil, nil, 630, nil, nil, nil, - nil, nil, nil, 630, nil, nil, 630, 630, 630, 630, - 630, 630, 630, 630, nil, 630, 630, 630, nil, 630, - 630, nil, 630, 630, 630, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 630, nil, nil, 630, nil, nil, - 630, 630, nil, nil, 630, nil, nil, nil, nil, nil, - 630, nil, nil, nil, nil, nil, nil, nil, nil, 630, - nil, nil, nil, nil, 630, 630, 630, 630, nil, 630, - 630, 630, 630, nil, nil, nil, nil, 630, 630, nil, - nil, nil, 631, 631, 631, 630, 631, 630, 630, 630, - 631, 631, nil, nil, nil, 631, nil, 631, 631, 631, - 631, 631, 631, 631, nil, nil, nil, nil, nil, 631, - 631, 631, 631, 631, 631, 631, nil, nil, 631, nil, - nil, nil, nil, nil, nil, 631, nil, nil, 631, 631, - 631, 631, 631, 631, 631, 631, nil, 631, 631, 631, - nil, 631, 631, nil, 631, 631, 631, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 631, nil, nil, 631, - nil, nil, 631, 631, nil, nil, 631, nil, nil, nil, - nil, nil, 631, nil, nil, nil, nil, nil, nil, nil, - nil, 631, nil, nil, nil, nil, 631, 631, 631, 631, - nil, 631, 631, 631, 631, nil, nil, nil, nil, 631, - 631, nil, nil, nil, 634, 634, 634, 631, 634, 631, - 631, 631, 634, 634, nil, nil, nil, 634, nil, 634, - 634, 634, 634, 634, 634, 634, nil, nil, nil, nil, - nil, 634, 634, 634, 634, 634, 634, 634, nil, nil, - 634, nil, nil, nil, nil, nil, nil, 634, nil, nil, - 634, 634, 634, 634, 634, 634, 634, 634, nil, 634, - 634, 634, nil, 634, 634, nil, 634, 634, 634, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 634, nil, - nil, 634, nil, nil, 634, 634, nil, nil, 634, nil, - nil, nil, nil, nil, 634, nil, nil, nil, nil, nil, - nil, nil, nil, 634, nil, nil, nil, nil, 634, 634, - 634, 634, nil, 634, 634, 634, 634, nil, nil, nil, - nil, 634, 634, nil, nil, nil, 635, 635, 635, 634, - 635, 634, 634, 634, 635, 635, nil, nil, nil, 635, - nil, 635, 635, 635, 635, 635, 635, 635, nil, nil, - nil, nil, nil, 635, 635, 635, 635, 635, 635, 635, - nil, nil, 635, nil, nil, nil, nil, nil, nil, 635, - nil, nil, 635, 635, 635, 635, 635, 635, 635, 635, - nil, 635, 635, 635, nil, 635, 635, nil, 635, 635, - 635, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 635, nil, nil, 635, nil, nil, 635, 635, nil, nil, - 635, nil, nil, nil, nil, nil, 635, nil, nil, nil, - nil, nil, nil, nil, nil, 635, nil, nil, nil, nil, - 635, 635, 635, 635, nil, 635, 635, 635, 635, nil, - nil, nil, nil, 635, 635, nil, nil, nil, 659, 659, - 659, 635, 659, 635, 635, 635, 659, 659, nil, nil, - nil, 659, nil, 659, 659, 659, 659, 659, 659, 659, - nil, nil, nil, nil, nil, 659, 659, 659, 659, 659, - 659, 659, nil, nil, 659, nil, nil, nil, nil, nil, - nil, 659, nil, nil, 659, 659, 659, 659, 659, 659, - 659, 659, nil, 659, 659, 659, nil, 659, 659, nil, - 659, 659, 659, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 659, nil, nil, 659, nil, nil, 659, 659, - nil, nil, 659, nil, nil, nil, nil, nil, 659, nil, - nil, nil, nil, nil, nil, nil, nil, 659, nil, nil, - nil, nil, 659, 659, 659, 659, nil, 659, 659, 659, - 659, nil, nil, nil, nil, 659, 659, nil, nil, nil, - 662, 662, 662, 659, 662, 659, 659, 659, 662, 662, - nil, nil, nil, 662, nil, 662, 662, 662, 662, 662, - 662, 662, nil, nil, nil, nil, nil, 662, 662, 662, - 662, 662, 662, 662, nil, nil, 662, nil, nil, nil, - nil, nil, nil, 662, nil, nil, 662, 662, 662, 662, - 662, 662, 662, 662, nil, 662, 662, 662, nil, 662, - 662, nil, 662, 662, 662, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 662, nil, nil, 662, nil, nil, - 662, 662, nil, nil, 662, nil, nil, nil, nil, nil, - 662, nil, nil, nil, nil, nil, nil, nil, nil, 662, - nil, nil, nil, nil, 662, 662, 662, 662, nil, 662, - 662, 662, 662, nil, nil, nil, nil, 662, 662, nil, - nil, nil, 666, 666, 666, 662, 666, 662, 662, 662, - 666, 666, nil, nil, nil, 666, nil, 666, 666, 666, - 666, 666, 666, 666, nil, nil, nil, nil, nil, 666, - 666, 666, 666, 666, 666, 666, nil, nil, 666, nil, - nil, nil, nil, nil, nil, 666, nil, nil, 666, 666, - 666, 666, 666, 666, 666, 666, nil, 666, 666, 666, - nil, 666, 666, nil, nil, nil, 666, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 666, nil, nil, 666, - nil, nil, 666, 666, nil, nil, 666, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 666, 666, 666, 666, - nil, 666, 666, 666, 666, nil, nil, nil, nil, 666, - 666, nil, nil, nil, 677, 677, 677, 666, 677, 666, - 666, 666, 677, 677, nil, nil, nil, 677, nil, 677, - 677, 677, 677, 677, 677, 677, nil, nil, nil, nil, - nil, 677, 677, 677, 677, 677, 677, 677, nil, nil, - 677, nil, nil, nil, nil, nil, nil, 677, nil, nil, - 677, 677, 677, 677, 677, 677, 677, 677, nil, 677, - 677, 677, nil, 677, 677, nil, nil, nil, 677, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 677, nil, - nil, 677, nil, nil, 677, 677, nil, nil, 677, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 677, 677, - 677, 677, nil, 677, 677, 677, 677, nil, nil, nil, - nil, 677, 677, nil, nil, nil, 682, 682, 682, 677, - 682, 677, 677, 677, 682, 682, nil, nil, nil, 682, - nil, 682, 682, 682, 682, 682, 682, 682, nil, nil, - nil, nil, nil, 682, 682, 682, 682, 682, 682, 682, - nil, nil, 682, nil, nil, nil, nil, nil, nil, 682, - nil, nil, 682, 682, 682, 682, 682, 682, 682, 682, - nil, 682, 682, 682, nil, 682, 682, nil, 682, 682, - 682, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 682, nil, nil, 682, nil, nil, 682, 682, nil, nil, - 682, nil, 682, nil, nil, nil, 682, nil, nil, nil, - nil, nil, nil, nil, nil, 682, nil, nil, nil, nil, - 682, 682, 682, 682, nil, 682, 682, 682, 682, nil, - nil, nil, nil, 682, 682, nil, nil, nil, 699, 699, - 699, 682, 699, 682, 682, 682, 699, 699, nil, nil, - nil, 699, nil, 699, 699, 699, 699, 699, 699, 699, - nil, nil, nil, nil, nil, 699, 699, 699, 699, 699, - 699, 699, nil, nil, 699, nil, nil, nil, nil, nil, - nil, 699, nil, nil, 699, 699, 699, 699, 699, 699, - 699, 699, nil, 699, 699, 699, nil, 699, 699, nil, - 699, 699, 699, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 699, nil, nil, 699, nil, nil, 699, 699, - nil, nil, 699, nil, nil, nil, nil, nil, 699, nil, - nil, nil, nil, nil, nil, nil, nil, 699, nil, nil, - nil, nil, 699, 699, 699, 699, nil, 699, 699, 699, - 699, nil, nil, nil, nil, 699, 699, nil, nil, nil, - 725, 725, 725, 699, 725, 699, 699, 699, 725, 725, - nil, nil, nil, 725, nil, 725, 725, 725, 725, 725, - 725, 725, nil, nil, nil, nil, nil, 725, 725, 725, - 725, 725, 725, 725, nil, nil, 725, nil, nil, nil, - nil, nil, nil, 725, nil, nil, 725, 725, 725, 725, - 725, 725, 725, 725, nil, 725, 725, 725, nil, 725, - 725, nil, 725, 725, 725, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 725, nil, nil, 725, nil, nil, - 725, 725, nil, nil, 725, nil, nil, nil, nil, nil, - 725, nil, nil, nil, nil, nil, nil, nil, nil, 725, - nil, nil, nil, nil, 725, 725, 725, 725, nil, 725, - 725, 725, 725, nil, nil, nil, nil, 725, 725, nil, - nil, nil, 731, 731, 731, 725, 731, 725, 725, 725, - 731, 731, nil, nil, nil, 731, nil, 731, 731, 731, - 731, 731, 731, 731, nil, nil, nil, nil, nil, 731, - 731, 731, 731, 731, 731, 731, nil, nil, 731, nil, - nil, nil, nil, nil, nil, 731, nil, nil, 731, 731, - 731, 731, 731, 731, 731, 731, nil, 731, 731, 731, - nil, 731, 731, nil, 731, 731, 731, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 731, nil, nil, 731, - nil, nil, 731, 731, nil, nil, 731, nil, nil, nil, - nil, nil, 731, nil, nil, nil, nil, nil, nil, nil, - nil, 731, nil, nil, nil, nil, 731, 731, 731, 731, - nil, 731, 731, 731, 731, nil, nil, nil, nil, 731, - 731, nil, nil, nil, 754, 754, 754, 731, 754, 731, - 731, 731, 754, 754, nil, nil, nil, 754, nil, 754, - 754, 754, 754, 754, 754, 754, nil, nil, nil, nil, - nil, 754, 754, 754, 754, 754, 754, 754, nil, nil, - 754, nil, nil, nil, nil, nil, nil, 754, nil, nil, - 754, 754, 754, 754, 754, 754, 754, 754, nil, 754, - 754, 754, nil, 754, 754, nil, 754, 754, 754, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 754, nil, - nil, 754, nil, nil, 754, 754, nil, nil, 754, nil, - nil, nil, nil, nil, 754, nil, nil, nil, nil, nil, - nil, nil, nil, 754, nil, nil, nil, nil, 754, 754, - 754, 754, nil, 754, 754, 754, 754, nil, nil, nil, - nil, 754, 754, nil, nil, nil, 756, 756, 756, 754, - 756, 754, 754, 754, 756, 756, nil, nil, nil, 756, - nil, 756, 756, 756, 756, 756, 756, 756, nil, nil, - nil, nil, nil, 756, 756, 756, 756, 756, 756, 756, - nil, nil, 756, nil, nil, nil, nil, nil, nil, 756, - nil, nil, 756, 756, 756, 756, 756, 756, 756, 756, - nil, 756, 756, 756, nil, 756, 756, nil, 756, 756, - 756, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 756, nil, nil, 756, nil, nil, 756, 756, nil, nil, - 756, nil, nil, nil, nil, nil, 756, nil, nil, nil, - nil, nil, nil, nil, nil, 756, nil, nil, nil, nil, - 756, 756, 756, 756, nil, 756, 756, 756, 756, nil, - nil, nil, nil, 756, 756, nil, nil, nil, 770, 770, - 770, 756, 770, 756, 756, 756, 770, 770, nil, nil, - nil, 770, nil, 770, 770, 770, 770, 770, 770, 770, - nil, nil, nil, nil, nil, 770, 770, 770, 770, 770, - 770, 770, nil, nil, 770, nil, nil, nil, nil, nil, - nil, 770, nil, nil, 770, 770, 770, 770, 770, 770, - 770, 770, nil, 770, 770, 770, nil, 770, 770, nil, - 770, 770, 770, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 770, nil, nil, 770, nil, nil, 770, 770, - nil, nil, 770, nil, nil, nil, nil, nil, 770, nil, - nil, nil, nil, nil, nil, nil, nil, 770, nil, nil, - nil, nil, 770, 770, 770, 770, nil, 770, 770, 770, - 770, nil, nil, nil, nil, 770, 770, nil, nil, nil, - 771, 771, 771, 770, 771, 770, 770, 770, 771, 771, - nil, nil, nil, 771, nil, 771, 771, 771, 771, 771, - 771, 771, nil, nil, nil, nil, nil, 771, 771, 771, - 771, 771, 771, 771, nil, nil, 771, nil, nil, nil, - nil, nil, nil, 771, nil, nil, 771, 771, 771, 771, - 771, 771, 771, 771, nil, 771, 771, 771, nil, 771, - 771, nil, 771, 771, 771, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 771, nil, nil, 771, nil, nil, - 771, 771, nil, nil, 771, nil, nil, nil, nil, nil, - 771, nil, nil, nil, nil, nil, nil, nil, nil, 771, - nil, nil, nil, nil, 771, 771, 771, 771, nil, 771, - 771, 771, 771, nil, nil, nil, nil, 771, 771, nil, - nil, nil, 772, 772, 772, 771, 772, 771, 771, 771, - 772, 772, nil, nil, nil, 772, nil, 772, 772, 772, - 772, 772, 772, 772, nil, nil, nil, nil, nil, 772, - 772, 772, 772, 772, 772, 772, nil, nil, 772, nil, - nil, nil, nil, nil, nil, 772, nil, nil, 772, 772, - 772, 772, 772, 772, 772, 772, nil, 772, 772, 772, - nil, 772, 772, nil, 772, 772, 772, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 772, nil, nil, 772, - nil, nil, 772, 772, nil, nil, 772, nil, nil, nil, - nil, nil, 772, nil, nil, nil, nil, nil, nil, nil, - nil, 772, nil, nil, nil, nil, 772, 772, 772, 772, - nil, 772, 772, 772, 772, nil, nil, nil, nil, 772, - 772, nil, nil, nil, 773, 773, 773, 772, 773, 772, - 772, 772, 773, 773, nil, nil, nil, 773, nil, 773, - 773, 773, 773, 773, 773, 773, nil, nil, nil, nil, - nil, 773, 773, 773, 773, 773, 773, 773, nil, nil, - 773, nil, nil, nil, nil, nil, nil, 773, nil, nil, - 773, 773, 773, 773, 773, 773, 773, 773, nil, 773, - 773, 773, nil, 773, 773, nil, 773, 773, 773, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 773, nil, - nil, 773, nil, nil, 773, 773, nil, nil, 773, nil, - nil, nil, nil, nil, 773, nil, nil, nil, nil, nil, - nil, nil, nil, 773, nil, nil, nil, nil, 773, 773, - 773, 773, nil, 773, 773, 773, 773, nil, nil, nil, - nil, 773, 773, nil, nil, nil, 787, 787, 787, 773, - 787, 773, 773, 773, 787, 787, nil, nil, nil, 787, - nil, 787, 787, 787, 787, 787, 787, 787, nil, nil, - nil, nil, nil, 787, 787, 787, 787, 787, 787, 787, - nil, nil, 787, nil, nil, nil, nil, nil, nil, 787, - nil, nil, 787, 787, 787, 787, 787, 787, 787, 787, - nil, 787, 787, 787, nil, 787, 787, nil, nil, nil, - 787, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 787, nil, nil, 787, nil, nil, 787, 787, nil, nil, - 787, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 787, 787, 787, 787, nil, 787, 787, 787, 787, nil, - nil, nil, nil, 787, 787, nil, nil, nil, 837, 837, - 837, 787, 837, 787, 787, 787, 837, 837, nil, nil, - nil, 837, nil, 837, 837, 837, 837, 837, 837, 837, - nil, nil, nil, nil, nil, 837, 837, 837, 837, 837, - 837, 837, nil, nil, 837, nil, nil, nil, nil, nil, - nil, 837, nil, nil, 837, 837, 837, 837, 837, 837, - 837, 837, nil, 837, 837, 837, nil, 837, 837, nil, - 837, 837, 837, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 837, nil, nil, 837, nil, nil, 837, 837, - nil, nil, 837, nil, nil, nil, nil, nil, 837, nil, - nil, nil, nil, nil, nil, nil, nil, 837, nil, nil, - nil, nil, 837, 837, 837, 837, nil, 837, 837, 837, - 837, nil, nil, nil, nil, 837, 837, nil, nil, nil, - 842, 842, 842, 837, 842, 837, 837, 837, 842, 842, - nil, nil, nil, 842, nil, 842, 842, 842, 842, 842, - 842, 842, nil, nil, nil, nil, nil, 842, 842, 842, - 842, 842, 842, 842, nil, nil, 842, nil, nil, nil, - nil, nil, nil, 842, nil, nil, 842, 842, 842, 842, - 842, 842, 842, 842, nil, 842, 842, 842, nil, 842, - 842, nil, 842, 842, 842, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 842, nil, nil, 842, nil, nil, - 842, 842, nil, nil, 842, nil, 842, nil, nil, nil, - 842, nil, nil, nil, nil, nil, nil, nil, nil, 842, - nil, nil, nil, nil, 842, 842, 842, 842, nil, 842, - 842, 842, 842, nil, nil, nil, nil, 842, 842, nil, - nil, nil, 859, 859, 859, 842, 859, 842, 842, 842, - 859, 859, nil, nil, nil, 859, nil, 859, 859, 859, - 859, 859, 859, 859, nil, nil, nil, nil, nil, 859, - 859, 859, 859, 859, 859, 859, nil, nil, 859, nil, - nil, nil, nil, nil, nil, 859, nil, nil, 859, 859, - 859, 859, 859, 859, 859, 859, 859, 859, 859, 859, - nil, 859, 859, nil, 859, 859, 859, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 859, nil, nil, 859, - nil, nil, 859, 859, nil, nil, 859, nil, nil, nil, - 859, nil, 859, nil, nil, 859, nil, nil, nil, nil, - nil, 859, nil, nil, nil, nil, 859, 859, 859, 859, - nil, 859, 859, 859, 859, nil, nil, nil, nil, 859, - 859, nil, nil, nil, 860, 860, 860, 859, 860, 859, - 859, 859, 860, 860, nil, nil, nil, 860, nil, 860, - 860, 860, 860, 860, 860, 860, nil, nil, nil, nil, - nil, 860, 860, 860, 860, 860, 860, 860, nil, nil, - 860, nil, nil, nil, nil, nil, nil, 860, nil, nil, - 860, 860, 860, 860, 860, 860, 860, 860, nil, 860, - 860, 860, nil, 860, 860, nil, 860, 860, 860, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 860, nil, - nil, 860, nil, nil, 860, 860, nil, nil, 860, nil, - nil, nil, nil, nil, 860, nil, nil, nil, nil, nil, - nil, nil, nil, 860, nil, nil, nil, nil, 860, 860, - 860, 860, nil, 860, 860, 860, 860, nil, nil, nil, - nil, 860, 860, nil, nil, nil, 874, 874, 874, 860, - 874, 860, 860, 860, 874, 874, nil, nil, nil, 874, - nil, 874, 874, 874, 874, 874, 874, 874, nil, nil, - nil, nil, nil, 874, 874, 874, 874, 874, 874, 874, - nil, nil, 874, nil, nil, nil, nil, nil, nil, 874, - nil, nil, 874, 874, 874, 874, 874, 874, 874, 874, - nil, 874, 874, 874, nil, 874, 874, nil, nil, nil, - 874, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 874, nil, nil, 874, nil, nil, 874, 874, nil, nil, - 874, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 874, 874, 874, 874, nil, 874, 874, 874, 874, nil, - nil, nil, nil, 874, 874, nil, nil, nil, 886, 886, - 886, 874, 886, 874, 874, 874, 886, 886, nil, nil, - nil, 886, nil, 886, 886, 886, 886, 886, 886, 886, - nil, nil, nil, nil, nil, 886, 886, 886, 886, 886, - 886, 886, nil, nil, 886, nil, nil, nil, nil, nil, - nil, 886, nil, nil, 886, 886, 886, 886, 886, 886, - 886, 886, nil, 886, 886, 886, nil, 886, 886, nil, - nil, nil, 886, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 886, nil, nil, 886, nil, nil, 886, 886, - nil, nil, 886, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 886, 886, 886, 886, nil, 886, 886, 886, - 886, nil, nil, nil, nil, 886, 886, nil, nil, nil, - 923, 923, 923, 886, 923, 886, 886, 886, 923, 923, - nil, nil, nil, 923, nil, 923, 923, 923, 923, 923, - 923, 923, nil, nil, nil, nil, nil, 923, 923, 923, - 923, 923, 923, 923, nil, nil, 923, nil, nil, nil, - nil, nil, nil, 923, nil, nil, 923, 923, 923, 923, - 923, 923, 923, 923, nil, 923, 923, 923, nil, 923, - 923, nil, 923, 923, 923, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 923, nil, nil, 923, nil, nil, - 923, 923, nil, nil, 923, nil, nil, nil, nil, nil, - 923, nil, nil, nil, nil, nil, nil, nil, nil, 923, - nil, nil, nil, nil, 923, 923, 923, 923, nil, 923, - 923, 923, 923, nil, nil, nil, nil, 923, 923, nil, - nil, nil, 985, 985, 985, 923, 985, 923, 923, 923, - 985, 985, nil, nil, nil, 985, nil, 985, 985, 985, - 985, 985, 985, 985, nil, nil, nil, nil, nil, 985, - 985, 985, 985, 985, 985, 985, nil, nil, 985, nil, - nil, nil, nil, nil, nil, 985, nil, nil, 985, 985, - 985, 985, 985, 985, 985, 985, 985, 985, 985, 985, - nil, 985, 985, nil, 985, 985, 985, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 985, nil, nil, 985, - nil, nil, 985, 985, nil, nil, 985, nil, 985, nil, - 985, nil, 985, nil, nil, 985, nil, nil, nil, nil, - nil, 985, nil, nil, nil, nil, 985, 985, 985, 985, - nil, 985, 985, 985, 985, nil, nil, nil, nil, 985, - 985, nil, nil, nil, nil, 56, nil, 985, nil, 985, - 985, 985, 56, 56, 56, nil, nil, 56, 56, 56, - nil, 56, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 56, 56, 56, nil, nil, nil, nil, nil, nil, - nil, 56, 56, nil, 56, 56, 56, 56, 56, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 56, 56, 56, 56, 56, 56, 56, 56, - 56, 56, 56, 56, 56, 56, nil, nil, 56, 56, - 56, nil, nil, 56, nil, nil, 56, nil, nil, 56, - 56, nil, 56, nil, 56, nil, 56, nil, 56, 56, - nil, 56, 56, 56, 56, 56, nil, 56, nil, 56, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 56, nil, nil, 56, 56, 56, 56, - 424, 56, nil, 56, nil, nil, nil, 424, 424, 424, - nil, nil, 424, 424, 424, nil, 424, nil, nil, nil, - nil, nil, nil, nil, nil, 424, 424, 424, 424, nil, - nil, nil, nil, nil, nil, nil, 424, 424, nil, 424, - 424, 424, 424, 424, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 424, 424, 424, - 424, 424, 424, 424, 424, 424, 424, 424, 424, 424, - 424, nil, nil, 424, 424, 424, nil, nil, 424, nil, - nil, 424, nil, nil, 424, 424, nil, 424, nil, 424, - nil, 424, nil, 424, 424, nil, 424, 424, 424, 424, - 424, nil, 424, 424, 424, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 424, nil, - nil, 424, 424, 424, 424, 425, 424, nil, 424, nil, - nil, nil, 425, 425, 425, nil, nil, 425, 425, 425, - nil, 425, nil, nil, nil, nil, nil, nil, nil, nil, - 425, 425, 425, 425, nil, nil, nil, nil, nil, nil, - nil, 425, 425, nil, 425, 425, 425, 425, 425, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 425, 425, 425, 425, 425, 425, 425, 425, - 425, 425, 425, 425, 425, 425, nil, nil, 425, 425, - 425, nil, nil, 425, nil, nil, 425, nil, nil, 425, - 425, nil, 425, nil, 425, nil, 425, nil, 425, 425, - nil, 425, 425, 425, 425, 425, nil, 425, 425, 425, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 425, nil, nil, 425, 425, 425, 425, - 27, 425, nil, 425, nil, nil, nil, 27, 27, 27, - nil, nil, 27, 27, 27, nil, 27, nil, nil, nil, - nil, nil, nil, nil, nil, 27, 27, 27, nil, nil, - nil, nil, nil, nil, nil, nil, 27, 27, nil, 27, - 27, 27, 27, 27, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, nil, nil, 27, 27, 27, nil, nil, 27, nil, - 27, 27, nil, nil, 27, 27, nil, 27, nil, 27, - nil, 27, nil, 27, 27, nil, 27, 27, 27, 27, - 27, 28, 27, 27, 27, nil, nil, nil, 28, 28, - 28, nil, nil, 28, 28, 28, nil, 28, 27, nil, - nil, 27, 27, nil, 27, nil, 27, 28, 28, nil, - nil, nil, nil, nil, nil, nil, nil, 28, 28, nil, - 28, 28, 28, 28, 28, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, nil, nil, 28, 28, 28, nil, nil, 28, - nil, 28, 28, nil, nil, 28, 28, nil, 28, nil, - 28, nil, 28, nil, 28, 28, nil, 28, 28, 28, - 28, 28, nil, 28, 415, 28, nil, nil, nil, nil, - nil, 415, 415, 415, nil, nil, 415, 415, 415, 28, - 415, nil, 28, 28, nil, 28, nil, 28, nil, 415, - 415, 415, nil, nil, nil, nil, nil, nil, nil, nil, - 415, 415, nil, 415, 415, 415, 415, 415, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 415, 415, 415, 415, 415, 415, 415, 415, 415, - 415, 415, 415, 415, 415, nil, nil, 415, 415, 415, - nil, nil, 415, nil, 415, 415, nil, nil, 415, 415, - nil, 415, nil, 415, nil, 415, nil, 415, 415, nil, - 415, 415, 415, 415, 415, nil, 415, 415, 415, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 415, nil, 474, 415, 415, nil, 415, nil, - 415, 474, 474, 474, nil, nil, 474, 474, 474, 646, - 474, 646, 646, 646, 646, 646, nil, nil, nil, 474, - 474, nil, nil, nil, nil, 646, nil, nil, nil, nil, - 474, 474, nil, 474, 474, 474, 474, 474, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 646, 336, nil, - 336, 336, 336, 336, 336, nil, 646, 646, 646, 646, - nil, nil, nil, 646, 336, 534, nil, 534, 534, 534, - 534, 534, 474, nil, nil, nil, nil, nil, nil, 474, - nil, 534, nil, nil, 474, 474, 336, 336, nil, 646, - nil, nil, nil, nil, nil, 336, 336, 336, 336, nil, - nil, nil, 336, 534, nil, nil, nil, 474, 474, nil, - nil, nil, 534, 534, 534, 534, nil, nil, nil, 534, - nil, nil, 474, nil, nil, 474, nil, nil, nil, nil, - 474, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, 8, 8, nil, nil, nil, 8, 8, - 8, 8, 8, 8, 8, 8, 8, 8, nil, nil, - nil, nil, nil, 8, 8, 8, 8, 8, 8, 8, - 8, 8, 8, nil, 8, nil, nil, nil, nil, nil, - nil, nil, nil, 8, 8, nil, 8, 8, 8, 8, - 8, 8, 8, nil, nil, 8, 8, nil, nil, nil, - 8, 8, 8, 8, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 8, 8, nil, - 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 8, nil, nil, 8, 8, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 8, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, 9, 9, 9, nil, nil, nil, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, nil, nil, nil, - nil, nil, 9, 9, 9, 9, 9, 9, 9, 9, - 9, nil, nil, 9, nil, nil, nil, nil, nil, nil, - nil, nil, 9, 9, nil, 9, 9, 9, 9, 9, - 9, 9, nil, nil, 9, 9, nil, nil, nil, 9, - 9, 9, 9, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 9, 9, nil, 9, - 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, - 9, nil, nil, 9, 9, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 9, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, nil, nil, nil, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, nil, nil, nil, nil, - nil, 395, 395, 395, 395, 395, 395, 395, 395, 395, - nil, nil, 395, nil, nil, nil, nil, nil, nil, nil, - nil, 395, 395, nil, 395, 395, 395, 395, 395, 395, - 395, nil, nil, 395, 395, nil, nil, nil, 395, 395, - 395, 395, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 395, 395, nil, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - nil, nil, 395, 395, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 395, 616, 616, - 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, - 616, 616, 616, 616, 616, 616, 616, 616, 616, 616, - 616, 616, nil, nil, nil, 616, 616, 616, 616, 616, - 616, 616, 616, 616, 616, nil, nil, nil, nil, nil, - 616, 616, 616, 616, 616, 616, 616, 616, 616, nil, - nil, 616, nil, nil, nil, nil, nil, nil, nil, nil, - 616, 616, nil, 616, 616, 616, 616, 616, 616, 616, - nil, nil, 616, 616, nil, nil, nil, 616, 616, 616, - 616, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 616, 616, nil, 616, 616, 616, - 616, 616, 616, 616, 616, 616, 616, 616, 616, nil, - nil, 616, 616, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 616, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, nil, nil, nil, 71, 71, 71, 71, 71, 71, - 71, 71, 71, 71, nil, nil, nil, nil, nil, 71, - 71, 71, 71, 71, 71, 71, 71, 71, 71, 71, - 71, nil, 71, nil, nil, nil, nil, nil, nil, 71, - 71, nil, 71, 71, 71, 71, 71, 71, 71, nil, - nil, 71, 71, nil, nil, nil, 71, 71, 71, 71, - nil, nil, nil, nil, nil, 71, nil, nil, nil, nil, - nil, nil, nil, 71, 71, nil, 71, 71, 71, 71, - 71, 71, 71, 71, 71, 71, 71, 71, nil, nil, - 71, 738, 738, 738, 738, 738, 738, 738, 738, 738, - 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, - 738, 738, 738, 738, 738, nil, nil, nil, 738, 738, - 738, 738, 738, 738, 738, 738, 738, 738, nil, nil, - nil, nil, nil, 738, 738, 738, 738, 738, 738, 738, - 738, 738, nil, nil, 738, nil, nil, nil, nil, nil, - nil, nil, nil, 738, 738, nil, 738, 738, 738, 738, - 738, 738, 738, nil, nil, 738, 738, nil, nil, nil, - 738, 738, 738, 738, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 738, 738, nil, - 738, 738, 738, 738, 738, 738, 738, 738, 738, 738, - 738, 738, 210, 210, 738, nil, 210, nil, nil, nil, - nil, nil, nil, nil, nil, 210, 210, nil, 210, 210, - 210, 210, 210, 210, 210, nil, nil, 210, 210, nil, - nil, nil, 210, 210, 210, 210, nil, nil, nil, nil, - nil, 210, nil, nil, nil, nil, nil, nil, nil, 210, - 210, nil, 210, 210, 210, 210, 210, 210, 210, 210, - 210, 210, 210, 210, 211, 211, 210, nil, 211, nil, - nil, nil, nil, nil, nil, nil, nil, 211, 211, nil, - 211, 211, 211, 211, 211, 211, 211, nil, nil, 211, - 211, nil, nil, nil, 211, 211, 211, 211, nil, nil, - nil, nil, nil, 211, nil, nil, nil, nil, nil, nil, - nil, 211, 211, nil, 211, 211, 211, 211, 211, 211, - 211, 211, 211, 211, 211, 211, 259, 259, 211, nil, - 259, nil, nil, nil, nil, nil, nil, nil, nil, 259, - 259, nil, 259, 259, 259, 259, 259, 259, 259, nil, - nil, 259, 259, nil, nil, nil, 259, 259, 259, 259, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 259, 259, nil, 259, 259, 259, 259, - 259, 259, 259, 259, 259, 259, 259, 259, 440, 440, - 259, nil, 440, nil, nil, nil, nil, nil, nil, nil, - nil, 440, 440, nil, 440, 440, 440, 440, 440, 440, - 440, nil, nil, 440, 440, nil, nil, nil, 440, 440, - 440, 440, nil, nil, nil, nil, nil, 440, nil, nil, - nil, nil, nil, nil, nil, 440, 440, nil, 440, 440, - 440, 440, 440, 440, 440, 440, 440, 440, 440, 440, - 441, 441, 440, nil, 441, nil, nil, nil, nil, nil, - nil, nil, nil, 441, 441, nil, 441, 441, 441, 441, - 441, 441, 441, nil, nil, 441, 441, nil, nil, nil, - 441, 441, 441, 441, nil, nil, nil, nil, nil, 441, - nil, nil, nil, nil, nil, nil, nil, 441, 441, nil, - 441, 441, 441, 441, 441, 441, 441, 441, 441, 441, - 441, 441, 507, 507, 441, nil, 507, nil, nil, nil, - nil, nil, nil, nil, nil, 507, 507, nil, 507, 507, - 507, 507, 507, 507, 507, nil, nil, 507, 507, nil, - nil, nil, 507, 507, 507, 507, nil, nil, nil, nil, - nil, 507, nil, nil, nil, nil, nil, nil, nil, 507, - 507, nil, 507, 507, 507, 507, 507, 507, 507, 507, - 507, 507, 507, 507, 508, 508, 507, nil, 508, nil, - nil, nil, nil, nil, nil, nil, nil, 508, 508, nil, - 508, 508, 508, 508, 508, 508, 508, nil, nil, 508, - 508, nil, nil, nil, 508, 508, 508, 508, nil, nil, - nil, nil, nil, 508, nil, nil, nil, nil, nil, nil, - nil, 508, 508, nil, 508, 508, 508, 508, 508, 508, - 508, 508, 508, 508, 508, 508, 517, 517, 508, nil, - 517, nil, nil, nil, nil, nil, nil, nil, nil, 517, - 517, nil, 517, 517, 517, 517, 517, 517, 517, nil, - nil, 517, 517, nil, nil, nil, 517, 517, 517, 517, - nil, nil, nil, nil, nil, 517, nil, nil, nil, nil, - nil, nil, nil, 517, 517, nil, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 518, 518, - 517, nil, 518, nil, nil, nil, nil, nil, nil, nil, - nil, 518, 518, nil, 518, 518, 518, 518, 518, 518, - 518, nil, nil, 518, 518, nil, nil, nil, 518, 518, - 518, 518, nil, nil, nil, nil, nil, 518, nil, nil, - nil, nil, nil, nil, nil, 518, 518, nil, 518, 518, - 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, - 576, 576, 518, nil, 576, nil, nil, nil, nil, nil, - nil, nil, nil, 576, 576, nil, 576, 576, 576, 576, - 576, 576, 576, nil, nil, 576, 576, nil, nil, nil, - 576, 576, 576, 576, nil, nil, nil, nil, nil, 576, - nil, nil, nil, nil, nil, nil, nil, 576, 576, nil, - 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, - 576, 576, 577, 577, 576, nil, 577, nil, nil, nil, - nil, nil, nil, nil, nil, 577, 577, nil, 577, 577, - 577, 577, 577, 577, 577, nil, nil, 577, 577, nil, - nil, nil, 577, 577, 577, 577, nil, nil, nil, nil, - nil, 577, nil, nil, nil, nil, nil, nil, nil, 577, - 577, nil, 577, 577, 577, 577, 577, 577, 577, 577, - 577, 577, 577, 577, 583, 583, 577, nil, 583, nil, - nil, nil, nil, nil, nil, nil, nil, 583, 583, nil, - 583, 583, 583, 583, 583, 583, 583, nil, nil, 583, - 583, nil, nil, nil, 583, 583, 583, 583, nil, nil, - nil, nil, nil, 583, nil, nil, nil, nil, nil, nil, - nil, 583, 583, nil, 583, 583, 583, 583, 583, 583, - 583, 583, 583, 583, 583, 583, 584, 584, 583, nil, - 584, nil, nil, nil, nil, nil, nil, nil, nil, 584, - 584, nil, 584, 584, 584, 584, 584, 584, 584, nil, - nil, 584, 584, nil, nil, nil, 584, 584, 584, 584, - nil, nil, nil, nil, nil, 584, nil, nil, nil, nil, - nil, nil, nil, 584, 584, nil, 584, 584, 584, 584, - 584, 584, 584, 584, 584, 584, 584, 584, 939, 939, - 584, nil, 939, nil, nil, nil, nil, nil, nil, nil, - nil, 939, 939, nil, 939, 939, 939, 939, 939, 939, - 939, nil, nil, 939, 939, nil, nil, nil, 939, 939, - 939, 939, nil, nil, nil, nil, nil, 939, nil, nil, - nil, nil, nil, nil, nil, 939, 939, nil, 939, 939, - 939, 939, 939, 939, 939, 939, 939, 939, 939, 939, - 986, 986, 939, nil, 986, nil, nil, nil, nil, nil, - nil, nil, nil, 986, 986, nil, 986, 986, 986, 986, - 986, 986, 986, nil, nil, 986, 986, nil, nil, nil, - 986, 986, 986, 986, nil, nil, nil, nil, nil, 986, - nil, nil, nil, nil, nil, nil, nil, 986, 986, nil, - 986, 986, 986, 986, 986, 986, 986, 986, 986, 986, - 986, 986, 987, 987, 986, nil, 987, nil, nil, nil, - nil, nil, nil, nil, nil, 987, 987, nil, 987, 987, - 987, 987, 987, 987, 987, nil, nil, 987, 987, nil, - nil, nil, 987, 987, 987, 987, nil, nil, nil, nil, - nil, 987, nil, nil, nil, nil, nil, nil, nil, 987, - 987, nil, 987, 987, 987, 987, 987, 987, 987, 987, - 987, 987, 987, 987, nil, 693, 987, 693, 693, 693, - 693, 693, nil, 695, nil, 695, 695, 695, 695, 695, - nil, 693, nil, nil, nil, nil, nil, nil, 736, 695, - 736, 736, 736, 736, 736, nil, nil, nil, nil, nil, - nil, nil, nil, 693, 736, nil, nil, nil, nil, nil, - nil, 695, 693, 693, 693, 693, nil, nil, nil, 693, - 695, 695, 695, 695, nil, nil, 736, 695, 737, nil, - 737, 737, 737, 737, 737, 736, 736, 736, 736, nil, - nil, nil, 736, 865, 737, 865, 865, 865, 865, 865, - nil, 867, nil, 867, 867, 867, 867, 867, nil, 865, - nil, nil, nil, nil, nil, nil, 737, 867, 893, nil, - 893, 893, 893, 893, 893, 737, 737, 737, 737, nil, - nil, 865, 737, nil, 893, nil, nil, nil, nil, 867, - 865, 865, 865, 865, nil, nil, nil, 865, 867, 867, - 867, 867, nil, nil, nil, 867, 893, 897, nil, 897, - 897, 897, 897, 897, nil, 893, 893, 893, 893, nil, - nil, nil, 893, 897, 899, nil, 899, 899, 899, 899, - 899, nil, 971, nil, 971, 971, 971, 971, 971, nil, - 899, nil, nil, nil, nil, 897, nil, 973, 971, 973, - 973, 973, 973, 973, nil, nil, 897, 897, nil, nil, - nil, 897, 899, 973, nil, nil, nil, nil, nil, nil, - 971, nil, nil, 899, 899, nil, nil, nil, 899, 971, - 971, 971, 971, nil, nil, 973, 971, 975, nil, 975, - 975, 975, 975, 975, nil, nil, 973, 973, nil, nil, - nil, 973, 977, 975, 977, 977, 977, 977, 977, nil, - 989, nil, 989, 989, 989, 989, 989, 1015, 977, 1015, - 1015, 1015, 1015, 1015, nil, 975, 989, nil, nil, nil, - nil, nil, nil, 1015, nil, nil, 975, 975, nil, nil, - 977, 975, nil, nil, nil, nil, nil, nil, 989, nil, - nil, 977, 977, nil, nil, 1015, 977, nil, nil, 989, - 989, nil, nil, nil, 989, nil, 1015, 1015, nil, nil, - nil, 1015 ] - -racc_action_pointer = [ - 750, 47, nil, 123, nil, 5120, 1299, -62, 23249, 23378, - -21, nil, -43, 71, 533, -41, 34, -4, nil, -72, - 5252, 1173, 168, nil, 157, nil, 6, 22760, 22871, 5384, - 5516, 5648, nil, 891, 5780, 5912, nil, 71, 227, 254, - 154, 228, 6052, 6184, 6316, 95, 544, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 22355, nil, -71, 6448, - 6580, -23, nil, 6712, 6844, nil, nil, 6976, 7116, 7248, - 7380, 23765, nil, nil, nil, nil, nil, 470, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 0, nil, nil, 113, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 262, - nil, 7520, nil, nil, nil, nil, 7660, 7792, 7924, 8056, - 8196, 1032, nil, 220, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 141, nil, 1173, 8328, 8460, 8592, - 23941, 24003, 8724, 8856, 8988, 9120, 9252, 9384, nil, nil, - 546, -77, -62, 233, 131, 196, 256, nil, 9516, 1314, - 273, 9648, 9780, 9912, 10044, 10176, 10308, 10440, 10572, 10704, - 10836, 10968, 11100, 11232, 11364, 11496, 11628, 11760, 11892, 12024, - 12156, 12288, 12420, 12552, 12684, 12816, nil, nil, nil, 24065, - nil, nil, 275, 12948, 13080, nil, nil, nil, nil, nil, - nil, nil, 13212, nil, 1314, nil, 262, 314, nil, 13344, - 366, 13476, nil, nil, 13608, 13740, nil, nil, 296, nil, - 13880, 1440, 368, 362, 1455, 384, 444, 418, 14012, 1596, - 578, 615, 681, 505, 750, nil, 478, 439, 33, nil, - nil, nil, 501, 258, 478, 14152, nil, 299, 561, 753, - nil, 569, nil, 14284, 1737, 14416, 528, nil, 105, 259, - 571, 585, 454, 619, nil, nil, 23117, 488, -1, 26, - 14548, 14680, 458, 706, 596, -23, -19, 792, 691, -18, - 724, nil, nil, 227, 281, -34, nil, 822, nil, 34, - 14812, nil, nil, nil, 264, 409, 448, 451, 478, 508, - 512, 532, 554, nil, 567, nil, 14944, nil, 275, 335, - 363, 375, 392, -45, -41, 395, nil, nil, nil, nil, - nil, nil, nil, nil, 643, 23507, nil, nil, nil, nil, - 650, nil, nil, 642, 15076, 644, nil, nil, 891, 658, - nil, 672, 676, 332, 342, 22984, nil, nil, nil, 224, - 337, 723, nil, nil, 22490, 22625, nil, 1455, nil, 689, - nil, nil, 750, nil, nil, nil, nil, -33, nil, 746, - 24127, 24189, 15208, 239, 15340, 15472, 15604, 3147, 3288, 538, - 659, 778, 783, 788, 798, 5120, 5252, 5384, 3429, 3570, - 3711, 3852, 3993, 4134, 4275, 4416, 4557, 4698, 621, 630, - 4839, 4980, 15736, -46, 23114, nil, nil, nil, nil, 747, - nil, 159, 279, 750, nil, nil, 15868, nil, 16000, nil, - 16132, nil, 332, nil, nil, nil, 16272, 1455, 1878, 752, - 751, nil, nil, 754, 16412, 767, 16544, 24251, 24313, 891, - 809, nil, 16676, 769, nil, 16808, 16940, 24375, 24437, 1596, - 17072, 897, 896, 694, 824, nil, 17204, nil, nil, 17336, - nil, nil, nil, nil, 23134, nil, 783, 784, nil, 785, - 793, 794, nil, nil, nil, nil, nil, nil, nil, nil, - 787, 477, nil, nil, 17468, nil, nil, nil, 880, nil, - nil, nil, 881, nil, nil, 882, 2019, 935, nil, 2160, - 63, 119, 935, 945, 17600, 17732, 24499, 24561, 10, nil, - nil, 894, nil, 24623, 24685, 17864, nil, nil, nil, 587, - 193, 2301, 883, nil, -14, nil, nil, nil, 733, nil, - nil, nil, 858, nil, nil, 151, nil, 222, nil, nil, - 846, nil, 847, nil, nil, nil, 23636, nil, 852, 17996, - 18128, 380, 896, 18260, 18392, 18524, 18656, 899, nil, nil, - 18788, 18920, 907, nil, 19052, 19184, nil, nil, 350, 416, - 470, 607, 874, 1032, 1737, nil, 23078, nil, 2442, 979, - 5, 316, nil, 2583, 2724, nil, 882, nil, 929, 19316, - nil, nil, 19448, nil, 905, -81, 19580, 888, nil, 893, - 137, 179, 935, 340, 1032, 936, 895, 19712, 1878, 972, - 20, 1026, 19844, nil, 913, nil, 539, 21, 914, 495, - nil, nil, 740, 24934, nil, 24942, nil, 5959, nil, 19976, - nil, 607, nil, 912, 230, 925, nil, nil, nil, nil, - 850, nil, 1044, nil, nil, nil, nil, 1050, nil, 32, - 929, 26, 41, 123, 182, 20108, 414, 1173, nil, 937, - 2865, 20240, nil, nil, 1060, 3006, 24957, 24997, 23879, nil, - nil, nil, nil, nil, nil, 3147, nil, nil, nil, nil, - nil, nil, nil, 937, 20372, 2019, 20504, nil, 938, nil, - 2160, nil, 2301, nil, nil, 2442, nil, 2583, nil, 2724, - 20636, 20768, 20900, 21032, 429, 940, 940, 954, nil, 958, - 961, 980, nil, 1009, 992, 991, 989, 21164, nil, nil, - 1128, nil, nil, 3288, 1031, 1137, nil, nil, nil, nil, - 1013, 378, nil, nil, 1149, nil, 3429, 1024, 1072, nil, - nil, 1072, nil, nil, 3570, 3711, 1074, 1032, nil, nil, - nil, 1033, 1036, nil, 1046, 1047, nil, 1051, nil, nil, - 1055, 614, 1053, 600, nil, 1188, nil, 21296, 1190, 3852, - 3993, nil, 21428, 4134, 81, 122, nil, 1191, 611, 4275, - nil, 1192, 1078, 613, nil, 1087, 1095, nil, 2865, 21560, - 21692, nil, 525, nil, nil, 25012, nil, 25020, nil, 7427, - nil, nil, 1123, 1159, 21824, 933, 1181, nil, 1141, nil, - nil, nil, 4416, nil, nil, 33, 21956, nil, nil, 1146, - 1255, nil, nil, 25037, nil, 14059, nil, 25076, nil, 25093, - nil, nil, nil, nil, 330, 3415, 1134, nil, 36, nil, - 1264, 1269, nil, 47, nil, nil, nil, 1277, nil, nil, - nil, 1197, nil, 22088, 1154, nil, nil, 1164, 1165, 1167, - 1170, nil, 1172, nil, 643, nil, nil, nil, 963, 24747, - nil, nil, nil, 4557, 1035, 1074, 1104, 1252, 1176, nil, - nil, nil, 1174, 1177, 1187, 1188, 1189, 3556, 1192, 3589, - 4698, nil, nil, nil, nil, nil, 4839, nil, 4980, 3006, - nil, 25101, nil, 25116, nil, 25156, nil, 25171, nil, nil, - nil, 1300, 1237, 1238, 1323, 22220, 24809, 24871, 1215, 25179, - nil, nil, nil, nil, 3697, 1216, 862, 1347, 1361, 1240, - 1243, 1261, 1262, nil, nil, 1270, 40, 42, 112, 1314, - 1268, 1271, nil, nil, nil, 25186, nil, nil, nil, nil, - 43, nil, 1275, nil ] - -racc_action_default = [ - -3, -597, -1, -583, -4, -597, -7, -597, -597, -597, - -597, -29, -597, -597, -597, -281, -597, -40, -43, -585, - -597, -48, -50, -51, -52, -56, -258, -258, -258, -295, - -330, -331, -68, -11, -72, -80, -82, -597, -488, -489, - -597, -597, -597, -597, -597, -585, -239, -272, -273, -274, - -275, -276, -277, -278, -279, -280, -573, -283, -285, -596, - -563, -303, -391, -597, -597, -308, -311, -583, -597, -597, - -597, -597, -332, -333, -429, -430, -431, -432, -433, -454, - -436, -437, -456, -458, -441, -446, -450, -452, -468, -456, - -470, -472, -473, -474, -475, -571, -477, -478, -572, -480, - -481, -482, -483, -484, -485, -486, -487, -492, -493, -597, - -2, -584, -592, -593, -594, -6, -597, -597, -597, -597, - -597, -3, -17, -597, -111, -112, -113, -114, -115, -116, - -117, -118, -119, -123, -124, -125, -126, -127, -128, -129, - -130, -131, -132, -133, -134, -135, -136, -137, -138, -139, - -140, -141, -142, -143, -144, -145, -146, -147, -148, -149, - -150, -151, -152, -153, -154, -155, -156, -157, -158, -159, - -160, -161, -162, -163, -164, -165, -166, -167, -168, -169, - -170, -171, -172, -173, -174, -175, -176, -177, -178, -179, - -180, -181, -182, -183, -184, -185, -186, -187, -188, -189, - -190, -191, -192, -193, -22, -120, -11, -597, -597, -248, - -597, -597, -597, -597, -597, -597, -597, -585, -586, -47, - -597, -488, -489, -597, -281, -597, -597, -229, -597, -11, - -597, -597, -597, -597, -597, -597, -597, -597, -597, -597, - -597, -597, -597, -597, -597, -597, -597, -597, -597, -597, - -597, -597, -597, -597, -597, -597, -236, -398, -400, -597, - -581, -582, -57, -248, -597, -302, -404, -413, -415, -63, - -410, -64, -585, -65, -240, -253, -262, -262, -257, -597, - -263, -597, -454, -565, -597, -597, -66, -67, -583, -12, - -597, -15, -597, -70, -11, -585, -597, -73, -76, -11, - -88, -89, -597, -597, -96, -295, -298, -585, -597, -330, - -331, -334, -411, -597, -78, -597, -84, -292, -471, -597, - -214, -215, -230, -597, -11, -597, -585, -241, -589, -589, - -597, -597, -589, -597, -304, -305, -521, -49, -597, -597, - -597, -597, -583, -597, -584, -488, -489, -597, -597, -281, - -597, -344, -345, -106, -107, -597, -109, -597, -281, -597, - -597, -488, -489, -323, -111, -112, -153, -154, -155, -171, - -176, -183, -186, -325, -597, -561, -597, -434, -597, -597, - -597, -597, -597, -597, -597, -597, 1024, -5, -595, -23, - -24, -25, -26, -27, -597, -597, -19, -20, -21, -121, - -597, -30, -39, -268, -597, -597, -267, -31, -196, -585, - -249, -262, -262, -574, -575, -258, -408, -576, -577, -575, - -574, -258, -407, -409, -576, -577, -37, -204, -38, -597, - -41, -42, -194, -263, -44, -45, -46, -585, -301, -597, - -597, -597, -248, -292, -597, -597, -597, -205, -206, -207, - -208, -209, -210, -211, -212, -216, -217, -218, -219, -220, - -221, -222, -223, -224, -225, -226, -227, -228, -231, -232, - -233, -234, -597, -380, -258, -574, -575, -54, -58, -585, - -259, -380, -380, -585, -297, -254, -597, -255, -597, -260, - -597, -264, -597, -568, -570, -10, -584, -14, -3, -585, - -69, -290, -85, -74, -597, -585, -248, -597, -597, -95, - -597, -471, -597, -81, -86, -597, -597, -597, -597, -235, - -597, -421, -597, -286, -597, -242, -591, -590, -244, -591, - -293, -294, -564, -392, -521, -395, -560, -560, -504, -506, - -506, -506, -520, -522, -523, -524, -525, -526, -527, -528, - -529, -597, -531, -533, -535, -540, -542, -543, -545, -550, - -552, -553, -555, -556, -557, -597, -11, -335, -336, -11, - -597, -597, -597, -597, -597, -248, -597, -597, -292, -316, - -106, -107, -108, -597, -597, -248, -319, -494, -495, -597, - -597, -11, -499, -327, -585, -435, -455, -460, -597, -462, - -438, -457, -597, -459, -440, -597, -443, -597, -445, -448, - -597, -449, -597, -469, -8, -18, -597, -28, -271, -597, - -597, -412, -597, -250, -252, -597, -597, -59, -247, -405, - -597, -597, -61, -406, -597, -597, -300, -587, -574, -575, - -574, -575, -585, -194, -585, -381, -585, -383, -11, -53, - -401, -380, -245, -11, -11, -296, -262, -261, -265, -597, - -566, -567, -597, -13, -597, -71, -597, -77, -83, -585, - -574, -575, -246, -92, -94, -597, -79, -597, -203, -213, - -585, -596, -596, -284, -585, -289, -589, -597, -585, -597, - -502, -503, -597, -597, -513, -597, -516, -597, -518, -597, - -346, -597, -348, -350, -357, -585, -534, -544, -554, -558, - -596, -337, -596, -309, -338, -339, -312, -597, -315, -597, - -585, -574, -575, -578, -291, -597, -106, -107, -110, -585, - -11, -597, -497, -321, -597, -11, -521, -521, -597, -562, - -461, -464, -465, -466, -467, -11, -439, -442, -444, -447, - -451, -453, -122, -269, -597, -197, -597, -588, -262, -33, - -199, -34, -200, -60, -35, -202, -36, -201, -62, -195, - -597, -597, -597, -597, -412, -597, -560, -560, -362, -364, - -364, -364, -379, -597, -585, -385, -529, -537, -538, -548, - -597, -403, -402, -11, -597, -597, -256, -266, -569, -16, - -75, -90, -87, -299, -596, -342, -11, -422, -596, -423, - -424, -597, -243, -393, -11, -11, -597, -560, -541, -559, - -505, -506, -506, -532, -506, -506, -551, -506, -529, -546, - -585, -597, -355, -597, -530, -597, -340, -597, -597, -11, - -11, -314, -597, -11, -412, -597, -412, -597, -597, -11, - -324, -597, -585, -597, -328, -597, -270, -32, -198, -251, - -597, -237, -597, -360, -361, -370, -372, -597, -375, -597, - -377, -382, -597, -597, -597, -536, -597, -399, -597, -414, - -416, -9, -11, -428, -343, -597, -597, -426, -287, -597, - -597, -394, -501, -597, -509, -597, -511, -597, -514, -597, - -517, -519, -347, -349, -353, -597, -358, -306, -597, -307, - -597, -597, -265, -596, -317, -320, -496, -597, -326, -498, - -500, -499, -463, -597, -560, -539, -363, -364, -364, -364, - -364, -549, -364, -384, -585, -387, -389, -390, -547, -597, - -292, -55, -427, -11, -97, -98, -597, -597, -105, -425, - -396, -397, -506, -506, -506, -506, -351, -597, -356, -597, - -11, -310, -313, -417, -418, -419, -11, -322, -11, -238, - -359, -597, -367, -597, -369, -597, -373, -597, -376, -378, - -386, -597, -291, -578, -421, -248, -597, -597, -104, -597, - -507, -510, -512, -515, -597, -354, -596, -597, -597, -364, - -364, -364, -364, -388, -420, -585, -574, -575, -578, -103, - -506, -352, -341, -318, -329, -597, -365, -368, -371, -374, - -412, -508, -364, -366 ] - -racc_goto_table = [ - 216, 275, 275, 275, 14, 327, 373, 409, 573, 14, - 522, 276, 276, 276, 266, 270, 311, 311, 258, 2, - 415, 421, 334, 431, 220, 681, 323, 259, 122, 205, - 535, 127, 127, 220, 220, 220, 406, 14, 302, 302, - 550, 328, 428, 478, 297, 130, 130, 132, 132, 542, - 311, 311, 311, 110, 114, 338, 339, 487, 438, 342, - 513, 479, 735, 835, 582, 318, 660, 220, 220, 474, - 111, 220, 347, 357, 357, 705, 621, 826, 219, 6, - 314, 690, 691, 804, 6, 783, 566, 569, 713, 716, - 378, 293, 295, 780, 127, 262, 269, 271, 906, 903, - 525, 528, 115, 931, 532, 379, 935, 660, 389, 390, - 391, 392, 385, 484, 838, 14, 937, 343, 114, 1, - 220, 220, 220, 220, 14, 14, 881, 816, 359, 363, - 648, 273, 286, 287, 605, 607, 500, 663, 653, 654, - 394, 823, 204, 352, 402, 395, 277, 277, 277, 651, - 616, 472, 657, 13, 657, 923, 330, 650, 13, 375, - 331, 335, 350, 586, 374, 324, 325, 684, 326, 340, - 958, 694, 696, 698, 839, 341, 329, 332, 840, 725, - 966, 275, 730, 849, 591, 592, 13, 738, 921, 405, - 6, 782, 487, 784, 934, 405, 533, 813, 416, 393, - 6, 700, 660, 336, 687, 473, 481, 931, 387, 482, - 14, 220, 220, 220, 1003, 963, 220, 220, 220, 220, - 220, 220, 995, 872, 937, 830, 808, 903, 688, 885, - 377, 296, 380, 14, 425, 275, 275, 717, 550, 381, - 642, 382, 383, 384, 275, 740, 276, 542, 745, 667, - 415, 421, 731, 821, 276, 818, 925, 676, nil, 1011, - nil, nil, nil, nil, 13, 401, 407, 220, 220, nil, - 426, 430, nil, 13, 13, 826, 220, 734, 636, nil, - 311, 601, 603, 606, 606, nil, nil, 601, 510, 657, - 657, nil, 728, 492, 14, nil, 266, 311, 14, nil, - 270, nil, 302, 14, 669, nil, nil, 524, 793, 774, - nil, nil, 927, 823, nil, 964, nil, 672, nil, 302, - 652, 863, 864, nil, 655, 514, nil, 672, 14, 220, - nil, nil, 570, 571, nil, nil, 801, 511, 495, 114, - 665, nil, nil, 503, 220, 220, 668, 823, nil, 1012, - 786, 700, 293, 499, 832, 496, nil, 293, 505, 13, - nil, nil, 892, 914, 220, nil, 480, nil, nil, 497, - nil, nil, nil, 720, 483, nil, nil, 593, nil, nil, - 220, 277, 13, 729, nil, nil, 672, 844, nil, 277, - 622, 968, 572, 114, 672, nil, 846, 550, nil, 550, - nil, nil, nil, 628, 400, nil, nil, nil, 763, 633, - 587, 800, nil, 768, 275, 615, 847, nil, 127, nil, - nil, 851, nil, nil, nil, 823, nil, 296, 416, nil, - 852, 853, 130, nil, 132, 739, 796, 660, nil, nil, - 550, 550, nil, 13, 431, nil, 220, 13, nil, 542, - 542, nil, 13, 894, 896, nil, 898, 900, 812, 901, - nil, 333, 628, nil, 425, nil, nil, 843, nil, 970, - nil, nil, nil, nil, nil, nil, nil, 13, 275, nil, - nil, 700, nil, 700, 627, nil, 311, nil, 1004, nil, - 632, nil, 296, nil, 311, 416, nil, 296, nil, 26, - 14, nil, 14, nil, 26, 416, nil, 748, 302, 748, - 220, 809, 781, nil, 514, nil, 302, 664, nil, 26, - nil, 803, 514, nil, 220, 657, nil, nil, 26, 26, - 26, 425, 26, nil, nil, 917, nil, nil, 796, nil, - nil, 425, nil, 649, nil, nil, 834, 275, nil, nil, - nil, nil, nil, nil, 956, 700, 719, 275, nil, 822, - nil, 824, 26, 26, 416, nil, 26, nil, nil, 786, - 14, 786, 416, 14, nil, nil, nil, 6, 965, 220, - nil, nil, nil, nil, 990, 991, 992, 993, nil, 220, - nil, nil, nil, nil, nil, 14, nil, 550, nil, nil, - 425, nil, nil, 656, nil, nil, 425, 700, 403, 700, - 26, 792, nil, nil, 433, 26, 26, 26, 26, 26, - 26, 714, 714, 622, nil, 775, nil, 785, 810, 220, - 220, nil, nil, 943, 220, 220, 752, nil, 220, 127, - 732, 733, 1021, 686, 700, 791, nil, nil, 311, 13, - 622, 13, 14, 130, 998, 132, 960, 14, 14, 311, - 628, nil, nil, 633, 405, 811, nil, nil, nil, 785, - 302, 902, 1020, 854, nil, 786, 514, nil, nil, nil, - 489, 302, 491, 759, 761, 493, 494, 802, 764, 766, - nil, nil, 430, 919, nil, nil, nil, nil, nil, nil, - nil, 622, nil, nil, nil, 26, 26, 26, 26, nil, - 622, 26, 26, 26, 26, 26, 26, 845, nil, 13, - nil, nil, 13, 848, nil, nil, nil, nil, 26, 220, - nil, 928, nil, 929, 14, 220, nil, nil, nil, 14, - 758, nil, nil, nil, 13, nil, nil, nil, nil, 14, - 883, nil, 15, nil, 887, nil, nil, 15, nil, 952, - 220, 127, 26, 26, 710, 785, nil, 712, nil, 311, - nil, 26, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 1005, nil, 15, 304, 304, nil, 26, - nil, 875, nil, 26, nil, nil, 672, 14, 26, nil, - nil, 13, nil, 16, nil, 618, 13, 13, 16, nil, - 14, nil, nil, nil, 857, nil, nil, nil, 14, 14, - 349, 358, 358, 26, 26, nil, nil, nil, nil, 908, - nil, nil, nil, nil, nil, nil, 16, 999, nil, 26, - 26, 220, nil, 14, 14, nil, 790, 14, nil, nil, - nil, 794, 795, 14, 777, nil, 311, nil, nil, 26, - nil, nil, nil, 15, nil, nil, 778, nil, 311, nil, - nil, 351, 15, 15, nil, 26, nil, nil, 938, nil, - nil, nil, nil, 13, nil, nil, 14, 658, 13, 333, - 946, 661, nil, 779, nil, nil, 714, 817, 13, 916, - nil, nil, nil, nil, 920, nil, nil, nil, nil, 819, - nil, nil, 819, nil, 16, 980, nil, nil, nil, nil, - nil, nil, nil, 16, 16, nil, nil, 658, nil, nil, - 333, nil, nil, nil, nil, nil, nil, nil, 787, nil, - nil, 26, 825, 855, 827, nil, 13, 14, nil, nil, - nil, nil, nil, nil, nil, 706, nil, 275, 15, 13, - nil, nil, 425, nil, 14, nil, nil, 13, 13, nil, - 14, nil, 14, nil, 416, 433, nil, nil, nil, nil, - nil, 15, nil, nil, nil, nil, 622, nil, nil, 220, - nil, 878, 13, 13, nil, 26, 13, 26, nil, nil, - nil, nil, 13, nil, 884, 26, nil, nil, nil, 16, - 425, nil, 889, 890, nil, nil, 429, nil, nil, 26, - 753, nil, nil, nil, 658, 333, nil, nil, nil, nil, - nil, nil, 16, nil, nil, 13, nil, 910, 911, nil, - nil, 913, 15, nil, nil, nil, 15, nil, nil, nil, - 304, 15, nil, nil, nil, 337, 337, nil, nil, 337, - 797, nil, nil, 798, nil, 26, nil, 304, 26, nil, - 924, nil, nil, 777, 26, 777, 15, 777, nil, nil, - 942, nil, 819, 807, 26, 778, nil, 778, nil, 778, - 26, nil, nil, 16, nil, nil, 13, 16, nil, nil, - 829, nil, 16, nil, nil, nil, nil, nil, 337, 337, - 337, 337, nil, 13, 930, nil, 932, nil, nil, 13, - nil, 13, nil, nil, 26, 26, nil, 16, nil, 26, - 26, nil, nil, 26, 866, 868, 870, nil, nil, nil, - 953, 984, 954, nil, 955, nil, nil, 26, nil, nil, - nil, nil, 26, 26, 787, 856, nil, 787, 996, 787, - nil, 787, nil, nil, 997, nil, nil, nil, nil, nil, - 38, nil, nil, nil, nil, 38, nil, nil, nil, 777, - nil, 777, nil, 777, nil, 777, nil, nil, nil, nil, - nil, 778, nil, 778, nil, 778, nil, 778, nil, nil, - nil, nil, nil, 38, 300, 300, 434, 435, 436, 437, - nil, nil, nil, nil, nil, nil, nil, nil, 1000, nil, - 1001, nil, 1002, 777, 26, nil, nil, nil, nil, 26, - 26, nil, nil, nil, 26, 778, 1010, nil, 345, 361, - 361, 361, nil, 912, 26, nil, nil, nil, 15, nil, - 15, nil, nil, nil, nil, 26, 304, nil, nil, nil, - 333, nil, 1022, 787, 304, 787, nil, 787, nil, 787, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 38, 972, 974, 976, 978, nil, 979, nil, nil, - 38, 38, 26, nil, nil, nil, nil, nil, nil, 16, - nil, 16, nil, nil, nil, 26, nil, 787, nil, nil, - nil, nil, nil, 26, 26, nil, nil, 523, 15, nil, - nil, 15, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 337, 337, nil, nil, 26, nil, 26, 26, - nil, nil, 26, 15, nil, nil, nil, nil, 26, nil, - 744, nil, 590, nil, 1016, 1017, 1018, 1019, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 594, 16, - nil, nil, 16, nil, nil, nil, 38, 1023, nil, nil, - nil, 26, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 16, nil, nil, nil, nil, 38, - 15, nil, nil, nil, nil, 15, 15, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 304, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 304, - nil, nil, nil, nil, nil, nil, nil, 429, nil, nil, - nil, nil, 26, nil, nil, nil, nil, nil, nil, nil, - nil, 16, nil, nil, nil, nil, 16, 16, 39, 26, - 38, nil, nil, 39, 38, 26, nil, 26, 300, 38, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 15, nil, 26, 300, nil, 15, nil, nil, - nil, 39, 301, 301, 38, nil, nil, 15, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 680, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 346, 362, 362, 362, - nil, nil, nil, 16, nil, nil, nil, nil, 16, 358, - nil, nil, nil, nil, nil, 15, nil, nil, 16, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 15, nil, - nil, nil, nil, nil, nil, nil, 15, 15, nil, 39, - nil, nil, nil, nil, nil, nil, nil, nil, 39, 39, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 15, 15, nil, nil, 15, 16, nil, nil, nil, - nil, 15, nil, nil, nil, nil, nil, nil, nil, 16, - nil, nil, nil, nil, nil, nil, nil, 16, 16, nil, - nil, nil, nil, nil, nil, nil, 358, nil, nil, nil, - nil, nil, nil, nil, 15, nil, nil, nil, 948, nil, - nil, nil, 16, 16, nil, nil, 16, nil, nil, nil, - nil, nil, 16, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 39, nil, 38, nil, 38, nil, - nil, nil, nil, nil, 300, nil, nil, nil, nil, nil, - nil, nil, 300, nil, nil, 16, nil, 39, nil, 949, - nil, nil, nil, nil, nil, 15, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 15, nil, nil, nil, nil, 337, 15, nil, - 15, nil, nil, 337, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 38, nil, nil, 38, - nil, nil, nil, nil, nil, nil, 16, nil, 39, nil, - nil, nil, 39, nil, nil, nil, 301, 39, nil, nil, - nil, 38, nil, 16, nil, nil, nil, nil, nil, 16, - nil, 16, nil, 301, nil, nil, nil, nil, nil, nil, - nil, nil, 39, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 38, nil, - nil, nil, nil, 38, 38, nil, nil, nil, nil, 337, - nil, nil, nil, nil, nil, nil, 300, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 300, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 38, nil, nil, nil, nil, 38, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 38, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 39, nil, 39, 361, nil, nil, - nil, nil, 301, 38, nil, nil, nil, nil, nil, nil, - 301, nil, nil, nil, nil, nil, 38, nil, nil, nil, - nil, nil, nil, nil, 38, 38, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 38, - 38, nil, nil, 38, nil, nil, nil, nil, nil, 38, - nil, nil, nil, nil, 39, nil, nil, 39, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 361, nil, nil, nil, nil, 39, - nil, nil, 38, nil, nil, nil, 944, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 39, nil, nil, nil, - nil, 39, 39, 38, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 301, nil, nil, nil, nil, nil, - 38, nil, nil, nil, 227, 301, 38, nil, 38, nil, - nil, nil, nil, 274, 274, 274, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 320, 321, 322, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 274, 274, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 39, nil, - nil, nil, nil, 39, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 39, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 362, nil, nil, nil, nil, - nil, 39, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 39, nil, nil, nil, nil, nil, - nil, nil, 39, 39, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 39, 39, nil, - nil, 39, nil, nil, nil, nil, nil, 39, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 274, 408, 274, nil, nil, 427, 432, nil, nil, - nil, nil, 362, nil, nil, nil, nil, nil, nil, nil, - 39, nil, 227, nil, 945, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, - 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, - nil, nil, nil, nil, nil, nil, nil, 274, 274, nil, - nil, nil, nil, nil, nil, nil, 274, nil, nil, nil, - nil, nil, nil, 274, nil, 274, nil, nil, 274, 274, - nil, 39, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 39, nil, - nil, nil, nil, nil, 39, nil, 39, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 519, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 274, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 274, nil, 427, 643, - 408, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 644, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 274, nil, 274, nil, 274, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 274, nil, nil, nil, nil, nil, nil, nil, nil, 678, - 679, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 274, nil, nil, 274, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 274, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 274, 274, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 274, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 274, 755, nil, nil, 274, 274, 760, - 762, nil, nil, nil, 765, 767, nil, nil, 643, 769, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 274, nil, nil, 274, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 274, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 274, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 274, nil, - 858, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 760, 762, 767, 765, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 274, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 274, 858, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 969, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 274 ] - -racc_goto_check = [ - 31, 33, 33, 33, 22, 69, 56, 23, 94, 22, - 8, 70, 70, 70, 73, 73, 64, 64, 140, 2, - 37, 37, 88, 18, 22, 10, 31, 36, 15, 15, - 139, 57, 57, 22, 22, 22, 27, 22, 22, 22, - 168, 70, 27, 39, 49, 60, 60, 61, 61, 163, - 64, 64, 64, 4, 97, 17, 17, 75, 47, 17, - 51, 23, 98, 92, 54, 63, 178, 22, 22, 37, - 6, 22, 22, 22, 22, 118, 24, 174, 20, 7, - 50, 123, 123, 11, 7, 131, 91, 91, 93, 93, - 151, 45, 46, 128, 57, 38, 38, 38, 119, 116, - 71, 71, 5, 175, 71, 152, 133, 178, 17, 17, - 17, 17, 152, 47, 11, 22, 134, 4, 97, 1, - 22, 22, 22, 22, 22, 22, 12, 131, 55, 55, - 40, 44, 44, 44, 155, 155, 47, 14, 40, 40, - 2, 169, 16, 19, 28, 30, 72, 72, 72, 42, - 62, 66, 76, 21, 76, 67, 68, 74, 21, 86, - 87, 90, 95, 96, 99, 100, 101, 102, 103, 104, - 119, 166, 166, 166, 105, 106, 72, 72, 107, 108, - 109, 33, 110, 111, 112, 113, 21, 114, 115, 70, - 7, 120, 75, 126, 132, 70, 135, 136, 73, 7, - 7, 117, 178, 137, 138, 141, 143, 175, 5, 144, - 22, 22, 22, 22, 133, 145, 22, 22, 22, 22, - 22, 22, 119, 131, 134, 118, 146, 116, 139, 147, - 150, 9, 153, 22, 57, 33, 33, 94, 168, 154, - 23, 157, 158, 159, 33, 160, 70, 163, 161, 51, - 37, 37, 162, 167, 70, 171, 172, 51, nil, 119, - nil, nil, nil, nil, 21, 20, 20, 22, 22, nil, - 20, 20, nil, 21, 21, 174, 22, 8, 47, nil, - 64, 156, 156, 156, 156, nil, nil, 156, 31, 76, - 76, nil, 54, 151, 22, nil, 73, 64, 22, nil, - 73, nil, 22, 22, 23, nil, nil, 31, 40, 24, - nil, nil, 128, 169, nil, 11, nil, 37, nil, 22, - 47, 123, 123, nil, 47, 49, nil, 37, 22, 22, - nil, nil, 17, 17, nil, nil, 24, 63, 4, 97, - 47, nil, nil, 50, 22, 22, 47, 169, nil, 92, - 168, 117, 45, 46, 117, 6, nil, 45, 46, 21, - nil, nil, 123, 93, 22, nil, 44, nil, nil, 7, - nil, nil, nil, 23, 44, nil, nil, 36, nil, nil, - 22, 72, 21, 23, nil, nil, 37, 24, nil, 72, - 31, 98, 4, 97, 37, nil, 24, 168, nil, 168, - nil, nil, nil, 73, 9, nil, nil, nil, 39, 73, - 97, 51, nil, 39, 33, 15, 8, nil, 57, nil, - nil, 8, nil, nil, nil, 169, nil, 9, 73, nil, - 139, 139, 60, nil, 61, 47, 75, 178, nil, nil, - 168, 168, nil, 21, 18, nil, 22, 21, nil, 163, - 163, nil, 21, 166, 166, nil, 166, 166, 71, 166, - nil, 65, 73, nil, 57, nil, nil, 91, nil, 123, - nil, nil, nil, nil, nil, nil, nil, 21, 33, nil, - nil, 117, nil, 117, 38, nil, 64, nil, 10, nil, - 38, nil, 9, nil, 64, 73, nil, 9, nil, 41, - 22, nil, 22, nil, 41, 73, nil, 156, 22, 156, - 22, 27, 129, nil, 49, nil, 22, 2, nil, 41, - nil, 47, 49, nil, 22, 76, nil, nil, 41, 41, - 41, 57, 41, nil, nil, 8, nil, nil, 75, nil, - nil, 57, nil, 38, nil, nil, 47, 33, nil, nil, - nil, nil, nil, nil, 117, 117, 70, 33, nil, 129, - nil, 129, 41, 41, 73, nil, 41, nil, nil, 168, - 22, 168, 73, 22, nil, nil, nil, 7, 94, 22, - nil, nil, nil, nil, 166, 166, 166, 166, nil, 22, - nil, nil, nil, nil, nil, 22, nil, 168, nil, nil, - 57, nil, nil, 72, nil, nil, 57, 117, 65, 117, - 41, 88, nil, nil, 65, 41, 41, 41, 41, 41, - 41, 97, 97, 31, nil, 31, nil, 31, 69, 22, - 22, nil, nil, 91, 22, 22, 15, nil, 22, 57, - 97, 97, 166, 72, 117, 140, nil, nil, 64, 21, - 31, 21, 22, 60, 8, 61, 91, 22, 22, 64, - 73, nil, nil, 73, 70, 31, nil, nil, nil, 31, - 22, 47, 24, 56, nil, 168, 49, nil, nil, nil, - 65, 22, 65, 20, 20, 65, 65, 49, 20, 20, - nil, nil, 20, 47, nil, nil, nil, nil, nil, nil, - nil, 31, nil, nil, nil, 41, 41, 41, 41, nil, - 31, 41, 41, 41, 41, 41, 41, 17, nil, 21, - nil, nil, 21, 17, nil, nil, nil, nil, 41, 22, - nil, 129, nil, 129, 22, 22, nil, nil, nil, 22, - 72, nil, nil, nil, 21, nil, nil, nil, nil, 22, - 69, nil, 25, nil, 69, nil, nil, 25, nil, 129, - 22, 57, 41, 41, 9, 31, nil, 9, nil, 64, - nil, 41, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 23, nil, 25, 25, 25, nil, 41, - nil, 22, nil, 41, nil, nil, 37, 22, 41, nil, - nil, 21, nil, 26, nil, 65, 21, 21, 26, nil, - 22, nil, nil, nil, 20, nil, nil, nil, 22, 22, - 25, 25, 25, 41, 41, nil, nil, nil, nil, 17, - nil, nil, nil, nil, nil, nil, 26, 129, nil, 41, - 41, 22, nil, 22, 22, nil, 9, 22, nil, nil, - nil, 9, 9, 22, 122, nil, 64, nil, nil, 41, - nil, nil, nil, 25, nil, nil, 124, nil, 64, nil, - nil, 26, 25, 25, nil, 41, nil, nil, 22, nil, - nil, nil, nil, 21, nil, nil, 22, 65, 21, 65, - 22, 65, nil, 127, nil, nil, 97, 122, 21, 97, - nil, nil, nil, nil, 97, nil, nil, nil, nil, 124, - nil, nil, 124, nil, 26, 31, nil, nil, nil, nil, - nil, nil, nil, 26, 26, nil, nil, 65, nil, nil, - 65, nil, nil, nil, nil, nil, nil, nil, 170, nil, - nil, 41, 127, 9, 127, nil, 21, 22, nil, nil, - nil, nil, nil, nil, nil, 65, nil, 33, 25, 21, - nil, nil, 57, nil, 22, nil, nil, 21, 21, nil, - 22, nil, 22, nil, 73, 65, nil, nil, nil, nil, - nil, 25, nil, nil, nil, nil, 31, nil, nil, 22, - nil, 9, 21, 21, nil, 41, 21, 41, nil, nil, - nil, nil, 21, nil, 9, 41, nil, nil, nil, 26, - 57, nil, 9, 9, nil, nil, 26, nil, nil, 41, - 65, nil, nil, nil, 65, 65, nil, nil, nil, nil, - nil, nil, 26, nil, nil, 21, nil, 9, 9, nil, - nil, 9, 25, nil, nil, nil, 25, nil, nil, nil, - 25, 25, nil, nil, nil, 29, 29, nil, nil, 29, - 65, nil, nil, 65, nil, 41, nil, 25, 41, nil, - 122, nil, nil, 122, 41, 122, 25, 122, nil, nil, - 9, nil, 124, 65, 41, 124, nil, 124, nil, 124, - 41, nil, nil, 26, nil, nil, 21, 26, nil, nil, - 65, nil, 26, nil, nil, nil, nil, nil, 29, 29, - 29, 29, nil, 21, 127, nil, 127, nil, nil, 21, - nil, 21, nil, nil, 41, 41, nil, 26, nil, 41, - 41, nil, nil, 41, 125, 125, 125, nil, nil, nil, - 127, 9, 127, nil, 127, nil, nil, 41, nil, nil, - nil, nil, 41, 41, 170, 65, nil, 170, 9, 170, - nil, 170, nil, nil, 9, nil, nil, nil, nil, nil, - 52, nil, nil, nil, nil, 52, nil, nil, nil, 122, - nil, 122, nil, 122, nil, 122, nil, nil, nil, nil, - nil, 124, nil, 124, nil, 124, nil, 124, nil, nil, - nil, nil, nil, 52, 52, 52, 29, 29, 29, 29, - nil, nil, nil, nil, nil, nil, nil, nil, 127, nil, - 127, nil, 127, 122, 41, nil, nil, nil, nil, 41, - 41, nil, nil, nil, 41, 124, 127, nil, 52, 52, - 52, 52, nil, 65, 41, nil, nil, nil, 25, nil, - 25, nil, nil, nil, nil, 41, 25, nil, nil, nil, - 65, nil, 127, 170, 25, 170, nil, 170, nil, 170, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 52, 125, 125, 125, 125, nil, 125, nil, nil, - 52, 52, 41, nil, nil, nil, nil, nil, nil, 26, - nil, 26, nil, nil, nil, 41, nil, 170, nil, nil, - nil, nil, nil, 41, 41, nil, nil, 29, 25, nil, - nil, 25, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 29, 29, nil, nil, 41, nil, 41, 41, - nil, nil, 41, 25, nil, nil, nil, nil, 41, nil, - 25, nil, 29, nil, 125, 125, 125, 125, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 29, 26, - nil, nil, 26, nil, nil, nil, 52, 125, nil, nil, - nil, 41, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 26, nil, nil, nil, nil, 52, - 25, nil, nil, nil, nil, 25, 25, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 25, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 25, - nil, nil, nil, nil, nil, nil, nil, 26, nil, nil, - nil, nil, 41, nil, nil, nil, nil, nil, nil, nil, - nil, 26, nil, nil, nil, nil, 26, 26, 53, 41, - 52, nil, nil, 53, 52, 41, nil, 41, 52, 52, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 25, nil, 41, 52, nil, 25, nil, nil, - nil, 53, 53, 53, 52, nil, nil, 25, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 29, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 53, 53, 53, 53, - nil, nil, nil, 26, nil, nil, nil, nil, 26, 25, - nil, nil, nil, nil, nil, 25, nil, nil, 26, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 25, nil, - nil, nil, nil, nil, nil, nil, 25, 25, nil, 53, - nil, nil, nil, nil, nil, nil, nil, nil, 53, 53, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 25, 25, nil, nil, 25, 26, nil, nil, nil, - nil, 25, nil, nil, nil, nil, nil, nil, nil, 26, - nil, nil, nil, nil, nil, nil, nil, 26, 26, nil, - nil, nil, nil, nil, nil, nil, 25, nil, nil, nil, - nil, nil, nil, nil, 25, nil, nil, nil, 25, nil, - nil, nil, 26, 26, nil, nil, 26, nil, nil, nil, - nil, nil, 26, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 53, nil, 52, nil, 52, nil, - nil, nil, nil, nil, 52, nil, nil, nil, nil, nil, - nil, nil, 52, nil, nil, 26, nil, 53, nil, 26, - nil, nil, nil, nil, nil, 25, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 25, nil, nil, nil, nil, 29, 25, nil, - 25, nil, nil, 29, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 52, nil, nil, 52, - nil, nil, nil, nil, nil, nil, 26, nil, 53, nil, - nil, nil, 53, nil, nil, nil, 53, 53, nil, nil, - nil, 52, nil, 26, nil, nil, nil, nil, nil, 26, - nil, 26, nil, 53, nil, nil, nil, nil, nil, nil, - nil, nil, 53, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 52, nil, - nil, nil, nil, 52, 52, nil, nil, nil, nil, 29, - nil, nil, nil, nil, nil, nil, 52, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 52, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 52, nil, nil, nil, nil, 52, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 52, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 53, nil, 53, 52, nil, nil, - nil, nil, 53, 52, nil, nil, nil, nil, nil, nil, - 53, nil, nil, nil, nil, nil, 52, nil, nil, nil, - nil, nil, nil, nil, 52, 52, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 52, - 52, nil, nil, 52, nil, nil, nil, nil, nil, 52, - nil, nil, nil, nil, 53, nil, nil, 53, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 52, nil, nil, nil, nil, 53, - nil, nil, 52, nil, nil, nil, 52, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 53, nil, nil, nil, - nil, 53, 53, 52, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 53, nil, nil, nil, nil, nil, - 52, nil, nil, nil, 32, 53, 52, nil, 52, nil, - nil, nil, nil, 32, 32, 32, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 32, 32, 32, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 32, 32, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 53, nil, - nil, nil, nil, 53, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 53, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 53, nil, nil, nil, nil, - nil, 53, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 53, nil, nil, nil, nil, nil, - nil, nil, 53, 53, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 53, 53, nil, - nil, 53, nil, nil, nil, nil, nil, 53, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 32, 32, 32, nil, nil, 32, 32, nil, nil, - nil, nil, 53, nil, nil, nil, nil, nil, nil, nil, - 53, nil, 32, nil, 53, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - nil, nil, nil, nil, nil, nil, nil, 32, 32, nil, - nil, nil, nil, nil, nil, nil, 32, nil, nil, nil, - nil, nil, nil, 32, nil, 32, nil, nil, 32, 32, - nil, 53, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 53, nil, - nil, nil, nil, nil, 53, nil, 53, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 32, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 32, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 32, nil, 32, 32, - 32, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 32, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 32, nil, 32, nil, 32, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 32, nil, nil, nil, nil, nil, nil, nil, nil, 32, - 32, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 32, nil, nil, 32, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 32, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 32, 32, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 32, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 32, 32, nil, nil, 32, 32, 32, - 32, nil, nil, nil, 32, 32, nil, nil, 32, 32, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 32, nil, nil, 32, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 32, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 32, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, 32, nil, - 32, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 32, 32, 32, 32, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 32, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 32, 32, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 32, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, 32 ] - -racc_goto_pointer = [ - nil, 119, 19, nil, 50, 97, 67, 79, -314, 198, - -496, -598, -678, nil, -359, 20, 133, -8, -190, 75, - 58, 153, 4, -202, -333, 752, 803, -171, -63, 992, - 23, -19, 2114, -28, nil, nil, 3, -190, 69, -219, - -343, 499, -328, nil, 102, 58, 59, -159, nil, 10, - 45, -255, 1170, 1458, -291, 59, -65, 23, nil, nil, - 37, 39, -249, 24, -18, 401, -105, -706, 97, -54, - -18, -228, 117, -12, -317, -220, -334, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 88, 100, -39, nil, - 99, -252, -647, -482, -335, 94, -196, 51, -530, 93, - 108, 108, -356, 110, 104, -539, 109, -538, -400, -734, - -404, -550, -179, -188, -406, -666, -732, -350, -476, -735, - -455, nil, 208, -455, 220, 355, -453, 247, -553, -134, - nil, -561, -679, -767, -757, -140, -490, 141, -329, -306, - -4, -52, nil, -61, -59, -698, -456, -579, nil, nil, - 153, 11, 23, 149, 155, -247, -98, 156, 156, 156, - -353, -351, -336, -287, nil, nil, -368, -440, -296, -552, - 292, -434, -606, nil, -618, -764, nil, nil, -422 ] - -racc_goto_default = [ - nil, nil, nil, 3, nil, 4, 344, 291, nil, 521, - nil, 836, nil, 288, 289, nil, nil, nil, 11, 12, - 18, 226, 319, nil, nil, 224, 225, nil, nil, 17, - nil, 439, 21, 22, 23, 24, nil, 675, nil, nil, - nil, 308, nil, 25, 410, 32, nil, nil, 34, 37, - 36, nil, 221, 222, 356, nil, 129, 418, 128, 131, - 75, 76, nil, 90, 46, 280, nil, nil, nil, 805, - 411, nil, 412, 423, 629, 485, 278, 264, 47, 48, - 49, 50, 51, 52, 53, 54, 55, nil, 265, 61, - nil, nil, nil, nil, nil, nil, nil, 567, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 702, 549, nil, 703, - 926, 776, 537, nil, 538, nil, nil, 539, nil, 541, - 645, nil, nil, nil, 547, nil, nil, nil, nil, nil, - nil, nil, 422, nil, nil, nil, nil, nil, 74, 77, - 78, nil, nil, nil, nil, nil, 596, nil, nil, nil, - nil, nil, nil, 820, 737, 536, nil, 540, 828, 552, - 554, 555, 788, 558, 559, 789, 562, 565, 283 ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 1, 146, :_reduce_none, - 2, 147, :_reduce_2, - 0, 148, :_reduce_3, - 1, 148, :_reduce_4, - 3, 148, :_reduce_5, - 2, 148, :_reduce_6, - 1, 150, :_reduce_none, - 4, 150, :_reduce_8, - 4, 153, :_reduce_9, - 2, 154, :_reduce_10, - 0, 158, :_reduce_11, - 1, 158, :_reduce_12, - 3, 158, :_reduce_13, - 2, 158, :_reduce_14, - 1, 159, :_reduce_none, - 4, 159, :_reduce_16, - 0, 175, :_reduce_17, - 4, 152, :_reduce_18, - 3, 152, :_reduce_19, - 3, 152, :_reduce_20, - 3, 152, :_reduce_21, - 2, 152, :_reduce_22, - 3, 152, :_reduce_23, - 3, 152, :_reduce_24, - 3, 152, :_reduce_25, - 3, 152, :_reduce_26, - 3, 152, :_reduce_27, - 4, 152, :_reduce_28, - 1, 152, :_reduce_none, - 3, 152, :_reduce_30, - 3, 152, :_reduce_31, - 6, 152, :_reduce_32, - 5, 152, :_reduce_33, - 5, 152, :_reduce_34, - 5, 152, :_reduce_35, - 5, 152, :_reduce_36, - 3, 152, :_reduce_37, - 3, 152, :_reduce_38, - 3, 152, :_reduce_39, - 1, 152, :_reduce_none, - 3, 163, :_reduce_41, - 3, 163, :_reduce_42, - 1, 174, :_reduce_none, - 3, 174, :_reduce_44, - 3, 174, :_reduce_45, - 3, 174, :_reduce_46, - 2, 174, :_reduce_47, - 1, 174, :_reduce_none, - 1, 162, :_reduce_none, - 1, 165, :_reduce_none, - 1, 165, :_reduce_none, - 1, 179, :_reduce_none, - 4, 179, :_reduce_53, - 0, 187, :_reduce_54, - 5, 184, :_reduce_55, - 1, 186, :_reduce_none, - 2, 178, :_reduce_57, - 3, 178, :_reduce_58, - 4, 178, :_reduce_59, - 5, 178, :_reduce_60, - 4, 178, :_reduce_61, - 5, 178, :_reduce_62, - 2, 178, :_reduce_63, - 2, 178, :_reduce_64, - 2, 178, :_reduce_65, - 2, 178, :_reduce_66, - 2, 178, :_reduce_67, - 1, 164, :_reduce_68, - 3, 164, :_reduce_69, - 1, 191, :_reduce_70, - 3, 191, :_reduce_71, - 1, 190, :_reduce_none, - 2, 190, :_reduce_73, - 3, 190, :_reduce_74, - 5, 190, :_reduce_75, - 2, 190, :_reduce_76, - 4, 190, :_reduce_77, - 2, 190, :_reduce_78, - 4, 190, :_reduce_79, - 1, 190, :_reduce_80, - 3, 190, :_reduce_81, - 1, 194, :_reduce_none, - 3, 194, :_reduce_83, - 2, 193, :_reduce_84, - 3, 193, :_reduce_85, - 1, 196, :_reduce_86, - 3, 196, :_reduce_87, - 1, 195, :_reduce_88, - 1, 195, :_reduce_89, - 4, 195, :_reduce_90, - 3, 195, :_reduce_91, - 3, 195, :_reduce_92, - 3, 195, :_reduce_93, - 3, 195, :_reduce_94, - 2, 195, :_reduce_95, - 1, 195, :_reduce_96, - 1, 171, :_reduce_97, - 1, 171, :_reduce_98, - 4, 171, :_reduce_99, - 3, 171, :_reduce_100, - 3, 171, :_reduce_101, - 3, 171, :_reduce_102, - 3, 171, :_reduce_103, - 2, 171, :_reduce_104, - 1, 171, :_reduce_105, - 1, 199, :_reduce_106, - 1, 199, :_reduce_none, - 2, 200, :_reduce_108, - 1, 200, :_reduce_109, - 3, 200, :_reduce_110, - 1, 201, :_reduce_none, - 1, 201, :_reduce_none, - 1, 201, :_reduce_none, - 1, 201, :_reduce_none, - 1, 201, :_reduce_none, - 1, 204, :_reduce_116, - 1, 204, :_reduce_none, - 1, 160, :_reduce_none, - 1, 160, :_reduce_none, - 1, 161, :_reduce_120, - 0, 207, :_reduce_121, - 4, 161, :_reduce_122, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 202, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 1, 203, :_reduce_none, - 3, 177, :_reduce_194, - 5, 177, :_reduce_195, - 3, 177, :_reduce_196, - 5, 177, :_reduce_197, - 6, 177, :_reduce_198, - 5, 177, :_reduce_199, - 5, 177, :_reduce_200, - 5, 177, :_reduce_201, - 5, 177, :_reduce_202, - 4, 177, :_reduce_203, - 3, 177, :_reduce_204, - 3, 177, :_reduce_205, - 3, 177, :_reduce_206, - 3, 177, :_reduce_207, - 3, 177, :_reduce_208, - 3, 177, :_reduce_209, - 3, 177, :_reduce_210, - 3, 177, :_reduce_211, - 3, 177, :_reduce_212, - 4, 177, :_reduce_213, - 2, 177, :_reduce_214, - 2, 177, :_reduce_215, - 3, 177, :_reduce_216, - 3, 177, :_reduce_217, - 3, 177, :_reduce_218, - 3, 177, :_reduce_219, - 3, 177, :_reduce_220, - 3, 177, :_reduce_221, - 3, 177, :_reduce_222, - 3, 177, :_reduce_223, - 3, 177, :_reduce_224, - 3, 177, :_reduce_225, - 3, 177, :_reduce_226, - 3, 177, :_reduce_227, - 3, 177, :_reduce_228, - 2, 177, :_reduce_229, - 2, 177, :_reduce_230, - 3, 177, :_reduce_231, - 3, 177, :_reduce_232, - 3, 177, :_reduce_233, - 3, 177, :_reduce_234, - 3, 177, :_reduce_235, - 0, 211, :_reduce_236, - 0, 212, :_reduce_237, - 8, 177, :_reduce_238, - 1, 177, :_reduce_none, - 1, 210, :_reduce_none, - 1, 213, :_reduce_none, - 2, 213, :_reduce_none, - 4, 213, :_reduce_243, - 2, 213, :_reduce_244, - 3, 218, :_reduce_245, - 0, 219, :_reduce_246, - 1, 219, :_reduce_none, - 0, 168, :_reduce_248, - 1, 168, :_reduce_none, - 2, 168, :_reduce_none, - 4, 168, :_reduce_251, - 2, 168, :_reduce_252, - 1, 189, :_reduce_253, - 2, 189, :_reduce_254, - 2, 189, :_reduce_255, - 4, 189, :_reduce_256, - 1, 189, :_reduce_257, - 0, 222, :_reduce_258, - 2, 183, :_reduce_259, - 2, 221, :_reduce_260, - 2, 220, :_reduce_261, - 0, 220, :_reduce_262, - 1, 215, :_reduce_263, - 2, 215, :_reduce_264, - 3, 215, :_reduce_265, - 4, 215, :_reduce_266, - 1, 173, :_reduce_267, - 1, 173, :_reduce_none, - 3, 172, :_reduce_269, - 4, 172, :_reduce_270, - 2, 172, :_reduce_271, - 1, 209, :_reduce_none, - 1, 209, :_reduce_none, - 1, 209, :_reduce_none, - 1, 209, :_reduce_none, - 1, 209, :_reduce_none, - 1, 209, :_reduce_none, - 1, 209, :_reduce_none, - 1, 209, :_reduce_none, - 1, 209, :_reduce_none, - 1, 209, :_reduce_none, - 1, 209, :_reduce_282, - 0, 245, :_reduce_283, - 4, 209, :_reduce_284, - 0, 246, :_reduce_285, - 0, 247, :_reduce_286, - 6, 209, :_reduce_287, - 0, 248, :_reduce_288, - 4, 209, :_reduce_289, - 3, 209, :_reduce_290, - 3, 209, :_reduce_291, - 2, 209, :_reduce_292, - 3, 209, :_reduce_293, - 3, 209, :_reduce_294, - 1, 209, :_reduce_295, - 4, 209, :_reduce_296, - 3, 209, :_reduce_297, - 1, 209, :_reduce_298, - 5, 209, :_reduce_299, - 4, 209, :_reduce_300, - 3, 209, :_reduce_301, - 2, 209, :_reduce_302, - 1, 209, :_reduce_none, - 2, 209, :_reduce_304, - 2, 209, :_reduce_305, - 6, 209, :_reduce_306, - 6, 209, :_reduce_307, - 0, 249, :_reduce_308, - 0, 250, :_reduce_309, - 7, 209, :_reduce_310, - 0, 251, :_reduce_311, - 0, 252, :_reduce_312, - 7, 209, :_reduce_313, - 5, 209, :_reduce_314, - 4, 209, :_reduce_315, - 0, 253, :_reduce_316, - 0, 254, :_reduce_317, - 9, 209, :_reduce_318, - 0, 255, :_reduce_319, - 6, 209, :_reduce_320, - 0, 256, :_reduce_321, - 7, 209, :_reduce_322, - 0, 257, :_reduce_323, - 5, 209, :_reduce_324, - 0, 258, :_reduce_325, - 6, 209, :_reduce_326, - 0, 259, :_reduce_327, - 0, 260, :_reduce_328, - 9, 209, :_reduce_329, - 1, 209, :_reduce_330, - 1, 209, :_reduce_331, - 1, 209, :_reduce_332, - 1, 209, :_reduce_333, - 1, 167, :_reduce_none, - 1, 236, :_reduce_none, - 1, 236, :_reduce_none, - 2, 236, :_reduce_337, - 1, 238, :_reduce_none, - 1, 238, :_reduce_none, - 1, 237, :_reduce_none, - 5, 237, :_reduce_341, - 1, 156, :_reduce_none, - 2, 156, :_reduce_343, - 1, 240, :_reduce_none, - 1, 240, :_reduce_none, - 1, 261, :_reduce_346, - 3, 261, :_reduce_347, - 1, 264, :_reduce_348, - 3, 264, :_reduce_349, - 1, 263, :_reduce_none, - 4, 263, :_reduce_351, - 6, 263, :_reduce_352, - 3, 263, :_reduce_353, - 5, 263, :_reduce_354, - 2, 263, :_reduce_355, - 4, 263, :_reduce_356, - 1, 263, :_reduce_357, - 3, 263, :_reduce_358, - 4, 265, :_reduce_359, - 2, 265, :_reduce_360, - 2, 265, :_reduce_361, - 1, 265, :_reduce_362, - 2, 270, :_reduce_363, - 0, 270, :_reduce_364, - 6, 271, :_reduce_365, - 8, 271, :_reduce_366, - 4, 271, :_reduce_367, - 6, 271, :_reduce_368, - 4, 271, :_reduce_369, - 2, 271, :_reduce_none, - 6, 271, :_reduce_371, - 2, 271, :_reduce_372, - 4, 271, :_reduce_373, - 6, 271, :_reduce_374, - 2, 271, :_reduce_375, - 4, 271, :_reduce_376, - 2, 271, :_reduce_377, - 4, 271, :_reduce_378, - 1, 271, :_reduce_none, - 0, 185, :_reduce_380, - 1, 185, :_reduce_381, - 3, 275, :_reduce_382, - 1, 275, :_reduce_383, - 4, 275, :_reduce_384, - 1, 276, :_reduce_385, - 4, 276, :_reduce_386, - 1, 277, :_reduce_387, - 3, 277, :_reduce_388, - 1, 278, :_reduce_389, - 1, 278, :_reduce_none, - 0, 282, :_reduce_391, - 0, 283, :_reduce_392, - 4, 235, :_reduce_393, - 4, 280, :_reduce_394, - 1, 280, :_reduce_395, - 3, 281, :_reduce_396, - 3, 281, :_reduce_397, - 0, 286, :_reduce_398, - 5, 285, :_reduce_399, - 2, 180, :_reduce_400, - 4, 180, :_reduce_401, - 5, 180, :_reduce_402, - 5, 180, :_reduce_403, - 2, 234, :_reduce_404, - 4, 234, :_reduce_405, - 4, 234, :_reduce_406, - 3, 234, :_reduce_407, - 3, 234, :_reduce_408, - 3, 234, :_reduce_409, - 2, 234, :_reduce_410, - 1, 234, :_reduce_411, - 4, 234, :_reduce_412, - 0, 288, :_reduce_413, - 5, 233, :_reduce_414, - 0, 289, :_reduce_415, - 5, 233, :_reduce_416, - 5, 239, :_reduce_417, - 1, 290, :_reduce_418, - 1, 290, :_reduce_none, - 6, 155, :_reduce_420, - 0, 155, :_reduce_421, - 1, 291, :_reduce_422, - 1, 291, :_reduce_none, - 1, 291, :_reduce_none, - 2, 292, :_reduce_425, - 1, 292, :_reduce_none, - 2, 157, :_reduce_427, - 1, 157, :_reduce_none, - 1, 223, :_reduce_none, - 1, 223, :_reduce_none, - 1, 223, :_reduce_none, - 1, 224, :_reduce_432, - 1, 294, :_reduce_433, - 2, 294, :_reduce_434, - 3, 295, :_reduce_435, - 1, 295, :_reduce_436, - 1, 295, :_reduce_437, - 3, 225, :_reduce_438, - 4, 226, :_reduce_439, - 3, 227, :_reduce_440, - 0, 299, :_reduce_441, - 3, 299, :_reduce_442, - 1, 300, :_reduce_443, - 2, 300, :_reduce_444, - 3, 229, :_reduce_445, - 0, 302, :_reduce_446, - 3, 302, :_reduce_447, - 3, 228, :_reduce_448, - 3, 230, :_reduce_449, - 0, 303, :_reduce_450, - 3, 303, :_reduce_451, - 0, 304, :_reduce_452, - 3, 304, :_reduce_453, - 0, 296, :_reduce_454, - 2, 296, :_reduce_455, - 0, 297, :_reduce_456, - 2, 297, :_reduce_457, - 0, 298, :_reduce_458, - 2, 298, :_reduce_459, - 1, 301, :_reduce_460, - 2, 301, :_reduce_461, - 0, 306, :_reduce_462, - 4, 301, :_reduce_463, - 1, 305, :_reduce_464, - 1, 305, :_reduce_465, - 1, 305, :_reduce_466, - 1, 305, :_reduce_none, - 1, 205, :_reduce_468, - 3, 206, :_reduce_469, - 1, 293, :_reduce_470, - 2, 293, :_reduce_471, - 1, 208, :_reduce_472, - 1, 208, :_reduce_473, - 1, 208, :_reduce_474, - 1, 208, :_reduce_475, - 1, 197, :_reduce_476, - 1, 197, :_reduce_477, - 1, 197, :_reduce_478, - 1, 197, :_reduce_479, - 1, 197, :_reduce_480, - 1, 198, :_reduce_481, - 1, 198, :_reduce_482, - 1, 198, :_reduce_483, - 1, 198, :_reduce_484, - 1, 198, :_reduce_485, - 1, 198, :_reduce_486, - 1, 198, :_reduce_487, - 1, 231, :_reduce_488, - 1, 231, :_reduce_489, - 1, 166, :_reduce_490, - 1, 166, :_reduce_491, - 1, 170, :_reduce_492, - 1, 170, :_reduce_493, - 1, 241, :_reduce_494, - 0, 307, :_reduce_495, - 4, 241, :_reduce_496, - 2, 241, :_reduce_497, - 3, 243, :_reduce_498, - 0, 309, :_reduce_499, - 3, 243, :_reduce_500, - 4, 308, :_reduce_501, - 2, 308, :_reduce_502, - 2, 308, :_reduce_503, - 1, 308, :_reduce_504, - 2, 311, :_reduce_505, - 0, 311, :_reduce_506, - 6, 284, :_reduce_507, - 8, 284, :_reduce_508, - 4, 284, :_reduce_509, - 6, 284, :_reduce_510, - 4, 284, :_reduce_511, - 6, 284, :_reduce_512, - 2, 284, :_reduce_513, - 4, 284, :_reduce_514, - 6, 284, :_reduce_515, - 2, 284, :_reduce_516, - 4, 284, :_reduce_517, - 2, 284, :_reduce_518, - 4, 284, :_reduce_519, - 1, 284, :_reduce_520, - 0, 284, :_reduce_521, - 1, 279, :_reduce_522, - 1, 279, :_reduce_523, - 1, 279, :_reduce_524, - 1, 279, :_reduce_525, - 1, 262, :_reduce_none, - 1, 262, :_reduce_527, - 1, 313, :_reduce_528, - 1, 314, :_reduce_529, - 3, 314, :_reduce_530, - 1, 272, :_reduce_531, - 3, 272, :_reduce_532, - 1, 315, :_reduce_533, - 2, 316, :_reduce_534, - 1, 316, :_reduce_535, - 2, 317, :_reduce_536, - 1, 317, :_reduce_537, - 1, 266, :_reduce_538, - 3, 266, :_reduce_539, - 1, 310, :_reduce_540, - 3, 310, :_reduce_541, - 1, 318, :_reduce_none, - 1, 318, :_reduce_none, - 2, 267, :_reduce_544, - 1, 267, :_reduce_545, - 3, 319, :_reduce_546, - 3, 320, :_reduce_547, - 1, 273, :_reduce_548, - 3, 273, :_reduce_549, - 1, 312, :_reduce_550, - 3, 312, :_reduce_551, - 1, 321, :_reduce_none, - 1, 321, :_reduce_none, - 2, 274, :_reduce_554, - 1, 274, :_reduce_555, - 1, 322, :_reduce_none, - 1, 322, :_reduce_none, - 2, 269, :_reduce_558, - 2, 268, :_reduce_559, - 0, 268, :_reduce_560, - 1, 244, :_reduce_none, - 3, 244, :_reduce_562, - 0, 232, :_reduce_563, - 2, 232, :_reduce_none, - 1, 217, :_reduce_565, - 3, 217, :_reduce_566, - 3, 323, :_reduce_567, - 2, 323, :_reduce_568, - 4, 323, :_reduce_569, - 2, 323, :_reduce_570, - 1, 188, :_reduce_none, - 1, 188, :_reduce_none, - 1, 188, :_reduce_none, - 1, 182, :_reduce_none, - 1, 182, :_reduce_none, - 1, 182, :_reduce_none, - 1, 182, :_reduce_none, - 1, 287, :_reduce_none, - 1, 287, :_reduce_none, - 1, 287, :_reduce_none, - 1, 181, :_reduce_none, - 1, 181, :_reduce_none, - 0, 149, :_reduce_none, - 1, 149, :_reduce_none, - 0, 176, :_reduce_none, - 1, 176, :_reduce_none, - 2, 192, :_reduce_587, - 2, 169, :_reduce_588, - 0, 216, :_reduce_none, - 1, 216, :_reduce_none, - 1, 216, :_reduce_none, - 1, 242, :_reduce_592, - 1, 242, :_reduce_none, - 1, 151, :_reduce_none, - 2, 151, :_reduce_none, - 0, 214, :_reduce_596 ] - -racc_reduce_n = 597 - -racc_shift_n = 1024 - -racc_token_table = { - false => 0, - :error => 1, - :kCLASS => 2, - :kMODULE => 3, - :kDEF => 4, - :kUNDEF => 5, - :kBEGIN => 6, - :kRESCUE => 7, - :kENSURE => 8, - :kEND => 9, - :kIF => 10, - :kUNLESS => 11, - :kTHEN => 12, - :kELSIF => 13, - :kELSE => 14, - :kCASE => 15, - :kWHEN => 16, - :kWHILE => 17, - :kUNTIL => 18, - :kFOR => 19, - :kBREAK => 20, - :kNEXT => 21, - :kREDO => 22, - :kRETRY => 23, - :kIN => 24, - :kDO => 25, - :kDO_COND => 26, - :kDO_BLOCK => 27, - :kDO_LAMBDA => 28, - :kRETURN => 29, - :kYIELD => 30, - :kSUPER => 31, - :kSELF => 32, - :kNIL => 33, - :kTRUE => 34, - :kFALSE => 35, - :kAND => 36, - :kOR => 37, - :kNOT => 38, - :kIF_MOD => 39, - :kUNLESS_MOD => 40, - :kWHILE_MOD => 41, - :kUNTIL_MOD => 42, - :kRESCUE_MOD => 43, - :kALIAS => 44, - :kDEFINED => 45, - :klBEGIN => 46, - :klEND => 47, - :k__LINE__ => 48, - :k__FILE__ => 49, - :k__ENCODING__ => 50, - :tIDENTIFIER => 51, - :tFID => 52, - :tGVAR => 53, - :tIVAR => 54, - :tCONSTANT => 55, - :tLABEL => 56, - :tCVAR => 57, - :tNTH_REF => 58, - :tBACK_REF => 59, - :tSTRING_CONTENT => 60, - :tINTEGER => 61, - :tFLOAT => 62, - :tREGEXP_END => 63, - :tUPLUS => 64, - :tUMINUS => 65, - :tUMINUS_NUM => 66, - :tPOW => 67, - :tCMP => 68, - :tEQ => 69, - :tEQQ => 70, - :tNEQ => 71, - :tGEQ => 72, - :tLEQ => 73, - :tANDOP => 74, - :tOROP => 75, - :tMATCH => 76, - :tNMATCH => 77, - :tDOT => 78, - :tDOT2 => 79, - :tDOT3 => 80, - :tAREF => 81, - :tASET => 82, - :tLSHFT => 83, - :tRSHFT => 84, - :tCOLON2 => 85, - :tCOLON3 => 86, - :tOP_ASGN => 87, - :tASSOC => 88, - :tLPAREN => 89, - :tLPAREN2 => 90, - :tRPAREN => 91, - :tLPAREN_ARG => 92, - :tLBRACK => 93, - :tLBRACK2 => 94, - :tRBRACK => 95, - :tLBRACE => 96, - :tLBRACE_ARG => 97, - :tSTAR => 98, - :tSTAR2 => 99, - :tAMPER => 100, - :tAMPER2 => 101, - :tTILDE => 102, - :tPERCENT => 103, - :tDIVIDE => 104, - :tDSTAR => 105, - :tPLUS => 106, - :tMINUS => 107, - :tLT => 108, - :tGT => 109, - :tPIPE => 110, - :tBANG => 111, - :tCARET => 112, - :tLCURLY => 113, - :tRCURLY => 114, - :tBACK_REF2 => 115, - :tSYMBEG => 116, - :tSTRING_BEG => 117, - :tXSTRING_BEG => 118, - :tREGEXP_BEG => 119, - :tREGEXP_OPT => 120, - :tWORDS_BEG => 121, - :tQWORDS_BEG => 122, - :tSYMBOLS_BEG => 123, - :tQSYMBOLS_BEG => 124, - :tSTRING_DBEG => 125, - :tSTRING_DVAR => 126, - :tSTRING_END => 127, - :tSTRING_DEND => 128, - :tSTRING => 129, - :tSYMBOL => 130, - :tNL => 131, - :tEH => 132, - :tCOLON => 133, - :tCOMMA => 134, - :tSPACE => 135, - :tSEMI => 136, - :tLAMBDA => 137, - :tLAMBEG => 138, - :tCHARACTER => 139, - :tRATIONAL => 140, - :tIMAGINARY => 141, - :tLABEL_END => 142, - :tEQL => 143, - :tLOWEST => 144 } - -racc_nt_base = 145 - -racc_use_result_var = true - -Racc_arg = [ - racc_action_table, - racc_action_check, - racc_action_default, - racc_action_pointer, - racc_goto_table, - racc_goto_check, - racc_goto_default, - racc_goto_pointer, - racc_nt_base, - racc_reduce_table, - racc_token_table, - racc_shift_n, - racc_reduce_n, - racc_use_result_var ] - -Racc_token_to_s_table = [ - "$end", - "error", - "kCLASS", - "kMODULE", - "kDEF", - "kUNDEF", - "kBEGIN", - "kRESCUE", - "kENSURE", - "kEND", - "kIF", - "kUNLESS", - "kTHEN", - "kELSIF", - "kELSE", - "kCASE", - "kWHEN", - "kWHILE", - "kUNTIL", - "kFOR", - "kBREAK", - "kNEXT", - "kREDO", - "kRETRY", - "kIN", - "kDO", - "kDO_COND", - "kDO_BLOCK", - "kDO_LAMBDA", - "kRETURN", - "kYIELD", - "kSUPER", - "kSELF", - "kNIL", - "kTRUE", - "kFALSE", - "kAND", - "kOR", - "kNOT", - "kIF_MOD", - "kUNLESS_MOD", - "kWHILE_MOD", - "kUNTIL_MOD", - "kRESCUE_MOD", - "kALIAS", - "kDEFINED", - "klBEGIN", - "klEND", - "k__LINE__", - "k__FILE__", - "k__ENCODING__", - "tIDENTIFIER", - "tFID", - "tGVAR", - "tIVAR", - "tCONSTANT", - "tLABEL", - "tCVAR", - "tNTH_REF", - "tBACK_REF", - "tSTRING_CONTENT", - "tINTEGER", - "tFLOAT", - "tREGEXP_END", - "tUPLUS", - "tUMINUS", - "tUMINUS_NUM", - "tPOW", - "tCMP", - "tEQ", - "tEQQ", - "tNEQ", - "tGEQ", - "tLEQ", - "tANDOP", - "tOROP", - "tMATCH", - "tNMATCH", - "tDOT", - "tDOT2", - "tDOT3", - "tAREF", - "tASET", - "tLSHFT", - "tRSHFT", - "tCOLON2", - "tCOLON3", - "tOP_ASGN", - "tASSOC", - "tLPAREN", - "tLPAREN2", - "tRPAREN", - "tLPAREN_ARG", - "tLBRACK", - "tLBRACK2", - "tRBRACK", - "tLBRACE", - "tLBRACE_ARG", - "tSTAR", - "tSTAR2", - "tAMPER", - "tAMPER2", - "tTILDE", - "tPERCENT", - "tDIVIDE", - "tDSTAR", - "tPLUS", - "tMINUS", - "tLT", - "tGT", - "tPIPE", - "tBANG", - "tCARET", - "tLCURLY", - "tRCURLY", - "tBACK_REF2", - "tSYMBEG", - "tSTRING_BEG", - "tXSTRING_BEG", - "tREGEXP_BEG", - "tREGEXP_OPT", - "tWORDS_BEG", - "tQWORDS_BEG", - "tSYMBOLS_BEG", - "tQSYMBOLS_BEG", - "tSTRING_DBEG", - "tSTRING_DVAR", - "tSTRING_END", - "tSTRING_DEND", - "tSTRING", - "tSYMBOL", - "tNL", - "tEH", - "tCOLON", - "tCOMMA", - "tSPACE", - "tSEMI", - "tLAMBDA", - "tLAMBEG", - "tCHARACTER", - "tRATIONAL", - "tIMAGINARY", - "tLABEL_END", - "tEQL", - "tLOWEST", - "$start", - "program", - "top_compstmt", - "top_stmts", - "opt_terms", - "top_stmt", - "terms", - "stmt", - "bodystmt", - "compstmt", - "opt_rescue", - "opt_else", - "opt_ensure", - "stmts", - "stmt_or_begin", - "fitem", - "undef_list", - "expr_value", - "command_asgn", - "mlhs", - "command_call", - "var_lhs", - "primary_value", - "opt_call_args", - "rbracket", - "backref", - "lhs", - "mrhs", - "mrhs_arg", - "expr", - "@1", - "opt_nl", - "arg", - "command", - "block_command", - "block_call", - "dot_or_colon", - "operation2", - "command_args", - "cmd_brace_block", - "opt_block_param", - "fcall", - "@2", - "operation", - "call_args", - "mlhs_basic", - "mlhs_inner", - "rparen", - "mlhs_head", - "mlhs_item", - "mlhs_node", - "mlhs_post", - "user_variable", - "keyword_variable", - "cname", - "cpath", - "fname", - "op", - "reswords", - "fsym", - "symbol", - "dsym", - "@3", - "simple_numeric", - "primary", - "arg_value", - "@4", - "@5", - "aref_args", - "none", - "args", - "trailer", - "assocs", - "paren_args", - "opt_paren_args", - "opt_block_arg", - "block_arg", - "@6", - "literal", - "strings", - "xstring", - "regexp", - "words", - "qwords", - "symbols", - "qsymbols", - "var_ref", - "assoc_list", - "brace_block", - "method_call", - "lambda", - "then", - "if_tail", - "do", - "case_body", - "for_var", - "superclass", - "term", - "f_arglist", - "singleton", - "@7", - "@8", - "@9", - "@10", - "@11", - "@12", - "@13", - "@14", - "@15", - "@16", - "@17", - "@18", - "@19", - "@20", - "@21", - "@22", - "f_marg", - "f_norm_arg", - "f_margs", - "f_marg_list", - "block_args_tail", - "f_block_kwarg", - "f_kwrest", - "opt_f_block_arg", - "f_block_arg", - "opt_block_args_tail", - "block_param", - "f_arg", - "f_block_optarg", - "f_rest_arg", - "block_param_def", - "opt_bv_decl", - "bv_decls", - "bvar", - "f_bad_arg", - "f_larglist", - "lambda_body", - "@23", - "@24", - "f_args", - "do_block", - "@25", - "operation3", - "@26", - "@27", - "cases", - "exc_list", - "exc_var", - "numeric", - "string", - "string1", - "string_contents", - "xstring_contents", - "regexp_contents", - "word_list", - "word", - "string_content", - "symbol_list", - "qword_list", - "qsym_list", - "string_dvar", - "@28", - "@29", - "args_tail", - "@30", - "f_kwarg", - "opt_args_tail", - "f_optarg", - "f_arg_asgn", - "f_arg_item", - "f_label", - "f_kw", - "f_block_kw", - "kwrest_mark", - "f_opt", - "f_block_opt", - "restarg_mark", - "blkarg_mark", - "assoc" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -# reduce 1 omitted - -module_eval(<<'.,.,', 'ruby22.y', 78) - def _reduce_2(val, _values, result) - result = @builder.compstmt(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 83) - def _reduce_3(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 87) - def _reduce_4(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 91) - def _reduce_5(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 95) - def _reduce_6(val, _values, result) - result = [ val[1] ] - - result - end -.,., - -# reduce 7 omitted - -module_eval(<<'.,.,', 'ruby22.y', 101) - def _reduce_8(val, _values, result) - result = @builder.preexe(val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 106) - def _reduce_9(val, _values, result) - rescue_bodies = val[1] - else_t, else_ = val[2] - ensure_t, ensure_ = val[3] - - if rescue_bodies.empty? && !else_.nil? - diagnostic :warning, :useless_else, nil, else_t - end - - result = @builder.begin_body(val[0], - rescue_bodies, - else_t, else_, - ensure_t, ensure_) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 122) - def _reduce_10(val, _values, result) - result = @builder.compstmt(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 127) - def _reduce_11(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 131) - def _reduce_12(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 135) - def _reduce_13(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 139) - def _reduce_14(val, _values, result) - result = [ val[1] ] - - result - end -.,., - -# reduce 15 omitted - -module_eval(<<'.,.,', 'ruby22.y', 145) - def _reduce_16(val, _values, result) - diagnostic :error, :begin_in_method, nil, val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 150) - def _reduce_17(val, _values, result) - @lexer.state = :expr_fname - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 154) - def _reduce_18(val, _values, result) - result = @builder.alias(val[0], val[1], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 158) - def _reduce_19(val, _values, result) - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.gvar(val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 164) - def _reduce_20(val, _values, result) - result = @builder.alias(val[0], - @builder.gvar(val[1]), - @builder.back_ref(val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 170) - def _reduce_21(val, _values, result) - diagnostic :error, :nth_ref_alias, nil, val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 174) - def _reduce_22(val, _values, result) - result = @builder.undef_method(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 178) - def _reduce_23(val, _values, result) - result = @builder.condition_mod(val[0], nil, - val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 183) - def _reduce_24(val, _values, result) - result = @builder.condition_mod(nil, val[0], - val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 188) - def _reduce_25(val, _values, result) - result = @builder.loop_mod(:while, val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 192) - def _reduce_26(val, _values, result) - result = @builder.loop_mod(:until, val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 196) - def _reduce_27(val, _values, result) - rescue_body = @builder.rescue_body(val[1], - nil, nil, nil, - nil, val[2]) - - result = @builder.begin_body(val[0], [ rescue_body ]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 204) - def _reduce_28(val, _values, result) - result = @builder.postexe(val[0], val[1], val[2], val[3]) - - result - end -.,., - -# reduce 29 omitted - -module_eval(<<'.,.,', 'ruby22.y', 209) - def _reduce_30(val, _values, result) - result = @builder.multi_assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 213) - def _reduce_31(val, _values, result) - result = @builder.op_assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 217) - def _reduce_32(val, _values, result) - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 224) - def _reduce_33(val, _values, result) - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 231) - def _reduce_34(val, _values, result) - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 238) - def _reduce_35(val, _values, result) - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 245) - def _reduce_36(val, _values, result) - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 252) - def _reduce_37(val, _values, result) - @builder.op_assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 256) - def _reduce_38(val, _values, result) - result = @builder.assign(val[0], val[1], - @builder.array(nil, val[2], nil)) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 261) - def _reduce_39(val, _values, result) - result = @builder.multi_assign(val[0], val[1], val[2]) - - result - end -.,., - -# reduce 40 omitted - -module_eval(<<'.,.,', 'ruby22.y', 267) - def _reduce_41(val, _values, result) - result = @builder.assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 271) - def _reduce_42(val, _values, result) - result = @builder.assign(val[0], val[1], val[2]) - - result - end -.,., - -# reduce 43 omitted - -module_eval(<<'.,.,', 'ruby22.y', 277) - def _reduce_44(val, _values, result) - result = @builder.logical_op(:and, val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 281) - def _reduce_45(val, _values, result) - result = @builder.logical_op(:or, val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 285) - def _reduce_46(val, _values, result) - result = @builder.not_op(val[0], nil, val[2], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 289) - def _reduce_47(val, _values, result) - result = @builder.not_op(val[0], nil, val[1], nil) - - result - end -.,., - -# reduce 48 omitted - -# reduce 49 omitted - -# reduce 50 omitted - -# reduce 51 omitted - -# reduce 52 omitted - -module_eval(<<'.,.,', 'ruby22.y', 301) - def _reduce_53(val, _values, result) - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 307) - def _reduce_54(val, _values, result) - @static_env.extend_dynamic - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 311) - def _reduce_55(val, _values, result) - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - - result - end -.,., - -# reduce 56 omitted - -module_eval(<<'.,.,', 'ruby22.y', 320) - def _reduce_57(val, _values, result) - result = @builder.call_method(nil, nil, val[0], - nil, val[1], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 325) - def _reduce_58(val, _values, result) - method_call = @builder.call_method(nil, nil, val[0], - nil, val[1], nil) - - begin_t, args, body, end_t = val[2] - result = @builder.block(method_call, - begin_t, args, body, end_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 334) - def _reduce_59(val, _values, result) - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 339) - def _reduce_60(val, _values, result) - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 348) - def _reduce_61(val, _values, result) - result = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 353) - def _reduce_62(val, _values, result) - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 362) - def _reduce_63(val, _values, result) - result = @builder.keyword_cmd(:super, val[0], - nil, val[1], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 367) - def _reduce_64(val, _values, result) - result = @builder.keyword_cmd(:yield, val[0], - nil, val[1], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 372) - def _reduce_65(val, _values, result) - result = @builder.keyword_cmd(:return, val[0], - nil, val[1], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 377) - def _reduce_66(val, _values, result) - result = @builder.keyword_cmd(:break, val[0], - nil, val[1], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 382) - def _reduce_67(val, _values, result) - result = @builder.keyword_cmd(:next, val[0], - nil, val[1], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 388) - def _reduce_68(val, _values, result) - result = @builder.multi_lhs(nil, val[0], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 392) - def _reduce_69(val, _values, result) - result = @builder.begin(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 397) - def _reduce_70(val, _values, result) - result = @builder.multi_lhs(nil, val[0], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 401) - def _reduce_71(val, _values, result) - result = @builder.multi_lhs(val[0], val[1], val[2]) - - result - end -.,., - -# reduce 72 omitted - -module_eval(<<'.,.,', 'ruby22.y', 407) - def _reduce_73(val, _values, result) - result = val[0]. - push(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 412) - def _reduce_74(val, _values, result) - result = val[0]. - push(@builder.splat(val[1], val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 417) - def _reduce_75(val, _values, result) - result = val[0]. - push(@builder.splat(val[1], val[2])). - concat(val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 423) - def _reduce_76(val, _values, result) - result = val[0]. - push(@builder.splat(val[1])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 428) - def _reduce_77(val, _values, result) - result = val[0]. - push(@builder.splat(val[1])). - concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 434) - def _reduce_78(val, _values, result) - result = [ @builder.splat(val[0], val[1]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 438) - def _reduce_79(val, _values, result) - result = [ @builder.splat(val[0], val[1]), - *val[3] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 443) - def _reduce_80(val, _values, result) - result = [ @builder.splat(val[0]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 447) - def _reduce_81(val, _values, result) - result = [ @builder.splat(val[0]), - *val[2] ] - - result - end -.,., - -# reduce 82 omitted - -module_eval(<<'.,.,', 'ruby22.y', 454) - def _reduce_83(val, _values, result) - result = @builder.begin(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 459) - def _reduce_84(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 463) - def _reduce_85(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 468) - def _reduce_86(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 472) - def _reduce_87(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 477) - def _reduce_88(val, _values, result) - result = @builder.assignable(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 481) - def _reduce_89(val, _values, result) - result = @builder.assignable(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 485) - def _reduce_90(val, _values, result) - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 489) - def _reduce_91(val, _values, result) - result = @builder.attr_asgn(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 493) - def _reduce_92(val, _values, result) - result = @builder.attr_asgn(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 497) - def _reduce_93(val, _values, result) - result = @builder.attr_asgn(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 501) - def _reduce_94(val, _values, result) - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 506) - def _reduce_95(val, _values, result) - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 511) - def _reduce_96(val, _values, result) - result = @builder.assignable(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 516) - def _reduce_97(val, _values, result) - result = @builder.assignable(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 520) - def _reduce_98(val, _values, result) - result = @builder.assignable(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 524) - def _reduce_99(val, _values, result) - result = @builder.index_asgn(val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 528) - def _reduce_100(val, _values, result) - result = @builder.attr_asgn(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 532) - def _reduce_101(val, _values, result) - result = @builder.attr_asgn(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 536) - def _reduce_102(val, _values, result) - result = @builder.attr_asgn(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 540) - def _reduce_103(val, _values, result) - result = @builder.assignable( - @builder.const_fetch(val[0], val[1], val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 545) - def _reduce_104(val, _values, result) - result = @builder.assignable( - @builder.const_global(val[0], val[1])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 550) - def _reduce_105(val, _values, result) - result = @builder.assignable(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 555) - def _reduce_106(val, _values, result) - diagnostic :error, :module_name_const, nil, val[0] - - result - end -.,., - -# reduce 107 omitted - -module_eval(<<'.,.,', 'ruby22.y', 561) - def _reduce_108(val, _values, result) - result = @builder.const_global(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 565) - def _reduce_109(val, _values, result) - result = @builder.const(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 569) - def _reduce_110(val, _values, result) - result = @builder.const_fetch(val[0], val[1], val[2]) - - result - end -.,., - -# reduce 111 omitted - -# reduce 112 omitted - -# reduce 113 omitted - -# reduce 114 omitted - -# reduce 115 omitted - -module_eval(<<'.,.,', 'ruby22.y', 578) - def _reduce_116(val, _values, result) - result = @builder.symbol(val[0]) - - result - end -.,., - -# reduce 117 omitted - -# reduce 118 omitted - -# reduce 119 omitted - -module_eval(<<'.,.,', 'ruby22.y', 587) - def _reduce_120(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 591) - def _reduce_121(val, _values, result) - @lexer.state = :expr_fname - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 595) - def _reduce_122(val, _values, result) - result = val[0] << val[3] - - result - end -.,., - -# reduce 123 omitted - -# reduce 124 omitted - -# reduce 125 omitted - -# reduce 126 omitted - -# reduce 127 omitted - -# reduce 128 omitted - -# reduce 129 omitted - -# reduce 130 omitted - -# reduce 131 omitted - -# reduce 132 omitted - -# reduce 133 omitted - -# reduce 134 omitted - -# reduce 135 omitted - -# reduce 136 omitted - -# reduce 137 omitted - -# reduce 138 omitted - -# reduce 139 omitted - -# reduce 140 omitted - -# reduce 141 omitted - -# reduce 142 omitted - -# reduce 143 omitted - -# reduce 144 omitted - -# reduce 145 omitted - -# reduce 146 omitted - -# reduce 147 omitted - -# reduce 148 omitted - -# reduce 149 omitted - -# reduce 150 omitted - -# reduce 151 omitted - -# reduce 152 omitted - -# reduce 153 omitted - -# reduce 154 omitted - -# reduce 155 omitted - -# reduce 156 omitted - -# reduce 157 omitted - -# reduce 158 omitted - -# reduce 159 omitted - -# reduce 160 omitted - -# reduce 161 omitted - -# reduce 162 omitted - -# reduce 163 omitted - -# reduce 164 omitted - -# reduce 165 omitted - -# reduce 166 omitted - -# reduce 167 omitted - -# reduce 168 omitted - -# reduce 169 omitted - -# reduce 170 omitted - -# reduce 171 omitted - -# reduce 172 omitted - -# reduce 173 omitted - -# reduce 174 omitted - -# reduce 175 omitted - -# reduce 176 omitted - -# reduce 177 omitted - -# reduce 178 omitted - -# reduce 179 omitted - -# reduce 180 omitted - -# reduce 181 omitted - -# reduce 182 omitted - -# reduce 183 omitted - -# reduce 184 omitted - -# reduce 185 omitted - -# reduce 186 omitted - -# reduce 187 omitted - -# reduce 188 omitted - -# reduce 189 omitted - -# reduce 190 omitted - -# reduce 191 omitted - -# reduce 192 omitted - -# reduce 193 omitted - -module_eval(<<'.,.,', 'ruby22.y', 616) - def _reduce_194(val, _values, result) - result = @builder.assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 620) - def _reduce_195(val, _values, result) - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.assign(val[0], val[1], rescue_) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 630) - def _reduce_196(val, _values, result) - result = @builder.op_assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 634) - def _reduce_197(val, _values, result) - rescue_body = @builder.rescue_body(val[3], - nil, nil, nil, - nil, val[4]) - - rescue_ = @builder.begin_body(val[2], [ rescue_body ]) - - result = @builder.op_assign(val[0], val[1], rescue_) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 644) - def _reduce_198(val, _values, result) - result = @builder.op_assign( - @builder.index( - val[0], val[1], val[2], val[3]), - val[4], val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 651) - def _reduce_199(val, _values, result) - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 658) - def _reduce_200(val, _values, result) - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 665) - def _reduce_201(val, _values, result) - result = @builder.op_assign( - @builder.call_method( - val[0], val[1], val[2]), - val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 672) - def _reduce_202(val, _values, result) - const = @builder.const_op_assignable( - @builder.const_fetch(val[0], val[1], val[2])) - result = @builder.op_assign(const, val[3], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 678) - def _reduce_203(val, _values, result) - const = @builder.const_op_assignable( - @builder.const_global(val[0], val[1])) - result = @builder.op_assign(const, val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 684) - def _reduce_204(val, _values, result) - result = @builder.op_assign(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 688) - def _reduce_205(val, _values, result) - result = @builder.range_inclusive(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 692) - def _reduce_206(val, _values, result) - result = @builder.range_exclusive(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 696) - def _reduce_207(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 700) - def _reduce_208(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 704) - def _reduce_209(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 708) - def _reduce_210(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 712) - def _reduce_211(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 716) - def _reduce_212(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 720) - def _reduce_213(val, _values, result) - result = @builder.unary_op(val[0], - @builder.binary_op( - val[1], val[2], val[3])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 726) - def _reduce_214(val, _values, result) - result = @builder.unary_op(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 730) - def _reduce_215(val, _values, result) - result = @builder.unary_op(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 734) - def _reduce_216(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 738) - def _reduce_217(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 742) - def _reduce_218(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 746) - def _reduce_219(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 750) - def _reduce_220(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 754) - def _reduce_221(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 758) - def _reduce_222(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 762) - def _reduce_223(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 766) - def _reduce_224(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 770) - def _reduce_225(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 774) - def _reduce_226(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 778) - def _reduce_227(val, _values, result) - result = @builder.match_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 782) - def _reduce_228(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 786) - def _reduce_229(val, _values, result) - result = @builder.not_op(val[0], nil, val[1], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 790) - def _reduce_230(val, _values, result) - result = @builder.unary_op(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 794) - def _reduce_231(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 798) - def _reduce_232(val, _values, result) - result = @builder.binary_op(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 802) - def _reduce_233(val, _values, result) - result = @builder.logical_op(:and, val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 806) - def _reduce_234(val, _values, result) - result = @builder.logical_op(:or, val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 810) - def _reduce_235(val, _values, result) - result = @builder.keyword_cmd(:defined?, val[0], nil, [ val[2] ], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 820) - def _reduce_236(val, _values, result) - @lexer.push_cond - @lexer.cond.push(true) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 825) - def _reduce_237(val, _values, result) - @lexer.pop_cond - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 829) - def _reduce_238(val, _values, result) - result = @builder.ternary(val[0], val[1], - val[3], val[5], val[7]) - - result - end -.,., - -# reduce 239 omitted - -# reduce 240 omitted - -# reduce 241 omitted - -# reduce 242 omitted - -module_eval(<<'.,.,', 'ruby22.y', 840) - def _reduce_243(val, _values, result) - result = val[0] << @builder.associate(nil, val[2], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 844) - def _reduce_244(val, _values, result) - result = [ @builder.associate(nil, val[0], nil) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 849) - def _reduce_245(val, _values, result) - result = val - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 854) - def _reduce_246(val, _values, result) - result = [ nil, [], nil ] - - result - end -.,., - -# reduce 247 omitted - -module_eval(<<'.,.,', 'ruby22.y', 860) - def _reduce_248(val, _values, result) - result = [] - - result - end -.,., - -# reduce 249 omitted - -# reduce 250 omitted - -module_eval(<<'.,.,', 'ruby22.y', 866) - def _reduce_251(val, _values, result) - result = val[0] << @builder.associate(nil, val[2], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 870) - def _reduce_252(val, _values, result) - result = [ @builder.associate(nil, val[0], nil) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 875) - def _reduce_253(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 879) - def _reduce_254(val, _values, result) - result = val[0].concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 883) - def _reduce_255(val, _values, result) - result = [ @builder.associate(nil, val[0], nil) ] - result.concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 888) - def _reduce_256(val, _values, result) - assocs = @builder.associate(nil, val[2], nil) - result = val[0] << assocs - result.concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 894) - def _reduce_257(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 898) - def _reduce_258(val, _values, result) - result = @lexer.cmdarg.dup - @lexer.cmdarg.push(true) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 903) - def _reduce_259(val, _values, result) - @lexer.cmdarg = val[0] - - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 910) - def _reduce_260(val, _values, result) - result = @builder.block_pass(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 915) - def _reduce_261(val, _values, result) - result = [ val[1] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 919) - def _reduce_262(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 924) - def _reduce_263(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 928) - def _reduce_264(val, _values, result) - result = [ @builder.splat(val[0], val[1]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 932) - def _reduce_265(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 936) - def _reduce_266(val, _values, result) - result = val[0] << @builder.splat(val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 941) - def _reduce_267(val, _values, result) - result = @builder.array(nil, val[0], nil) - - result - end -.,., - -# reduce 268 omitted - -module_eval(<<'.,.,', 'ruby22.y', 947) - def _reduce_269(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 951) - def _reduce_270(val, _values, result) - result = val[0] << @builder.splat(val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 955) - def _reduce_271(val, _values, result) - result = [ @builder.splat(val[0], val[1]) ] - - result - end -.,., - -# reduce 272 omitted - -# reduce 273 omitted - -# reduce 274 omitted - -# reduce 275 omitted - -# reduce 276 omitted - -# reduce 277 omitted - -# reduce 278 omitted - -# reduce 279 omitted - -# reduce 280 omitted - -# reduce 281 omitted - -module_eval(<<'.,.,', 'ruby22.y', 970) - def _reduce_282(val, _values, result) - result = @builder.call_method(nil, nil, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 974) - def _reduce_283(val, _values, result) - result = @lexer.cmdarg.dup - @lexer.cmdarg.clear - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 979) - def _reduce_284(val, _values, result) - @lexer.cmdarg = val[1] - - result = @builder.begin_keyword(val[0], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 985) - def _reduce_285(val, _values, result) - result = @lexer.cmdarg.dup - @lexer.cmdarg.clear - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 990) - def _reduce_286(val, _values, result) - @lexer.state = :expr_endarg - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 994) - def _reduce_287(val, _values, result) - @lexer.cmdarg = val[1] - - result = @builder.begin(val[0], val[2], val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1000) - def _reduce_288(val, _values, result) - @lexer.state = :expr_endarg - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1004) - def _reduce_289(val, _values, result) - result = @builder.begin(val[0], nil, val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1008) - def _reduce_290(val, _values, result) - result = @builder.begin(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1012) - def _reduce_291(val, _values, result) - result = @builder.const_fetch(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1016) - def _reduce_292(val, _values, result) - result = @builder.const_global(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1020) - def _reduce_293(val, _values, result) - result = @builder.array(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1024) - def _reduce_294(val, _values, result) - result = @builder.associate(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1028) - def _reduce_295(val, _values, result) - result = @builder.keyword_cmd(:return, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1032) - def _reduce_296(val, _values, result) - result = @builder.keyword_cmd(:yield, val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1036) - def _reduce_297(val, _values, result) - result = @builder.keyword_cmd(:yield, val[0], val[1], [], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1040) - def _reduce_298(val, _values, result) - result = @builder.keyword_cmd(:yield, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1044) - def _reduce_299(val, _values, result) - result = @builder.keyword_cmd(:defined?, val[0], - val[2], [ val[3] ], val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1049) - def _reduce_300(val, _values, result) - result = @builder.not_op(val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1053) - def _reduce_301(val, _values, result) - result = @builder.not_op(val[0], val[1], nil, val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1057) - def _reduce_302(val, _values, result) - method_call = @builder.call_method(nil, nil, val[0]) - - begin_t, args, body, end_t = val[1] - result = @builder.block(method_call, - begin_t, args, body, end_t) - - result - end -.,., - -# reduce 303 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1066) - def _reduce_304(val, _values, result) - begin_t, args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, args, body, end_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1072) - def _reduce_305(val, _values, result) - lambda_call = @builder.call_lambda(val[0]) - - args, (begin_t, body, end_t) = val[1] - result = @builder.block(lambda_call, - begin_t, args, body, end_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1080) - def _reduce_306(val, _values, result) - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1087) - def _reduce_307(val, _values, result) - else_t, else_ = val[4] - result = @builder.condition(val[0], val[1], val[2], - else_, else_t, - val[3], val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1094) - def _reduce_308(val, _values, result) - @lexer.cond.push(true) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1098) - def _reduce_309(val, _values, result) - @lexer.cond.pop - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1102) - def _reduce_310(val, _values, result) - result = @builder.loop(:while, val[0], val[2], val[3], - val[5], val[6]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1107) - def _reduce_311(val, _values, result) - @lexer.cond.push(true) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1111) - def _reduce_312(val, _values, result) - @lexer.cond.pop - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1115) - def _reduce_313(val, _values, result) - result = @builder.loop(:until, val[0], val[2], val[3], - val[5], val[6]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1120) - def _reduce_314(val, _values, result) - *when_bodies, (else_t, else_body) = *val[3] - - result = @builder.case(val[0], val[1], - when_bodies, else_t, else_body, - val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1128) - def _reduce_315(val, _values, result) - *when_bodies, (else_t, else_body) = *val[2] - - result = @builder.case(val[0], nil, - when_bodies, else_t, else_body, - val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1136) - def _reduce_316(val, _values, result) - @lexer.cond.push(true) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1140) - def _reduce_317(val, _values, result) - @lexer.cond.pop - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1144) - def _reduce_318(val, _values, result) - result = @builder.for(val[0], val[1], - val[2], val[4], - val[5], val[7], val[8]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1150) - def _reduce_319(val, _values, result) - @static_env.extend_static - @lexer.push_cmdarg - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1155) - def _reduce_320(val, _values, result) - if in_def? - diagnostic :error, :class_in_def, nil, val[0] - end - - lt_t, superclass = val[2] - result = @builder.def_class(val[0], val[1], - lt_t, superclass, - val[4], val[5]) - - @lexer.pop_cmdarg - @static_env.unextend - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1169) - def _reduce_321(val, _values, result) - result = @def_level - @def_level = 0 - - @static_env.extend_static - @lexer.push_cmdarg - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1177) - def _reduce_322(val, _values, result) - result = @builder.def_sclass(val[0], val[1], val[2], - val[5], val[6]) - - @lexer.pop_cmdarg - @static_env.unextend - - @def_level = val[4] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1187) - def _reduce_323(val, _values, result) - @static_env.extend_static - @lexer.push_cmdarg - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1192) - def _reduce_324(val, _values, result) - if in_def? - diagnostic :error, :module_in_def, nil, val[0] - end - - result = @builder.def_module(val[0], val[1], - val[3], val[4]) - - @lexer.pop_cmdarg - @static_env.unextend - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1204) - def _reduce_325(val, _values, result) - @def_level += 1 - @static_env.extend_static - @lexer.push_cmdarg - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1210) - def _reduce_326(val, _values, result) - result = @builder.def_method(val[0], val[1], - val[3], val[4], val[5]) - - @lexer.pop_cmdarg - @static_env.unextend - @def_level -= 1 - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1219) - def _reduce_327(val, _values, result) - @lexer.state = :expr_fname - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1223) - def _reduce_328(val, _values, result) - @def_level += 1 - @static_env.extend_static - @lexer.push_cmdarg - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1229) - def _reduce_329(val, _values, result) - result = @builder.def_singleton(val[0], val[1], val[2], - val[4], val[6], val[7], val[8]) - - @lexer.pop_cmdarg - @static_env.unextend - @def_level -= 1 - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1238) - def _reduce_330(val, _values, result) - result = @builder.keyword_cmd(:break, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1242) - def _reduce_331(val, _values, result) - result = @builder.keyword_cmd(:next, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1246) - def _reduce_332(val, _values, result) - result = @builder.keyword_cmd(:redo, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1250) - def _reduce_333(val, _values, result) - result = @builder.keyword_cmd(:retry, val[0]) - - result - end -.,., - -# reduce 334 omitted - -# reduce 335 omitted - -# reduce 336 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1259) - def _reduce_337(val, _values, result) - result = val[1] - - result - end -.,., - -# reduce 338 omitted - -# reduce 339 omitted - -# reduce 340 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1268) - def _reduce_341(val, _values, result) - else_t, else_ = val[4] - result = [ val[0], - @builder.condition(val[0], val[1], val[2], - val[3], else_t, - else_, nil), - ] - - result - end -.,., - -# reduce 342 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1279) - def _reduce_343(val, _values, result) - result = val - - result - end -.,., - -# reduce 344 omitted - -# reduce 345 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1287) - def _reduce_346(val, _values, result) - result = @builder.arg(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1291) - def _reduce_347(val, _values, result) - result = @builder.multi_lhs(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1296) - def _reduce_348(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1300) - def _reduce_349(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -# reduce 350 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1306) - def _reduce_351(val, _values, result) - result = val[0]. - push(@builder.restarg(val[2], val[3])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1311) - def _reduce_352(val, _values, result) - result = val[0]. - push(@builder.restarg(val[2], val[3])). - concat(val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1317) - def _reduce_353(val, _values, result) - result = val[0]. - push(@builder.restarg(val[2])) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1322) - def _reduce_354(val, _values, result) - result = val[0]. - push(@builder.restarg(val[2])). - concat(val[4]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1328) - def _reduce_355(val, _values, result) - result = [ @builder.restarg(val[0], val[1]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1332) - def _reduce_356(val, _values, result) - result = [ @builder.restarg(val[0], val[1]), - *val[3] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1337) - def _reduce_357(val, _values, result) - result = [ @builder.restarg(val[0]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1341) - def _reduce_358(val, _values, result) - result = [ @builder.restarg(val[0]), - *val[2] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1347) - def _reduce_359(val, _values, result) - result = val[0].concat(val[2]).concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1351) - def _reduce_360(val, _values, result) - result = val[0].concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1355) - def _reduce_361(val, _values, result) - result = val[0].concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1359) - def _reduce_362(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1365) - def _reduce_363(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1369) - def _reduce_364(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1374) - def _reduce_365(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1381) - def _reduce_366(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[6]). - concat(val[7]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1389) - def _reduce_367(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1395) - def _reduce_368(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1402) - def _reduce_369(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[3]) - - result - end -.,., - -# reduce 370 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1409) - def _reduce_371(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1416) - def _reduce_372(val, _values, result) - result = val[0].concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1420) - def _reduce_373(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1426) - def _reduce_374(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1433) - def _reduce_375(val, _values, result) - result = val[0]. - concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1438) - def _reduce_376(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1444) - def _reduce_377(val, _values, result) - result = val[0]. - concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1449) - def _reduce_378(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[3]) - - result - end -.,., - -# reduce 379 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1457) - def _reduce_380(val, _values, result) - result = @builder.args(nil, [], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1461) - def _reduce_381(val, _values, result) - @lexer.state = :expr_value - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1466) - def _reduce_382(val, _values, result) - result = @builder.args(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1470) - def _reduce_383(val, _values, result) - result = @builder.args(val[0], [], val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1474) - def _reduce_384(val, _values, result) - result = @builder.args(val[0], val[1].concat(val[2]), val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1479) - def _reduce_385(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1483) - def _reduce_386(val, _values, result) - result = val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1488) - def _reduce_387(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1492) - def _reduce_388(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1497) - def _reduce_389(val, _values, result) - result = @builder.shadowarg(val[0]) - - result - end -.,., - -# reduce 390 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1502) - def _reduce_391(val, _values, result) - @static_env.extend_dynamic - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1506) - def _reduce_392(val, _values, result) - result = @lexer.cmdarg.dup - @lexer.cmdarg.clear - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1511) - def _reduce_393(val, _values, result) - @lexer.cmdarg = val[2] - @lexer.cmdarg.lexpop - - result = [ val[1], val[3] ] - - @static_env.unextend - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1521) - def _reduce_394(val, _values, result) - result = @builder.args(val[0], val[1].concat(val[2]), val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1525) - def _reduce_395(val, _values, result) - result = @builder.args(nil, val[0], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1530) - def _reduce_396(val, _values, result) - result = [ val[0], val[1], val[2] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1534) - def _reduce_397(val, _values, result) - result = [ val[0], val[1], val[2] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1539) - def _reduce_398(val, _values, result) - @static_env.extend_dynamic - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1543) - def _reduce_399(val, _values, result) - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1550) - def _reduce_400(val, _values, result) - begin_t, block_args, body, end_t = val[1] - result = @builder.block(val[0], - begin_t, block_args, body, end_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1556) - def _reduce_401(val, _values, result) - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1562) - def _reduce_402(val, _values, result) - lparen_t, args, rparen_t = val[3] - method_call = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1572) - def _reduce_403(val, _values, result) - method_call = @builder.call_method(val[0], val[1], val[2], - nil, val[3], nil) - - begin_t, args, body, end_t = val[4] - result = @builder.block(method_call, - begin_t, args, body, end_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1582) - def _reduce_404(val, _values, result) - lparen_t, args, rparen_t = val[1] - result = @builder.call_method(nil, nil, val[0], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1588) - def _reduce_405(val, _values, result) - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1594) - def _reduce_406(val, _values, result) - lparen_t, args, rparen_t = val[3] - result = @builder.call_method(val[0], val[1], val[2], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1600) - def _reduce_407(val, _values, result) - result = @builder.call_method(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1604) - def _reduce_408(val, _values, result) - lparen_t, args, rparen_t = val[2] - result = @builder.call_method(val[0], val[1], nil, - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1610) - def _reduce_409(val, _values, result) - lparen_t, args, rparen_t = val[2] - result = @builder.call_method(val[0], val[1], nil, - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1616) - def _reduce_410(val, _values, result) - lparen_t, args, rparen_t = val[1] - result = @builder.keyword_cmd(:super, val[0], - lparen_t, args, rparen_t) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1622) - def _reduce_411(val, _values, result) - result = @builder.keyword_cmd(:zsuper, val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1626) - def _reduce_412(val, _values, result) - result = @builder.index(val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1631) - def _reduce_413(val, _values, result) - @static_env.extend_dynamic - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1635) - def _reduce_414(val, _values, result) - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1641) - def _reduce_415(val, _values, result) - @static_env.extend_dynamic - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1645) - def _reduce_416(val, _values, result) - result = [ val[0], val[2], val[3], val[4] ] - - @static_env.unextend - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1652) - def _reduce_417(val, _values, result) - result = [ @builder.when(val[0], val[1], val[2], val[3]), - *val[4] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1658) - def _reduce_418(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -# reduce 419 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1664) - def _reduce_420(val, _values, result) - assoc_t, exc_var = val[2] - - if val[1] - exc_list = @builder.array(nil, val[1], nil) - end - - result = [ @builder.rescue_body(val[0], - exc_list, assoc_t, exc_var, - val[3], val[4]), - *val[5] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1677) - def _reduce_421(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1682) - def _reduce_422(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -# reduce 423 omitted - -# reduce 424 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1689) - def _reduce_425(val, _values, result) - result = [ val[0], val[1] ] - - result - end -.,., - -# reduce 426 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1695) - def _reduce_427(val, _values, result) - result = [ val[0], val[1] ] - - result - end -.,., - -# reduce 428 omitted - -# reduce 429 omitted - -# reduce 430 omitted - -# reduce 431 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1705) - def _reduce_432(val, _values, result) - result = @builder.string_compose(nil, val[0], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1710) - def _reduce_433(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1714) - def _reduce_434(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1719) - def _reduce_435(val, _values, result) - result = @builder.string_compose(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1723) - def _reduce_436(val, _values, result) - result = @builder.string(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1727) - def _reduce_437(val, _values, result) - result = @builder.character(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1732) - def _reduce_438(val, _values, result) - result = @builder.xstring_compose(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1737) - def _reduce_439(val, _values, result) - opts = @builder.regexp_options(val[3]) - result = @builder.regexp_compose(val[0], val[1], val[2], opts) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1743) - def _reduce_440(val, _values, result) - result = @builder.words_compose(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1748) - def _reduce_441(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1752) - def _reduce_442(val, _values, result) - result = val[0] << @builder.word(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1757) - def _reduce_443(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1761) - def _reduce_444(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1766) - def _reduce_445(val, _values, result) - result = @builder.symbols_compose(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1771) - def _reduce_446(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1775) - def _reduce_447(val, _values, result) - result = val[0] << @builder.word(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1780) - def _reduce_448(val, _values, result) - result = @builder.words_compose(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1785) - def _reduce_449(val, _values, result) - result = @builder.symbols_compose(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1790) - def _reduce_450(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1794) - def _reduce_451(val, _values, result) - result = val[0] << @builder.string_internal(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1799) - def _reduce_452(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1803) - def _reduce_453(val, _values, result) - result = val[0] << @builder.symbol_internal(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1808) - def _reduce_454(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1812) - def _reduce_455(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1817) - def _reduce_456(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1821) - def _reduce_457(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1826) - def _reduce_458(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1830) - def _reduce_459(val, _values, result) - result = val[0] << val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1835) - def _reduce_460(val, _values, result) - result = @builder.string_internal(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1839) - def _reduce_461(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1843) - def _reduce_462(val, _values, result) - @lexer.cond.push(false) - @lexer.cmdarg.push(false) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1848) - def _reduce_463(val, _values, result) - @lexer.cond.lexpop - @lexer.cmdarg.lexpop - - result = @builder.begin(val[0], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1856) - def _reduce_464(val, _values, result) - result = @builder.gvar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1860) - def _reduce_465(val, _values, result) - result = @builder.ivar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1864) - def _reduce_466(val, _values, result) - result = @builder.cvar(val[0]) - - result - end -.,., - -# reduce 467 omitted - -module_eval(<<'.,.,', 'ruby22.y', 1871) - def _reduce_468(val, _values, result) - result = @builder.symbol(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1876) - def _reduce_469(val, _values, result) - result = @builder.symbol_compose(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1881) - def _reduce_470(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1885) - def _reduce_471(val, _values, result) - result = @builder.negate(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1890) - def _reduce_472(val, _values, result) - result = @builder.integer(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1894) - def _reduce_473(val, _values, result) - result = @builder.float(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1898) - def _reduce_474(val, _values, result) - result = @builder.rational(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1902) - def _reduce_475(val, _values, result) - result = @builder.complex(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1907) - def _reduce_476(val, _values, result) - result = @builder.ident(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1911) - def _reduce_477(val, _values, result) - result = @builder.ivar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1915) - def _reduce_478(val, _values, result) - result = @builder.gvar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1919) - def _reduce_479(val, _values, result) - result = @builder.const(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1923) - def _reduce_480(val, _values, result) - result = @builder.cvar(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1928) - def _reduce_481(val, _values, result) - result = @builder.nil(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1932) - def _reduce_482(val, _values, result) - result = @builder.self(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1936) - def _reduce_483(val, _values, result) - result = @builder.true(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1940) - def _reduce_484(val, _values, result) - result = @builder.false(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1944) - def _reduce_485(val, _values, result) - result = @builder.__FILE__(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1948) - def _reduce_486(val, _values, result) - result = @builder.__LINE__(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1952) - def _reduce_487(val, _values, result) - result = @builder.__ENCODING__(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1957) - def _reduce_488(val, _values, result) - result = @builder.accessible(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1961) - def _reduce_489(val, _values, result) - result = @builder.accessible(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1966) - def _reduce_490(val, _values, result) - result = @builder.assignable(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1970) - def _reduce_491(val, _values, result) - result = @builder.assignable(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1975) - def _reduce_492(val, _values, result) - result = @builder.nth_ref(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1979) - def _reduce_493(val, _values, result) - result = @builder.back_ref(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1984) - def _reduce_494(val, _values, result) - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1988) - def _reduce_495(val, _values, result) - @lexer.state = :expr_value - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1992) - def _reduce_496(val, _values, result) - result = [ val[0], val[2] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 1996) - def _reduce_497(val, _values, result) - yyerrok - result = nil - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2002) - def _reduce_498(val, _values, result) - result = @builder.args(val[0], val[1], val[2]) - - @lexer.state = :expr_value - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2007) - def _reduce_499(val, _values, result) - result = @lexer.in_kwarg - @lexer.in_kwarg = true - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2012) - def _reduce_500(val, _values, result) - @lexer.in_kwarg = val[0] - result = @builder.args(nil, val[1], nil) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2018) - def _reduce_501(val, _values, result) - result = val[0].concat(val[2]).concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2022) - def _reduce_502(val, _values, result) - result = val[0].concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2026) - def _reduce_503(val, _values, result) - result = val[0].concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2030) - def _reduce_504(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2035) - def _reduce_505(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2039) - def _reduce_506(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2044) - def _reduce_507(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2051) - def _reduce_508(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[6]). - concat(val[7]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2059) - def _reduce_509(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2065) - def _reduce_510(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2072) - def _reduce_511(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2078) - def _reduce_512(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2085) - def _reduce_513(val, _values, result) - result = val[0]. - concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2090) - def _reduce_514(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2096) - def _reduce_515(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[4]). - concat(val[5]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2103) - def _reduce_516(val, _values, result) - result = val[0]. - concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2108) - def _reduce_517(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2114) - def _reduce_518(val, _values, result) - result = val[0]. - concat(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2119) - def _reduce_519(val, _values, result) - result = val[0]. - concat(val[2]). - concat(val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2125) - def _reduce_520(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2129) - def _reduce_521(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2134) - def _reduce_522(val, _values, result) - diagnostic :error, :argument_const, nil, val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2138) - def _reduce_523(val, _values, result) - diagnostic :error, :argument_ivar, nil, val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2142) - def _reduce_524(val, _values, result) - diagnostic :error, :argument_gvar, nil, val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2146) - def _reduce_525(val, _values, result) - diagnostic :error, :argument_cvar, nil, val[0] - - result - end -.,., - -# reduce 526 omitted - -module_eval(<<'.,.,', 'ruby22.y', 2152) - def _reduce_527(val, _values, result) - @static_env.declare val[0][0] - - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2159) - def _reduce_528(val, _values, result) - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2164) - def _reduce_529(val, _values, result) - result = @builder.arg(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2168) - def _reduce_530(val, _values, result) - result = @builder.multi_lhs(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2173) - def _reduce_531(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2177) - def _reduce_532(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2182) - def _reduce_533(val, _values, result) - check_kwarg_name(val[0]) - - @static_env.declare val[0][0] - - result = val[0] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2191) - def _reduce_534(val, _values, result) - result = @builder.kwoptarg(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2195) - def _reduce_535(val, _values, result) - result = @builder.kwarg(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2200) - def _reduce_536(val, _values, result) - result = @builder.kwoptarg(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2204) - def _reduce_537(val, _values, result) - result = @builder.kwarg(val[0]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2209) - def _reduce_538(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2213) - def _reduce_539(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2218) - def _reduce_540(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2222) - def _reduce_541(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -# reduce 542 omitted - -# reduce 543 omitted - -module_eval(<<'.,.,', 'ruby22.y', 2229) - def _reduce_544(val, _values, result) - @static_env.declare val[1][0] - - result = [ @builder.kwrestarg(val[0], val[1]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2235) - def _reduce_545(val, _values, result) - result = [ @builder.kwrestarg(val[0]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2240) - def _reduce_546(val, _values, result) - result = @builder.optarg(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2245) - def _reduce_547(val, _values, result) - result = @builder.optarg(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2250) - def _reduce_548(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2254) - def _reduce_549(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2259) - def _reduce_550(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2263) - def _reduce_551(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -# reduce 552 omitted - -# reduce 553 omitted - -module_eval(<<'.,.,', 'ruby22.y', 2270) - def _reduce_554(val, _values, result) - @static_env.declare val[1][0] - - result = [ @builder.restarg(val[0], val[1]) ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2276) - def _reduce_555(val, _values, result) - result = [ @builder.restarg(val[0]) ] - - result - end -.,., - -# reduce 556 omitted - -# reduce 557 omitted - -module_eval(<<'.,.,', 'ruby22.y', 2283) - def _reduce_558(val, _values, result) - @static_env.declare val[1][0] - - result = @builder.blockarg(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2290) - def _reduce_559(val, _values, result) - result = [ val[1] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2294) - def _reduce_560(val, _values, result) - result = [] - - result - end -.,., - -# reduce 561 omitted - -module_eval(<<'.,.,', 'ruby22.y', 2300) - def _reduce_562(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2305) - def _reduce_563(val, _values, result) - result = [] - - result - end -.,., - -# reduce 564 omitted - -module_eval(<<'.,.,', 'ruby22.y', 2311) - def _reduce_565(val, _values, result) - result = [ val[0] ] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2315) - def _reduce_566(val, _values, result) - result = val[0] << val[2] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2320) - def _reduce_567(val, _values, result) - result = @builder.pair(val[0], val[1], val[2]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2324) - def _reduce_568(val, _values, result) - result = @builder.pair_keyword(val[0], val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2328) - def _reduce_569(val, _values, result) - result = @builder.pair_quoted(val[0], val[1], val[2], val[3]) - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2332) - def _reduce_570(val, _values, result) - result = @builder.kwsplat(val[0], val[1]) - - result - end -.,., - -# reduce 571 omitted - -# reduce 572 omitted - -# reduce 573 omitted - -# reduce 574 omitted - -# reduce 575 omitted - -# reduce 576 omitted - -# reduce 577 omitted - -# reduce 578 omitted - -# reduce 579 omitted - -# reduce 580 omitted - -# reduce 581 omitted - -# reduce 582 omitted - -# reduce 583 omitted - -# reduce 584 omitted - -# reduce 585 omitted - -# reduce 586 omitted - -module_eval(<<'.,.,', 'ruby22.y', 2343) - def _reduce_587(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'ruby22.y', 2347) - def _reduce_588(val, _values, result) - result = val[1] - - result - end -.,., - -# reduce 589 omitted - -# reduce 590 omitted - -# reduce 591 omitted - -module_eval(<<'.,.,', 'ruby22.y', 2353) - def _reduce_592(val, _values, result) - yyerrok - - result - end -.,., - -# reduce 593 omitted - -# reduce 594 omitted - -# reduce 595 omitted - -module_eval(<<'.,.,', 'ruby22.y', 2362) - def _reduce_596(val, _values, result) - result = nil - - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Ruby22 -end # module Parser diff --git a/test/racc/regress/tp_plus b/test/racc/regress/tp_plus deleted file mode 100644 index 34b6284db7..0000000000 --- a/test/racc/regress/tp_plus +++ /dev/null @@ -1,1933 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' -module TPPlus - class Parser < Racc::Parser - -module_eval(<<'...end tp_plus.y/module_eval...', 'tp_plus.y', 592) - - include TPPlus::Nodes - - attr_reader :interpreter - def initialize(scanner, interpreter = TPPlus::Interpreter.new) - @scanner = scanner - @interpreter = interpreter - super() - end - - def next_token - t = @scanner.next_token - @interpreter.line_count += 1 if t && t[0] == :NEWLINE - - #puts t.inspect - t - end - - def parse - #@yydebug =true - - do_parse - @interpreter - end - - def on_error(t, val, vstack) - raise ParseError, sprintf("Parse error on line #{@scanner.tok_line} column #{@scanner.tok_col}: %s (%s)", - val.inspect, token_to_str(t) || '?') - end - - class ParseError < StandardError ; end -...end tp_plus.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - 62, 62, 62, 62, 101, 122, 62, 41, 38, 130, - 275, 265, 72, 41, 72, 98, 113, 72, 53, 114, - 41, 67, 67, 67, 67, 234, 38, 26, 152, 151, - 101, 36, 64, 159, 81, 82, 72, 308, 159, 81, - 82, 72, 122, 70, 308, 60, 74, 60, 42, 308, - 60, 43, 44, 131, 45, 31, 32, 300, 75, 34, - 35, 46, 47, 102, 60, 273, 30, 72, 29, 28, - 25, 63, 76, 37, 27, 24, 62, 41, 38, 37, - 69, 69, 69, 69, 33, 61, 37, 97, 53, 102, - 61, 37, 81, 82, 355, 61, 103, 26, 82, 72, - 60, 36, 159, 81, 82, 72, 208, 221, 209, 371, - 82, 72, 105, 220, 33, 81, 82, 72, 42, 72, - 317, 43, 44, 111, 45, 31, 32, 96, 72, 34, - 35, 46, 47, 96, 60, 223, 30, 224, 29, 28, - 25, 63, 115, 37, 27, 24, 62, 41, 38, 72, - 60, 81, 82, 72, 33, 61, 121, 116, 53, 61, - 122, 88, 94, 96, 321, 117, 118, 26, 317, 352, - 125, 36, 323, 127, 203, 349, 350, 351, 353, 303, - 304, 96, 367, 81, 82, 72, 60, 255, 42, 209, - 101, 43, 44, 122, 45, 31, 32, 185, 94, 34, - 35, 46, 47, 186, 60, 191, 30, 61, 29, 28, - 25, 63, 321, 37, 27, 24, 62, 41, 38, 188, - 323, 122, 203, 122, 33, 61, 82, 72, 53, 336, - 335, 182, 181, 179, 180, 177, 173, 26, 176, 174, - 199, 36, 81, 82, 72, 81, 82, 72, 81, 82, - 72, 81, 82, 81, 82, 72, 200, 201, 42, 203, - 204, 43, 44, 96, 45, 31, 32, 210, 211, 34, - 35, 46, 47, 212, 60, 213, 30, 214, 29, 28, - 25, 63, 215, 37, 27, 24, 216, 178, 217, 175, - 81, 82, 72, 218, 33, 61, 81, 82, 72, 219, - 88, 317, 96, 81, 82, 72, 88, 227, 96, 81, - 82, 72, 227, 88, 96, 96, 81, 82, 72, 88, - 229, 96, 81, 82, 72, 60, 88, 230, 96, 231, - 234, 60, 88, 235, 96, 238, 122, 94, 60, 81, - 82, 72, 122, 94, 60, 321, 61, 81, 82, 72, - 94, 60, 61, 323, 241, 203, 94, 60, 242, 61, - 244, 245, 246, 94, 247, 61, 248, 249, 250, 94, - 251, 252, 61, 81, 82, 72, 253, 254, 61, 81, - 82, 72, 257, 88, 188, 96, 81, 82, 72, 88, - 259, 96, 81, 82, 72, 269, 88, 271, 96, 81, - 82, 72, 88, 276, 96, 122, 281, 282, 60, 88, - 283, 96, 284, 285, 60, 286, 287, 288, 289, 290, - 94, 60, 82, 292, 293, 294, 94, 60, 122, 61, - 122, 72, 298, 94, 60, 61, 301, 302, 305, 94, - 306, 313, 61, 314, 122, 122, 94, 325, 61, 135, - 136, 139, 140, 137, 138, 61, 141, 142, 144, 145, - 146, 148, 143, 147, 135, 136, 139, 140, 137, 138, - 326, 141, 142, 144, 145, 146, 148, 143, 147, 327, - 328, 188, 97, 333, 275, 122, 33, 135, 136, 139, - 140, 137, 138, 205, 141, 142, 144, 145, 146, 148, - 143, 147, 188, 188, 333, 122, 346, 347, 207, 135, - 136, 139, 140, 137, 138, 348, 141, 142, 144, 145, - 146, 148, 143, 147, 188, 356, 357, 358, 359, 360, - 135, 136, 139, 140, 137, 138, 361, 141, 142, 144, - 145, 146, 148, 143, 147, 135, 136, 139, 140, 137, - 138, 362, 141, 142, 144, 145, 146, 148, 143, 147, - 135, 136, 139, 140, 137, 138, 122, 141, 142, 144, - 145, 146, 148, 143, 147, 135, 136, 139, 140, 137, - 138, 364, 141, 142, 144, 145, 146, 148, 143, 147, - 135, 136, 139, 140, 137, 138, 72, 141, 142, 144, - 145, 146, 148, 143, 147, 135, 136, 139, 140, 137, - 138, 33, 141, 142, 144, 145, 146, 148, 143, 147, - 135, 136, 139, 140, 137, 138, 378, 141, 142, 144, - 145, 146, 148, 143, 147, 135, 136, 139, 140, 137, - 138, 379, 141, 142, 144, 145, 146, 148, 143, 147, - 380, 381, 382, 383, 385, 386, 390, 72, 392 ] - -racc_action_check = [ - 3, 65, 309, 312, 72, 272, 0, 0, 0, 70, - 240, 232, 28, 295, 29, 36, 48, 105, 0, 48, - 296, 3, 65, 309, 312, 232, 383, 0, 95, 95, - 36, 0, 1, 97, 97, 97, 97, 295, 186, 186, - 186, 186, 343, 27, 296, 28, 30, 29, 0, 383, - 105, 0, 0, 70, 0, 0, 0, 272, 31, 0, - 0, 0, 0, 72, 0, 240, 0, 38, 0, 0, - 0, 0, 32, 0, 0, 0, 2, 2, 2, 295, - 3, 65, 309, 312, 0, 0, 296, 36, 2, 36, - 97, 383, 224, 224, 343, 186, 37, 2, 358, 358, - 38, 2, 209, 209, 209, 209, 153, 184, 153, 358, - 229, 229, 38, 184, 41, 88, 88, 88, 2, 44, - 301, 2, 2, 46, 2, 2, 2, 88, 47, 2, - 2, 2, 2, 301, 2, 187, 2, 187, 2, 2, - 2, 2, 53, 2, 2, 2, 188, 188, 188, 58, - 88, 35, 35, 35, 2, 2, 60, 55, 188, 209, - 63, 35, 88, 35, 301, 55, 55, 188, 337, 342, - 64, 188, 301, 68, 301, 342, 342, 342, 342, 280, - 280, 337, 357, 357, 357, 357, 35, 222, 188, 222, - 99, 188, 188, 101, 188, 188, 188, 102, 35, 188, - 188, 188, 188, 103, 188, 109, 188, 35, 188, 188, - 188, 188, 337, 188, 188, 188, 225, 225, 225, 111, - 337, 112, 337, 115, 188, 188, 293, 293, 225, 320, - 320, 98, 98, 98, 98, 98, 98, 225, 98, 98, - 117, 225, 34, 34, 34, 75, 75, 75, 234, 234, - 234, 98, 98, 238, 238, 238, 118, 121, 225, 123, - 132, 225, 225, 98, 225, 225, 225, 173, 174, 225, - 225, 225, 225, 175, 225, 176, 225, 177, 225, 225, - 225, 225, 178, 225, 225, 225, 179, 98, 180, 98, - 42, 42, 42, 181, 225, 225, 43, 43, 43, 182, - 42, 363, 42, 45, 45, 45, 43, 189, 43, 76, - 76, 76, 190, 45, 363, 45, 94, 94, 94, 76, - 191, 76, 113, 113, 113, 42, 94, 192, 94, 193, - 194, 43, 113, 197, 113, 201, 202, 42, 45, 326, - 326, 326, 203, 43, 76, 363, 42, 360, 360, 360, - 45, 94, 43, 363, 204, 363, 76, 113, 205, 45, - 210, 211, 212, 94, 213, 76, 214, 215, 216, 113, - 217, 218, 94, 114, 114, 114, 219, 221, 113, 116, - 116, 116, 226, 114, 227, 114, 134, 134, 134, 116, - 228, 116, 199, 199, 199, 235, 134, 239, 134, 200, - 200, 200, 199, 241, 199, 242, 244, 245, 114, 200, - 246, 200, 247, 248, 116, 249, 250, 251, 252, 253, - 114, 134, 254, 256, 260, 263, 116, 199, 265, 114, - 266, 269, 270, 134, 200, 116, 275, 277, 291, 199, - 292, 297, 134, 299, 300, 302, 200, 303, 199, 133, - 133, 133, 133, 133, 133, 200, 133, 133, 133, 133, - 133, 133, 133, 133, 150, 150, 150, 150, 150, 150, - 304, 150, 150, 150, 150, 150, 150, 150, 150, 306, - 307, 107, 308, 313, 315, 323, 325, 107, 107, 107, - 107, 107, 107, 133, 107, 107, 107, 107, 107, 107, - 107, 107, 328, 108, 331, 333, 338, 339, 150, 108, - 108, 108, 108, 108, 108, 340, 108, 108, 108, 108, - 108, 108, 108, 108, 110, 347, 349, 350, 351, 352, - 110, 110, 110, 110, 110, 110, 353, 110, 110, 110, - 110, 110, 110, 110, 110, 83, 83, 83, 83, 83, - 83, 354, 83, 83, 83, 83, 83, 83, 83, 83, - 195, 195, 195, 195, 195, 195, 355, 195, 195, 195, - 195, 195, 195, 195, 195, 196, 196, 196, 196, 196, - 196, 356, 196, 196, 196, 196, 196, 196, 196, 196, - 198, 198, 198, 198, 198, 198, 359, 198, 198, 198, - 198, 198, 198, 198, 198, 206, 206, 206, 206, 206, - 206, 361, 206, 206, 206, 206, 206, 206, 206, 206, - 236, 236, 236, 236, 236, 236, 365, 236, 236, 236, - 236, 236, 236, 236, 236, 237, 237, 237, 237, 237, - 237, 366, 237, 237, 237, 237, 237, 237, 237, 237, - 368, 371, 372, 373, 376, 379, 384, 385, 387 ] - -racc_action_pointer = [ - 2, 32, 72, -4, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 13, -17, -15, - 20, -16, -2, nil, 215, 124, 13, 67, 38, nil, - nil, 32, 263, 269, 90, 276, 94, 99, -30, nil, - nil, nil, nil, 125, nil, 127, nil, nil, 120, nil, - 82, nil, nil, 135, 170, -3, nil, nil, 148, nil, - -17, nil, -13, nil, nil, 218, 282, nil, nil, nil, - nil, nil, nil, 514, nil, nil, nil, nil, 88, nil, - nil, nil, nil, nil, 289, 1, nil, 7, 224, 173, - nil, 168, 121, 129, nil, -12, nil, 456, 478, 154, - 499, 194, 196, 295, 346, 198, 352, 210, 226, nil, - nil, 231, nil, 179, nil, nil, nil, nil, nil, nil, - nil, nil, 183, 418, 359, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - 433, nil, nil, 31, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 189, 190, 195, 197, 199, 204, 208, - 210, 215, 221, nil, 84, nil, 12, 60, 142, 260, - 265, 246, 279, 281, 269, 529, 544, 315, 559, 365, - 372, 258, 311, 317, 328, 341, 574, nil, nil, 76, - 332, 333, 334, 336, 338, 339, 340, 342, 343, 348, - nil, 303, 112, nil, 65, 212, 334, 359, 342, 82, - nil, nil, -36, nil, 221, 321, 589, 604, 226, 349, - -16, 328, 380, nil, 327, 328, 331, 333, 334, 336, - 337, 338, 339, 340, 394, nil, 346, nil, nil, nil, - 406, nil, nil, 377, nil, 403, 405, nil, nil, 402, - 357, nil, -20, nil, nil, 360, nil, 420, nil, nil, - 124, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 363, 414, 198, nil, 8, 15, 366, nil, 362, - 419, 94, 420, 373, 396, nil, 404, 405, 408, -2, - nil, nil, -1, 466, nil, 458, nil, nil, nil, nil, - 202, nil, nil, 460, nil, 404, 312, nil, 477, nil, - nil, 487, nil, 480, nil, nil, nil, 142, 431, 430, - 467, nil, 156, 17, nil, nil, nil, 499, nil, 452, - 453, 454, 455, 462, 472, 541, 506, 156, 70, 567, - 320, 529, nil, 275, nil, 551, 564, nil, 575, nil, - nil, 623, 577, 576, nil, nil, 577, nil, nil, 629, - nil, nil, nil, 20, 581, 628, nil, 583, nil, nil, - nil, nil, nil ] - -racc_action_default = [ - -2, -210, -1, -188, -8, -9, -10, -11, -12, -13, - -14, -15, -16, -17, -18, -19, -20, -21, -22, -23, - -24, -25, -26, -27, -28, -29, -30, -210, -210, -210, - -210, -210, -210, -45, -210, -210, -118, -210, -210, -61, - -62, -210, -210, -210, -210, -210, -210, -210, -81, -84, - -85, -86, -87, -210, -111, -210, -116, -117, -210, -125, - -210, -183, -184, -190, -210, -188, -3, -185, -7, -187, - -210, -34, -118, -35, -36, -210, -210, -46, -103, -104, - -158, -159, -160, -47, -128, -129, -130, -131, -210, -148, - -149, -150, -151, -152, -210, -210, -157, -52, -210, -119, - -121, -190, -210, -210, -58, -210, -63, -210, -210, -210, - -210, -210, -190, -210, -210, -190, -210, -210, -210, -120, - -126, -210, -189, -210, -192, 393, -4, -6, -186, -31, - -32, -33, -210, -210, -210, -134, -135, -136, -137, -138, - -139, -140, -141, -142, -143, -144, -145, -146, -147, -132, - -210, -155, -156, -210, -50, -53, -54, -55, -56, -57, - -112, -161, -162, -163, -164, -165, -166, -167, -168, -169, - -170, -171, -172, -210, -210, -210, -210, -210, -210, -210, - -210, -210, -210, -122, -210, -127, -52, -210, -210, -89, - -89, -210, -210, -210, -210, -82, -83, -210, -113, -210, - -210, -210, -190, -190, -210, -38, -133, -153, -48, -210, - -210, -210, -210, -210, -210, -210, -210, -210, -210, -210, - -123, -210, -210, -59, -210, -5, -210, -210, -210, -210, - -67, -70, -78, -72, -210, -210, -114, -115, -210, -210, - -210, -210, -190, -51, -210, -210, -210, -210, -210, -210, - -210, -210, -210, -210, -210, -49, -210, -64, -88, -65, - -210, -68, -69, -210, -73, -190, -190, -75, -76, -210, - -210, -191, -190, -194, -195, -210, -37, -39, -41, -42, - -210, -173, -174, -175, -176, -177, -178, -179, -180, -181, - -182, -210, -210, -210, -71, -210, -210, -210, -154, -210, - -190, -205, -190, -210, -210, -124, -210, -210, -210, -188, - -79, -80, -188, -210, -193, -210, -197, -198, -199, -200, - -210, -203, -204, -190, -40, -210, -210, -60, -210, -77, - -74, -90, -91, -190, -196, -201, -202, -205, -210, -210, - -210, -92, -210, -190, -207, -209, -43, -210, -66, -210, - -210, -210, -210, -210, -210, -190, -210, -210, -210, -210, - -210, -210, -206, -205, -44, -210, -210, -110, -210, -98, - -99, -210, -210, -210, -107, -108, -102, -208, -93, -210, - -94, -100, -95, -210, -210, -210, -109, -210, -105, -106, - -97, -101, -96 ] - -racc_goto_table = [ - 39, 106, 39, 66, 78, 65, 123, 68, 77, 184, - 9, 2, 9, 153, 40, 261, 40, 274, 310, 310, - 194, 189, 190, 197, 192, 193, 71, 73, 39, 39, - 277, 260, 233, 344, 79, 1, 104, 322, 39, 332, - 291, 128, 40, 40, 109, 78, 129, 112, 243, 132, - 311, 311, 40, 83, 226, 228, 389, 341, 232, 377, - 107, 108, 263, 110, 266, 126, 331, 155, 167, 68, - 264, 309, 312, 322, 365, 79, 368, 373, 387, 261, - 384, 160, 119, 183, 120, 149, 168, 161, 162, 163, - 324, 164, 334, 165, 133, 307, 166, 156, 169, 322, - 170, 171, 222, 187, 172, 39, 388, 158, 202, 272, - 316, 343, 150, nil, nil, nil, nil, nil, nil, 40, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 195, 196, nil, 198, nil, nil, nil, nil, nil, - nil, 258, nil, nil, 369, 239, 240, nil, nil, nil, - 280, nil, 206, nil, nil, nil, 155, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 295, 296, nil, nil, nil, nil, 155, - nil, nil, nil, nil, nil, nil, 156, nil, 39, nil, - nil, nil, nil, nil, 256, nil, 158, nil, 9, 225, - nil, nil, 40, nil, 267, nil, nil, nil, 78, 156, - 280, nil, 270, nil, nil, 299, nil, 236, 237, 158, - nil, nil, nil, nil, nil, 39, nil, nil, 65, 262, - nil, nil, nil, nil, 268, 9, nil, nil, 79, 40, - nil, 342, 340, 315, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 337, nil, nil, 297, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 338, 354, nil, nil, nil, - nil, nil, nil, 262, nil, nil, 78, nil, 363, nil, - 339, nil, nil, nil, nil, nil, nil, nil, nil, 329, - nil, nil, 330, 68, nil, nil, 68, nil, nil, nil, - nil, 376, nil, nil, nil, nil, 79, 78, nil, nil, - 375, 366, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 79, 370, 372, - 374, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 391 ] - -racc_goto_check = [ - 40, 35, 40, 4, 39, 3, 86, 7, 29, 34, - 12, 2, 12, 37, 43, 47, 43, 89, 36, 36, - 34, 5, 5, 34, 5, 5, 28, 28, 40, 40, - 31, 46, 50, 94, 40, 1, 28, 75, 40, 56, - 47, 6, 43, 43, 40, 39, 27, 40, 38, 29, - 44, 44, 43, 30, 45, 45, 42, 56, 48, 94, - 30, 30, 49, 30, 51, 4, 55, 39, 39, 7, - 50, 52, 52, 75, 57, 40, 58, 59, 60, 47, - 61, 62, 63, 67, 68, 71, 73, 76, 77, 78, - 31, 79, 89, 80, 30, 46, 81, 40, 82, 75, - 83, 84, 37, 28, 85, 40, 36, 12, 87, 88, - 90, 93, 30, nil, nil, nil, nil, nil, nil, 43, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 30, 30, nil, 30, nil, nil, nil, nil, nil, - nil, 5, nil, nil, 47, 86, 86, nil, nil, nil, - 34, nil, 30, nil, nil, nil, 39, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, 34, 34, nil, nil, nil, nil, 39, - nil, nil, nil, nil, nil, nil, 40, nil, 40, nil, - nil, nil, nil, nil, 39, nil, 12, nil, 12, 2, - nil, nil, 43, nil, 39, nil, nil, nil, 39, 40, - 34, nil, 29, nil, nil, 86, nil, 30, 30, 12, - nil, nil, nil, nil, nil, 40, nil, nil, 3, 40, - nil, nil, nil, nil, 40, 12, nil, nil, 40, 43, - nil, 34, 5, 86, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, 86, nil, nil, 40, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 35, 86, nil, nil, nil, - nil, nil, nil, 40, nil, nil, 39, nil, 86, nil, - 29, nil, nil, nil, nil, nil, nil, nil, nil, 4, - nil, nil, 4, 7, nil, nil, 7, nil, nil, nil, - nil, 35, nil, nil, nil, nil, 40, 39, nil, nil, - 39, 29, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 40, 40, 40, - 40, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 40 ] - -racc_goto_pointer = [ - nil, 35, 11, 3, 0, -86, -27, 4, nil, nil, - nil, nil, 10, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, -24, -2, -26, - 18, -212, nil, nil, -92, -40, -277, -84, -161, -30, - 0, nil, -327, 14, -245, -135, -198, -214, -136, -170, - -162, -170, -224, nil, nil, -247, -274, -283, -282, -283, - -305, -296, -17, 24, nil, nil, nil, -16, 26, nil, - nil, -3, nil, -12, nil, -264, -11, -10, -9, -7, - -5, -2, 0, 2, 3, 6, -57, -15, -131, -223, - -191, nil, nil, -226, -304 ] - -racc_goto_default = [ - nil, nil, nil, 3, nil, nil, nil, 4, 5, 6, - 7, 8, 87, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, nil, 55, nil, - nil, nil, 278, 279, 124, 54, 52, nil, 154, 89, - 91, 157, 51, 92, 49, nil, nil, 80, nil, nil, - nil, nil, nil, 48, 50, nil, nil, nil, nil, nil, - nil, nil, nil, 56, 57, 99, 58, 100, 59, 84, - 85, 86, 134, 90, 93, 95, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, 318, nil, nil, - 345, 319, 320, nil, nil ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 1, 86, :_reduce_1, - 0, 86, :_reduce_none, - 2, 87, :_reduce_3, - 3, 87, :_reduce_4, - 2, 90, :_reduce_5, - 1, 91, :_reduce_none, - 0, 91, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_none, - 1, 88, :_reduce_28, - 1, 88, :_reduce_29, - 1, 111, :_reduce_30, - 3, 110, :_reduce_31, - 1, 112, :_reduce_none, - 1, 112, :_reduce_none, - 2, 109, :_reduce_34, - 2, 107, :_reduce_35, - 2, 106, :_reduce_36, - 6, 104, :_reduce_37, - 4, 104, :_reduce_38, - 6, 104, :_reduce_39, - 8, 104, :_reduce_40, - 1, 116, :_reduce_none, - 1, 116, :_reduce_none, - 5, 117, :_reduce_43, - 7, 118, :_reduce_44, - 1, 120, :_reduce_45, - 2, 102, :_reduce_46, - 2, 103, :_reduce_47, - 4, 121, :_reduce_48, - 5, 121, :_reduce_49, - 1, 122, :_reduce_50, - 3, 122, :_reduce_51, - 0, 122, :_reduce_52, - 1, 123, :_reduce_none, - 1, 123, :_reduce_none, - 1, 123, :_reduce_none, - 1, 123, :_reduce_none, - 1, 126, :_reduce_57, - 2, 127, :_reduce_58, - 4, 127, :_reduce_59, - 8, 127, :_reduce_60, - 1, 113, :_reduce_none, - 1, 113, :_reduce_none, - 2, 129, :_reduce_63, - 5, 98, :_reduce_64, - 5, 98, :_reduce_65, - 10, 100, :_reduce_66, - 4, 101, :_reduce_67, - 1, 131, :_reduce_none, - 1, 131, :_reduce_none, - 4, 94, :_reduce_70, - 6, 105, :_reduce_71, - 1, 133, :_reduce_72, - 2, 133, :_reduce_73, - 5, 135, :_reduce_74, - 1, 136, :_reduce_none, - 1, 136, :_reduce_none, - 4, 134, :_reduce_77, - 0, 134, :_reduce_none, - 1, 137, :_reduce_none, - 1, 137, :_reduce_none, - 1, 99, :_reduce_none, - 3, 99, :_reduce_82, - 3, 99, :_reduce_83, - 1, 138, :_reduce_none, - 1, 138, :_reduce_none, - 1, 138, :_reduce_none, - 1, 138, :_reduce_none, - 2, 130, :_reduce_88, - 0, 130, :_reduce_89, - 8, 95, :_reduce_90, - 1, 140, :_reduce_91, - 2, 140, :_reduce_92, - 6, 141, :_reduce_93, - 6, 141, :_reduce_94, - 6, 141, :_reduce_95, - 8, 141, :_reduce_96, - 7, 141, :_reduce_97, - 1, 143, :_reduce_none, - 1, 143, :_reduce_none, - 2, 143, :_reduce_100, - 2, 146, :_reduce_101, - 0, 146, :_reduce_none, - 1, 114, :_reduce_none, - 1, 114, :_reduce_none, - 1, 145, :_reduce_none, - 1, 145, :_reduce_none, - 1, 144, :_reduce_none, - 1, 144, :_reduce_none, - 3, 142, :_reduce_109, - 1, 142, :_reduce_110, - 1, 96, :_reduce_111, - 3, 93, :_reduce_112, - 3, 139, :_reduce_113, - 4, 139, :_reduce_114, - 4, 139, :_reduce_115, - 1, 125, :_reduce_none, - 1, 125, :_reduce_none, - 1, 148, :_reduce_118, - 2, 148, :_reduce_119, - 2, 149, :_reduce_120, - 1, 150, :_reduce_121, - 2, 150, :_reduce_122, - 3, 152, :_reduce_123, - 6, 152, :_reduce_124, - 1, 151, :_reduce_125, - 2, 151, :_reduce_126, - 3, 153, :_reduce_127, - 1, 115, :_reduce_none, - 1, 115, :_reduce_none, - 1, 154, :_reduce_130, - 1, 154, :_reduce_none, - 2, 154, :_reduce_132, - 3, 155, :_reduce_133, - 1, 157, :_reduce_134, - 1, 157, :_reduce_135, - 1, 157, :_reduce_136, - 1, 157, :_reduce_137, - 1, 157, :_reduce_138, - 1, 157, :_reduce_139, - 1, 157, :_reduce_140, - 1, 157, :_reduce_141, - 1, 157, :_reduce_142, - 1, 157, :_reduce_143, - 1, 157, :_reduce_144, - 1, 157, :_reduce_145, - 1, 157, :_reduce_146, - 1, 157, :_reduce_147, - 1, 156, :_reduce_none, - 1, 156, :_reduce_none, - 1, 156, :_reduce_none, - 1, 156, :_reduce_none, - 1, 156, :_reduce_none, - 3, 159, :_reduce_153, - 6, 128, :_reduce_154, - 2, 158, :_reduce_155, - 2, 158, :_reduce_156, - 1, 160, :_reduce_157, - 1, 124, :_reduce_none, - 1, 124, :_reduce_159, - 1, 132, :_reduce_160, - 1, 147, :_reduce_none, - 1, 147, :_reduce_none, - 1, 147, :_reduce_none, - 1, 147, :_reduce_none, - 1, 147, :_reduce_none, - 1, 147, :_reduce_none, - 1, 147, :_reduce_none, - 1, 147, :_reduce_none, - 1, 147, :_reduce_none, - 1, 147, :_reduce_none, - 1, 147, :_reduce_none, - 1, 147, :_reduce_none, - 4, 170, :_reduce_173, - 4, 169, :_reduce_174, - 4, 168, :_reduce_175, - 4, 167, :_reduce_176, - 4, 166, :_reduce_177, - 4, 165, :_reduce_178, - 4, 161, :_reduce_179, - 4, 164, :_reduce_180, - 4, 162, :_reduce_181, - 4, 163, :_reduce_182, - 1, 97, :_reduce_183, - 1, 92, :_reduce_184, - 1, 89, :_reduce_185, - 2, 89, :_reduce_186, - 1, 89, :_reduce_none, - 0, 89, :_reduce_none, - 1, 119, :_reduce_189, - 0, 119, :_reduce_none, - 5, 108, :_reduce_191, - 1, 171, :_reduce_none, - 5, 172, :_reduce_193, - 3, 172, :_reduce_194, - 1, 173, :_reduce_195, - 4, 173, :_reduce_196, - 3, 174, :_reduce_197, - 1, 175, :_reduce_none, - 1, 175, :_reduce_none, - 1, 175, :_reduce_none, - 2, 175, :_reduce_201, - 2, 175, :_reduce_202, - 1, 175, :_reduce_203, - 1, 177, :_reduce_none, - 0, 177, :_reduce_none, - 5, 176, :_reduce_206, - 1, 178, :_reduce_207, - 4, 178, :_reduce_208, - 1, 179, :_reduce_none ] - -racc_reduce_n = 210 - -racc_shift_n = 393 - -racc_token_table = { - false => 0, - :error => 1, - :ASSIGN => 2, - :AT_SYM => 3, - :COMMENT => 4, - :JUMP => 5, - :IO_METHOD => 6, - :INPUT => 7, - :OUTPUT => 8, - :NUMREG => 9, - :POSREG => 10, - :VREG => 11, - :SREG => 12, - :TIME_SEGMENT => 13, - :ARG => 14, - :UALM => 15, - :MOVE => 16, - :DOT => 17, - :TO => 18, - :AT => 19, - :TERM => 20, - :OFFSET => 21, - :SKIP => 22, - :GROUP => 23, - :SEMICOLON => 24, - :NEWLINE => 25, - :STRING => 26, - :REAL => 27, - :DIGIT => 28, - :WORD => 29, - :EQUAL => 30, - :EEQUAL => 31, - :NOTEQUAL => 32, - :GTE => 33, - :LTE => 34, - :LT => 35, - :GT => 36, - :BANG => 37, - :PLUS => 38, - :MINUS => 39, - :STAR => 40, - :SLASH => 41, - :DIV => 42, - :AND => 43, - :OR => 44, - :MOD => 45, - :IF => 46, - :ELSE => 47, - :END => 48, - :UNLESS => 49, - :FOR => 50, - :IN => 51, - :WHILE => 52, - :WAIT_FOR => 53, - :WAIT_UNTIL => 54, - :TIMEOUT => 55, - :AFTER => 56, - :FANUC_USE => 57, - :SET_SKIP_CONDITION => 58, - :NAMESPACE => 59, - :CASE => 60, - :WHEN => 61, - :INDIRECT => 62, - :POSITION => 63, - :EVAL => 64, - :TIMER => 65, - :TIMER_METHOD => 66, - :RAISE => 67, - :ABORT => 68, - :POSITION_DATA => 69, - :TRUE_FALSE => 70, - :RUN => 71, - :TP_HEADER => 72, - :PAUSE => 73, - :LPAREN => 74, - :RPAREN => 75, - :COLON => 76, - :COMMA => 77, - :LBRACK => 78, - :RBRACK => 79, - :LBRACE => 80, - :RBRACE => 81, - :LABEL => 82, - :ADDRESS => 83, - :false => 84 } - -racc_nt_base = 85 - -racc_use_result_var = true - -Racc_arg = [ - racc_action_table, - racc_action_check, - racc_action_default, - racc_action_pointer, - racc_goto_table, - racc_goto_check, - racc_goto_default, - racc_goto_pointer, - racc_nt_base, - racc_reduce_table, - racc_token_table, - racc_shift_n, - racc_reduce_n, - racc_use_result_var ] - -Racc_token_to_s_table = [ - "$end", - "error", - "ASSIGN", - "AT_SYM", - "COMMENT", - "JUMP", - "IO_METHOD", - "INPUT", - "OUTPUT", - "NUMREG", - "POSREG", - "VREG", - "SREG", - "TIME_SEGMENT", - "ARG", - "UALM", - "MOVE", - "DOT", - "TO", - "AT", - "TERM", - "OFFSET", - "SKIP", - "GROUP", - "SEMICOLON", - "NEWLINE", - "STRING", - "REAL", - "DIGIT", - "WORD", - "EQUAL", - "EEQUAL", - "NOTEQUAL", - "GTE", - "LTE", - "LT", - "GT", - "BANG", - "PLUS", - "MINUS", - "STAR", - "SLASH", - "DIV", - "AND", - "OR", - "MOD", - "IF", - "ELSE", - "END", - "UNLESS", - "FOR", - "IN", - "WHILE", - "WAIT_FOR", - "WAIT_UNTIL", - "TIMEOUT", - "AFTER", - "FANUC_USE", - "SET_SKIP_CONDITION", - "NAMESPACE", - "CASE", - "WHEN", - "INDIRECT", - "POSITION", - "EVAL", - "TIMER", - "TIMER_METHOD", - "RAISE", - "ABORT", - "POSITION_DATA", - "TRUE_FALSE", - "RUN", - "TP_HEADER", - "PAUSE", - "LPAREN", - "RPAREN", - "COLON", - "COMMA", - "LBRACK", - "RBRACK", - "LBRACE", - "RBRACE", - "LABEL", - "ADDRESS", - "false", - "$start", - "program", - "statements", - "statement", - "terminator", - "block", - "optional_newline", - "comment", - "definition", - "namespace", - "motion_statement", - "label_definition", - "address", - "conditional", - "inline_conditional", - "forloop", - "while_loop", - "use_statement", - "set_skip_statement", - "wait_statement", - "case_statement", - "fanuc_eval", - "timer_method", - "position_data", - "raise", - "tp_header_definition", - "empty_stmt", - "tp_header_value", - "var_or_indirect", - "indirectable", - "expression", - "wait_modifier", - "timeout_modifier", - "after_modifier", - "swallow_newlines", - "label", - "program_call", - "args", - "arg", - "number", - "var", - "string", - "io_method", - "indirect_thing", - "jump", - "else_block", - "minmax_val", - "integer", - "case_conditions", - "case_else", - "case_condition", - "case_allowed_condition", - "case_allowed_statement", - "inlineable", - "assignment", - "motion_modifiers", - "motion_modifier", - "speed", - "valid_terminations", - "time", - "time_seg_actions", - "optional_lpos_arg", - "definable", - "var_without_namespaces", - "var_with_namespaces", - "var_method_modifiers", - "namespaces", - "var_method_modifier", - "ns", - "unary_expression", - "binary_expression", - "factor", - "operator", - "signed_number", - "paren_expr", - "sign", - "numreg", - "output", - "input", - "posreg", - "position", - "vreg", - "argument", - "timer", - "ualm", - "sreg", - "sn", - "hash", - "hash_attributes", - "hash_attribute", - "hash_value", - "array", - "optional_sign", - "array_values", - "array_value" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 35) - def _reduce_1(val, _values, result) - @interpreter.nodes = val[0] - result - end -.,., - -# reduce 2 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 42) - def _reduce_3(val, _values, result) - result = [val[0]] - result << val[1] unless val[1].nil? - - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 46) - def _reduce_4(val, _values, result) - result = val[0] << val[1] - result << val[2] unless val[2].nil? - - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 52) - def _reduce_5(val, _values, result) - result = val[1] - result - end -.,., - -# reduce 6 omitted - -# reduce 7 omitted - -# reduce 8 omitted - -# reduce 9 omitted - -# reduce 10 omitted - -# reduce 11 omitted - -# reduce 12 omitted - -# reduce 13 omitted - -# reduce 14 omitted - -# reduce 15 omitted - -# reduce 16 omitted - -# reduce 17 omitted - -# reduce 18 omitted - -# reduce 19 omitted - -# reduce 20 omitted - -# reduce 21 omitted - -# reduce 22 omitted - -# reduce 23 omitted - -# reduce 24 omitted - -# reduce 25 omitted - -# reduce 26 omitted - -# reduce 27 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 85) - def _reduce_28(val, _values, result) - result = PauseNode.new - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 86) - def _reduce_29(val, _values, result) - result = AbortNode.new - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 90) - def _reduce_30(val, _values, result) - result = EmptyStmtNode.new() - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 94) - def _reduce_31(val, _values, result) - result = HeaderNode.new(val[0],val[2]) - result - end -.,., - -# reduce 32 omitted - -# reduce 33 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 103) - def _reduce_34(val, _values, result) - result = RaiseNode.new(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 107) - def _reduce_35(val, _values, result) - result = TimerMethodNode.new(val[0],val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 111) - def _reduce_36(val, _values, result) - result = EvalNode.new(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 116) - def _reduce_37(val, _values, result) - result = WaitForNode.new(val[2], val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 118) - def _reduce_38(val, _values, result) - result = WaitUntilNode.new(val[2], nil) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 120) - def _reduce_39(val, _values, result) - result = WaitUntilNode.new(val[2],val[5]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 122) - def _reduce_40(val, _values, result) - result = WaitUntilNode.new(val[2],val[5].merge(val[7])) - result - end -.,., - -# reduce 41 omitted - -# reduce 42 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 132) - def _reduce_43(val, _values, result) - result = { label: val[3] } - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 137) - def _reduce_44(val, _values, result) - result = { timeout: [val[3],val[5]] } - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 141) - def _reduce_45(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 145) - def _reduce_46(val, _values, result) - result = UseNode.new(val[0],val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 150) - def _reduce_47(val, _values, result) - result = SetSkipNode.new(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 154) - def _reduce_48(val, _values, result) - result = CallNode.new(val[0],val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 155) - def _reduce_49(val, _values, result) - result = CallNode.new(val[1],val[3],async: true) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 159) - def _reduce_50(val, _values, result) - result = [val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 160) - def _reduce_51(val, _values, result) - result = val[0] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 161) - def _reduce_52(val, _values, result) - result = [] - result - end -.,., - -# reduce 53 omitted - -# reduce 54 omitted - -# reduce 55 omitted - -# reduce 56 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 172) - def _reduce_57(val, _values, result) - result = StringNode.new(val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 176) - def _reduce_58(val, _values, result) - result = IOMethodNode.new(val[0],val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 178) - def _reduce_59(val, _values, result) - result = IOMethodNode.new(val[0],val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 180) - def _reduce_60(val, _values, result) - result = IOMethodNode.new(val[0],val[2],{ pulse_time: val[4], pulse_units: val[6] }) - result - end -.,., - -# reduce 61 omitted - -# reduce 62 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 190) - def _reduce_63(val, _values, result) - result = JumpNode.new(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 195) - def _reduce_64(val, _values, result) - result = ConditionalNode.new("if",val[1],val[2],val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 197) - def _reduce_65(val, _values, result) - result = ConditionalNode.new("unless",val[1],val[2],val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 202) - def _reduce_66(val, _values, result) - result = ForNode.new(val[1],val[4],val[6],val[8]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 206) - def _reduce_67(val, _values, result) - result = WhileNode.new(val[1],val[2]) - result - end -.,., - -# reduce 68 omitted - -# reduce 69 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 215) - def _reduce_70(val, _values, result) - result = NamespaceNode.new(val[1],val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 222) - def _reduce_71(val, _values, result) - result = CaseNode.new(val[1],val[3],val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 226) - def _reduce_72(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 228) - def _reduce_73(val, _values, result) - result = val[0] << val[1] << val[2] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 233) - def _reduce_74(val, _values, result) - result = CaseConditionNode.new(val[1],val[3]) - result - end -.,., - -# reduce 75 omitted - -# reduce 76 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 243) - def _reduce_77(val, _values, result) - result = CaseConditionNode.new(nil,val[2]) - result - end -.,., - -# reduce 78 omitted - -# reduce 79 omitted - -# reduce 80 omitted - -# reduce 81 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 254) - def _reduce_82(val, _values, result) - result = InlineConditionalNode.new(val[1], val[2], val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 255) - def _reduce_83(val, _values, result) - result = InlineConditionalNode.new(val[1], val[2], val[0]) - result - end -.,., - -# reduce 84 omitted - -# reduce 85 omitted - -# reduce 86 omitted - -# reduce 87 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 266) - def _reduce_88(val, _values, result) - result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 267) - def _reduce_89(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 272) - def _reduce_90(val, _values, result) - result = MotionNode.new(val[0],val[5],val[7]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 276) - def _reduce_91(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 278) - def _reduce_92(val, _values, result) - result = val[0] << val[1] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 283) - def _reduce_93(val, _values, result) - result = SpeedNode.new(val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 285) - def _reduce_94(val, _values, result) - result = TerminationNode.new(val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 287) - def _reduce_95(val, _values, result) - result = OffsetNode.new(val[2],val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 289) - def _reduce_96(val, _values, result) - result = TimeNode.new(val[2],val[4],val[6]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 291) - def _reduce_97(val, _values, result) - result = SkipNode.new(val[4],val[5]) - result - end -.,., - -# reduce 98 omitted - -# reduce 99 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 298) - def _reduce_100(val, _values, result) - raise Racc::ParseError, sprintf("\ninvalid termination type: (%s)", val[1]) if val[1] != 1 - - result = DigitNode.new(val[1].to_i * -1) - - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 305) - def _reduce_101(val, _values, result) - result = val[1] - result - end -.,., - -# reduce 102 omitted - -# reduce 103 omitted - -# reduce 104 omitted - -# reduce 105 omitted - -# reduce 106 omitted - -# reduce 107 omitted - -# reduce 108 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 325) - def _reduce_109(val, _values, result) - result = { speed: val[0], units: val[2] } - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 326) - def _reduce_110(val, _values, result) - result = { speed: val[0], units: nil } - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 330) - def _reduce_111(val, _values, result) - result = LabelDefinitionNode.new(val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 334) - def _reduce_112(val, _values, result) - result = DefinitionNode.new(val[0],val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 338) - def _reduce_113(val, _values, result) - result = AssignmentNode.new(val[0],val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 339) - def _reduce_114(val, _values, result) - result = AssignmentNode.new( - val[0], - ExpressionNode.new(val[0],"+",val[3]) - ) - - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 344) - def _reduce_115(val, _values, result) - result = AssignmentNode.new( - val[0], - ExpressionNode.new(val[0],"-",val[3]) - ) - - result - end -.,., - -# reduce 116 omitted - -# reduce 117 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 357) - def _reduce_118(val, _values, result) - result = VarNode.new(val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 358) - def _reduce_119(val, _values, result) - result = VarMethodNode.new(val[0],val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 363) - def _reduce_120(val, _values, result) - result = NamespacedVarNode.new(val[0],val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 367) - def _reduce_121(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 369) - def _reduce_122(val, _values, result) - result = val[0].merge(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 373) - def _reduce_123(val, _values, result) - result = { method: val[2] } - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 375) - def _reduce_124(val, _values, result) - result = { group: val[4] } - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 379) - def _reduce_125(val, _values, result) - result = [val[0]] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 380) - def _reduce_126(val, _values, result) - result = val[0] << val[1] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 384) - def _reduce_127(val, _values, result) - result = val[0] - result - end -.,., - -# reduce 128 omitted - -# reduce 129 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 394) - def _reduce_130(val, _values, result) - result = val[0] - result - end -.,., - -# reduce 131 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 396) - def _reduce_132(val, _values, result) - result = ExpressionNode.new(val[1], "!", nil) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 401) - def _reduce_133(val, _values, result) - result = ExpressionNode.new(val[0], val[1], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 405) - def _reduce_134(val, _values, result) - result = "==" - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 406) - def _reduce_135(val, _values, result) - result = "<>" - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 407) - def _reduce_136(val, _values, result) - result = "<" - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 408) - def _reduce_137(val, _values, result) - result = ">" - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 409) - def _reduce_138(val, _values, result) - result = ">=" - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 410) - def _reduce_139(val, _values, result) - result = "<=" - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 411) - def _reduce_140(val, _values, result) - result = "+" - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 412) - def _reduce_141(val, _values, result) - result = "-" - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 413) - def _reduce_142(val, _values, result) - result = "||" - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 414) - def _reduce_143(val, _values, result) - result = "*" - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 415) - def _reduce_144(val, _values, result) - result = "/" - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 416) - def _reduce_145(val, _values, result) - result = "DIV" - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 417) - def _reduce_146(val, _values, result) - result = "%" - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 418) - def _reduce_147(val, _values, result) - result = "&&" - result - end -.,., - -# reduce 148 omitted - -# reduce 149 omitted - -# reduce 150 omitted - -# reduce 151 omitted - -# reduce 152 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 430) - def _reduce_153(val, _values, result) - result = ParenExpressionNode.new(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 435) - def _reduce_154(val, _values, result) - result = IndirectNode.new(val[2].to_sym, val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 440) - def _reduce_155(val, _values, result) - val[1] = val[1].to_i * -1 if val[0] == "-" - result = DigitNode.new(val[1]) - - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 443) - def _reduce_156(val, _values, result) - val[1] = val[1].to_f * -1 if val[0] == "-"; result = RealNode.new(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 447) - def _reduce_157(val, _values, result) - result = "-" - result - end -.,., - -# reduce 158 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 452) - def _reduce_159(val, _values, result) - result = RealNode.new(val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 456) - def _reduce_160(val, _values, result) - result = DigitNode.new(val[0]) - result - end -.,., - -# reduce 161 omitted - -# reduce 162 omitted - -# reduce 163 omitted - -# reduce 164 omitted - -# reduce 165 omitted - -# reduce 166 omitted - -# reduce 167 omitted - -# reduce 168 omitted - -# reduce 169 omitted - -# reduce 170 omitted - -# reduce 171 omitted - -# reduce 172 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 476) - def _reduce_173(val, _values, result) - result = StringRegisterNode.new(val[2].to_i) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 480) - def _reduce_174(val, _values, result) - result = UserAlarmNode.new(val[2].to_i) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 484) - def _reduce_175(val, _values, result) - result = TimerNode.new(val[2].to_i) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 488) - def _reduce_176(val, _values, result) - result = ArgumentNode.new(val[2].to_i) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 492) - def _reduce_177(val, _values, result) - result = VisionRegisterNode.new(val[2].to_i) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 496) - def _reduce_178(val, _values, result) - result = PositionNode.new(val[2].to_i) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 500) - def _reduce_179(val, _values, result) - result = NumregNode.new(val[2].to_i) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 504) - def _reduce_180(val, _values, result) - result = PosregNode.new(val[2].to_i) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 508) - def _reduce_181(val, _values, result) - result = IONode.new(val[0], val[2].to_i) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 512) - def _reduce_182(val, _values, result) - result = IONode.new(val[0], val[2].to_i) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 516) - def _reduce_183(val, _values, result) - result = AddressNode.new(val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 520) - def _reduce_184(val, _values, result) - result = CommentNode.new(val[0]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 524) - def _reduce_185(val, _values, result) - result = TerminatorNode.new - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 525) - def _reduce_186(val, _values, result) - result = val[0] - result - end -.,., - -# reduce 187 omitted - -# reduce 188 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 532) - def _reduce_189(val, _values, result) - result = TerminatorNode.new - result - end -.,., - -# reduce 190 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 538) - def _reduce_191(val, _values, result) - result = PositionDataNode.new(val[2]) - result - end -.,., - -# reduce 192 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 546) - def _reduce_193(val, _values, result) - result = val[2] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 547) - def _reduce_194(val, _values, result) - result = {} - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 551) - def _reduce_195(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 553) - def _reduce_196(val, _values, result) - result = val[0].merge(val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 557) - def _reduce_197(val, _values, result) - result = { val[0].to_sym => val[2] } - result - end -.,., - -# reduce 198 omitted - -# reduce 199 omitted - -# reduce 200 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 564) - def _reduce_201(val, _values, result) - val[1] = val[1].to_i * -1 if val[0] == "-"; result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 565) - def _reduce_202(val, _values, result) - val[1] = val[1].to_f * -1 if val[0] == "-"; result = val[1] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 566) - def _reduce_203(val, _values, result) - result = val[0] == "true" - result - end -.,., - -# reduce 204 omitted - -# reduce 205 omitted - -module_eval(<<'.,.,', 'tp_plus.y', 575) - def _reduce_206(val, _values, result) - result = val[2] - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 579) - def _reduce_207(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'tp_plus.y', 580) - def _reduce_208(val, _values, result) - result = val[0] << val[3] - result - end -.,., - -# reduce 209 omitted - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser -end # module TPPlus diff --git a/test/racc/regress/twowaysql b/test/racc/regress/twowaysql deleted file mode 100644 index 219f1a8b04..0000000000 --- a/test/racc/regress/twowaysql +++ /dev/null @@ -1,556 +0,0 @@ -# -# DO NOT MODIFY!!!! -# This file is automatically generated by Racc 1.5.0 -# from Racc grammar file "". -# - -require 'racc/parser.rb' -module TwoWaySQL - class Parser < Racc::Parser - -module_eval(<<'...end twowaysql.y/module_eval...', 'twowaysql.y', 148) - -require 'strscan' - -def initialize(opts={}) - opts = { - :debug => false, - :preserve_space => true, - :preserve_comment => false - }.merge(opts) - @yydebug = opts[:debug] - @preserve_space = opts[:preserve_space] - @preserve_comment = opts[:preserve_comment] - @num_questions = 0 -end - - -PAREN_EXAMPLE = '\([^\)]+\)' -BEGIN_BIND_VARIABLE = '(\/|\#)\*([^\*]+)\*\1' -BIND_VARIABLE_PATTERN = /\A#{BEGIN_BIND_VARIABLE}\s*/ -PAREN_BIND_VARIABLE_PATTERN = /\A#{BEGIN_BIND_VARIABLE}\s*#{PAREN_EXAMPLE}/ -EMBED_VARIABLE_PATTERN = /\A(\/|\#)\*\$([^\*]+)\*\1\s*/ - -CONDITIONAL_PATTERN = /\A(\/|\#)\*(IF)\s+([^\*]+)\s*\*\1/ -BEGIN_END_PATTERN = /\A(\/|\#)\*(BEGIN|END)\s*\*\1/ -STRING_LITERAL_PATTERN = /\A(\'(?:[^\']+|\'\')*\')/ ## quoted string -SPLIT_TOKEN_PATTERN = /\A(\S+?)(?=\s*(?:(?:\/|\#)\*|-{2,}|\(|\)|\,))/ ## stop on delimiters --,/*,#*,',',(,) -LITERAL_PATTERN = /\A([^;\s]+)/ -SPACES_PATTERN = /\A(\s+)/ -QUESTION_PATTERN = /\A\?/ -COMMA_PATTERN = /\A\,/ -LPAREN_PATTERN = /\A\(/ -RPAREN_PATTERN = /\A\)/ -ACTUAL_COMMENT_PATTERN = /\A(\/|\#)\*(\s{1,}(?:.*?))\*\1/m ## start with spaces -SEMICOLON_AT_INPUT_END_PATTERN = /\A\;\s*\Z/ -UNMATCHED_COMMENT_START_PATTERN = /\A(?:(?:\/|\#)\*)/ - -#TODO: remove trailing spaces for S2Dao compatibility, but this spec sometimes causes SQL bugs... -ELSE_PATTERN = /\A\-{2,}\s*ELSE\s*/ -AND_PATTERN = /\A(\ *AND)\b/i -OR_PATTERN = /\A(\ *OR)\b/i - - -def parse( io ) - @q = [] - io.each_line(nil) do |whole| - @s = StringScanner.new(whole) - end - scan_str - - # @q.push [ false, nil ] - @q.push [ false, [@s.pos, nil] ] - - ## call racc's private parse method - do_parse -end - - -## called by racc -def next_token - @q.shift -end - - -def scan_str - until @s.eos? do - case - when @s.scan(AND_PATTERN) - @q.push [ :AND, [@s.pos, @s[1]] ] - when @s.scan(OR_PATTERN) - @q.push [ :OR, [@s.pos, @s[1]] ] - when @s.scan(SPACES_PATTERN) - @q.push [ :SPACES, [@s.pos, @s[1]] ] - when @s.scan(QUESTION_PATTERN) - @q.push [ :QUESTION, [@s.pos, nil] ] - when @s.scan(COMMA_PATTERN) - @q.push [ :COMMA, [@s.pos, ','] ] - when @s.scan(LPAREN_PATTERN) - @q.push [ :LPAREN, [@s.pos, '('] ] - when @s.scan(RPAREN_PATTERN) - @q.push [ :RPAREN, [@s.pos, ')'] ] - when @s.scan(ELSE_PATTERN) - @q.push [ :ELSE, [@s.pos, nil] ] - when @s.scan(ACTUAL_COMMENT_PATTERN) - @q.push [ :ACTUAL_COMMENT, [@s.pos, @s[1], @s[2]] ] if @preserve_comment - when @s.scan(BEGIN_END_PATTERN) - @q.push [ @s[2].intern, [@s.pos, nil] ] - when @s.scan(CONDITIONAL_PATTERN) - @q.push [ @s[2].intern, [@s.pos, @s[3]] ] - when @s.scan(EMBED_VARIABLE_PATTERN) - @q.push [ :EMBED_VARIABLE, [@s.pos, @s[2]] ] - when @s.scan(PAREN_BIND_VARIABLE_PATTERN) - @q.push [ :PAREN_BIND_VARIABLE, [@s.pos, @s[2]] ] - when @s.scan(BIND_VARIABLE_PATTERN) - @q.push [ :BIND_VARIABLE, [@s.pos, @s[2]] ] - when @s.scan(STRING_LITERAL_PATTERN) - @q.push [ :STRING_LITERAL, [@s.pos, @s[1]] ] - when @s.scan(SPLIT_TOKEN_PATTERN) - @q.push [ :IDENT, [@s.pos, @s[1]] ] - when @s.scan(UNMATCHED_COMMENT_START_PATTERN) ## unmatched comment start, '/*','#*' - raise Racc::ParseError, "unmatched comment. line:[#{line_no(@s.pos)}], str:[#{@s.rest}]" - when @s.scan(LITERAL_PATTERN) ## other string token - @q.push [ :IDENT, [@s.pos, @s[1]] ] - when @s.scan(SEMICOLON_AT_INPUT_END_PATTERN) - #drop semicolon at input end - else - raise Racc::ParseError, "syntax error at or near line:[#{line_no(@s.pos)}], str:[#{@s.rest}]" - end - end -end - - -## override racc's default on_error method -def on_error(t, v, vstack) - ## cursor in value-stack is an array of two items, - ## that have position value as 0th item. like [731, "ctx[:limit] "] - cursor = vstack.find do |tokens| - tokens.size == 2 and tokens[0].kind_of?(Fixnum) - end - pos = cursor[0] - line = line_no(pos) - rest = @s.string[pos .. -1] - raise Racc::ParseError, "syntax error at or near line:[#{line}], str:[#{rest}]" -end - - -def line_no(pos) - lines = 0 - scanned = @s.string[0..(pos)] - scanned.each_line { lines += 1 } - lines -end -...end twowaysql.y/module_eval... -##### State transition tables begin ### - -racc_action_table = [ - 8, 36, 9, 37, 12, 13, 10, 11, 14, 15, - 16, 17, 18, 19, 22, 23, 24, 8, 38, 9, - 3, 12, 13, 10, 11, 14, 15, 16, 17, 18, - 19, 22, 23, 24, 8, 25, 9, 40, 12, 13, - 10, 11, 14, 15, 16, 17, 18, 19, 22, 23, - 24, 8, 45, 9, 46, 12, 13, 10, 11, 14, - 15, 16, 17, 18, 19, 22, 23, 24, 8, nil, - 9, nil, 12, 13, 10, 11, 14, 15, 16, 17, - 18, 19, 22, 23, 24, 35, 33, 34, 31, 32, - 44, 43, 31, 32 ] - -racc_action_check = [ - 2, 24, 2, 24, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 26, 26, 26, - 1, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 27, 3, 27, 28, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 41, 37, 41, 39, 41, 41, 41, 41, 41, - 41, 41, 41, 41, 41, 41, 41, 41, 42, nil, - 42, nil, 42, 42, 42, 42, 42, 42, 42, 42, - 42, 42, 42, 42, 42, 22, 22, 22, 9, 9, - 34, 34, 40, 40 ] - -racc_action_pointer = [ - nil, 20, -2, 35, nil, nil, nil, nil, nil, 82, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 77, nil, -7, nil, 15, 32, 32, nil, - nil, nil, nil, nil, 82, nil, nil, 44, nil, 51, - 86, 49, 66, nil, nil, nil, nil, nil ] - -racc_action_default = [ - -2, -35, -1, -35, -3, -4, -5, -6, -2, -2, - -16, -17, -18, -19, -20, -21, -22, -23, -24, -25, - -26, -27, -35, -32, -35, 48, -35, -13, -10, -11, - -12, -2, -2, -28, -35, -30, -33, -35, -7, -35, - -2, -14, -15, -29, -31, -34, -8, -9 ] - -racc_goto_table = [ - 2, 1, 28, 39, nil, nil, nil, nil, 26, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 41, 42, 47 ] - -racc_goto_check = [ - 2, 1, 7, 8, nil, nil, nil, nil, 2, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, 2, 2, 7 ] - -racc_goto_pointer = [ - nil, 1, 0, nil, nil, nil, nil, -7, -25, nil, - nil, nil, nil ] - -racc_goto_default = [ - nil, nil, 27, 4, 5, 6, 7, nil, nil, 29, - 30, 20, 21 ] - -racc_reduce_table = [ - 0, 0, :racc_error, - 1, 20, :_reduce_1, - 0, 21, :_reduce_2, - 2, 21, :_reduce_3, - 1, 22, :_reduce_none, - 1, 22, :_reduce_none, - 1, 22, :_reduce_none, - 3, 25, :_reduce_7, - 4, 24, :_reduce_8, - 2, 27, :_reduce_9, - 0, 27, :_reduce_10, - 1, 26, :_reduce_none, - 1, 26, :_reduce_none, - 1, 26, :_reduce_none, - 2, 28, :_reduce_14, - 2, 29, :_reduce_15, - 1, 23, :_reduce_16, - 1, 23, :_reduce_17, - 1, 23, :_reduce_18, - 1, 23, :_reduce_19, - 1, 23, :_reduce_20, - 1, 23, :_reduce_21, - 1, 23, :_reduce_22, - 1, 23, :_reduce_23, - 1, 23, :_reduce_24, - 1, 23, :_reduce_25, - 1, 23, :_reduce_none, - 1, 23, :_reduce_none, - 2, 30, :_reduce_28, - 3, 30, :_reduce_29, - 2, 30, :_reduce_30, - 3, 30, :_reduce_31, - 1, 30, :_reduce_32, - 2, 31, :_reduce_33, - 3, 31, :_reduce_34 ] - -racc_reduce_n = 35 - -racc_shift_n = 48 - -racc_token_table = { - false => 0, - :error => 1, - :BEGIN => 2, - :END => 3, - :IF => 4, - :ELSE => 5, - :AND => 6, - :OR => 7, - :IDENT => 8, - :STRING_LITERAL => 9, - :SPACES => 10, - :COMMA => 11, - :LPAREN => 12, - :RPAREN => 13, - :QUESTION => 14, - :ACTUAL_COMMENT => 15, - :BIND_VARIABLE => 16, - :PAREN_BIND_VARIABLE => 17, - :EMBED_VARIABLE => 18 } - -racc_nt_base = 19 - -racc_use_result_var = true - -Racc_arg = [ - racc_action_table, - racc_action_check, - racc_action_default, - racc_action_pointer, - racc_goto_table, - racc_goto_check, - racc_goto_default, - racc_goto_pointer, - racc_nt_base, - racc_reduce_table, - racc_token_table, - racc_shift_n, - racc_reduce_n, - racc_use_result_var ] - -Racc_token_to_s_table = [ - "$end", - "error", - "BEGIN", - "END", - "IF", - "ELSE", - "AND", - "OR", - "IDENT", - "STRING_LITERAL", - "SPACES", - "COMMA", - "LPAREN", - "RPAREN", - "QUESTION", - "ACTUAL_COMMENT", - "BIND_VARIABLE", - "PAREN_BIND_VARIABLE", - "EMBED_VARIABLE", - "$start", - "sql", - "stmt_list", - "stmt", - "primary", - "if_stmt", - "begin_stmt", - "sub_stmt", - "else_stmt", - "and_stmt", - "or_stmt", - "bind_var", - "embed_var" ] - -Racc_debug_parser = false - -##### State transition tables end ##### - -# reduce 0 omitted - -module_eval(<<'.,.,', 'twowaysql.y', 20) - def _reduce_1(val, _values, result) - result = RootNode.new( val[0] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 25) - def _reduce_2(val, _values, result) - result = [] - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 29) - def _reduce_3(val, _values, result) - result.push val[1] - - result - end -.,., - -# reduce 4 omitted - -# reduce 5 omitted - -# reduce 6 omitted - -module_eval(<<'.,.,', 'twowaysql.y', 38) - def _reduce_7(val, _values, result) - result = BeginNode.new( val[1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 43) - def _reduce_8(val, _values, result) - result = IfNode.new( val[0][1], val[1], val[2] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 48) - def _reduce_9(val, _values, result) - result = val[1] - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 52) - def _reduce_10(val, _values, result) - result = nil - - result - end -.,., - -# reduce 11 omitted - -# reduce 12 omitted - -# reduce 13 omitted - -module_eval(<<'.,.,', 'twowaysql.y', 61) - def _reduce_14(val, _values, result) - result = SubStatementNode.new( val[0][1], val[1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 66) - def _reduce_15(val, _values, result) - result = SubStatementNode.new( val[0][1], val[1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 71) - def _reduce_16(val, _values, result) - result = LiteralNode.new( val[0][1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 75) - def _reduce_17(val, _values, result) - result = LiteralNode.new( val[0][1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 79) - def _reduce_18(val, _values, result) - result = LiteralNode.new( val[0][1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 83) - def _reduce_19(val, _values, result) - result = LiteralNode.new( val[0][1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 87) - def _reduce_20(val, _values, result) - result = WhiteSpaceNode.new( val[0][1], @preserve_space ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 91) - def _reduce_21(val, _values, result) - result = LiteralNode.new( val[0][1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 95) - def _reduce_22(val, _values, result) - result = LiteralNode.new( val[0][1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 99) - def _reduce_23(val, _values, result) - result = LiteralNode.new( val[0][1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 103) - def _reduce_24(val, _values, result) - @num_questions += 1 - result = QuestionNode.new( @num_questions ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 108) - def _reduce_25(val, _values, result) - result = ActualCommentNode.new( val[0][1] , val[0][2] ) - - result - end -.,., - -# reduce 26 omitted - -# reduce 27 omitted - -module_eval(<<'.,.,', 'twowaysql.y', 115) - def _reduce_28(val, _values, result) - result = BindVariableNode.new( val[0][1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 119) - def _reduce_29(val, _values, result) - result = BindVariableNode.new( val[0][1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 123) - def _reduce_30(val, _values, result) - result = BindVariableNode.new( val[0][1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 127) - def _reduce_31(val, _values, result) - result = BindVariableNode.new( val[0][1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 131) - def _reduce_32(val, _values, result) - result = ParenBindVariableNode.new( val[0][1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 136) - def _reduce_33(val, _values, result) - result = EmbedVariableNode.new( val[0][1] ) - - result - end -.,., - -module_eval(<<'.,.,', 'twowaysql.y', 140) - def _reduce_34(val, _values, result) - result = EmbedVariableNode.new( val[0][1] ) - - result - end -.,., - -def _reduce_none(val, _values, result) - val[0] -end - - end # class Parser -end # module TwoWaySQL diff --git a/test/racc/scandata/brace b/test/racc/scandata/brace deleted file mode 100644 index f6c843853e..0000000000 --- a/test/racc/scandata/brace +++ /dev/null @@ -1,7 +0,0 @@ -{ { - } { } { - { { { } } } - { { { {} } } } - {} {} {} - } -} diff --git a/test/racc/scandata/gvar b/test/racc/scandata/gvar deleted file mode 100644 index 50528ce97b..0000000000 --- a/test/racc/scandata/gvar +++ /dev/null @@ -1 +0,0 @@ -{ $' $" $& $-a $/ $\ $( $1 $2 $3 $? $-i } diff --git a/test/racc/scandata/normal b/test/racc/scandata/normal deleted file mode 100644 index e705131536..0000000000 --- a/test/racc/scandata/normal +++ /dev/null @@ -1,4 +0,0 @@ -{ - # comment - result = "string".match(/regexp/)[0] -} diff --git a/test/racc/scandata/percent b/test/racc/scandata/percent deleted file mode 100644 index fded9a385c..0000000000 --- a/test/racc/scandata/percent +++ /dev/null @@ -1,18 +0,0 @@ -{ - 3 % 5 # mod - 3%5 # mod - 3% 5 # mod - i % 5 # mod - i%5 # mod - i% 5 # mod - call %{str} # string - call(%{str}) # string - %q{string} # string - %Q{string} # string - %r{string} # string - %w(array) # array - %x{array} # command string - %{string} # string - %_string_ # string - %/string/ # regexp -} diff --git a/test/racc/scandata/slash b/test/racc/scandata/slash deleted file mode 100644 index 190135b3bd..0000000000 --- a/test/racc/scandata/slash +++ /dev/null @@ -1,10 +0,0 @@ -{ - # here's many '/'s - i = 5/1 # div - re = /regex/ # regexp - i /= 5 # div - result = 5 / 1 # div - result = 5/ 1 # div - call(/regex/) # regexp - call /regex/ # regexp -} diff --git a/test/racc/src.intp b/test/racc/src.intp deleted file mode 100644 index 4d2460e8ed..0000000000 --- a/test/racc/src.intp +++ /dev/null @@ -1,34 +0,0 @@ -def assert( no, cond ) - if cond then - else - raise( 'assert ' + to_s(no) + ' failed' ) - end -end - -assert( 1, concat(concat(concat('str=', 'a'), "b"), 'c') == 'str=abc' ) -assert( 2, 'operator' + ' ok' == 'operator ok' ) -assert( 3, 1 + 1 == 2 ) -assert( 4, 4 * 1 + 10 * 1 == 14 ) - -if true then - assert( 5, true ) -else - assert( 6, false ) -end - -i = 1 -while i == 1 do - i = false -end -assert( 7, i == false ) -assert( 8, nil == nil ) - -def func - assert( 9, true ) -end -func - -def argfunc( str ) - assert( 10, str == 'ok' ) -end -argfunc 'ok' diff --git a/test/racc/start.y b/test/racc/start.y deleted file mode 100644 index 86296899b8..0000000000 --- a/test/racc/start.y +++ /dev/null @@ -1,20 +0,0 @@ -class S - -start st - -rule - -n: D { result = 'no' } -st : A B C n { result = 'ok' } - -end - ----- inner - - def parse - do_parse - end - ----- footer - -S.new.parse == 'ok' or raise 'start stmt not worked' diff --git a/test/racc/test_chk_y.rb b/test/racc/test_chk_y.rb deleted file mode 100644 index 883737c45f..0000000000 --- a/test/racc/test_chk_y.rb +++ /dev/null @@ -1,52 +0,0 @@ -require File.expand_path(File.join(__dir__, 'case')) - -module Racc - class TestChkY < TestCase - def setup - super - file = File.join(ASSET_DIR, 'chk.y') - @debug_flags = Racc::DebugFlags.parse_option_string('o') - parser = Racc::GrammarFileParser.new(@debug_flags) - @result = parser.parse(File.read(file), File.basename(file)) - @states = Racc::States.new(@result.grammar).nfa - @states.dfa - end - - def test_compile_chk_y - generator = Racc::ParserFileGenerator.new(@states, @result.params.dup) - - # it generates valid ruby - assert Module.new { - self.instance_eval(generator.generate_parser, __FILE__, __LINE__) - } - - grammar = @states.grammar - - assert_equal 0, @states.n_srconflicts - assert_equal 0, @states.n_rrconflicts - assert_equal 0, grammar.n_useless_nonterminals - assert_equal 0, grammar.n_useless_rules - assert_nil grammar.n_expected_srconflicts - end - - def test_compile_chk_y_line_convert - params = @result.params.dup - params.convert_line_all = true - - generator = Racc::ParserFileGenerator.new(@states, @result.params.dup) - - # it generates valid ruby - assert Module.new { - self.instance_eval(generator.generate_parser, __FILE__, __LINE__) - } - - grammar = @states.grammar - - assert_equal 0, @states.n_srconflicts - assert_equal 0, @states.n_rrconflicts - assert_equal 0, grammar.n_useless_nonterminals - assert_equal 0, grammar.n_useless_rules - assert_nil grammar.n_expected_srconflicts - end - end -end diff --git a/test/racc/test_grammar_file_parser.rb b/test/racc/test_grammar_file_parser.rb deleted file mode 100644 index 8f6e090cb2..0000000000 --- a/test/racc/test_grammar_file_parser.rb +++ /dev/null @@ -1,15 +0,0 @@ -require File.expand_path(File.join(__dir__, 'case')) - -module Racc - class TestGrammarFileParser < TestCase - def test_parse - file = File.join(ASSET_DIR, 'yyerr.y') - - debug_flags = Racc::DebugFlags.parse_option_string('o') - assert debug_flags.status_logging - - parser = Racc::GrammarFileParser.new(debug_flags) - parser.parse(File.read(file), File.basename(file)) - end - end -end diff --git a/test/racc/test_racc_command.rb b/test/racc/test_racc_command.rb deleted file mode 100644 index 5bfebf150b..0000000000 --- a/test/racc/test_racc_command.rb +++ /dev/null @@ -1,339 +0,0 @@ -require File.expand_path(File.join(__dir__, 'case')) - -module Racc - class TestRaccCommand < TestCase - def test_syntax_y - assert_compile 'syntax.y', '-v' - assert_debugfile 'syntax.y', [0,0,0,0,0] - end - - def test_percent_y - assert_compile 'percent.y' - assert_debugfile 'percent.y', [] - assert_exec 'percent.y' - end - - def test_scan_y - assert_compile 'scan.y' - assert_debugfile 'scan.y', [] - assert_exec 'scan.y' - end - - def test_newsyn_y - assert_compile 'newsyn.y' - assert_debugfile 'newsyn.y', [] - end - - def test_normal_y - assert_compile 'normal.y' - assert_debugfile 'normal.y', [] - - assert_compile 'normal.y', '-vg' - assert_debugfile 'normal.y', [] - end - - def test_chk_y - assert_compile 'chk.y', '-vg' - assert_debugfile 'chk.y', [] - assert_exec 'chk.y' - - assert_compile 'chk.y', '--line-convert-all' - assert_debugfile 'chk.y', [] - assert_exec 'chk.y' - end - - def test_echk_y - assert_compile 'echk.y', '-E' - assert_debugfile 'echk.y', [] - assert_exec 'echk.y' - end - - def test_err_y - assert_compile 'err.y' - assert_debugfile 'err.y', [] - assert_exec 'err.y' - end - - def test_mailp_y - assert_compile 'mailp.y' - assert_debugfile 'mailp.y', [] - end - - def test_conf_y - assert_compile 'conf.y', '-v' - assert_debugfile 'conf.y', [4,1,1,2] - end - - def test_rrconf_y - assert_compile 'rrconf.y' - assert_debugfile 'rrconf.y', [1,1,0,0] - end - - def test_useless_y - assert_compile 'useless.y' - assert_debugfile 'useless.y', [0,0,1,2] - end - - def test_opt_y - assert_compile 'opt.y' - assert_debugfile 'opt.y', [] - assert_exec 'opt.y' - end - - def test_yyerr_y - assert_compile 'yyerr.y' - assert_debugfile 'yyerr.y', [] - assert_exec 'yyerr.y' - end - - def test_recv_y - assert_compile 'recv.y' - assert_debugfile 'recv.y', [5,10,1,4] - end - - def test_ichk_y - assert_compile 'ichk.y' - assert_debugfile 'ichk.y', [] - assert_exec 'ichk.y' - end - - def test_intp_y - assert_compile 'intp.y' - assert_debugfile 'intp.y', [] - assert_exec 'intp.y' - end - - def test_expect_y - assert_compile 'expect.y' - assert_debugfile 'expect.y', [1,0,0,0,1] - end - - def test_nullbug1_y - assert_compile 'nullbug1.y' - assert_debugfile 'nullbug1.y', [0,0,0,0] - end - - def test_nullbug2_y - assert_compile 'nullbug2.y' - assert_debugfile 'nullbug2.y', [0,0,0,0] - end - - def test_firstline_y - assert_compile 'firstline.y' - assert_debugfile 'firstline.y', [] - end - - def test_nonass_y - assert_compile 'nonass.y' - assert_debugfile 'nonass.y', [] - assert_exec 'nonass.y' - end - - def test_digraph_y - assert_compile 'digraph.y' - assert_debugfile 'digraph.y', [] - assert_exec 'digraph.y' - end - - def test_noend_y - assert_compile 'noend.y' - assert_debugfile 'noend.y', [] - end - - def test_norule_y - assert_raise(Test::Unit::AssertionFailedError) { - assert_compile 'norule.y' - } - end - - def test_unterm_y - assert_raise(Test::Unit::AssertionFailedError) { - assert_compile 'unterm.y' - } - end - - # Regression test for a problem where error recovery at EOF would cause - # a Racc-generated parser to go into an infinite loop (on some grammars) - def test_error_recovery_y - assert_compile 'error_recovery.y' - Timeout.timeout(10) do - assert_exec 'error_recovery.y' - end - end - - # .y files from `parser` gem - - def test_ruby18 - assert_compile 'ruby18.y', [], timeout: 60 - assert_debugfile 'ruby18.y', [] - assert_output_unchanged 'ruby18.y' - end - - def test_ruby22 - assert_compile 'ruby22.y', [], timeout: 60 - assert_debugfile 'ruby22.y', [] - assert_output_unchanged 'ruby22.y' - end - - # .y file from csspool gem - - def test_csspool - assert_compile 'csspool.y' - assert_debugfile 'csspool.y', [5, 3] - assert_output_unchanged 'csspool.y' - end - - # .y file from opal gem - - def test_opal - assert_compile 'opal.y', [], timeout: 60 - assert_debugfile 'opal.y', [] - assert_output_unchanged 'opal.y' - end - - # .y file from journey gem - - def test_journey - assert_compile 'journey.y' - assert_debugfile 'journey.y', [] - assert_output_unchanged 'journey.y' - end - - # .y file from nokogiri gem - - def test_nokogiri_css - assert_compile 'nokogiri-css.y' - assert_debugfile 'nokogiri-css.y', [0, 1] - assert_output_unchanged 'nokogiri-css.y' - end - - # .y file from edtf-ruby gem - - def test_edtf - assert_compile 'edtf.y' - assert_debugfile 'edtf.y', [0, 0, 0, 0, 0] - assert_output_unchanged 'edtf.y' - end - - # .y file from namae gem - - def test_namae - assert_compile 'namae.y' - assert_debugfile 'namae.y', [0, 0, 0, 0, 0] - assert_output_unchanged 'namae.y' - end - - # .y file from liquor gem - - def test_liquor - assert_compile 'liquor.y' - assert_debugfile 'liquor.y', [0, 0, 0, 0, 15] - assert_output_unchanged 'liquor.y' - end - - # .y file from nasl gem - - def test_nasl - assert_compile 'nasl.y' - assert_debugfile 'nasl.y', [0, 0, 0, 0, 1] - assert_output_unchanged 'nasl.y' - end - - # .y file from riml gem - - def test_riml - assert_compile 'riml.y' - assert_debugfile 'riml.y', [289, 0, 0, 0] - assert_output_unchanged 'riml.y' - end - - # .y file from ruby-php-serialization gem - - def test_php_serialization - assert_compile 'php_serialization.y' - assert_debugfile 'php_serialization.y', [0, 0, 0, 0] - assert_output_unchanged 'php_serialization.y' - end - - # .y file from huia language implementation - - def test_huia - assert_compile 'huia.y' - assert_debugfile 'huia.y', [285, 0, 0, 0] - assert_output_unchanged 'huia.y' - end - - # .y file from cast gem - - def test_cast - assert_compile 'cast.y' - assert_debugfile 'cast.y', [0, 0, 0, 0, 1] - assert_output_unchanged 'cast.y' - end - - # .y file from cadenza gem - - def test_cadenza - assert_compile 'cadenza.y' - assert_debugfile 'cadenza.y', [0, 0, 0, 0, 37] - assert_output_unchanged 'cadenza.y' - end - - # .y file from mediacloth gem - - def test_mediacloth - assert_compile 'mediacloth.y' - assert_debugfile 'mediacloth.y', [0, 0, 0, 0] - assert_output_unchanged 'mediacloth.y' - end - - # .y file from twowaysql gem - - def test_twowaysql - assert_compile 'twowaysql.y' - assert_debugfile 'twowaysql.y', [4, 0, 0, 0] - assert_output_unchanged 'twowaysql.y' - end - - # .y file from machete gem - - def test_machete - assert_compile 'machete.y' - assert_debugfile 'machete.y', [0, 0, 0, 0] - assert_output_unchanged 'machete.y' - end - - # .y file from mof gem - - def test_mof - assert_compile 'mof.y' - assert_debugfile 'mof.y', [7, 4, 0, 0] - assert_output_unchanged 'mof.y' - end - - # .y file from tp_plus gem - - def test_tp_plus - assert_compile 'tp_plus.y' - assert_debugfile 'tp_plus.y', [21, 0, 0, 0] - assert_output_unchanged 'tp_plus.y' - end - - def test_ifelse - omit if RUBY_PLATFORM =~ /java/ - - stderr = nil - racc "-o#{@TAB_DIR}/ifelse", "#{ASSET_DIR}/ifelse.y", stdout_filter: ->(s) { stderr = s } - stderr = stderr.lines[1..-1].join if RUBY_PLATFORM.match?(/java/) - assert_equal(<<~STDERR, stderr) - 1 useless nonterminals: - dummy - 2 useless rules: - #4 (dummy) - #5 (dummy) - 1 shift/reduce conflicts - Turn on logging with "-v" and check ".output" file for details - STDERR - end - end -end diff --git a/test/racc/test_scan_y.rb b/test/racc/test_scan_y.rb deleted file mode 100644 index fcd7e53c99..0000000000 --- a/test/racc/test_scan_y.rb +++ /dev/null @@ -1,52 +0,0 @@ -require File.expand_path(File.join(__dir__, 'case')) - -module Racc - class TestScanY < TestCase - def setup - super - file = File.join(ASSET_DIR, 'scan.y') - @debug_flags = Racc::DebugFlags.parse_option_string('o') - parser = Racc::GrammarFileParser.new(@debug_flags) - @result = parser.parse(File.read(file), File.basename(file)) - @states = Racc::States.new(@result.grammar).nfa - @states.dfa - end - - def test_compile - generator = Racc::ParserFileGenerator.new(@states, @result.params.dup) - - # it generates valid ruby - assert Module.new { - self.class_eval(generator.generate_parser) - } - - grammar = @states.grammar - - assert_equal 0, @states.n_srconflicts - assert_equal 0, @states.n_rrconflicts - assert_equal 0, grammar.n_useless_nonterminals - assert_equal 0, grammar.n_useless_rules - assert_nil grammar.n_expected_srconflicts - end - - def test_compile_line_convert - params = @result.params.dup - params.convert_line_all = true - - generator = Racc::ParserFileGenerator.new(@states, @result.params.dup) - - # it generates valid ruby - assert Module.new { - self.class_eval(generator.generate_parser) - } - - grammar = @states.grammar - - assert_equal 0, @states.n_srconflicts - assert_equal 0, @states.n_rrconflicts - assert_equal 0, grammar.n_useless_nonterminals - assert_equal 0, grammar.n_useless_rules - assert_nil grammar.n_expected_srconflicts - end - end -end diff --git a/test/racc/testscanner.rb b/test/racc/testscanner.rb deleted file mode 100644 index d7877511ec..0000000000 --- a/test/racc/testscanner.rb +++ /dev/null @@ -1,51 +0,0 @@ -# -# racc scanner tester -# - -require 'racc/raccs' - - -class ScanError < StandardError; end - -def testdata( dir, argv ) - if argv.empty? then - Dir.glob( dir + '/*' ) - - Dir.glob( dir + '/*.swp' ) - - [ dir + '/CVS' ] - else - argv.collect {|i| dir + '/' + i } - end -end - - -if ARGV.delete '--print' then - $raccs_print_type = true - printonly = true -else - printonly = false -end - -testdata( File.dirname($0) + '/scandata', ARGV ).each do |file| - $stderr.print File.basename(file) + ': ' - begin - ok = File.read(file) - s = Racc::GrammarFileScanner.new( ok ) - sym, (val, _lineno) = s.scan - if printonly then - $stderr.puts - $stderr.puts val - next - end - - val = '{' + val + "}\n" - sym == :ACTION or raise ScanError, 'is not action!' - val == ok or raise ScanError, "\n>>>\n#{ok}----\n#{val}<<<" - - $stderr.puts 'ok' - rescue => err - $stderr.puts 'fail (' + err.type.to_s + ')' - $stderr.puts err.message - $stderr.puts err.backtrace - $stderr.puts - end -end |