From 29e4043f26ea9485ed80f2427e917b90708986be Mon Sep 17 00:00:00 2001 From: Jeremy Ashkenas Date: Tue, 26 Jan 2010 02:15:08 -0500 Subject: [PATCH] tests passing with smarter block syntax with optional parens --- documentation/coffee/arguments.coffee | 2 +- documentation/coffee/long_arrow.coffee | 2 +- .../coffee/range_comprehensions.coffee | 2 +- documentation/coffee/scope.coffee | 2 +- documentation/coffee/super.coffee | 6 +- examples/code.coffee | 16 +- examples/computer_science/linked_list.coffee | 8 +- examples/poignant.coffee | 8 +- examples/potion.coffee | 14 +- examples/underscore.coffee | 60 +- .../Syntaxes/CoffeeScript.tmLanguage | 10 +- lib/coffee_script/grammar.y | 3 +- lib/coffee_script/lexer.rb | 1 + lib/coffee_script/narwhal/loader.coffee | 2 +- lib/coffee_script/parser.rb | 1676 +++++++++-------- lib/coffee_script/rewriter.rb | 18 +- test/fixtures/execution/test_arguments.coffee | 4 +- .../execution/test_array_comprehension.coffee | 2 +- .../fixtures/execution/test_assignment.coffee | 2 +- test/fixtures/execution/test_blocks.coffee | 2 +- .../execution/test_calling_super.coffee | 10 +- .../execution/test_chained_calls.coffee | 2 +- .../fixtures/execution/test_everything.coffee | 2 +- test/fixtures/execution/test_existence.coffee | 2 +- .../execution/test_expressions.coffee | 2 +- test/fixtures/execution/test_functions.coffee | 12 +- .../execution/test_funky_comments.coffee | 4 +- test/fixtures/execution/test_literals.coffee | 2 +- .../fixtures/execution/test_operations.coffee | 2 +- 29 files changed, 966 insertions(+), 912 deletions(-) diff --git a/documentation/coffee/arguments.coffee b/documentation/coffee/arguments.coffee index 55c83348..afee3741 100644 --- a/documentation/coffee/arguments.coffee +++ b/documentation/coffee/arguments.coffee @@ -1,4 +1,4 @@ -backwards: () => +backwards: => alert arguments.reverse() backwards "stairway", "to", "heaven" \ No newline at end of file diff --git a/documentation/coffee/long_arrow.coffee b/documentation/coffee/long_arrow.coffee index 90c33731..33356a17 100644 --- a/documentation/coffee/long_arrow.coffee +++ b/documentation/coffee/long_arrow.coffee @@ -2,5 +2,5 @@ Account: (customer, cart) => this.customer: customer this.cart: cart - $('.shopping_cart').bind('click') (event) ==> + $('.shopping_cart').bind 'click', (event) ==> this.customer.purchase this.cart \ No newline at end of file diff --git a/documentation/coffee/range_comprehensions.coffee b/documentation/coffee/range_comprehensions.coffee index 9b10f155..8baa2e87 100644 --- a/documentation/coffee/range_comprehensions.coffee +++ b/documentation/coffee/range_comprehensions.coffee @@ -1,6 +1,6 @@ countdown: num for num in [10..1] -egg_delivery: () => +egg_delivery: => for i in [0...eggs.length] by 12 dozen_eggs: eggs[i...i+12] deliver new egg_carton(dozen) diff --git a/documentation/coffee/scope.coffee b/documentation/coffee/scope.coffee index 4ae8401d..b074dad2 100644 --- a/documentation/coffee/scope.coffee +++ b/documentation/coffee/scope.coffee @@ -1,5 +1,5 @@ num: 1 -change_numbers: () => +change_numbers: => new_num: -1 num: 10 new_num: change_numbers() \ No newline at end of file diff --git a/documentation/coffee/super.coffee b/documentation/coffee/super.coffee index 7cedbf44..9dc4d5a2 100644 --- a/documentation/coffee/super.coffee +++ b/documentation/coffee/super.coffee @@ -1,16 +1,16 @@ -Animal: () => +Animal: => Animal::move: (meters) => alert this.name + " moved " + meters + "m." Snake: (name) => this.name: name Snake extends Animal -Snake::move: () => +Snake::move: => alert "Slithering..." super 5 Horse: (name) => this.name: name Horse extends Animal -Horse::move: () => +Horse::move: => alert "Galloping..." super 45 diff --git a/examples/code.coffee b/examples/code.coffee index df8d54bd..105bdbe0 100644 --- a/examples/code.coffee +++ b/examples/code.coffee @@ -7,7 +7,7 @@ odd: (x) => x % 2 isnt 0 even: (x) => x % 2 is 0 -run_loop: () => +run_loop: => fire_events((e) => e.stopPropagation()) listen() wait() @@ -22,7 +22,7 @@ spaced_out_multiline_object: { three: new Idea() inner_obj: { - freedom: () => _.freedom() + freedom: => _.freedom() } } @@ -54,7 +54,7 @@ decoration: medal_of_honor if war_hero go_to_sleep() unless coffee # Returning early: -race: () => +race: => run() walk() crawl() @@ -103,7 +103,7 @@ while true # Lexical scoping. v_1: 5 -change_a_and_set_b: () => +change_a_and_set_b: => v_1: 10 v_2: 15 v_2: 20 @@ -128,7 +128,7 @@ activity: switch day else go_to_work() # Semicolons can optionally be used instead of newlines. -wednesday: () => eat_breakfast(); go_to_work(); eat_dinner() +wednesday: => eat_breakfast(); go_to_work(); eat_dinner() # Array slice literals. zero_to_nine: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] @@ -140,19 +140,19 @@ sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad." # Inheritance and calling super. -Animal: () => +Animal: => Animal::move: (meters) => alert(this.name + " moved " + meters + "m.") Snake: (name) => this.name: name Snake extends Animal -Snake::move: () => +Snake::move: => alert('Slithering...') super(5) Horse: (name) => this.name: name Horse extends Animal -Horse::move: () => +Horse::move: => alert('Galloping...') super(45) diff --git a/examples/computer_science/linked_list.coffee b/examples/computer_science/linked_list.coffee index 7154f71d..8071f869 100644 --- a/examples/computer_science/linked_list.coffee +++ b/examples/computer_science/linked_list.coffee @@ -1,5 +1,5 @@ # "Classic" linked list implementation that doesn't keep track of its size. -LinkedList: () => +LinkedList: => this._head: null # Pointer to the first item in the list. @@ -60,7 +60,7 @@ LinkedList::remove: (index) => # Calculate the number of items in the list. -LinkedList::size: () => +LinkedList::size: => current: this._head count: 0 @@ -72,7 +72,7 @@ LinkedList::size: () => # Convert the list into an array. -LinkedList::toArray: () => +LinkedList::toArray: => result: [] current: this._head @@ -84,7 +84,7 @@ LinkedList::toArray: () => # The string representation of the linked list. -LinkedList::toString: () => this.toArray().toString() +LinkedList::toString: => this.toArray().toString() # Tests. diff --git a/examples/poignant.coffee b/examples/poignant.coffee index 836a6155..4347daea 100644 --- a/examples/poignant.coffee +++ b/examples/poignant.coffee @@ -14,9 +14,9 @@ # end LotteryTicket: { - get_picks: () => this.picks + get_picks: => this.picks set_picks: (nums) => this.picks: nums - get_purchase: () => this.purchase + get_purchase: => this.purchase set_purchase: (amount) => this.purchase: amount } @@ -40,7 +40,7 @@ LotteryTicket: { # end LotteryDraw: { - play: () => + play: => result: LotteryTicket.new_random() winners: {} this.tickets.each (buyer, ticket_list) => @@ -65,7 +65,7 @@ LotteryDraw: { # end WishScanner: { - scan_for_a_wish: () => + scan_for_a_wish: => wish: this.read().detect((thought) => thought.index('wish: ') is 0) wish.replace('wish: ', '') } diff --git a/examples/potion.coffee b/examples/potion.coffee index 06e6a142..ef9ac898 100644 --- a/examples/potion.coffee +++ b/examples/potion.coffee @@ -53,8 +53,8 @@ for key, val of {dog: 'canine', cat: 'feline', fox: 'vulpine'} # Person print = (): # ('My name is ', /name, '.') join print. -Person: () => -Person::print: () => +Person: => +Person::print: => print('My name is ' + this.name + '.') @@ -73,7 +73,7 @@ print(p.name) Policeman: (rank) => this.rank: rank Policeman extends Person -Policeman::print: () => +Policeman::print: => print('My name is ' + this.name + " and I'm a " + this.rank + '.') print(new Policeman('Constable')) @@ -115,13 +115,13 @@ table: { # String length = (): 10. # this foul business... -String::length: () => 10 +String::length: => 10 # block = : # 'potion' print. -block: () => +block: => print('potion') @@ -187,7 +187,7 @@ HomePage::get: (url) => # b /left = BTree () # b /right = BTree () -BTree: () => +BTree: => b: new BTree() b.left: new BTree() b.right: new BTree() @@ -199,7 +199,7 @@ b.right: new BTree() # if (b ? /left): # 'left path found!' print. -BTree: () => +BTree: => b: new BTree() print('left path found!') if b.left? diff --git a/examples/underscore.coffee b/examples/underscore.coffee index b2dfc129..db879723 100644 --- a/examples/underscore.coffee +++ b/examples/underscore.coffee @@ -71,7 +71,7 @@ _.map: (obj, iterator, context) => return obj.map(iterator, context) if (obj and _.isFunction(obj.map)) results: [] - _.each(obj) (value, index, list) => + _.each obj, (value, index, list) => results.push(iterator.call(context, value, index, list)) results @@ -80,7 +80,7 @@ # inject, or foldl. Uses JavaScript 1.8's version of reduce, if possible. _.reduce: (obj, memo, iterator, context) => return obj.reduce(_.bind(iterator, context), memo) if (obj and _.isFunction(obj.reduce)) - _.each(obj) (value, index, list) => + _.each obj, (value, index, list) => memo: iterator.call(context, memo, value, index, list) memo @@ -89,7 +89,7 @@ # JavaScript 1.8's version of reduceRight, if available. _.reduceRight: (obj, memo, iterator, context) => return obj.reduceRight(_.bind(iterator, context), memo) if (obj and _.isFunction(obj.reduceRight)) - _.each(_.clone(_.toArray(obj)).reverse()) (value, index) => + _.each _.clone(_.toArray(obj)).reverse(), (value, index) => memo: iterator.call(context, memo, value, index, obj) memo @@ -97,7 +97,7 @@ # Return the first value which passes a truth test. _.detect: (obj, iterator, context) => result: null - _.each(obj) (value, index, list) => + _.each obj, (value, index, list) => if iterator.call(context, value, index, list) result: value _.breakLoop() @@ -109,7 +109,7 @@ _.select: (obj, iterator, context) => if obj and _.isFunction(obj.filter) then return obj.filter(iterator, context) results: [] - _.each(obj) (value, index, list) => + _.each obj, (value, index, list) => results.push(value) if iterator.call(context, value, index, list) results @@ -117,7 +117,7 @@ # Return all the elements for which a truth test fails. _.reject: (obj, iterator, context) => results: [] - _.each(obj) (value, index, list) => + _.each obj, (value, index, list) => results.push(value) if not iterator.call(context, value, index, list) results @@ -128,7 +128,7 @@ iterator ||= _.identity return obj.every(iterator, context) if obj and _.isFunction(obj.every) result: true - _.each(obj) (value, index, list) => + _.each obj, (value, index, list) => _.breakLoop() unless (result: result and iterator.call(context, value, index, list)) result @@ -139,7 +139,7 @@ iterator ||= _.identity return obj.some(iterator, context) if obj and _.isFunction(obj.some) result: false - _.each(obj) (value, index, list) => + _.each obj, (value, index, list) => _.breakLoop() if (result: iterator.call(context, value, index, list)) result @@ -168,7 +168,7 @@ _.max: (obj, iterator, context) => return Math.max.apply(Math, obj) if not iterator and _.isArray(obj) result: {computed: -Infinity} - _.each(obj) (value, index, list) => + _.each obj, (value, index, list) => computed: if iterator then iterator.call(context, value, index, list) else value computed >= result.computed and (result: {value: value, computed: computed}) result.value @@ -178,7 +178,7 @@ _.min: (obj, iterator, context) => return Math.min.apply(Math, obj) if not iterator and _.isArray(obj) result: {computed: Infinity} - _.each(obj) (value, index, list) => + _.each obj, (value, index, list) => computed: if iterator then iterator.call(context, value, index, list) else value computed < result.computed and (result: {value: value, computed: computed}) result.value @@ -186,12 +186,12 @@ # Sort the object's values by a criteria produced by an iterator. _.sortBy: (obj, iterator, context) => - _.pluck(((_.map(obj) (value, index, list) => + _.pluck(((_.map obj, (value, index, list) => {value: value, criteria: iterator.call(context, value, index, list)} - ).sort() (left, right) => + ).sort((left, right) => a: left.criteria; b: right.criteria if a < b then -1 else if a > b then 1 else 0 - ), 'value') + )), 'value') # Use a comparator function to figure out at what index an object should @@ -245,7 +245,7 @@ # Return a completely flattened version of an array. _.flatten: (array) => - _.reduce(array, []) (memo, value) => + _.reduce array, [], (memo, value) => return memo.concat(_.flatten(value)) if _.isArray(value) memo.push(value) memo @@ -270,14 +270,14 @@ # passed-in arrays. _.intersect: (array) => rest: _.rest(arguments) - _.select(_.uniq(array)) (item) => - _.all(rest) (other) => + _.select _.uniq(array), (item) => + _.all rest, (other) => _.indexOf(other, item) >= 0 # Zip together multiple lists into a single array -- elements that share # an index go together. - _.zip: () => + _.zip: => length: _.max(_.pluck(arguments, 'length')) results: new Array(length) for i in [0...length] @@ -332,7 +332,7 @@ # optionally). Binding with arguments is also known as 'curry'. _.bind: (func, obj) => args: _.rest(arguments, 2) - () => func.apply(obj or root, args.concat(arguments)) + => func.apply(obj or root, args.concat(arguments)) # Bind all of an object's methods to that object. Useful for ensuring that @@ -347,7 +347,7 @@ # it with the arguments supplied. _.delay: (func, wait) => args: _.rest(arguments, 2) - setTimeout((() => func.apply(func, args)), wait) + setTimeout((=> func.apply(func, args)), wait) # Defers a function, scheduling it to run after the current call stack has @@ -360,14 +360,14 @@ # allowing you to adjust arguments, run code before and after, and # conditionally execute the original function. _.wrap: (func, wrapper) => - () => wrapper.apply(wrapper, [func].concat(arguments)) + => wrapper.apply(wrapper, [func].concat(arguments)) # Returns a function that is the composition of a list of functions, each # consuming the return value of the function that follows. - _.compose: () => + _.compose: => funcs: arguments - () => + => args: arguments for i in [(funcs.length - 1)..0] args: [funcs[i].apply(this, args)] @@ -501,7 +501,7 @@ # Run Underscore.js in noConflict mode, returning the '_' variable to its # previous owner. Returns a reference to the Underscore object. - _.noConflict: () => + _.noConflict: => root._: previousUnderscore this @@ -511,7 +511,7 @@ # Break out of the middle of an iteration. - _.breakLoop: () => throw breaker + _.breakLoop: => throw breaker # Generate a unique integer id (unique within the entire client session). @@ -560,9 +560,9 @@ # Add all of the Underscore functions to the wrapper object. - _.each(_.functions(_)) (name) => + _.each _.functions(_), (name) => method: _[name] - wrapper.prototype[name]: () => + wrapper.prototype[name]: => unshift.call(arguments, this._wrapped) result(method.apply(_, args), this._chain) @@ -570,7 +570,7 @@ # Add all mutator Array functions to the wrapper. _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift']) (name) => method: Array.prototype[name] - wrapper.prototype[name]: () => + wrapper.prototype[name]: => method.apply(this._wrapped, arguments) result(this._wrapped, this._chain) @@ -578,15 +578,15 @@ # Add all accessor Array functions to the wrapper. _.each(['concat', 'join', 'slice']) (name) => method: Array.prototype[name] - wrapper.prototype[name]: () => + wrapper.prototype[name]: => result(method.apply(this._wrapped, arguments), this._chain) # Start chaining a wrapped Underscore object. - wrapper::chain: () => + wrapper::chain: => this._chain: true this # Extracts the result from a wrapped and chained object. - wrapper::value: () => this._wrapped + wrapper::value: => this._wrapped diff --git a/extras/CoffeeScript.tmbundle/Syntaxes/CoffeeScript.tmLanguage b/extras/CoffeeScript.tmbundle/Syntaxes/CoffeeScript.tmLanguage index 850870fe..7cba868c 100644 --- a/extras/CoffeeScript.tmbundle/Syntaxes/CoffeeScript.tmLanguage +++ b/extras/CoffeeScript.tmbundle/Syntaxes/CoffeeScript.tmLanguage @@ -22,7 +22,7 @@ 1 name - storage.type.function.coffee + variable.parameter.function.coffee 2 @@ -32,7 +32,7 @@ 4 name - storage.type.function.coffee + variable.parameter.function.coffee 5 @@ -292,6 +292,12 @@ name keyword.other.coffee + + match + =+> + name + storage.type.function.coffee + match !|%|&|\*|\/|\-\-|\-|\+\+|\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\?|\|\||\:|\*=|(?<!\()/=|%=|\+=|\-=|&=|\^=|\b(instanceof|new|delete|typeof|and|or|is|isnt|not)\b diff --git a/lib/coffee_script/grammar.y b/lib/coffee_script/grammar.y index ce1eaac7..427a1564 100644 --- a/lib/coffee_script/grammar.y +++ b/lib/coffee_script/grammar.y @@ -202,8 +202,7 @@ rule Code: PARAM_START ParamList PARAM_END FuncGlyph Block { result = CodeNode.new(val[1], val[4], val[3]) } - | PARAM_START PARAM_END - FuncGlyph Block { result = CodeNode.new([], val[3], val[2]) } + | FuncGlyph Block { result = CodeNode.new([], val[1], val[0]) } ; # The symbols to signify functions, and bound functions. diff --git a/lib/coffee_script/lexer.rb b/lib/coffee_script/lexer.rb index bf4ff7f9..df14f0a5 100644 --- a/lib/coffee_script/lexer.rb +++ b/lib/coffee_script/lexer.rb @@ -241,6 +241,7 @@ module CoffeeScript # parameter identifiers in order to avoid this. Also, parameter lists can # make use of splats. def tag_parameters + return if last_tag != ')' i = 0 loop do i -= 1 diff --git a/lib/coffee_script/narwhal/loader.coffee b/lib/coffee_script/narwhal/loader.coffee index 5012286f..6f793a73 100644 --- a/lib/coffee_script/narwhal/loader.coffee +++ b/lib/coffee_script/narwhal/loader.coffee @@ -8,7 +8,7 @@ loader: { # Reload the coffee-script environment from source. reload: (topId, path) => coffeescript ||= require('coffee-script') - factories[topId]: () => coffeescript.makeNarwhalFactory(path) + factories[topId]: => coffeescript.makeNarwhalFactory(path) # Ensure that the coffee-script environment is loaded. load: (topId, path) => diff --git a/lib/coffee_script/parser.rb b/lib/coffee_script/parser.rb index deb2bc33..cf5821ee 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', 451) +module_eval(<<'...end grammar.y/module_eval...', 'grammar.y', 450) # Lex and parse a CoffeeScript. def parse(code) # Uncomment the following line to enable grammar debugging, in combination @@ -34,301 +34,322 @@ module_eval(<<'...end grammar.y/module_eval...', 'grammar.y', 451) ##### State transition tables begin ### clist = [ -'117,37,125,21,24,25,29,34,39,44,47,50,54,130,202,203,285,285,108,-181', -'-181,169,277,278,27,27,35,40,140,144,81,83,84,118,171,172,37,133,287', -'130,37,19,1,130,32,-181,-181,130,309,-181,-181,60,65,113,116,121,124', -'128,132,136,139,143,147,150,112,115,120,123,127,131,135,138,142,146', -'149,111,114,119,122,126,129,134,137,141,145,148,110,81,83,84,81,83,84', -'2,168,8,7,18,194,21,24,25,29,34,39,44,47,50,54,200,85,7,72,1,78,175', -'14,17,22,93,175,30,35,40,42,277,278,92,255,61,63,182,3,37,9,11,130,19', -'37,27,32,258,113,116,183,49,52,55,58,67,69,171,172,60,65,16,37,152,27', -'60,65,177,130,178,60,65,177,85,113,116,85,78,262,37,78,81,83,84,81,83', -'84,102,299,81,83,84,60,65,261,2,184,8,7,18,264,21,24,25,29,34,39,44', -'47,50,54,60,65,170,175,1,159,37,14,17,22,130,285,30,35,40,42,-181,-181', -'281,27,61,63,300,3,191,9,11,95,19,192,27,32,74,60,65,189,49,52,55,58', -'67,69,72,73,202,203,16,60,65,177,85,234,157,85,78,270,93,78,85,60,65', -'130,78,108,92,37,7,113,116,21,24,25,29,34,39,44,47,50,54,271,2,37,8', -'1,18,273,14,17,22,198,93,30,35,40,42,27,311,89,92,61,63,274,3,93,9,11', -'130,19,152,27,32,92,-181,-181,201,49,52,55,58,67,69,130,60,65,,16,130', -'-181,-181,27,93,89,113,116,121,124,128,130,92,195,196,,27,-181,-181', -'7,60,65,21,24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,27,30,35', -'40,42,60,65,189,,61,63,190,3,,9,11,,19,,27,32,,,,,49,52,55,58,67,69', -'130,,,,16,,113,116,121,124,128,132,136,139,143,147,150,112,115,,,,,', -'7,,,21,24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42', -',,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55,58,67,69,130,,,,16,,113,116', -'121,124,128,132,136,139,143,147,150,112,115,,,,,,7,,,21,24,25,29,34', -'39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11', -',19,,27,32,,,,,49,52,55,58,67,69,130,,,,16,,113,116,121,124,128,132', -'136,139,143,147,150,112,115,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,', -'2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,', -'49,52,55,58,67,69,130,,,,16,,113,116,121,124,128,132,136,139,143,147', -'150,112,115,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14,17', -'22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55,58,67,69', -'130,,,,16,,113,116,121,124,128,132,136,139,143,147,,,,,,,,,7,,,21,24', -'25,29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63', -',3,,9,11,,19,,27,32,,,,,49,52,55,58,67,69,130,,,,16,,113,116,121,124', -'128,132,136,139,143,147,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2', -',8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49', -'52,55,58,67,69,130,,,,16,,113,116,121,124,128,132,136,139,143,147,,', -',,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35', -'40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55,58,67,69,130,,,,16', -',113,116,121,124,128,132,136,130,,,,,,113,116,121,124,128,7,,,21,24', -'25,29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63', -',3,,9,11,,19,,27,32,,,,,49,52,55,58,67,69,130,,,,16,,113,116,121,124', -'128,132,136,,,,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2,,8,1,18', -',14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55,58', -'67,69,130,,,,16,,113,116,121,124,128,132,136,,,,,,,,,,,,7,,,21,24,25', -'29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3', -',9,11,,19,,27,32,,,,,49,52,55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,', -',21,24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,', -',,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55,58,67,69,,,,,16,,,,,,,,,,,', -',,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30', -'35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55,58,67,69,,,,,16', -',,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14', -'17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,105,,,49,52,55,58', -'67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2', -',8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49', -'52,55,58,67,69,130,,,,16,,113,116,121,124,128,132,136,139,143,147,150', -'112,115,120,123,127,131,135,138,142,146,,291,,,,,,,,,,2,,8,7,18,,21', -'24,25,29,34,39,44,47,50,54,,,,,1,,,14,17,22,,,30,35,40,42,,,,,61,63', -',3,,9,11,,19,,27,32,,,,,49,52,55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,', -'7,,,21,24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42', -',,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55,58,67,69,,,,,16,,,,,,,,,', -',,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30', -'35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55,58,67,69,,,,,16', -',,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14', -'17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55,58,67', -'69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2,,8', -'1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52', -'55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50', -'54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32', -',,,,49,52,55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39', -'44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19', -',27,32,,,,,49,52,55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25', -'29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3', -',9,11,,19,,27,32,,,,,49,52,55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,', -',21,24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,', -',,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55,58,67,69,,,,,16,,,,,,,,,,,', -',,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30', -'35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55,58,67,69,,,,,16', -',,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14', -'17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55,58,67', -'69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2,,8', -'1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52', -'55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50', -'54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32', -',,,,49,52,55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39', -'44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19', -',27,32,,,,,49,52,55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25', -'29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3', -',9,11,,19,,27,32,,,,,49,52,55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,', -',21,24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,', -',,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55,58,67,69,,,,,16,,,,,,,,,,,', -',,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30', -'35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55,58,67,69,,,,,16', -',,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14', -'17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55,58,67', -'69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2,,8', -'1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52', -'55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50', -'54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32', -'74,,,,49,52,55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34', -'39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11', -',19,,27,32,,,,,49,52,55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24', -'25,29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63', -',3,,9,11,,19,,27,32,,,,,49,52,55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,', -'7,,,21,24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42', -',,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55,58,67,69,,,,,16,,,,,,,,,', -',,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30', -'35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55,58,67,69,,,,,16', -',,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14', -'17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55,58,67', -'69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2,,8', -'1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52', -'55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50', -'54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32', -',,,,49,52,55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39', -'44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19', -',27,32,,,,,49,52,55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25', -'29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3', -',9,11,,19,,27,32,,,,,49,52,55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,', -',21,24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,', -',,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55,58,67,69,,,,,16,,,,,,,,,,,', -',,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30', -'35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,74,,,,49,52,55,58,67,69,,,,,16', -',,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14', -'17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55,58,67', -'69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2,,8', -'1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52', -'55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50', -'54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32', -',,,,49,52,55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39', -'44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19', -',27,32,,,,,49,52,55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25', -'29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3', -',9,11,,19,,27,32,37,,,,49,52,55,58,67,69,130,,,,16,,113,116,121,124', -'128,132,136,139,143,147,150,112,115,120,123,127,131,135,138,142,146', -',,,,,,,,60,65,,2,,8,7,18,,21,24,25,29,34,39,44,47,50,54,,,,,1,,,14,17', -'22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55,58,67,69', -',,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2,,8,1', -'18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55', -'58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54', -',2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,', -',49,52,55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39,44', -'47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,', -'27,32,,,,,49,52,55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25,29', -'34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9', -'11,,19,,27,32,,,,,49,52,55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21', -'24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61', -'63,,3,,9,11,,19,,27,32,,,,,49,52,55,58,67,69,,,,,16,,,,,,,,,,,,,,,,', -',,,7,,,21,24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40', -'42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55,58,67,69,,,,,16,,,,,,', -',,,,,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22', -',,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55,58,67,69,,', -',,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2,,8,1,18', -',14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55,58', -'67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2', -',8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49', -'52,55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39,44,47', -'50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27', -'32,,,,,49,52,55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34', -'39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11', -',19,,27,32,,,,,49,52,55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24', -'25,29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63', -',3,,9,11,,19,,27,32,,,,,49,52,55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,', -'7,,,21,24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30,35,40,42', -',,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55,58,67,69,,,,,16,,,,,,,,,', -',,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14,17,22,,,30', -'35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55,58,67,69,,,,,16', -',,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2,,8,1,18,,14', -'17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52,55,58,67', -'69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50,54,,2,,8', -'1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32,,,,,49,52', -'55,58,67,69,,,,,16,,,,,,,,,,,,,,,,,,,,7,,,21,24,25,29,34,39,44,47,50', -'54,,2,,8,1,18,,14,17,22,,,30,35,40,42,,,,,61,63,,3,,9,11,,19,,27,32', -'117,,125,,49,52,55,58,67,69,,,,,16,,,,,,,,,,,,,,140,144,,,,118,,,,133', -',,,,,,,,,130,2,,8,,18,113,116,121,124,128,132,136,139,143,147,150,112', -'115,120,123,127,131,135,138,142,146,149,111,114,119,122,126,129,134', -'137,179,145,148,110,117,,125,,,,,263,,,,,,,,,,,,,,,,,,,,,140,144,,,', -'118,,,,133,,,,,,,,,,130,,,,,,113,116,121,124,128,132,136,139,143,147', -'150,112,115,120,123,127,131,135,138,142,146,149,111,114,119,122,126', -'129,134,137,141,145,148,110,,,,,,,,310,21,24,25,29,34,39,44,47,50,54', -',,,,1,,,14,17,22,,,30,35,40,42,,,,,,63,,3,,9,11,,19,,27,32,,,,,49,52', -'55,58,67,69,,,,,16,,,,21,24,25,29,34,39,44,47,50,54,,,,,1,,,14,17,22', -',,30,35,40,,,,,,2,63,8,3,18,9,11,,19,,27,32,117,,125,,49,52,55,58,,', -',,,,,,,,,,,,,,,,,,140,144,,,,118,,,,133,,,,,,,,,,130,2,,8,,18,113,116', -'121,124,128,132,136,139,143,147,150,112,115,120,123,127,131,135,138', -'142,146,149,111,114,119,122,126,129,134,137,141,145,148,110,,,,,,,,304', -'21,24,25,29,34,39,44,47,50,54,,,,,1,,,14,17,22,,,30,35,40,,,,,,,63,', -'3,,9,11,,19,,27,32,,,,,49,52,55,58,67,69,,,,,16,21,24,25,29,34,39,44', -'47,50,54,,,,,,,,,,,,,,35,40,,,,,,,,,2,,8,,18,19,130,,32,117,,125,113', -'116,121,124,128,132,136,139,143,147,150,112,115,120,123,127,131,135', -'138,142,146,,,,,140,144,,,,118,,,,133,,,,,,,,,,130,2,,8,,18,113,116', -'121,124,128,132,136,139,143,147,150,112,115,120,123,127,131,135,138', -'142,146,149,111,114,119,122,126,129,134,137,141,145,148,110,117,130', -'125,,,,,113,116,121,124,128,132,136,139,143,147,150,112,115,120,123', -'127,131,135,138,142,146,140,144,,,,118,,,,133,,,,,,,,,,130,,,,,,113', -'116,121,124,128,132,136,139,143,147,150,112,115,120,123,127,131,135', -'138,142,146,149,111,114,119,122,126,129,134,137,141,145,148,110,117', -'130,125,,,,,113,116,121,124,128,132,136,139,143,147,150,112,115,120', -'123,127,131,135,138,142,146,140,144,,,,118,,,,133,,,,,,,,,,130,,,,,', -'113,116,121,124,128,132,136,139,143,147,150,112,115,120,123,127,131', -'135,138,142,146,149,111,114,119,122,126,129,134,137,141,145,148,110', -'117,130,125,,,,,113,116,121,124,128,132,136,139,143,147,150,112,115', -'120,123,127,131,135,138,142,146,140,144,,,,118,,,,133,,,,,,,,,,130,', -',,,,113,116,121,124,128,132,136,139,143,147,150,112,115,120,123,127', -'131,135,138,142,146,149,111,114,119,122,126,129,134,137,141,145,148', -'110,117,130,125,,,,,113,116,121,124,128,132,136,139,143,147,150,112', -'115,120,123,127,131,135,138,142,146,140,144,,,,118,,,,133,,,,,,,,,,130', -',,,,,113,116,121,124,128,132,136,139,143,147,150,112,115,120,123,127', -'131,135,138,142,146,149,111,114,119,122,126,129,134,137,141,145,148', -'110,117,130,125,,,,,113,116,121,124,128,132,136,139,143,147,150,112', -'115,120,123,127,131,135,138,142,146,140,144,,,,118,,,,133,,,,,,,,,,130', -',,,,,113,116,121,124,128,132,136,139,143,147,150,112,115,120,123,127', -'131,135,138,142,146,149,111,114,119,122,126,129,134,137,141,145,148', -'110,117,,125,,,,,,,,,,,,,,,,,,,,,,,,,,140,144,,,,118,,,,133,,,,,,,,', -',130,,,,,,113,116,121,124,128,132,136,139,143,147,150,112,115,120,123', -'127,131,135,138,142,146,149,111,114,119,122,126,129,134,137,141,145', -'148,110,117,,125,,,,,,,,,,,,,,,,,,,,,,,,,,140,144,,,,118,,,,133,,,,', -',,,,,130,,,,,,113,116,121,124,128,132,136,139,143,147,150,112,115,120', -'123,127,131,135,138,142,146,149,111,114,119,122,126,129,134,137,141', -'145,148,110,117,,125,,,,,,,,,,,,,,,,,,,,,,,,,,140,144,,,,118,,,,133', -',,,,,,,,,130,,,,,,113,116,121,124,128,132,136,139,143,147,150,112,115', -'120,123,127,131,135,138,142,146,149,111,114,119,122,126,129,134,137', -'179,145,148,110,117,,125,,,,,,,,,,,,,,,,,,,,,,,,,,140,144,,,,118,,,', -'133,,,,,,,,,,130,,,,,,113,116,121,124,128,132,136,139,143,147,150,112', -'115,120,123,127,131,135,138,142,146,149,111,114,119,122,126,129,134', -'137,141,145,148,110,117,,125,,,,,,,,,,,,,,,,,,,,,,,,,,140,144,,,,118', -',,,133,,,,,,,,252,,130,,,,,,113,116,121,124,128,132,136,139,143,147', -'150,112,115,120,123,127,131,135,138,142,146,149,111,114,119,122,126', -'129,134,137,141,145,148,110,117,,125,,,,,,,,,,,,,,,,,,,,,,,,,,140,144', -',,,118,,,,133,,,,,,,,37,,130,,,,,,113,116,121,124,128,132,136,139,143', -'147,150,112,115,120,123,127,131,135,138,142,146,149,111,114,119,122', -'126,129,134,137,141,145,148,110,117,,125,,,,,,,,,,,,,,,,,,,,,,,,,,140', -'144,,,,118,,,,133,,,,,,,,,,130,,,,,,113,116,121,124,128,132,136,139', -'143,147,150,112,115,120,123,127,131,135,138,142,146,149,111,114,119', -'122,126,129,134,137,141,145,148,110,117,,125,,,,,,,,,,,,,,,,,,,,,,,', -',,140,144,,,,118,,,,133,,,,,,,,,,130,,,,,,113,116,121,124,128,132,136', -'139,143,147,150,112,115,120,123,127,131,135,138,142,146,149,111,114', -'119,122,126,129,134,137,141,145,148,110,117,,125,,,,,,,,,,,,,,,,,,,', -',,,,,,140,144,,,,118,,,,133,,,,,,,,,,130,,,,,,113,116,121,124,128,132', -'136,139,143,147,150,112,115,120,123,127,131,135,138,142,146,149,111', -'114,119,122,126,129,134,137,141,145,148,110,117,,125,,,,,,,,,,,,,,,', -',,,,,,,,,,140,144,,,,118,,,,133,,,,,,,,,,130,,,,,,113,116,121,124,128', -'132,136,139,143,147,150,112,115,120,123,127,131,135,138,142,146,149', -'111,114,119,122,126,129,134,137,141,145,148,110,117,,125,,,,,,,,,,,', -',,,,,,,,,,,,,,140,144,,,,118,,,,133,,,,,,,,,,130,,,,,,113,116,121,124', -'128,132,136,139,143,147,150,112,115,120,123,127,131,135,138,142,146', -'149,111,114,119,122,126,129,134,137,141,145,148,110,117,,125,,,,,,,', -',,,,,,,,,,,,,,,,,,140,144,,,,118,,,,133,,,,,,,,37,,130,,,,,,113,116', -'121,124,128,132,136,139,143,147,150,112,115,120,123,127,131,135,138', -'142,146,149,111,114,119,122,126,129,134,137,141,145,148,110,117,,125', -',,,,,,,,,,,,,,,,,,,,,,,,,140,144,,,,118,,,,133,,,,,,,,,,130,,,,,,113', -'116,121,124,128,132,136,139,143,147,150,112,115,120,123,127,131,135', -'138,142,146,149,111,114,119,122,126,129,134,137,141,145,148,110,140', -'144,,,,,,,,133,,,,,,,,,,130,,,,,,113,116,121,124,128,132,136,139,143', -'147,150,112,115,120,123,127,131,135,138,142,146,149,111,114,119,122', -'126,129,134,137,141,145,148,110,140,144,,,,,,,,133,,,,,,,,,,130,,,,', -',113,116,121,124,128,132,136,139,143,147,150,112,115,120,123,127,131', -'135,138,142,146,149,111,114,119,122,126,129,134,137,141,145,148,110', -'140,144,,,,,,,,133,,,,,,,,,,130,,,,,,113,116,121,124,128,132,136,139', -'143,147,150,112,115,120,123,127,131,135,138,142,146,149,111,114,119', -'122,126,129,134,137,141,140,144,,,,,,,,133,,,,,,,,,,130,,,,,,113,116', -'121,124,128,132,136,139,143,147,150,112,115,120,123,127,131,135,138', -'142,146,149,111,114,119,122,126,129,134,137,141,140,144,,,,,,,,133,', -',,,,,,,,130,,,,,,113,116,121,124,128,132,136,139,143,147,150,112,115', -'120,123,127,131,135,138,142,146,149,111,114,119,122,126,129,134,137', -'141,140,144,,,,,,,,133,,,,,,,,,,130,,,,,,113,116,121,124,128,132,136', -'139,143,147,150,112,115,120,123,127,131,135,138,142,146,149,111,114', -'119,122,126,129,134,137,141,144,,,,,,,,133,,,,,,,,,,130,,,,,,113,116', -'121,124,128,132,136,139,143,147,150,112,115,120,123,127,131,135,138', -'142,146,149,111,114,119,122,126,129,134,137,141,144,,,,,,,,133,,,,,', -',,,,130,,,,,,113,116,121,124,128,132,136,139,143,147,150,112,115,120', -'123,127,131,135,138,142,146,149,111,114,119,122,126,129,134,137,141', -'144,,,,,,,,133,,,,,,,,,,130,,,,,,113,116,121,124,128,132,136,139,143', -'147,150,112,115,120,123,127,131,135,138,142,146,149,111,114,119,122', -'126,129,134,137,141,144,,,,,,,,133,,,,,,,,,,130,,,,,,113,116,121,124', -'128,132,136,139,143,147,150,112,115,120,123,127,131,135,138,142,146', -'149,111,114,119,122,126,129,134,137,141,144,,,,,,,,133,,,,,,,,,,130', -',,,,,113,116,121,124,128,132,136,139,143,147,150,112,115,120,123,127', -'131,135,138,142,146,149,111,114,119,122,126,129,134,137,141,133,,,,', -',,,,,130,,,,,,113,116,121,124,128,132,136,139,143,147,150,112,115,120', -'123,127,131,135,138,142,146,149,111,114,119,122,126,129,134,137,133', -',,,,,,,,,130,,,,,,113,116,121,124,128,132,136,139,143,147,150,112,115', -'120,123,127,131,135,138,142,146,149,111,114,119,122,126,129,134,137', -'133,,,,,,,,,,130,,,,,,113,116,121,124,128,132,136,139,143,147,150,112', -'115,120,123,127,131,135,138,142,146,149,111,114,119,122,126,129,134', -'137,130,,,,,,113,116,121,124,128,132,136,139,143,147,150,112,115,120', -'123,127,131,135,138,142,146,149,111,114,119,122,126,129,134,137,130', -',,,,,113,116,121,124,128,132,136,139,143,147,150,112,115,120,123,127', -'131,135,138,142,146,149,111,114,119,122,126,129,134,137,130,,,,,,113', -'116,121,124,128,132,136,139,143,147,150,112,115,120,123,127,131,135', -'138,142,146,149,111,114,119,122,126,129,134,137,130,,,,,,113,116,121', -'124,128,132,136,139,143,147,150,112,115,120,123,127,131,135,138,142', -'146,149,111,114,119,122,126,129,134,137,130,,,,,,113,116,121,124,128', -'132,136,139,143,147,150,112,115,120,123,127,131,135,138,142,146,149', -'111,114,119,122,126,129,134,137' ] - racc_action_table = arr = Array.new(8867, nil) +'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) idx = 0 clist.each do |str| str.split(',', -1).each do |i| @@ -338,329 +359,352 @@ clist = [ end clist = [ -'100,302,100,159,159,159,159,159,159,159,159,159,159,162,109,109,252', -'301,42,162,162,70,204,204,252,301,159,159,100,100,96,96,96,100,169,169', -'204,100,255,163,254,159,262,161,159,163,163,100,302,161,161,36,36,100', +'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,100,100,100,249', -'249,249,250,250,250,159,70,159,177,159,100,177,177,177,177,177,177,177', -'177,177,177,106,96,152,168,177,96,75,177,177,177,189,180,177,177,177', -'177,280,280,189,170,177,177,81,177,271,177,177,214,177,273,177,177,177', -'214,214,83,177,177,177,177,177,177,73,73,106,106,177,152,153,189,75', -'75,75,221,75,180,180,180,249,221,221,250,249,180,173,250,97,97,97,5', -'5,5,26,282,46,46,46,177,177,179,177,84,177,2,177,187,2,2,2,2,2,2,2,2', -'2,2,189,189,72,193,2,46,22,2,2,2,98,282,2,2,2,2,98,98,234,282,2,2,282', -'2,92,2,2,11,2,93,2,2,2,187,187,187,2,2,2,2,2,2,1,1,233,233,2,193,193', -'193,97,141,46,5,97,193,8,5,46,41,41,217,46,140,8,299,3,217,217,3,3,3', -'3,3,3,3,3,3,3,195,2,196,2,3,2,197,3,3,3,102,89,3,3,3,3,8,306,8,89,3', -'3,201,3,267,3,3,167,3,45,3,3,267,167,167,108,3,3,3,3,3,3,160,308,308', -',3,225,160,160,89,188,89,225,225,225,225,225,166,188,101,101,,267,166', -'166,131,283,283,131,131,131,131,131,131,131,131,131,131,,3,,3,131,3', -',131,131,131,,188,131,131,131,131,91,91,91,,131,131,91,131,,131,131', -',131,,131,131,,,,,131,131,131,131,131,131,213,,,,131,,213,213,213,213', -'213,213,213,213,213,213,213,213,213,,,,,,7,,,7,7,7,7,7,7,7,7,7,7,,131', -',131,7,131,,7,7,7,,,7,7,7,7,,,,,7,7,,7,,7,7,,7,,7,7,,,,,7,7,7,7,7,7', -'224,,,,7,,224,224,224,224,224,224,224,224,224,224,224,224,224,,,,,,129', -',,129,129,129,129,129,129,129,129,129,129,,7,,7,129,7,,129,129,129,', -',129,129,129,129,,,,,129,129,,129,,129,129,,129,,129,129,,,,,129,129', -'129,129,129,129,220,,,,129,,220,220,220,220,220,220,220,220,220,220', -'220,220,220,,,,,,9,,,9,9,9,9,9,9,9,9,9,9,,129,,129,9,129,,9,9,9,,,9', -'9,9,9,,,,,9,9,,9,,9,9,,9,,9,9,,,,,9,9,9,9,9,9,216,,,,9,,216,216,216', -'216,216,216,216,216,216,216,216,216,216,,,,,,128,,,128,128,128,128,128', -'128,128,128,128,128,,9,,9,128,9,,128,128,128,,,128,128,128,128,,,,,128', -'128,,128,,128,128,,128,,128,128,,,,,128,128,128,128,128,128,209,,,,128', -',209,209,209,209,209,209,209,209,209,209,,,,,,,,,127,,,127,127,127,127', -'127,127,127,127,127,127,,128,,128,127,128,,127,127,127,,,127,127,127', -'127,,,,,127,127,,127,,127,127,,127,,127,127,,,,,127,127,127,127,127', -'127,207,,,,127,,207,207,207,207,207,207,207,207,207,207,,,,,,,,,16,', -',16,16,16,16,16,16,16,16,16,16,,127,,127,16,127,,16,16,16,,,16,16,16', -'16,,,,,16,16,,16,,16,16,,16,,16,16,,,,,16,16,16,16,16,16,243,,,,16,', -'243,243,243,243,243,243,243,243,243,243,,,,,,,,,126,,,126,126,126,126', -'126,126,126,126,126,126,,16,,16,126,16,,126,126,126,,,126,126,126,126', -',,,,126,126,,126,,126,126,,126,,126,126,,,,,126,126,126,126,126,126', -'240,,,,126,,240,240,240,240,240,240,240,229,,,,,,229,229,229,229,229', -'18,,,18,18,18,18,18,18,18,18,18,18,,126,,126,18,126,,18,18,18,,,18,18', -'18,18,,,,,18,18,,18,,18,18,,18,,18,18,,,,,18,18,18,18,18,18,232,,,,18', -',232,232,232,232,232,232,232,,,,,,,,,,,,285,,,285,285,285,285,285,285', -'285,285,285,285,,18,,18,285,18,,285,285,285,,,285,285,285,285,,,,,285', -'285,,285,,285,285,,285,,285,285,,,,,285,285,285,285,285,285,236,,,,285', -',236,236,236,236,236,236,236,,,,,,,,,,,,278,,,278,278,278,278,278,278', -'278,278,278,278,,285,,285,278,285,,278,278,278,,,278,278,278,278,,,', -',278,278,,278,,278,278,,278,,278,278,,,,,278,278,278,278,278,278,,,', -',278,,,,,,,,,,,,,,,,,,,,30,,,30,30,30,30,30,30,30,30,30,30,,278,,278', -'30,278,,30,30,30,,,30,30,30,30,,,,,30,30,,30,,30,30,,30,,30,30,,,,,30', -'30,30,30,30,30,,,,,30,,,,,,,,,,,,,,,,,,,,277,,,277,277,277,277,277,277', -'277,277,277,277,,30,,30,277,30,,277,277,277,,,277,277,277,277,,,,,277', -'277,,277,,277,277,,277,,277,277,,,,,277,277,277,277,277,277,,,,,277', -',,,,,,,,,,,,,,,,,,,37,,,37,37,37,37,37,37,37,37,37,37,,277,,277,37,277', -',37,37,37,,,37,37,37,37,,,,,37,37,,37,,37,37,,37,,37,37,,37,,,37,37', -'37,37,37,37,,,,,37,,,,,,,,,,,,,,,,,,,,261,,,261,261,261,261,261,261', -'261,261,261,261,,37,,37,261,37,,261,261,261,,,261,261,261,261,,,,,261', -'261,,261,,261,261,,261,,261,261,,,,,261,261,261,261,261,261,206,,,,261', -',206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206,206', -'206,206,206,206,,261,,,,,,,,,,261,,261,259,261,,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', -',,,,,,,,,,,,,,,,,,,258,,,258,258,258,258,258,258,258,258,258,258,,259', -',259,258,259,,258,258,258,,,258,258,258,258,,,,,258,258,,258,,258,258', -',258,,258,258,,,,,258,258,258,258,258,258,,,,,258,,,,,,,,,,,,,,,,,,', -',203,,,203,203,203,203,203,203,203,203,203,203,,258,,258,203,258,,203', -'203,203,,,203,203,203,203,,,,,203,203,,203,,203,203,,203,,203,203,,', -',,203,203,203,203,203,203,,,,,203,,,,,,,,,,,,,,,,,,,,202,,,202,202,202', -'202,202,202,202,202,202,202,,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,,,,,,,,,,,,,,,,,,,,49,,,49,49,49,49,49,49,49,49,49,49', -',202,,202,49,202,,49,49,49,,,49,49,49,49,,,,,49,49,,49,,49,49,,49,,49', -'49,,,,,49,49,49,49,49,49,,,,,49,,,,,,,,,,,,,,,,,,,,52,,,52,52,52,52', -'52,52,52,52,52,52,,49,,49,52,49,,52,52,52,,,52,52,52,52,,,,,52,52,,52', -',52,52,,52,,52,52,,,,,52,52,52,52,52,52,,,,,52,,,,,,,,,,,,,,,,,,,,55', -',,55,55,55,55,55,55,55,55,55,55,,52,,52,55,52,,55,55,55,,,55,55,55,55', -',,,,55,55,,55,,55,55,,55,,55,55,,,,,55,55,55,55,55,55,,,,,55,,,,,,,', -',,,,,,,,,,,,58,,,58,58,58,58,58,58,58,58,58,58,,55,,55,58,55,,58,58', -'58,,,58,58,58,58,,,,,58,58,,58,,58,58,,58,,58,58,,,,,58,58,58,58,58', -'58,,,,,58,,,,,,,,,,,,,,,,,,,,61,,,61,61,61,61,61,61,61,61,61,61,,58', -',58,61,58,,61,61,61,,,61,61,61,61,,,,,61,61,,61,,61,61,,61,,61,61,,', -',,61,61,61,61,61,61,,,,,61,,,,,,,,,,,,,,,,,,,,63,,,63,63,63,63,63,63', -'63,63,63,63,,61,,61,63,61,,63,63,63,,,63,63,63,63,,,,,63,63,,63,,63', -'63,,63,,63,63,,,,,63,63,63,63,63,63,,,,,63,,,,,,,,,,,,,,,,,,,,67,,,67', -'67,67,67,67,67,67,67,67,67,,63,,63,67,63,,67,67,67,,,67,67,67,67,,,', -',67,67,,67,,67,67,,67,,67,67,,,,,67,67,67,67,67,67,,,,,67,,,,,,,,,,', -',,,,,,,,,69,,,69,69,69,69,69,69,69,69,69,69,,67,,67,69,67,,69,69,69', -',,69,69,69,69,,,,,69,69,,69,,69,69,,69,,69,69,,,,,69,69,69,69,69,69', -',,,,69,,,,,,,,,,,,,,,,,,,,192,,,192,192,192,192,192,192,192,192,192', -'192,,69,,69,192,69,,192,192,192,,,192,192,192,192,,,,,192,192,,192,', -'192,192,,192,,192,192,,,,,192,192,192,192,192,192,,,,,192,,,,,,,,,,', -',,,,,,,,,191,,,191,191,191,191,191,191,191,191,191,191,,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,,,,,,,,,,,,,,,,,,,,125,,,125', -'125,125,125,125,125,125,125,125,125,,191,,191,125,191,,125,125,125,', -',125,125,125,125,,,,,125,125,,125,,125,125,,125,,125,125,,,,,125,125', -'125,125,125,125,,,,,125,,,,,,,,,,,,,,,,,,,,74,,,74,74,74,74,74,74,74', -'74,74,74,,125,,125,74,125,,74,74,74,,,74,74,74,74,,,,,74,74,,74,,74', -'74,,74,,74,74,,,,,74,74,74,74,74,74,,,,,74,,,,,,,,,,,,,,,,,,,,124,,', -'124,124,124,124,124,124,124,124,124,124,,74,,74,124,74,,124,124,124', -',,124,124,124,124,,,,,124,124,,124,,124,124,,124,,124,124,,,,,124,124', -'124,124,124,124,,,,,124,,,,,,,,,,,,,,,,,,,,309,,,309,309,309,309,309', -'309,309,309,309,309,,124,,124,309,124,,309,309,309,,,309,309,309,309', -',,,,309,309,,309,,309,309,,309,,309,309,,,,,309,309,309,309,309,309', -',,,,309,,,,,,,,,,,,,,,,,,,,176,,,176,176,176,176,176,176,176,176,176', -'176,,309,,309,176,309,,176,176,176,,,176,176,176,176,,,,,176,176,,176', -',176,176,,176,,176,176,,,,,176,176,176,176,176,176,,,,,176,,,,,,,,,', -',,,,,,,,,,78,,,78,78,78,78,78,78,78,78,78,78,,176,,176,78,176,,78,78', -'78,,,78,78,78,78,,,,,78,78,,78,,78,78,,78,,78,78,78,,,,78,78,78,78,78', -'78,,,,,78,,,,,,,,,,,,,,,,,,,,123,,,123,123,123,123,123,123,123,123,123', -'123,,78,,78,123,78,,123,123,123,,,123,123,123,123,,,,,123,123,,123,', -'123,123,,123,,123,123,,,,,123,123,123,123,123,123,,,,,123,,,,,,,,,,', -',,,,,,,,,157,,,157,157,157,157,157,157,157,157,157,157,,123,,123,157', -'123,,157,157,157,,,157,157,157,157,,,,,157,157,,157,,157,157,,157,,157', -'157,,,,,157,157,157,157,157,157,,,,,157,,,,,,,,,,,,,,,,,,,,150,,,150', -'150,150,150,150,150,150,150,150,150,,157,,157,150,157,,150,150,150,', -',150,150,150,150,,,,,150,150,,150,,150,150,,150,,150,150,,,,,150,150', -'150,150,150,150,,,,,150,,,,,,,,,,,,,,,,,,,,85,,,85,85,85,85,85,85,85', -'85,85,85,,150,,150,85,150,,85,85,85,,,85,85,85,85,,,,,85,85,,85,,85', -'85,,85,,85,85,,,,,85,85,85,85,85,85,,,,,85,,,,,,,,,,,,,,,,,,,,149,,', -'149,149,149,149,149,149,149,149,149,149,,85,,85,149,85,,149,149,149', -',,149,149,149,149,,,,,149,149,,149,,149,149,,149,,149,149,,,,,149,149', -'149,149,149,149,,,,,149,,,,,,,,,,,,,,,,,,,,148,,,148,148,148,148,148', -'148,148,148,148,148,,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,,,,,,,,,,,,,,,,,,,,147,,,147,147,147,147,147,147,147,147,147', -'147,,148,,148,147,148,,147,147,147,,,147,147,147,147,,,,,147,147,,147', -',147,147,,147,,147,147,,,,,147,147,147,147,147,147,,,,,147,,,,,,,,,', -',,,,,,,,,,146,,,146,146,146,146,146,146,146,146,146,146,,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,,,,,,,,,,,,,,,,,,,,145,,,145', -'145,145,145,145,145,145,145,145,145,,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,,,,,,,,,,,,,,,,,,,,144,,,144,144,144,144,144', -'144,144,144,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,144,144', -',,,,144,,,,,,,,,,,,,,,,,,,,95,,,95,95,95,95,95,95,95,95,95,95,,144,', -'144,95,144,,95,95,95,,,95,95,95,95,,,,,95,95,,95,,95,95,,95,,95,95,95', -',,,95,95,95,95,95,95,,,,,95,,,,,,,,,,,,,,,,,,,,143,,,143,143,143,143', -'143,143,143,143,143,143,,95,,95,143,95,,143,143,143,,,143,143,143,143', -',,,,143,143,,143,,143,143,,143,,143,143,,,,,143,143,143,143,143,143', -',,,,143,,,,,,,,,,,,,,,,,,,,142,,,142,142,142,142,142,142,142,142,142', -'142,,143,,143,142,143,,142,142,142,,,142,142,142,142,,,,,142,142,,142', -',142,142,,142,,142,142,,,,,142,142,142,142,142,142,,,,,142,,,,,,,,,', -',,,,,,,,,,139,,,139,139,139,139,139,139,139,139,139,139,,142,,142,139', -'142,,139,139,139,,,139,139,139,139,,,,,139,139,,139,,139,139,,139,,139', -'139,,,,,139,139,139,139,139,139,,,,,139,,,,,,,,,,,,,,,,,,,,138,,,138', -'138,138,138,138,138,138,138,138,138,,139,,139,138,139,,138,138,138,', -',138,138,138,138,,,,,138,138,,138,,138,138,,138,,138,138,,,,,138,138', -'138,138,138,138,,,,,138,,,,,,,,,,,,,,,,,,,,0,,,0,0,0,0,0,0,0,0,0,0,', -'138,,138,0,138,,0,0,0,,,0,0,0,0,,,,,0,0,,0,,0,0,,0,,0,0,0,,,,0,0,0,0', -'0,0,235,,,,0,,235,235,235,235,235,235,235,235,235,235,235,235,235,235', -'235,235,235,235,235,235,235,,,,,,,,,0,0,,0,,0,137,0,,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,,,,,,,,,,,,,,,,,,,,136,,,136,136,136,136,136,136,136,136,136,136', -',137,,137,136,137,,136,136,136,,,136,136,136,136,,,,,136,136,,136,,136', -'136,,136,,136,136,,,,,136,136,136,136,136,136,,,,,136,,,,,,,,,,,,,,', -',,,,,135,,,135,135,135,135,135,135,135,135,135,135,,136,,136,135,136', -',135,135,135,,,135,135,135,135,,,,,135,135,,135,,135,135,,135,,135,135', -',,,,135,135,135,135,135,135,,,,,135,,,,,,,,,,,,,,,,,,,,104,,,104,104', -'104,104,104,104,104,104,104,104,,135,,135,104,135,,104,104,104,,,104', -'104,104,104,,,,,104,104,,104,,104,104,,104,,104,104,,,,,104,104,104', -'104,104,104,,,,,104,,,,,,,,,,,,,,,,,,,,134,,,134,134,134,134,134,134', -'134,134,134,134,,104,,104,134,104,,134,134,134,,,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', -',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,,,,,,,,,,,,,,', -',,,,,122,,,122,122,122,122,122,122,122,122,122,122,,133,,133,122,133', -',122,122,122,,,122,122,122,122,,,,,122,122,,122,,122,122,,122,,122,122', -',,,,122,122,122,122,122,122,,,,,122,,,,,,,,,,,,,,,,,,,,110,,,110,110', -'110,110,110,110,110,110,110,110,,122,,122,110,122,,110,110,110,,,110', -'110,110,110,,,,,110,110,,110,,110,110,,110,,110,110,,,,,110,110,110', -'110,110,110,,,,,110,,,,,,,,,,,,,,,,,,,,111,,,111,111,111,111,111,111', -'111,111,111,111,,110,,110,111,110,,111,111,111,,,111,111,111,111,,,', -',111,111,,111,,111,111,,111,,111,111,,,,,111,111,111,111,111,111,,,', -',111,,,,,,,,,,,,,,,,,,,,112,,,112,112,112,112,112,112,112,112,112,112', -',111,,111,112,111,,112,112,112,,,112,112,112,112,,,,,112,112,,112,,112', -'112,,112,,112,112,,,,,112,112,112,112,112,112,,,,,112,,,,,,,,,,,,,,', -',,,,,114,,,114,114,114,114,114,114,114,114,114,114,,112,,112,114,112', -',114,114,114,,,114,114,114,114,,,,,114,114,,114,,114,114,,114,,114,114', -',,,,114,114,114,114,114,114,,,,,114,,,,,,,,,,,,,,,,,,,,115,,,115,115', -'115,115,115,115,115,115,115,115,,114,,114,115,114,,115,115,115,,,115', -'115,115,115,,,,,115,115,,115,,115,115,,115,,115,115,,,,,115,115,115', -'115,115,115,,,,,115,,,,,,,,,,,,,,,,,,,,117,,,117,117,117,117,117,117', -'117,117,117,117,,115,,115,117,115,,117,117,117,,,117,117,117,117,,,', -',117,117,,117,,117,117,,117,,117,117,,,,,117,117,117,117,117,117,,,', -',117,,,,,,,,,,,,,,,,,,,,118,,,118,118,118,118,118,118,118,118,118,118', -',117,,117,118,117,,118,118,118,,,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,,118,,118,119,118', -',119,119,119,,,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,,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,,,,,,,,,,,,,,,,,,,,121,,,121,121,121,121,121,121', -'121,121,121,121,,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,,,,,,,,,,,,,,,,,,,,132,,,132,132,132,132,132,132,132,132,132,132', -',121,,121,132,121,,132,132,132,,,132,132,132,132,,,,,132,132,,132,,132', -'132,,132,,132,132,185,,185,,132,132,132,132,132,132,,,,,132,,,,,,,,', -',,,,,185,185,,,,185,,,,185,,,,,,,,,,185,132,,132,,132,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,305,,305,,,,,185', -',,,,,,,,,,,,,,,,,,,,305,305,,,,305,,,,305,,,,,,,,,,305,,,,,,305,305', -'305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305', -'305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,,,,,,,,305', -'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,,,,130,130,130,130', -'130,130,130,130,130,130,,,,,130,,,130,130,130,,,130,130,130,,,,,,17', -'130,17,130,17,130,130,,130,,130,130,290,,290,,130,130,130,130,,,,,,', -',,,,,,,,,,,,,,290,290,,,,290,,,,290,,,,,,,,,,290,130,,130,,130,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', -'291,291,291,291,291,291,291,291,291,291,,,,,291,,,291,291,291,,,291', -'291,291,,,,,,,291,,291,,291,291,,291,,291,291,,,,,291,291,291,291,291', -'291,,,,,291,14,14,14,14,14,14,14,14,14,14,,,,,,,,,,,,,,14,14,,,,,,,', -',291,,291,,291,14,208,,14,268,,268,208,208,208,208,208,208,208,208,208', -'208,208,208,208,208,208,208,208,208,208,208,208,,,,,268,268,,,,268,', -',,268,,,,,,,,,,268,14,,14,,14,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,313,231,313,,,,,231,231,231,231,231,231', -'231,231,231,231,231,231,231,231,231,231,231,231,231,231,231,313,313', -',,,313,,,,313,,,,,,,,,,313,,,,,,313,313,313,313,313,313,313,313,313', -'313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313,313', -'313,313,313,313,313,313,313,313,211,239,211,,,,,239,239,239,239,239', -'239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,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,210,242,210,,,,,242,242,242,242', +'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', -'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,199,212,199,,,,,212,212,212', +'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', -'212,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,303,228,303,,,,,228,228', -'228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228,228', -'228,228,303,303,,,,303,,,,303,,,,,,,,,,303,,,,,,303,303,303,303,303', -'303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303,303', -'303,303,303,303,303,303,303,303,303,303,303,303,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,269,269,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,76,,76,,,,,', -',,,,,,,,,,,,,,,,,,,,76,76,,,,76,,,,76,,,,,,,,,,76,,,,,,76,76,76,76,76', -'76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76,76', -'76,76,76,76,76,76,174,,174,,,,,,,,,,,,,,,,,,,,,,,,,,174,174,,,,174,', -',,174,,,,,,,,,,174,,,,,,174,174,174,174,174,174,174,174,174,174,174', -'174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174,174', -'174,174,174,174,174,174,165,,165,,,,,,,,,,,,,,,,,,,,,,,,,,165,165,,', -',165,,,,165,,,,,,,,165,,165,,,,,,165,165,165,165,165,165,165,165,165', -'165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165,165', -'165,165,165,165,165,165,165,165,164,,164,,,,,,,,,,,,,,,,,,,,,,,,,,164', -'164,,,,164,,,,164,,,,,,,,164,,164,,,,,,164,164,164,164,164,164,164,164', -'164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164,164', -'164,164,164,164,164,164,164,164,164,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,257,257,257,257,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,289,,289,,,,,,,,,,,,,,,,,,,,,,,,,,289,289,,,,289,,,,289,,,,,,,,,', -'289,,,,,,289,289,289,289,289,289,289,289,289,289,289,289,289,289,289', +',,,,,,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,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,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,260,260,260,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,87,87,87,87,87,218,,218,,,,,,,,', -',,,,,,,,,,,,,,,,,218,218,,,,218,,,,218,,,,,,,,,,218,,,,,,218,218,218', +'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,218,218,218,99,99,,,,,,', -',99,,,,,,,,,,99,,,,,,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99', -'99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,99,248,248,,,,,,', -',248,,,,,,,,,,248,,,,,,248,248,248,248,248,248,248,248,248,248,248,248', +'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,,,,,,,,,,,', +',,,,,,,,,,,,,,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', '248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248,248', -'248,248,248,248,248,103,103,,,,,,,,103,,,,,,,,,,103,,,,,,103,103,103', -'103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103,103', -'103,103,103,103,103,103,103,103,103,103,103,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,238,238,,,,,,,,238,,,,,,,,,,238,,,,,,238,238', +'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,238,238,238,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', -'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,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,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,296,,,,', +'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,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,94,,,,,,,,,,94', -',,,,,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94', -'94,94,94,94,94,94,94,94,94,226,,,,,,,,,,226,,,,,,226,226,226,226,226', +'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,226,226,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,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,219,,,,,,219,219,219,219,219,219,219,219,219,219,219', +'226,226,226,226,226,226,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,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', -'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' ] - racc_action_check = arr = Array.new(8867, nil) +'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) idx = 0 clist.each do |str| str.split(',', -1).each do |i| @@ -670,153 +714,153 @@ clist = [ end racc_action_pointer = [ - 4315, 227, 190, 269, nil, 163, nil, 427, 255, 585, - nil, 133, nil, nil, 6232, nil, 822, 5978, 980, nil, - nil, nil, 164, nil, nil, nil, 181, nil, nil, nil, - 1217, nil, nil, nil, nil, nil, -41, 1375, nil, nil, - nil, 172, 4, 7408, nil, 310, 168, nil, nil, 1866, - nil, nil, 1945, nil, nil, 2024, nil, nil, 2103, nil, - nil, 2182, nil, 2261, nil, nil, nil, 2340, nil, 2419, - 0, nil, 122, 61, 2735, 67, 6973, 8510, 3051, nil, - nil, 117, nil, 130, 176, 3367, nil, 7756, nil, 289, - nil, 287, 140, 145, 8556, 3920, 15, 160, 166, 7902, - -2, 319, 294, 8020, 4648, nil, 61, nil, 225, -17, - 4964, 5043, 5122, nil, 5201, 5280, nil, 5359, 5438, 5517, - 5596, 5675, 4885, 3130, 2814, 2656, 901, 743, 664, 506, - 6038, 348, 5754, 4806, 4727, 4569, 4490, 4411, 4236, 4157, - 254, 171, 4078, 3999, 3841, 3762, 3683, 3604, 3525, 3446, - 3288, nil, 109, 154, nil, nil, nil, 3209, nil, -2, - 277, -6, -36, -10, 7234, 7147, 293, 262, 92, -56, - 43, nil, nil, 126, 7060, nil, 2972, 94, nil, 103, - 72, 6886, nil, nil, nil, 5799, nil, 146, 329, 113, - nil, 2577, 2498, 160, nil, 270, 239, 264, nil, 6625, - nil, 292, 1787, 1708, -11, 8076, 1462, 751, 6227, 672, - 6538, 6451, 6579, 356, 87, 8746, 593, 217, 7843, 8710, - 514, 113, 8782, nil, 435, 282, 8602, 8638, 6666, 922, - 8674, 6318, 988, 218, 138, 4323, 1067, 8243, 8188, 6405, - 909, 8132, 6492, 830, nil, nil, nil, nil, 7961, 72, - 75, nil, -21, nil, -7, -47, nil, 7321, 1629, 1550, - 7669, 1454, 23, nil, nil, nil, nil, 302, 6277, 6799, - nil, 86, nil, 91, nil, 8353, 8298, 1296, 1138, nil, - 92, nil, 179, 259, nil, 1059, nil, nil, 7582, 7495, - 6083, 6175, nil, nil, nil, nil, 8463, 8408, nil, 223, - nil, -20, -46, 6712, nil, 5886, 253, nil, 235, 2893, - nil, nil, nil, 6364 ] + 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 ] racc_action_default = [ -1, -181, -136, -181, -15, -124, -16, -181, -118, -181, - -17, -181, -18, -126, -181, -19, -181, -46, -181, -34, + -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, -39, -9, -181, - -40, -10, -181, -105, -103, -181, -106, -11, -181, -107, - -26, -181, -12, -181, -108, -27, -13, -181, -14, -181, - -181, -98, -100, -181, -181, -181, -137, -55, -136, -110, - -114, -181, -129, -181, -181, -181, -115, -181, -44, -118, - -119, -181, -181, -181, -56, -136, -125, -181, -50, -45, - -181, -181, -181, -150, -7, -25, -181, -4, -157, -181, - -181, -181, -181, -58, -181, -181, -57, -181, -181, -181, + -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, - -93, -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, -172, -181, -174, -176, -178, -109, -181, -128, -181, - -51, -48, -49, -52, -153, -181, -54, -53, -181, -181, - -181, -96, -97, -181, -138, -143, -181, -181, -135, -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, 314, -6, + -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, -95, -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, -142, -141, - -181, -102, -131, -122, -149, -148, -162, -161, -166, -181, - -163, -181, -181, -144, -133, -181, -181, -169, -167, -181, - -134, -164, -168, -145 ] + -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 ] racc_goto_table = [ - 31, 86, 71, 41, 88, 76, 77, 109, 158, 156, - 87, 97, 94, 96, 173, 91, 265, 266, 75, 98, - 99, 100, 26, 302, 284, 101, 36, 282, 197, 244, - 204, 70, 153, 103, 292, 151, 104, 155, nil, nil, - nil, 107, 86, nil, nil, nil, nil, nil, nil, 154, - nil, nil, 160, nil, 298, 161, nil, nil, 162, 158, - 156, 163, nil, 106, 164, nil, 165, nil, nil, nil, - 166, nil, 167, 307, nil, nil, nil, 174, nil, nil, - nil, 181, nil, nil, nil, 88, nil, nil, 185, nil, - 186, 188, 86, 86, 180, 293, 187, nil, 181, nil, - nil, nil, nil, nil, nil, 233, 104, 199, nil, nil, - 254, 193, 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, 246, nil, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 280, 245, 250, 247, 249, nil, - 248, nil, nil, nil, nil, nil, nil, 251, nil, 253, - nil, nil, nil, nil, nil, nil, 256, 259, nil, 257, - 260, nil, nil, nil, 88, 88, nil, 188, nil, 267, - nil, nil, nil, nil, 268, 269, nil, nil, nil, 272, - nil, nil, nil, nil, nil, 275, 276, 279, nil, nil, - nil, nil, 158, 156, nil, nil, nil, nil, nil, nil, + 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, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, nil, nil, nil, nil, 86, 86, nil, 283, nil, - nil, nil, nil, nil, nil, nil, nil, 286, nil, nil, - nil, 288, 289, 88, 290, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 294, nil, 295, nil, 283, nil, - 296, 297, nil, 301, nil, nil, nil, nil, 303, nil, - nil, nil, nil, nil, 305, nil, nil, 283, nil, nil, - nil, nil, 306, nil, nil, 308, nil, nil, 312, nil, - nil, nil, 313 ] + 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 ] racc_goto_check = [ - 2, 30, 26, 4, 21, 5, 5, 40, 36, 31, - 5, 6, 5, 32, 25, 34, 23, 23, 37, 5, - 5, 5, 1, 38, 43, 4, 3, 42, 39, 44, - 41, 24, 46, 5, 8, 45, 2, 48, nil, nil, - nil, 2, 30, nil, nil, nil, nil, nil, nil, 47, - nil, nil, 5, nil, 43, 5, nil, nil, 5, 36, - 31, 5, nil, 3, 5, nil, 5, nil, nil, nil, - 5, nil, 5, 43, nil, nil, nil, 5, nil, nil, - nil, 5, nil, nil, nil, 21, nil, nil, 5, nil, - 4, 2, 30, 30, 37, 23, 34, nil, 5, nil, - nil, nil, nil, nil, nil, 40, 2, 5, nil, nil, - 25, 37, nil, 5, 5, 5, nil, 5, 5, nil, + 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, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 45, nil, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 41, 4, 6, 47, 32, nil, - 5, nil, nil, nil, nil, nil, nil, 4, nil, 26, - nil, nil, nil, nil, nil, nil, 4, 2, nil, 5, - 5, nil, nil, nil, 21, 21, nil, 2, nil, 2, - nil, 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, + 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, 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, nil, 21, nil, - nil, nil, nil, nil, nil, nil, nil, 4, nil, nil, - nil, 5, 5, 21, 5, nil, nil, nil, nil, nil, - nil, nil, nil, nil, 4, nil, 4, nil, 21, nil, - 5, 5, nil, 2, nil, nil, nil, nil, 5, nil, - nil, nil, nil, nil, 5, nil, nil, 21, nil, nil, - nil, nil, 4, nil, nil, 4, nil, nil, 2, nil, - nil, nil, 5 ] + 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 ] racc_goto_pointer = [ - nil, 22, 0, 26, 3, 3, -3, nil, -228, nil, + nil, 21, 0, 16, 2, 2, -2, nil, -227, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, - nil, -4, nil, -172, 30, -59, 1, nil, nil, nil, - -4, -37, -1, nil, 7, nil, -38, 16, -262, -73, - -35, -79, -225, -228, -123, -10, -13, 4, -8 ] + 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 ] racc_goto_default = [ - nil, nil, 176, nil, nil, 43, 46, 48, 51, 57, - 62, 66, 68, 4, 6, 10, 12, 15, 20, 23, - 28, 33, 38, 90, nil, nil, nil, 53, 56, 59, - 64, 79, 5, 80, nil, 13, 82, nil, nil, nil, + 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 ] racc_reduce_table = [ @@ -915,7 +959,7 @@ racc_reduce_table = [ 3, 110, :_reduce_92, 2, 121, :_reduce_93, 5, 109, :_reduce_94, - 4, 109, :_reduce_95, + 2, 109, :_reduce_95, 1, 126, :_reduce_96, 1, 126, :_reduce_97, 1, 125, :_reduce_98, @@ -1004,7 +1048,7 @@ racc_reduce_table = [ racc_reduce_n = 181 -racc_shift_n = 314 +racc_shift_n = 313 racc_token_table = { false => 0, @@ -1855,35 +1899,35 @@ module_eval(<<'.,.,', 'grammar.y', 203) end .,., -module_eval(<<'.,.,', 'grammar.y', 205) +module_eval(<<'.,.,', 'grammar.y', 204) def _reduce_95(val, _values, result) - result = CodeNode.new([], val[3], val[2]) + result = CodeNode.new([], val[1], val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 210) +module_eval(<<'.,.,', 'grammar.y', 209) def _reduce_96(val, _values, result) result = :func result end .,., -module_eval(<<'.,.,', 'grammar.y', 211) +module_eval(<<'.,.,', 'grammar.y', 210) def _reduce_97(val, _values, result) result = :boundfunc result end .,., -module_eval(<<'.,.,', 'grammar.y', 216) +module_eval(<<'.,.,', 'grammar.y', 215) def _reduce_98(val, _values, result) result = val result end .,., -module_eval(<<'.,.,', 'grammar.y', 217) +module_eval(<<'.,.,', 'grammar.y', 216) def _reduce_99(val, _values, result) result = val[0] << val[2] result @@ -1892,560 +1936,560 @@ module_eval(<<'.,.,', 'grammar.y', 217) # reduce 100 omitted -module_eval(<<'.,.,', 'grammar.y', 223) +module_eval(<<'.,.,', 'grammar.y', 222) def _reduce_101(val, _values, result) result = SplatNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 228) +module_eval(<<'.,.,', 'grammar.y', 227) def _reduce_102(val, _values, result) result = SplatNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 233) +module_eval(<<'.,.,', 'grammar.y', 232) def _reduce_103(val, _values, result) result = ValueNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 234) +module_eval(<<'.,.,', 'grammar.y', 233) def _reduce_104(val, _values, result) result = ValueNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 235) +module_eval(<<'.,.,', 'grammar.y', 234) def _reduce_105(val, _values, result) result = ValueNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 236) +module_eval(<<'.,.,', 'grammar.y', 235) def _reduce_106(val, _values, result) result = ValueNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 237) +module_eval(<<'.,.,', 'grammar.y', 236) def _reduce_107(val, _values, result) result = ValueNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 238) +module_eval(<<'.,.,', 'grammar.y', 237) def _reduce_108(val, _values, result) result = ValueNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 239) +module_eval(<<'.,.,', 'grammar.y', 238) def _reduce_109(val, _values, result) result = val[0] << val[1] result end .,., -module_eval(<<'.,.,', 'grammar.y', 240) +module_eval(<<'.,.,', 'grammar.y', 239) def _reduce_110(val, _values, result) result = ValueNode.new(val[0], [val[1]]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 245) +module_eval(<<'.,.,', 'grammar.y', 244) def _reduce_111(val, _values, result) result = AccessorNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 246) +module_eval(<<'.,.,', 'grammar.y', 245) def _reduce_112(val, _values, result) result = AccessorNode.new(val[1], :prototype) result end .,., -module_eval(<<'.,.,', 'grammar.y', 247) +module_eval(<<'.,.,', 'grammar.y', 246) def _reduce_113(val, _values, result) result = AccessorNode.new(val[1], :soak) result end .,., -module_eval(<<'.,.,', 'grammar.y', 248) +module_eval(<<'.,.,', 'grammar.y', 247) def _reduce_114(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 249) +module_eval(<<'.,.,', 'grammar.y', 248) def _reduce_115(val, _values, result) result = SliceNode.new(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 254) +module_eval(<<'.,.,', 'grammar.y', 253) def _reduce_116(val, _values, result) result = IndexNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 259) +module_eval(<<'.,.,', 'grammar.y', 258) def _reduce_117(val, _values, result) result = ObjectNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 264) +module_eval(<<'.,.,', 'grammar.y', 263) def _reduce_118(val, _values, result) result = [] result end .,., -module_eval(<<'.,.,', 'grammar.y', 265) +module_eval(<<'.,.,', 'grammar.y', 264) def _reduce_119(val, _values, result) result = val result end .,., -module_eval(<<'.,.,', 'grammar.y', 266) +module_eval(<<'.,.,', 'grammar.y', 265) def _reduce_120(val, _values, result) result = val[0] << val[2] result end .,., -module_eval(<<'.,.,', 'grammar.y', 267) +module_eval(<<'.,.,', 'grammar.y', 266) def _reduce_121(val, _values, result) result = val[0] << val[2] result end .,., -module_eval(<<'.,.,', 'grammar.y', 269) +module_eval(<<'.,.,', 'grammar.y', 268) def _reduce_122(val, _values, result) result = val[0] << val[3] result end .,., -module_eval(<<'.,.,', 'grammar.y', 270) +module_eval(<<'.,.,', 'grammar.y', 269) def _reduce_123(val, _values, result) result = val[1] result end .,., -module_eval(<<'.,.,', 'grammar.y', 275) +module_eval(<<'.,.,', 'grammar.y', 274) def _reduce_124(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 276) +module_eval(<<'.,.,', 'grammar.y', 275) def _reduce_125(val, _values, result) result = val[1].new_instance result end .,., -module_eval(<<'.,.,', 'grammar.y', 277) +module_eval(<<'.,.,', 'grammar.y', 276) def _reduce_126(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 282) +module_eval(<<'.,.,', 'grammar.y', 281) def _reduce_127(val, _values, result) result = ExtendsNode.new(val[0], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 287) +module_eval(<<'.,.,', 'grammar.y', 286) def _reduce_128(val, _values, result) result = CallNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 288) +module_eval(<<'.,.,', 'grammar.y', 287) def _reduce_129(val, _values, result) result = CallNode.new(val[0], val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 293) +module_eval(<<'.,.,', 'grammar.y', 292) def _reduce_130(val, _values, result) result = val[1] result end .,., -module_eval(<<'.,.,', 'grammar.y', 294) +module_eval(<<'.,.,', 'grammar.y', 293) def _reduce_131(val, _values, result) result = val[1] << val[3] result end .,., -module_eval(<<'.,.,', 'grammar.y', 299) +module_eval(<<'.,.,', 'grammar.y', 298) def _reduce_132(val, _values, result) result = CallNode.new(Value.new('super'), val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 305) +module_eval(<<'.,.,', 'grammar.y', 304) def _reduce_133(val, _values, result) result = RangeNode.new(val[1], val[4]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 307) +module_eval(<<'.,.,', 'grammar.y', 306) def _reduce_134(val, _values, result) result = RangeNode.new(val[1], val[5], true) result end .,., -module_eval(<<'.,.,', 'grammar.y', 312) +module_eval(<<'.,.,', 'grammar.y', 311) def _reduce_135(val, _values, result) result = ArrayNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 317) +module_eval(<<'.,.,', 'grammar.y', 316) def _reduce_136(val, _values, result) result = [] result end .,., -module_eval(<<'.,.,', 'grammar.y', 318) +module_eval(<<'.,.,', 'grammar.y', 317) def _reduce_137(val, _values, result) result = val result end .,., -module_eval(<<'.,.,', 'grammar.y', 319) +module_eval(<<'.,.,', 'grammar.y', 318) def _reduce_138(val, _values, result) result = [val[1]] result end .,., -module_eval(<<'.,.,', 'grammar.y', 320) +module_eval(<<'.,.,', 'grammar.y', 319) def _reduce_139(val, _values, result) result = val[0] << val[2] result end .,., -module_eval(<<'.,.,', 'grammar.y', 321) +module_eval(<<'.,.,', 'grammar.y', 320) def _reduce_140(val, _values, result) result = val[0] << val[2] result end .,., -module_eval(<<'.,.,', 'grammar.y', 322) +module_eval(<<'.,.,', 'grammar.y', 321) def _reduce_141(val, _values, result) result = val[0] << val[3] result end .,., -module_eval(<<'.,.,', 'grammar.y', 323) +module_eval(<<'.,.,', 'grammar.y', 322) def _reduce_142(val, _values, result) result = val[0] << val[3] result end .,., -module_eval(<<'.,.,', 'grammar.y', 324) +module_eval(<<'.,.,', 'grammar.y', 323) def _reduce_143(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 329) +module_eval(<<'.,.,', 'grammar.y', 328) def _reduce_144(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 330) +module_eval(<<'.,.,', 'grammar.y', 329) def _reduce_145(val, _values, result) result = ([val[0]] << val[2]).flatten result end .,., -module_eval(<<'.,.,', 'grammar.y', 335) +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', 336) +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', 338) +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', 343) +module_eval(<<'.,.,', 'grammar.y', 342) def _reduce_149(val, _values, result) result = [val[1], val[2]] result end .,., -module_eval(<<'.,.,', 'grammar.y', 348) +module_eval(<<'.,.,', 'grammar.y', 347) def _reduce_150(val, _values, result) result = ThrowNode.new(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 353) +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', 358) +module_eval(<<'.,.,', 'grammar.y', 357) def _reduce_152(val, _values, result) result = WhileNode.new(val[1], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 359) +module_eval(<<'.,.,', 'grammar.y', 358) def _reduce_153(val, _values, result) result = WhileNode.new(val[1], nil) result end .,., -module_eval(<<'.,.,', 'grammar.y', 360) +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', 367) +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', 368) +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', 373) +module_eval(<<'.,.,', 'grammar.y', 372) def _reduce_157(val, _values, result) result = val result end .,., -module_eval(<<'.,.,', 'grammar.y', 374) +module_eval(<<'.,.,', 'grammar.y', 373) def _reduce_158(val, _values, result) result = [val[0], val[2]] result end .,., -module_eval(<<'.,.,', 'grammar.y', 379) +module_eval(<<'.,.,', 'grammar.y', 378) def _reduce_159(val, _values, result) result = {:source => val[1]} result end .,., -module_eval(<<'.,.,', 'grammar.y', 380) +module_eval(<<'.,.,', 'grammar.y', 379) def _reduce_160(val, _values, result) result = {:source => val[1], :object => true} result end .,., -module_eval(<<'.,.,', 'grammar.y', 382) +module_eval(<<'.,.,', 'grammar.y', 381) def _reduce_161(val, _values, result) result = val[0].merge(:filter => val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 384) +module_eval(<<'.,.,', 'grammar.y', 383) def _reduce_162(val, _values, result) result = val[0].merge(:step => val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 390) +module_eval(<<'.,.,', 'grammar.y', 389) def _reduce_163(val, _values, result) result = val[3].rewrite_condition(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 392) +module_eval(<<'.,.,', 'grammar.y', 391) def _reduce_164(val, _values, result) result = val[3].rewrite_condition(val[1]).add_else(val[5]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 397) +module_eval(<<'.,.,', 'grammar.y', 396) def _reduce_165(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 398) +module_eval(<<'.,.,', 'grammar.y', 397) def _reduce_166(val, _values, result) result = val[0] << val[1] result end .,., -module_eval(<<'.,.,', 'grammar.y', 403) +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', 405) +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', 406) +module_eval(<<'.,.,', 'grammar.y', 405) def _reduce_169(val, _values, result) result = val[2].add_comment(val[0]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 411) +module_eval(<<'.,.,', 'grammar.y', 410) def _reduce_170(val, _values, result) result = IfNode.new(val[1], val[2]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 416) +module_eval(<<'.,.,', 'grammar.y', 415) def _reduce_171(val, _values, result) result = val[1].force_statement result end .,., -module_eval(<<'.,.,', 'grammar.y', 421) +module_eval(<<'.,.,', 'grammar.y', 420) def _reduce_172(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 422) +module_eval(<<'.,.,', 'grammar.y', 421) def _reduce_173(val, _values, result) result = val[0].add_else(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 427) +module_eval(<<'.,.,', 'grammar.y', 426) def _reduce_174(val, _values, result) result = nil result end .,., -module_eval(<<'.,.,', 'grammar.y', 428) +module_eval(<<'.,.,', 'grammar.y', 427) def _reduce_175(val, _values, result) result = val[1] result end .,., -module_eval(<<'.,.,', 'grammar.y', 433) +module_eval(<<'.,.,', 'grammar.y', 432) def _reduce_176(val, _values, result) result = val[0] result end .,., -module_eval(<<'.,.,', 'grammar.y', 434) +module_eval(<<'.,.,', 'grammar.y', 433) def _reduce_177(val, _values, result) result = val[0].add_else(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 439) +module_eval(<<'.,.,', 'grammar.y', 438) def _reduce_178(val, _values, result) result = val[0].add_else(val[1]) result end .,., -module_eval(<<'.,.,', 'grammar.y', 440) +module_eval(<<'.,.,', 'grammar.y', 439) def _reduce_179(val, _values, result) result = IfNode.new(val[2], Expressions.wrap(val[0]), nil, {:statement => true}) result end .,., -module_eval(<<'.,.,', 'grammar.y', 441) +module_eval(<<'.,.,', 'grammar.y', 440) def _reduce_180(val, _values, result) result = IfNode.new(val[2], Expressions.wrap(val[0]), nil, {:statement => true, :invert => true}) result diff --git a/lib/coffee_script/rewriter.rb b/lib/coffee_script/rewriter.rb index bb573e38..1fd77cfc 100644 --- a/lib/coffee_script/rewriter.rb +++ b/lib/coffee_script/rewriter.rb @@ -19,7 +19,7 @@ module CoffeeScript # Tokens pairs that, in immediate succession, indicate an implicit call. IMPLICIT_FUNC = [:IDENTIFIER, :SUPER] - IMPLICIT_END = [:IF, :UNLESS, :FOR, :WHILE, "\n", :PARAM_START] + IMPLICIT_END = [:IF, :UNLESS, :FOR, :WHILE, "\n", :PARAM_START, :OUTDENT] IMPLICIT_CALL = [:IDENTIFIER, :NUMBER, :STRING, :JS, :REGEX, :NEW, :PARAM_START, :TRY, :DELETE, :INSTANCEOF, :TYPEOF, :SWITCH, :ARGUMENTS, :TRUE, :FALSE, :YES, :NO, :ON, :OFF, '!', '!!', :NOT] @@ -155,16 +155,20 @@ module CoffeeScript # Insert the implicit parentheses here, so that the parser doesn't have to # deal with them. def add_implicit_parentheses - open = false + stack = [0] scan_tokens do |prev, token, post, i| - if open && IMPLICIT_END.include?(token[0]) - @tokens.insert(i, [')', Value.new(')', token[1].line)]) - open = false - next 2 + stack.push(0) if token[0] == :INDENT + 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)]) } + size, stack[-1] = stack[-1] + 1, 0 + next size end + stack.pop if token[0] == :OUTDENT next 1 unless IMPLICIT_FUNC.include?(prev[0]) && IMPLICIT_CALL.include?(token[0]) @tokens.insert(i, ['(', Value.new('(', token[1].line)]) - open = true + stack[-1] += 1 next token[0] == :PARAM_START ? 1 : 2 end end diff --git a/test/fixtures/execution/test_arguments.coffee b/test/fixtures/execution/test_arguments.coffee index 32b61e1a..3a3156a9 100644 --- a/test/fixtures/execution/test_arguments.coffee +++ b/test/fixtures/execution/test_arguments.coffee @@ -18,14 +18,14 @@ print(area( # Arguments are turned into arrays. -curried: () => +curried: => print area.apply(this, arguments.concat(20, 20)) is 100 curried 10, 10 # Arguments is not a special keyword -- it can be assigned to: -func: () => +func: => arguments: 25 arguments diff --git a/test/fixtures/execution/test_array_comprehension.coffee b/test/fixtures/execution/test_array_comprehension.coffee index f0ab48c3..b5005bd6 100644 --- a/test/fixtures/execution/test_array_comprehension.coffee +++ b/test/fixtures/execution/test_array_comprehension.coffee @@ -34,7 +34,7 @@ methods: ['one', 'two', 'three'] for method in methods name: method - obj[name]: () => + obj[name]: => "I'm " + name print obj.one() is "I'm one" diff --git a/test/fixtures/execution/test_assignment.coffee b/test/fixtures/execution/test_assignment.coffee index ff25e765..c1b5d127 100644 --- a/test/fixtures/execution/test_assignment.coffee +++ b/test/fixtures/execution/test_assignment.coffee @@ -12,7 +12,7 @@ print result is true and result2 is true # Assign to conditional. -get_x: () => 10 +get_x: => 10 if x: get_x() then 100 diff --git a/test/fixtures/execution/test_blocks.coffee b/test/fixtures/execution/test_blocks.coffee index 4be80c69..29ac5296 100644 --- a/test/fixtures/execution/test_blocks.coffee +++ b/test/fixtures/execution/test_blocks.coffee @@ -1,4 +1,4 @@ -results: [1, 2, 3].map() (x) => +results: [1, 2, 3].map (x) => x * x print results.join(' ') is '1 4 9' \ No newline at end of file diff --git a/test/fixtures/execution/test_calling_super.coffee b/test/fixtures/execution/test_calling_super.coffee index e57baebc..61ac4dac 100644 --- a/test/fixtures/execution/test_calling_super.coffee +++ b/test/fixtures/execution/test_calling_super.coffee @@ -1,18 +1,18 @@ -Base: () => +Base: => Base::func: (string) => 'zero/' + string -FirstChild: () => +FirstChild: => FirstChild extends Base FirstChild::func: (string) => super('one/') + string -SecondChild: () => +SecondChild: => SecondChild extends FirstChild SecondChild::func: (string) => super('two/') + string -ThirdChild: () => +ThirdChild: => this.array: [1, 2, 3] ThirdChild extends SecondChild ThirdChild::func: (string) => @@ -29,7 +29,7 @@ TopClass: (arg) => SuperClass: (arg) => super 'super-' + arg -SubClass: () => +SubClass: => super 'sub' SuperClass extends TopClass diff --git a/test/fixtures/execution/test_chained_calls.coffee b/test/fixtures/execution/test_chained_calls.coffee index 6d3725ae..e3aab11d 100644 --- a/test/fixtures/execution/test_chained_calls.coffee +++ b/test/fixtures/execution/test_chained_calls.coffee @@ -1,5 +1,5 @@ identity_wrap: (x) => - () => x + => x result: identity_wrap(identity_wrap(true))()() diff --git a/test/fixtures/execution/test_everything.coffee b/test/fixtures/execution/test_everything.coffee index cc986018..fd5231e4 100644 --- a/test/fixtures/execution/test_everything.coffee +++ b/test/fixtures/execution/test_everything.coffee @@ -1,4 +1,4 @@ -func: () => +func: => a: 3 b: [] diff --git a/test/fixtures/execution/test_existence.coffee b/test/fixtures/execution/test_existence.coffee index a0438aa9..16c64c74 100644 --- a/test/fixtures/execution/test_existence.coffee +++ b/test/fixtures/execution/test_existence.coffee @@ -26,7 +26,7 @@ print z is null and x is "EX" # Only evaluate once. counter: 0 -get_next_node: () => +get_next_node: => throw "up" if counter counter++ diff --git a/test/fixtures/execution/test_expressions.coffee b/test/fixtures/execution/test_expressions.coffee index 042ea59c..e8dea0c5 100644 --- a/test/fixtures/execution/test_expressions.coffee +++ b/test/fixtures/execution/test_expressions.coffee @@ -17,7 +17,7 @@ print findit(items) is "bacon" obj: { num: 5 - func: () => + func: => this.result: if false 10 else diff --git a/test/fixtures/execution/test_functions.coffee b/test/fixtures/execution/test_functions.coffee index 4dde028c..ee88a0cb 100644 --- a/test/fixtures/execution/test_functions.coffee +++ b/test/fixtures/execution/test_functions.coffee @@ -1,6 +1,6 @@ x: 1 y: {} -y.x: () => 3 +y.x: => 3 print x is 1 print typeof(y.x) is 'function' @@ -9,17 +9,17 @@ print y.x.name is 'x' # The empty function should not cause a syntax error. -() => +=> obj: { name: "Fred" - bound: () => - (() ==> print(this.name is "Fred"))() + bound: => + (==> print(this.name is "Fred"))() - unbound: () => - (() => print(!this.name?))() + unbound: => + (=> print(!this.name?))() } obj.unbound() diff --git a/test/fixtures/execution/test_funky_comments.coffee b/test/fixtures/execution/test_funky_comments.coffee index 72652431..8acaafd8 100644 --- a/test/fixtures/execution/test_funky_comments.coffee +++ b/test/fixtures/execution/test_funky_comments.coffee @@ -1,5 +1,5 @@ # comment -func: () => +func: => # comment false false # comment @@ -14,7 +14,7 @@ switch 'string' when null something_else() -() => +=> code() # comment diff --git a/test/fixtures/execution/test_literals.coffee b/test/fixtures/execution/test_literals.coffee index 923014b5..3f92a584 100644 --- a/test/fixtures/execution/test_literals.coffee +++ b/test/fixtures/execution/test_literals.coffee @@ -14,7 +14,7 @@ neg: (3 -4) print neg is -1 -func: () => +func: => return if true print func() is null diff --git a/test/fixtures/execution/test_operations.coffee b/test/fixtures/execution/test_operations.coffee index e9de9324..9f0d51db 100644 --- a/test/fixtures/execution/test_operations.coffee +++ b/test/fixtures/execution/test_operations.coffee @@ -13,6 +13,6 @@ print 50 > 10 > 5 is parseInt('5', 10) # more than once. i: 0 -func: () => i++ +func: => i++ print 1 > func() < 1