From aa93d3c38793e71766291d34d113be4b1b0bba13 Mon Sep 17 00:00:00 2001 From: Jeremy Ashkenas Date: Tue, 26 Jan 2010 20:59:52 -0500 Subject: [PATCH] first draft of whitespace-sensitive method calls and indexes. --- lib/coffee_script/grammar.y | 19 +- lib/coffee_script/lexer.rb | 9 + lib/coffee_script/parser.rb | 2762 +++++++++++++------------- lib/coffee_script/rewriter.rb | 37 +- test/fixtures/generation/each.tokens | 2 +- test/unit/test_lexer.rb | 4 +- 6 files changed, 1445 insertions(+), 1388 deletions(-) diff --git a/lib/coffee_script/grammar.y b/lib/coffee_script/grammar.y index 06f8f984..72a65504 100644 --- a/lib/coffee_script/grammar.y +++ b/lib/coffee_script/grammar.y @@ -6,6 +6,7 @@ token NUMBER STRING REGEX token TRUE FALSE YES NO ON OFF token IDENTIFIER PROPERTY_ACCESS PROTOTYPE_ACCESS SOAK_ACCESS token CODE PARAM_START PARAM PARAM_END NEW RETURN +token CALL_START CALL_END INDEX_START INDEX_END token TRY CATCH FINALLY THROW token BREAK CONTINUE token FOR IN OF BY WHEN WHILE @@ -246,12 +247,12 @@ rule | PROTOTYPE_ACCESS IDENTIFIER { result = AccessorNode.new(val[1], :prototype) } | SOAK_ACCESS IDENTIFIER { result = AccessorNode.new(val[1], :soak) } | Index { result = val[0] } - | Range { result = SliceNode.new(val[0]) } + | Slice { result = SliceNode.new(val[0]) } ; # Indexing into an object or array. Index: - "[" Expression "]" { result = IndexNode.new(val[1]) } + INDEX_START Expression INDEX_END { result = IndexNode.new(val[1]) } ; # An object literal. @@ -290,13 +291,13 @@ rule # The list of arguments to a function invocation. Arguments: - "(" ArgList ")" { result = val[1] } - | "(" ArgList ")" Code { result = val[1] << val[3] } + CALL_START ArgList CALL_END { result = val[1] } + | CALL_START ArgList CALL_END Code { result = val[1] << val[3] } ; # Calling super. Super: - SUPER "(" ArgList ")" { result = CallNode.new(Value.new('super'), val[2]) } + SUPER CALL_START ArgList CALL_END { result = CallNode.new(Value.new('super'), val[2]) } ; # The range literal. @@ -307,6 +308,14 @@ rule "." "." "." Expression "]" { result = RangeNode.new(val[1], val[5], true) } ; + # The slice literal. + Slice: + INDEX_START Expression "." "." + Expression INDEX_END { result = RangeNode.new(val[1], val[4]) } + | INDEX_START Expression "." "." "." + Expression INDEX_END { result = RangeNode.new(val[1], val[5], true) } + ; + # The array literal. Array: "[" ArgList "]" { result = ArrayNode.new(val[1]) } diff --git a/lib/coffee_script/lexer.rb b/lib/coffee_script/lexer.rb index dfda26a9..ecb56021 100644 --- a/lib/coffee_script/lexer.rb +++ b/lib/coffee_script/lexer.rb @@ -50,6 +50,9 @@ module CoffeeScript :FALSE, :NULL, :TRUE ] + # Tokens which could legitimately be invoked or indexed. + CALLABLE = [:IDENTIFIER, :SUPER, ')', ']', '}', :STRING] + # Scan by attempting to match tokens one character at a time. Slow and steady. def tokenize(code) @code = code.chomp # Cleanup code by remove extra line breaks @@ -58,6 +61,7 @@ module CoffeeScript @indent = 0 # The current indent level. @indents = [] # The stack of all indent levels we are currently within. @tokens = [] # Collection of all parsed tokens in the form [:TOKEN_TYPE, value] + @spaced = nil # The last value that has a space following it. while @i < @code.length @chunk = @code[@i..-1] extract_next_token @@ -190,6 +194,7 @@ module CoffeeScript # Matches and consumes non-meaningful whitespace. def whitespace_token return false unless whitespace = @chunk[WHITESPACE, 1] + @spaced = last_value @i += whitespace.length end @@ -214,6 +219,10 @@ module CoffeeScript tag_parameters if value && value.match(CODE) value ||= @chunk[0,1] tag = value.match(ASSIGNMENT) ? :ASSIGN : value + if !@spaced.equal?(last_value) && CALLABLE.include?(last_tag) + tag = :CALL_START if value == '(' + tag = :INDEX_START if value == '[' + end token(tag, value) @i += value.length end diff --git a/lib/coffee_script/parser.rb b/lib/coffee_script/parser.rb index 68ae61f8..a88d4570 100644 --- a/lib/coffee_script/parser.rb +++ b/lib/coffee_script/parser.rb @@ -10,7 +10,7 @@ module CoffeeScript class Parser < Racc::Parser -module_eval(<<'...end grammar.y/module_eval...', 'grammar.y', 450) +module_eval(<<'...end grammar.y/module_eval...', 'grammar.y', 459) # Lex and parse a CoffeeScript. def parse(code) # Uncomment the following line to enable grammar debugging, in combination @@ -34,322 +34,313 @@ module_eval(<<'...end grammar.y/module_eval...', 'grammar.y', 450) ##### State transition tables begin ### clist = [ -'119,37,127,21,24,25,29,34,39,44,48,51,55,132,202,203,284,284,255,-181', -'-181,172,276,277,27,27,35,40,142,146,83,85,86,120,195,196,37,135,173', -'132,1,19,75,132,32,115,118,132,308,-181,-181,56,59,115,118,123,126,130', -'134,138,141,145,149,152,114,117,122,125,129,133,137,140,144,148,151', -'113,116,121,124,128,131,136,139,143,147,150,112,83,85,86,83,85,86,2', -'171,8,7,15,194,21,24,25,29,34,39,44,48,51,55,7,87,56,59,1,80,174,14', -'18,22,95,174,30,35,40,42,276,277,94,182,61,66,286,3,37,9,11,132,19,201', -'27,32,37,-181,-181,95,50,53,57,62,70,72,37,94,37,37,17,64,68,27,64,68', -'176,132,177,64,68,176,87,115,118,87,80,269,198,80,83,85,86,64,68,83', -'85,86,27,56,59,83,85,86,2,154,8,7,15,263,21,24,25,29,34,39,44,48,51', -'55,64,68,161,200,1,64,68,14,18,22,132,298,30,35,40,42,-181,-181,174', -'95,61,66,260,3,270,9,11,94,19,37,27,32,77,64,68,189,50,53,57,62,70,72', -'64,68,280,284,17,64,68,159,87,202,203,27,80,87,299,272,27,80,91,87,64', -'68,176,80,64,68,189,183,261,132,190,95,104,56,59,-181,-181,37,2,94,8', -'7,15,97,21,24,25,29,34,39,44,48,51,55,273,192,37,95,1,191,110,14,18', -'22,234,94,30,35,40,42,27,154,91,310,61,66,184,3,75,9,11,132,19,110,27', -'32,,115,118,,50,53,57,62,70,72,27,132,,,17,,,115,118,123,126,130,134', -'138,141,145,149,152,114,117,122,125,129,133,137,140,144,148,,132,,,', -'56,59,-181,-181,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14', -'18,22,132,,30,35,40,42,-181,-181,,,61,66,,3,,9,11,,19,,27,32,,,,,50', -'53,57,62,70,72,132,,,,17,,115,118,123,126,130,134,138,141,145,149,152', -'114,117,122,125,129,133,137,140,144,148,,,,,,,56,59,,,,2,,8,7,15,,21', -'24,25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66', -',3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72,132,,,,17,,115,118,123,126', -'130,134,138,141,145,149,152,114,117,122,125,129,133,137,140,144,148', -',,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18', -'22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72', -'132,,,,17,,115,118,123,126,130,134,138,141,145,149,152,114,117,122,125', -'129,133,137,140,144,148,,,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39', -'44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27', -'32,,,,,50,53,57,62,70,72,132,,,,17,,115,118,123,126,130,134,138,141', -'145,149,152,114,117,122,125,129,133,137,140,144,148,,,,,,,56,59,,,,2', -',8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42', -',,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72,132,,,,17,,115,118', -'123,126,130,134,138,141,145,149,152,114,117,122,125,129,133,137,140', -'144,148,,,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,', -'1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57', -'62,70,72,132,,,,17,,115,118,123,126,130,134,138,141,145,149,152,114', -'117,122,125,129,133,137,140,144,148,,,,,,,56,59,,,,2,,8,7,15,,21,24', -'25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3', -',9,11,,19,,27,32,,,,,50,53,57,62,70,72,132,,,,17,,115,118,123,126,130', -'134,138,141,145,149,152,114,117,122,125,129,133,137,140,144,148,,,,', -',,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18,22', -',,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72,132', -',,,17,,115,118,123,126,130,134,138,141,145,149,152,114,117,132,,,,,', -'115,118,123,126,130,134,138,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44', -'48,51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32', -',,,,50,53,57,62,70,72,132,,,,17,,115,118,123,126,130,134,138,141,145', -'149,152,114,117,132,,,,,,115,118,123,126,130,134,138,,56,59,,,,2,,8', -'7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42,', -',,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72,132,,,,17,,115,118', -'123,126,130,134,138,141,145,149,152,114,117,132,,,,,,115,118,123,126', -'130,134,138,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1', -',,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57', -'62,70,72,132,,,,17,,115,118,123,126,130,134,138,141,145,149,152,114', -'117,132,,,,,,115,118,123,126,130,,,,56,59,,,,2,,8,7,15,,21,24,25,29', -'34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11', -',19,,27,32,,,,,50,53,57,62,70,72,132,,,,17,,115,118,123,126,130,134', -'138,141,145,149,132,,,,,,115,118,123,126,130,134,138,141,145,149,,56', -'59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30', -'35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72,132,,,', -'17,,115,118,123,126,130,134,138,141,145,149,132,,,,,,115,118,123,126', -'130,,,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1,,', -'14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,,108,,,50,53,57', -'62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,,8,7,15,,21,24', -'25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3', -',9,11,,19,,27,32,,,,,50,53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,', -',,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18', -'22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72', -',,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34', -'39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19', -',27,32,,,,,50,53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59', -',,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35', -'40,42,,,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72,,,,,17,,,', -',,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48', -'51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,', -',,,50,53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,', -'8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42', -',,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72,,,,,17,,,,,,,,,', -',,,,,,,,,,,,,,,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55', -',,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,,,,,50', -'53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,,8,7,15', -',21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61', -'66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,', -',,,,,,,,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1', -',,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57', -'62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,,8,7,15,,21,24', -'25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3', -',9,11,,19,,27,32,,,,,50,53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,', -',,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18', -'22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72', -',,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34', -'39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19', -',27,32,,,,,50,53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59', -',,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35', -'40,42,,,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72,,,,,17,,,', -',,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48', -'51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,', -',,,50,53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,', -'8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42', -',,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72,,,,,17,,,,,,,,,', -',,,,,,,,,,,,,,290,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48,51', -'55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,,,,', -'50,53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,,8,7', -'15,,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,', -',61,66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72,,,,,17,,,,,,,,,,,,', -',,,,,,,,,,,,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55,,', -',,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53', -'57,62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,,8,7,15,,21', -'24,25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66', -',3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,', -',,,,,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14', -'18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70', -'72,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,,8,7,15,,21,24,25,29', -'34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11', -',19,,27,32,77,,,,50,53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,', -',,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18,22', -',,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72,,', -',,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34', -'39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19', -',27,32,,,,,50,53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59', -',,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35', -'40,42,,,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72,,,,,17,,,', -',,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48', -'51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,', -',,,50,53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,', -'8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42', -',,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72,,,,,17,,,,,,,,,', -',,,,,,,,,,,,,,,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55', -',,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,,,,,50', -'53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,,8,7,15', -',21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61', -'66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,', -',,,,,,,,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1', -',,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57', -'62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,,8,7,15,,21,24', -'25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3', -',9,11,,19,,27,32,,,,,50,53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,', -',,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18', -'22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72', -',,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34', -'39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19', -',27,32,77,,,,50,53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56', -'59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30', -'35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72,,,,,17', -',,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44', -'48,51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32', -',,,,50,53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2', -',8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42', -',,,,61,66,,3,,9,11,,19,,27,32,37,,,,50,53,57,62,70,72,,,,,17,,,,,,,', -',,,,,,,,,,,,,,,,,,,,,56,59,64,68,,2,,8,7,15,,21,24,25,29,34,39,44,48', -'51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,', -',,,50,53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,', -'8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42', -',,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72,,,,,17,,,,,,,,,', -',,,,,,,,,,,,,,,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55', -',,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,,,,,50', -'53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,,8,7,15', -',21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61', -'66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,', -',,,,,,,,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1', -',,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,258,,,,50,53', -'57,62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59,64,68,,2,,8,7,15', -',21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61', -'66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,', -',,,,,,,,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1', -',,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57', -'62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,,8,7,15,,21,24', -'25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3', -',9,11,,19,,27,32,,,,,50,53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,', -',,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18', -'22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72', -',,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34', -'39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19', -',27,32,,,,,50,53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59', -',,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35', -'40,42,,,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72,,,,,17,,,', -',,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48', -'51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,', -',,,50,53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,', -'8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42', -',,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72,,,,,17,,,,,,,,,', -',,,,,,,,,,,,,,,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55', -',,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,,,,,50', -'53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,,8,7,15', -',21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61', -'66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,', -',,,,,,,,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1', -',,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57', -'62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,,8,7,15,,21,24', -'25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3', -',9,11,,19,,27,32,,,,,50,53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,', -',,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18', -'22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72', -',,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59,,,,2,,8,7,15,,21,24,25,29,34', -'39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,42,,,,,61,66,,3,,9,11,,19', -',27,32,,,,,50,53,57,62,70,72,,,,,17,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56,59', -',,,2,,8,7,15,,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35', -'40,42,,,,,61,66,,3,,9,11,,19,,27,32,119,,127,,50,53,57,62,70,72,,,,', -'17,,,,,,,,,,,,,,142,146,,,,120,,,,135,,,,,,56,59,,,132,2,,8,,15,115', -'118,123,126,130,134,138,141,145,149,152,114,117,122,125,129,133,137', -'140,144,148,151,113,116,121,124,128,131,136,139,143,147,150,112,,,,', -',,,309,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30,35,40,,,', -',,,66,,3,,9,11,,19,,27,32,,,,,50,53,57,62,70,72,,,,,17,,,,,,,,,,,,,', -',,,,,,,,,,,,,,,56,59,,,,2,,8,,15,21,24,25,29,34,39,44,48,51,55,,,,,1', -',,14,18,22,,,30,35,40,42,,,,,,66,,3,,9,11,,19,,27,32,,,,,50,53,57,62', -'70,72,,,,,17,,,,21,24,25,29,34,39,44,48,51,55,,,,,1,,,14,18,22,,,30', -'35,40,56,59,,,,2,66,8,3,15,9,11,,19,,27,32,119,,127,,50,53,57,62,21', -'24,25,29,34,39,44,48,51,55,,,,,,,,,,,142,146,,35,40,120,,,,135,,,,,', -'56,59,,19,132,2,32,8,,15,115,118,123,126,130,134,138,141,145,149,152', -'114,117,122,125,129,133,137,140,144,148,151,113,116,121,124,128,131', -'136,139,143,147,150,112,119,,127,,,,,303,,,,2,,8,,15,,,,,,,,,,,,,142', -'146,,,,120,,,,135,,,,,,,,,,132,,,,,,115,118,123,126,130,134,138,141', -'145,149,152,114,117,122,125,129,133,137,140,144,148,151,113,116,121', -'124,128,131,136,139,179,147,150,112,119,,127,,,,,262,,,,,,,,,,,,,,,', -',,,,,142,146,,,,120,,,,135,,,,,,,,,,132,,,,,,115,118,123,126,130,134', -'138,141,145,149,152,114,117,122,125,129,133,137,140,144,148,151,113', -'116,121,124,128,131,136,139,179,147,150,112,119,,127,,,,,,,,,,,,,,,', -',,,,,,,,,,142,146,,,,120,,,,135,,,,,,,,37,,132,,,,,,115,118,123,126', -'130,134,138,141,145,149,152,114,117,122,125,129,133,137,140,144,148', -'151,113,116,121,124,128,131,136,139,143,147,150,112,119,,127,,,,,,,', -',,,,,,,,,,,,,,,,,,142,146,,,,120,,,,135,,,,,,,,,,132,,,,,,115,118,123', -'126,130,134,138,141,145,149,152,114,117,122,125,129,133,137,140,144', -'148,151,113,116,121,124,128,131,136,139,143,147,150,112,119,,127,,,', -',,,,,,,,,,,,,,,,,,,,,,142,146,,,,120,,,,135,,,,,,,,,,132,,,,,,115,118', -'123,126,130,134,138,141,145,149,152,114,117,122,125,129,133,137,140', -'144,148,151,113,116,121,124,128,131,136,139,143,147,150,112,119,,127', -',,,,,,,,,,,,,,,,,,,,,,,,,142,146,,,,120,,,,135,,,,,,,,,,132,,,,,,115', -'118,123,126,130,134,138,141,145,149,152,114,117,122,125,129,133,137', -'140,144,148,151,113,116,121,124,128,131,136,139,143,147,150,112,119', -',127,,,,,,,,,,,,,,,,,,,,,,,,,,142,146,,,,120,,,,135,,,,,,,,,,132,,,', -',,115,118,123,126,130,134,138,141,145,149,152,114,117,122,125,129,133', -'137,140,144,148,151,113,116,121,124,128,131,136,139,143,147,150,112', -'119,,127,,,,,,,,,,,,,,,,,,,,,,,,,,142,146,,,,120,,,,135,,,,,,,,,,132', -',,,,,115,118,123,126,130,134,138,141,145,149,152,114,117,122,125,129', -'133,137,140,144,148,151,113,116,121,124,128,131,136,139,143,147,150', -'112,119,,127,,,,,,,,,,,,,,,,,,,,,,,,,,142,146,,,,120,,,,135,,,,,,,,', -',132,,,,,,115,118,123,126,130,134,138,141,145,149,152,114,117,122,125', -'129,133,137,140,144,148,151,113,116,121,124,128,131,136,139,143,147', -'150,112,119,,127,,,,,,,,,,,,,,,,,,,,,,,,,,142,146,,,,120,,,,135,,,,', -',,,,,132,,,,,,115,118,123,126,130,134,138,141,145,149,152,114,117,122', -'125,129,133,137,140,144,148,151,113,116,121,124,128,131,136,139,143', -'147,150,112,119,,127,,,,,,,,,,,,,,,,,,,,,,,,,,142,146,,,,120,,,,135', -',,,,,,,,,132,,,,,,115,118,123,126,130,134,138,141,145,149,152,114,117', -'122,125,129,133,137,140,144,148,151,113,116,121,124,128,131,136,139', -'143,147,150,112,119,,127,,,,,,,,,,,,,,,,,,,,,,,,,,142,146,,,,120,,,', -'135,,,,,,,,,,132,,,,,,115,118,123,126,130,134,138,141,145,149,152,114', -'117,122,125,129,133,137,140,144,148,151,113,116,121,124,128,131,136', -'139,143,147,150,112,119,,127,,,,,,,,,,,,,,,,,,,,,,,,,,142,146,,,,120', -',,,135,,,,,,,,,,132,,,,,,115,118,123,126,130,134,138,141,145,149,152', -'114,117,122,125,129,133,137,140,144,148,151,113,116,121,124,128,131', -'136,139,143,147,150,112,119,,127,,,,,,,,,,,,,,,,,,,,,,,,,,142,146,,', -',120,,,,135,,,,,,,,,,132,,,,,,115,118,123,126,130,134,138,141,145,149', -'152,114,117,122,125,129,133,137,140,144,148,151,113,116,121,124,128', -'131,136,139,143,147,150,112,119,,127,,,,,,,,,,,,,,,,,,,,,,,,,,142,146', -',,,120,,,,135,,,,,,,,,,132,,,,,,115,118,123,126,130,134,138,141,145', -'149,152,114,117,122,125,129,133,137,140,144,148,151,113,116,121,124', -'128,131,136,139,143,147,150,112,119,,127,,,,,,,,,,,,,,,,,,,,,,,,,,142', -'146,,,,120,,,,135,,,,,,,,,,132,,,,,,115,118,123,126,130,134,138,141', -'145,149,152,114,117,122,125,129,133,137,140,144,148,151,113,116,121', -'124,128,131,136,139,143,147,150,112,119,,127,,,,,,,,,,,,,,,,,,,,,,,', -',,142,146,,,,120,,,,135,,,,,,,,252,,132,,,,,,115,118,123,126,130,134', -'138,141,145,149,152,114,117,122,125,129,133,137,140,144,148,151,113', -'116,121,124,128,131,136,139,143,147,150,112,119,,127,,,,,,,,,,,,,,,', -',,,,,,,,,,142,146,,,,120,,,,135,,,,,,,,,,132,,,,,,115,118,123,126,130', -'134,138,141,145,149,152,114,117,122,125,129,133,137,140,144,148,151', -'113,116,121,124,128,131,136,139,143,147,150,112,119,,127,,,,,,,,,,,', -',,,,,,,,,,,,,,142,146,,,,120,,,,135,,,,,,,,37,,132,,,,,,115,118,123', -'126,130,134,138,141,145,149,152,114,117,122,125,129,133,137,140,144', -'148,151,113,116,121,124,128,131,136,139,143,147,150,112,119,,127,,,', -',,,,,,,,,,,,,,,,,,,,,,142,146,,,,120,,,,135,,,,,,,,,,132,,,,,,115,118', -'123,126,130,134,138,141,145,149,152,114,117,122,125,129,133,137,140', -'144,148,151,113,116,121,124,128,131,136,139,143,147,150,112,142,146', -',,,,,,,135,,,,,,,,,,132,,,,,,115,118,123,126,130,134,138,141,145,149', -'152,114,117,122,125,129,133,137,140,144,148,151,113,116,121,124,128', -'131,136,139,143,147,150,112,142,146,,,,,,,,135,,,,,,,,,,132,,,,,,115', -'118,123,126,130,134,138,141,145,149,152,114,117,122,125,129,133,137', -'140,144,148,151,113,116,121,124,128,131,136,139,143,147,150,112,142', -'146,,,,,,,,135,,,,,,,,,,132,,,,,,115,118,123,126,130,134,138,141,145', -'149,152,114,117,122,125,129,133,137,140,144,148,151,113,116,121,124', -'128,131,136,139,143,142,146,,,,,,,,135,,,,,,,,,,132,,,,,,115,118,123', -'126,130,134,138,141,145,149,152,114,117,122,125,129,133,137,140,144', -'148,151,113,116,121,124,128,131,136,139,143,142,146,,,,,,,,135,,,,,', -',,,,132,,,,,,115,118,123,126,130,134,138,141,145,149,152,114,117,122', -'125,129,133,137,140,144,148,151,113,116,121,124,128,131,136,139,143', -'142,146,,,,,,,,135,,,,,,,,,,132,,,,,,115,118,123,126,130,134,138,141', -'145,149,152,114,117,122,125,129,133,137,140,144,148,151,113,116,121', -'124,128,131,136,139,143,146,,,,,,,,135,,,,,,,,,,132,,,,,,115,118,123', -'126,130,134,138,141,145,149,152,114,117,122,125,129,133,137,140,144', -'148,151,113,116,121,124,128,131,136,139,143,146,,,,,,,,135,,,,,,,,,', -'132,,,,,,115,118,123,126,130,134,138,141,145,149,152,114,117,122,125', -'129,133,137,140,144,148,151,113,116,121,124,128,131,136,139,143,146', -',,,,,,,135,,,,,,,,,,132,,,,,,115,118,123,126,130,134,138,141,145,149', -'152,114,117,122,125,129,133,137,140,144,148,151,113,116,121,124,128', -'131,136,139,143,146,,,,,,,,135,,,,,,,,,,132,,,,,,115,118,123,126,130', -'134,138,141,145,149,152,114,117,122,125,129,133,137,140,144,148,151', -'113,116,121,124,128,131,136,139,143,146,,,,,,,,135,,,,,,,,,,132,,,,', -',115,118,123,126,130,134,138,141,145,149,152,114,117,122,125,129,133', -'137,140,144,148,151,113,116,121,124,128,131,136,139,143,135,,,,,,,,', -',132,,,,,,115,118,123,126,130,134,138,141,145,149,152,114,117,122,125', -'129,133,137,140,144,148,151,113,116,121,124,128,131,136,139,135,,,,', -',,,,,132,,,,,,115,118,123,126,130,134,138,141,145,149,152,114,117,122', -'125,129,133,137,140,144,148,151,113,116,121,124,128,131,136,139,135', -',,,,,,,,,132,,,,,,115,118,123,126,130,134,138,141,145,149,152,114,117', -'122,125,129,133,137,140,144,148,151,113,116,121,124,128,131,136,139', -'132,,,,,,115,118,123,126,130,134,138,141,145,149,152,114,117,122,125', -'129,133,137,140,144,148,151,113,116,121,124,128,131,136,139,132,,,,', -',115,118,123,126,130,134,138,141,145,149,152,114,117,122,125,129,133', -'137,140,144,148,151,113,116,121,124,128,131,136,139,132,,,,,,115,118', -'123,126,130,134,138,141,145,149,152,114,117,122,125,129,133,137,140', -'144,148,151,113,116,121,124,128,131,136,139,132,,,,,,115,118,123,126', -'130,134,138,141,145,149,152,114,117,122,125,129,133,137,140,144,148', -'151,113,116,121,124,128,131,136,139,132,,,,,,115,118,123,126,130,134', -'138,141,145,149,152,114,117,122,125,129,133,137,140,144,148,151,113', -'116,121,124,128,131,136,139' ] - racc_action_table = arr = Array.new(10011, nil) +'125,11,133,26,28,31,37,39,43,48,53,58,60,88,90,92,200,1,172,259,19,23', +'86,278,87,56,40,46,259,49,54,61,121,126,69,2,46,141,12,1,20,155,30,32', +'160,41,276,46,51,56,56,152,275,68,71,4,9,137,140,144,147,150,154,158', +'120,124,129,132,136,139,143,146,149,153,157,119,123,128,131,135,138', +'142,145,148,151,156,118,122,127,130,134,162,69,2,273,171,308,24,173', +'29,11,34,196,26,28,31,37,39,43,48,53,58,60,56,69,2,202,1,7,13,19,23', +'7,13,56,98,40,190,183,49,54,61,62,96,295,265,289,6,12,184,20,165,30', +'32,98,41,285,46,51,271,255,260,96,68,71,4,9,15,18,98,7,13,274,35,7,13', +'56,96,46,281,282,7,13,192,259,204,205,189,190,7,13,188,46,56,152,291', +'182,46,74,190,-183,-183,69,2,7,13,56,24,116,29,11,34,46,26,28,31,37', +'39,43,48,53,58,60,281,282,7,13,1,180,98,19,23,7,13,192,287,40,96,98', +'49,54,61,62,7,13,192,96,6,12,110,20,165,30,32,203,41,313,46,51,56,88', +'90,92,68,71,4,9,15,18,86,152,87,46,35,99,56,137,140,144,147,150,46,106', +'99,11,204,205,26,28,31,37,39,43,48,53,58,60,88,90,92,181,1,69,2,19,23', +'86,24,87,29,40,34,152,49,54,61,62,116,137,140,74,6,12,211,20,,30,32', +'152,41,,46,51,,137,140,,68,71,4,9,15,18,152,7,13,188,35,186,137,140', +'144,147,150,154,158,198,199,11,7,13,26,28,31,37,39,43,48,53,58,60,88', +'90,92,,1,69,2,19,23,86,24,87,29,40,34,152,49,54,61,62,,-183,-183,,6', +'12,,20,,30,32,152,41,,46,51,,-183,-183,,68,71,4,9,15,18,152,,,,35,,137', +'140,144,147,150,154,158,,,11,,,26,28,31,37,39,43,48,53,58,60,88,90,92', +',1,69,2,19,23,86,24,87,29,40,34,152,49,54,61,62,,-183,-183,,6,12,,20', +',30,32,152,41,,46,51,,-183,-183,,68,71,4,9,15,18,152,,,,35,,137,140', +'144,147,150,154,158,,,11,,,26,28,31,37,39,43,48,53,58,60,88,90,92,,1', +'69,2,19,23,86,24,87,29,40,34,152,49,54,61,62,,-183,-183,,6,12,,20,,30', +'32,152,41,,46,51,,137,140,,68,71,4,9,15,18,152,,,,35,152,137,140,144', +'147,150,-183,-183,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19', +'23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68', +'71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,', +',1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46', +'51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53', +'58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32', +',41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39', +'43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12', +',20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28', +'31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62', +',,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,', +'11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49', +'54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,', +',,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29', +'40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18', +',,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23', +',24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,103,,,,68', +'71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,', +',1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46', +'51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53', +'58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32', +',41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39', +'43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12', +',20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28', +'31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62', +',,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,', +'11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49', +'54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,', +',,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29', +'40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18', +',,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23', +',24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71', +'4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1', +'69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51', +',,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58', +'60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,', +'41,,46,51,,114,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39', +'43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12', +',20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28', +'31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62', +',,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,', +'11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49', +'54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,', +',,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29', +'40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18', +',,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,310,,,,1,69,2,19', +'23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68', +'71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,', +',1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46', +'51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53', +'58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32', +',41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39', +'43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12', +',20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28', +'31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62', +',,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,', +'11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49', +'54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,', +',,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,300,,,,1,69,2,19,23,,24', +',29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9', +'15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2', +'19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,', +'68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60', +',,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41', +',46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48', +'53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30', +'32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37', +'39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6', +'12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26', +'28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61', +'62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,', +',,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34', +',49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,', +'35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24', +',29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9', +'15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2', +'19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,', +'68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60', +',,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41', +',46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48', +'53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30', +'32,,41,,46,51,103,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31', +'37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,', +',6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11', +',,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54', +'61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,', +',,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40', +'34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,', +',,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23', +',24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71', +'4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1', +'69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51', +',,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58', +'60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,', +'41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43', +'48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20', +',30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31', +'37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,', +',6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11', +',,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54', +'61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,', +',,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40', +'34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,', +',,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23', +',24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71', +'4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1', +'69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51', +',,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58', +'60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,', +'41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43', +'48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20', +',30,32,,41,,46,51,103,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28', +'31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62', +',,,,6,12,,20,,30,32,,41,,46,51,56,,,,68,71,4,9,15,18,152,,,,35,,137', +'140,144,147,150,154,158,120,124,129,132,136,139,143,146,149,153,157', +'119,123,128,,,,,,,69,2,7,13,,24,,29,11,34,,26,28,31,37,39,43,48,53,58', +'60,,,,,1,,,19,23,,,,,40,,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51', +',,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58', +'60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,', +'41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43', +'48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20', +',30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31', +'37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,', +',6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11', +',,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54', +'61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,', +',,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40', +'34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,', +',,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23', +',24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71', +'4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1', +'69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51', +',,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58', +'60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,', +'41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31,37,39,43', +'48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,,,6,12,,20', +',30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11,,,26,28,31', +'37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61,62,,,', +',6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,,,,,,,,11', +',,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54', +'61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,,,,,35,,,,', +',,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40', +'34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15,18,', +',,,35,,,,,,,,,,,11,,,26,28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23', +',24,,29,40,34,,49,54,61,62,,,,,6,12,,20,,30,32,,41,,46,51,125,,133,', +'68,71,4,9,15,18,152,,,,35,,137,140,144,147,150,154,158,120,124,129,132', +'136,139,,,,121,126,,,,141,,,,155,,69,2,,,,24,,29,152,34,,,,,137,140', +'144,147,150,154,158,120,124,129,132,136,139,143,146,149,153,157,119', +'123,128,131,135,138,142,145,148,151,156,118,122,127,130,134,125,,133', +',,,,,,311,,26,28,31,37,39,43,48,53,58,60,,,,,,,,,,,,121,126,,,,141,54', +'61,,155,,,,,,,,,,152,,41,,,51,137,140,144,147,150,154,158,120,124,129', +'132,136,139,143,146,149,153,157,119,123,128,131,135,138,142,145,148', +'151,156,118,122,127,130,134,,,,,,,,,,318,,,,,24,,29,,34,26,28,31,37', +'39,43,48,53,58,60,,,26,28,31,37,39,43,48,53,58,60,,,,,1,54,61,19,23', +',,,,40,,,49,54,61,,41,,,51,,12,,20,,30,32,,41,,46,51,,,,,68,71,4,9,15', +'18,152,,,,35,,137,140,144,147,150,154,158,120,124,129,132,136,139,,', +',,,,,24,,29,,34,,,69,2,,,,24,,29,,34,26,28,31,37,39,43,48,53,58,60,', +',,,1,,,19,23,,,,,40,,,49,54,61,,,,,,,12,,20,,30,32,,41,,46,51,,,,,68', +'71,4,9,15,18,152,,,,35,,137,140,144,147,150,154,158,120,124,129,,,26', +'28,31,37,39,43,48,53,58,60,,,,,1,69,2,19,23,,24,,29,40,34,,49,54,61', +'62,,,,,,12,,20,,30,32,,41,,46,51,125,,133,,68,71,4,9,15,18,152,,,,35', +',137,140,144,147,150,154,158,120,124,129,132,136,139,,,,121,126,,,,141', +',,,155,,69,2,,,,24,,29,152,34,,,,,137,140,144,147,150,154,158,120,124', +'129,132,136,139,143,146,149,153,157,119,123,128,131,135,138,142,145', +'148,151,156,118,122,127,130,134,125,152,133,,,,,137,140,144,147,150', +'154,158,120,124,129,132,136,139,143,146,149,153,157,119,123,128,,,,', +'121,126,,,,141,,,,155,,,,,,,,,,152,,,,,,137,140,144,147,150,154,158', +'120,124,129,132,136,139,143,146,149,153,157,119,123,128,131,135,138', +'142,145,148,151,156,118,122,127,130,134,125,152,133,,,,,137,140,144', +'147,150,154,158,120,124,129,132,136,139,143,146,149,153,157,119,123', +'128,,,,,121,126,,,,141,,,,155,,,,,,,,,,152,,,,,,137,140,144,147,150', +'154,158,120,124,129,132,136,139,143,146,149,153,157,119,123,128,131', +'135,138,142,145,148,151,156,118,122,127,130,134,125,152,133,,,,,137', +'140,144,147,150,154,158,120,124,129,132,136,139,143,146,149,153,157', +'119,123,128,,,,,121,126,,,,141,,,,155,,,,,,,,176,,152,,,,,,137,140,144', +'147,150,154,158,120,124,129,132,136,139,143,146,149,153,157,119,123', +'128,131,135,138,142,145,148,151,156,118,122,127,130,134,125,152,133', +',,,,137,140,144,147,150,154,158,120,124,129,132,136,139,143,146,149', +'153,157,119,123,128,,,,,121,126,,,,141,,,,155,,,,,,,,56,,152,,,,,,137', +'140,144,147,150,154,158,120,124,129,132,136,139,143,146,149,153,157', +'119,123,128,131,135,138,142,145,148,151,156,118,122,127,130,134,125', +'152,133,,,,,137,140,144,147,150,154,158,120,124,129,132,136,139,143', +'146,149,153,157,119,123,128,,,,,121,126,,,,141,,,,155,,,,,,,,56,,152', +',,,,,137,140,144,147,150,154,158,120,124,129,132,136,139,143,146,149', +'153,157,119,123,128,131,135,138,142,145,148,151,156,118,122,127,130', +'134,125,152,133,,,,,137,140,144,147,150,154,158,120,124,129,132,136', +'139,143,146,149,153,157,119,123,128,,,,,121,126,,,,141,,,,155,,,,,,', +',,,152,,,,,,137,140,144,147,150,154,158,120,124,129,132,136,139,143', +'146,149,153,157,119,123,128,131,135,138,142,145,148,151,156,118,122', +'127,130,134,125,152,133,,,,,137,140,144,147,150,154,158,120,124,129', +'132,136,139,143,146,149,153,157,119,123,128,,,,,121,126,,,,141,,,,155', +',,,,,,,,,152,,,,,,137,140,144,147,150,154,158,120,124,129,132,136,139', +'143,146,149,153,157,119,123,128,131,135,138,142,145,148,151,156,118', +'122,127,130,134,125,152,133,,,,,137,140,144,147,150,154,158,120,124', +'129,132,136,139,,,,,,,,,,,,,121,126,,,,141,,,,155,,,,,,,,,,152,,,,,', +'137,140,144,147,150,154,158,120,124,129,132,136,139,143,146,149,153', +'157,119,123,128,131,135,138,142,145,148,151,156,118,122,127,130,134', +'125,152,133,,,,,137,140,144,147,150,154,158,120,124,129,,,,,,,,,,,,', +',,,121,126,,,,141,,,,155,,,,,,,,,,152,,,,,,137,140,144,147,150,154,158', +'120,124,129,132,136,139,143,146,149,153,157,119,123,128,131,135,138', +'142,145,148,151,156,118,122,127,130,134,125,152,133,,,,,137,140,144', +'147,150,154,158,120,124,129,,,,,,,,,,,,,,,,121,126,,,,141,,,,155,,,', +',,,,,,152,,,,,,137,140,144,147,150,154,158,120,124,129,132,136,139,143', +'146,149,153,157,119,123,128,131,135,138,142,145,148,151,156,118,122', +'127,130,134,125,,133,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,121,126,,,,141,,,', +'155,,,,,,,,,,152,,,,,,137,140,144,147,150,154,158,120,124,129,132,136', +'139,143,146,149,153,157,119,123,128,131,135,138,142,145,148,151,156', +'118,122,127,130,134,125,,133,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,121,126,,', +',141,,,,155,,,,,,,,,,152,,,,,,137,140,144,147,150,154,158,120,124,129', +'132,136,139,143,146,149,153,157,119,123,128,131,135,138,142,145,148', +'151,156,118,122,127,130,134,125,,133,,,,,,,,,,,,,,,,,,,,,,,316,,,,,', +',121,126,,,,141,,,,155,,,,,,,,,,152,,,,,,137,140,144,147,150,154,158', +'120,124,129,132,136,139,143,146,149,153,157,119,123,128,131,135,138', +'142,145,148,151,156,118,122,127,130,134,125,,133,,,,,,,,,,,,,,,,,,,', +',,,,,,,,,,121,126,,,,141,,,,155,,,,,,,,,,152,,,,,,137,140,144,147,150', +'154,158,120,124,129,132,136,139,143,146,149,153,157,119,123,128,131', +'135,138,142,145,148,151,156,118,122,127,130,134,125,,133,,,,,,,,,,,', +',,,,,,,,,,,,,,,,,,121,126,,,,141,,,,155,,,,,,,,,,152,,,,,,137,140,144', +'147,150,154,158,120,124,129,132,136,139,143,146,149,153,157,119,123', +'128,131,135,138,142,145,148,151,156,118,122,127,130,134,125,,133,,,', +',,,,,,,,,,,,,,,,,,,,,,,,,,121,126,,,,141,,,,155,,,,,,,,,,152,,,,,,137', +'140,144,147,150,154,158,120,124,129,132,136,139,143,146,149,153,157', +'119,123,128,131,135,138,142,145,148,151,156,118,194,127,130,134,125', +',133,,,,,,,,,,,,,,,,,,,,,,,262,,,,,,,121,126,,,,141,,,,155,,,,,,,,,', +'152,,,,,,137,140,144,147,150,154,158,120,124,129,132,136,139,143,146', +'149,153,157,119,123,128,131,135,138,142,145,148,151,156,118,261,127', +'130,134,125,,133,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,121,126,,,,141,,,,155', +',,,,,,,,,152,,,,,,137,140,144,147,150,154,158,120,124,129,132,136,139', +'143,146,149,153,157,119,123,128,131,135,138,142,145,148,151,156,118', +'122,127,130,134,125,,133,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,121,126,,,,141', +',,,155,,,,,,,,,,152,,,,,,137,140,144,147,150,154,158,120,124,129,132', +'136,139,143,146,149,153,157,119,123,128,131,135,138,142,145,148,151', +'156,118,122,127,130,134,125,,133,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,121,126', +',,,141,,,,155,,,,,,,,,,152,,,,,,137,140,144,147,150,154,158,120,124', +'129,132,136,139,143,146,149,153,157,119,123,128,131,135,138,142,145', +'148,151,156,118,122,127,130,134,125,,133,,,,,,,,,,,,,,,,,,,,,,,319,', +',,,,,121,126,,,,141,,,,155,,,,,,,,,,152,,,,,,137,140,144,147,150,154', +'158,120,124,129,132,136,139,143,146,149,153,157,119,123,128,131,135', +'138,142,145,148,151,156,118,122,127,130,134,121,126,,,,,,,,155,,,,,', +',,,,152,,,,,,137,140,144,147,150,154,158,120,124,129,132,136,139,143', +'146,149,153,157,119,123,128,131,135,138,142,145,148,151,156,118,122', +'127,130,134,121,126,,,,,,,,155,,,,,,,,,,152,,,,,,137,140,144,147,150', +'154,158,120,124,129,132,136,139,143,146,149,153,157,119,123,128,131', +'135,138,142,145,148,151,156,118,122,127,130,134,121,126,,,,,,,,155,', +',,,,,,,,152,,,,,,137,140,144,147,150,154,158,120,124,129,132,136,139', +'143,146,149,153,157,119,123,128,131,135,138,142,145,148,151,156,118', +'122,121,126,,,,,,,,155,,,,,,,,,,152,,,,,,137,140,144,147,150,154,158', +'120,124,129,132,136,139,143,146,149,153,157,119,123,128,131,135,138', +'142,145,148,151,156,118,122,121,126,,,,,,,,155,,,,,,,,,,152,,,,,,137', +'140,144,147,150,154,158,120,124,129,132,136,139,143,146,149,153,157', +'119,123,128,131,135,138,142,145,148,151,156,118,122,121,126,,,,,,,,155', +',,,,,,,,,152,,,,,,137,140,144,147,150,154,158,120,124,129,132,136,139', +'143,146,149,153,157,119,123,128,131,135,138,142,145,148,151,156,118', +'122,126,,,,,,,,155,,,,,,,,,,152,,,,,,137,140,144,147,150,154,158,120', +'124,129,132,136,139,143,146,149,153,157,119,123,128,131,135,138,142', +'145,148,151,156,118,122,126,,,,,,,,155,,,,,,,,,,152,,,,,,137,140,144', +'147,150,154,158,120,124,129,132,136,139,143,146,149,153,157,119,123', +'128,131,135,138,142,145,148,151,156,118,122,126,,,,,,,,155,,,,,,,,,', +'152,,,,,,137,140,144,147,150,154,158,120,124,129,132,136,139,143,146', +'149,153,157,119,123,128,131,135,138,142,145,148,151,156,118,122,126', +',,,,,,,155,,,,,,,,,,152,,,,,,137,140,144,147,150,154,158,120,124,129', +'132,136,139,143,146,149,153,157,119,123,128,131,135,138,142,145,148', +'151,156,118,122,126,,,,,,,,155,,,,,,,,,,152,,,,,,137,140,144,147,150', +'154,158,120,124,129,132,136,139,143,146,149,153,157,119,123,128,131', +'135,138,142,145,148,151,156,118,122,155,,,,,,,,,,152,,,,,,137,140,144', +'147,150,154,158,120,124,129,132,136,139,143,146,149,153,157,119,123', +'128,131,135,138,142,145,148,151,156,118,155,,,,,,,,,,152,,,,,,137,140', +'144,147,150,154,158,120,124,129,132,136,139,143,146,149,153,157,119', +'123,128,131,135,138,142,145,148,151,156,118,155,,,,,,,,,,152,,,,,,137', +'140,144,147,150,154,158,120,124,129,132,136,139,143,146,149,153,157', +'119,123,128,131,135,138,142,145,148,151,156,118,152,,,,,,137,140,144', +'147,150,154,158,120,124,129,132,136,139,143,146,149,153,157,119,123', +'128,131,135,138,142,145,148,151,156,118,152,,,,,,137,140,144,147,150', +'154,158,120,124,129,132,136,139,143,146,149,153,157,119,123,128,131', +'135,138,142,145,148,151,156,118,152,,,,,,137,140,144,147,150,154,158', +'120,124,129,132,136,139,143,146,149,153,157,119,123,128,131,135,138', +'142,145,148,151,156,118,152,,,,,,137,140,144,147,150,154,158,120,124', +'129,132,136,139,143,146,149,153,157,119,123,128,131,135,138,142,145', +'148,151,156,118,152,,,,,,137,140,144,147,150,154,158,120,124,129,132', +'136,139,143,146,149,153,157,119,123,128,131,135,138,142,145,148,151', +'156,118' ] + racc_action_table = arr = Array.new(8898, nil) idx = 0 clist.each do |str| str.split(',', -1).each do |i| @@ -359,352 +350,344 @@ clist = [ end clist = [ -'100,301,100,14,14,14,14,14,14,14,14,14,14,101,111,111,300,252,173,101', -'101,73,204,204,300,252,14,14,100,100,98,98,98,100,103,103,204,100,75', -'214,261,14,171,163,14,214,214,100,301,163,163,172,172,100,100,100,100', -'100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100', -'100,100,100,100,100,100,100,100,100,100,100,100,100,5,5,5,250,250,250', -'14,73,14,129,14,100,129,129,129,129,129,129,129,129,129,129,154,98,261', -'261,129,98,76,129,129,129,189,193,129,129,129,129,279,279,189,83,129', -'129,255,129,47,129,129,164,129,110,129,129,270,164,164,188,129,129,129', -'129,129,129,272,188,254,154,129,41,41,189,76,76,76,221,76,193,193,193', -'5,221,221,250,5,193,104,250,99,99,99,36,36,46,46,46,188,129,129,249', -'249,249,129,45,129,2,129,187,2,2,2,2,2,2,2,2,2,2,189,189,46,107,2,307', -'307,2,2,2,165,281,2,2,2,2,165,165,180,8,2,2,179,2,195,2,2,8,2,196,2', -'2,2,187,187,187,2,2,2,2,2,2,282,282,234,281,2,107,107,46,99,233,233', -'281,99,46,281,197,8,46,8,249,180,180,180,249,93,93,93,85,180,169,93', -'91,26,2,2,169,169,22,2,91,2,3,2,11,3,3,3,3,3,3,3,3,3,3,201,95,298,266', -'3,94,142,3,3,3,143,266,3,3,3,3,91,155,91,305,3,3,86,3,1,3,3,217,3,42', -'3,3,,217,217,,3,3,3,3,3,3,266,208,,,3,,,208,208,208,208,208,208,208', -'208,208,208,208,208,208,208,208,208,208,208,208,208,208,,167,,,,3,3', -'167,167,,3,,3,151,3,,151,151,151,151,151,151,151,151,151,151,,,,,151', -',,151,151,151,170,,151,151,151,151,170,170,,,151,151,,151,,151,151,', -'151,,151,151,,,,,151,151,151,151,151,151,206,,,,151,,206,206,206,206', -'206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206', -',,,,,,151,151,,,,151,,151,7,151,,7,7,7,7,7,7,7,7,7,7,,,,,7,,,7,7,7,', -',7,7,7,7,,,,,7,7,,7,,7,7,,7,,7,7,,,,,7,7,7,7,7,7,242,,,,7,,242,242,242', -'242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242', -'242,,,,,,,7,7,,,,7,,7,150,7,,150,150,150,150,150,150,150,150,150,150', -',,,,150,,,150,150,150,,,150,150,150,150,,,,,150,150,,150,,150,150,,150', -',150,150,,,,,150,150,150,150,150,150,239,,,,150,,239,239,239,239,239', -'239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,,,,', -',,150,150,,,,150,,150,9,150,,9,9,9,9,9,9,9,9,9,9,,,,,9,,,9,9,9,,,9,9', -'9,9,,,,,9,9,,9,,9,9,,9,,9,9,,,,,9,9,9,9,9,9,212,,,,9,,212,212,212,212', -'212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212,212', -',,,,,,9,9,,,,9,,9,149,9,,149,149,149,149,149,149,149,149,149,149,,,', -',149,,,149,149,149,,,149,149,149,149,,,,,149,149,,149,,149,149,,149', -',149,149,,,,,149,149,149,149,149,149,235,,,,149,,235,235,235,235,235', -'235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,,,,', -',,149,149,,,,149,,149,148,149,,148,148,148,148,148,148,148,148,148,148', -',,,,148,,,148,148,148,,,148,148,148,148,,,,,148,148,,148,,148,148,,148', -',148,148,,,,,148,148,148,148,148,148,231,,,,148,,231,231,231,231,231', -'231,231,231,231,231,231,231,231,231,231,231,231,231,231,231,231,,,,', -',,148,148,,,,148,,148,15,148,,15,15,15,15,15,15,15,15,15,15,,,,,15,', -',15,15,15,,,15,15,15,15,,,,,15,15,,15,,15,15,,15,,15,15,,,,,15,15,15', -'15,15,15,228,,,,15,,228,228,228,228,228,228,228,228,228,228,228,228', -'228,228,228,228,228,228,228,228,228,,,,,,,15,15,,,,15,,15,17,15,,17', -'17,17,17,17,17,17,17,17,17,,,,,17,,,17,17,17,,,17,17,17,17,,,,,17,17', -',17,,17,17,,17,,17,17,,,,,17,17,17,17,17,17,216,,,,17,,216,216,216,216', -'216,216,216,216,216,216,216,216,216,236,,,,,,236,236,236,236,236,236', -'236,,17,17,,,,17,,17,147,17,,147,147,147,147,147,147,147,147,147,147', -',,,,147,,,147,147,147,,,147,147,147,147,,,,,147,147,,147,,147,147,,147', -',147,147,,,,,147,147,147,147,147,147,224,,,,147,,224,224,224,224,224', -'224,224,224,224,224,224,224,224,232,,,,,,232,232,232,232,232,232,232', -',147,147,,,,147,,147,146,147,,146,146,146,146,146,146,146,146,146,146', -',,,,146,,,146,146,146,,,146,146,146,146,,,,,146,146,,146,,146,146,,146', -',146,146,,,,,146,146,146,146,146,146,213,,,,146,,213,213,213,213,213', -'213,213,213,213,213,213,213,213,240,,,,,,240,240,240,240,240,240,240', -',146,146,,,,146,,146,145,146,,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,220,,,,145,,220,220,220,220,220', -'220,220,220,220,220,220,220,220,229,,,,,,229,229,229,229,229,,,,145', -'145,,,,145,,145,30,145,,30,30,30,30,30,30,30,30,30,30,,,,,30,,,30,30', -'30,,,30,30,30,30,,,,,30,30,,30,,30,30,,30,,30,30,,,,,30,30,30,30,30', -'30,207,,,,30,,207,207,207,207,207,207,207,207,207,207,209,,,,,,209,209', -'209,209,209,209,209,209,209,209,,30,30,,,,30,,30,144,30,,144,144,144', -'144,144,144,144,144,144,144,,,,,144,,,144,144,144,,,144,144,144,144', -',,,,144,144,,144,,144,144,,144,,144,144,,,,,144,144,144,144,144,144', -'243,,,,144,,243,243,243,243,243,243,243,243,243,243,225,,,,,,225,225', -'225,225,225,,,,,,,144,144,,,,144,,144,37,144,,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', -',37,,,37,37,37,37,37,37,,,,,37,,,,,,,,,,,,,,,,,,,,,,,,,,,,,37,37,,,', -'37,,37,284,37,,284,284,284,284,284,284,284,284,284,284,,,,,284,,,284', -'284,284,,,284,284,284,284,,,,,284,284,,284,,284,284,,284,,284,284,,', -',,284,284,284,284,284,284,,,,,284,,,,,,,,,,,,,,,,,,,,,,,,,,,,,284,284', -',,,284,,284,277,284,,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', -'277,,,,,277,277,277,277,277,277,,,,,277,,,,,,,,,,,,,,,,,,,,,,,,,,,,', -'277,277,,,,277,,277,159,277,,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,,,,159,,159,276,159,,276,276,276,276,276,276,276,276,276', -'276,,,,,276,,,276,276,276,,,276,276,276,276,,,,,276,276,,276,,276,276', -',276,,276,276,,,,,276,276,276,276,276,276,,,,,276,,,,,,,,,,,,,,,,,,', -',,,,,,,,,,276,276,,,,276,,276,141,276,,141,141,141,141,141,141,141,141', -'141,141,,,,,141,,,141,141,141,,,141,141,141,141,,,,,141,141,,141,,141', -'141,,141,,141,141,,,,,141,141,141,141,141,141,,,,,141,,,,,,,,,,,,,,', -',,,,,,,,,,,,,,141,141,,,,141,,141,140,141,,140,140,140,140,140,140,140', -'140,140,140,,,,,140,,,140,140,140,,,140,140,140,140,,,,,140,140,,140', -',140,140,,140,,140,140,,,,,140,140,140,140,140,140,,,,,140,,,,,,,,,', -',,,,,,,,,,,,,,,,,,,140,140,,,,140,,140,50,140,,50,50,50,50,50,50,50', -'50,50,50,,,,,50,,,50,50,50,,,50,50,50,50,,,,,50,50,,50,,50,50,,50,,50', -'50,,,,,50,50,50,50,50,50,,,,,50,,,,,,,,,,,,,,,,,,,,,,,,,,,,,50,50,,', -',50,,50,53,50,,53,53,53,53,53,53,53,53,53,53,,,,,53,,,53,53,53,,,53', -'53,53,53,,,,,53,53,,53,,53,53,,53,,53,53,,,,,53,53,53,53,53,53,,,,,53', -',,,,,,,,,,,,,,,,,,,,,,,,,,,,53,53,,,,53,,53,57,53,,57,57,57,57,57,57', -'57,57,57,57,,,,,57,,,57,57,57,,,57,57,57,57,,,,,57,57,,57,,57,57,,57', -',57,57,,,,,57,57,57,57,57,57,,,,,57,,,,,,,,,,,,,,,,,,,,,,,,,,,,,57,57', -',,,57,,57,61,57,,61,61,61,61,61,61,61,61,61,61,,,,,61,,,61,61,61,,,61', -'61,61,61,,,,,61,61,,61,,61,61,,61,,61,61,,,,,61,61,61,61,61,61,,,,,61', -',,,,,,,,,,,,,,,,,,,,,,,,,,,,61,61,,,,61,,61,62,61,,62,62,62,62,62,62', -'62,62,62,62,,,,,62,,,62,62,62,,,62,62,62,62,,,,,62,62,,62,,62,62,,62', -',62,62,,,,,62,62,62,62,62,62,,,,,62,,,,,,,,,,,,,,,,,,,,,,,,,,,,,62,62', -',,,62,,62,66,62,,66,66,66,66,66,66,66,66,66,66,,,,,66,,,66,66,66,,,66', -'66,66,66,,,,,66,66,,66,,66,66,,66,,66,66,,,,,66,66,66,66,66,66,,,,,66', -',,,,,,,,,,,,,,,,,,,,,,,,,,,,66,66,,,,66,,66,70,66,,70,70,70,70,70,70', -'70,70,70,70,,,,,70,,,70,70,70,,,70,70,70,70,,,,,70,70,,70,,70,70,,70', -',70,70,,,,,70,70,70,70,70,70,,,,,70,,,,,,,,,,,,,,,,,,,,,,,,,,,,,70,70', -',,,70,,70,72,70,,72,72,72,72,72,72,72,72,72,72,,,,,72,,,72,72,72,,,72', -'72,72,72,,,,,72,72,,72,,72,72,,72,,72,72,,,,,72,72,72,72,72,72,,,,,72', -',,,,,,,,,,,,,,,,,,,,,,,,,,,,72,72,,,,72,,72,260,72,,260,260,260,260', -'260,260,260,260,260,260,,,,,260,,,260,260,260,,,260,260,260,260,,,,', -'260,260,,260,,260,260,,260,,260,260,,,,,260,260,260,260,260,260,,,,', -'260,,,,,,,,,,,,,,,,,,,,,,,,260,,,,,260,260,,,,260,,260,139,260,,139', -'139,139,139,139,139,139,139,139,139,,,,,139,,,139,139,139,,,139,139', -'139,139,,,,,139,139,,139,,139,139,,139,,139,139,,,,,139,139,139,139', -'139,139,,,,,139,,,,,,,,,,,,,,,,,,,,,,,,,,,,,139,139,,,,139,,139,258', -'139,,258,258,258,258,258,258,258,258,258,258,,,,,258,,,258,258,258,', -',258,258,258,258,,,,,258,258,,258,,258,258,,258,,258,258,,,,,258,258', -'258,258,258,258,,,,,258,,,,,,,,,,,,,,,,,,,,,,,,,,,,,258,258,,,,258,', -'258,77,258,,77,77,77,77,77,77,77,77,77,77,,,,,77,,,77,77,77,,,77,77', -'77,77,,,,,77,77,,77,,77,77,,77,,77,77,,,,,77,77,77,77,77,77,,,,,77,', -',,,,,,,,,,,,,,,,,,,,,,,,,,,77,77,,,,77,,77,138,77,,138,138,138,138,138', -'138,138,138,138,138,,,,,138,,,138,138,138,,,138,138,138,138,,,,,138', -'138,,138,,138,138,,138,,138,138,,,,,138,138,138,138,138,138,,,,,138', -',,,,,,,,,,,,,,,,,,,,,,,,,,,,138,138,,,,138,,138,257,138,,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,,,,257,,257,80,257,,80,80', -'80,80,80,80,80,80,80,80,,,,,80,,,80,80,80,,,80,80,80,80,,,,,80,80,,80', -',80,80,,80,,80,80,80,,,,80,80,80,80,80,80,,,,,80,,,,,,,,,,,,,,,,,,,', -',,,,,,,,,80,80,,,,80,,80,137,80,,137,137,137,137,137,137,137,137,137', -'137,,,,,137,,,137,137,137,,,137,137,137,137,,,,,137,137,,137,,137,137', -',137,,137,137,,,,,137,137,137,137,137,137,,,,,137,,,,,,,,,,,,,,,,,,', -',,,,,,,,,,137,137,,,,137,,137,152,137,,152,152,152,152,152,152,152,152', -'152,152,,,,,152,,,152,152,152,,,152,152,152,152,,,,,152,152,,152,,152', -'152,,152,,152,152,,,,,152,152,152,152,152,152,,,,,152,,,,,,,,,,,,,,', -',,,,,,,,,,,,,,152,152,,,,152,,152,136,152,,136,136,136,136,136,136,136', -'136,136,136,,,,,136,,,136,136,136,,,136,136,136,136,,,,,136,136,,136', -',136,136,,136,,136,136,,,,,136,136,136,136,136,136,,,,,136,,,,,,,,,', -',,,,,,,,,,,,,,,,,,,136,136,,,,136,,136,87,136,,87,87,87,87,87,87,87', -'87,87,87,,,,,87,,,87,87,87,,,87,87,87,87,,,,,87,87,,87,,87,87,,87,,87', -'87,,,,,87,87,87,87,87,87,,,,,87,,,,,,,,,,,,,,,,,,,,,,,,,,,,,87,87,,', -',87,,87,135,87,,135,135,135,135,135,135,135,135,135,135,,,,,135,,,135', -'135,135,,,135,135,135,135,,,,,135,135,,135,,135,135,,135,,135,135,,', -',,135,135,135,135,135,135,,,,,135,,,,,,,,,,,,,,,,,,,,,,,,,,,,,135,135', -',,,135,,135,134,135,,134,134,134,134,134,134,134,134,134,134,,,,,134', -',,134,134,134,,,134,134,134,134,,,,,134,134,,134,,134,134,,134,,134', -'134,,,,,134,134,134,134,134,134,,,,,134,,,,,,,,,,,,,,,,,,,,,,,,,,,,', -'134,134,,,,134,,134,133,134,,133,133,133,133,133,133,133,133,133,133', -',,,,133,,,133,133,133,,,133,133,133,133,,,,,133,133,,133,,133,133,,133', -',133,133,,,,,133,133,133,133,133,133,,,,,133,,,,,,,,,,,,,,,,,,,,,,,', -',,,,,133,133,,,,133,,133,203,133,,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,,,,203,,203,202,203,,202,202,202,202,202,202,202,202', -'202,202,,,,,202,,,202,202,202,,,202,202,202,202,,,,,202,202,,202,,202', -'202,,202,,202,202,,,,,202,202,202,202,202,202,,,,,202,,,,,,,,,,,,,,', -',,,,,,,,,,,,,,202,202,,,,202,,202,131,202,,131,131,131,131,131,131,131', -'131,131,131,,,,,131,,,131,131,131,,,131,131,131,131,,,,,131,131,,131', -',131,131,,131,,131,131,,,,,131,131,131,131,131,131,,,,,131,,,,,,,,,', -',,,,,,,,,,,,,,,,,,,131,131,,,,131,,131,97,131,,97,97,97,97,97,97,97', -'97,97,97,,,,,97,,,97,97,97,,,97,97,97,97,,,,,97,97,,97,,97,97,,97,,97', -'97,97,,,,97,97,97,97,97,97,,,,,97,,,,,,,,,,,,,,,,,,,,,,,,,,,,,97,97', -',,,97,,97,192,97,,192,192,192,192,192,192,192,192,192,192,,,,,192,,', -'192,192,192,,,192,192,192,192,,,,,192,192,,192,,192,192,,192,,192,192', -',,,,192,192,192,192,192,192,,,,,192,,,,,,,,,,,,,,,,,,,,,,,,,,,,,192', -'192,,,,192,,192,191,192,,191,191,191,191,191,191,191,191,191,191,,,', -',191,,,191,191,191,,,191,191,191,191,,,,,191,191,,191,,191,191,,191', -',191,191,,,,,191,191,191,191,191,191,,,,,191,,,,,,,,,,,,,,,,,,,,,,,', -',,,,,191,191,,,,191,,191,0,191,,0,0,0,0,0,0,0,0,0,0,,,,,0,,,0,0,0,,', -'0,0,0,0,,,,,0,0,,0,,0,0,,0,,0,0,0,,,,0,0,0,0,0,0,,,,,0,,,,,,,,,,,,,', -',,,,,,,,,,,,,,,0,0,0,0,,0,,0,130,0,,130,130,130,130,130,130,130,130', -'130,130,,,,,130,,,130,130,130,,,130,130,130,130,,,,,130,130,,130,,130', -'130,,130,,130,130,,,,,130,130,130,130,130,130,,,,,130,,,,,,,,,,,,,,', -',,,,,,,,,,,,,,130,130,,,,130,,130,308,130,,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,,,,308,,308,128,308,,128,128,128,128,128', -'128,128,128,128,128,,,,,128,,,128,128,128,,,128,128,128,128,,,,,128', -'128,,128,,128,128,,128,,128,128,,,,,128,128,128,128,128,128,,,,,128', -',,,,,,,,,,,,,,,,,,,,,,,,,,,,128,128,,,,128,,128,124,128,,124,124,124', -'124,124,124,124,124,124,124,,,,,124,,,124,124,124,,,124,124,124,124', -',,,,124,124,,124,,124,124,,124,,124,124,,,,,124,124,124,124,124,124', -',,,,124,,,,,,,,,,,,,,,,,,,,,,,,,,,,,124,124,,,,124,,124,176,124,,176', -'176,176,176,176,176,176,176,176,176,,,,,176,,,176,176,176,,,176,176', -'176,176,,,,,176,176,,176,,176,176,,176,,176,176,176,,,,176,176,176,176', -'176,176,,,,,176,,,,,,,,,,,,,,,,,,,,,,,,,,,,,176,176,176,176,,176,,176', -'106,176,,106,106,106,106,106,106,106,106,106,106,,,,,106,,,106,106,106', -',,106,106,106,106,,,,,106,106,,106,,106,106,,106,,106,106,,,,,106,106', -'106,106,106,106,,,,,106,,,,,,,,,,,,,,,,,,,,,,,,,,,,,106,106,,,,106,', -'106,175,106,,175,175,175,175,175,175,175,175,175,175,,,,,175,,,175,175', -'175,,,175,175,175,175,,,,,175,175,,175,,175,175,,175,,175,175,,,,,175', -'175,175,175,175,175,,,,,175,,,,,,,,,,,,,,,,,,,,,,,,,,,,,175,175,,,,175', -',175,126,175,,126,126,126,126,126,126,126,126,126,126,,,,,126,,,126', -'126,126,,,126,126,126,126,,,,,126,126,,126,,126,126,,126,,126,126,,', -',,126,126,126,126,126,126,,,,,126,,,,,,,,,,,,,,,,,,,,,,,,,,,,,126,126', -',,,126,,126,125,126,,125,125,125,125,125,125,125,125,125,125,,,,,125', -',,125,125,125,,,125,125,125,125,,,,,125,125,,125,,125,125,,125,,125', -'125,,,,,125,125,125,125,125,125,,,,,125,,,,,,,,,,,,,,,,,,,,,,,,,,,,', -'125,125,,,,125,,125,112,125,,112,112,112,112,112,112,112,112,112,112', -',,,,112,,,112,112,112,,,112,112,112,112,,,,,112,112,,112,,112,112,,112', -',112,112,,,,,112,112,112,112,112,112,,,,,112,,,,,,,,,,,,,,,,,,,,,,,', -',,,,,112,112,,,,112,,112,113,112,,113,113,113,113,113,113,113,113,113', -'113,,,,,113,,,113,113,113,,,113,113,113,113,,,,,113,113,,113,,113,113', -',113,,113,113,,,,,113,113,113,113,113,113,,,,,113,,,,,,,,,,,,,,,,,,', -',,,,,,,,,,113,113,,,,113,,113,114,113,,114,114,114,114,114,114,114,114', -'114,114,,,,,114,,,114,114,114,,,114,114,114,114,,,,,114,114,,114,,114', -'114,,114,,114,114,,,,,114,114,114,114,114,114,,,,,114,,,,,,,,,,,,,,', -',,,,,,,,,,,,,,114,114,,,,114,,114,116,114,,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,117,116,,117,117,117,117,117', -'117,117,117,117,117,,,,,117,,,117,117,117,,,117,117,117,117,,,,,117', -'117,,117,,117,117,,117,,117,117,,,,,117,117,117,117,117,117,,,,,117', -',,,,,,,,,,,,,,,,,,,,,,,,,,,,117,117,,,,117,,117,119,117,,119,119,119', -'119,119,119,119,119,119,119,,,,,119,,,119,119,119,,,119,119,119,119', -',,,,119,119,,119,,119,119,,119,,119,119,,,,,119,119,119,119,119,119', -',,,,119,,,,,,,,,,,,,,,,,,,,,,,,,,,,,119,119,,,,119,,119,120,119,,120', -'120,120,120,120,120,120,120,120,120,,,,,120,,,120,120,120,,,120,120', -'120,120,,,,,120,120,,120,,120,120,,120,,120,120,,,,,120,120,120,120', -'120,120,,,,,120,,,,,,,,,,,,,,,,,,,,,,,,,,,,,120,120,,,,120,,120,121', -'120,,121,121,121,121,121,121,121,121,121,121,,,,,121,,,121,121,121,', -',121,121,121,121,,,,,121,121,,121,,121,121,,121,,121,121,,,,,121,121', -'121,121,121,121,,,,,121,,,,,,,,,,,,,,,,,,,,,,,,,,,,,121,121,,,,121,', -'121,122,121,,122,122,122,122,122,122,122,122,122,122,,,,,122,,,122,122', -'122,,,122,122,122,122,,,,,122,122,,122,,122,122,,122,,122,122,,,,,122', -'122,122,122,122,122,,,,,122,,,,,,,,,,,,,,,,,,,,,,,,,,,,,122,122,,,,122', -',122,123,122,,123,123,123,123,123,123,123,123,123,123,,,,,123,,,123', -'123,123,,,123,123,123,123,,,,,123,123,,123,,123,123,,123,,123,123,,', -',,123,123,123,123,123,123,,,,,123,,,,,,,,,,,,,,,,,,,,,,,,,,,,,123,123', -',,,123,,123,127,123,,127,127,127,127,127,127,127,127,127,127,,,,,127', -',,127,127,127,,,127,127,127,127,,,,,127,127,,127,,127,127,,127,,127', -'127,304,,304,,127,127,127,127,127,127,,,,,127,,,,,,,,,,,,,,304,304,', -',,304,,,,304,,,,,,127,127,,,304,127,,127,,127,304,304,304,304,304,304', -'304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304', -'304,304,304,304,304,304,304,304,304,304,304,,,,,,,,304,290,290,290,290', -'290,290,290,290,290,290,,,,,290,,,290,290,290,,,290,290,290,,,,,,,290', -',290,,290,290,,290,,290,290,,,,,290,290,290,290,290,290,,,,,290,,,,', -',,,,,,,,,,,,,,,,,,,,,,,,290,290,,,,290,,290,,290,18,18,18,18,18,18,18', -'18,18,18,,,,,18,,,18,18,18,,,18,18,18,18,,,,,,18,,18,,18,18,,18,,18', -'18,,,,,18,18,18,18,18,18,,,,,18,,,,132,132,132,132,132,132,132,132,132', -'132,,,,,132,,,132,132,132,,,132,132,132,18,18,,,,18,132,18,132,18,132', -'132,,132,,132,132,289,,289,,132,132,132,132,161,161,161,161,161,161', -'161,161,161,161,,,,,,,,,,,289,289,,161,161,289,,,,289,,,,,,132,132,', -'161,289,132,161,132,,132,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,185,,185,,,,,289,,,,161,,161,,161,,,,,,,,,,', -',,185,185,,,,185,,,,185,,,,,,,,,,185,,,,,,185,185,185,185,185,185,185', -'185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185,185', -'185,185,185,185,185,185,185,185,185,185,78,,78,,,,,185,,,,,,,,,,,,,', -',,,,,,,78,78,,,,78,,,,78,,,,,,,,,,78,,,,,,78,78,78,78,78,78,78,78,78', -'78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78,78', -'78,78,89,,89,,,,,,,,,,,,,,,,,,,,,,,,,,89,89,,,,89,,,,89,,,,,,,,89,,89', -',,,,,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89,89', -'89,89,89,89,89,89,89,89,89,89,89,89,89,218,,218,,,,,,,,,,,,,,,,,,,,', -',,,,,218,218,,,,218,,,,218,,,,,,,,,,218,,,,,,218,218,218,218,218,218', -'218,218,218,218,218,218,218,218,218,218,218,218,218,218,218,218,218', -'218,218,218,218,218,218,218,218,218,218,218,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,256,256,256,256,256,256,211,,211,,,,,,,,,,,', -',,,,,,,,,,,,,,211,211,,,,211,,,,211,,,,,,,,,,211,,,,,,211,211,211,211', -'211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211,211', -'211,211,211,211,211,211,211,211,211,211,211,211,211,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,259,259,259,259,259,259,267,,267,,,', -',,,,,,,,,,,,,,,,,,,,,,267,267,,,,267,,,,267,,,,,,,,,,267,,,,,,267,267', -'267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,267', -'267,267,267,267,267,267,267,267,267,267,267,267,267,267,267,268,,268', -',,,,,,,,,,,,,,,,,,,,,,,,,268,268,,,,268,,,,268,,,,,,,,,,268,,,,,,268', -'268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268', -'268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,268,210', -',210,,,,,,,,,,,,,,,,,,,,,,,,,,210,210,,,,210,,,,210,,,,,,,,,,210,,,', -',,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210', -'210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210,210', -'43,,43,,,,,,,,,,,,,,,,,,,,,,,,,,43,43,,,,43,,,,43,,,,,,,,,,43,,,,,,43', -'43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43,43', -'43,43,43,43,43,43,43,43,43,43,287,,287,,,,,,,,,,,,,,,,,,,,,,,,,,287', -'287,,,,287,,,,287,,,,,,,,,,287,,,,,,287,287,287,287,287,287,287,287', -'287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287,287', -'287,287,287,287,287,287,287,287,287,288,,288,,,,,,,,,,,,,,,,,,,,,,,', -',,288,288,,,,288,,,,288,,,,,,,,,,288,,,,,,288,288,288,288,288,288,288', -'288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288,288', -'288,288,288,288,288,288,288,288,288,288,199,,199,,,,,,,,,,,,,,,,,,,', -',,,,,,199,199,,,,199,,,,199,,,,,,,,,,199,,,,,,199,199,199,199,199,199', -'199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199', -'199,199,199,199,199,199,199,199,199,199,199,181,,181,,,,,,,,,,,,,,,', -',,,,,,,,,,181,181,,,,181,,,,181,,,,,,,,,,181,,,,,,181,181,181,181,181', -'181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181,181', -'181,181,181,181,181,181,181,181,181,181,181,181,178,,178,,,,,,,,,,,', +'107,165,107,152,152,152,152,152,152,152,152,152,152,65,65,65,110,152', +'73,176,152,152,65,203,65,199,152,176,288,152,152,152,107,107,172,172', +'288,107,152,260,152,107,152,152,65,152,198,152,152,293,165,107,197,152', +'152,152,152,107,107,107,107,107,107,107,107,107,107,107,107,107,107', +'107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107,107', +'107,107,107,65,152,152,194,73,293,152,74,152,192,152,107,192,192,192', +'192,192,192,192,192,192,192,275,260,260,113,192,307,307,192,192,55,55', +'276,188,192,102,96,192,192,192,192,188,261,185,257,192,192,98,192,66', +'192,192,187,192,211,192,192,192,173,177,187,192,192,192,192,192,192', +'268,113,113,195,192,59,59,289,268,188,206,206,102,102,102,257,117,117', +'102,177,185,185,185,257,206,76,257,92,187,171,195,76,76,192,192,192', +'192,64,192,62,192,4,192,268,4,4,4,4,4,4,4,4,4,4,284,284,188,188,4,88', +'24,4,4,177,177,177,255,4,24,99,4,4,4,4,195,195,195,99,4,4,45,4,167,4', +'4,116,4,306,4,4,254,83,83,83,4,4,4,4,4,4,83,241,83,24,4,24,40,241,241', +'241,241,241,99,32,99,6,210,210,6,6,6,6,6,6,6,6,6,6,247,247,247,90,6', +'4,4,6,6,247,4,247,4,6,4,237,6,6,6,6,121,237,237,1,6,6,122,6,,6,6,234', +'6,,6,6,,234,234,,6,6,6,6,6,6,209,101,101,101,6,101,209,209,209,209,209', +'209,209,109,109,9,256,256,9,9,9,9,9,9,9,9,9,9,246,246,246,,9,6,6,9,9', +'246,6,246,6,9,6,108,9,9,9,9,,108,108,,9,9,,9,,9,9,78,9,,9,9,,78,78,', +'9,9,9,9,9,9,213,,,,9,,213,213,213,213,213,213,213,,,11,,,11,11,11,11', +'11,11,11,11,11,11,84,84,84,,11,9,9,11,11,84,9,84,9,11,9,170,11,11,11', +'11,,170,170,,11,11,,11,,11,11,169,11,,11,11,,169,169,,11,11,11,11,11', +'11,218,,,,11,,218,218,218,218,218,218,218,,,12,,,12,12,12,12,12,12,12', +'12,12,12,22,22,22,,12,11,11,12,12,22,11,22,11,12,11,82,12,12,12,12,', +'82,82,,12,12,,12,,12,12,231,12,,12,12,,231,231,,12,12,12,12,12,12,245', +',,,12,81,245,245,245,245,245,81,81,,,15,,,15,15,15,15,15,15,15,15,15', +'15,,,,,15,12,12,15,15,,12,,12,15,12,,15,15,15,15,,,,,15,15,,15,,15,15', +',15,,15,15,,,,,15,15,15,15,15,15,,,,,15,,,,,,,,,,,18,,,18,18,18,18,18', +'18,18,18,18,18,,,,,18,15,15,18,18,,15,,15,18,15,,18,18,18,18,,,,,18', +'18,,18,,18,18,,18,,18,18,,,,,18,18,18,18,18,18,,,,,18,,,,,,,,,,,153', +',,153,153,153,153,153,153,153,153,153,153,,,,,153,18,18,153,153,,18', +',18,153,18,,153,153,153,153,,,,,153,153,,153,,153,153,,153,,153,153', +',,,,153,153,153,153,153,153,,,,,153,,,,,,,,,,,20,,,20,20,20,20,20,20', +'20,20,20,20,,,,,20,153,153,20,20,,153,,153,20,153,,20,20,20,20,,,,,20', +'20,,20,,20,20,,20,,20,20,,,,,20,20,20,20,20,20,,,,,20,,,,,,,,,,,151', +',,151,151,151,151,151,151,151,151,151,151,,,,,151,20,20,151,151,,20', +',20,151,20,,151,151,151,151,,,,,151,151,,151,,151,151,,151,,151,151', +',,,,151,151,151,151,151,151,,,,,151,,,,,,,,,,,150,,,150,150,150,150', +'150,150,150,150,150,150,,,,,150,151,151,150,150,,151,,151,150,151,,150', +'150,150,150,,,,,150,150,,150,,150,150,,150,,150,150,,,,,150,150,150', +'150,150,150,,,,,150,,,,,,,,,,,149,,,149,149,149,149,149,149,149,149', +'149,149,,,,,149,150,150,149,149,,150,,150,149,150,,149,149,149,149,', +',,,149,149,,149,,149,149,,149,,149,149,,,,,149,149,149,149,149,149,', +',,,149,,,,,,,,,,,29,,,29,29,29,29,29,29,29,29,29,29,,,,,29,149,149,29', +'29,,149,,149,29,149,,29,29,29,29,,,,,29,29,,29,,29,29,,29,,29,29,29', +',,,29,29,29,29,29,29,,,,,29,,,,,,,,,,,30,,,30,30,30,30,30,30,30,30,30', +'30,,,,,30,29,29,30,30,,29,,29,30,29,,30,30,30,30,,,,,30,30,,30,,30,30', +',30,,30,30,,,,,30,30,30,30,30,30,,,,,30,,,,,,,,,,,148,,,148,148,148', +'148,148,148,148,148,148,148,,,,,148,30,30,148,148,,30,,30,148,30,,148', +'148,148,148,,,,,148,148,,148,,148,148,,148,,148,148,,,,,148,148,148', +'148,148,148,,,,,148,,,,,,,,,,,34,,,34,34,34,34,34,34,34,34,34,34,,,', +',34,148,148,34,34,,148,,148,34,148,,34,34,34,34,,,,,34,34,,34,,34,34', +',34,,34,34,,,,,34,34,34,34,34,34,,,,,34,,,,,,,,,,,35,,,35,35,35,35,35', +'35,35,35,35,35,,,,,35,34,34,35,35,,34,,34,35,34,,35,35,35,35,,,,,35', +'35,,35,,35,35,,35,,35,35,,,,,35,35,35,35,35,35,,,,,35,,,,,,,,,,,308', +',,308,308,308,308,308,308,308,308,308,308,,,,,308,35,35,308,308,,35', +',35,308,35,,308,308,308,308,,,,,308,308,,308,,308,308,,308,,308,308', +',,,,308,308,308,308,308,308,,,,,308,,,,,,,,,,,147,,,147,147,147,147', +'147,147,147,147,147,147,,,,,147,308,308,147,147,,308,,308,147,308,,147', +'147,147,147,,,,,147,147,,147,,147,147,,147,,147,147,,,,,147,147,147', +'147,147,147,,,,,147,,,,,,,,,,,49,,,49,49,49,49,49,49,49,49,49,49,,,', +',49,147,147,49,49,,147,,147,49,147,,49,49,49,49,,,,,49,49,,49,,49,49', +',49,,49,49,,,,,49,49,49,49,49,49,,,,,49,,,,,,,,,,,146,,,146,146,146', +'146,146,146,146,146,146,146,,,,,146,49,49,146,146,,49,,49,146,49,,146', +'146,146,146,,,,,146,146,,146,,146,146,,146,,146,146,,,,,146,146,146', +'146,146,146,,,,,146,,,,,,,,,,,56,,,56,56,56,56,56,56,56,56,56,56,,,', +',56,146,146,56,56,,146,,146,56,146,,56,56,56,56,,,,,56,56,,56,,56,56', +',56,,56,56,,56,,,56,56,56,56,56,56,,,,,56,,,,,,,,,,,145,,,145,145,145', +'145,145,145,145,145,145,145,,,,,145,56,56,145,145,,56,,56,145,56,,145', +'145,145,145,,,,,145,145,,145,,145,145,,145,,145,145,,,,,145,145,145', +'145,145,145,,,,,145,,,,,,,,,,,144,,,144,144,144,144,144,144,144,144', +'144,144,,,,,144,145,145,144,144,,145,,145,144,145,,144,144,144,144,', +',,,144,144,,144,,144,144,,144,,144,144,,,,,144,144,144,144,144,144,', +',,,144,,,,,,,,,,,143,,,143,143,143,143,143,143,143,143,143,143,,,,,143', +'144,144,143,143,,144,,144,143,144,,143,143,143,143,,,,,143,143,,143', +',143,143,,143,,143,143,,,,,143,143,143,143,143,143,,,,,143,,,,,,,,,', +',295,,,295,295,295,295,295,295,295,295,295,295,,,,,295,143,143,295,295', +',143,,143,295,143,,295,295,295,295,,,,,295,295,,295,,295,295,,295,,295', +'295,,,,,295,295,295,295,295,295,,,,,295,,,,,,,,,,,142,,,142,142,142', +'142,142,142,142,142,142,142,295,,,,142,295,295,142,142,,295,,295,142', +'295,,142,142,142,142,,,,,142,142,,142,,142,142,,142,,142,142,,,,,142', +'142,142,142,142,142,,,,,142,,,,,,,,,,,282,,,282,282,282,282,282,282', +'282,282,282,282,,,,,282,142,142,282,282,,142,,142,282,142,,282,282,282', +'282,,,,,282,282,,282,,282,282,,282,,282,282,,,,,282,282,282,282,282', +'282,,,,,282,,,,,,,,,,,68,,,68,68,68,68,68,68,68,68,68,68,,,,,68,282', +'282,68,68,,282,,282,68,282,,68,68,68,68,,,,,68,68,,68,,68,68,,68,,68', +'68,,,,,68,68,68,68,68,68,,,,,68,,,,,,,,,,,71,,,71,71,71,71,71,71,71', +'71,71,71,,,,,71,68,68,71,71,,68,,68,71,68,,71,71,71,71,,,,,71,71,,71', +',71,71,,71,,71,71,,,,,71,71,71,71,71,71,,,,,71,,,,,,,,,,,281,,,281,281', +'281,281,281,281,281,281,281,281,,,,,281,71,71,281,281,,71,,71,281,71', +',281,281,281,281,,,,,281,281,,281,,281,281,,281,,281,281,,,,,281,281', +'281,281,281,281,,,,,281,,,,,,,,,,,273,,,273,273,273,273,273,273,273', +'273,273,273,,,,,273,281,281,273,273,,281,,281,273,281,,273,273,273,273', +',,,,273,273,,273,,273,273,,273,,273,273,,,,,273,273,273,273,273,273', +',,,,273,,,,,,,,,,,141,,,141,141,141,141,141,141,141,141,141,141,273', +',,,141,273,273,141,141,,273,,273,141,273,,141,141,141,141,,,,,141,141', +',141,,141,141,,141,,141,141,,,,,141,141,141,141,141,141,,,,,141,,,,', +',,,,,,139,,,139,139,139,139,139,139,139,139,139,139,,,,,139,141,141', +'139,139,,141,,141,139,141,,139,139,139,139,,,,,139,139,,139,,139,139', +',139,,139,139,,,,,139,139,139,139,139,139,,,,,139,,,,,,,,,,,271,,,271', +'271,271,271,271,271,271,271,271,271,,,,,271,139,139,271,271,,139,,139', +'271,139,,271,271,271,271,,,,,271,271,,271,,271,271,,271,,271,271,,,', +',271,271,271,271,271,271,,,,,271,,,,,,,,,,,138,,,138,138,138,138,138', +'138,138,138,138,138,,,,,138,271,271,138,138,,271,,271,138,271,,138,138', +'138,138,,,,,138,138,,138,,138,138,,138,,138,138,,,,,138,138,138,138', +'138,138,,,,,138,,,,,,,,,,,136,,,136,136,136,136,136,136,136,136,136', +'136,,,,,136,138,138,136,136,,138,,138,136,138,,136,136,136,136,,,,,136', +'136,,136,,136,136,,136,,136,136,,,,,136,136,136,136,136,136,,,,,136', +',,,,,,,,,,270,,,270,270,270,270,270,270,270,270,270,270,,,,,270,136', +'136,270,270,,136,,136,270,136,,270,270,270,270,,,,,270,270,,270,,270', +'270,,270,,270,270,,,,,270,270,270,270,270,270,,,,,270,,,,,,,,,,,135', +',,135,135,135,135,135,135,135,135,135,135,,,,,135,270,270,135,135,,270', +',270,135,270,,135,135,135,135,,,,,135,135,,135,,135,135,,135,,135,135', +',,,,135,135,135,135,135,135,,,,,135,,,,,,,,,,,134,,,134,134,134,134', +'134,134,134,134,134,134,,,,,134,135,135,134,134,,135,,135,134,135,,134', +'134,134,134,,,,,134,134,,134,,134,134,,134,,134,134,,,,,134,134,134', +'134,134,134,,,,,134,,,,,,,,,,,133,,,133,133,133,133,133,133,133,133', +'133,133,,,,,133,134,134,133,133,,134,,134,133,134,,133,133,133,133,', +',,,133,133,,133,,133,133,,133,,133,133,,,,,133,133,133,133,133,133,', +',,,133,,,,,,,,,,,259,,,259,259,259,259,259,259,259,259,259,259,,,,,259', +'133,133,259,259,,133,,133,259,133,,259,259,259,259,,,,,259,259,,259', +',259,259,,259,,259,259,,,,,259,259,259,259,259,259,,,,,259,,,,,,,,,', +',86,,,86,86,86,86,86,86,86,86,86,86,,,,,86,259,259,86,86,,259,,259,86', +'259,,86,86,86,86,,,,,86,86,,86,,86,86,,86,,86,86,86,,,,86,86,86,86,86', +'86,,,,,86,,,,,,,,,,,87,,,87,87,87,87,87,87,87,87,87,87,,,,,87,86,86', +'87,87,,86,,86,87,86,,87,87,87,87,,,,,87,87,,87,,87,87,,87,,87,87,,,', +',87,87,87,87,87,87,,,,,87,,,,,,,,,,,156,,,156,156,156,156,156,156,156', +'156,156,156,,,,,156,87,87,156,156,,87,,87,156,87,,156,156,156,156,,', +',,156,156,,156,,156,156,,156,,156,156,,,,,156,156,156,156,156,156,,', +',,156,,,,,,,,,,,132,,,132,132,132,132,132,132,132,132,132,132,,,,,132', +'156,156,132,132,,156,,156,132,156,,132,132,132,132,,,,,132,132,,132', +',132,132,,132,,132,132,,,,,132,132,132,132,132,132,,,,,132,,,,,,,,,', +',131,,,131,131,131,131,131,131,131,131,131,131,,,,,131,132,132,131,131', +',132,,132,131,132,,131,131,131,131,,,,,131,131,,131,,131,131,,131,,131', +'131,,,,,131,131,131,131,131,131,,,,,131,,,,,,,,,,,130,,,130,130,130', +'130,130,130,130,130,130,130,,,,,130,131,131,130,130,,131,,131,130,131', +',130,130,130,130,,,,,130,130,,130,,130,130,,130,,130,130,,,,,130,130', +'130,130,130,130,,,,,130,,,,,,,,,,,205,,,205,205,205,205,205,205,205', +'205,205,205,,,,,205,130,130,205,205,,130,,130,205,130,,205,205,205,205', +',,,,205,205,,205,,205,205,,205,,205,205,,,,,205,205,205,205,205,205', +',,,,205,,,,,,,,,,,204,,,204,204,204,204,204,204,204,204,204,204,,,,', +'204,205,205,204,204,,205,,205,204,205,,204,204,204,204,,,,,204,204,', +'204,,204,204,,204,,204,204,,,,,204,204,204,204,204,204,,,,,204,,,,,', +',,,,,123,,,123,123,123,123,123,123,123,123,123,123,,,,,123,204,204,123', +'123,,204,,204,123,204,,123,123,123,123,,,,,123,123,,123,,123,123,,123', +',123,123,,,,,123,123,123,123,123,123,,,,,123,,,,,,,,,,,129,,,129,129', +'129,129,129,129,129,129,129,129,,,,,129,123,123,129,129,,123,,123,129', +'123,,129,129,129,129,,,,,129,129,,129,,129,129,,129,,129,129,,,,,129', +'129,129,129,129,129,,,,,129,,,,,,,,,,,154,,,154,154,154,154,154,154', +'154,154,154,154,,,,,154,129,129,154,154,,129,,129,154,129,,154,154,154', +'154,,,,,154,154,,154,,154,154,,154,,154,154,,,,,154,154,154,154,154', +'154,,,,,154,,,,,,,,,,,103,,,103,103,103,103,103,103,103,103,103,103', +',,,,103,154,154,103,103,,154,,154,103,154,,103,103,103,103,,,,,103,103', +',103,,103,103,,103,,103,103,,,,,103,103,103,103,103,103,,,,,103,,,,', +',,,,,,128,,,128,128,128,128,128,128,128,128,128,128,,,,,128,103,103', +'128,128,,103,,103,128,103,,128,128,128,128,,,,,128,128,,128,,128,128', +',128,,128,128,,,,,128,128,128,128,128,128,,,,,128,,,,,,,,,,,191,,,191', +'191,191,191,191,191,191,191,191,191,,,,,191,128,128,191,191,,128,,128', +'191,128,,191,191,191,191,,,,,191,191,,191,,191,191,,191,,191,191,,,', +',191,191,191,191,191,191,,,,,191,,,,,,,,,,,106,,,106,106,106,106,106', +'106,106,106,106,106,,,,,106,191,191,106,106,,191,,191,106,191,,106,106', +'106,106,,,,,106,106,,106,,106,106,,106,,106,106,106,,,,106,106,106,106', +'106,106,,,,,106,,,,,,,,,,,0,,,0,0,0,0,0,0,0,0,0,0,,,,,0,106,106,0,0', +',106,,106,0,106,,0,0,0,0,,,,,0,0,,0,,0,0,,0,,0,0,0,,,,0,0,0,0,0,0,217', +',,,0,,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217,217', +'217,217,217,217,217,,,,,,,0,0,0,0,,0,,0,127,0,,127,127,127,127,127,127', +'127,127,127,127,,,,,127,,,127,127,,,,,127,,,127,127,127,127,,,,,127', +'127,,127,,127,127,,127,,127,127,,,,,127,127,127,127,127,127,,,,,127', +',,,,,,,,,,184,,,184,184,184,184,184,184,184,184,184,184,,,,,184,127', +'127,184,184,,127,,127,184,127,,184,184,184,184,,,,,184,184,,184,,184', +'184,,184,,184,184,,,,,184,184,184,184,184,184,,,,,184,,,,,,,,,,,183', +',,183,183,183,183,183,183,183,183,183,183,,,,,183,184,184,183,183,,184', +',184,183,184,,183,183,183,183,,,,,183,183,,183,,183,183,,183,,183,183', +',,,,183,183,183,183,183,183,,,,,183,,,,,,,,,,,126,,,126,126,126,126', +'126,126,126,126,126,126,,,,,126,183,183,126,126,,183,,183,126,183,,126', +'126,126,126,,,,,126,126,,126,,126,126,,126,,126,126,,,,,126,126,126', +'126,126,126,,,,,126,,,,,,,,,,,112,,,112,112,112,112,112,112,112,112', +'112,112,,,,,112,126,126,112,112,,126,,126,112,126,,112,112,112,112,', +',,,112,112,,112,,112,112,,112,,112,112,,,,,112,112,112,112,112,112,', +',,,112,,,,,,,,,,,125,,,125,125,125,125,125,125,125,125,125,125,,,,,125', +'112,112,125,125,,112,,112,125,112,,125,125,125,125,,,,,125,125,,125', +',125,125,,125,,125,125,,,,,125,125,125,125,125,125,,,,,125,,,,,,,,,', +',162,,,162,162,162,162,162,162,162,162,162,162,,,,,162,125,125,162,162', +',125,,125,162,125,,162,162,162,162,,,,,162,162,,162,,162,162,,162,,162', +'162,,,,,162,162,162,162,162,162,,,,,162,,,,,,,,,,,124,,,124,124,124', +'124,124,124,124,124,124,124,,,,,124,162,162,124,124,,162,,162,124,162', +',124,124,124,124,,,,,124,124,,124,,124,124,,124,,124,124,,,,,124,124', +'124,124,124,124,,,,,124,,,,,,,,,,,118,,,118,118,118,118,118,118,118', +'118,118,118,,,,,118,124,124,118,118,,124,,124,118,124,,118,118,118,118', +',,,,118,118,,118,,118,118,,118,,118,118,,,,,118,118,118,118,118,118', +',,,,118,,,,,,,,,,,119,,,119,119,119,119,119,119,119,119,119,119,,,,', +'119,118,118,119,119,,118,,118,119,118,,119,119,119,119,,,,,119,119,', +'119,,119,119,,119,,119,119,,,,,119,119,119,119,119,119,,,,,119,,,,,', +',,,,,120,,,120,120,120,120,120,120,120,120,120,120,,,,,120,119,119,120', +'120,,119,,119,120,119,,120,120,120,120,,,,,120,120,,120,,120,120,,120', +',120,120,,,,,120,120,120,120,120,120,,,,,120,,,,,,,,,,,158,,,158,158', +'158,158,158,158,158,158,158,158,,,,,158,120,120,158,158,,120,,120,158', +'120,,158,158,158,158,,,,,158,158,,158,,158,158,,158,,158,158,,,,,158', +'158,158,158,158,158,,,,,158,,,,,,,,,,,157,,,157,157,157,157,157,157', +'157,157,157,157,,,,,157,158,158,157,157,,158,,158,157,158,,157,157,157', +'157,,,,,157,157,,157,,157,157,,157,,157,157,,,,,157,157,157,157,157', +'157,,,,,157,,,,,,,,,,,155,,,155,155,155,155,155,155,155,155,155,155', +',,,,155,157,157,155,155,,157,,157,155,157,,155,155,155,155,,,,,155,155', +',155,,155,155,,155,,155,155,299,,299,,155,155,155,155,155,155,233,,', +',155,,233,233,233,233,233,233,233,233,233,233,233,233,233,,,,299,299', +',,,299,,,,299,,155,155,,,,155,,155,299,155,,,,,299,299,299,299,299,299', +'299,299,299,299,299,299,299,299,299,299,299,299,299,299,299,299,299', +'299,299,299,299,299,299,299,299,299,299,299,312,,312,,,,,,,299,,160', +'160,160,160,160,160,160,160,160,160,,,,,,,,,,,,312,312,,,,312,160,160', +',312,,,,,,,,,,312,,160,,,160,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,312,312', +'312,312,312,312,312,312,312,,,,,,,,,,312,,,,,160,,160,,160,19,19,19', +'19,19,19,19,19,19,19,,,300,300,300,300,300,300,300,300,300,300,,,,,300', +'19,19,300,300,,,,,300,,,300,300,300,,19,,,19,,300,,300,,300,300,,300', +',300,300,,,,,300,300,300,300,300,300,236,,,,300,,236,236,236,236,236', +'236,236,236,236,236,236,236,236,,,,,,,,19,,19,,19,,,300,300,,,,300,', +'300,,300,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,227,,,,310,,227,227,227,227,227,227,227,227,227,227', +',,23,23,23,23,23,23,23,23,23,23,,,,,23,310,310,23,23,,310,,310,23,310', +',23,23,23,23,,,,,,23,,23,,23,23,,23,,23,23,272,,272,,23,23,23,23,23', +'23,230,,,,23,,230,230,230,230,230,230,230,230,230,230,230,230,230,,', +',272,272,,,,272,,,,272,,23,23,,,,23,,23,272,23,,,,,272,272,272,272,272', +'272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272,272', +'272,272,272,272,272,272,272,272,272,272,272,272,264,208,264,,,,,208', +'208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208,208', +'208,208,208,,,,,264,264,,,,264,,,,264,,,,,,,,,,264,,,,,,264,264,264', +'264,264,264,264,264,264,264,264,264,264,264,264,264,264,264,264,264', +'264,264,264,264,264,264,264,264,264,264,264,264,264,264,269,229,269', +',,,,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229,229', +'229,229,229,229,229,,,,,269,269,,,,269,,,,269,,,,,,,,,,269,,,,,,269', +'269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269', +'269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,269,80,220', +'80,,,,,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220,220', +'220,220,220,220,220,,,,,80,80,,,,80,,,,80,,,,,,,,80,,80,,,,,,80,80,80', +'80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,80', +'80,80,80,80,80,80,80,80,79,212,79,,,,,212,212,212,212,212,212,212,212', +'212,212,212,212,212,212,212,212,212,212,212,212,212,,,,,79,79,,,,79', +',,,79,,,,,,,,79,,79,,,,,,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79', +'79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,77,224,77,', +',,,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224', +'224,224,224,224,,,,,77,77,,,,77,,,,77,,,,,,,,77,,77,,,,,,77,77,77,77', +'77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77', +'77,77,77,77,77,77,77,263,244,263,,,,,244,244,244,244,244,244,244,244', +'244,244,244,244,244,244,244,244,244,244,244,244,244,,,,,263,263,,,,263', +',,,263,,,,,,,,,,263,,,,,,263,263,263,263,263,263,263,263,263,263,263', +'263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263,263', +'263,263,263,263,263,263,292,226,292,,,,,226,226,226,226,226,226,226', +'226,226,226,226,226,226,226,226,226,226,226,226,226,226,,,,,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,292,292,292,292,63,240,63,,,,,240,240,240,240,240,240', +'240,240,240,240,240,240,240,,,,,,,,,,,,,63,63,,,,63,,,,63,,,,,,,,,,63', +',,,,,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63,63', +'63,63,63,63,63,63,63,63,63,63,63,63,63,297,221,297,,,,,221,221,221,221', +'221,221,221,221,221,221,,,,,,,,,,,,,,,,297,297,,,,297,,,,297,,,,,,,', +',,297,,,,,,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297', +'297,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297,297', +'297,297,298,225,298,,,,,225,225,225,225,225,225,225,225,225,225,,,,', +',,,,,,,,,,,298,298,,,,298,,,,298,,,,,,,,,,298,,,,,,298,298,298,298,298', +'298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298,298', +'298,298,298,298,298,298,298,298,298,298,298,298,228,,228,,,,,,,,,,,', +',,,,,,,,,,,,,,,,,,228,228,,,,228,,,,228,,,,,,,,,,228,,,,,,228,228,228', +'228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228', +'228,228,228,228,228,228,228,228,228,228,228,228,228,228,222,,222,,,', +',,,,,,,,,,,,,,,,,,,,,,,,,,222,222,,,,222,,,,222,,,,,,,,,,222,,,,,,222', +'222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222', +'222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,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,309,309,309,309,309', +'309,309,214,,214,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,214,214,,,,214,,,,214', +',,,,,,,,,214,,,,,,214,214,214,214,214,214,214,214,214,214,214,214,214', +'214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214,214', +'214,214,214,214,193,,193,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,193,193,,,,193', +',,,193,,,,,,,,,,193,,,,,,193,193,193,193,193,193,193,193,193,193,193', +'193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193', +'193,193,193,193,193,193,104,,104,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,104,104', +',,,104,,,,104,,,,,,,,,,104,,,,,,104,104,104,104,104,104,104,104,104', +'104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104,104', +'104,104,104,104,104,104,104,104,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,179,179,179,179,179,179,179,178,,178,,,,,,,,,,,,,,,', ',,,,,,,,,,,,,,178,178,,,,178,,,,178,,,,,,,,,,178,,,,,,178,178,178,178', '178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178,178', -'178,178,178,178,178,178,178,178,178,178,178,178,178,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,168,168,168,168,168,168,168,302,,302', -',,,,,,,,,,,,,,,,,,,,,,,,,302,302,,,,302,,,,302,,,,,,,,,,302,,,,,,302', -'302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302', -'302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,302,166', -',166,,,,,,,,,,,,,,,,,,,,,,,,,,166,166,,,,166,,,,166,,,,,,,,166,,166', -',,,,,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166', -'166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166,166', -'166,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,312,312,312,312,312,312,312,312,312,312,312,312,312,312', -'312,312,102,102,,,,,,,,102,,,,,,,,,,102,,,,,,102,102,102,102,102,102', -'102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102', -'102,102,102,102,102,102,102,102,102,102,102,248,248,,,,,,,,248,,,,,', -',,,,248,,,,,,248,248,248,248,248,248,248,248,248,248,248,248,248,248', +'178,178,178,178,178,178,178,178,178,178,178,178,178,315,,315,,,,,,,', +',,,,,,,,,,,,,,,,,,,,,,315,315,,,,315,,,,315,,,,,,,,,,315,,,,,,315,315', +'315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,315', +'315,315,315,315,315,315,315,315,315,315,315,315,315,315,315,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,201,201,201,201,201,201', +'317,,317,,,,,,,,,,,,,,,,,,,,,,,317,,,,,,,317,317,,,,317,,,,317,,,,,', +',,,,317,,,,,,317,317,317,317,317,317,317,317,317,317,317,317,317,317', +'317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317,317', +'317,317,317,95,95,,,,,,,,95,,,,,,,,,,95,,,,,,95,95,95,95,95,95,95,95', +'95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95', +'95,95,95,248,248,,,,,,,,248,,,,,,,,,,248,,,,,,248,248,248,248,248,248', '248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248', -'248,248,248,238,238,,,,,,,,238,,,,,,,,,,238,,,,,,238,238,238,238,238', -'238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238', -'238,238,238,238,238,238,238,238,238,105,105,,,,,,,,105,,,,,,,,,,105', -',,,,,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105', -'105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,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,241,241,,,,,,,,241,,,,,,,,,,241,,,,,,241,241,241,241', -'241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241,241', -'241,241,241,241,241,241,241,241,241,241,295,,,,,,,,295,,,,,,,,,,295', -',,,,,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,295', -'295,295,295,295,295,295,295,295,295,295,295,295,295,295,295,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,274,,,,,,,,274,,,,,,,,,,274,,,,,,274,274,274,274,274,274', -'274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274,274', -'274,274,274,274,274,274,274,274,275,,,,,,,,275,,,,,,,,,,275,,,,,,275', -'275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275,275', -'275,275,275,275,275,275,275,275,275,275,275,275,275,237,,,,,,,,237,', -',,,,,,,,237,,,,,,237,237,237,237,237,237,237,237,237,237,237,237,237', -'237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237,237', -'237,96,,,,,,,,,,96,,,,,,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96', -'96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,79,,,,,,,,,,79,,,,,,79', -'79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79', -'79,79,79,79,79,79,226,,,,,,,,,,226,,,,,,226,226,226,226,226,226,226', -'226,226,226,226,226,226,226,226,226,226,226,226,226,226,226,226,226', -'226,226,226,226,226,226,219,,,,,,219,219,219,219,219,219,219,219,219', +'248,248,248,248,248,248,248,248,248,248,248,223,223,,,,,,,,223,,,,,', +',,,,223,,,,,,223,223,223,223,223,223,223,223,223,223,223,223,223,223', +'223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223,223', +'219,219,,,,,,,,219,,,,,,,,,,219,,,,,,219,219,219,219,219,219,219,219', '219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219', -'219,219,219,219,222,,,,,,222,222,222,222,222,222,222,222,222,222,222', -'222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222,222', -'222,222,230,,,,,,230,230,230,230,230,230,230,230,230,230,230,230,230', -'230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230,230', -'215,,,,,,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215', -'215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,227,,,,', -',227,227,227,227,227,227,227,227,227,227,227,227,227,227,227,227,227', -'227,227,227,227,227,227,227,227,227,227,227,227,227' ] - racc_action_check = arr = Array.new(10011, nil) +'219,219,219,219,219,219,111,111,,,,,,,,111,,,,,,,,,,111,,,,,,111,111', +'111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111', +'111,111,111,111,111,111,111,111,111,111,111,111,216,216,,,,,,,,216,', +',,,,,,,,216,,,,,,216,216,216,216,216,216,216,216,216,216,216,216,216', +'216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216,216', +'216,279,,,,,,,,279,,,,,,,,,,279,,,,,,279,279,279,279,279,279,279,279', +'279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279,279', +'279,279,279,279,279,279,304,,,,,,,,304,,,,,,,,,,304,,,,,,304,304,304', +'304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304,304', +'304,304,304,304,304,304,304,304,304,304,304,280,,,,,,,,280,,,,,,,,,', +'280,,,,,,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280', +'280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,280,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,215,,,,,,,,215,,,,,,,,,,215,,,,,,215,215,215,215,215', +'215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215,215', +'215,215,215,215,215,215,215,215,215,85,,,,,,,,,,85,,,,,,85,85,85,85', +'85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85', +'85,85,85,105,,,,,,,,,,105,,,,,,105,105,105,105,105,105,105,105,105,105', +'105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105,105', +'105,105,105,242,,,,,,,,,,242,,,,,,242,242,242,242,242,242,242,242,242', +'242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242,242', +'242,242,242,242,238,,,,,,238,238,238,238,238,238,238,238,238,238,238', +'238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238', +'238,238,232,,,,,,232,232,232,232,232,232,232,232,232,232,232,232,232', +'232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232,232', +'235,,,,,,235,235,235,235,235,235,235,235,235,235,235,235,235,235,235', +'235,235,235,235,235,235,235,235,235,235,235,235,235,235,235,243,,,,', +',243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243,243', +'243,243,243,243,243,243,243,243,243,243,243,243,243,207,,,,,,207,207', +'207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207', +'207,207,207,207,207,207,207,207,207,207,207' ] + racc_action_check = arr = Array.new(8898, nil) idx = 0 clist.each do |str| str.split(',', -1).each do |i| @@ -714,341 +697,343 @@ clist = [ end racc_action_pointer = [ - 4990, 305, 190, 286, nil, 72, nil, 478, 218, 670, - nil, 191, nil, nil, -2, 958, nil, 1054, 7142, nil, - nil, nil, 237, nil, nil, nil, 279, nil, nil, nil, - 1438, nil, nil, nil, nil, nil, 86, 1630, nil, nil, - nil, 64, 316, 8204, nil, 187, 165, 86, nil, nil, - 2302, nil, nil, 2398, nil, nil, nil, 2494, nil, nil, - nil, 2590, 2686, nil, nil, nil, 2782, nil, nil, nil, - 2878, nil, 2974, 0, nil, -47, 67, 3358, 7421, 9700, - 3646, nil, nil, 114, nil, 260, 309, 4030, nil, 7508, - nil, 272, nil, 179, 217, 213, 9654, 4702, 15, 160, - -2, -36, 9046, 9, 173, 9220, 5566, 160, nil, nil, - 44, -17, 5950, 6046, 6142, nil, 6238, 6334, nil, 6430, - 6526, 6622, 6718, 6814, 5374, 5854, 5758, 6910, 5278, 94, - 5086, 4606, 7202, 4318, 4222, 4126, 3934, 3742, 3454, 3166, - 2206, 2110, 293, 226, 1534, 1342, 1246, 1150, 862, 766, - 574, 382, 3838, nil, 107, 315, nil, nil, nil, 1918, - nil, 7252, nil, -6, 87, 166, 8900, 323, 8726, 227, - 358, 22, -39, -67, nil, 5662, 5470, nil, 8639, 142, - 175, 8552, nil, nil, nil, 7334, nil, 146, 138, 113, - nil, 4894, 4798, 72, nil, 215, 187, 236, nil, 8465, - nil, 287, 4510, 4414, -11, 9276, 390, 1446, 295, 1462, - 8117, 7769, 678, 1254, -10, 9890, 1062, 279, 7595, 9782, - 1350, 113, 9818, nil, 1158, 1558, 9746, 9926, 966, 1369, - 9854, 870, 1177, 225, 164, 774, 1081, 9607, 9164, 582, - 1273, 9332, 486, 1542, nil, nil, nil, nil, 9105, 171, - 75, nil, -20, nil, 106, 46, 7682, 3550, 3262, 7856, - 3070, 21, nil, nil, nil, nil, 298, 7943, 8030, nil, - 94, nil, 104, nil, 9497, 9552, 2014, 1822, nil, 92, - nil, 213, 155, nil, 1726, nil, nil, 8291, 8378, 7247, - 7047, nil, nil, nil, nil, 9387, 9442, nil, 256, nil, - -21, -46, 8813, nil, 6955, 272, nil, 118, 5182, nil, - nil, nil, 8987 ] + 4416, 290, nil, nil, 198, nil, 272, nil, nil, 346, + nil, 420, 494, nil, nil, 568, nil, nil, 642, 5725, + 790, nil, 494, 5910, 213, nil, nil, nil, nil, 1086, + 1160, nil, 248, nil, 1308, 1382, nil, nil, nil, nil, + 214, nil, nil, nil, nil, 239, nil, nil, nil, 1604, + nil, nil, nil, nil, nil, 26, 1752, nil, nil, 68, + nil, nil, 184, 6687, 145, -2, 138, nil, 2270, nil, + nil, 2344, nil, -3, 9, nil, 131, 6414, 339, 6323, + 6232, 507, 471, 235, 420, 8537, 3306, 3380, 204, nil, + 276, nil, 172, nil, nil, 7929, 35, nil, 46, 222, + nil, 238, 75, 4120, 7415, 8583, 4342, -2, 323, 317, + 16, 8159, 4812, 64, nil, nil, 146, 140, 5108, 5182, + 5256, 293, 224, 3898, 5034, 4886, 4738, 4516, 4194, 3972, + 3676, 3602, 3528, 3158, 3084, 3010, 2862, nil, 2788, 2640, + nil, 2566, 2122, 1974, 1900, 1826, 1678, 1530, 1234, 1012, + 938, 864, -2, 716, 4046, 5478, 3454, 5404, 5330, nil, + 5626, nil, 4960, nil, nil, -1, nil, 238, nil, 413, + 397, 168, -60, 61, nil, nil, -22, 126, 7597, 7506, + nil, nil, nil, 4664, 4590, 83, nil, 138, 119, nil, + nil, 4268, 98, 7324, 5, 137, nil, 22, 32, -26, + nil, 7779, nil, 9, 3824, 3750, 132, 8809, 6000, 280, + 240, 57, 6273, 354, 7233, 8490, 8215, 4424, 428, 8103, + 6182, 6728, 7051, 8047, 6364, 6819, 6546, 5844, 6960, 6091, + 5918, 487, 8701, 5486, 265, 8737, 5745, 249, 8665, nil, + 6637, 207, 8629, 8773, 6455, 502, 346, 272, 7988, nil, + nil, nil, nil, nil, 198, 136, 253, 133, nil, 3232, + 20, 45, nil, 6505, 6050, nil, nil, nil, 153, 6141, + 2936, 2714, 5959, 2492, nil, 62, 73, nil, nil, 8270, + 8380, 2418, 2196, nil, 176, nil, nil, nil, -13, 115, + nil, nil, 6596, -2, nil, 2048, nil, 6778, 6869, 5527, + 5737, nil, nil, 8435, 8325, nil, 194, 22, 1456, 7142, + 5836, nil, 5618, nil, nil, 7688, nil, 7870, nil, nil ] racc_action_default = [ - -1, -181, -136, -181, -15, -124, -16, -181, -118, -181, - -17, -181, -18, -126, -181, -181, -19, -181, -46, -34, - -20, -28, -181, -21, -29, -31, -181, -47, -22, -35, - -181, -2, -30, -23, -36, -32, -3, -181, -104, -37, - -33, -181, -181, -5, -38, -174, -8, -181, -39, -9, - -181, -40, -10, -181, -105, -103, -96, -181, -106, -97, - -11, -181, -181, -107, -26, -12, -181, -108, -27, -13, - -181, -14, -181, -181, -98, -100, -181, -181, -137, -55, - -136, -110, -114, -181, -129, -181, -181, -181, -115, -181, - -44, -118, -119, -181, -181, -181, -56, -136, -125, -181, - -181, -50, -45, -181, -181, -150, -7, -181, -25, -4, - -157, -181, -181, -181, -181, -58, -181, -181, -57, -181, - -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, - -181, -181, -93, -181, -181, -181, -181, -181, -181, -181, - -181, -181, -181, -181, -181, -181, -181, -181, -181, -181, - -181, -181, -181, -172, -181, -174, -176, -178, -109, -181, - -128, -181, -95, -51, -48, -49, -153, -52, -181, -54, - -53, -181, -181, -181, -143, -181, -181, -135, -138, -181, - -181, -137, -111, -112, -113, -181, -170, -181, -181, -181, - -117, -181, -181, -181, -151, -181, -181, -146, 313, -6, - -24, -181, -181, -181, -181, -90, -79, -68, -80, -69, - -179, -154, -81, -70, -59, -83, -71, -60, -180, -84, - -72, -61, -85, -82, -73, -62, -91, -86, -74, -63, - -87, -75, -64, -181, -181, -76, -65, -92, -88, -77, - -66, -89, -78, -67, -171, -175, -173, -177, -41, -181, - -127, -152, -181, -99, -181, -181, -140, -181, -181, -139, - -181, -130, -116, -123, -121, -120, -181, -42, -43, -132, - -181, -147, -181, -158, -159, -160, -181, -181, -156, -155, - -102, -181, -181, -165, -181, -94, -101, -141, -142, -181, - -102, -131, -122, -149, -148, -162, -161, -166, -181, -163, - -181, -181, -144, -133, -181, -181, -169, -167, -181, -134, - -164, -168, -145 ] + -1, -183, -97, -11, -183, -106, -183, -26, -12, -183, + -107, -183, -183, -27, -13, -183, -108, -14, -183, -183, + -183, -15, -124, -46, -118, -16, -28, -17, -29, -138, + -183, -31, -183, -18, -183, -183, -126, -35, -19, -36, + -183, -34, -20, -37, -21, -183, -47, -22, -38, -183, + -2, -30, -23, -39, -32, -3, -183, -104, -40, -183, + -103, -33, -183, -5, -183, -8, -176, -9, -183, -96, + -10, -183, -105, -183, -100, -98, -49, -155, -52, -183, + -183, -54, -53, -183, -125, -55, -138, -183, -183, -110, + -183, -114, -183, -115, -129, -45, -183, -44, -183, -118, + -119, -183, -183, -183, -139, -56, -138, -183, -50, -183, + -183, -152, -7, -183, -25, -4, -159, -183, -183, -183, + -183, -183, -183, -183, -183, -183, -183, -183, -183, -183, + -183, -183, -183, -183, -183, -183, -183, -58, -183, -183, + -57, -183, -183, -183, -183, -183, -183, -183, -183, -183, + -183, -183, -93, -183, -183, -183, -183, -183, -183, -95, + -183, -109, -183, -128, -180, -183, -174, -176, -178, -51, + -48, -183, -183, -183, -154, -172, -183, -183, -139, -183, + -111, -112, -113, -183, -183, -183, -117, -183, -183, -137, + -145, -183, -183, -140, -183, -183, -153, -148, -183, -183, + 320, -6, -24, -183, -183, -183, -183, -87, -75, -64, + -183, -183, -76, -65, -181, -92, -88, -77, -66, -89, + -78, -67, -182, -90, -79, -68, -80, -69, -156, -81, + -70, -59, -83, -71, -60, -84, -72, -61, -85, -82, + -73, -62, -91, -86, -74, -63, -127, -183, -41, -173, + -177, -175, -179, -99, -183, -183, -183, -183, -167, -183, + -130, -183, -116, -42, -43, -123, -121, -120, -183, -142, + -183, -183, -141, -183, -132, -183, -183, -149, -160, -161, + -162, -183, -183, -158, -157, -102, -94, -101, -183, -183, + -168, -165, -146, -183, -131, -183, -122, -143, -144, -183, + -102, -150, -151, -164, -163, -171, -183, -169, -183, -183, + -102, -133, -183, -166, -170, -147, -135, -183, -134, -136 ] racc_goto_table = [ - 31, 88, 41, 90, 78, 79, 111, 160, 158, 89, - 74, 96, 99, 98, 76, 93, 36, 100, 283, 101, - 102, 26, 204, 301, 103, 264, 265, 197, 281, 254, - 244, 73, 105, 155, 291, 156, 106, 157, nil, nil, - nil, 109, 88, nil, nil, 153, nil, 297, nil, 162, - nil, nil, 163, 107, nil, 164, nil, nil, nil, 165, - 160, 158, nil, 166, 167, nil, 306, nil, 168, nil, - nil, nil, 169, nil, 170, nil, nil, nil, nil, 178, - nil, nil, 181, nil, nil, nil, 90, nil, nil, 185, - nil, 186, 180, 188, 88, 88, nil, nil, 187, 181, - nil, nil, nil, 292, nil, nil, 233, 106, 199, 193, - nil, nil, nil, nil, 205, 206, 207, nil, 208, 209, - nil, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 279, 247, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 246, 245, nil, nil, 250, - 249, 248, nil, nil, nil, nil, nil, nil, 251, nil, - nil, nil, nil, nil, nil, nil, 257, 256, 259, nil, - 253, nil, nil, 90, 90, nil, nil, 188, nil, 266, - nil, nil, nil, 267, 268, nil, nil, nil, 271, nil, - nil, nil, nil, nil, 274, 275, 278, nil, nil, nil, - nil, 160, 158, nil, nil, nil, nil, nil, nil, nil, + 50, 161, 163, 59, 258, 206, 75, 76, 101, 77, + 166, 97, 78, 168, 79, 80, 266, 267, 81, 161, + 163, 82, 102, 85, 45, 84, 95, 293, 83, 117, + 197, 55, 104, 105, 257, 254, 249, 107, 108, 73, + 167, 294, 164, 109, nil, nil, nil, nil, nil, nil, + nil, nil, 111, nil, nil, 112, nil, nil, nil, 115, + nil, nil, nil, nil, nil, nil, nil, 159, nil, nil, + nil, 169, nil, nil, 170, nil, nil, nil, nil, 177, + 174, nil, 175, 185, nil, 290, 97, 113, 210, 178, + 179, nil, nil, nil, nil, nil, nil, 296, 284, 195, + nil, 187, nil, nil, nil, nil, 193, nil, nil, 178, + nil, 251, nil, 112, 252, 201, 305, nil, nil, nil, + nil, 207, 208, 209, nil, nil, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + nil, 226, 227, nil, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, nil, 256, nil, 248, 247, nil, 250, 246, + nil, nil, nil, nil, 97, 97, 253, nil, nil, nil, + nil, nil, 161, 163, nil, 187, 263, 264, 268, nil, + nil, nil, 270, nil, 269, 272, nil, nil, nil, nil, + nil, nil, 277, nil, nil, nil, nil, 279, 280, 283, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 88, 88, 282, nil, nil, - nil, nil, nil, nil, nil, nil, 285, nil, nil, 287, - 288, 90, 289, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 293, nil, 294, nil, 282, nil, 295, 296, - nil, nil, 300, nil, nil, nil, 302, nil, nil, nil, - nil, nil, 304, nil, nil, 282, nil, nil, nil, nil, - 305, nil, nil, 307, nil, nil, nil, 311, nil, nil, - 312 ] + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, 256, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, 97, 288, 286, nil, nil, + nil, nil, 292, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, 297, 298, 256, 299, nil, 301, 302, + nil, nil, nil, nil, 303, 304, nil, nil, nil, nil, + nil, nil, 306, nil, nil, nil, 307, nil, 309, nil, + nil, nil, nil, 312, nil, nil, nil, 314, nil, nil, + nil, 315, nil, 317 ] racc_goto_check = [ - 2, 30, 4, 21, 5, 5, 40, 36, 31, 5, - 26, 5, 6, 32, 37, 34, 3, 5, 43, 5, - 5, 1, 41, 38, 4, 23, 23, 39, 42, 25, - 44, 24, 5, 46, 8, 47, 2, 48, nil, nil, - nil, 2, 30, nil, nil, 45, nil, 43, nil, 4, - nil, nil, 5, 3, nil, 5, nil, nil, nil, 5, - 36, 31, nil, 5, 5, nil, 43, nil, 5, nil, - nil, nil, 5, nil, 5, nil, nil, nil, nil, 5, - nil, nil, 5, nil, nil, nil, 21, nil, nil, 5, - nil, 4, 37, 2, 30, 30, nil, nil, 34, 5, - nil, nil, nil, 23, nil, nil, 40, 2, 5, 37, - nil, nil, nil, nil, 5, 5, 5, nil, 5, 5, - nil, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 2, 31, 37, 4, 44, 42, 26, 5, 35, 5, + 46, 21, 5, 48, 5, 5, 23, 23, 5, 31, + 37, 5, 38, 5, 1, 32, 5, 39, 6, 41, + 40, 3, 5, 5, 43, 25, 45, 5, 5, 24, + 47, 8, 49, 4, nil, nil, nil, nil, nil, nil, + nil, nil, 5, nil, nil, 2, nil, nil, nil, 2, + nil, nil, nil, nil, nil, nil, nil, 4, nil, nil, + nil, 5, nil, nil, 5, nil, nil, nil, nil, 38, + 4, nil, 4, 35, nil, 44, 21, 3, 41, 5, + 5, nil, nil, nil, nil, nil, nil, 23, 42, 38, + nil, 2, nil, nil, nil, nil, 5, nil, nil, 5, + nil, 46, nil, 2, 48, 5, 44, nil, nil, nil, + nil, 5, 5, 5, nil, nil, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 41, 47, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 45, 4, nil, nil, 6, - 32, 5, nil, nil, nil, nil, nil, nil, 4, nil, - nil, nil, nil, nil, nil, nil, 2, 5, 5, nil, - 26, nil, nil, 21, 21, nil, nil, 2, nil, 2, - nil, nil, nil, 5, 5, nil, nil, nil, 4, nil, - nil, nil, nil, nil, 5, 5, 4, nil, nil, nil, - nil, 36, 31, nil, nil, nil, nil, nil, nil, nil, + nil, 5, 5, nil, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, nil, 21, nil, 5, 32, nil, 4, 6, + nil, nil, nil, nil, 21, 21, 26, nil, nil, nil, + nil, nil, 31, 37, nil, 2, 5, 5, 2, nil, + nil, nil, 2, nil, 5, 5, nil, nil, nil, nil, + nil, nil, 4, nil, nil, nil, nil, 5, 5, 4, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 30, 30, 21, nil, nil, - nil, nil, nil, nil, nil, nil, 4, nil, nil, 5, - 5, 21, 5, nil, nil, nil, nil, nil, nil, nil, - nil, nil, 4, nil, 4, nil, 21, nil, 5, 5, - nil, nil, 2, nil, nil, nil, 5, nil, nil, nil, - nil, nil, 5, nil, nil, 21, nil, nil, nil, nil, - 4, nil, nil, 4, nil, nil, nil, 2, nil, nil, - 5 ] + nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, nil, 21, nil, nil, nil, nil, nil, + nil, nil, nil, nil, nil, 21, 2, 4, nil, nil, + nil, nil, 5, nil, nil, nil, nil, nil, nil, nil, + nil, nil, nil, 5, 5, 21, 5, nil, 4, 4, + nil, nil, nil, nil, 5, 5, nil, nil, nil, nil, + nil, nil, 4, nil, nil, nil, 4, nil, 5, nil, + nil, nil, nil, 5, nil, nil, nil, 2, nil, nil, + nil, 5, nil, 5 ] racc_goto_pointer = [ - nil, 21, 0, 16, 2, 2, -2, nil, -227, nil, + nil, 24, 0, 31, 3, 3, 9, nil, -219, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, -5, nil, -163, 30, -143, 9, nil, nil, nil, - -4, -38, -1, nil, 7, nil, -39, 12, -261, -76, - -36, -89, -224, -234, -124, 0, -12, -10, -8 ] + nil, -13, nil, -171, 38, -137, 5, nil, nil, nil, + nil, -64, 6, nil, nil, -16, nil, -63, -7, -232, + -79, -33, -112, -142, -172, -129, -56, -26, -53, -24 ] racc_goto_default = [ - nil, nil, 175, nil, nil, 43, 46, 49, 52, 60, - 65, 69, 71, 4, 6, 10, 12, 16, 20, 23, - 28, 33, 38, 92, nil, 47, nil, 54, 58, 63, - 67, 81, 5, 82, nil, 13, 84, nil, nil, nil, - nil, nil, nil, nil, 45, nil, nil, nil, nil ] + nil, nil, 191, nil, nil, 63, 65, 67, 70, 3, + 8, 14, 17, 21, 25, 27, 33, 38, 42, 44, + 47, 52, 57, 100, nil, 64, nil, 72, 5, 10, + 16, 89, 22, 91, 93, nil, 36, 94, nil, nil, + nil, nil, nil, nil, nil, 66, nil, nil, nil, nil ] racc_reduce_table = [ 0, 0, :racc_error, - 0, 102, :_reduce_1, - 1, 102, :_reduce_2, - 1, 102, :_reduce_3, - 2, 102, :_reduce_4, - 1, 104, :_reduce_5, - 3, 104, :_reduce_6, - 2, 104, :_reduce_7, - 1, 106, :_reduce_none, - 1, 106, :_reduce_none, - 1, 106, :_reduce_none, - 1, 106, :_reduce_none, - 1, 106, :_reduce_none, - 1, 106, :_reduce_none, - 1, 106, :_reduce_none, - 1, 106, :_reduce_none, - 1, 106, :_reduce_none, - 1, 106, :_reduce_none, - 1, 106, :_reduce_none, - 1, 106, :_reduce_none, - 1, 106, :_reduce_none, - 1, 106, :_reduce_none, - 1, 106, :_reduce_none, - 1, 106, :_reduce_none, - 3, 105, :_reduce_24, - 2, 105, :_reduce_25, - 1, 103, :_reduce_none, - 1, 103, :_reduce_none, - 1, 123, :_reduce_28, - 1, 123, :_reduce_29, - 1, 123, :_reduce_30, - 1, 123, :_reduce_31, - 1, 123, :_reduce_32, - 1, 123, :_reduce_33, - 1, 123, :_reduce_34, - 1, 123, :_reduce_35, - 1, 123, :_reduce_36, - 1, 123, :_reduce_37, - 1, 123, :_reduce_38, - 1, 123, :_reduce_39, - 1, 123, :_reduce_40, - 3, 111, :_reduce_41, - 3, 124, :_reduce_42, - 3, 124, :_reduce_43, - 1, 124, :_reduce_44, - 2, 115, :_reduce_45, - 1, 115, :_reduce_46, - 1, 122, :_reduce_47, - 2, 110, :_reduce_48, - 2, 110, :_reduce_49, - 2, 110, :_reduce_50, - 2, 110, :_reduce_51, - 2, 110, :_reduce_52, - 2, 110, :_reduce_53, - 2, 110, :_reduce_54, - 2, 110, :_reduce_55, - 2, 110, :_reduce_56, - 2, 110, :_reduce_57, - 2, 110, :_reduce_58, - 3, 110, :_reduce_59, - 3, 110, :_reduce_60, - 3, 110, :_reduce_61, - 3, 110, :_reduce_62, - 3, 110, :_reduce_63, - 3, 110, :_reduce_64, - 3, 110, :_reduce_65, - 3, 110, :_reduce_66, - 3, 110, :_reduce_67, - 3, 110, :_reduce_68, - 3, 110, :_reduce_69, - 3, 110, :_reduce_70, - 3, 110, :_reduce_71, - 3, 110, :_reduce_72, - 3, 110, :_reduce_73, - 3, 110, :_reduce_74, - 3, 110, :_reduce_75, - 3, 110, :_reduce_76, - 3, 110, :_reduce_77, - 3, 110, :_reduce_78, - 3, 110, :_reduce_79, - 3, 110, :_reduce_80, - 3, 110, :_reduce_81, - 3, 110, :_reduce_82, - 3, 110, :_reduce_83, - 3, 110, :_reduce_84, - 3, 110, :_reduce_85, - 3, 110, :_reduce_86, - 3, 110, :_reduce_87, - 3, 110, :_reduce_88, - 3, 110, :_reduce_89, - 3, 110, :_reduce_90, - 3, 110, :_reduce_91, - 3, 110, :_reduce_92, - 2, 121, :_reduce_93, - 5, 109, :_reduce_94, - 2, 109, :_reduce_95, - 1, 126, :_reduce_96, - 1, 126, :_reduce_97, - 1, 125, :_reduce_98, - 3, 125, :_reduce_99, - 1, 127, :_reduce_none, - 4, 127, :_reduce_101, - 4, 120, :_reduce_102, - 1, 107, :_reduce_103, - 1, 107, :_reduce_104, - 1, 107, :_reduce_105, - 1, 107, :_reduce_106, - 1, 107, :_reduce_107, - 1, 107, :_reduce_108, - 2, 107, :_reduce_109, - 2, 107, :_reduce_110, - 2, 132, :_reduce_111, - 2, 132, :_reduce_112, - 2, 132, :_reduce_113, - 1, 132, :_reduce_114, - 1, 132, :_reduce_115, - 3, 134, :_reduce_116, - 3, 129, :_reduce_117, - 0, 135, :_reduce_118, - 1, 135, :_reduce_119, - 3, 135, :_reduce_120, - 3, 135, :_reduce_121, - 4, 135, :_reduce_122, - 3, 135, :_reduce_123, - 1, 108, :_reduce_124, - 2, 108, :_reduce_125, - 1, 108, :_reduce_126, - 3, 119, :_reduce_127, - 2, 133, :_reduce_128, - 2, 133, :_reduce_129, - 3, 137, :_reduce_130, - 4, 137, :_reduce_131, - 4, 136, :_reduce_132, - 6, 131, :_reduce_133, - 7, 131, :_reduce_134, - 3, 128, :_reduce_135, - 0, 138, :_reduce_136, - 1, 138, :_reduce_137, - 2, 138, :_reduce_138, - 3, 138, :_reduce_139, - 3, 138, :_reduce_140, - 4, 138, :_reduce_141, - 4, 138, :_reduce_142, - 2, 138, :_reduce_143, - 1, 139, :_reduce_144, - 3, 139, :_reduce_145, - 3, 113, :_reduce_146, - 4, 113, :_reduce_147, - 5, 113, :_reduce_148, - 3, 140, :_reduce_149, - 2, 114, :_reduce_150, - 3, 130, :_reduce_151, - 3, 116, :_reduce_152, - 2, 116, :_reduce_153, - 3, 116, :_reduce_154, - 4, 117, :_reduce_155, - 4, 117, :_reduce_156, - 1, 141, :_reduce_157, - 3, 141, :_reduce_158, - 2, 142, :_reduce_159, - 2, 142, :_reduce_160, - 3, 142, :_reduce_161, - 3, 142, :_reduce_162, - 5, 118, :_reduce_163, - 7, 118, :_reduce_164, - 1, 143, :_reduce_165, - 2, 143, :_reduce_166, - 3, 144, :_reduce_167, - 4, 144, :_reduce_168, - 3, 144, :_reduce_169, - 3, 145, :_reduce_170, - 2, 146, :_reduce_171, - 1, 147, :_reduce_172, - 2, 147, :_reduce_173, - 0, 148, :_reduce_174, - 2, 148, :_reduce_175, - 1, 149, :_reduce_176, - 2, 149, :_reduce_177, - 2, 112, :_reduce_178, - 3, 112, :_reduce_179, - 3, 112, :_reduce_180 ] + 0, 106, :_reduce_1, + 1, 106, :_reduce_2, + 1, 106, :_reduce_3, + 2, 106, :_reduce_4, + 1, 108, :_reduce_5, + 3, 108, :_reduce_6, + 2, 108, :_reduce_7, + 1, 110, :_reduce_none, + 1, 110, :_reduce_none, + 1, 110, :_reduce_none, + 1, 110, :_reduce_none, + 1, 110, :_reduce_none, + 1, 110, :_reduce_none, + 1, 110, :_reduce_none, + 1, 110, :_reduce_none, + 1, 110, :_reduce_none, + 1, 110, :_reduce_none, + 1, 110, :_reduce_none, + 1, 110, :_reduce_none, + 1, 110, :_reduce_none, + 1, 110, :_reduce_none, + 1, 110, :_reduce_none, + 1, 110, :_reduce_none, + 3, 109, :_reduce_24, + 2, 109, :_reduce_25, + 1, 107, :_reduce_none, + 1, 107, :_reduce_none, + 1, 127, :_reduce_28, + 1, 127, :_reduce_29, + 1, 127, :_reduce_30, + 1, 127, :_reduce_31, + 1, 127, :_reduce_32, + 1, 127, :_reduce_33, + 1, 127, :_reduce_34, + 1, 127, :_reduce_35, + 1, 127, :_reduce_36, + 1, 127, :_reduce_37, + 1, 127, :_reduce_38, + 1, 127, :_reduce_39, + 1, 127, :_reduce_40, + 3, 115, :_reduce_41, + 3, 128, :_reduce_42, + 3, 128, :_reduce_43, + 1, 128, :_reduce_44, + 2, 119, :_reduce_45, + 1, 119, :_reduce_46, + 1, 126, :_reduce_47, + 2, 114, :_reduce_48, + 2, 114, :_reduce_49, + 2, 114, :_reduce_50, + 2, 114, :_reduce_51, + 2, 114, :_reduce_52, + 2, 114, :_reduce_53, + 2, 114, :_reduce_54, + 2, 114, :_reduce_55, + 2, 114, :_reduce_56, + 2, 114, :_reduce_57, + 2, 114, :_reduce_58, + 3, 114, :_reduce_59, + 3, 114, :_reduce_60, + 3, 114, :_reduce_61, + 3, 114, :_reduce_62, + 3, 114, :_reduce_63, + 3, 114, :_reduce_64, + 3, 114, :_reduce_65, + 3, 114, :_reduce_66, + 3, 114, :_reduce_67, + 3, 114, :_reduce_68, + 3, 114, :_reduce_69, + 3, 114, :_reduce_70, + 3, 114, :_reduce_71, + 3, 114, :_reduce_72, + 3, 114, :_reduce_73, + 3, 114, :_reduce_74, + 3, 114, :_reduce_75, + 3, 114, :_reduce_76, + 3, 114, :_reduce_77, + 3, 114, :_reduce_78, + 3, 114, :_reduce_79, + 3, 114, :_reduce_80, + 3, 114, :_reduce_81, + 3, 114, :_reduce_82, + 3, 114, :_reduce_83, + 3, 114, :_reduce_84, + 3, 114, :_reduce_85, + 3, 114, :_reduce_86, + 3, 114, :_reduce_87, + 3, 114, :_reduce_88, + 3, 114, :_reduce_89, + 3, 114, :_reduce_90, + 3, 114, :_reduce_91, + 3, 114, :_reduce_92, + 2, 125, :_reduce_93, + 5, 113, :_reduce_94, + 2, 113, :_reduce_95, + 1, 130, :_reduce_96, + 1, 130, :_reduce_97, + 1, 129, :_reduce_98, + 3, 129, :_reduce_99, + 1, 131, :_reduce_none, + 4, 131, :_reduce_101, + 4, 124, :_reduce_102, + 1, 111, :_reduce_103, + 1, 111, :_reduce_104, + 1, 111, :_reduce_105, + 1, 111, :_reduce_106, + 1, 111, :_reduce_107, + 1, 111, :_reduce_108, + 2, 111, :_reduce_109, + 2, 111, :_reduce_110, + 2, 136, :_reduce_111, + 2, 136, :_reduce_112, + 2, 136, :_reduce_113, + 1, 136, :_reduce_114, + 1, 136, :_reduce_115, + 3, 138, :_reduce_116, + 3, 133, :_reduce_117, + 0, 140, :_reduce_118, + 1, 140, :_reduce_119, + 3, 140, :_reduce_120, + 3, 140, :_reduce_121, + 4, 140, :_reduce_122, + 3, 140, :_reduce_123, + 1, 112, :_reduce_124, + 2, 112, :_reduce_125, + 1, 112, :_reduce_126, + 3, 123, :_reduce_127, + 2, 137, :_reduce_128, + 2, 137, :_reduce_129, + 3, 142, :_reduce_130, + 4, 142, :_reduce_131, + 4, 141, :_reduce_132, + 6, 135, :_reduce_133, + 7, 135, :_reduce_134, + 6, 139, :_reduce_135, + 7, 139, :_reduce_136, + 3, 132, :_reduce_137, + 0, 143, :_reduce_138, + 1, 143, :_reduce_139, + 2, 143, :_reduce_140, + 3, 143, :_reduce_141, + 3, 143, :_reduce_142, + 4, 143, :_reduce_143, + 4, 143, :_reduce_144, + 2, 143, :_reduce_145, + 1, 144, :_reduce_146, + 3, 144, :_reduce_147, + 3, 117, :_reduce_148, + 4, 117, :_reduce_149, + 5, 117, :_reduce_150, + 3, 145, :_reduce_151, + 2, 118, :_reduce_152, + 3, 134, :_reduce_153, + 3, 120, :_reduce_154, + 2, 120, :_reduce_155, + 3, 120, :_reduce_156, + 4, 121, :_reduce_157, + 4, 121, :_reduce_158, + 1, 146, :_reduce_159, + 3, 146, :_reduce_160, + 2, 147, :_reduce_161, + 2, 147, :_reduce_162, + 3, 147, :_reduce_163, + 3, 147, :_reduce_164, + 5, 122, :_reduce_165, + 7, 122, :_reduce_166, + 1, 148, :_reduce_167, + 2, 148, :_reduce_168, + 3, 149, :_reduce_169, + 4, 149, :_reduce_170, + 3, 149, :_reduce_171, + 3, 150, :_reduce_172, + 2, 151, :_reduce_173, + 1, 152, :_reduce_174, + 2, 152, :_reduce_175, + 0, 153, :_reduce_176, + 2, 153, :_reduce_177, + 1, 154, :_reduce_178, + 2, 154, :_reduce_179, + 2, 116, :_reduce_180, + 3, 116, :_reduce_181, + 3, 116, :_reduce_182 ] -racc_reduce_n = 181 +racc_reduce_n = 183 -racc_shift_n = 313 +racc_shift_n = 320 racc_token_table = { false => 0, @@ -1075,85 +1060,89 @@ racc_token_table = { :PARAM_END => 21, :NEW => 22, :RETURN => 23, - :TRY => 24, - :CATCH => 25, - :FINALLY => 26, - :THROW => 27, - :BREAK => 28, - :CONTINUE => 29, - :FOR => 30, - :IN => 31, - :OF => 32, - :BY => 33, - :WHEN => 34, - :WHILE => 35, - :SWITCH => 36, - :LEADING_WHEN => 37, - :DELETE => 38, - :INSTANCEOF => 39, - :TYPEOF => 40, - :SUPER => 41, - :EXTENDS => 42, - :ARGUMENTS => 43, - :NEWLINE => 44, - :COMMENT => 45, - :JS => 46, - :INDENT => 47, - :OUTDENT => 48, - "?" => 49, - :UMINUS => 50, - :NOT => 51, - "!" => 52, - "!!" => 53, - "~" => 54, - "++" => 55, - "--" => 56, - "*" => 57, - "/" => 58, - "%" => 59, - "+" => 60, - "-" => 61, - "<<" => 62, - ">>" => 63, - ">>>" => 64, - "&" => 65, - "|" => 66, - "^" => 67, - "<=" => 68, - "<" => 69, - ">" => 70, - ">=" => 71, - "==" => 72, - "!=" => 73, - :IS => 74, - :ISNT => 75, - "&&" => 76, - "||" => 77, - :AND => 78, - :OR => 79, - "-=" => 80, - "+=" => 81, - "/=" => 82, - "*=" => 83, - "%=" => 84, - "." => 85, - "||=" => 86, - "&&=" => 87, - "?=" => 88, - :ASSIGN => 89, - "->" => 90, - "=>" => 91, - "\n" => 92, - ";" => 93, - "," => 94, - "[" => 95, - "]" => 96, - "{" => 97, - "}" => 98, - "(" => 99, - ")" => 100 } + :CALL_START => 24, + :CALL_END => 25, + :INDEX_START => 26, + :INDEX_END => 27, + :TRY => 28, + :CATCH => 29, + :FINALLY => 30, + :THROW => 31, + :BREAK => 32, + :CONTINUE => 33, + :FOR => 34, + :IN => 35, + :OF => 36, + :BY => 37, + :WHEN => 38, + :WHILE => 39, + :SWITCH => 40, + :LEADING_WHEN => 41, + :DELETE => 42, + :INSTANCEOF => 43, + :TYPEOF => 44, + :SUPER => 45, + :EXTENDS => 46, + :ARGUMENTS => 47, + :NEWLINE => 48, + :COMMENT => 49, + :JS => 50, + :INDENT => 51, + :OUTDENT => 52, + "?" => 53, + :UMINUS => 54, + :NOT => 55, + "!" => 56, + "!!" => 57, + "~" => 58, + "++" => 59, + "--" => 60, + "*" => 61, + "/" => 62, + "%" => 63, + "+" => 64, + "-" => 65, + "<<" => 66, + ">>" => 67, + ">>>" => 68, + "&" => 69, + "|" => 70, + "^" => 71, + "<=" => 72, + "<" => 73, + ">" => 74, + ">=" => 75, + "==" => 76, + "!=" => 77, + :IS => 78, + :ISNT => 79, + "&&" => 80, + "||" => 81, + :AND => 82, + :OR => 83, + "-=" => 84, + "+=" => 85, + "/=" => 86, + "*=" => 87, + "%=" => 88, + "." => 89, + "||=" => 90, + "&&=" => 91, + "?=" => 92, + :ASSIGN => 93, + "->" => 94, + "=>" => 95, + "\n" => 96, + ";" => 97, + "," => 98, + "{" => 99, + "}" => 100, + "[" => 101, + "]" => 102, + "(" => 103, + ")" => 104 } -racc_nt_base = 101 +racc_nt_base = 105 racc_use_result_var = true @@ -1198,6 +1187,10 @@ Racc_token_to_s_table = [ "PARAM_END", "NEW", "RETURN", + "CALL_START", + "CALL_END", + "INDEX_START", + "INDEX_END", "TRY", "CATCH", "FINALLY", @@ -1269,10 +1262,10 @@ Racc_token_to_s_table = [ "\"\\n\"", "\";\"", "\",\"", - "\"[\"", - "\"]\"", "\"{\"", "\"}\"", + "\"[\"", + "\"]\"", "\"(\"", "\")\"", "$start", @@ -1309,6 +1302,7 @@ Racc_token_to_s_table = [ "Accessor", "Invocation", "Index", + "Slice", "AssignList", "Super", "Arguments", @@ -1331,49 +1325,49 @@ Racc_debug_parser = false # reduce 0 omitted -module_eval(<<'.,.,', 'grammar.y', 48) +module_eval(<<'.,.,', 'grammar.y', 49) def _reduce_1(val, _values, result) result = Expressions.new result end .,., -module_eval(<<'.,.,', 'grammar.y', 49) +module_eval(<<'.,.,', 'grammar.y', 50) def _reduce_2(val, _values, result) result = Expressions.new result end .,., -module_eval(<<'.,.,', 'grammar.y', 50) +module_eval(<<'.,.,', 'grammar.y', 51) def _reduce_3(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 51) +module_eval(<<'.,.,', 'grammar.y', 52) def _reduce_4(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 56) +module_eval(<<'.,.,', 'grammar.y', 57) def _reduce_5(val, _values, result) result = Expressions.wrap(val) result end .,., -module_eval(<<'.,.,', 'grammar.y', 57) +module_eval(<<'.,.,', 'grammar.y', 58) def _reduce_6(val, _values, result) result = val[0] << val[2] result end .,., -module_eval(<<'.,.,', 'grammar.y', 58) +module_eval(<<'.,.,', 'grammar.y', 59) def _reduce_7(val, _values, result) result = val[0] result @@ -1412,14 +1406,14 @@ module_eval(<<'.,.,', 'grammar.y', 58) # reduce 23 omitted -module_eval(<<'.,.,', 'grammar.y', 85) +module_eval(<<'.,.,', 'grammar.y', 86) def _reduce_24(val, _values, result) result = val[1] result end .,., -module_eval(<<'.,.,', 'grammar.y', 86) +module_eval(<<'.,.,', 'grammar.y', 87) def _reduce_25(val, _values, result) result = Expressions.new result @@ -1430,504 +1424,504 @@ module_eval(<<'.,.,', 'grammar.y', 86) # reduce 27 omitted -module_eval(<<'.,.,', 'grammar.y', 97) +module_eval(<<'.,.,', 'grammar.y', 98) def _reduce_28(val, _values, result) result = LiteralNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 98) +module_eval(<<'.,.,', 'grammar.y', 99) def _reduce_29(val, _values, result) result = LiteralNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 99) +module_eval(<<'.,.,', 'grammar.y', 100) def _reduce_30(val, _values, result) result = LiteralNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 100) +module_eval(<<'.,.,', 'grammar.y', 101) def _reduce_31(val, _values, result) result = LiteralNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 101) +module_eval(<<'.,.,', 'grammar.y', 102) def _reduce_32(val, _values, result) result = LiteralNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 102) +module_eval(<<'.,.,', 'grammar.y', 103) def _reduce_33(val, _values, result) result = LiteralNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 103) +module_eval(<<'.,.,', 'grammar.y', 104) def _reduce_34(val, _values, result) result = LiteralNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 104) +module_eval(<<'.,.,', 'grammar.y', 105) def _reduce_35(val, _values, result) result = LiteralNode.new(Value.new(true)) result end .,., -module_eval(<<'.,.,', 'grammar.y', 105) +module_eval(<<'.,.,', 'grammar.y', 106) def _reduce_36(val, _values, result) result = LiteralNode.new(Value.new(false)) result end .,., -module_eval(<<'.,.,', 'grammar.y', 106) +module_eval(<<'.,.,', 'grammar.y', 107) def _reduce_37(val, _values, result) result = LiteralNode.new(Value.new(true)) result end .,., -module_eval(<<'.,.,', 'grammar.y', 107) +module_eval(<<'.,.,', 'grammar.y', 108) def _reduce_38(val, _values, result) result = LiteralNode.new(Value.new(false)) result end .,., -module_eval(<<'.,.,', 'grammar.y', 108) +module_eval(<<'.,.,', 'grammar.y', 109) def _reduce_39(val, _values, result) result = LiteralNode.new(Value.new(true)) result end .,., -module_eval(<<'.,.,', 'grammar.y', 109) +module_eval(<<'.,.,', 'grammar.y', 110) def _reduce_40(val, _values, result) result = LiteralNode.new(Value.new(false)) result end .,., -module_eval(<<'.,.,', 'grammar.y', 114) +module_eval(<<'.,.,', 'grammar.y', 115) def _reduce_41(val, _values, result) result = AssignNode.new(val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 119) +module_eval(<<'.,.,', 'grammar.y', 120) def _reduce_42(val, _values, result) result = AssignNode.new(ValueNode.new(val[0]), val[2], :object) result end .,., -module_eval(<<'.,.,', 'grammar.y', 120) +module_eval(<<'.,.,', 'grammar.y', 121) def _reduce_43(val, _values, result) result = AssignNode.new(ValueNode.new(LiteralNode.new(val[0])), val[2], :object) result end .,., -module_eval(<<'.,.,', 'grammar.y', 121) +module_eval(<<'.,.,', 'grammar.y', 122) def _reduce_44(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 126) +module_eval(<<'.,.,', 'grammar.y', 127) def _reduce_45(val, _values, result) result = ReturnNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 127) +module_eval(<<'.,.,', 'grammar.y', 128) def _reduce_46(val, _values, result) result = ReturnNode.new(ValueNode.new(Value.new('null'))) result end .,., -module_eval(<<'.,.,', 'grammar.y', 132) +module_eval(<<'.,.,', 'grammar.y', 133) def _reduce_47(val, _values, result) result = CommentNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 139) +module_eval(<<'.,.,', 'grammar.y', 140) def _reduce_48(val, _values, result) result = OpNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 140) +module_eval(<<'.,.,', 'grammar.y', 141) def _reduce_49(val, _values, result) result = OpNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 141) +module_eval(<<'.,.,', 'grammar.y', 142) def _reduce_50(val, _values, result) result = OpNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 142) +module_eval(<<'.,.,', 'grammar.y', 143) def _reduce_51(val, _values, result) result = OpNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 143) +module_eval(<<'.,.,', 'grammar.y', 144) def _reduce_52(val, _values, result) result = OpNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 144) +module_eval(<<'.,.,', 'grammar.y', 145) def _reduce_53(val, _values, result) result = OpNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 145) +module_eval(<<'.,.,', 'grammar.y', 146) def _reduce_54(val, _values, result) result = OpNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 146) +module_eval(<<'.,.,', 'grammar.y', 147) def _reduce_55(val, _values, result) result = OpNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 147) +module_eval(<<'.,.,', 'grammar.y', 148) def _reduce_56(val, _values, result) result = OpNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 148) +module_eval(<<'.,.,', 'grammar.y', 149) def _reduce_57(val, _values, result) result = OpNode.new(val[1], val[0], nil, true) result end .,., -module_eval(<<'.,.,', 'grammar.y', 149) +module_eval(<<'.,.,', 'grammar.y', 150) def _reduce_58(val, _values, result) result = OpNode.new(val[1], val[0], nil, true) result end .,., -module_eval(<<'.,.,', 'grammar.y', 151) +module_eval(<<'.,.,', 'grammar.y', 152) def _reduce_59(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 152) +module_eval(<<'.,.,', 'grammar.y', 153) def _reduce_60(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 153) +module_eval(<<'.,.,', 'grammar.y', 154) def _reduce_61(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 155) +module_eval(<<'.,.,', 'grammar.y', 156) def _reduce_62(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 156) +module_eval(<<'.,.,', 'grammar.y', 157) def _reduce_63(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 158) +module_eval(<<'.,.,', 'grammar.y', 159) def _reduce_64(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 159) +module_eval(<<'.,.,', 'grammar.y', 160) def _reduce_65(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 160) +module_eval(<<'.,.,', 'grammar.y', 161) def _reduce_66(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 162) +module_eval(<<'.,.,', 'grammar.y', 163) def _reduce_67(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 163) +module_eval(<<'.,.,', 'grammar.y', 164) def _reduce_68(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 164) +module_eval(<<'.,.,', 'grammar.y', 165) def _reduce_69(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 166) +module_eval(<<'.,.,', 'grammar.y', 167) def _reduce_70(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 167) +module_eval(<<'.,.,', 'grammar.y', 168) def _reduce_71(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 168) +module_eval(<<'.,.,', 'grammar.y', 169) def _reduce_72(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 169) +module_eval(<<'.,.,', 'grammar.y', 170) def _reduce_73(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 171) +module_eval(<<'.,.,', 'grammar.y', 172) def _reduce_74(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 172) +module_eval(<<'.,.,', 'grammar.y', 173) def _reduce_75(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 173) +module_eval(<<'.,.,', 'grammar.y', 174) def _reduce_76(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 174) +module_eval(<<'.,.,', 'grammar.y', 175) def _reduce_77(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 176) +module_eval(<<'.,.,', 'grammar.y', 177) def _reduce_78(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 177) +module_eval(<<'.,.,', 'grammar.y', 178) def _reduce_79(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 178) +module_eval(<<'.,.,', 'grammar.y', 179) def _reduce_80(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 179) +module_eval(<<'.,.,', 'grammar.y', 180) def _reduce_81(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 180) +module_eval(<<'.,.,', 'grammar.y', 181) def _reduce_82(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 182) +module_eval(<<'.,.,', 'grammar.y', 183) def _reduce_83(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 183) +module_eval(<<'.,.,', 'grammar.y', 184) def _reduce_84(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 184) +module_eval(<<'.,.,', 'grammar.y', 185) def _reduce_85(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 185) +module_eval(<<'.,.,', 'grammar.y', 186) def _reduce_86(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 186) +module_eval(<<'.,.,', 'grammar.y', 187) def _reduce_87(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 187) +module_eval(<<'.,.,', 'grammar.y', 188) def _reduce_88(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 188) +module_eval(<<'.,.,', 'grammar.y', 189) def _reduce_89(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 189) +module_eval(<<'.,.,', 'grammar.y', 190) def _reduce_90(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 191) +module_eval(<<'.,.,', 'grammar.y', 192) def _reduce_91(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 192) +module_eval(<<'.,.,', 'grammar.y', 193) def _reduce_92(val, _values, result) result = OpNode.new(val[1], val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 197) +module_eval(<<'.,.,', 'grammar.y', 198) def _reduce_93(val, _values, result) result = ExistenceNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 203) +module_eval(<<'.,.,', 'grammar.y', 204) def _reduce_94(val, _values, result) result = CodeNode.new(val[1], val[4], val[3]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 204) +module_eval(<<'.,.,', 'grammar.y', 205) def _reduce_95(val, _values, result) result = CodeNode.new([], val[1], val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 209) +module_eval(<<'.,.,', 'grammar.y', 210) def _reduce_96(val, _values, result) result = :func result end .,., -module_eval(<<'.,.,', 'grammar.y', 210) +module_eval(<<'.,.,', 'grammar.y', 211) def _reduce_97(val, _values, result) result = :boundfunc result end .,., -module_eval(<<'.,.,', 'grammar.y', 215) +module_eval(<<'.,.,', 'grammar.y', 216) def _reduce_98(val, _values, result) result = val result end .,., -module_eval(<<'.,.,', 'grammar.y', 216) +module_eval(<<'.,.,', 'grammar.y', 217) def _reduce_99(val, _values, result) result = val[0] << val[2] result @@ -1936,561 +1930,575 @@ module_eval(<<'.,.,', 'grammar.y', 216) # reduce 100 omitted -module_eval(<<'.,.,', 'grammar.y', 222) +module_eval(<<'.,.,', 'grammar.y', 223) def _reduce_101(val, _values, result) result = SplatNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 227) +module_eval(<<'.,.,', 'grammar.y', 228) def _reduce_102(val, _values, result) result = SplatNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 232) +module_eval(<<'.,.,', 'grammar.y', 233) def _reduce_103(val, _values, result) result = ValueNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 233) +module_eval(<<'.,.,', 'grammar.y', 234) def _reduce_104(val, _values, result) result = ValueNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 234) +module_eval(<<'.,.,', 'grammar.y', 235) def _reduce_105(val, _values, result) result = ValueNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 235) +module_eval(<<'.,.,', 'grammar.y', 236) def _reduce_106(val, _values, result) result = ValueNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 236) +module_eval(<<'.,.,', 'grammar.y', 237) def _reduce_107(val, _values, result) result = ValueNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 237) +module_eval(<<'.,.,', 'grammar.y', 238) def _reduce_108(val, _values, result) result = ValueNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 238) +module_eval(<<'.,.,', 'grammar.y', 239) def _reduce_109(val, _values, result) result = val[0] << val[1] result end .,., -module_eval(<<'.,.,', 'grammar.y', 239) +module_eval(<<'.,.,', 'grammar.y', 240) def _reduce_110(val, _values, result) result = ValueNode.new(val[0], [val[1]]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 244) +module_eval(<<'.,.,', 'grammar.y', 245) def _reduce_111(val, _values, result) result = AccessorNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 245) +module_eval(<<'.,.,', 'grammar.y', 246) def _reduce_112(val, _values, result) result = AccessorNode.new(val[1], :prototype) result end .,., -module_eval(<<'.,.,', 'grammar.y', 246) +module_eval(<<'.,.,', 'grammar.y', 247) def _reduce_113(val, _values, result) result = AccessorNode.new(val[1], :soak) result end .,., -module_eval(<<'.,.,', 'grammar.y', 247) +module_eval(<<'.,.,', 'grammar.y', 248) def _reduce_114(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 248) +module_eval(<<'.,.,', 'grammar.y', 249) def _reduce_115(val, _values, result) result = SliceNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 253) +module_eval(<<'.,.,', 'grammar.y', 254) def _reduce_116(val, _values, result) result = IndexNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 258) +module_eval(<<'.,.,', 'grammar.y', 259) def _reduce_117(val, _values, result) result = ObjectNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 263) +module_eval(<<'.,.,', 'grammar.y', 264) def _reduce_118(val, _values, result) result = [] result end .,., -module_eval(<<'.,.,', 'grammar.y', 264) +module_eval(<<'.,.,', 'grammar.y', 265) def _reduce_119(val, _values, result) result = val result end .,., -module_eval(<<'.,.,', 'grammar.y', 265) +module_eval(<<'.,.,', 'grammar.y', 266) def _reduce_120(val, _values, result) result = val[0] << val[2] result end .,., -module_eval(<<'.,.,', 'grammar.y', 266) +module_eval(<<'.,.,', 'grammar.y', 267) def _reduce_121(val, _values, result) result = val[0] << val[2] result end .,., -module_eval(<<'.,.,', 'grammar.y', 268) +module_eval(<<'.,.,', 'grammar.y', 269) def _reduce_122(val, _values, result) result = val[0] << val[3] result end .,., -module_eval(<<'.,.,', 'grammar.y', 269) +module_eval(<<'.,.,', 'grammar.y', 270) def _reduce_123(val, _values, result) result = val[1] result end .,., -module_eval(<<'.,.,', 'grammar.y', 274) +module_eval(<<'.,.,', 'grammar.y', 275) def _reduce_124(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 275) +module_eval(<<'.,.,', 'grammar.y', 276) def _reduce_125(val, _values, result) result = val[1].new_instance result end .,., -module_eval(<<'.,.,', 'grammar.y', 276) +module_eval(<<'.,.,', 'grammar.y', 277) def _reduce_126(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 281) +module_eval(<<'.,.,', 'grammar.y', 282) def _reduce_127(val, _values, result) result = ExtendsNode.new(val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 286) +module_eval(<<'.,.,', 'grammar.y', 287) def _reduce_128(val, _values, result) result = CallNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 287) +module_eval(<<'.,.,', 'grammar.y', 288) def _reduce_129(val, _values, result) result = CallNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 292) +module_eval(<<'.,.,', 'grammar.y', 293) def _reduce_130(val, _values, result) result = val[1] result end .,., -module_eval(<<'.,.,', 'grammar.y', 293) +module_eval(<<'.,.,', 'grammar.y', 294) def _reduce_131(val, _values, result) result = val[1] << val[3] result end .,., -module_eval(<<'.,.,', 'grammar.y', 298) +module_eval(<<'.,.,', 'grammar.y', 299) def _reduce_132(val, _values, result) result = CallNode.new(Value.new('super'), val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 304) +module_eval(<<'.,.,', 'grammar.y', 305) def _reduce_133(val, _values, result) result = RangeNode.new(val[1], val[4]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 306) +module_eval(<<'.,.,', 'grammar.y', 307) def _reduce_134(val, _values, result) result = RangeNode.new(val[1], val[5], true) result end .,., -module_eval(<<'.,.,', 'grammar.y', 311) +module_eval(<<'.,.,', 'grammar.y', 313) def _reduce_135(val, _values, result) - result = ArrayNode.new(val[1]) + result = RangeNode.new(val[1], val[4]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 316) +module_eval(<<'.,.,', 'grammar.y', 315) def _reduce_136(val, _values, result) - result = [] - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 317) - def _reduce_137(val, _values, result) - result = val - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 318) - def _reduce_138(val, _values, result) - result = [val[1]] - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 319) - def _reduce_139(val, _values, result) - result = val[0] << val[2] + result = RangeNode.new(val[1], val[5], true) result end .,., module_eval(<<'.,.,', 'grammar.y', 320) - def _reduce_140(val, _values, result) - result = val[0] << val[2] + def _reduce_137(val, _values, result) + result = ArrayNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 321) - def _reduce_141(val, _values, result) - result = val[0] << val[3] +module_eval(<<'.,.,', 'grammar.y', 325) + def _reduce_138(val, _values, result) + result = [] result end .,., -module_eval(<<'.,.,', 'grammar.y', 322) - def _reduce_142(val, _values, result) - result = val[0] << val[3] - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 323) - def _reduce_143(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 328) - def _reduce_144(val, _values, result) - result = val[0] - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 329) - def _reduce_145(val, _values, result) - result = ([val[0]] << val[2]).flatten - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 334) - def _reduce_146(val, _values, result) - result = TryNode.new(val[1], val[2][0], val[2][1]) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 335) - def _reduce_147(val, _values, result) - result = TryNode.new(val[1], nil, nil, val[3]) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 337) - def _reduce_148(val, _values, result) - result = TryNode.new(val[1], val[2][0], val[2][1], val[4]) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 342) - def _reduce_149(val, _values, result) - result = [val[1], val[2]] - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 347) - def _reduce_150(val, _values, result) - result = ThrowNode.new(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 352) - def _reduce_151(val, _values, result) - result = ParentheticalNode.new(val[1], val[0].line) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 357) - def _reduce_152(val, _values, result) - result = WhileNode.new(val[1], val[2]) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 358) - def _reduce_153(val, _values, result) - result = WhileNode.new(val[1], nil) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 359) - def _reduce_154(val, _values, result) - result = WhileNode.new(val[2], Expressions.wrap(val[0])) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 366) - def _reduce_155(val, _values, result) - result = ForNode.new(val[0], val[3], val[2][0], val[2][1]) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 367) - def _reduce_156(val, _values, result) - result = ForNode.new(val[3], val[2], val[1][0], val[1][1]) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 372) - def _reduce_157(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 326) + def _reduce_139(val, _values, result) result = val result end .,., -module_eval(<<'.,.,', 'grammar.y', 373) +module_eval(<<'.,.,', 'grammar.y', 327) + def _reduce_140(val, _values, result) + result = [val[1]] + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 328) + def _reduce_141(val, _values, result) + result = val[0] << val[2] + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 329) + def _reduce_142(val, _values, result) + result = val[0] << val[2] + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 330) + def _reduce_143(val, _values, result) + result = val[0] << val[3] + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 331) + def _reduce_144(val, _values, result) + result = val[0] << val[3] + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 332) + def _reduce_145(val, _values, result) + result = val[0] + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 337) + def _reduce_146(val, _values, result) + result = val[0] + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 338) + def _reduce_147(val, _values, result) + result = ([val[0]] << val[2]).flatten + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 343) + def _reduce_148(val, _values, result) + result = TryNode.new(val[1], val[2][0], val[2][1]) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 344) + def _reduce_149(val, _values, result) + result = TryNode.new(val[1], nil, nil, val[3]) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 346) + def _reduce_150(val, _values, result) + result = TryNode.new(val[1], val[2][0], val[2][1], val[4]) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 351) + def _reduce_151(val, _values, result) + result = [val[1], val[2]] + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 356) + def _reduce_152(val, _values, result) + result = ThrowNode.new(val[1]) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 361) + def _reduce_153(val, _values, result) + result = ParentheticalNode.new(val[1], val[0].line) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 366) + def _reduce_154(val, _values, result) + result = WhileNode.new(val[1], val[2]) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 367) + def _reduce_155(val, _values, result) + result = WhileNode.new(val[1], nil) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 368) + def _reduce_156(val, _values, result) + result = WhileNode.new(val[2], Expressions.wrap(val[0])) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 375) + def _reduce_157(val, _values, result) + result = ForNode.new(val[0], val[3], val[2][0], val[2][1]) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 376) def _reduce_158(val, _values, result) - result = [val[0], val[2]] - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 378) - def _reduce_159(val, _values, result) - result = {:source => val[1]} - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 379) - def _reduce_160(val, _values, result) - result = {:source => val[1], :object => true} + result = ForNode.new(val[3], val[2], val[1][0], val[1][1]) result end .,., module_eval(<<'.,.,', 'grammar.y', 381) + def _reduce_159(val, _values, result) + result = val + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 382) + def _reduce_160(val, _values, result) + result = [val[0], val[2]] + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 387) def _reduce_161(val, _values, result) + result = {:source => val[1]} + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 388) + def _reduce_162(val, _values, result) + result = {:source => val[1], :object => true} + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 390) + def _reduce_163(val, _values, result) result = val[0].merge(:filter => val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 383) - def _reduce_162(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 392) + def _reduce_164(val, _values, result) result = val[0].merge(:step => val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 389) - def _reduce_163(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 398) + def _reduce_165(val, _values, result) result = val[3].rewrite_condition(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 391) - def _reduce_164(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 400) + def _reduce_166(val, _values, result) result = val[3].rewrite_condition(val[1]).add_else(val[5]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 396) - def _reduce_165(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 405) + def _reduce_167(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 397) - def _reduce_166(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 406) + def _reduce_168(val, _values, result) result = val[0] << val[1] result end .,., -module_eval(<<'.,.,', 'grammar.y', 402) - def _reduce_167(val, _values, result) - result = IfNode.new(val[1], val[2], nil, {:statement => true}) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 404) - def _reduce_168(val, _values, result) - result = IfNode.new(val[1], val[2], nil, {:statement => true}) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 405) +module_eval(<<'.,.,', 'grammar.y', 411) def _reduce_169(val, _values, result) + result = IfNode.new(val[1], val[2], nil, {:statement => true}) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 413) + def _reduce_170(val, _values, result) + result = IfNode.new(val[1], val[2], nil, {:statement => true}) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 414) + def _reduce_171(val, _values, result) result = val[2].add_comment(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 410) - def _reduce_170(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 419) + def _reduce_172(val, _values, result) result = IfNode.new(val[1], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 415) - def _reduce_171(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 424) + def _reduce_173(val, _values, result) result = val[1].force_statement result end .,., -module_eval(<<'.,.,', 'grammar.y', 420) - def _reduce_172(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 429) + def _reduce_174(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 421) - def _reduce_173(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 430) + def _reduce_175(val, _values, result) result = val[0].add_else(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 426) - def _reduce_174(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 435) + def _reduce_176(val, _values, result) result = nil result end .,., -module_eval(<<'.,.,', 'grammar.y', 427) - def _reduce_175(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 436) + def _reduce_177(val, _values, result) result = val[1] result end .,., -module_eval(<<'.,.,', 'grammar.y', 432) - def _reduce_176(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 441) + def _reduce_178(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 433) - def _reduce_177(val, _values, result) - result = val[0].add_else(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 438) - def _reduce_178(val, _values, result) - result = val[0].add_else(val[1]) - result - end -.,., - -module_eval(<<'.,.,', 'grammar.y', 439) +module_eval(<<'.,.,', 'grammar.y', 442) def _reduce_179(val, _values, result) + result = val[0].add_else(val[1]) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 447) + def _reduce_180(val, _values, result) + result = val[0].add_else(val[1]) + result + end +.,., + +module_eval(<<'.,.,', 'grammar.y', 448) + def _reduce_181(val, _values, result) result = IfNode.new(val[2], Expressions.wrap(val[0]), nil, {:statement => true}) result end .,., -module_eval(<<'.,.,', 'grammar.y', 440) - def _reduce_180(val, _values, result) +module_eval(<<'.,.,', 'grammar.y', 449) + def _reduce_182(val, _values, result) result = IfNode.new(val[2], Expressions.wrap(val[0]), nil, {:statement => true, :invert => true}) result end diff --git a/lib/coffee_script/rewriter.rb b/lib/coffee_script/rewriter.rb index 7769694f..399e4553 100644 --- a/lib/coffee_script/rewriter.rb +++ b/lib/coffee_script/rewriter.rb @@ -6,7 +6,8 @@ module CoffeeScript class Rewriter # Tokens that must be balanced. - BALANCED_PAIRS = [['(', ')'], ['[', ']'], ['{', '}'], [:INDENT, :OUTDENT], [:PARAM_START, :PARAM_END]] + BALANCED_PAIRS = [['(', ')'], ['[', ']'], ['{', '}'], [:INDENT, :OUTDENT], + [:PARAM_START, :PARAM_END], [:CALL_START, :CALL_END], [:INDEX_START, :INDEX_END]] # Tokens that signal the start of a balanced pair. EXPRESSION_START = BALANCED_PAIRS.map {|pair| pair.first } @@ -45,6 +46,7 @@ module CoffeeScript remove_leading_newlines remove_mid_expression_newlines move_commas_outside_outdents + close_open_calls_and_indexes add_implicit_parentheses add_implicit_indentation ensure_balance(*BALANCED_PAIRS) @@ -119,6 +121,35 @@ module CoffeeScript end end + # We've tagged the opening parenthesis of a method call, and the opening + # bracket of an indexing operation. Match them with their close. + def close_open_calls_and_indexes + parens, brackets = [0], [0] + scan_tokens do |prev, token, post, i| + case token[0] + when :CALL_START then parens.push(0) + when :INDEX_START then brackets.push(0) + when '(' then parens[-1] += 1 + when '[' then brackets[-1] += 1 + when ')' + if parens.last == 0 + parens.pop + token[0] = :CALL_END + else + parens[-1] -= 1 + end + when ']' + if brackets.last == 0 + brackets.pop + token[0] = :INDEX_END + else + brackets[-1] -= 1 + end + end + next 1 + end + end + # Because our grammar is LALR(1), it can't handle some single-line # expressions that lack ending delimiters. Use the lexer to add the implicit # blocks, so it doesn't need to. @@ -165,12 +196,12 @@ module CoffeeScript if (stack.last > 0 && (IMPLICIT_END.include?(token[0]) || post.nil?)) && !(token[0] == :PARAM_START && prev[0] == ',') idx = token[0] == :OUTDENT ? i + 1 : i - stack.last.times { @tokens.insert(idx, [')', Value.new(')', token[1].line)]) } + stack.last.times { @tokens.insert(idx, [:CALL_END, Value.new(')', token[1].line)]) } size, stack[-1] = stack[-1] + 1, 0 next size end next 1 unless IMPLICIT_FUNC.include?(prev[0]) && IMPLICIT_CALL.include?(token[0]) - @tokens.insert(i, ['(', Value.new('(', token[1].line)]) + @tokens.insert(i, [:CALL_START, Value.new('(', token[1].line)]) stack[-1] += 1 next token[0] == :PARAM_START ? 1 : 2 end diff --git a/test/fixtures/generation/each.tokens b/test/fixtures/generation/each.tokens index 1f5761c4..70d9cff1 100644 --- a/test/fixtures/generation/each.tokens +++ b/test/fixtures/generation/each.tokens @@ -1 +1 @@ -[[:COMMENT, [" The cornerstone, an each implementation.", " Handles objects implementing forEach, arrays, and raw objects."]], ["\n", "\n"], [:IDENTIFIER, "_"], [:PROPERTY_ACCESS, "."], [:IDENTIFIER, "each"], [:ASSIGN, ":"], [:PARAM_START, "("], [:PARAM, "obj"], [",", ","], [:PARAM, "iterator"], [",", ","], [:PARAM, "context"], [:PARAM_END, ")"], ["->", "->"], [:INDENT, 2], [:IDENTIFIER, "index"], [:ASSIGN, ":"], [:NUMBER, "0"], ["\n", "\n"], [:TRY, "try"], [:INDENT, 2], [:IF, "if"], [:IDENTIFIER, "obj"], [:PROPERTY_ACCESS, "."], [:IDENTIFIER, "forEach"], [:INDENT, 2], [:IDENTIFIER, "obj"], [:PROPERTY_ACCESS, "."], [:IDENTIFIER, "forEach"], ["(", "("], [:IDENTIFIER, "iterator"], [",", ","], [:IDENTIFIER, "context"], [")", ")"], [:OUTDENT, 2], [:ELSE, "else"], [:IF, "if"], [:IDENTIFIER, "_"], [:PROPERTY_ACCESS, "."], [:IDENTIFIER, "isArray"], ["(", "("], [:IDENTIFIER, "obj"], [")", ")"], [:OR, "or"], [:IDENTIFIER, "_"], [:PROPERTY_ACCESS, "."], [:IDENTIFIER, "isArguments"], ["(", "("], [:IDENTIFIER, "obj"], [")", ")"], [:INDENT, 2], [:IDENTIFIER, "iterator"], [:PROPERTY_ACCESS, "."], [:IDENTIFIER, "call"], ["(", "("], [:IDENTIFIER, "context"], [",", ","], [:IDENTIFIER, "item"], [",", ","], [:IDENTIFIER, "i"], [",", ","], [:IDENTIFIER, "obj"], [")", ")"], [:FOR, "for"], [:IDENTIFIER, "item"], [",", ","], [:IDENTIFIER, "i"], [:IN, "in"], [:IDENTIFIER, "obj"], [:OUTDENT, 2], [:ELSE, "else"], [:INDENT, 2], [:IDENTIFIER, "iterator"], [:PROPERTY_ACCESS, "."], [:IDENTIFIER, "call"], ["(", "("], [:IDENTIFIER, "context"], [",", ","], [:IDENTIFIER, "obj"], ["[", "["], [:IDENTIFIER, "key"], ["]", "]"], [",", ","], [:IDENTIFIER, "key"], [",", ","], [:IDENTIFIER, "obj"], [")", ")"], [:FOR, "for"], [:IDENTIFIER, "key"], [:IN, "in"], [:IDENTIFIER, "_"], [:PROPERTY_ACCESS, "."], [:IDENTIFIER, "keys"], ["(", "("], [:IDENTIFIER, "obj"], [")", ")"], [:OUTDENT, 2], [:OUTDENT, 2], [:CATCH, "catch"], [:IDENTIFIER, "e"], [:INDENT, 2], [:THROW, "throw"], [:IDENTIFIER, "e"], [:IF, "if"], [:IDENTIFIER, "e"], [:ISNT, "isnt"], [:IDENTIFIER, "breaker"], [:OUTDENT, 2], ["\n", "\n"], [:IDENTIFIER, "obj"], [:OUTDENT, 2], ["\n", "\n"]] \ No newline at end of file +[[:COMMENT, [" The cornerstone, an each implementation.", " Handles objects implementing forEach, arrays, and raw objects."]], ["\n", "\n"], [:IDENTIFIER, "_"], [:PROPERTY_ACCESS, "."], [:IDENTIFIER, "each"], [:ASSIGN, ":"], [:PARAM_START, "("], [:PARAM, "obj"], [",", ","], [:PARAM, "iterator"], [",", ","], [:PARAM, "context"], [:PARAM_END, ")"], ["->", "->"], [:INDENT, 2], [:IDENTIFIER, "index"], [:ASSIGN, ":"], [:NUMBER, "0"], ["\n", "\n"], [:TRY, "try"], [:INDENT, 2], [:IF, "if"], [:IDENTIFIER, "obj"], [:PROPERTY_ACCESS, "."], [:IDENTIFIER, "forEach"], [:INDENT, 2], [:IDENTIFIER, "obj"], [:PROPERTY_ACCESS, "."], [:IDENTIFIER, "forEach"], [:CALL_START, "("], [:IDENTIFIER, "iterator"], [",", ","], [:IDENTIFIER, "context"], [:CALL_END, ")"], [:OUTDENT, 2], [:ELSE, "else"], [:IF, "if"], [:IDENTIFIER, "_"], [:PROPERTY_ACCESS, "."], [:IDENTIFIER, "isArray"], [:CALL_START, "("], [:IDENTIFIER, "obj"], [:CALL_END, ")"], [:OR, "or"], [:IDENTIFIER, "_"], [:PROPERTY_ACCESS, "."], [:IDENTIFIER, "isArguments"], [:CALL_START, "("], [:IDENTIFIER, "obj"], [:CALL_END, ")"], [:INDENT, 2], [:IDENTIFIER, "iterator"], [:PROPERTY_ACCESS, "."], [:IDENTIFIER, "call"], [:CALL_START, "("], [:IDENTIFIER, "context"], [",", ","], [:IDENTIFIER, "item"], [",", ","], [:IDENTIFIER, "i"], [",", ","], [:IDENTIFIER, "obj"], [:CALL_END, ")"], [:FOR, "for"], [:IDENTIFIER, "item"], [",", ","], [:IDENTIFIER, "i"], [:IN, "in"], [:IDENTIFIER, "obj"], [:OUTDENT, 2], [:ELSE, "else"], [:INDENT, 2], [:IDENTIFIER, "iterator"], [:PROPERTY_ACCESS, "."], [:IDENTIFIER, "call"], [:CALL_START, "("], [:IDENTIFIER, "context"], [",", ","], [:IDENTIFIER, "obj"], [:INDEX_START, "["], [:IDENTIFIER, "key"], [:INDEX_END, "]"], [",", ","], [:IDENTIFIER, "key"], [",", ","], [:IDENTIFIER, "obj"], [:CALL_END, ")"], [:FOR, "for"], [:IDENTIFIER, "key"], [:IN, "in"], [:IDENTIFIER, "_"], [:PROPERTY_ACCESS, "."], [:IDENTIFIER, "keys"], [:CALL_START, "("], [:IDENTIFIER, "obj"], [:CALL_END, ")"], [:OUTDENT, 2], [:OUTDENT, 2], [:CATCH, "catch"], [:IDENTIFIER, "e"], [:INDENT, 2], [:THROW, "throw"], [:IDENTIFIER, "e"], [:IF, "if"], [:IDENTIFIER, "e"], [:ISNT, "isnt"], [:IDENTIFIER, "breaker"], [:OUTDENT, 2], ["\n", "\n"], [:IDENTIFIER, "obj"], [:OUTDENT, 2], ["\n", "\n"]] \ No newline at end of file diff --git a/test/unit/test_lexer.rb b/test/unit/test_lexer.rb index 568d2986..db72a1a1 100644 --- a/test/unit/test_lexer.rb +++ b/test/unit/test_lexer.rb @@ -34,8 +34,8 @@ class LexerTest < Test::Unit::TestCase def test_lexing_if_statement code = "clap_your_hands() if happy" - assert @lex.tokenize(code) == [[:IDENTIFIER, "clap_your_hands"], ["(", "("], - [")", ")"], [:IF, "if"], [:IDENTIFIER, "happy"], ["\n", "\n"]] + assert @lex.tokenize(code) == [[:IDENTIFIER, "clap_your_hands"], [:CALL_START, "("], + [:CALL_END, ")"], [:IF, "if"], [:IDENTIFIER, "happy"], ["\n", "\n"]] end def test_lexing_comment