From 0f0c7bcb5234f480b4d74b5dc9624bedf66f0bca Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Tue, 28 May 2013 18:16:32 +0400 Subject: [PATCH] do highlighting for file-level docstrings which are not at the beginning of file PY-9617 --- .../com/jetbrains/python/lexer/Python.flex | 5 +- .../jetbrains/python/lexer/_PythonLexer.java | 869 +++++++++--------- 2 files changed, 441 insertions(+), 433 deletions(-) diff --git a/python/src/com/jetbrains/python/lexer/Python.flex b/python/src/com/jetbrains/python/lexer/Python.flex index 57b4ec076777..2cf43f323e6d 100644 --- a/python/src/com/jetbrains/python/lexer/Python.flex +++ b/python/src/com/jetbrains/python/lexer/Python.flex @@ -81,7 +81,6 @@ return yylength()-i-1; %% -[\n] { return PyTokenTypes.LINE_BREAK; } [\ ] { return PyTokenTypes.SPACE; } [\t] { return PyTokenTypes.TAB; } [\f] { return PyTokenTypes.FORMFEED; } @@ -89,6 +88,8 @@ return yylength()-i-1; "\\" { return PyTokenTypes.BACKSLASH; } { +[\n] { if (zzCurrentPos == 0) yybegin(PENDING_DOCSTRING); return PyTokenTypes.LINE_BREAK; } + {SINGLE_QUOTED_STRING} { if (zzInput == YYEOF && zzStartRead == 0) return PyTokenTypes.DOCSTRING; else return PyTokenTypes.SINGLE_QUOTED_STRING; } {TRIPLE_QUOTED_STRING} { if (zzInput == YYEOF && zzStartRead == 0) return PyTokenTypes.DOCSTRING; @@ -110,6 +111,8 @@ return PyTokenTypes.DOCSTRING; } } +[\n] { return PyTokenTypes.LINE_BREAK; } + { {LONGINTEGER} { return PyTokenTypes.INTEGER_LITERAL; } {INTEGER} { return PyTokenTypes.INTEGER_LITERAL; } diff --git a/python/src/com/jetbrains/python/lexer/_PythonLexer.java b/python/src/com/jetbrains/python/lexer/_PythonLexer.java index 8466838ac138..346e6f65c156 100644 --- a/python/src/com/jetbrains/python/lexer/_PythonLexer.java +++ b/python/src/com/jetbrains/python/lexer/_PythonLexer.java @@ -1,4 +1,4 @@ -/* The following code was generated by JFlex 1.4.3 on 5/28/13 4:57 PM */ +/* The following code was generated by JFlex 1.4.3 on 5/28/13 6:11 PM */ /* It's an automatically generated code. Do not modify it. */ package com.jetbrains.python.lexer; @@ -12,7 +12,7 @@ import com.intellij.openapi.util.text.StringUtil; /** * This class is a scanner generated by * JFlex 1.4.3 - * on 5/28/13 4:57 PM from the specification file + * on 5/28/13 6:11 PM from the specification file * /home/ktisha/IDEA/tools/lexer/../../python/src/com/jetbrains/python/lexer/Python.flex */ class _PythonLexer implements FlexLexer { @@ -38,7 +38,7 @@ class _PythonLexer implements FlexLexer { * Translates characters to character classes */ private static final String ZZ_CMAP_PACKED = - "\11\0\1\41\1\37\1\0\1\42\1\13\22\0\1\40\1\74\1\36"+ + "\11\0\1\40\1\42\1\0\1\41\1\13\22\0\1\37\1\74\1\36"+ "\1\12\1\0\1\66\1\67\1\34\1\76\1\77\1\64\1\62\1\105"+ "\1\26\1\23\1\65\1\1\1\5\6\3\2\2\1\106\1\43\1\73"+ "\1\63\1\72\1\0\1\104\1\15\1\20\1\31\1\15\1\25\1\15"+ @@ -222,26 +222,27 @@ class _PythonLexer implements FlexLexer { "\1\14\1\15\12\3\1\16\1\17\1\20\1\21\1\22"+ "\1\23\1\24\1\25\1\26\1\27\1\1\1\30\1\31"+ "\1\32\1\33\1\34\1\35\1\36\1\37\1\40\1\41"+ - "\1\42\2\43\2\44\3\3\2\45\1\3\1\41\1\2"+ - "\4\0\1\2\1\46\1\0\1\47\3\3\1\50\5\3"+ - "\1\51\2\3\3\7\1\52\3\7\7\3\1\53\1\54"+ - "\1\55\5\3\1\56\1\57\1\60\1\61\1\62\1\63"+ + "\1\42\2\43\2\44\1\45\3\3\2\46\1\3\1\41"+ + "\1\2\4\0\1\2\1\47\1\0\1\50\3\3\1\51"+ + "\5\3\1\52\2\3\3\7\1\53\3\7\7\3\1\54"+ + "\1\55\1\56\5\3\1\57\1\60\1\61\1\62\1\63"+ "\1\64\1\65\1\66\1\67\1\70\1\71\1\72\1\73"+ - "\1\74\1\75\1\0\3\44\1\76\3\44\2\3\6\45"+ - "\1\77\1\0\3\2\1\46\1\0\1\100\12\3\1\7"+ - "\1\101\1\102\1\0\1\101\1\103\1\3\1\104\1\105"+ - "\1\106\2\3\1\107\5\3\1\110\1\111\1\112\1\113"+ - "\1\0\1\44\1\114\1\115\1\0\1\114\1\3\1\45"+ - "\2\116\1\117\1\3\2\0\3\3\1\120\1\121\2\3"+ - "\1\0\2\122\1\0\4\3\1\123\3\3\3\0\2\115"+ - "\7\0\1\3\2\0\1\124\3\3\1\125\1\0\2\101"+ - "\1\0\2\3\1\126\1\3\1\127\1\3\1\130\3\0"+ - "\2\114\4\0\2\116\1\0\1\3\1\131\1\132\1\3"+ - "\3\101\1\133\1\134\1\135\1\136\3\114\3\116\1\137"+ - "\1\3\1\122\1\140\7\0\1\141\2\101\2\114\2\116"; + "\1\74\1\75\1\76\1\0\3\44\1\77\3\44\2\3"+ + "\6\46\1\0\1\100\3\2\1\47\1\0\1\101\12\3"+ + "\1\7\1\102\1\103\1\0\1\102\1\104\1\3\1\105"+ + "\1\106\1\107\2\3\1\110\5\3\1\111\1\112\1\113"+ + "\1\114\1\0\1\44\1\115\1\116\1\0\1\115\1\3"+ + "\1\46\2\117\1\120\1\3\2\0\3\3\1\121\1\122"+ + "\2\3\1\0\2\123\1\0\4\3\1\124\3\3\3\0"+ + "\2\116\7\0\1\3\2\0\1\125\3\3\1\126\1\0"+ + "\2\102\1\0\2\3\1\127\1\3\1\130\1\3\1\131"+ + "\3\0\2\115\4\0\2\117\1\0\1\3\1\132\1\133"+ + "\1\3\3\102\1\134\1\135\1\136\1\137\3\115\3\117"+ + "\1\140\1\3\1\123\1\0\1\141\6\0\1\142\2\102"+ + "\2\115\2\117"; private static int [] zzUnpackAction() { - int [] result = new int[294]; + int [] result = new int[295]; int offset = 0; offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result); return result; @@ -273,39 +274,39 @@ class _PythonLexer implements FlexLexer { "\0\u0750\0\u0798\0\u07e0\0\u0828\0\u0870\0\u08b8\0\u0900\0\u0948"+ "\0\u0990\0\u09d8\0\u0a20\0\u0a68\0\u0ab0\0\u0af8\0\330\0\330"+ "\0\330\0\330\0\330\0\330\0\330\0\330\0\330\0\330"+ - "\0\330\0\330\0\u0b40\0\u0b88\0\u0bd0\0\u0c18\0\u0c60\0\u0ca8"+ - "\0\u0cf0\0\u0d38\0\u0d80\0\u0dc8\0\u0e10\0\u0e58\0\u0ea0\0\u0ee8"+ - "\0\u0f30\0\330\0\u0f78\0\u0fc0\0\330\0\u1008\0\u1050\0\u1098"+ - "\0\u01f8\0\u10e0\0\u1128\0\u1170\0\u11b8\0\u1200\0\330\0\u1248"+ - "\0\u1290\0\u12d8\0\u1320\0\u1368\0\330\0\u13b0\0\u13f8\0\u1440"+ - "\0\u1488\0\u14d0\0\u1518\0\u1560\0\u15a8\0\u15f0\0\u1638\0\u01f8"+ - "\0\u01f8\0\u01f8\0\u1680\0\u16c8\0\u1710\0\u1758\0\u17a0\0\330"+ - "\0\330\0\330\0\u17e8\0\330\0\u1830\0\330\0\330\0\330"+ - "\0\330\0\330\0\u1878\0\330\0\330\0\u18c0\0\330\0\u1908"+ - "\0\u1950\0\u1998\0\u19e0\0\330\0\u1a28\0\u1a70\0\u1ab8\0\u1b00"+ - "\0\u1b48\0\u1b90\0\u1bd8\0\u1c20\0\u1c68\0\u1cb0\0\u1cf8\0\330"+ - "\0\u0dc8\0\u1d40\0\u1d88\0\u1dd0\0\u1e18\0\u1e60\0\u01f8\0\u1ea8"+ - "\0\u1ef0\0\u1f38\0\u1f80\0\u1fc8\0\u2010\0\u2058\0\u20a0\0\u20e8"+ - "\0\u2130\0\u2178\0\u21c0\0\330\0\u2178\0\u2208\0\u01f8\0\u2250"+ - "\0\u01f8\0\u01f8\0\u01f8\0\u2298\0\u22e0\0\u01f8\0\u2328\0\u2370"+ - "\0\u23b8\0\u2400\0\u2448\0\330\0\330\0\330\0\330\0\u2490"+ - "\0\u24d8\0\u2520\0\330\0\u24d8\0\u2568\0\u25b0\0\330\0\u25f8"+ - "\0\u2640\0\u01f8\0\u2688\0\u26d0\0\u2718\0\u2760\0\u27a8\0\u27f0"+ - "\0\u01f8\0\u01f8\0\u2838\0\u2880\0\u28c8\0\u2910\0\u2958\0\u29a0"+ - "\0\u29e8\0\u2a30\0\u2a78\0\u2ac0\0\u01f8\0\u2b08\0\u2b50\0\u2b98"+ - "\0\u2be0\0\u2c28\0\u2c70\0\u2cb8\0\u2d00\0\u2d48\0\u2d90\0\u2dd8"+ - "\0\u2e20\0\u2e68\0\u2eb0\0\u2ef8\0\u2f40\0\u2f88\0\u2fd0\0\u01f8"+ - "\0\u3018\0\u3060\0\u30a8\0\u01f8\0\u30f0\0\u3138\0\u3180\0\u31c8"+ - "\0\u3210\0\u3258\0\u01f8\0\u32a0\0\u01f8\0\u32e8\0\u01f8\0\u3330"+ - "\0\u3378\0\u33c0\0\u3408\0\u3450\0\u3498\0\u1bd8\0\u1cf8\0\u34e0"+ - "\0\u3528\0\u3570\0\u35b8\0\u3600\0\u01f8\0\u01f8\0\u3648\0\u3690"+ - "\0\u36d8\0\u3720\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u24d8\0\u3768"+ - "\0\u37b0\0\330\0\u37f8\0\u3840\0\u01f8\0\u3888\0\330\0\330"+ - "\0\u3690\0\u38d0\0\u3918\0\u3960\0\u39a8\0\u39f0\0\u3a38\0\u01f8"+ - "\0\u30f0\0\u31c8\0\u33c0\0\u3498\0\u34e0\0\u35b8"; + "\0\330\0\330\0\u0b40\0\u0b88\0\u0bd0\0\330\0\u0c18\0\u0c60"+ + "\0\u0ca8\0\u0cf0\0\u0d38\0\u0d80\0\u0dc8\0\u0e10\0\u0e58\0\u0ea0"+ + "\0\u0ee8\0\u0f30\0\330\0\u0f78\0\u0fc0\0\330\0\u1008\0\u1050"+ + "\0\u1098\0\u01f8\0\u10e0\0\u1128\0\u1170\0\u11b8\0\u1200\0\330"+ + "\0\u1248\0\u1290\0\u12d8\0\u1320\0\u1368\0\330\0\u13b0\0\u13f8"+ + "\0\u1440\0\u1488\0\u14d0\0\u1518\0\u1560\0\u15a8\0\u15f0\0\u1638"+ + "\0\u01f8\0\u01f8\0\u01f8\0\u1680\0\u16c8\0\u1710\0\u1758\0\u17a0"+ + "\0\330\0\330\0\330\0\u17e8\0\330\0\u1830\0\330\0\330"+ + "\0\330\0\330\0\330\0\u1878\0\330\0\330\0\u18c0\0\330"+ + "\0\u1908\0\u1950\0\u1998\0\u19e0\0\330\0\u1a28\0\u1a70\0\u1ab8"+ + "\0\u1b00\0\u1b48\0\u1b90\0\u1bd8\0\u1c20\0\u1c68\0\u1cb0\0\u1cf8"+ + "\0\u0dc8\0\330\0\u1d40\0\u1d88\0\u1dd0\0\u1e18\0\u1e60\0\u01f8"+ + "\0\u1ea8\0\u1ef0\0\u1f38\0\u1f80\0\u1fc8\0\u2010\0\u2058\0\u20a0"+ + "\0\u20e8\0\u2130\0\u2178\0\u21c0\0\330\0\u2178\0\u2208\0\u01f8"+ + "\0\u2250\0\u01f8\0\u01f8\0\u01f8\0\u2298\0\u22e0\0\u01f8\0\u2328"+ + "\0\u2370\0\u23b8\0\u2400\0\u2448\0\330\0\330\0\330\0\330"+ + "\0\u2490\0\u24d8\0\u2520\0\330\0\u24d8\0\u2568\0\u25b0\0\330"+ + "\0\u25f8\0\u2640\0\u01f8\0\u2688\0\u26d0\0\u2718\0\u2760\0\u27a8"+ + "\0\u27f0\0\u01f8\0\u01f8\0\u2838\0\u2880\0\u28c8\0\u2910\0\u2958"+ + "\0\u29a0\0\u29e8\0\u2a30\0\u2a78\0\u2ac0\0\u01f8\0\u2b08\0\u2b50"+ + "\0\u2b98\0\u2be0\0\u2c28\0\u2c70\0\u2cb8\0\u2d00\0\u2d48\0\u2d90"+ + "\0\u2dd8\0\u2e20\0\u2e68\0\u2eb0\0\u2ef8\0\u2f40\0\u2f88\0\u2fd0"+ + "\0\u01f8\0\u3018\0\u3060\0\u30a8\0\u01f8\0\u30f0\0\u3138\0\u3180"+ + "\0\u31c8\0\u3210\0\u3258\0\u01f8\0\u32a0\0\u01f8\0\u32e8\0\u01f8"+ + "\0\u3330\0\u3378\0\u33c0\0\u3408\0\u3450\0\u3498\0\u1bd8\0\u1cf8"+ + "\0\u34e0\0\u3528\0\u3570\0\u35b8\0\u3600\0\u01f8\0\u01f8\0\u3648"+ + "\0\u3690\0\u36d8\0\u3720\0\u01f8\0\u01f8\0\u01f8\0\u01f8\0\u24d8"+ + "\0\u3768\0\u37b0\0\330\0\u37f8\0\u3840\0\u01f8\0\u3888\0\330"+ + "\0\u3690\0\330\0\u38d0\0\u3918\0\u3960\0\u39a8\0\u39f0\0\u3a38"+ + "\0\u01f8\0\u30f0\0\u31c8\0\u33c0\0\u3498\0\u34e0\0\u35b8"; private static int [] zzUnpackRowMap() { - int [] result = new int[294]; + int [] result = new int[295]; int offset = 0; offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result); return result; @@ -338,229 +339,229 @@ class _PythonLexer implements FlexLexer { "\1\60\1\61\1\62\1\63\1\64\1\65\1\66\1\67"+ "\1\70\1\71\10\72\1\73\1\72\1\14\5\72\1\73"+ "\7\72\4\73\1\74\1\23\1\75\1\25\1\26\1\27"+ - "\1\30\5\72\1\73\37\72\1\4\1\5\2\6\1\7"+ - "\1\6\1\10\1\11\1\76\1\13\1\14\1\4\4\10"+ - "\1\77\1\10\1\4\1\16\1\17\1\10\1\20\1\10"+ - "\1\100\3\77\1\101\1\23\1\102\1\25\1\26\1\27"+ - "\1\30\1\31\1\32\1\33\1\34\1\10\1\103\1\36"+ + "\1\76\5\72\1\73\37\72\1\4\1\5\2\6\1\7"+ + "\1\6\1\10\1\11\1\77\1\13\1\14\1\4\4\10"+ + "\1\100\1\10\1\4\1\16\1\17\1\10\1\20\1\10"+ + "\1\101\3\100\1\102\1\23\1\103\1\25\1\26\1\27"+ + "\1\76\1\31\1\32\1\33\1\34\1\10\1\104\1\36"+ "\1\10\1\37\1\40\1\41\1\10\1\42\1\43\1\10"+ "\1\44\1\45\1\46\1\47\1\50\1\51\1\52\1\53"+ "\1\54\1\55\1\56\1\57\1\60\1\61\1\62\1\63"+ - "\1\64\1\65\1\66\1\67\1\104\1\71\111\0\1\105"+ - "\1\106\1\105\1\0\1\105\1\107\1\110\1\111\1\112"+ - "\4\0\1\107\1\110\1\111\1\112\1\0\1\113\2\114"+ - "\1\0\1\115\61\0\3\6\1\0\1\6\3\0\1\112"+ - "\7\0\1\112\1\0\1\113\2\114\1\0\1\115\61\0"+ - "\6\10\1\116\2\10\2\0\7\10\1\0\2\10\1\0"+ - "\5\10\10\0\4\10\1\117\2\10\1\120\6\10\27\0"+ + "\1\64\1\65\1\66\1\67\1\105\1\71\111\0\1\106"+ + "\1\107\1\106\1\0\1\106\1\110\1\111\1\112\1\113"+ + "\4\0\1\110\1\111\1\112\1\113\1\0\1\114\2\115"+ + "\1\0\1\116\61\0\3\6\1\0\1\6\3\0\1\113"+ + "\7\0\1\113\1\0\1\114\2\115\1\0\1\116\61\0"+ + "\6\10\1\117\2\10\2\0\7\10\1\0\2\10\1\0"+ + "\5\10\10\0\4\10\1\120\2\10\1\121\6\10\27\0"+ "\11\10\2\0\7\10\1\0\2\10\1\0\5\10\10\0"+ "\16\10\27\0\11\10\2\0\7\10\1\0\2\10\1\0"+ - "\5\10\10\0\4\10\1\121\11\10\27\0\7\10\1\122"+ - "\1\10\2\0\4\10\1\122\2\10\1\0\2\10\1\0"+ - "\1\10\4\122\1\22\1\0\1\24\5\0\4\10\1\123"+ + "\5\10\10\0\4\10\1\122\11\10\27\0\7\10\1\123"+ + "\1\10\2\0\4\10\1\123\2\10\1\0\2\10\1\0"+ + "\1\10\4\123\1\22\1\0\1\24\5\0\4\10\1\124"+ "\11\10\27\0\11\10\2\0\7\10\1\0\2\10\1\0"+ - "\5\10\10\0\1\124\15\10\26\0\13\14\1\0\23\14"+ - "\1\0\50\14\1\0\7\10\1\122\1\10\2\0\4\10"+ - "\1\122\2\10\1\0\2\10\1\0\1\10\4\122\1\22"+ - "\1\0\1\24\5\0\4\10\1\122\11\10\27\0\3\113"+ - "\1\0\1\113\103\0\5\10\1\125\2\10\1\126\2\0"+ + "\5\10\10\0\1\125\15\10\26\0\13\14\1\0\26\14"+ + "\1\0\45\14\1\0\7\10\1\123\1\10\2\0\4\10"+ + "\1\123\2\10\1\0\2\10\1\0\1\10\4\123\1\22"+ + "\1\0\1\24\5\0\4\10\1\123\11\10\27\0\3\114"+ + "\1\0\1\114\103\0\5\10\1\126\2\10\1\127\2\0"+ "\7\10\1\0\2\10\1\0\5\10\10\0\16\10\111\0"+ - "\1\127\25\0\6\10\1\130\1\122\1\131\2\0\4\10"+ - "\1\122\2\10\1\0\2\10\1\0\1\10\4\122\1\22"+ - "\1\0\1\24\5\0\4\10\1\122\11\10\26\0\13\132"+ - "\1\0\20\132\1\133\1\134\1\132\1\135\50\132\13\136"+ - "\1\0\21\136\1\137\1\140\1\135\50\136\1\0\11\10"+ - "\2\0\7\10\1\0\2\10\1\0\5\10\10\0\1\10"+ - "\1\141\1\10\1\142\12\10\27\0\6\10\1\143\2\10"+ - "\2\0\7\10\1\0\2\10\1\0\5\10\10\0\16\10"+ - "\27\0\11\10\2\0\7\10\1\0\1\144\1\10\1\0"+ - "\5\10\10\0\16\10\27\0\7\10\1\122\1\10\2\0"+ - "\4\10\1\122\2\10\1\0\1\145\1\10\1\0\1\10"+ - "\4\122\1\22\1\0\1\24\5\0\1\146\3\10\1\122"+ - "\11\10\27\0\11\10\2\0\7\10\1\0\2\10\1\0"+ - "\5\10\10\0\4\10\1\147\11\10\27\0\3\10\1\150"+ - "\5\10\2\0\7\10\1\0\2\10\1\0\5\10\10\0"+ - "\1\10\1\151\1\10\1\152\6\10\1\153\3\10\27\0"+ + "\1\130\25\0\6\10\1\131\1\123\1\132\2\0\4\10"+ + "\1\123\2\10\1\0\2\10\1\0\1\10\4\123\1\22"+ + "\1\0\1\24\5\0\4\10\1\123\11\10\26\0\13\133"+ + "\1\0\20\133\1\134\1\135\4\133\1\136\45\133\13\137"+ + "\1\0\21\137\1\140\1\141\3\137\1\136\45\137\1\0"+ "\11\10\2\0\7\10\1\0\2\10\1\0\5\10\10\0"+ - "\1\154\15\10\27\0\11\10\2\0\7\10\1\0\2\10"+ - "\1\0\5\10\10\0\7\10\1\155\6\10\27\0\10\10"+ - "\1\156\2\0\7\10\1\0\2\10\1\0\5\10\10\0"+ - "\16\10\27\0\11\10\2\0\7\10\1\0\2\10\1\0"+ - "\5\10\10\0\15\10\1\157\111\0\1\160\107\0\1\161"+ - "\107\0\1\162\1\163\106\0\1\164\1\0\1\165\105\0"+ - "\1\166\107\0\1\167\107\0\1\170\107\0\1\171\107\0"+ - "\1\172\6\0\1\173\100\0\1\174\6\0\1\175\1\176"+ - "\77\0\1\177\34\0\1\200\7\0\1\200\7\0\4\200"+ - "\1\74\1\0\1\75\11\0\1\200\37\0\13\201\1\0"+ - "\20\201\1\202\1\203\1\201\1\204\50\201\13\205\1\0"+ - "\21\205\1\206\1\207\1\204\50\205\1\0\7\10\1\210"+ - "\1\10\2\0\4\10\1\210\2\10\1\0\2\10\1\0"+ - "\1\10\4\210\1\101\1\0\1\102\5\0\4\10\1\211"+ - "\11\10\27\0\7\10\1\210\1\10\2\0\4\10\1\210"+ - "\2\10\1\0\2\10\1\0\1\10\4\210\1\101\1\0"+ - "\1\102\5\0\4\10\1\210\11\10\27\0\6\10\1\130"+ - "\1\210\1\131\2\0\4\10\1\210\2\10\1\0\2\10"+ - "\1\0\1\10\4\210\1\101\1\0\1\102\5\0\4\10"+ - "\1\210\11\10\26\0\13\212\1\0\20\212\1\213\1\214"+ - "\1\212\1\0\50\212\13\215\1\0\21\215\1\216\1\217"+ - "\1\0\50\215\1\0\7\10\1\210\1\10\2\0\4\10"+ - "\1\210\2\10\1\0\1\145\1\10\1\0\1\10\4\210"+ - "\1\101\1\0\1\102\5\0\1\146\3\10\1\210\11\10"+ - "\65\0\1\220\1\221\50\0\1\105\1\106\1\105\1\0"+ - "\1\105\3\0\1\112\7\0\1\112\1\0\1\113\2\114"+ - "\1\0\1\115\61\0\3\106\1\0\1\106\15\0\1\113"+ - "\2\114\1\0\1\115\61\0\5\222\2\0\1\222\4\0"+ - "\1\222\2\0\1\222\3\0\2\222\2\0\2\222\12\0"+ - "\1\222\1\0\1\222\42\0\1\223\1\0\1\223\1\0"+ - "\1\223\103\0\1\224\3\0\1\224\103\0\3\113\1\0"+ - "\1\113\16\0\2\114\1\0\1\115\61\0\3\225\1\0"+ - "\1\225\20\0\1\226\33\0\1\226\26\0\11\10\2\0"+ - "\7\10\1\0\2\10\1\0\5\10\10\0\4\10\1\227"+ - "\11\10\27\0\6\10\1\230\2\10\2\0\7\10\1\0"+ - "\2\10\1\0\5\10\10\0\16\10\27\0\11\10\2\0"+ - "\7\10\1\0\2\10\1\0\5\10\10\0\1\10\1\231"+ - "\14\10\27\0\7\10\1\232\1\10\2\0\4\10\1\232"+ - "\2\10\1\0\2\10\1\0\1\10\4\232\1\22\1\0"+ - "\1\24\5\0\4\10\1\232\11\10\27\0\7\10\1\232"+ - "\1\10\2\0\4\10\1\232\2\10\1\0\1\233\1\10"+ - "\1\0\1\10\4\232\1\22\1\0\1\24\5\0\4\10"+ - "\1\232\11\10\27\0\11\10\2\0\7\10\1\0\2\10"+ - "\1\0\5\10\10\0\12\10\1\234\3\10\27\0\11\10"+ - "\2\0\7\10\1\0\2\10\1\0\1\10\1\235\3\10"+ + "\1\10\1\142\1\10\1\143\12\10\27\0\6\10\1\144"+ + "\2\10\2\0\7\10\1\0\2\10\1\0\5\10\10\0"+ + "\16\10\27\0\11\10\2\0\7\10\1\0\1\145\1\10"+ + "\1\0\5\10\10\0\16\10\27\0\7\10\1\123\1\10"+ + "\2\0\4\10\1\123\2\10\1\0\1\146\1\10\1\0"+ + "\1\10\4\123\1\22\1\0\1\24\5\0\1\147\3\10"+ + "\1\123\11\10\27\0\11\10\2\0\7\10\1\0\2\10"+ + "\1\0\5\10\10\0\4\10\1\150\11\10\27\0\3\10"+ + "\1\151\5\10\2\0\7\10\1\0\2\10\1\0\5\10"+ + "\10\0\1\10\1\152\1\10\1\153\6\10\1\154\3\10"+ + "\27\0\11\10\2\0\7\10\1\0\2\10\1\0\5\10"+ + "\10\0\1\155\15\10\27\0\11\10\2\0\7\10\1\0"+ + "\2\10\1\0\5\10\10\0\7\10\1\156\6\10\27\0"+ + "\10\10\1\157\2\0\7\10\1\0\2\10\1\0\5\10"+ "\10\0\16\10\27\0\11\10\2\0\7\10\1\0\2\10"+ - "\1\0\5\10\10\0\3\10\1\236\3\10\1\237\6\10"+ - "\27\0\11\10\2\0\7\10\1\0\2\10\1\0\5\10"+ - "\10\0\1\10\1\240\14\10\27\0\11\10\2\0\7\10"+ - "\1\0\2\10\1\0\5\10\10\0\1\241\15\10\26\0"+ - "\13\132\1\0\20\132\1\242\1\134\1\132\1\135\50\132"+ - "\34\0\1\243\1\244\1\0\1\135\2\245\1\0\1\135"+ - "\44\0\110\132\13\136\1\0\21\136\1\137\1\242\1\135"+ - "\160\136\35\0\1\244\1\246\1\135\2\245\1\0\1\135"+ - "\45\0\11\10\2\0\7\10\1\0\2\10\1\0\5\10"+ - "\10\0\2\10\1\247\13\10\27\0\11\10\2\0\7\10"+ - "\1\0\2\10\1\0\5\10\10\0\3\10\1\250\12\10"+ - "\27\0\11\10\2\0\7\10\1\0\2\10\1\0\5\10"+ - "\10\0\5\10\1\251\10\10\27\0\3\10\1\252\4\10"+ - "\1\253\2\0\7\10\1\0\2\10\1\0\5\10\10\0"+ + "\1\0\5\10\10\0\15\10\1\160\111\0\1\161\107\0"+ + "\1\162\107\0\1\163\1\164\106\0\1\165\1\0\1\166"+ + "\105\0\1\167\107\0\1\170\107\0\1\171\107\0\1\172"+ + "\107\0\1\173\6\0\1\174\100\0\1\175\6\0\1\176"+ + "\1\177\77\0\1\200\34\0\1\201\7\0\1\201\7\0"+ + "\4\201\1\74\1\0\1\75\11\0\1\201\37\0\13\202"+ + "\1\0\20\202\1\203\1\204\4\202\1\205\45\202\13\206"+ + "\1\0\21\206\1\207\1\210\3\206\1\205\45\206\1\0"+ + "\7\10\1\211\1\10\2\0\4\10\1\211\2\10\1\0"+ + "\2\10\1\0\1\10\4\211\1\102\1\0\1\103\5\0"+ + "\4\10\1\212\11\10\27\0\7\10\1\211\1\10\2\0"+ + "\4\10\1\211\2\10\1\0\2\10\1\0\1\10\4\211"+ + "\1\102\1\0\1\103\5\0\4\10\1\211\11\10\27\0"+ + "\6\10\1\131\1\211\1\132\2\0\4\10\1\211\2\10"+ + "\1\0\2\10\1\0\1\10\4\211\1\102\1\0\1\103"+ + "\5\0\4\10\1\211\11\10\26\0\13\213\1\0\20\213"+ + "\1\214\1\215\4\213\1\0\45\213\13\216\1\0\21\216"+ + "\1\217\1\220\3\216\1\0\45\216\1\0\7\10\1\211"+ + "\1\10\2\0\4\10\1\211\2\10\1\0\1\146\1\10"+ + "\1\0\1\10\4\211\1\102\1\0\1\103\5\0\1\147"+ + "\3\10\1\211\11\10\65\0\1\221\2\0\1\222\46\0"+ + "\1\106\1\107\1\106\1\0\1\106\3\0\1\113\7\0"+ + "\1\113\1\0\1\114\2\115\1\0\1\116\61\0\3\107"+ + "\1\0\1\107\15\0\1\114\2\115\1\0\1\116\61\0"+ + "\5\223\2\0\1\223\4\0\1\223\2\0\1\223\3\0"+ + "\2\223\2\0\2\223\12\0\1\223\1\0\1\223\42\0"+ + "\1\224\1\0\1\224\1\0\1\224\103\0\1\225\3\0"+ + "\1\225\103\0\3\114\1\0\1\114\16\0\2\115\1\0"+ + "\1\116\61\0\3\226\1\0\1\226\20\0\1\227\33\0"+ + "\1\227\26\0\11\10\2\0\7\10\1\0\2\10\1\0"+ + "\5\10\10\0\4\10\1\230\11\10\27\0\6\10\1\231"+ + "\2\10\2\0\7\10\1\0\2\10\1\0\5\10\10\0"+ "\16\10\27\0\11\10\2\0\7\10\1\0\2\10\1\0"+ - "\5\10\10\0\5\10\1\254\10\10\27\0\11\10\2\0"+ - "\7\10\1\0\2\10\1\0\5\10\10\0\7\10\1\255"+ - "\6\10\27\0\11\10\2\0\7\10\1\0\2\10\1\0"+ - "\5\10\10\0\11\10\1\256\4\10\27\0\11\10\2\0"+ - "\7\10\1\0\2\10\1\0\5\10\10\0\10\10\1\257"+ - "\5\10\27\0\11\10\2\0\7\10\1\0\2\10\1\0"+ - "\5\10\10\0\3\10\1\260\12\10\27\0\11\10\2\0"+ - "\7\10\1\0\1\261\1\10\1\0\5\10\10\0\16\10"+ - "\27\0\6\10\1\262\2\10\2\0\7\10\1\0\2\10"+ - "\1\0\5\10\10\0\16\10\27\0\11\10\2\0\7\10"+ - "\1\0\2\10\1\0\5\10\10\0\7\10\1\263\6\10"+ - "\111\0\1\264\107\0\1\265\107\0\1\266\107\0\1\267"+ - "\34\0\1\270\7\0\1\270\7\0\4\270\1\74\1\0"+ - "\1\75\11\0\1\270\37\0\13\201\1\0\20\201\1\271"+ - "\1\203\1\201\1\204\50\201\34\0\1\272\1\273\1\0"+ - "\1\204\2\274\1\0\1\204\44\0\110\201\13\205\1\0"+ - "\21\205\1\206\1\271\1\204\160\205\35\0\1\273\1\275"+ - "\1\204\2\274\1\0\1\204\45\0\7\10\1\276\1\10"+ - "\2\0\4\10\1\276\2\10\1\0\2\10\1\0\1\10"+ - "\4\276\1\101\1\0\1\102\5\0\4\10\1\276\11\10"+ - "\27\0\7\10\1\276\1\10\2\0\4\10\1\276\2\10"+ - "\1\0\1\233\1\10\1\0\1\10\4\276\1\101\1\0"+ - "\1\102\5\0\4\10\1\276\11\10\26\0\13\212\1\0"+ - "\20\212\1\277\1\214\1\212\1\0\50\212\34\0\1\300"+ - "\53\0\110\212\13\215\1\0\21\215\1\216\1\277\1\0"+ - "\160\215\36\0\1\301\52\0\5\222\2\0\1\222\1\112"+ - "\3\0\1\222\2\0\1\222\1\112\2\0\2\222\2\0"+ - "\2\222\12\0\1\222\1\0\1\222\42\0\1\223\1\0"+ - "\1\223\1\0\1\223\3\0\1\112\7\0\1\112\67\0"+ - "\1\224\3\0\1\224\3\0\1\112\7\0\1\112\67\0"+ - "\3\225\1\0\1\225\21\0\1\115\61\0\3\225\1\0"+ - "\1\225\103\0\11\10\2\0\7\10\1\0\2\10\1\0"+ - "\5\10\10\0\12\10\1\302\3\10\27\0\11\10\2\0"+ - "\7\10\1\0\2\10\1\0\5\10\10\0\1\303\15\10"+ + "\5\10\10\0\1\10\1\232\14\10\27\0\7\10\1\233"+ + "\1\10\2\0\4\10\1\233\2\10\1\0\2\10\1\0"+ + "\1\10\4\233\1\22\1\0\1\24\5\0\4\10\1\233"+ + "\11\10\27\0\7\10\1\233\1\10\2\0\4\10\1\233"+ + "\2\10\1\0\1\234\1\10\1\0\1\10\4\233\1\22"+ + "\1\0\1\24\5\0\4\10\1\233\11\10\27\0\11\10"+ + "\2\0\7\10\1\0\2\10\1\0\5\10\10\0\12\10"+ + "\1\235\3\10\27\0\11\10\2\0\7\10\1\0\2\10"+ + "\1\0\1\10\1\236\3\10\10\0\16\10\27\0\11\10"+ + "\2\0\7\10\1\0\2\10\1\0\5\10\10\0\3\10"+ + "\1\237\3\10\1\240\6\10\27\0\11\10\2\0\7\10"+ + "\1\0\2\10\1\0\5\10\10\0\1\10\1\241\14\10"+ "\27\0\11\10\2\0\7\10\1\0\2\10\1\0\5\10"+ - "\1\304\1\0\1\305\5\0\16\10\27\0\11\10\2\0"+ - "\7\10\1\0\2\10\1\0\5\10\10\0\1\306\15\10"+ - "\27\0\7\10\1\307\1\10\2\0\7\10\1\0\2\10"+ + "\10\0\1\242\15\10\26\0\13\133\1\0\20\133\1\243"+ + "\1\135\4\133\1\136\45\133\34\0\1\244\1\245\1\0"+ + "\2\246\1\0\2\136\44\0\110\133\13\137\1\0\21\137"+ + "\1\140\1\243\3\137\1\136\155\137\35\0\1\245\1\247"+ + "\2\246\1\0\2\136\45\0\11\10\2\0\7\10\1\0"+ + "\2\10\1\0\5\10\10\0\2\10\1\250\13\10\27\0"+ + "\11\10\2\0\7\10\1\0\2\10\1\0\5\10\10\0"+ + "\3\10\1\251\12\10\27\0\11\10\2\0\7\10\1\0"+ + "\2\10\1\0\5\10\10\0\5\10\1\252\10\10\27\0"+ + "\3\10\1\253\4\10\1\254\2\0\7\10\1\0\2\10"+ "\1\0\5\10\10\0\16\10\27\0\11\10\2\0\7\10"+ - "\1\0\1\310\1\10\1\0\5\10\10\0\16\10\27\0"+ - "\11\10\2\0\7\10\1\0\1\311\1\10\1\0\5\10"+ - "\10\0\16\10\27\0\3\10\1\312\5\10\2\0\7\10"+ - "\1\0\2\10\1\0\5\10\10\0\16\10\27\0\11\10"+ - "\2\0\7\10\1\0\2\10\1\0\5\10\10\0\5\10"+ - "\1\313\10\10\27\0\11\10\2\0\7\10\1\0\2\10"+ - "\1\0\5\10\10\0\3\10\1\314\12\10\63\0\1\244"+ - "\1\0\1\135\2\245\1\0\1\135\44\0\34\243\1\315"+ - "\1\316\52\243\35\246\1\317\1\320\51\246\1\0\11\10"+ - "\2\0\7\10\1\0\1\321\1\10\1\0\5\10\10\0"+ - "\16\10\27\0\11\10\2\0\7\10\1\0\2\10\1\0"+ - "\4\10\1\322\10\0\16\10\27\0\11\10\2\0\7\10"+ - "\1\0\2\10\1\0\5\10\10\0\3\10\1\323\12\10"+ - "\27\0\6\10\1\324\2\10\2\0\7\10\1\0\2\10"+ - "\1\0\5\10\10\0\16\10\27\0\11\10\2\0\7\10"+ - "\1\0\2\10\1\0\5\10\10\0\3\10\1\325\12\10"+ - "\27\0\10\10\1\326\2\0\7\10\1\0\2\10\1\0"+ - "\5\10\10\0\16\10\27\0\7\10\1\327\1\10\2\0"+ + "\1\0\2\10\1\0\5\10\10\0\5\10\1\255\10\10"+ + "\27\0\11\10\2\0\7\10\1\0\2\10\1\0\5\10"+ + "\10\0\7\10\1\256\6\10\27\0\11\10\2\0\7\10"+ + "\1\0\2\10\1\0\5\10\10\0\11\10\1\257\4\10"+ + "\27\0\11\10\2\0\7\10\1\0\2\10\1\0\5\10"+ + "\10\0\10\10\1\260\5\10\27\0\11\10\2\0\7\10"+ + "\1\0\2\10\1\0\5\10\10\0\3\10\1\261\12\10"+ + "\27\0\11\10\2\0\7\10\1\0\1\262\1\10\1\0"+ + "\5\10\10\0\16\10\27\0\6\10\1\263\2\10\2\0"+ "\7\10\1\0\2\10\1\0\5\10\10\0\16\10\27\0"+ - "\10\10\1\330\2\0\7\10\1\0\2\10\1\0\5\10"+ - "\10\0\16\10\62\0\1\331\1\0\1\332\106\0\1\273"+ - "\1\0\1\204\2\274\1\0\1\204\44\0\34\272\1\333"+ - "\1\334\52\272\35\275\1\335\1\336\51\275\1\0\11\10"+ - "\2\0\7\10\1\0\2\10\1\0\5\10\1\337\1\0"+ - "\1\340\5\0\16\10\26\0\34\300\1\341\1\342\52\300"+ - "\35\301\1\343\1\344\51\301\1\0\10\10\1\345\2\0"+ - "\7\10\1\0\2\10\1\0\5\10\10\0\16\10\62\0"+ - "\1\346\111\0\1\347\52\0\11\10\2\0\7\10\1\0"+ - "\2\10\1\0\5\10\10\0\6\10\1\350\7\10\27\0"+ "\11\10\2\0\7\10\1\0\2\10\1\0\5\10\10\0"+ - "\2\10\1\351\13\10\27\0\11\10\2\0\7\10\1\0"+ - "\2\10\1\0\5\10\10\0\10\10\1\352\5\10\27\0"+ - "\11\10\2\0\7\10\1\0\2\10\1\0\5\10\10\0"+ - "\7\10\1\353\6\10\27\0\11\10\2\0\7\10\1\0"+ - "\2\10\1\0\5\10\10\0\3\10\1\354\12\10\26\0"+ - "\34\243\1\355\1\356\162\243\145\246\1\357\1\360\51\246"+ - "\1\0\11\10\2\0\7\10\1\0\2\10\1\0\5\10"+ - "\10\0\4\10\1\361\11\10\27\0\11\10\2\0\7\10"+ - "\1\0\2\10\1\0\5\10\10\0\4\10\1\362\11\10"+ - "\27\0\11\10\2\0\7\10\1\0\1\363\1\10\1\0"+ - "\5\10\10\0\16\10\27\0\11\10\2\0\7\10\1\0"+ - "\2\10\1\0\5\10\10\0\4\10\1\364\11\10\27\0"+ - "\11\10\2\0\7\10\1\0\2\10\1\0\5\10\10\0"+ - "\2\10\1\365\13\10\27\0\11\10\2\0\7\10\1\0"+ - "\2\10\1\0\5\10\10\0\1\366\15\10\27\0\11\10"+ - "\2\0\7\10\1\0\1\367\1\10\1\0\5\10\10\0"+ - "\16\10\62\0\1\370\111\0\1\371\51\0\34\272\1\372"+ - "\1\373\162\272\145\275\1\374\1\375\51\275\34\0\1\376"+ - "\111\0\1\377\51\0\34\300\1\u0100\1\u0101\162\300\145\301"+ - "\1\u0102\1\u0103\51\301\1\0\10\10\1\u0104\2\0\7\10"+ - "\1\0\2\10\1\0\5\10\10\0\16\10\62\0\1\243"+ - "\111\0\1\246\52\0\11\10\2\0\7\10\1\0\2\10"+ - "\1\0\5\10\10\0\1\u0105\15\10\27\0\11\10\2\0"+ - "\7\10\1\0\2\10\1\0\5\10\10\0\5\10\1\u0106"+ - "\10\10\27\0\11\10\2\0\7\10\1\0\2\10\1\0"+ - "\5\10\10\0\1\10\1\u0107\14\10\26\0\34\243\1\u0108"+ - "\1\356\106\243\1\u0109\1\356\52\243\35\246\1\357\1\u010a"+ - "\106\246\1\357\1\u0108\51\246\1\0\11\10\2\0\7\10"+ - "\1\0\2\10\1\0\5\10\10\0\5\10\1\u010b\10\10"+ + "\7\10\1\264\6\10\111\0\1\265\107\0\1\266\107\0"+ + "\1\267\107\0\1\270\34\0\1\271\7\0\1\271\7\0"+ + "\4\271\1\74\1\0\1\75\11\0\1\271\37\0\13\202"+ + "\1\0\20\202\1\272\1\204\4\202\1\205\45\202\34\0"+ + "\1\273\1\274\1\0\2\275\1\0\2\205\44\0\110\202"+ + "\13\206\1\0\21\206\1\207\1\272\3\206\1\205\155\206"+ + "\35\0\1\274\1\276\2\275\1\0\2\205\45\0\7\10"+ + "\1\277\1\10\2\0\4\10\1\277\2\10\1\0\2\10"+ + "\1\0\1\10\4\277\1\102\1\0\1\103\5\0\4\10"+ + "\1\277\11\10\27\0\7\10\1\277\1\10\2\0\4\10"+ + "\1\277\2\10\1\0\1\234\1\10\1\0\1\10\4\277"+ + "\1\102\1\0\1\103\5\0\4\10\1\277\11\10\26\0"+ + "\13\213\1\0\20\213\1\300\1\215\4\213\1\0\45\213"+ + "\34\0\1\301\53\0\110\213\13\216\1\0\21\216\1\217"+ + "\1\300\3\216\1\0\155\216\36\0\1\302\52\0\5\223"+ + "\2\0\1\223\1\113\3\0\1\223\2\0\1\223\1\113"+ + "\2\0\2\223\2\0\2\223\12\0\1\223\1\0\1\223"+ + "\42\0\1\224\1\0\1\224\1\0\1\224\3\0\1\113"+ + "\7\0\1\113\67\0\1\225\3\0\1\225\3\0\1\113"+ + "\7\0\1\113\67\0\3\226\1\0\1\226\21\0\1\116"+ + "\61\0\3\226\1\0\1\226\103\0\11\10\2\0\7\10"+ + "\1\0\2\10\1\0\5\10\10\0\12\10\1\303\3\10"+ "\27\0\11\10\2\0\7\10\1\0\2\10\1\0\5\10"+ - "\10\0\1\10\1\u010c\14\10\27\0\11\10\2\0\7\10"+ - "\1\0\2\10\1\0\5\10\10\0\5\10\1\u010d\10\10"+ - "\27\0\10\10\1\u010e\2\0\7\10\1\0\2\10\1\0"+ - "\5\10\10\0\16\10\62\0\1\272\111\0\1\275\51\0"+ - "\34\272\1\u010f\1\373\106\272\1\u0110\1\373\52\272\35\275"+ - "\1\374\1\u0111\106\275\1\374\1\u010f\51\275\34\300\1\u0112"+ - "\1\u0101\106\300\1\u0113\1\u0101\52\300\35\301\1\u0102\1\u0114"+ - "\106\301\1\u0102\1\u0112\51\301\1\0\11\10\2\0\7\10"+ - "\1\0\2\10\1\0\5\10\10\0\11\10\1\u0115\4\10"+ - "\27\0\11\10\2\0\7\10\1\0\2\10\1\0\4\10"+ - "\1\u0116\10\0\16\10\63\0\1\u0117\1\0\1\u0118\2\u0119"+ - "\1\0\1\u0118\44\0\34\243\1\u011a\1\356\52\243\35\246"+ - "\1\357\1\u011b\51\246\34\272\1\u011c\1\373\52\272\35\275"+ - "\1\374\1\u011d\51\275\34\300\1\u011e\1\u0101\52\300\35\301"+ - "\1\u0102\1\u011f\51\301\1\0\11\10\2\0\7\10\1\0"+ - "\1\u0120\1\10\1\0\5\10\10\0\16\10\26\0\34\243"+ - "\1\u0121\1\356\52\243\35\246\1\357\1\u0122\51\246\34\272"+ - "\1\u0123\1\373\52\272\35\275\1\374\1\u0124\51\275\34\300"+ - "\1\u0125\1\u0101\52\300\35\301\1\u0102\1\u0126\51\301"; + "\10\0\1\304\15\10\27\0\11\10\2\0\7\10\1\0"+ + "\2\10\1\0\5\10\1\305\1\0\1\306\5\0\16\10"+ + "\27\0\11\10\2\0\7\10\1\0\2\10\1\0\5\10"+ + "\10\0\1\307\15\10\27\0\7\10\1\310\1\10\2\0"+ + "\7\10\1\0\2\10\1\0\5\10\10\0\16\10\27\0"+ + "\11\10\2\0\7\10\1\0\1\311\1\10\1\0\5\10"+ + "\10\0\16\10\27\0\11\10\2\0\7\10\1\0\1\312"+ + "\1\10\1\0\5\10\10\0\16\10\27\0\3\10\1\313"+ + "\5\10\2\0\7\10\1\0\2\10\1\0\5\10\10\0"+ + "\16\10\27\0\11\10\2\0\7\10\1\0\2\10\1\0"+ + "\5\10\10\0\5\10\1\314\10\10\27\0\11\10\2\0"+ + "\7\10\1\0\2\10\1\0\5\10\10\0\3\10\1\315"+ + "\12\10\63\0\1\245\1\0\2\246\1\0\2\136\44\0"+ + "\34\244\1\316\1\317\52\244\35\247\1\320\1\321\51\247"+ + "\1\0\11\10\2\0\7\10\1\0\1\322\1\10\1\0"+ + "\5\10\10\0\16\10\27\0\11\10\2\0\7\10\1\0"+ + "\2\10\1\0\4\10\1\323\10\0\16\10\27\0\11\10"+ + "\2\0\7\10\1\0\2\10\1\0\5\10\10\0\3\10"+ + "\1\324\12\10\27\0\6\10\1\325\2\10\2\0\7\10"+ + "\1\0\2\10\1\0\5\10\10\0\16\10\27\0\11\10"+ + "\2\0\7\10\1\0\2\10\1\0\5\10\10\0\3\10"+ + "\1\326\12\10\27\0\10\10\1\327\2\0\7\10\1\0"+ + "\2\10\1\0\5\10\10\0\16\10\27\0\7\10\1\330"+ + "\1\10\2\0\7\10\1\0\2\10\1\0\5\10\10\0"+ + "\16\10\27\0\10\10\1\331\2\0\7\10\1\0\2\10"+ + "\1\0\5\10\10\0\16\10\62\0\1\332\1\0\1\333"+ + "\106\0\1\274\1\0\2\275\1\0\2\205\44\0\34\273"+ + "\1\334\1\335\52\273\35\276\1\336\1\337\51\276\1\0"+ + "\11\10\2\0\7\10\1\0\2\10\1\0\5\10\1\340"+ + "\1\0\1\341\5\0\16\10\26\0\34\301\1\342\1\343"+ + "\52\301\35\302\1\344\1\345\51\302\1\0\10\10\1\346"+ + "\2\0\7\10\1\0\2\10\1\0\5\10\10\0\16\10"+ + "\62\0\1\347\111\0\1\350\52\0\11\10\2\0\7\10"+ + "\1\0\2\10\1\0\5\10\10\0\6\10\1\351\7\10"+ + "\27\0\11\10\2\0\7\10\1\0\2\10\1\0\5\10"+ + "\10\0\2\10\1\352\13\10\27\0\11\10\2\0\7\10"+ + "\1\0\2\10\1\0\5\10\10\0\10\10\1\353\5\10"+ + "\27\0\11\10\2\0\7\10\1\0\2\10\1\0\5\10"+ + "\10\0\7\10\1\354\6\10\27\0\11\10\2\0\7\10"+ + "\1\0\2\10\1\0\5\10\10\0\3\10\1\355\12\10"+ + "\26\0\34\244\1\356\1\357\162\244\145\247\1\360\1\361"+ + "\51\247\1\0\11\10\2\0\7\10\1\0\2\10\1\0"+ + "\5\10\10\0\4\10\1\362\11\10\27\0\11\10\2\0"+ + "\7\10\1\0\2\10\1\0\5\10\10\0\4\10\1\363"+ + "\11\10\27\0\11\10\2\0\7\10\1\0\1\364\1\10"+ + "\1\0\5\10\10\0\16\10\27\0\11\10\2\0\7\10"+ + "\1\0\2\10\1\0\5\10\10\0\4\10\1\365\11\10"+ + "\27\0\11\10\2\0\7\10\1\0\2\10\1\0\5\10"+ + "\10\0\2\10\1\366\13\10\27\0\11\10\2\0\7\10"+ + "\1\0\2\10\1\0\5\10\10\0\1\367\15\10\27\0"+ + "\11\10\2\0\7\10\1\0\1\370\1\10\1\0\5\10"+ + "\10\0\16\10\62\0\1\371\111\0\1\372\51\0\34\273"+ + "\1\373\1\374\162\273\145\276\1\375\1\376\51\276\34\0"+ + "\1\377\111\0\1\u0100\51\0\34\301\1\u0101\1\u0102\162\301"+ + "\145\302\1\u0103\1\u0104\51\302\1\0\10\10\1\u0105\2\0"+ + "\7\10\1\0\2\10\1\0\5\10\10\0\16\10\62\0"+ + "\1\244\111\0\1\247\52\0\11\10\2\0\7\10\1\0"+ + "\2\10\1\0\5\10\10\0\1\u0106\15\10\27\0\11\10"+ + "\2\0\7\10\1\0\2\10\1\0\5\10\10\0\5\10"+ + "\1\u0107\10\10\27\0\11\10\2\0\7\10\1\0\2\10"+ + "\1\0\5\10\10\0\1\10\1\u0108\14\10\26\0\34\244"+ + "\1\u0109\1\357\106\244\1\u010a\1\357\52\244\35\247\1\360"+ + "\1\u010b\106\247\1\360\1\u0109\51\247\1\0\11\10\2\0"+ + "\7\10\1\0\2\10\1\0\5\10\10\0\5\10\1\u010c"+ + "\10\10\27\0\11\10\2\0\7\10\1\0\2\10\1\0"+ + "\5\10\10\0\1\10\1\u010d\14\10\27\0\11\10\2\0"+ + "\7\10\1\0\2\10\1\0\5\10\10\0\5\10\1\u010e"+ + "\10\10\27\0\10\10\1\u010f\2\0\7\10\1\0\2\10"+ + "\1\0\5\10\10\0\16\10\62\0\1\273\111\0\1\276"+ + "\51\0\34\273\1\u0110\1\374\106\273\1\u0111\1\374\52\273"+ + "\35\276\1\375\1\u0112\106\276\1\375\1\u0110\51\276\34\301"+ + "\1\u0113\1\u0102\106\301\1\u0114\1\u0102\52\301\35\302\1\u0103"+ + "\1\u0115\106\302\1\u0103\1\u0113\51\302\1\0\11\10\2\0"+ + "\7\10\1\0\2\10\1\0\5\10\10\0\11\10\1\u0116"+ + "\4\10\27\0\11\10\2\0\7\10\1\0\2\10\1\0"+ + "\4\10\1\u0117\10\0\16\10\63\0\1\u0118\1\0\2\u0119"+ + "\1\0\2\u011a\44\0\34\244\1\u011b\1\357\52\244\35\247"+ + "\1\360\1\u011c\51\247\34\273\1\u011d\1\374\52\273\35\276"+ + "\1\375\1\u011e\51\276\34\301\1\u011f\1\u0102\52\301\35\302"+ + "\1\u0103\1\u0120\51\302\1\0\11\10\2\0\7\10\1\0"+ + "\1\u0121\1\10\1\0\5\10\10\0\16\10\26\0\34\244"+ + "\1\u0122\1\357\52\244\35\247\1\360\1\u0123\51\247\34\273"+ + "\1\u0124\1\374\52\273\35\276\1\375\1\u0125\51\276\34\301"+ + "\1\u0126\1\u0102\52\301\35\302\1\u0103\1\u0127\51\302"; private static int [] zzUnpackTrans() { int [] result = new int[14976]; @@ -605,18 +606,18 @@ class _PythonLexer implements FlexLexer { private static final String ZZ_ATTRIBUTE_PACKED_0 = "\3\0\1\11\16\1\1\11\1\1\5\11\25\1\14\11"+ - "\13\1\4\0\1\11\1\1\1\0\1\11\11\1\1\11"+ - "\5\1\1\11\22\1\3\11\1\1\1\11\1\1\5\11"+ - "\1\1\2\11\1\1\1\11\1\0\3\1\1\11\13\1"+ - "\1\11\1\0\4\1\1\0\15\1\1\11\1\0\16\1"+ - "\4\11\1\0\2\1\1\11\1\0\2\1\1\11\4\1"+ - "\2\0\7\1\1\0\2\1\1\0\10\1\3\0\2\1"+ - "\7\0\1\1\2\0\5\1\1\0\2\1\1\0\7\1"+ - "\3\0\2\1\4\0\2\1\1\0\16\1\1\11\4\1"+ - "\2\11\7\0\7\1"; + "\3\1\1\11\10\1\4\0\1\11\1\1\1\0\1\11"+ + "\11\1\1\11\5\1\1\11\22\1\3\11\1\1\1\11"+ + "\1\1\5\11\1\1\2\11\1\1\1\11\1\0\3\1"+ + "\1\11\13\1\1\0\1\11\4\1\1\0\15\1\1\11"+ + "\1\0\16\1\4\11\1\0\2\1\1\11\1\0\2\1"+ + "\1\11\4\1\2\0\7\1\1\0\2\1\1\0\10\1"+ + "\3\0\2\1\7\0\1\1\2\0\5\1\1\0\2\1"+ + "\1\0\7\1\3\0\2\1\4\0\2\1\1\0\16\1"+ + "\1\11\4\1\1\11\1\0\1\11\6\0\7\1"; private static int [] zzUnpackAttribute() { - int [] result = new int[294]; + int [] result = new int[295]; int offset = 0; offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result); return result; @@ -928,402 +929,406 @@ return yylength()-i-1; zzMarkedPos = zzMarkedPosL; switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) { - case 87: + case 88: { return PyTokenTypes.YIELD_KEYWORD; } - case 98: break; - case 82: + case 99: break; + case 83: { yypushback(getSpaceLength(yytext())); if (zzCurrentPos != 0) return PyTokenTypes.TRIPLE_QUOTED_STRING; yybegin(PENDING_DOCSTRING); return PyTokenTypes.DOCSTRING; } - case 99: break; + case 100: break; case 2: { return PyTokenTypes.INTEGER_LITERAL; } - case 100: break; + case 101: break; case 17: { return PyTokenTypes.DIV; } - case 101: break; + case 102: break; case 18: { return PyTokenTypes.PERC; } - case 102: break; + case 103: break; case 8: { return PyTokenTypes.BACKSLASH; } - case 103: break; + case 104: break; case 26: { return PyTokenTypes.RPAR; } - case 104: break; + case 105: break; case 1: { return PyTokenTypes.BAD_CHARACTER; } - case 105: break; + case 106: break; case 29: { return PyTokenTypes.LBRACE; } - case 106: break; + case 107: break; case 35: { yypushback(1); yybegin(YYINITIAL); } - case 107: break; - case 69: + case 108: break; + case 70: { yybegin(IN_DOCSTRING_OWNER); return PyTokenTypes.DEF_KEYWORD; } - case 108: break; - case 85: + case 109: break; + case 86: { yybegin(IN_DOCSTRING_OWNER); return PyTokenTypes.CLASS_KEYWORD; } - case 109: break; - case 77: + case 110: break; + case 78: { yypushback(getSpaceLength(yytext())); return PyTokenTypes.DOCSTRING; } - case 110: break; + case 111: break; case 6: { return PyTokenTypes.MINUS; } - case 111: break; + case 112: break; case 7: { if (zzInput == YYEOF && zzStartRead == 0) return PyTokenTypes.DOCSTRING; else return PyTokenTypes.SINGLE_QUOTED_STRING; } - case 112: break; - case 84: + case 113: break; + case 85: { return PyTokenTypes.BREAK_KEYWORD; } - case 113: break; + case 114: break; case 28: { return PyTokenTypes.RBRACKET; } - case 114: break; - case 62: + case 115: break; + case 63: { yypushback(getSpaceLength(yytext())); yybegin(YYINITIAL); return PyTokenTypes.DOCSTRING; } - case 115: break; + case 116: break; case 5: { return PyTokenTypes.DOT; } - case 116: break; + case 117: break; case 3: { return PyTokenTypes.IDENTIFIER; } - case 117: break; + case 118: break; case 25: { return PyTokenTypes.LPAR; } - case 118: break; + case 119: break; case 23: { return PyTokenTypes.LT; } - case 119: break; - case 44: + case 120: break; + case 45: { return PyTokenTypes.IN_KEYWORD; } - case 120: break; - case 86: + case 121: break; + case 87: { return PyTokenTypes.RAISE_KEYWORD; } - case 121: break; - case 74: + case 122: break; + case 75: { return PyTokenTypes.GTGTEQ; } - case 122: break; - case 10: + case 123: break; + case 9: { return PyTokenTypes.SPACE; } - case 123: break; - case 90: + case 124: break; + case 91: { return PyTokenTypes.EXCEPT_KEYWORD; } - case 124: break; - case 39: + case 125: break; + case 40: { return PyTokenTypes.IMAGINARY_LITERAL; } - case 125: break; - case 37: + case 126: break; + case 38: { return PyTokenTypes.SINGLE_QUOTED_STRING; } - case 126: break; - case 12: + case 127: break; + case 11: { return PyTokenTypes.FORMFEED; } - case 127: break; + case 128: break; case 13: { return PyTokenTypes.SEMICOLON; } - case 128: break; + case 129: break; case 22: { return PyTokenTypes.GT; } - case 129: break; + case 130: break; case 27: { return PyTokenTypes.LBRACKET; } - case 130: break; + case 131: break; case 33: { return PyTokenTypes.COLON; } - case 131: break; - case 75: + case 132: break; + case 76: { return PyTokenTypes.LTLTEQ; } - case 132: break; - case 80: + case 133: break; + case 81: { return PyTokenTypes.ELSE_KEYWORD; } - case 133: break; + case 134: break; case 20: { return PyTokenTypes.OR; } - case 134: break; - case 66: + case 135: break; + case 67: { yypushback(getSpaceLength(yytext())); if (zzCurrentPos != 0) return PyTokenTypes.SINGLE_QUOTED_STRING; yybegin(PENDING_DOCSTRING); return PyTokenTypes.DOCSTRING; } - case 135: break; - case 65: + case 136: break; + case 66: { if (zzInput == YYEOF && zzStartRead == 0) return PyTokenTypes.DOCSTRING; else return PyTokenTypes.TRIPLE_QUOTED_STRING; } - case 136: break; - case 48: + case 137: break; + case 49: { return PyTokenTypes.MULTEQ; } - case 137: break; - case 95: + case 138: break; + case 96: { return PyTokenTypes.FINALLY_KEYWORD; } - case 138: break; - case 88: + case 139: break; + case 89: { return PyTokenTypes.WHILE_KEYWORD; } - case 139: break; + case 140: break; case 16: { return PyTokenTypes.MULT; } - case 140: break; - case 91: + case 141: break; + case 92: { return PyTokenTypes.ASSERT_KEYWORD; } - case 141: break; - case 51: + case 142: break; + case 52: { return PyTokenTypes.FLOORDIV; } - case 142: break; - case 94: + case 143: break; + case 95: { return PyTokenTypes.GLOBAL_KEYWORD; } - case 143: break; + case 144: break; case 36: { if (zzInput == YYEOF) return PyTokenTypes.DOCSTRING; else yybegin(YYINITIAL); return PyTokenTypes.SINGLE_QUOTED_STRING; } - case 144: break; - case 89: + case 145: break; + case 90: { return PyTokenTypes.LAMBDA_KEYWORD; } - case 145: break; - case 55: + case 146: break; + case 56: { return PyTokenTypes.XOREQ; } - case 146: break; - case 64: + case 147: break; + case 65: { return PyTokenTypes.FOR_KEYWORD; } - case 147: break; + case 148: break; case 31: { return PyTokenTypes.AT; } - case 148: break; - case 68: + case 149: break; + case 69: { return PyTokenTypes.NOT_KEYWORD; } - case 149: break; + case 150: break; case 14: { return PyTokenTypes.PLUS; } - case 150: break; - case 41: + case 151: break; + case 42: { return PyTokenTypes.MINUSEQ; } - case 151: break; - case 61: + case 152: break; + case 62: { return PyTokenTypes.NE; } - case 152: break; + case 153: break; case 32: { return PyTokenTypes.COMMA; } - case 153: break; - case 47: + case 154: break; + case 48: { return PyTokenTypes.EQEQ; } - case 154: break; + case 155: break; case 34: { return PyTokenTypes.TICK; } - case 155: break; - case 49: + case 156: break; + case 50: { return PyTokenTypes.EXP; } - case 156: break; - case 78: + case 157: break; + case 79: { return PyTokenTypes.TRIPLE_QUOTED_STRING; } - case 157: break; - case 97: + case 158: break; + case 98: { return PyTokenTypes.CONTINUE_KEYWORD; } - case 158: break; - case 60: + case 159: break; + case 61: { return PyTokenTypes.LTLT; } - case 159: break; - case 58: + case 160: break; + case 59: { return PyTokenTypes.LE; } - case 160: break; - case 67: + case 161: break; + case 68: { return PyTokenTypes.AND_KEYWORD; } - case 161: break; - case 40: + case 162: break; + case 41: { return PyTokenTypes.OR_KEYWORD; } - case 162: break; - case 42: + case 163: break; + case 43: { yypushback(getSpaceLength(yytext())); if (zzCurrentPos != 0) return PyTokenTypes.SINGLE_QUOTED_STRING; return PyTokenTypes.DOCSTRING; } - case 163: break; - case 83: + case 164: break; + case 84: { return PyTokenTypes.PASS_KEYWORD; } - case 164: break; - case 63: + case 165: break; + case 64: { yypushback(yylength()-1); yybegin(PENDING_DOCSTRING); return PyTokenTypes.COLON; } - case 165: break; + case 166: break; case 4: { return PyTokenTypes.END_OF_LINE_COMMENT; } - case 166: break; - case 96: + case 167: break; + case 97: { yypushback(getSpaceLength(yytext())); if (zzCurrentPos != 0) return PyTokenTypes.TRIPLE_QUOTED_STRING; return PyTokenTypes.DOCSTRING; } - case 167: break; - case 54: + case 168: break; + case 55: { return PyTokenTypes.OREQ; } - case 168: break; - case 57: + case 169: break; + case 58: { return PyTokenTypes.GTGT; } - case 169: break; + case 170: break; case 19: { return PyTokenTypes.AND; } - case 170: break; - case 50: - { return PyTokenTypes.DIVEQ; - } case 171: break; - case 92: - { return PyTokenTypes.RETURN_KEYWORD; + case 51: + { return PyTokenTypes.DIVEQ; } case 172: break; case 93: - { return PyTokenTypes.IMPORT_KEYWORD; + { return PyTokenTypes.RETURN_KEYWORD; } case 173: break; - case 56: - { return PyTokenTypes.GE; + case 94: + { return PyTokenTypes.IMPORT_KEYWORD; } case 174: break; - case 46: - { return PyTokenTypes.PLUSEQ; + case 57: + { return PyTokenTypes.GE; } case 175: break; - case 76: + case 47: + { return PyTokenTypes.PLUSEQ; + } + case 176: break; + case 77: { if (zzInput == YYEOF) return PyTokenTypes.DOCSTRING; else yybegin(YYINITIAL); return PyTokenTypes.TRIPLE_QUOTED_STRING; } - case 176: break; - case 45: + case 177: break; + case 46: { return PyTokenTypes.IS_KEYWORD; } - case 177: break; - case 73: + case 178: break; + case 74: { return PyTokenTypes.FLOORDIVEQ; } - case 178: break; - case 38: + case 179: break; + case 39: { return PyTokenTypes.FLOAT_LITERAL; } - case 179: break; - case 9: + case 180: break; + case 37: { return PyTokenTypes.LINE_BREAK; } - case 180: break; - case 52: + case 181: break; + case 53: { return PyTokenTypes.PERCEQ; } - case 181: break; - case 71: + case 182: break; + case 72: { return PyTokenTypes.TRY_KEYWORD; } - case 182: break; - case 53: + case 183: break; + case 54: { return PyTokenTypes.ANDEQ; } - case 183: break; + case 184: break; case 15: { return PyTokenTypes.EQ; } - case 184: break; - case 79: + case 185: break; + case 80: { return PyTokenTypes.FROM_KEYWORD; } - case 185: break; - case 72: - { return PyTokenTypes.EXPEQ; - } case 186: break; - case 81: - { return PyTokenTypes.ELIF_KEYWORD; + case 12: + { if (zzCurrentPos == 0) yybegin(PENDING_DOCSTRING); return PyTokenTypes.LINE_BREAK; } case 187: break; + case 73: + { return PyTokenTypes.EXPEQ; + } + case 188: break; + case 82: + { return PyTokenTypes.ELIF_KEYWORD; + } + case 189: break; case 30: { return PyTokenTypes.RBRACE; } - case 188: break; - case 43: + case 190: break; + case 44: { return PyTokenTypes.IF_KEYWORD; } - case 189: break; - case 11: + case 191: break; + case 10: { return PyTokenTypes.TAB; } - case 190: break; - case 59: + case 192: break; + case 60: { return PyTokenTypes.NE_OLD; } - case 191: break; + case 193: break; case 24: { return PyTokenTypes.TILDE; } - case 192: break; + case 194: break; case 21: { return PyTokenTypes.XOR; } - case 193: break; - case 70: + case 195: break; + case 71: { return PyTokenTypes.DEL_KEYWORD; } - case 194: break; + case 196: break; default: if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { zzAtEOF = true;