> { addToken(start,zzStartRead-1, TokenTypes.LITERAL_STRING_DOUBLE_QUOTE); return firstToken; }
+}
\ No newline at end of file
diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/bytecode/JavaBytecodeTokenMaker.java b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/bytecode/JavaBytecodeTokenMaker.java
new file mode 100644
index 000000000..4a25dbdc9
--- /dev/null
+++ b/src/main/java/the/bytecode/club/bytecodeviewer/decompilers/bytecode/JavaBytecodeTokenMaker.java
@@ -0,0 +1,2005 @@
+// Generated by JFlex 1.9.1 http://jflex.de/ (tweaked for IntelliJ platform)
+// source: JavaBytecodeTokenMaker.flex
+
+package the.bytecode.club.bytecodeviewer.decompilers.bytecode;
+
+import java.io.*;
+import javax.swing.text.Segment;
+
+import org.fife.ui.rsyntaxtextarea.*;
+
+/**
+ * This is generated code, please do not make any changes to this file. To add more tokens, adjust the
+ * .flex file and then regenerate this file using JFlex.
+ *
+ * Please see {@link org.fife.ui.rsyntaxtextarea.modes.JavaTokenMaker} as this implementation was based on it.
+ *
+ * NOTE:
+ *
+ * -
+ * When regenerating, the {@code zzBuffer} will turn into a {@code CharSequence}, set it to a {@code char[]}.
+ * This will also create errors throughout where {@code zzBuffer} is used, so you will need to make small changes
+ * to those methods.
+ *
+ * -
+ * There will be a second {@code yyRefill} method with a default {@code return true;}, remove it.
+ *
+ *
+ */
+public class JavaBytecodeTokenMaker extends AbstractJFlexCTokenMaker {
+
+ /**
+ * This character denotes the end of file
+ */
+ public static final int YYEOF = -1;
+
+ /**
+ * initial size of the lookahead buffer
+ */
+ private static final int ZZ_BUFFERSIZE = 16384;
+
+ /**
+ * lexical states
+ */
+ public static final int YYINITIAL = 0;
+ public static final int MLC = 2;
+ public static final int DOCCOMMENT = 4;
+ public static final int EOL_COMMENT = 6;
+ public static final int TEXT_BLOCK = 8;
+
+ /**
+ * ZZ_LEXSTATE[l] is the state in the DFA for the lexical state l
+ * ZZ_LEXSTATE[l+1] is the state in the DFA for the lexical state l
+ * at the beginning of a line
+ * l is of the form l = 2*k, k a non negative integer
+ */
+ private static final int ZZ_LEXSTATE[] = {
+ 0, 0, 1, 1, 2, 2, 3, 3, 4, 4
+ };
+
+ /**
+ * Top-level table for translating characters to character classes
+ */
+ private static final int[] ZZ_CMAP_TOP = zzUnpackcmap_top();
+
+ private static final String ZZ_CMAP_TOP_PACKED_0 =
+ "\1\0\1\u0100\1\u0200\1\u0300\1\u0400\1\u0500\1\u0600\1\u0700" +
+ "\1\u0800\1\u0900\1\u0a00\1\u0b00\1\u0c00\1\u0d00\1\u0e00\1\u0f00" +
+ "\1\u1000\1\u0100\1\u1100\1\u1200\1\u1300\1\u0100\1\u1400\1\u1500" +
+ "\1\u1600\1\u1700\1\u1800\1\u1900\1\u1a00\1\u1b00\1\u0100\1\u1c00" +
+ "\1\u1d00\1\u1e00\12\u1f00\1\u2000\1\u2100\1\u2200\1\u1f00\1\u2300" +
+ "\1\u2400\2\u1f00\31\u0100\1\u2500\126\u0100\1\u2600\1\u0100\1\u2700" +
+ "\1\u2800\1\u2900\1\u2a00\1\u2b00\1\u2c00\53\u0100\1\u2d00\10\u2e00" +
+ "\31\u1f00\1\u0100\1\u2f00\1\u3000\1\u0100\1\u3100\1\u3200\1\u3300" +
+ "\1\u3400\1\u3500\1\u3600\1\u3700\1\u3800\1\u3900\1\u0100\1\u3a00" +
+ "\1\u3b00\1\u3c00\1\u3d00\1\u3e00\1\u3f00\1\u4000\1\u4100\1\u4200" +
+ "\1\u4300\1\u4400\1\u4500\1\u4600\1\u4700\1\u4800\1\u4900\1\u4a00" +
+ "\1\u4b00\1\u4c00\1\u4d00\1\u1f00\1\u4e00\1\u4f00\1\u5000\1\u5100" +
+ "\3\u0100\1\u5200\1\u5300\1\u5400\11\u1f00\1\u5500\4\u0100\1\u5600" +
+ "\17\u1f00\2\u0100\1\u5700\41\u1f00\2\u0100\1\u5800\1\u5900\2\u1f00" +
+ "\1\u5a00\1\u5b00\27\u0100\1\u5c00\4\u0100\1\u5d00\1\u5e00\41\u1f00" +
+ "\1\u5f00\1\u0100\1\u6000\1\u6100\11\u1f00\1\u6200\22\u1f00\1\u6300" +
+ "\1\u1f00\1\u6400\1\u6500\1\u1f00\1\u6600\1\u6700\1\u6800\1\u6900" +
+ "\2\u1f00\1\u6a00\4\u1f00\1\u6b00\1\u6c00\1\u6d00\1\u6e00\1\u1f00" +
+ "\1\u6f00\2\u1f00\1\u7000\1\u7100\1\u7200\2\u1f00\1\u7300\1\u1f00" +
+ "\1\u7400\14\u1f00\1\u7500\4\u1f00\246\u0100\1\u7600\20\u0100\1\u7700" +
+ "\1\u7800\25\u0100\1\u7900\34\u0100\1\u7a00\14\u1f00\2\u0100\1\u7b00" +
+ "\5\u1f00\23\u0100\1\u7c00\17\u0100\1\u7d00\u0adc\u1f00\1\u7e00\1\u7f00" +
+ "\u02fe\u1f00";
+
+ private static int[] zzUnpackcmap_top() {
+ int[] result = new int[4352];
+ int offset = 0;
+ offset = zzUnpackcmap_top(ZZ_CMAP_TOP_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackcmap_top(String packed, int offset, int[] result) {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.length();
+ while (i < l) {
+ int count = packed.charAt(i++);
+ int value = packed.charAt(i++);
+ do result[j++] = value; while (--count > 0);
+ }
+ return j;
+ }
+
+
+ /**
+ * Second-level tables for translating characters to character classes
+ */
+ private static final int[] ZZ_CMAP_BLOCKS = zzUnpackcmap_blocks();
+
+ private static final String ZZ_CMAP_BLOCKS_PACKED_0 =
+ "\11\0\1\1\1\2\1\3\1\4\1\5\16\0\4\6" +
+ "\1\1\1\7\1\10\1\11\1\12\1\7\1\13\1\14" +
+ "\2\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24" +
+ "\1\25\2\26\4\27\2\30\1\31\1\20\1\32\1\33" +
+ "\1\34\1\35\1\36\1\37\1\40\1\37\1\41\1\42" +
+ "\1\43\5\44\1\45\5\44\1\46\5\44\1\47\2\44" +
+ "\1\15\1\50\1\15\1\51\1\52\1\6\1\53\1\54" +
+ "\1\55\1\56\1\57\1\60\1\61\1\62\1\63\1\44" +
+ "\1\64\1\65\1\66\1\67\1\70\1\71\1\72\1\73" +
+ "\1\74\1\75\1\76\1\77\1\100\1\101\1\102\1\103" +
+ "\1\104\1\51\1\105\1\35\6\0\1\106\32\0\2\6" +
+ "\4\107\4\6\1\107\2\6\1\0\7\6\1\107\4\6" +
+ "\1\107\5\6\27\107\1\6\37\107\1\6\u01ca\107\4\6" +
+ "\14\107\16\6\5\107\7\6\1\107\1\6\1\107\21\6" +
+ "\160\0\5\107\1\6\2\107\2\6\4\107\1\6\1\107" +
+ "\6\6\1\107\1\6\3\107\1\6\1\107\1\6\24\107" +
+ "\1\6\123\107\1\6\213\107\1\6\5\0\2\6\246\107" +
+ "\1\6\46\107\2\6\1\107\6\6\51\107\6\6\1\107" +
+ "\1\6\55\0\1\6\1\0\1\6\2\0\1\6\2\0" +
+ "\1\6\1\0\10\6\33\107\4\6\4\107\15\6\6\0" +
+ "\5\6\1\107\4\6\13\0\1\6\1\0\3\6\53\107" +
+ "\37\0\4\6\2\107\1\0\143\107\1\6\1\107\10\0" +
+ "\1\6\6\0\2\107\2\0\1\6\4\0\2\107\12\0" +
+ "\3\107\2\6\1\107\17\6\1\0\1\107\1\0\36\107" +
+ "\33\0\2\6\131\107\13\0\1\107\16\6\12\0\41\107" +
+ "\11\0\2\107\4\6\1\107\2\6\1\0\30\107\4\0" +
+ "\1\107\11\0\1\107\3\0\1\107\5\0\22\6\31\107" +
+ "\3\0\4\6\13\107\5\6\30\107\1\6\6\107\1\6" +
+ "\2\0\6\6\10\0\52\107\72\0\66\107\3\0\1\107" +
+ "\22\0\1\107\7\0\12\107\2\0\2\6\12\0\1\6" +
+ "\20\107\3\0\1\6\10\107\2\6\2\107\2\6\26\107" +
+ "\1\6\7\107\1\6\1\107\3\6\4\107\2\6\1\0" +
+ "\1\107\7\0\2\6\2\0\2\6\3\0\1\107\10\6" +
+ "\1\0\4\6\2\107\1\6\3\107\2\0\2\6\12\0" +
+ "\4\107\7\6\2\107\1\6\1\0\2\6\3\0\1\6" +
+ "\6\107\4\6\2\107\2\6\26\107\1\6\7\107\1\6" +
+ "\2\107\1\6\2\107\1\6\2\107\2\6\1\0\1\6" +
+ "\5\0\4\6\2\0\2\6\3\0\3\6\1\0\7\6" +
+ "\4\107\1\6\1\107\7\6\14\0\3\107\1\0\13\6" +
+ "\3\0\1\6\11\107\1\6\3\107\1\6\26\107\1\6" +
+ "\7\107\1\6\2\107\1\6\5\107\2\6\1\0\1\107" +
+ "\10\0\1\6\3\0\1\6\3\0\2\6\1\107\17\6" +
+ "\2\107\2\0\2\6\12\0\1\6\1\107\7\6\1\107" +
+ "\6\0\1\6\3\0\1\6\10\107\2\6\2\107\2\6" +
+ "\26\107\1\6\7\107\1\6\2\107\1\6\5\107\2\6" +
+ "\1\0\1\107\7\0\2\6\2\0\2\6\3\0\7\6" +
+ "\3\0\4\6\2\107\1\6\3\107\2\0\2\6\12\0" +
+ "\1\6\1\107\20\6\1\0\1\107\1\6\6\107\3\6" +
+ "\3\107\1\6\4\107\3\6\2\107\1\6\1\107\1\6" +
+ "\2\107\3\6\2\107\3\6\3\107\3\6\14\107\4\6" +
+ "\5\0\3\6\3\0\1\6\4\0\2\6\1\107\6\6" +
+ "\1\0\16\6\12\0\11\6\1\107\6\6\5\0\10\107" +
+ "\1\6\3\107\1\6\27\107\1\6\20\107\2\6\1\0" +
+ "\1\107\7\0\1\6\3\0\1\6\4\0\7\6\2\0" +
+ "\1\6\3\107\2\6\1\107\2\6\2\107\2\0\2\6" +
+ "\12\0\20\6\1\107\3\0\1\6\10\107\1\6\3\107" +
+ "\1\6\27\107\1\6\12\107\1\6\5\107\2\6\1\0" +
+ "\1\107\7\0\1\6\3\0\1\6\4\0\7\6\2\0" +
+ "\6\6\2\107\1\6\2\107\2\0\2\6\12\0\1\6" +
+ "\2\107\1\0\14\6\4\0\11\107\1\6\3\107\1\6" +
+ "\51\107\2\0\1\107\7\0\1\6\3\0\1\6\4\0" +
+ "\1\107\5\6\3\107\1\0\7\6\3\107\2\0\2\6" +
+ "\12\0\12\6\6\107\1\6\3\0\1\6\22\107\3\6" +
+ "\30\107\1\6\11\107\1\6\1\107\2\6\7\107\3\6" +
+ "\1\0\4\6\6\0\1\6\1\0\1\6\10\0\6\6" +
+ "\12\0\2\6\2\0\15\6\60\107\1\0\2\107\7\0" +
+ "\4\6\10\107\10\0\1\6\12\0\47\6\2\107\1\6" +
+ "\1\107\1\6\5\107\1\6\30\107\1\6\1\107\1\6" +
+ "\12\107\1\0\2\107\11\0\1\107\2\6\5\107\1\6" +
+ "\1\107\1\6\7\0\1\6\12\0\2\6\4\107\40\6" +
+ "\1\107\27\6\2\0\6\6\12\0\13\6\1\0\1\6" +
+ "\1\0\1\6\1\0\4\6\2\0\10\107\1\6\44\107" +
+ "\4\6\24\0\1\6\2\0\5\107\13\0\1\6\44\0" +
+ "\11\6\1\0\71\6\53\107\24\0\1\107\12\0\6\6" +
+ "\6\107\4\0\4\107\3\0\1\107\3\0\2\107\7\0" +
+ "\3\107\4\0\15\107\14\0\1\107\17\0\2\6\46\107" +
+ "\1\6\1\107\5\6\1\107\2\6\53\107\1\6\115\107" +
+ "\1\6\4\107\2\6\7\107\1\6\1\107\1\6\4\107" +
+ "\2\6\51\107\1\6\4\107\2\6\41\107\1\6\4\107" +
+ "\2\6\7\107\1\6\1\107\1\6\4\107\2\6\17\107" +
+ "\1\6\71\107\1\6\4\107\2\6\103\107\2\6\3\0" +
+ "\40\6\20\107\20\6\126\107\2\6\6\107\3\6\u016c\107" +
+ "\2\6\21\107\1\6\32\107\5\6\113\107\3\6\13\107" +
+ "\7\6\22\107\4\0\11\6\23\107\3\0\13\6\22\107" +
+ "\2\0\14\6\15\107\1\6\3\107\1\6\2\0\14\6" +
+ "\64\107\40\0\3\6\1\107\3\6\2\107\1\0\2\6" +
+ "\12\0\41\6\17\0\6\6\131\107\7\6\5\107\2\0" +
+ "\42\107\1\0\1\107\5\6\106\107\12\6\37\107\1\6" +
+ "\14\0\4\6\14\0\12\6\12\0\36\107\2\6\5\107" +
+ "\13\6\54\107\4\6\32\107\6\6\12\0\46\6\27\107" +
+ "\5\0\4\6\65\107\12\0\1\6\35\0\2\6\13\0" +
+ "\6\6\12\0\15\6\1\107\10\6\16\0\1\6\20\0" +
+ "\61\6\5\0\57\107\21\0\10\107\3\6\12\0\21\6" +
+ "\11\0\14\6\3\0\36\107\15\0\2\107\12\0\54\107" +
+ "\16\0\14\6\44\107\24\0\10\6\12\0\3\6\3\107" +
+ "\12\0\44\107\2\6\11\107\7\6\53\107\2\6\3\107" +
+ "\20\6\3\0\1\6\25\0\4\107\1\0\6\107\1\0" +
+ "\2\107\3\0\1\107\5\6\300\107\100\0\26\107\2\6" +
+ "\6\107\2\6\46\107\2\6\6\107\2\6\10\107\1\6" +
+ "\1\107\1\6\1\107\1\6\1\107\1\6\37\107\2\6" +
+ "\65\107\1\6\7\107\1\6\1\107\3\6\3\107\1\6" +
+ "\7\107\3\6\4\107\2\6\6\107\4\6\15\107\5\6" +
+ "\3\107\1\6\7\107\16\6\5\0\30\6\2\3\5\0" +
+ "\20\6\2\107\23\6\1\107\13\6\5\0\1\6\12\0" +
+ "\1\6\1\107\15\6\1\107\20\6\15\107\3\6\41\107" +
+ "\17\6\15\0\4\6\1\0\3\6\14\0\21\6\1\107" +
+ "\4\6\1\107\2\6\12\107\1\6\1\107\3\6\5\107" +
+ "\6\6\1\107\1\6\1\107\1\6\1\107\1\6\4\107" +
+ "\1\6\13\107\2\6\4\107\5\6\5\107\4\6\1\107" +
+ "\21\6\51\107\u0177\6\345\107\6\6\4\107\3\0\2\107" +
+ "\14\6\46\107\1\6\1\107\5\6\1\107\2\6\70\107" +
+ "\7\6\1\107\17\6\1\0\27\107\11\6\7\107\1\6" +
+ "\7\107\1\6\7\107\1\6\7\107\1\6\7\107\1\6" +
+ "\7\107\1\6\7\107\1\6\7\107\1\6\40\0\57\6" +
+ "\1\107\325\6\3\107\31\6\11\107\6\0\1\6\5\107" +
+ "\2\6\5\107\4\6\126\107\2\6\2\0\2\6\3\107" +
+ "\1\6\132\107\1\6\4\107\5\6\53\107\1\6\136\107" +
+ "\21\6\40\107\60\6\320\107\100\6\215\107\103\6\56\107" +
+ "\2\6\15\107\3\6\20\107\12\0\2\107\24\6\57\107" +
+ "\1\0\4\6\12\0\1\6\37\107\2\0\120\107\2\0" +
+ "\45\6\11\107\2\6\147\107\2\6\100\107\5\6\2\107" +
+ "\1\6\1\107\1\6\5\107\30\6\20\107\1\0\3\107" +
+ "\1\0\4\107\1\0\27\107\5\0\4\6\1\0\13\6" +
+ "\1\107\7\6\64\107\14\6\2\0\62\107\22\0\12\6" +
+ "\12\0\6\6\22\0\6\107\3\6\1\107\1\6\2\107" +
+ "\13\0\34\107\10\0\2\6\27\107\15\0\14\6\35\107" +
+ "\3\6\4\0\57\107\16\0\16\6\1\107\12\0\6\6" +
+ "\5\107\1\0\12\107\12\0\5\107\1\6\51\107\16\0" +
+ "\11\6\3\107\1\0\10\107\2\0\2\6\12\0\6\6" +
+ "\27\107\3\6\1\107\3\0\62\107\1\0\1\107\3\0" +
+ "\2\107\2\0\5\107\2\0\1\107\1\0\1\107\30\6" +
+ "\3\107\2\6\13\107\5\0\2\6\3\107\2\0\12\6" +
+ "\6\107\2\6\6\107\2\6\6\107\11\6\7\107\1\6" +
+ "\7\107\1\6\53\107\1\6\16\107\6\6\163\107\10\0" +
+ "\1\6\2\0\2\6\12\0\6\6\244\107\14\6\27\107" +
+ "\4\6\61\107\4\6\u0100\3\156\107\2\6\152\107\46\6" +
+ "\7\107\14\6\5\107\5\6\1\107\1\0\12\107\1\6" +
+ "\15\107\1\6\5\107\1\6\1\107\1\6\2\107\1\6" +
+ "\2\107\1\6\154\107\41\6\153\107\22\6\100\107\2\6" +
+ "\66\107\50\6\15\107\3\6\20\0\20\6\20\0\3\6" +
+ "\2\107\30\6\3\107\31\6\1\107\6\6\5\107\1\6" +
+ "\207\107\2\6\1\0\4\6\1\107\13\6\12\0\7\6" +
+ "\32\107\4\6\1\107\1\6\32\107\13\6\131\107\3\6" +
+ "\6\107\2\6\6\107\2\6\6\107\2\6\3\107\3\6" +
+ "\2\107\3\6\2\107\22\6\3\0\4\6\14\107\1\6" +
+ "\32\107\1\6\23\107\1\6\2\107\1\6\17\107\2\6" +
+ "\16\107\42\6\173\107\105\6\65\107\210\6\1\0\202\6" +
+ "\35\107\3\6\61\107\17\6\1\0\37\6\40\107\15\6" +
+ "\36\107\5\6\46\107\5\0\5\6\36\107\2\6\44\107" +
+ "\4\6\10\107\1\6\5\107\52\6\236\107\2\6\12\0" +
+ "\6\6\44\107\4\6\44\107\4\6\50\107\10\6\64\107" +
+ "\14\6\13\107\1\6\17\107\1\6\7\107\1\6\2\107" +
+ "\1\6\13\107\1\6\17\107\1\6\7\107\1\6\2\107" +
+ "\103\6\67\107\11\6\26\107\12\6\10\107\30\6\6\107" +
+ "\1\6\52\107\1\6\11\107\105\6\6\107\2\6\1\107" +
+ "\1\6\54\107\1\6\2\107\3\6\1\107\2\6\27\107" +
+ "\12\6\27\107\11\6\37\107\101\6\23\107\1\6\2\107" +
+ "\12\6\26\107\12\6\32\107\106\6\70\107\6\6\2\107" +
+ "\100\6\1\107\3\0\1\6\2\0\5\6\4\0\4\107" +
+ "\1\6\3\107\1\6\35\107\2\6\3\0\4\6\1\0" +
+ "\40\6\35\107\3\6\35\107\43\6\10\107\1\6\34\107" +
+ "\2\0\31\6\66\107\12\6\26\107\12\6\23\107\15\6" +
+ "\22\107\156\6\111\107\67\6\63\107\15\6\63\107\15\6" +
+ "\44\107\4\0\10\6\12\0\u0146\6\52\107\1\6\2\0" +
+ "\3\6\2\107\113\6\3\0\35\107\12\6\1\107\10\6" +
+ "\26\107\13\0\37\6\22\107\4\0\52\6\25\107\33\6" +
+ "\27\107\11\6\3\0\65\107\17\0\37\6\13\0\2\107" +
+ "\2\0\1\107\11\6\4\0\55\107\13\0\2\6\1\0" +
+ "\4\6\1\0\12\6\1\0\2\6\31\107\7\6\12\0" +
+ "\6\6\3\0\44\107\16\0\1\6\12\0\4\6\1\107" +
+ "\2\0\1\107\10\6\43\107\1\0\2\6\1\107\11\6" +
+ "\3\0\60\107\16\0\4\107\4\6\4\0\1\6\14\0" +
+ "\1\107\1\6\1\107\43\6\22\107\1\6\31\107\14\0" +
+ "\6\6\1\0\2\107\1\0\76\6\7\107\1\6\1\107" +
+ "\1\6\4\107\1\6\17\107\1\6\12\107\7\6\57\107" +
+ "\14\0\5\6\12\0\6\6\4\0\1\6\10\107\2\6" +
+ "\2\107\2\6\26\107\1\6\7\107\1\6\2\107\1\6" +
+ "\5\107\1\6\2\0\1\107\7\0\2\6\2\0\2\6" +
+ "\3\0\2\6\1\107\6\6\1\0\5\6\5\107\2\0" +
+ "\2\6\7\0\3\6\5\0\213\6\65\107\22\0\4\107" +
+ "\5\6\12\0\4\6\1\0\3\107\36\6\60\107\24\0" +
+ "\2\107\1\6\1\107\10\6\12\0\246\6\57\107\7\0" +
+ "\2\6\11\0\27\6\4\107\2\0\42\6\60\107\21\0" +
+ "\3\6\1\107\13\6\12\0\46\6\53\107\15\0\1\107" +
+ "\7\6\12\0\66\6\33\107\2\6\17\0\4\6\12\0" +
+ "\6\6\7\107\271\6\54\107\17\0\145\6\100\107\12\0" +
+ "\25\6\10\107\2\6\1\107\2\6\10\107\1\6\2\107" +
+ "\1\6\30\107\6\0\1\6\2\0\2\6\4\0\1\107" +
+ "\1\0\1\107\2\0\14\6\12\0\106\6\10\107\2\6" +
+ "\47\107\7\0\2\6\7\0\1\107\1\6\1\107\1\0" +
+ "\33\6\1\107\12\0\50\107\7\0\1\107\4\0\10\6" +
+ "\1\0\10\6\1\107\13\0\56\107\20\0\3\6\1\107" +
+ "\22\6\111\107\7\6\11\107\1\6\45\107\10\0\1\6" +
+ "\10\0\1\107\17\6\12\0\30\6\36\107\2\6\26\0" +
+ "\1\6\16\0\111\6\7\107\1\6\2\107\1\6\46\107" +
+ "\6\0\3\6\1\0\1\6\2\0\1\6\7\0\1\107" +
+ "\1\0\10\6\12\0\6\6\6\107\1\6\2\107\1\6" +
+ "\40\107\5\0\1\6\2\0\1\6\5\0\1\107\7\6" +
+ "\12\0\u0136\6\23\107\4\0\11\6\2\0\1\107\1\0" +
+ "\15\107\1\6\42\107\7\0\3\6\5\0\15\6\12\0" +
+ "\126\6\1\107\54\6\4\107\37\6\232\107\146\6\157\107" +
+ "\21\6\304\107\u014c\6\141\107\17\6\60\107\21\0\6\107" +
+ "\17\0\252\6\107\107\271\6\71\107\7\6\37\107\1\6" +
+ "\12\0\6\6\117\107\1\6\12\0\6\6\36\107\2\6" +
+ "\5\0\13\6\60\107\7\0\11\6\4\107\14\6\12\0" +
+ "\11\6\25\107\5\6\23\107\260\6\100\107\200\6\113\107" +
+ "\4\6\1\0\1\107\67\0\7\6\4\0\15\107\100\6" +
+ "\2\107\1\6\1\107\1\0\13\6\2\0\16\6\370\107" +
+ "\10\6\326\107\52\6\11\107\u01e7\6\4\107\1\6\7\107" +
+ "\1\6\2\107\1\6\43\107\17\6\1\107\35\6\3\107" +
+ "\2\6\1\107\16\6\4\107\10\6\u018c\107\4\6\153\107" +
+ "\5\6\15\107\3\6\11\107\7\6\12\107\3\6\2\0" +
+ "\1\6\4\0\134\6\56\0\2\6\27\0\u011e\6\5\0" +
+ "\3\6\26\0\2\6\7\0\36\6\4\0\224\6\3\0" +
+ "\273\6\125\107\1\6\107\107\1\6\2\107\2\6\1\107" +
+ "\2\6\2\107\2\6\4\107\1\6\14\107\1\6\1\107" +
+ "\1\6\7\107\1\6\101\107\1\6\4\107\2\6\10\107" +
+ "\1\6\7\107\1\6\34\107\1\6\4\107\1\6\5\107" +
+ "\1\6\1\107\3\6\7\107\1\6\u0154\107\2\6\31\107" +
+ "\1\6\31\107\1\6\37\107\1\6\31\107\1\6\37\107" +
+ "\1\6\31\107\1\6\37\107\1\6\31\107\1\6\37\107" +
+ "\1\6\31\107\1\6\10\107\2\6\151\0\4\6\62\0" +
+ "\10\6\1\0\16\6\1\0\26\6\5\0\1\6\17\0" +
+ "\120\6\37\107\6\6\6\107\325\6\7\0\1\6\21\0" +
+ "\2\6\7\0\1\6\2\0\1\6\5\0\5\6\76\107" +
+ "\41\6\1\0\160\6\55\107\3\6\7\0\7\107\2\6" +
+ "\12\0\4\6\1\107\u0141\6\36\107\1\0\21\6\54\107" +
+ "\16\0\5\6\1\107\320\6\34\107\16\0\346\6\7\107" +
+ "\1\6\4\107\1\6\2\107\1\6\17\107\1\6\305\107" +
+ "\13\6\7\0\51\6\104\107\7\0\1\107\4\6\12\0" +
+ "\u0156\6\1\107\117\6\4\107\1\6\33\107\1\6\2\107" +
+ "\1\6\1\107\2\6\1\107\1\6\12\107\1\6\4\107" +
+ "\1\6\1\107\1\6\1\107\6\6\1\107\4\6\1\107" +
+ "\1\6\1\107\1\6\1\107\1\6\3\107\1\6\2\107" +
+ "\1\6\1\107\2\6\1\107\1\6\1\107\1\6\1\107" +
+ "\1\6\1\107\1\6\1\107\1\6\2\107\1\6\1\107" +
+ "\2\6\4\107\1\6\7\107\1\6\4\107\1\6\4\107" +
+ "\1\6\1\107\1\6\12\107\1\6\21\107\5\6\3\107" +
+ "\1\6\5\107\1\6\21\107\u0134\6\12\0\6\6\340\107" +
+ "\40\6\72\107\6\6\336\107\2\6\u0182\107\16\6\u0131\107" +
+ "\37\6\36\107\342\6\113\107\5\6\u0160\107\121\6\1\0" +
+ "\36\6\140\0\200\6\360\0\20\6";
+
+ private static int[] zzUnpackcmap_blocks() {
+ int[] result = new int[32768];
+ int offset = 0;
+ offset = zzUnpackcmap_blocks(ZZ_CMAP_BLOCKS_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackcmap_blocks(String packed, int offset, int[] result) {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.length();
+ while (i < l) {
+ int count = packed.charAt(i++);
+ int value = packed.charAt(i++);
+ do result[j++] = value; while (--count > 0);
+ }
+ return j;
+ }
+
+ /**
+ * Translates DFA states to action switch labels.
+ */
+ private static final int[] ZZ_ACTION = zzUnpackAction();
+
+ private static final String ZZ_ACTION_PACKED_0 =
+ "\4\0\1\1\1\2\1\3\2\4\1\5\1\6\1\7" +
+ "\1\5\1\10\1\11\1\5\1\7\1\5\1\7\1\5" +
+ "\2\12\3\5\1\13\1\14\23\7\1\1\1\15\5\1" +
+ "\1\16\10\1\1\17\4\1\1\20\1\1\1\21\2\6" +
+ "\1\22\1\6\1\2\1\10\1\0\1\23\1\10\1\24" +
+ "\1\25\1\26\1\27\1\30\2\27\1\24\1\27\1\12" +
+ "\3\27\1\0\1\5\1\13\14\7\1\14\10\7\1\14" +
+ "\33\7\1\31\4\0\1\32\1\0\1\33\26\0\1\21" +
+ "\1\22\1\34\1\6\1\35\1\6\1\2\1\10\1\36" +
+ "\1\23\3\10\1\37\1\30\1\12\1\0\1\24\2\30" +
+ "\1\12\1\2\32\7\1\40\31\7\1\40\4\7\37\0" +
+ "\1\41\1\6\1\2\1\10\1\42\2\27\1\2\23\7" +
+ "\1\0\1\14\16\7\1\43\1\7\2\0\1\44\12\0" +
+ "\1\45\10\0\1\46\7\0\1\47\1\6\1\2\1\10" +
+ "\1\2\6\7\1\14\5\7\1\0\12\7\35\0\1\6" +
+ "\1\2\1\10\1\2\11\7\1\0\4\7\22\0\1\2" +
+ "\4\7\1\0\3\7\4\0\1\45\4\0\1\7\1\0" +
+ "\1\7\11\0\1\7\1\0\1\7\5\0\1\14\7\0";
+
+ private static int[] zzUnpackAction() {
+ int[] result = new int[498];
+ int offset = 0;
+ offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackAction(String packed, int offset, int[] result) {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.length();
+ while (i < l) {
+ int count = packed.charAt(i++);
+ int value = packed.charAt(i++);
+ do result[j++] = value; while (--count > 0);
+ }
+ return j;
+ }
+
+
+ /**
+ * Translates a state to a row index in the transition table
+ */
+ private static final int[] ZZ_ROWMAP = zzUnpackRowMap();
+
+ private static final String ZZ_ROWMAP_PACKED_0 =
+ "\0\0\0\110\0\220\0\330\0\u0120\0\u0168\0\u01b0\0\u01f8" +
+ "\0\u0240\0\u0288\0\u02d0\0\u0318\0\u0360\0\u03a8\0\u01f8\0\u03f0" +
+ "\0\u01f8\0\u0438\0\u0480\0\u04c8\0\u0510\0\u0558\0\u01f8\0\u05a0" +
+ "\0\u05e8\0\u0630\0\u0318\0\u0678\0\u06c0\0\u0708\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\u0b40\0\u0b88\0\u0bd0\0\u01f8" +
+ "\0\u0c18\0\u0c60\0\u0ca8\0\u0cf0\0\u0d38\0\u01f8\0\u0d80\0\u0dc8" +
+ "\0\u0e10\0\u0e58\0\u0ea0\0\u0ee8\0\u0f30\0\u0f78\0\u01f8\0\u0fc0" +
+ "\0\u1008\0\u1050\0\u1098\0\u01f8\0\u10e0\0\u1128\0\u1170\0\u11b8" +
+ "\0\u1200\0\u1248\0\u1290\0\u12d8\0\u1320\0\u01f8\0\u1368\0\u13b0" +
+ "\0\u13f8\0\u01f8\0\u1440\0\u1488\0\u14d0\0\u1518\0\u1440\0\u1560" +
+ "\0\u1440\0\u15a8\0\u15f0\0\u1638\0\u0288\0\u1680\0\u16c8\0\u1710" +
+ "\0\u1758\0\u17a0\0\u17e8\0\u1830\0\u1878\0\u18c0\0\u1908\0\u1950" +
+ "\0\u1998\0\u19e0\0\u1a28\0\u1a70\0\u1ab8\0\u1b00\0\u1b48\0\u1b90" +
+ "\0\u1bd8\0\u1c20\0\u1c68\0\u1cb0\0\u1cf8\0\u1d40\0\u1d88\0\u1dd0" +
+ "\0\u1e18\0\u1e60\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\u2208\0\u2250" +
+ "\0\u2298\0\u22e0\0\u2328\0\u2370\0\u23b8\0\u2400\0\u2448\0\u2490" +
+ "\0\u01f8\0\u24d8\0\u2520\0\u2568\0\u25b0\0\u01f8\0\u25f8\0\u01f8" +
+ "\0\u2640\0\u2688\0\u26d0\0\u2718\0\u2760\0\u27a8\0\u27f0\0\u2838" +
+ "\0\u2880\0\u28c8\0\u2910\0\u2958\0\u29a0\0\u29e8\0\u2a30\0\u2a78" +
+ "\0\u2ac0\0\u2b08\0\u2b50\0\u2b98\0\u2be0\0\u2c28\0\u01f8\0\u01f8" +
+ "\0\u01f8\0\u2c70\0\u01f8\0\u2cb8\0\u2d00\0\u2d48\0\u01f8\0\u1320" +
+ "\0\u2d90\0\u2dd8\0\u2e20\0\u2e68\0\u1440\0\u2eb0\0\u2ef8\0\u2f40" +
+ "\0\u2f88\0\u2fd0\0\u3018\0\u3060\0\u30a8\0\u30f0\0\u3138\0\u3180" +
+ "\0\u31c8\0\u3210\0\u3258\0\u32a0\0\u32e8\0\u3330\0\u3378\0\u33c0" +
+ "\0\u3408\0\u3450\0\u3498\0\u34e0\0\u3528\0\u3570\0\u35b8\0\u3600" +
+ "\0\u3648\0\u3690\0\u36d8\0\u3720\0\u3768\0\u37b0\0\u37f8\0\u3840" +
+ "\0\u3888\0\u38d0\0\u3918\0\u3960\0\u39a8\0\u39f0\0\u3a38\0\u3a80" +
+ "\0\u3ac8\0\u3b10\0\u3b58\0\u3ba0\0\u3be8\0\u3c30\0\u3c78\0\u3cc0" +
+ "\0\u3d08\0\u3d50\0\u3d98\0\u3de0\0\u3e28\0\u3e70\0\u3eb8\0\u3f00" +
+ "\0\u0318\0\u3f48\0\u3f90\0\u3fd8\0\u4020\0\u4068\0\u40b0\0\u40f8" +
+ "\0\u4140\0\u4188\0\u41d0\0\u4218\0\u4260\0\u42a8\0\u42f0\0\u4338" +
+ "\0\u4380\0\u43c8\0\u4410\0\u4458\0\u44a0\0\u44e8\0\u4530\0\u4578" +
+ "\0\u45c0\0\u4608\0\u4650\0\u4698\0\u46e0\0\u4728\0\u4770\0\u47b8" +
+ "\0\u4800\0\u4848\0\u4890\0\u48d8\0\u01f8\0\u4920\0\u4968\0\u49b0" +
+ "\0\u01f8\0\u2eb0\0\u49f8\0\u4a40\0\u4a88\0\u4ad0\0\u4b18\0\u4b60" +
+ "\0\u4ba8\0\u4bf0\0\u4c38\0\u4c80\0\u4cc8\0\u4d10\0\u4d58\0\u4da0" +
+ "\0\u4de8\0\u4e30\0\u4e78\0\u4ec0\0\u4f08\0\u4f50\0\u4f98\0\u4fe0" +
+ "\0\u3e28\0\u5028\0\u5070\0\u50b8\0\u5100\0\u5148\0\u5190\0\u51d8" +
+ "\0\u5220\0\u5268\0\u52b0\0\u52f8\0\u5340\0\u5388\0\u53d0\0\u0318" +
+ "\0\u5418\0\u5460\0\u54a8\0\u54f0\0\u5538\0\u5580\0\u55c8\0\u5610" +
+ "\0\u5658\0\u56a0\0\u56e8\0\u5730\0\u5778\0\u57c0\0\u01f8\0\u5808" +
+ "\0\u5850\0\u5898\0\u58e0\0\u5928\0\u5970\0\u59b8\0\u5a00\0\u5a48" +
+ "\0\u5a90\0\u5ad8\0\u5b20\0\u5b68\0\u5bb0\0\u5bf8\0\u5c40\0\u5c88" +
+ "\0\u5cd0\0\u5d18\0\u5d60\0\u5da8\0\u5df0\0\u5e38\0\u5e80\0\u5ec8" +
+ "\0\u5f10\0\u5f58\0\u5fa0\0\u5fe8\0\u6030\0\u6078\0\u60c0\0\u6108" +
+ "\0\u6150\0\u6198\0\u61e0\0\u6228\0\u6270\0\u62b8\0\u6300\0\u6348" +
+ "\0\u6390\0\u63d8\0\u6420\0\u6468\0\u54f0\0\u64b0\0\u64f8\0\u6540" +
+ "\0\u6588\0\u65d0\0\u6618\0\u6660\0\u66a8\0\u66f0\0\u6738\0\u6780" +
+ "\0\u67c8\0\u6810\0\u6858\0\u68a0\0\u68e8\0\u6930\0\u6978\0\u5a48" +
+ "\0\u69c0\0\u6a08\0\u6a50\0\u6a98\0\u6ae0\0\u6b28\0\u6b70\0\u5c88" +
+ "\0\u6bb8\0\u6c00\0\u6c48\0\u6c90\0\u6cd8\0\u6d20\0\u6d68\0\u6db0" +
+ "\0\u6df8\0\u6e40\0\u6e88\0\u6ed0\0\u6f18\0\u6f60\0\u6fa8\0\u6ff0" +
+ "\0\u7038\0\u7080\0\u70c8\0\u7110\0\u7158\0\u71a0\0\u71e8\0\u7230" +
+ "\0\u7278\0\u72c0\0\u7308\0\u7350\0\u7398\0\u73e0\0\u7428\0\u7470" +
+ "\0\u74b8\0\u7500\0\u7548\0\u7590\0\u75d8\0\u7620\0\u7668\0\u76b0" +
+ "\0\u76f8\0\u7740\0\u7788\0\u77d0\0\u7818\0\u7860\0\u78a8\0\u78f0" +
+ "\0\u7938\0\u7980\0\u79c8\0\u7a10\0\u7a58\0\u7aa0\0\u7ae8\0\u7b30" +
+ "\0\u7b78\0\u7bc0\0\u7c08\0\u7c50\0\u7c98\0\u7ce0\0\u7d28\0\u7d70" +
+ "\0\u7db8\0\u7e00\0\u7e48\0\u7e90\0\u7ed8\0\u7f20\0\u7f68\0\u7fb0" +
+ "\0\u7ff8\0\u8040\0\u01f8\0\u8088\0\u80d0\0\u8118\0\u8160\0\u81a8" +
+ "\0\u81f0\0\u8238";
+
+ private static int[] zzUnpackRowMap() {
+ int[] result = new int[498];
+ int offset = 0;
+ offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackRowMap(String packed, int offset, int[] result) {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.length() - 1;
+ while (i < l) {
+ int high = packed.charAt(i++) << 16;
+ result[j++] = high | packed.charAt(i++);
+ }
+ return j;
+ }
+
+ /**
+ * The transition table of the DFA
+ */
+ private static final int[] ZZ_TRANS = zzUnpacktrans();
+
+ private static final String ZZ_TRANS_PACKED_0 =
+ "\1\6\1\7\1\10\1\6\1\7\1\11\1\6\1\12" +
+ "\1\13\1\6\1\14\1\15\1\16\1\17\1\12\1\20" +
+ "\1\21\1\22\1\23\1\24\1\25\4\26\1\27\1\30" +
+ "\1\12\1\31\1\27\1\32\11\14\1\6\1\12\1\33" +
+ "\1\34\1\35\1\36\1\37\1\40\1\41\1\42\1\14" +
+ "\1\43\1\14\1\44\1\45\1\46\1\47\1\50\1\14" +
+ "\1\51\1\52\1\53\1\54\1\55\1\56\3\14\2\17" +
+ "\1\6\1\14\2\57\1\60\13\57\1\61\41\57\1\62" +
+ "\1\57\1\63\15\57\1\64\7\57\2\65\1\66\13\65" +
+ "\1\67\13\65\1\70\3\65\1\71\21\65\1\72\1\65" +
+ "\1\73\15\65\1\74\3\65\1\75\3\65\2\76\1\77" +
+ "\55\76\1\100\1\76\1\101\15\76\1\102\7\76\2\103" +
+ "\1\104\5\103\1\105\37\103\1\106\37\103\1\6\2\0" +
+ "\1\6\2\0\1\6\2\0\2\6\11\0\5\6\5\0" +
+ "\13\6\1\0\32\6\2\0\2\6\1\0\1\7\2\0" +
+ "\1\7\215\0\1\10\140\0\1\27\54\0\2\107\1\110" +
+ "\5\107\1\111\37\107\1\112\37\107\1\14\2\0\1\6" +
+ "\2\0\1\6\2\0\1\6\1\14\11\0\5\14\5\0" +
+ "\1\6\11\14\1\113\1\0\32\14\2\0\2\14\13\0" +
+ "\1\27\17\0\1\27\54\0\2\114\1\115\11\114\1\116" +
+ "\33\114\1\117\37\114\17\0\1\27\13\0\1\27\75\0" +
+ "\1\27\11\0\1\27\100\0\5\120\75\0\1\121\4\0" +
+ "\1\122\7\0\1\27\54\0\1\123\2\0\1\123\2\0" +
+ "\1\123\2\0\2\123\7\0\1\120\1\0\4\124\1\125" +
+ "\5\0\2\123\1\126\1\127\1\130\1\127\1\123\1\131" +
+ "\1\123\1\132\1\123\1\0\1\133\1\123\1\126\1\123" +
+ "\1\127\1\130\1\127\4\123\1\131\13\123\1\132\2\123" +
+ "\2\0\3\123\2\0\1\123\2\0\1\123\2\0\2\123" +
+ "\7\0\1\120\1\0\5\26\5\0\3\123\1\127\1\130" +
+ "\1\127\1\123\1\131\3\123\1\0\1\134\3\123\1\127" +
+ "\1\130\1\127\4\123\1\131\16\123\2\0\2\123\32\0" +
+ "\1\135\1\27\107\0\1\27\1\136\53\0\1\6\2\0" +
+ "\1\6\2\0\1\6\2\0\1\6\1\137\11\0\5\6" +
+ "\5\0\1\6\11\137\1\6\1\0\32\137\2\0\1\6" +
+ "\1\137\1\14\2\0\1\6\2\0\1\6\2\0\1\6" +
+ "\1\14\11\0\5\14\5\0\1\6\11\14\1\113\1\0" +
+ "\2\14\1\140\16\14\1\141\1\142\1\143\6\14\2\0" +
+ "\3\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\16\14" +
+ "\1\144\2\14\1\145\6\14\1\146\1\14\2\0\3\14" +
+ "\2\0\1\6\2\0\1\6\2\0\1\6\1\14\11\0" +
+ "\5\14\5\0\1\6\11\14\1\113\1\0\1\14\1\147" +
+ "\6\14\1\150\2\14\1\151\2\14\1\152\13\14\2\0" +
+ "\3\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\5\14" +
+ "\1\153\10\14\1\154\13\14\2\0\3\14\2\0\1\6" +
+ "\2\0\1\6\2\0\1\6\1\14\11\0\5\14\5\0" +
+ "\1\6\11\14\1\113\1\0\13\14\1\155\1\14\1\156" +
+ "\11\14\1\157\2\14\2\0\3\14\2\0\1\6\2\0" +
+ "\1\6\2\0\1\6\1\14\11\0\5\14\5\0\1\6" +
+ "\11\14\1\113\1\0\1\14\1\160\7\14\1\161\1\14" +
+ "\1\162\2\14\1\163\13\14\2\0\3\14\2\0\1\6" +
+ "\2\0\1\6\2\0\1\6\1\14\11\0\5\14\5\0" +
+ "\1\6\11\14\1\113\1\0\16\14\1\164\13\14\2\0" +
+ "\3\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\6\14" +
+ "\1\165\5\14\1\166\1\167\14\14\2\0\3\14\2\0" +
+ "\1\6\2\0\1\6\2\0\1\6\1\14\11\0\5\14" +
+ "\5\0\1\6\11\14\1\113\1\0\16\14\1\170\13\14" +
+ "\2\0\3\14\2\0\1\6\2\0\1\6\2\0\1\6" +
+ "\1\14\11\0\5\14\5\0\1\6\11\14\1\113\1\0" +
+ "\16\14\1\171\13\14\2\0\3\14\2\0\1\6\2\0" +
+ "\1\6\2\0\1\6\1\14\11\0\5\14\5\0\1\6" +
+ "\11\14\1\113\1\0\1\14\1\172\3\14\1\173\10\14" +
+ "\1\174\5\14\1\175\5\14\2\0\3\14\2\0\1\6" +
+ "\2\0\1\6\2\0\1\6\1\14\11\0\5\14\5\0" +
+ "\1\6\11\14\1\113\1\0\17\14\1\176\12\14\2\0" +
+ "\3\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\1\14" +
+ "\1\177\3\14\1\200\13\14\1\201\2\14\1\202\5\14" +
+ "\2\0\3\14\2\0\1\6\2\0\1\6\2\0\1\6" +
+ "\1\14\11\0\5\14\5\0\1\6\11\14\1\113\1\0" +
+ "\5\14\1\203\24\14\2\0\3\14\2\0\1\6\2\0" +
+ "\1\6\2\0\1\6\1\14\11\0\5\14\5\0\1\6" +
+ "\11\14\1\113\1\0\5\14\1\204\2\14\1\205\12\14" +
+ "\1\206\1\207\1\14\1\210\1\14\1\211\1\14\2\0" +
+ "\3\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\10\14" +
+ "\1\212\5\14\1\33\2\14\1\213\10\14\2\0\3\14" +
+ "\2\0\1\6\2\0\1\6\2\0\1\6\1\14\11\0" +
+ "\5\14\5\0\1\6\11\14\1\113\1\0\22\14\1\214" +
+ "\7\14\2\0\3\14\2\0\1\6\2\0\1\6\2\0" +
+ "\1\6\1\14\11\0\5\14\5\0\1\6\11\14\1\113" +
+ "\1\0\1\14\1\215\14\14\1\216\13\14\2\0\3\14" +
+ "\2\0\1\6\2\0\1\6\2\0\1\6\1\14\11\0" +
+ "\5\14\5\0\1\6\11\14\1\113\1\0\10\14\1\217" +
+ "\1\220\20\14\2\0\2\14\2\57\1\0\13\57\1\0" +
+ "\41\57\1\0\1\57\1\0\15\57\1\0\7\57\23\0" +
+ "\1\221\147\0\1\222\11\0\1\223\107\0\1\224\112\0" +
+ "\1\225\7\0\2\65\1\0\13\65\1\0\13\65\1\0" +
+ "\3\65\1\0\21\65\1\0\1\65\1\0\15\65\1\0" +
+ "\3\65\1\0\3\65\23\0\1\226\107\0\1\227\10\0" +
+ "\1\230\2\0\11\231\3\0\31\231\57\0\1\232\1\0" +
+ "\1\233\1\234\1\235\3\0\1\236\4\0\1\237\1\240" +
+ "\1\0\1\241\1\242\1\243\1\0\1\244\73\0\1\245" +
+ "\11\0\1\246\107\0\1\247\112\0\1\250\45\0\1\251" +
+ "\51\0\2\76\1\0\55\76\1\0\1\76\1\0\15\76" +
+ "\1\0\7\76\63\0\1\252\11\0\1\253\107\0\1\254" +
+ "\112\0\1\255\7\0\2\103\1\0\5\103\1\0\37\103" +
+ "\1\0\37\103\10\0\1\256\77\0\2\257\4\0\100\257" +
+ "\1\0\1\257\2\107\1\110\5\107\1\260\37\107\1\112" +
+ "\37\107\10\110\1\261\37\110\1\262\37\110\10\0\1\263" +
+ "\77\0\2\110\4\0\2\110\1\107\3\110\1\107\7\110" +
+ "\4\107\20\110\1\107\3\110\1\107\3\110\1\107\6\110" +
+ "\1\107\3\110\3\107\1\264\7\110\1\0\1\110\1\6" +
+ "\2\0\1\6\2\0\1\6\2\0\2\6\11\0\5\6" +
+ "\5\0\13\6\1\0\24\6\1\265\5\6\2\0\2\6" +
+ "\2\266\1\0\11\266\1\267\73\266\14\0\1\267\73\0" +
+ "\2\266\1\0\5\266\1\114\3\266\1\270\7\266\3\271" +
+ "\1\272\20\266\1\114\3\266\1\114\3\266\1\114\6\266" +
+ "\1\114\3\266\3\114\1\273\11\266\1\123\2\0\1\123" +
+ "\2\0\1\123\2\0\2\123\11\0\5\120\5\0\3\123" +
+ "\1\127\1\130\1\127\5\123\1\0\4\123\1\127\1\130" +
+ "\1\127\23\123\2\0\2\123\16\0\1\274\71\0\1\123" +
+ "\2\0\1\123\2\0\1\123\2\0\2\123\11\0\5\123" +
+ "\5\0\13\123\1\0\32\123\2\0\3\123\2\0\1\123" +
+ "\2\0\1\123\2\0\2\123\7\0\1\120\1\0\4\124" +
+ "\1\125\5\0\3\123\1\127\1\130\1\127\1\123\1\275" +
+ "\3\123\1\0\1\133\3\123\1\127\1\130\1\127\4\123" +
+ "\1\275\16\123\2\0\3\123\2\0\1\123\2\0\1\123" +
+ "\2\0\2\123\7\0\1\120\1\0\5\125\5\0\3\123" +
+ "\1\127\1\130\1\127\5\123\1\0\4\123\1\127\1\130" +
+ "\1\127\23\123\2\0\3\123\2\0\1\123\2\0\1\123" +
+ "\2\0\2\123\11\0\2\276\3\123\5\0\13\123\1\0" +
+ "\32\123\2\0\3\123\2\0\1\123\2\0\1\123\2\0" +
+ "\2\123\4\0\1\277\1\0\1\277\2\0\5\300\5\0" +
+ "\13\123\1\0\32\123\2\0\3\123\2\0\1\123\2\0" +
+ "\1\123\2\0\2\123\11\0\5\301\5\0\1\123\5\301" +
+ "\5\123\1\0\1\123\6\301\23\123\2\0\3\123\2\0" +
+ "\1\123\2\0\1\123\2\0\2\123\11\0\4\302\1\123" +
+ "\5\0\13\123\1\0\1\133\31\123\2\0\3\123\2\0" +
+ "\1\123\2\0\1\123\2\0\2\123\11\0\5\303\5\0" +
+ "\13\123\1\0\1\134\31\123\2\0\2\123\33\0\1\27" +
+ "\1\12\53\0\1\137\2\0\1\6\2\0\1\6\2\0" +
+ "\1\6\1\137\11\0\5\137\5\0\1\6\11\137\1\304" +
+ "\1\0\32\137\2\0\2\137\1\14\2\0\1\6\2\0" +
+ "\1\6\2\0\1\6\1\14\11\0\5\14\5\0\1\6" +
+ "\11\14\1\113\1\0\22\14\1\305\7\14\2\0\3\14" +
+ "\2\0\1\6\2\0\1\6\2\0\1\6\1\14\11\0" +
+ "\5\14\5\0\1\6\11\14\1\113\1\0\5\14\1\306" +
+ "\24\14\2\0\3\14\2\0\1\6\2\0\1\6\2\0" +
+ "\1\6\1\14\11\0\5\14\5\0\1\6\11\14\1\113" +
+ "\1\0\22\14\1\307\7\14\2\0\3\14\2\0\1\6" +
+ "\2\0\1\6\2\0\1\6\1\14\11\0\5\14\5\0" +
+ "\1\6\11\14\1\113\1\0\10\14\1\310\21\14\2\0" +
+ "\3\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\16\14" +
+ "\1\311\13\14\2\0\3\14\2\0\1\6\2\0\1\6" +
+ "\2\0\1\6\1\14\11\0\5\14\5\0\1\6\11\14" +
+ "\1\113\1\0\5\14\1\312\24\14\2\0\3\14\2\0" +
+ "\1\6\2\0\1\6\2\0\1\6\1\14\11\0\5\14" +
+ "\5\0\1\6\11\14\1\113\1\0\23\14\1\313\6\14" +
+ "\2\0\3\14\2\0\1\6\2\0\1\6\2\0\1\6" +
+ "\1\14\11\0\5\14\5\0\1\6\11\14\1\113\1\0" +
+ "\22\14\1\314\1\315\6\14\2\0\3\14\2\0\1\6" +
+ "\2\0\1\6\2\0\1\6\1\14\11\0\5\14\5\0" +
+ "\1\6\11\14\1\113\1\0\1\14\1\215\30\14\2\0" +
+ "\3\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\1\14" +
+ "\1\316\30\14\2\0\3\14\2\0\1\6\2\0\1\6" +
+ "\2\0\1\6\1\14\11\0\5\14\5\0\1\6\11\14" +
+ "\1\113\1\0\15\14\1\317\14\14\2\0\3\14\2\0" +
+ "\1\6\2\0\1\6\2\0\1\6\1\14\11\0\5\14" +
+ "\5\0\1\6\11\14\1\113\1\0\6\14\1\320\23\14" +
+ "\2\0\3\14\2\0\1\6\2\0\1\6\2\0\1\6" +
+ "\1\14\11\0\5\14\5\0\1\6\11\14\1\113\1\0" +
+ "\24\14\1\321\5\14\2\0\3\14\2\0\1\6\2\0" +
+ "\1\6\2\0\1\6\1\14\11\0\5\14\5\0\1\6" +
+ "\11\14\1\113\1\0\22\14\1\314\7\14\2\0\3\14" +
+ "\2\0\1\6\2\0\1\6\2\0\1\6\1\14\11\0" +
+ "\5\14\5\0\1\6\11\14\1\113\1\0\24\14\1\322" +
+ "\5\14\2\0\3\14\2\0\1\6\2\0\1\6\2\0" +
+ "\1\6\1\14\11\0\5\14\5\0\1\6\11\14\1\113" +
+ "\1\0\17\14\1\323\3\14\1\324\6\14\2\0\3\14" +
+ "\2\0\1\6\2\0\1\6\2\0\1\6\1\14\11\0" +
+ "\5\14\5\0\1\6\11\14\1\113\1\0\13\14\1\325" +
+ "\16\14\2\0\3\14\2\0\1\6\2\0\1\6\2\0" +
+ "\1\6\1\14\11\0\5\14\5\0\1\6\11\14\1\113" +
+ "\1\0\15\14\1\326\14\14\2\0\3\14\2\0\1\6" +
+ "\2\0\1\6\2\0\1\6\1\14\11\0\5\14\5\0" +
+ "\1\6\11\14\1\113\1\0\16\14\1\327\13\14\2\0" +
+ "\3\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\21\14" +
+ "\1\33\10\14\2\0\3\14\2\0\1\6\2\0\1\6" +
+ "\2\0\1\6\1\14\11\0\5\14\5\0\1\6\11\14" +
+ "\1\113\1\0\23\14\1\330\6\14\2\0\3\14\2\0" +
+ "\1\6\2\0\1\6\2\0\1\6\1\14\11\0\5\14" +
+ "\5\0\1\6\11\14\1\113\1\0\1\331\4\14\1\332" +
+ "\1\14\1\333\3\14\1\333\1\14\1\334\14\14\2\0" +
+ "\3\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\17\14" +
+ "\1\335\12\14\2\0\3\14\2\0\1\6\2\0\1\6" +
+ "\2\0\1\6\1\14\11\0\5\14\5\0\1\6\11\14" +
+ "\1\113\1\0\22\14\1\336\1\337\6\14\2\0\3\14" +
+ "\2\0\1\6\2\0\1\6\2\0\1\6\1\14\11\0" +
+ "\5\14\5\0\1\6\11\14\1\113\1\0\15\14\1\340" +
+ "\14\14\2\0\3\14\2\0\1\6\2\0\1\6\2\0" +
+ "\1\6\1\14\11\0\5\14\5\0\1\6\11\14\1\113" +
+ "\1\0\4\14\1\341\25\14\2\0\3\14\2\0\1\6" +
+ "\2\0\1\6\2\0\1\6\1\14\11\0\5\14\5\0" +
+ "\1\6\11\14\1\113\1\0\23\14\1\342\6\14\2\0" +
+ "\3\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\26\14" +
+ "\1\33\3\14\2\0\3\14\2\0\1\6\2\0\1\6" +
+ "\2\0\1\6\1\14\11\0\5\14\5\0\1\6\11\14" +
+ "\1\113\1\0\15\14\1\343\14\14\2\0\3\14\2\0" +
+ "\1\6\2\0\1\6\2\0\1\6\1\14\11\0\5\14" +
+ "\5\0\1\6\11\14\1\113\1\0\13\14\1\344\16\14" +
+ "\2\0\3\14\2\0\1\6\2\0\1\6\2\0\1\6" +
+ "\1\14\11\0\5\14\5\0\1\6\11\14\1\113\1\0" +
+ "\5\14\1\345\24\14\2\0\3\14\2\0\1\6\2\0" +
+ "\1\6\2\0\1\6\1\14\11\0\5\14\5\0\1\6" +
+ "\11\14\1\113\1\0\3\14\1\346\26\14\2\0\3\14" +
+ "\2\0\1\6\2\0\1\6\2\0\1\6\1\14\11\0" +
+ "\5\14\5\0\1\6\11\14\1\113\1\0\21\14\1\347" +
+ "\10\14\2\0\3\14\2\0\1\6\2\0\1\6\2\0" +
+ "\1\6\1\14\11\0\5\14\5\0\1\6\11\14\1\113" +
+ "\1\0\11\14\1\350\4\14\1\351\13\14\2\0\3\14" +
+ "\2\0\1\6\2\0\1\6\2\0\1\6\1\14\11\0" +
+ "\5\14\5\0\1\6\11\14\1\113\1\0\2\14\1\352" +
+ "\27\14\2\0\3\14\2\0\1\6\2\0\1\6\2\0" +
+ "\1\6\1\14\11\0\5\14\5\0\1\6\11\14\1\113" +
+ "\1\0\3\14\1\353\14\14\1\354\2\14\1\355\6\14" +
+ "\2\0\3\14\2\0\1\6\2\0\1\6\2\0\1\6" +
+ "\1\14\11\0\5\14\5\0\1\6\11\14\1\113\1\0" +
+ "\1\14\1\356\30\14\2\0\3\14\2\0\1\6\2\0" +
+ "\1\6\2\0\1\6\1\14\11\0\5\14\5\0\1\6" +
+ "\11\14\1\113\1\0\16\14\1\357\13\14\2\0\3\14" +
+ "\2\0\1\6\2\0\1\6\2\0\1\6\1\14\11\0" +
+ "\5\14\5\0\1\6\11\14\1\113\1\0\1\14\1\360" +
+ "\17\14\1\361\10\14\2\0\3\14\2\0\1\6\2\0" +
+ "\1\6\2\0\1\6\1\14\11\0\5\14\5\0\1\6" +
+ "\11\14\1\113\1\0\17\14\1\362\12\14\2\0\3\14" +
+ "\2\0\1\6\2\0\1\6\2\0\1\6\1\14\11\0" +
+ "\5\14\5\0\1\6\11\14\1\113\1\0\11\14\1\363" +
+ "\20\14\2\0\3\14\2\0\1\6\2\0\1\6\2\0" +
+ "\1\6\1\14\11\0\5\14\5\0\1\6\11\14\1\113" +
+ "\1\0\15\14\1\364\14\14\2\0\3\14\2\0\1\6" +
+ "\2\0\1\6\2\0\1\6\1\14\11\0\5\14\5\0" +
+ "\1\6\11\14\1\113\1\0\11\14\1\365\7\14\1\366" +
+ "\10\14\2\0\3\14\2\0\1\6\2\0\1\6\2\0" +
+ "\1\6\1\14\11\0\5\14\5\0\1\6\11\14\1\113" +
+ "\1\0\1\14\1\367\22\14\1\370\3\14\1\33\1\14" +
+ "\2\0\3\14\2\0\1\6\2\0\1\6\2\0\1\6" +
+ "\1\14\11\0\5\14\5\0\1\6\11\14\1\113\1\0" +
+ "\5\14\1\365\24\14\2\0\3\14\2\0\1\6\2\0" +
+ "\1\6\2\0\1\6\1\14\11\0\5\14\5\0\1\6" +
+ "\11\14\1\113\1\0\21\14\1\371\10\14\2\0\3\14" +
+ "\2\0\1\6\2\0\1\6\2\0\1\6\1\14\11\0" +
+ "\5\14\5\0\1\6\11\14\1\113\1\0\11\14\1\372" +
+ "\1\14\1\373\16\14\2\0\3\14\2\0\1\6\2\0" +
+ "\1\6\2\0\1\6\1\14\11\0\5\14\5\0\1\6" +
+ "\11\14\1\113\1\0\11\14\1\374\20\14\2\0\3\14" +
+ "\2\0\1\6\2\0\1\6\2\0\1\6\1\14\11\0" +
+ "\5\14\5\0\1\6\11\14\1\113\1\0\23\14\1\375" +
+ "\6\14\2\0\2\14\65\0\1\376\113\0\1\377\113\0" +
+ "\1\u0100\112\0\1\u0101\43\0\1\230\2\0\11\231\3\0" +
+ "\31\231\4\0\34\231\1\230\53\231\76\0\1\u0102\64\0" +
+ "\1\u0103\113\0\1\u0104\131\0\1\u0105\75\0\1\u0106\74\0" +
+ "\1\u0107\106\0\1\u0108\113\0\1\u0109\107\0\1\u010a\3\0" +
+ "\1\u010b\106\0\1\u010c\5\0\1\u010d\5\0\1\u010e\70\0" +
+ "\1\u010f\115\0\1\u0110\113\0\1\u0111\113\0\1\u0112\112\0" +
+ "\1\u0113\64\0\1\u0114\1\u0115\4\0\1\u0116\1\0\1\u0117" +
+ "\11\0\1\u0118\75\0\1\u0119\113\0\1\u011a\113\0\1\u011b" +
+ "\112\0\1\u011c\17\0\1\u011d\77\0\2\110\4\0\100\110" +
+ "\1\0\11\110\1\261\13\110\5\u011e\6\110\5\u011e\4\110" +
+ "\1\262\2\110\6\u011e\27\110\1\6\2\0\1\6\2\0" +
+ "\1\6\2\0\2\6\11\0\5\u011f\5\0\1\6\5\u011f" +
+ "\5\6\1\0\1\6\6\u011f\23\6\2\0\2\6\2\266" +
+ "\1\0\11\266\1\116\75\266\1\0\11\266\1\267\7\266" +
+ "\4\272\62\266\1\0\11\266\1\267\7\266\4\114\62\266" +
+ "\1\0\11\266\1\116\7\266\5\u0120\6\266\5\u0120\7\266" +
+ "\6\u0120\27\266\23\0\1\u0121\64\0\1\123\2\0\1\123" +
+ "\2\0\1\123\2\0\2\123\11\0\2\276\3\123\5\0" +
+ "\13\123\1\0\1\u0122\31\123\2\0\2\123\24\0\5\300" +
+ "\57\0\1\123\2\0\1\123\2\0\1\123\2\0\2\123" +
+ "\11\0\5\300\5\0\3\123\1\127\1\123\1\127\5\123" +
+ "\1\0\4\123\1\127\1\123\1\127\23\123\2\0\3\123" +
+ "\2\0\1\123\2\0\1\123\2\0\2\123\11\0\5\301" +
+ "\5\0\1\123\5\301\1\123\1\275\3\123\1\0\1\u0123" +
+ "\6\301\4\123\1\275\16\123\2\0\3\123\2\0\1\123" +
+ "\2\0\1\123\2\0\2\123\11\0\4\302\1\123\5\0" +
+ "\7\123\1\275\3\123\1\0\1\133\12\123\1\275\16\123" +
+ "\2\0\3\123\2\0\1\123\2\0\1\123\2\0\2\123" +
+ "\11\0\5\303\5\0\7\123\1\131\3\123\1\0\1\134" +
+ "\12\123\1\131\16\123\2\0\2\123\1\6\2\0\1\6" +
+ "\2\0\1\6\2\0\2\6\11\0\5\6\5\0\13\6" +
+ "\1\0\24\6\1\u0124\5\6\2\0\2\6\1\14\2\0" +
+ "\1\6\2\0\1\6\2\0\1\6\1\14\11\0\5\14" +
+ "\5\0\1\6\11\14\1\113\1\0\23\14\1\u0125\6\14" +
+ "\2\0\3\14\2\0\1\6\2\0\1\6\2\0\1\6" +
+ "\1\14\11\0\5\14\5\0\1\6\11\14\1\113\1\0" +
+ "\23\14\1\355\6\14\2\0\3\14\2\0\1\6\2\0" +
+ "\1\6\2\0\1\6\1\14\11\0\5\14\5\0\1\6" +
+ "\11\14\1\113\1\0\5\14\1\u0126\24\14\2\0\3\14" +
+ "\2\0\1\6\2\0\1\6\2\0\1\6\1\14\11\0" +
+ "\5\14\5\0\1\6\11\14\1\113\1\0\21\14\1\u0127" +
+ "\10\14\2\0\3\14\2\0\1\6\2\0\1\6\2\0" +
+ "\1\6\1\14\11\0\5\14\5\0\1\6\11\14\1\113" +
+ "\1\0\13\14\1\u0128\16\14\2\0\3\14\2\0\1\6" +
+ "\2\0\1\6\2\0\1\6\1\14\11\0\5\14\5\0" +
+ "\1\6\11\14\1\113\1\0\1\14\1\u0129\30\14\2\0" +
+ "\3\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\5\14" +
+ "\1\371\24\14\2\0\3\14\2\0\1\6\2\0\1\6" +
+ "\2\0\1\6\1\14\11\0\5\14\5\0\1\6\11\14" +
+ "\1\113\1\0\5\14\1\33\24\14\2\0\3\14\2\0" +
+ "\1\6\2\0\1\6\2\0\1\6\1\14\11\0\5\14" +
+ "\5\0\1\6\11\14\1\113\1\0\3\14\1\375\26\14" +
+ "\2\0\3\14\2\0\1\6\2\0\1\6\2\0\1\6" +
+ "\1\14\11\0\5\14\5\0\1\6\11\14\1\113\1\0" +
+ "\22\14\1\365\7\14\2\0\3\14\2\0\1\6\2\0" +
+ "\1\6\2\0\1\6\1\14\11\0\5\14\5\0\1\6" +
+ "\11\14\1\113\1\0\22\14\1\u012a\1\u012b\6\14\2\0" +
+ "\3\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\1\14" +
+ "\1\u012c\30\14\2\0\3\14\2\0\1\6\2\0\1\6" +
+ "\2\0\1\6\1\14\11\0\5\14\5\0\1\6\11\14" +
+ "\1\113\1\0\2\14\1\u012d\27\14\2\0\3\14\2\0" +
+ "\1\6\2\0\1\6\2\0\1\6\1\14\11\0\5\14" +
+ "\5\0\1\6\11\14\1\113\1\0\14\14\1\33\15\14" +
+ "\2\0\3\14\2\0\1\6\2\0\1\6\2\0\1\6" +
+ "\1\14\11\0\5\14\5\0\1\6\11\14\1\113\1\0" +
+ "\16\14\1\u012e\13\14\2\0\3\14\2\0\1\6\2\0" +
+ "\1\6\2\0\1\6\1\14\11\0\5\14\5\0\1\6" +
+ "\11\14\1\113\1\0\5\14\1\u012f\24\14\2\0\3\14" +
+ "\2\0\1\6\2\0\1\6\2\0\1\6\1\14\11\0" +
+ "\5\14\5\0\1\6\11\14\1\113\1\0\22\14\1\370" +
+ "\7\14\2\0\3\14\2\0\1\6\2\0\1\6\2\0" +
+ "\1\6\1\14\11\0\5\14\5\0\1\6\11\14\1\113" +
+ "\1\0\1\14\1\u0130\30\14\2\0\3\14\2\0\1\6" +
+ "\2\0\1\6\2\0\1\6\1\14\11\0\5\14\5\0" +
+ "\1\6\11\14\1\113\1\0\1\14\1\u0131\30\14\2\0" +
+ "\3\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\16\14" +
+ "\1\33\13\14\2\0\3\14\2\0\1\6\2\0\1\6" +
+ "\2\0\1\6\1\14\11\0\5\14\5\0\1\6\11\14" +
+ "\1\113\1\0\11\14\1\u0132\20\14\2\0\3\14\2\0" +
+ "\1\6\2\0\1\6\2\0\1\6\1\14\11\0\5\14" +
+ "\5\0\1\6\11\14\1\113\1\0\20\14\1\33\11\14" +
+ "\2\0\3\14\2\0\1\6\2\0\1\6\2\0\1\6" +
+ "\1\14\11\0\5\14\5\0\1\6\11\14\1\113\1\0" +
+ "\5\14\1\33\15\14\1\33\6\14\2\0\3\14\2\0" +
+ "\1\6\2\0\1\6\2\0\1\6\1\14\11\0\5\14" +
+ "\5\0\1\6\11\14\1\113\1\0\5\14\1\33\10\14" +
+ "\1\u0133\5\14\1\175\5\14\2\0\3\14\2\0\1\6" +
+ "\2\0\1\6\2\0\1\6\1\14\11\0\5\14\5\0" +
+ "\1\6\11\14\1\113\1\0\13\14\1\u0134\2\14\1\u0126" +
+ "\13\14\2\0\3\14\2\0\1\6\2\0\1\6\2\0" +
+ "\1\6\1\14\11\0\5\14\5\0\1\6\11\14\1\113" +
+ "\1\0\23\14\1\u0135\6\14\2\0\3\14\2\0\1\6" +
+ "\2\0\1\6\2\0\1\6\1\14\11\0\5\14\5\0" +
+ "\1\6\11\14\1\113\1\0\5\14\1\u0136\24\14\2\0" +
+ "\3\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\7\14" +
+ "\1\371\22\14\2\0\3\14\2\0\1\6\2\0\1\6" +
+ "\2\0\1\6\1\14\11\0\5\14\5\0\1\6\11\14" +
+ "\1\113\1\0\24\14\1\374\5\14\2\0\3\14\2\0" +
+ "\1\6\2\0\1\6\2\0\1\6\1\14\11\0\5\14" +
+ "\5\0\1\6\11\14\1\113\1\0\11\14\1\u0137\20\14" +
+ "\2\0\3\14\2\0\1\6\2\0\1\6\2\0\1\6" +
+ "\1\14\6\0\1\u0138\2\0\5\14\5\0\1\6\11\14" +
+ "\1\113\1\0\32\14\2\0\3\14\2\0\1\6\2\0" +
+ "\1\6\2\0\1\6\1\14\11\0\5\14\5\0\1\6" +
+ "\11\14\1\113\1\0\13\14\1\33\16\14\2\0\3\14" +
+ "\2\0\1\6\2\0\1\6\2\0\1\6\1\14\11\0" +
+ "\5\14\5\0\1\6\11\14\1\113\1\0\15\14\1\u0139" +
+ "\14\14\2\0\3\14\2\0\1\6\2\0\1\6\2\0" +
+ "\1\6\1\14\11\0\5\14\5\0\1\6\11\14\1\113" +
+ "\1\0\12\14\1\u013a\17\14\2\0\3\14\2\0\1\6" +
+ "\2\0\1\6\2\0\1\6\1\14\11\0\5\14\5\0" +
+ "\1\6\11\14\1\113\1\0\14\14\1\u013b\15\14\2\0" +
+ "\3\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\25\14" +
+ "\1\u013c\4\14\2\0\3\14\2\0\1\6\2\0\1\6" +
+ "\2\0\1\6\1\14\11\0\5\14\5\0\1\6\11\14" +
+ "\1\113\1\0\23\14\1\u013d\1\14\1\u013e\4\14\2\0" +
+ "\3\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\13\14" +
+ "\1\u013f\16\14\2\0\3\14\2\0\1\6\2\0\1\6" +
+ "\2\0\1\6\1\14\11\0\5\14\5\0\1\6\11\14" +
+ "\1\113\1\0\16\14\1\u0140\13\14\2\0\3\14\2\0" +
+ "\1\6\2\0\1\6\2\0\1\6\1\14\11\0\5\14" +
+ "\5\0\1\6\11\14\1\113\1\0\24\14\1\u0141\5\14" +
+ "\2\0\3\14\2\0\1\6\2\0\1\6\2\0\1\6" +
+ "\1\14\11\0\5\14\5\0\1\6\11\14\1\113\1\0" +
+ "\24\14\1\u0142\5\14\2\0\3\14\2\0\1\6\2\0" +
+ "\1\6\2\0\1\6\1\14\11\0\5\14\5\0\1\6" +
+ "\11\14\1\113\1\0\13\14\1\u0143\16\14\2\0\3\14" +
+ "\2\0\1\6\2\0\1\6\2\0\1\6\1\14\11\0" +
+ "\5\14\5\0\1\6\11\14\1\113\1\0\21\14\1\u0131" +
+ "\10\14\2\0\3\14\2\0\1\6\2\0\1\6\2\0" +
+ "\1\6\1\14\11\0\5\14\5\0\1\6\11\14\1\113" +
+ "\1\0\23\14\1\u013f\6\14\2\0\3\14\2\0\1\6" +
+ "\2\0\1\6\2\0\1\6\1\14\11\0\5\14\5\0" +
+ "\1\6\11\14\1\113\1\0\11\14\1\u0144\20\14\2\0" +
+ "\3\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\5\14" +
+ "\1\163\24\14\2\0\3\14\2\0\1\6\2\0\1\6" +
+ "\2\0\1\6\1\14\11\0\5\14\5\0\1\6\11\14" +
+ "\1\113\1\0\23\14\1\315\6\14\2\0\3\14\2\0" +
+ "\1\6\2\0\1\6\2\0\1\6\1\14\11\0\5\14" +
+ "\5\0\1\6\11\14\1\113\1\0\3\14\1\u0145\26\14" +
+ "\2\0\3\14\2\0\1\6\2\0\1\6\2\0\1\6" +
+ "\1\14\11\0\5\14\5\0\1\6\11\14\1\113\1\0" +
+ "\22\14\1\33\7\14\2\0\3\14\2\0\1\6\2\0" +
+ "\1\6\2\0\1\6\1\14\11\0\5\14\5\0\1\6" +
+ "\11\14\1\113\1\0\16\14\1\u0146\13\14\2\0\3\14" +
+ "\2\0\1\6\2\0\1\6\2\0\1\6\1\14\11\0" +
+ "\5\14\5\0\1\6\11\14\1\113\1\0\15\14\1\u0147" +
+ "\14\14\2\0\3\14\2\0\1\6\2\0\1\6\2\0" +
+ "\1\6\1\14\11\0\5\14\5\0\1\6\11\14\1\113" +
+ "\1\0\5\14\1\u0148\24\14\2\0\3\14\2\0\1\6" +
+ "\2\0\1\6\2\0\1\6\1\14\11\0\5\14\5\0" +
+ "\1\6\11\14\1\113\1\0\4\14\1\33\25\14\2\0" +
+ "\3\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\1\14" +
+ "\1\u0149\30\14\2\0\3\14\2\0\1\6\2\0\1\6" +
+ "\2\0\1\6\1\14\11\0\5\14\5\0\1\6\11\14" +
+ "\1\113\1\0\13\14\1\314\16\14\2\0\3\14\2\0" +
+ "\1\6\2\0\1\6\2\0\1\6\1\14\11\0\5\14" +
+ "\5\0\1\6\11\14\1\113\1\0\10\14\1\33\21\14" +
+ "\2\0\2\14\57\0\1\377\61\0\1\u014a\147\0\1\u014b" +
+ "\40\0\1\u014c\162\0\1\u014d\107\0\1\u014e\103\0\1\u014f" +
+ "\71\0\1\u0150\1\0\1\u0151\110\0\1\u0152\16\0\1\u0153" +
+ "\106\0\1\u0154\106\0\1\u0155\111\0\1\u0156\71\0\1\u0157" +
+ "\13\0\1\u0158\103\0\1\u0159\113\0\1\u015a\72\0\1\u015b" +
+ "\126\0\1\u015c\105\0\1\u015d\73\0\1\u0111\61\0\1\u015e" +
+ "\147\0\1\u015f\40\0\1\u0160\155\0\1\u0161\107\0\1\u0162" +
+ "\106\0\1\u0163\103\0\1\u0164\77\0\1\u0165\113\0\1\u011a" +
+ "\61\0\1\u0166\147\0\1\u0167\40\0\1\u0168\65\0\10\110" +
+ "\1\261\13\110\5\u0169\6\110\5\u0169\4\110\1\262\2\110" +
+ "\6\u0169\27\110\1\6\2\0\1\6\2\0\1\6\2\0" +
+ "\2\6\11\0\5\u016a\5\0\1\6\5\u016a\5\6\1\0" +
+ "\1\6\6\u016a\23\6\2\0\2\6\2\266\1\0\11\266" +
+ "\1\116\7\266\5\u016b\6\266\5\u016b\7\266\6\u016b\27\266" +
+ "\1\123\2\0\1\123\2\0\1\123\2\0\2\123\11\0" +
+ "\5\301\5\0\1\123\5\301\5\123\1\0\1\u0123\6\301" +
+ "\23\123\2\0\2\123\1\6\2\0\1\6\2\0\1\6" +
+ "\2\0\2\6\11\0\5\u016c\5\0\1\6\5\u016c\5\6" +
+ "\1\0\1\6\6\u016c\23\6\2\0\2\6\1\14\2\0" +
+ "\1\6\2\0\1\6\2\0\1\6\1\14\11\0\5\14" +
+ "\5\0\1\6\11\14\1\113\1\0\21\14\1\u016d\10\14" +
+ "\2\0\3\14\2\0\1\6\2\0\1\6\2\0\1\6" +
+ "\1\14\11\0\5\14\5\0\1\6\11\14\1\113\1\0" +
+ "\21\14\1\u012a\10\14\2\0\3\14\2\0\1\6\2\0" +
+ "\1\6\2\0\1\6\1\14\11\0\5\14\5\0\1\6" +
+ "\11\14\1\113\1\0\16\14\1\173\13\14\2\0\3\14" +
+ "\2\0\1\6\2\0\1\6\2\0\1\6\1\14\11\0" +
+ "\5\14\5\0\1\6\11\14\1\113\1\0\5\14\1\u016e" +
+ "\24\14\2\0\3\14\2\0\1\6\2\0\1\6\2\0" +
+ "\1\6\1\14\11\0\5\14\5\0\1\6\11\14\1\113" +
+ "\1\0\12\14\1\33\17\14\2\0\3\14\2\0\1\6" +
+ "\2\0\1\6\2\0\1\6\1\14\11\0\5\14\5\0" +
+ "\1\6\11\14\1\113\1\0\23\14\1\33\6\14\2\0" +
+ "\3\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\11\14" +
+ "\1\u016f\20\14\2\0\3\14\2\0\1\6\2\0\1\6" +
+ "\2\0\1\6\1\14\11\0\5\14\5\0\1\6\11\14" +
+ "\1\113\1\0\24\14\1\u0170\5\14\2\0\3\14\2\0" +
+ "\1\6\2\0\1\6\2\0\1\6\1\14\11\0\5\14" +
+ "\5\0\1\6\11\14\1\113\1\0\13\14\1\313\16\14" +
+ "\2\0\3\14\2\0\1\6\2\0\1\6\2\0\1\6" +
+ "\1\14\11\0\5\14\5\0\1\6\11\14\1\113\1\0" +
+ "\21\14\1\u0171\10\14\2\0\3\14\2\0\1\6\2\0" +
+ "\1\6\2\0\1\6\1\14\11\0\5\14\5\0\1\6" +
+ "\11\14\1\113\1\0\15\14\1\u0172\14\14\2\0\3\14" +
+ "\2\0\1\6\2\0\1\6\2\0\1\6\1\14\11\0" +
+ "\5\14\5\0\1\6\11\14\1\113\1\0\13\14\1\u0173" +
+ "\16\14\2\0\3\14\2\0\1\6\2\0\1\6\2\0" +
+ "\1\6\1\14\11\0\5\14\5\0\1\6\11\14\1\113" +
+ "\1\0\23\14\1\371\6\14\2\0\3\14\2\0\1\6" +
+ "\2\0\1\6\2\0\1\6\1\14\11\0\5\14\5\0" +
+ "\1\6\11\14\1\113\1\0\3\14\1\u0174\26\14\2\0" +
+ "\3\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\15\14" +
+ "\1\u0175\14\14\2\0\3\14\2\0\1\6\2\0\1\6" +
+ "\2\0\1\6\1\14\11\0\5\14\5\0\1\6\11\14" +
+ "\1\113\1\0\5\14\1\u0176\24\14\2\0\3\14\2\0" +
+ "\1\6\2\0\1\6\2\0\1\6\1\14\11\0\5\14" +
+ "\5\0\1\6\11\14\1\113\1\0\1\14\1\u0177\30\14" +
+ "\2\0\3\14\2\0\1\6\2\0\1\6\2\0\1\6" +
+ "\1\14\11\0\5\14\5\0\1\6\11\14\1\113\1\0" +
+ "\21\14\1\u0178\10\14\2\0\3\14\2\0\1\6\2\0" +
+ "\1\6\2\0\1\6\1\14\11\0\5\14\5\0\1\6" +
+ "\11\14\1\113\1\0\25\14\1\314\4\14\2\0\2\14" +
+ "\74\0\1\u0179\13\0\1\14\2\0\1\6\2\0\1\6" +
+ "\2\0\1\6\1\14\11\0\5\14\5\0\1\6\11\14" +
+ "\1\113\1\0\1\14\1\u017a\30\14\2\0\3\14\2\0" +
+ "\1\6\2\0\1\6\2\0\1\6\1\14\11\0\5\14" +
+ "\5\0\1\6\11\14\1\113\1\0\11\14\1\u0171\20\14" +
+ "\2\0\3\14\2\0\1\6\2\0\1\6\2\0\1\6" +
+ "\1\14\11\0\5\14\5\0\1\6\11\14\1\113\1\0" +
+ "\1\14\1\u017b\30\14\2\0\3\14\2\0\1\6\2\0" +
+ "\1\6\2\0\1\6\1\14\11\0\5\14\5\0\1\6" +
+ "\11\14\1\113\1\0\5\14\1\u017c\24\14\2\0\3\14" +
+ "\2\0\1\6\2\0\1\6\2\0\1\6\1\14\11\0" +
+ "\5\14\5\0\1\6\11\14\1\113\1\0\11\14\1\u017d" +
+ "\20\14\2\0\3\14\2\0\1\6\2\0\1\6\2\0" +
+ "\1\6\1\14\11\0\5\14\5\0\1\6\11\14\1\113" +
+ "\1\0\11\14\1\u017e\20\14\2\0\3\14\2\0\1\6" +
+ "\2\0\1\6\2\0\1\6\1\14\11\0\5\14\5\0" +
+ "\1\6\11\14\1\113\1\0\21\14\1\372\10\14\2\0" +
+ "\3\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\11\14" +
+ "\1\u017f\20\14\2\0\3\14\2\0\1\6\2\0\1\6" +
+ "\2\0\1\6\1\14\11\0\5\14\5\0\1\6\11\14" +
+ "\1\113\1\0\21\14\1\u0180\10\14\2\0\3\14\2\0" +
+ "\1\6\2\0\1\6\2\0\1\6\1\14\11\0\5\14" +
+ "\5\0\1\6\11\14\1\113\1\0\5\14\1\372\24\14" +
+ "\2\0\3\14\2\0\1\6\2\0\1\6\2\0\1\6" +
+ "\1\14\11\0\5\14\5\0\1\6\11\14\1\113\1\0" +
+ "\3\14\1\u0181\26\14\2\0\3\14\2\0\1\6\2\0" +
+ "\1\6\2\0\1\6\1\14\11\0\5\14\5\0\1\6" +
+ "\11\14\1\113\1\0\10\14\1\u0182\21\14\2\0\3\14" +
+ "\2\0\1\6\2\0\1\6\2\0\1\6\1\14\11\0" +
+ "\5\14\5\0\1\6\11\14\1\113\1\0\26\14\1\u0139" +
+ "\3\14\2\0\3\14\2\0\1\6\2\0\1\6\2\0" +
+ "\1\6\1\14\11\0\5\14\5\0\1\6\11\14\1\113" +
+ "\1\0\22\14\1\u0183\7\14\2\0\3\14\2\0\1\6" +
+ "\2\0\1\6\2\0\1\6\1\14\11\0\5\14\5\0" +
+ "\1\6\11\14\1\113\1\0\23\14\1\217\6\14\2\0" +
+ "\2\14\23\0\1\u0184\115\0\1\u014a\42\0\1\377\22\0" +
+ "\1\u0185\1\0\1\u0185\1\u014c\10\u0185\6\u014c\1\u0185\1\0" +
+ "\1\u0185\1\0\2\u0185\11\u014c\2\0\1\u0185\31\u014c\66\0" +
+ "\1\u0186\104\0\1\u0187\123\0\1\u0188\102\0\1\u0189\100\0" +
+ "\1\u018a\5\0\1\u018b\101\0\1\u018c\107\0\1\u018d\120\0" +
+ "\1\u018e\72\0\1\u018f\132\0\1\u0190\74\0\1\u0191\101\0" +
+ "\1\u0192\111\0\1\u0193\10\0\1\u0194\107\0\1\u0157\107\0" +
+ "\1\u0195\113\0\1\u0196\36\0\1\u0197\115\0\1\u015e\42\0" +
+ "\1\u0111\22\0\1\u0198\1\0\1\u0198\1\u0160\10\u0198\6\u0160" +
+ "\1\u0198\1\0\1\u0198\1\0\2\u0198\11\u0160\2\0\1\u0198" +
+ "\31\u0160\62\0\1\u0199\106\0\1\u019a\114\0\1\u019b\114\0" +
+ "\1\u019c\5\0\1\u019d\77\0\1\u019e\45\0\1\u019f\115\0" +
+ "\1\u0166\42\0\1\u011a\22\0\1\u01a0\1\0\1\u01a0\1\u0168" +
+ "\10\u01a0\6\u0168\1\u01a0\1\0\1\u01a0\1\0\2\u01a0\11\u0168" +
+ "\2\0\1\u01a0\31\u0168\4\0\10\110\1\261\13\110\5\u01a1" +
+ "\6\110\5\u01a1\4\110\1\262\2\110\6\u01a1\27\110\1\6" +
+ "\2\0\1\6\2\0\1\6\2\0\2\6\11\0\5\u01a2" +
+ "\5\0\1\6\5\u01a2\5\6\1\0\1\6\6\u01a2\23\6" +
+ "\2\0\2\6\2\266\1\0\11\266\1\116\7\266\5\u01a3" +
+ "\6\266\5\u01a3\7\266\6\u01a3\27\266\1\6\2\0\1\6" +
+ "\2\0\1\6\2\0\2\6\11\0\5\u01a4\5\0\1\6" +
+ "\5\u01a4\5\6\1\0\1\6\6\u01a4\23\6\2\0\2\6" +
+ "\1\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\1\14" +
+ "\1\u01a5\30\14\2\0\3\14\2\0\1\6\2\0\1\6" +
+ "\2\0\1\6\1\14\11\0\5\14\5\0\1\6\11\14" +
+ "\1\113\1\0\1\14\1\u01a6\30\14\2\0\3\14\2\0" +
+ "\1\6\2\0\1\6\2\0\1\6\1\14\11\0\5\14" +
+ "\5\0\1\6\11\14\1\113\1\0\15\14\1\u01a7\14\14" +
+ "\2\0\3\14\2\0\1\6\2\0\1\6\2\0\1\6" +
+ "\1\14\11\0\5\14\5\0\1\6\11\14\1\113\1\0" +
+ "\13\14\1\u012a\16\14\2\0\3\14\2\0\1\6\2\0" +
+ "\1\6\2\0\1\6\1\14\11\0\5\14\5\0\1\6" +
+ "\11\14\1\113\1\0\23\14\1\365\6\14\2\0\3\14" +
+ "\2\0\1\6\2\0\1\6\2\0\1\6\1\14\11\0" +
+ "\5\14\5\0\1\6\11\14\1\113\1\0\4\14\1\365" +
+ "\25\14\2\0\3\14\2\0\1\6\2\0\1\6\2\0" +
+ "\1\6\1\14\11\0\5\14\5\0\1\6\11\14\1\113" +
+ "\1\0\13\14\1\u01a8\16\14\2\0\3\14\2\0\1\6" +
+ "\2\0\1\6\2\0\1\6\1\14\11\0\5\14\5\0" +
+ "\1\6\11\14\1\113\1\0\14\14\1\u01a9\15\14\2\0" +
+ "\3\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\15\14" +
+ "\1\u01aa\14\14\2\0\3\14\2\0\1\6\2\0\1\6" +
+ "\2\0\1\6\1\14\11\0\5\14\5\0\1\6\11\14" +
+ "\1\113\1\0\14\14\1\u01ab\15\14\2\0\3\14\2\0" +
+ "\1\6\2\0\1\6\2\0\1\6\1\14\11\0\5\14" +
+ "\5\0\1\6\11\14\1\113\1\0\15\14\1\u01ac\14\14" +
+ "\2\0\3\14\2\0\1\6\2\0\1\6\2\0\1\6" +
+ "\1\14\11\0\5\14\5\0\1\6\11\14\1\113\1\0" +
+ "\6\14\1\u01ad\23\14\2\0\2\14\57\0\1\u01ae\30\0" +
+ "\1\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\7\14" +
+ "\1\314\22\14\2\0\3\14\2\0\1\6\2\0\1\6" +
+ "\2\0\1\6\1\14\11\0\5\14\5\0\1\6\11\14" +
+ "\1\113\1\0\23\14\1\314\6\14\2\0\3\14\2\0" +
+ "\1\6\2\0\1\6\2\0\1\6\1\14\11\0\5\14" +
+ "\5\0\1\6\11\14\1\113\1\0\3\14\1\u01af\26\14" +
+ "\2\0\3\14\2\0\1\6\2\0\1\6\2\0\1\6" +
+ "\1\14\11\0\5\14\5\0\1\6\11\14\1\113\1\0" +
+ "\4\14\1\214\25\14\2\0\3\14\2\0\1\6\2\0" +
+ "\1\6\2\0\1\6\1\14\11\0\5\14\5\0\1\6" +
+ "\11\14\1\113\1\0\3\14\1\33\26\14\2\0\3\14" +
+ "\2\0\1\6\2\0\1\6\2\0\1\6\1\14\11\0" +
+ "\5\14\5\0\1\6\11\14\1\113\1\0\21\14\1\214" +
+ "\10\14\2\0\3\14\2\0\1\6\2\0\1\6\2\0" +
+ "\1\6\1\14\11\0\5\14\5\0\1\6\11\14\1\113" +
+ "\1\0\15\14\1\33\14\14\2\0\3\14\2\0\1\6" +
+ "\2\0\1\6\2\0\1\6\1\14\11\0\5\14\5\0" +
+ "\1\6\11\14\1\113\1\0\23\14\1\u01b0\6\14\2\0" +
+ "\3\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\21\14" +
+ "\1\u01b1\10\14\2\0\3\14\2\0\1\6\2\0\1\6" +
+ "\2\0\1\6\1\14\11\0\5\14\5\0\1\6\11\14" +
+ "\1\113\1\0\11\14\1\u01b2\20\14\2\0\2\14\23\0" +
+ "\1\u014c\154\0\1\u01b3\100\0\1\u01b4\105\0\1\u01b5\121\0" +
+ "\1\u01b6\107\0\1\u01b7\114\0\1\u01b8\112\0\1\u0157\101\0" +
+ "\1\u01b9\101\0\1\u01ba\110\0\1\u0157\114\0\1\u01bb\67\0" +
+ "\1\u01bc\113\0\1\u0157\103\0\1\u01bd\134\0\1\u01be\102\0" +
+ "\1\u01bf\77\0\1\u01c0\47\0\1\u0160\143\0\1\u01c1\76\0" +
+ "\1\u01c2\120\0\1\u01c3\114\0\1\u01c1\102\0\1\u01c4\126\0" +
+ "\1\u0199\34\0\1\u0168\64\0\10\110\1\261\13\110\5\107" +
+ "\6\110\5\107\4\110\1\262\2\110\6\107\27\110\1\6" +
+ "\2\0\1\6\2\0\1\6\2\0\2\6\11\0\5\14" +
+ "\5\0\1\6\5\14\5\6\1\0\1\6\6\14\23\6" +
+ "\2\0\2\6\2\266\1\0\11\266\1\116\7\266\5\114" +
+ "\6\266\5\114\7\266\6\114\27\266\1\6\2\0\1\6" +
+ "\2\0\1\6\2\0\2\6\11\0\5\u01c5\5\0\1\6" +
+ "\5\u01c5\5\6\1\0\1\6\6\u01c5\23\6\2\0\2\6" +
+ "\1\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\3\14" +
+ "\1\u012a\26\14\2\0\3\14\2\0\1\6\2\0\1\6" +
+ "\2\0\1\6\1\14\11\0\5\14\5\0\1\6\11\14" +
+ "\1\113\1\0\15\14\1\371\14\14\2\0\3\14\2\0" +
+ "\1\6\2\0\1\6\2\0\1\6\1\14\11\0\5\14" +
+ "\5\0\1\6\11\14\1\113\1\0\24\14\1\314\5\14" +
+ "\2\0\3\14\2\0\1\6\2\0\1\6\2\0\1\6" +
+ "\1\14\11\0\5\14\5\0\1\6\11\14\1\113\1\0" +
+ "\30\14\1\33\1\14\2\0\3\14\2\0\1\6\2\0" +
+ "\1\6\2\0\1\6\1\14\11\0\5\14\5\0\1\6" +
+ "\11\14\1\113\1\0\17\14\1\u01c6\12\14\2\0\3\14" +
+ "\2\0\1\6\2\0\1\6\2\0\1\6\1\14\11\0" +
+ "\5\14\5\0\1\6\11\14\1\113\1\0\24\14\1\175" +
+ "\5\14\2\0\3\14\2\0\1\6\2\0\1\6\2\0" +
+ "\1\6\1\14\11\0\5\14\5\0\1\6\11\14\1\113" +
+ "\1\0\5\14\1\u01c7\24\14\2\0\3\14\2\0\1\6" +
+ "\2\0\1\6\2\0\1\6\1\14\11\0\5\14\5\0" +
+ "\1\6\11\14\1\113\1\0\3\14\1\u01c8\26\14\2\0" +
+ "\3\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\1\14" +
+ "\1\u01c9\30\14\2\0\2\14\53\0\1\u01ca\34\0\1\14" +
+ "\2\0\1\6\2\0\1\6\2\0\1\6\1\14\11\0" +
+ "\5\14\5\0\1\6\11\14\1\113\1\0\23\14\1\u0143" +
+ "\6\14\2\0\3\14\2\0\1\6\2\0\1\6\2\0" +
+ "\1\6\1\14\11\0\5\14\5\0\1\6\11\14\1\113" +
+ "\1\0\6\14\1\u01cb\23\14\2\0\3\14\2\0\1\6" +
+ "\2\0\1\6\2\0\1\6\1\14\11\0\5\14\5\0" +
+ "\1\6\11\14\1\113\1\0\16\14\1\u01cc\13\14\2\0" +
+ "\3\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\5\14" +
+ "\1\u01cd\15\14\1\342\6\14\2\0\2\14\73\0\1\u0157" +
+ "\104\0\1\u01ce\74\0\1\u01cf\117\0\1\u0192\117\0\1\u0196" +
+ "\70\0\1\u0192\120\0\1\u01d0\77\0\1\u01d1\117\0\1\u0157" +
+ "\105\0\1\u01d2\100\0\1\u01d3\125\0\1\u0157\76\0\1\u01d0" +
+ "\114\0\1\u01bb\17\0\105\u01c1\1\u0157\2\u01c1\70\0\1\u01d4" +
+ "\112\0\1\u01d5\107\0\1\u01d6\14\0\1\6\2\0\1\6" +
+ "\2\0\1\6\2\0\2\6\11\0\5\137\5\0\1\6" +
+ "\5\137\5\6\1\0\1\6\6\137\23\6\2\0\2\6" +
+ "\1\14\2\0\1\6\2\0\1\6\2\0\1\6\1\14" +
+ "\11\0\5\14\5\0\1\6\11\14\1\113\1\0\5\14" +
+ "\1\332\1\14\1\333\3\14\1\333\1\14\1\314\14\14" +
+ "\2\0\3\14\2\0\1\6\2\0\1\6\2\0\1\6" +
+ "\1\14\11\0\5\14\5\0\1\6\11\14\1\113\1\0" +
+ "\15\14\1\u0171\14\14\2\0\3\14\2\0\1\6\2\0" +
+ "\1\6\2\0\1\6\1\14\11\0\5\14\5\0\1\6" +
+ "\11\14\1\113\1\0\5\14\1\u01d7\24\14\2\0\3\14" +
+ "\2\0\1\6\2\0\1\6\2\0\1\6\1\14\11\0" +
+ "\5\14\5\0\1\6\11\14\1\113\1\0\3\14\1\314" +
+ "\26\14\2\0\2\14\65\0\1\u01d8\22\0\1\14\2\0" +
+ "\1\6\2\0\1\6\2\0\1\6\1\14\11\0\5\14" +
+ "\5\0\1\6\11\14\1\113\1\0\17\14\1\33\12\14" +
+ "\2\0\3\14\2\0\1\6\2\0\1\6\2\0\1\6" +
+ "\1\14\11\0\5\14\5\0\1\6\11\14\1\113\1\0" +
+ "\15\14\1\u01d9\14\14\2\0\3\14\2\0\1\6\2\0" +
+ "\1\6\2\0\1\6\1\14\11\0\5\14\5\0\1\6" +
+ "\11\14\1\113\1\0\15\14\1\u012a\14\14\2\0\2\14" +
+ "\73\0\1\u01da\67\0\1\u01db\107\0\1\u01dc\131\0\1\u0192" +
+ "\53\0\1\u01dd\1\0\1\u01de\140\0\1\u01df\103\0\1\u01e0" +
+ "\102\0\1\u01e1\77\0\1\u01e2\34\0\1\14\2\0\1\6" +
+ "\2\0\1\6\2\0\1\6\1\14\11\0\5\14\5\0" +
+ "\1\6\11\14\1\113\1\0\16\14\1\u01e3\13\14\2\0" +
+ "\2\14\57\0\1\u01e4\30\0\1\14\2\0\1\6\2\0" +
+ "\1\6\2\0\1\6\1\14\11\0\5\14\5\0\1\6" +
+ "\11\14\1\113\1\0\11\14\1\u01e5\20\14\2\0\2\14" +
+ "\102\0\1\u0157\102\0\1\u01e6\77\0\1\u0157\75\0\1\u01e7" +
+ "\117\0\1\u01e8\77\0\1\u01e9\131\0\1\u01c1\107\0\1\u01ea" +
+ "\77\0\1\u01c1\22\0\1\14\2\0\1\6\2\0\1\6" +
+ "\2\0\1\6\1\14\11\0\5\14\5\0\1\6\11\14" +
+ "\1\113\1\0\6\14\1\33\23\14\2\0\2\14\56\0" +
+ "\1\u01eb\31\0\1\14\2\0\1\6\2\0\1\6\2\0" +
+ "\1\6\1\14\11\0\5\14\5\0\1\6\11\14\1\113" +
+ "\1\0\31\14\1\u0143\2\0\2\14\57\0\1\u01ec\125\0" +
+ "\1\u01ed\71\0\1\u01ee\110\0\1\u01ef\70\0\1\u01f0\124\0" +
+ "\1\u0157\104\0\1\u0157\121\0\1\u01ec\101\0\1\u01f1\120\0" +
+ "\1\u01f2\114\0\1\u01da\67\0\1\u01c1\32\0";
+
+ private static int[] zzUnpacktrans() {
+ int[] result = new int[33408];
+ int offset = 0;
+ offset = zzUnpacktrans(ZZ_TRANS_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpacktrans(String packed, int offset, int[] result) {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.length();
+ while (i < l) {
+ int count = packed.charAt(i++);
+ int value = packed.charAt(i++);
+ value--;
+ do result[j++] = value; while (--count > 0);
+ }
+ return j;
+ }
+
+
+ /* error codes */
+ private static final int ZZ_UNKNOWN_ERROR = 0;
+ private static final int ZZ_NO_MATCH = 1;
+ private static final int ZZ_PUSHBACK_2BIG = 2;
+
+ /* error messages for the codes above */
+ private static final String[] ZZ_ERROR_MSG = {
+ "Unknown internal scanner error",
+ "Error: could not match input",
+ "Error: pushback value was too large"
+ };
+
+ /**
+ * ZZ_ATTRIBUTE[aState] contains the attributes of state {@code aState}
+ */
+ private static final int[] ZZ_ATTRIBUTE = zzUnpackAttribute();
+
+ private static final String ZZ_ATTRIBUTE_PACKED_0 =
+ "\4\0\3\1\1\11\6\1\1\11\1\1\1\11\5\1" +
+ "\1\11\30\1\1\11\5\1\1\11\10\1\1\11\4\1" +
+ "\1\11\10\1\1\0\1\11\3\1\1\11\12\1\1\0" +
+ "\63\1\1\11\4\0\1\11\1\0\1\11\26\0\3\11" +
+ "\1\1\1\11\3\1\1\11\7\1\1\0\76\1\37\0" +
+ "\1\11\3\1\1\11\26\1\1\0\21\1\2\0\1\1" +
+ "\12\0\1\11\10\0\1\1\7\0\21\1\1\0\12\1" +
+ "\35\0\15\1\1\0\4\1\22\0\5\1\1\0\3\1" +
+ "\4\0\1\1\4\0\1\1\1\0\1\1\11\0\1\1" +
+ "\1\0\1\1\5\0\1\11\7\0";
+
+ private static int[] zzUnpackAttribute() {
+ int[] result = new int[498];
+ int offset = 0;
+ offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
+ return result;
+ }
+
+ private static int zzUnpackAttribute(String packed, int offset, int[] result) {
+ int i = 0; /* index in packed string */
+ int j = offset; /* index in unpacked array */
+ int l = packed.length();
+ while (i < l) {
+ int count = packed.charAt(i++);
+ int value = packed.charAt(i++);
+ do result[j++] = value; while (--count > 0);
+ }
+ return j;
+ }
+
+ /**
+ * the input device
+ */
+ private java.io.Reader zzReader;
+
+ /**
+ * the current state of the DFA
+ */
+ private int zzState;
+
+ /**
+ * the current lexical state
+ */
+ private int zzLexicalState = YYINITIAL;
+
+ /**
+ * this buffer contains the current text to be matched and is
+ * the source of the yytext() string
+ */
+ private char[] zzBuffer;
+
+ /**
+ * the textposition at the last accepting state
+ */
+ private int zzMarkedPos;
+
+ /**
+ * the current text position in the buffer
+ */
+ private int zzCurrentPos;
+
+ /**
+ * startRead marks the beginning of the yytext() string in the buffer
+ */
+ private int zzStartRead;
+
+ /**
+ * endRead marks the last character in the buffer, that has been read
+ * from input
+ */
+ private int zzEndRead;
+
+ /**
+ * zzAtEOF == true <=> the scanner is at the EOF
+ */
+ private boolean zzAtEOF;
+
+ /**
+ * Number of newlines encountered up to the start of the matched text.
+ */
+ @SuppressWarnings("unused")
+ private int yyline;
+
+ /**
+ * Number of characters from the last newline up to the start of the matched text.
+ */
+ @SuppressWarnings("unused")
+ protected int yycolumn;
+
+ /**
+ * Number of characters up to the start of the matched text.
+ */
+ @SuppressWarnings("unused")
+ private long yychar;
+
+ /**
+ * Whether the scanner is currently at the beginning of a line.
+ */
+ @SuppressWarnings("unused")
+ private boolean zzAtBOL = true;
+
+ /**
+ * Whether the user-EOF-code has already been executed.
+ */
+ @SuppressWarnings("unused")
+ private boolean zzEOFDone;
+
+ /* user code: */
+ public JavaBytecodeTokenMaker() {
+
+ }
+
+ private void addHyperlinkToken(int start, int end, int tokenType) {
+ int so = start + offsetShift;
+ addToken(zzBuffer, start, end, tokenType, so, true);
+ }
+
+ private void addToken(int tokenType) {
+ addToken(zzStartRead, zzMarkedPos - 1, tokenType);
+ }
+
+ private void addToken(int start, int end, int tokenType) {
+ int so = start + offsetShift;
+ addToken(zzBuffer, start, end, tokenType, so, false);
+ }
+
+ @Override
+ public void addToken(char[] array, int start, int end, int tokenType, int startOffset, boolean hyperlink) {
+ super.addToken(array, start, end, tokenType, startOffset, hyperlink);
+ zzStartRead = zzMarkedPos;
+ }
+
+ @Override
+ public String[] getLineCommentStartAndEnd(int languageIndex) {
+ return new String[]{"//", null};
+ }
+
+ public Token getTokenList(Segment text, int initialTokenType, int startOffset) {
+ resetTokenList();
+ this.offsetShift = -text.offset + startOffset;
+
+ // Start off in the proper state.
+ int state;
+ switch (initialTokenType) {
+ case TokenTypes.COMMENT_MULTILINE:
+ state = MLC;
+ start = text.offset;
+ break;
+ case TokenTypes.COMMENT_DOCUMENTATION:
+ state = DOCCOMMENT;
+ start = text.offset;
+ break;
+ case TokenTypes.LITERAL_STRING_DOUBLE_QUOTE:
+ state = TEXT_BLOCK;
+ start = text.offset;
+ break;
+ default:
+ state = YYINITIAL;
+ }
+
+ s = text;
+ try {
+ yyreset(zzReader);
+ yybegin(state);
+ return yylex();
+ } catch (IOException ioe) {
+ ioe.printStackTrace();
+ return new TokenImpl();
+ }
+
+ }
+
+ /**
+ * Refills the input buffer.
+ *
+ * @return true
if EOF was reached, otherwise
+ * false
.
+ */
+ private boolean zzRefill() {
+ return zzCurrentPos >= s.offset + s.count;
+ }
+
+
+ /**
+ * Resets the scanner to read from a new input stream.
+ * Does not close the old reader.
+ *
+ * All internal variables are reset, the old input stream
+ * cannot be reused (internal buffer is discarded and lost).
+ * Lexical state is set to YY_INITIAL.
+ *
+ * @param reader the new input stream
+ */
+ public final void yyreset(Reader reader) {
+ // 's' has been updated.
+ zzBuffer = s.array;
+ /*
+ * We replaced the line below with the two below it because zzRefill
+ * no longer "refills" the buffer (since the way we do it, it's always
+ * "full" the first time through, since it points to the segment's
+ * array). So, we assign zzEndRead here.
+ */
+ //zzStartRead = zzEndRead = s.offset;
+ zzStartRead = s.offset;
+ zzEndRead = zzStartRead + s.count - 1;
+ zzCurrentPos = zzMarkedPos = s.offset;
+ zzLexicalState = YYINITIAL;
+ zzReader = reader;
+ zzAtBOL = true;
+ zzAtEOF = false;
+ }
+
+
+ /**
+ * Creates a new scanner
+ *
+ * @param in the java.io.Reader to read input from.
+ */
+ public JavaBytecodeTokenMaker(java.io.Reader in) {
+ this.zzReader = in;
+ }
+
+
+ /**
+ * Returns the maximum size of the scanner buffer, which limits the size of tokens.
+ */
+ private int zzMaxBufferLen() {
+ return Integer.MAX_VALUE;
+ }
+
+ /**
+ * Whether the scanner buffer can grow to accommodate a larger token.
+ */
+ private boolean zzCanGrow() {
+ return true;
+ }
+
+ /**
+ * Translates raw input code points to DFA table row
+ */
+ private static int zzCMap(int input) {
+ int offset = input & 255;
+ return offset == input ? ZZ_CMAP_BLOCKS[offset] : ZZ_CMAP_BLOCKS[ZZ_CMAP_TOP[input >> 8] | offset];
+ }
+
+ public final int getTokenStart() {
+ return zzStartRead;
+ }
+
+ public final int getTokenEnd() {
+ return getTokenStart() + yylength();
+ }
+
+ public void reset(char[] buffer, int start, int end, int initialState) {
+ zzBuffer = buffer;
+ zzCurrentPos = zzMarkedPos = zzStartRead = start;
+ zzAtEOF = false;
+ zzAtBOL = true;
+ zzEndRead = end;
+ yybegin(initialState);
+ }
+
+
+ /**
+ * Returns the current lexical state.
+ */
+ public final int yystate() {
+ return zzLexicalState;
+ }
+
+
+ /**
+ * Enters a new lexical state
+ *
+ * @param newState the new lexical state
+ */
+ public final void yybegin(int newState) {
+ zzLexicalState = newState;
+ }
+
+ @Override
+ public void yyclose() throws IOException {
+ zzAtEOF = true; /* indicate end of file */
+ zzEndRead = zzStartRead; /* invalidate buffer */
+
+ if (zzReader != null)
+ zzReader.close();
+ }
+
+
+ /**
+ * Returns the text matched by the current regular expression.
+ */
+ public final String yytext() {
+ return new String(zzBuffer, zzStartRead, zzMarkedPos - zzStartRead);
+ }
+
+
+ /**
+ * Returns the character at position {@code pos} from the
+ * matched text.
+ *
+ * It is equivalent to yytext().charAt(pos), but faster
+ *
+ * @param pos the position of the character to fetch.
+ * A value from 0 to yylength()-1.
+ * @return the character at position pos
+ */
+ public final char yycharat(int pos) {
+ return zzBuffer[zzStartRead + pos];
+ }
+
+
+ /**
+ * Returns the length of the matched text region.
+ */
+ public final int yylength() {
+ return zzMarkedPos - zzStartRead;
+ }
+
+
+ /**
+ * Reports an error that occurred while scanning.
+ *
+ * In a wellformed scanner (no or only correct usage of
+ * yypushback(int) and a match-all fallback rule) this method
+ * will only be called with things that "Can't Possibly Happen".
+ * If this method is called, something is seriously wrong
+ * (e.g. a JFlex bug producing a faulty scanner etc.).
+ *
+ * Usual syntax/scanner level error handling should be done
+ * in error fallback rules.
+ *
+ * @param errorCode the code of the errormessage to display
+ */
+ private void zzScanError(int errorCode) {
+ String message;
+ try {
+ message = ZZ_ERROR_MSG[errorCode];
+ } catch (ArrayIndexOutOfBoundsException e) {
+ message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
+ }
+
+ throw new Error(message);
+ }
+
+
+ /**
+ * Pushes the specified amount of characters back into the input stream.
+ *
+ * They will be read again by then next call of the scanning method
+ *
+ * @param number the number of characters to be read again.
+ * This number must not be greater than yylength()!
+ */
+ public void yypushback(int number) {
+ if (number > yylength())
+ zzScanError(ZZ_PUSHBACK_2BIG);
+
+ zzMarkedPos -= number;
+ }
+
+
+ /**
+ * Resumes scanning until the next regular expression is matched,
+ * the end of input is encountered or an I/O-Error occurs.
+ *
+ * @return the next token
+ * @throws java.io.IOException if any I/O-Error occurs
+ */
+ public org.fife.ui.rsyntaxtextarea.Token yylex() throws java.io.IOException {
+ int zzInput;
+ int zzAction;
+
+ // cached fields:
+ int zzCurrentPosL;
+ int zzMarkedPosL;
+ int zzEndReadL = zzEndRead;
+ char[] zzBufferL = zzBuffer;
+
+ int[] zzTransL = ZZ_TRANS;
+ int[] zzRowMapL = ZZ_ROWMAP;
+ int[] zzAttrL = ZZ_ATTRIBUTE;
+
+ while (true) {
+ zzMarkedPosL = zzMarkedPos;
+
+ zzAction = -1;
+
+ zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
+
+ zzState = ZZ_LEXSTATE[zzLexicalState];
+
+ // set up zzAction for empty match case:
+ int zzAttributes = zzAttrL[zzState];
+ if ((zzAttributes & 1) == 1) {
+ zzAction = zzState;
+ }
+
+
+ zzForAction:
+ {
+ while (true) {
+
+ if (zzCurrentPosL < zzEndReadL) {
+ zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL);
+ zzCurrentPosL += Character.charCount(zzInput);
+ } else if (zzAtEOF) {
+ zzInput = YYEOF;
+ break zzForAction;
+ } else {
+ // store back cached positions
+ zzCurrentPos = zzCurrentPosL;
+ zzMarkedPos = zzMarkedPosL;
+ boolean eof = zzRefill();
+ // get translated positions and possibly new buffer
+ zzCurrentPosL = zzCurrentPos;
+ zzMarkedPosL = zzMarkedPos;
+ zzBufferL = zzBuffer;
+ zzEndReadL = zzEndRead;
+ if (eof) {
+ zzInput = YYEOF;
+ break zzForAction;
+ } else {
+ zzInput = Character.codePointAt(zzBufferL, zzCurrentPosL);
+ zzCurrentPosL += Character.charCount(zzInput);
+ }
+ }
+ int zzNext = zzTransL[zzRowMapL[zzState] + zzCMap(zzInput)];
+ if (zzNext == -1) break zzForAction;
+ zzState = zzNext;
+
+ zzAttributes = zzAttrL[zzState];
+ if ((zzAttributes & 1) == 1) {
+ zzAction = zzState;
+ zzMarkedPosL = zzCurrentPosL;
+ if ((zzAttributes & 8) == 8) break zzForAction;
+ }
+
+ }
+ }
+
+ // store back cached position
+ zzMarkedPos = zzMarkedPosL;
+
+ if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
+ zzAtEOF = true;
+ switch (zzLexicalState) {
+ case YYINITIAL: {
+ addNullToken();
+ return firstToken;
+ } // fall though
+ case 499:
+ break;
+ case MLC: {
+ addToken(start, zzStartRead - 1, TokenTypes.COMMENT_MULTILINE);
+ return firstToken;
+ } // fall though
+ case 500:
+ break;
+ case DOCCOMMENT: {
+ yybegin(YYINITIAL);
+ addToken(start, zzEndRead, TokenTypes.COMMENT_DOCUMENTATION);
+ return firstToken;
+ } // fall though
+ case 501:
+ break;
+ case EOL_COMMENT: {
+ addToken(start, zzStartRead - 1, TokenTypes.COMMENT_EOL);
+ addNullToken();
+ return firstToken;
+ } // fall though
+ case 502:
+ break;
+ case TEXT_BLOCK: {
+ addToken(start, zzStartRead - 1, TokenTypes.LITERAL_STRING_DOUBLE_QUOTE);
+ return firstToken;
+ } // fall though
+ case 503:
+ break;
+ default:
+ return null;
+ }
+ } else {
+ switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
+ case 1: {
+ }
+ // fall through
+ case 40:
+ break;
+ case 2: {
+ addToken(TokenTypes.ERROR_IDENTIFIER);
+ }
+ // fall through
+ case 41:
+ break;
+ case 3: {
+ addToken(TokenTypes.WHITESPACE);
+ }
+ // fall through
+ case 42:
+ break;
+ case 4: {
+ addNullToken();
+ return firstToken;
+ }
+ // fall through
+ case 43:
+ break;
+ case 5: {
+ addToken(TokenTypes.OPERATOR);
+ }
+ // fall through
+ case 44:
+ break;
+ case 6: {
+ addToken(TokenTypes.ERROR_STRING_DOUBLE);
+ addNullToken();
+ return firstToken;
+ }
+ // fall through
+ case 45:
+ break;
+ case 7: {
+ addToken(TokenTypes.IDENTIFIER);
+ }
+ // fall through
+ case 46:
+ break;
+ case 8: {
+ addToken(TokenTypes.ERROR_CHAR);
+ addNullToken();
+ return firstToken;
+ }
+ // fall through
+ case 47:
+ break;
+ case 9: {
+ addToken(TokenTypes.SEPARATOR);
+ }
+ // fall through
+ case 48:
+ break;
+ case 10: {
+ addToken(TokenTypes.LITERAL_NUMBER_DECIMAL_INT);
+ }
+ // fall through
+ case 49:
+ break;
+ case 11: {
+ addToken(TokenTypes.ANNOTATION);
+ }
+ // fall through
+ case 50:
+ break;
+ case 12: {
+ addToken(TokenTypes.RESERVED_WORD);
+ }
+ // fall through
+ case 51:
+ break;
+ case 13: {
+ addToken(start, zzStartRead - 1, TokenTypes.COMMENT_MULTILINE);
+ return firstToken;
+ }
+ // fall through
+ case 52:
+ break;
+ case 14: {
+ addToken(start, zzStartRead - 1, TokenTypes.COMMENT_DOCUMENTATION);
+ return firstToken;
+ }
+ // fall through
+ case 53:
+ break;
+ case 15: {
+ addToken(start, zzStartRead - 1, TokenTypes.COMMENT_EOL);
+ addNullToken();
+ return firstToken;
+ }
+ // fall through
+ case 54:
+ break;
+ case 16: {
+ addToken(start, zzStartRead - 1, TokenTypes.LITERAL_STRING_DOUBLE_QUOTE);
+ return firstToken;
+ }
+ // fall through
+ case 55:
+ break;
+ case 17: { /* Skip escaped chars, handles case: '\"""'. */
+ }
+ // fall through
+ case 56:
+ break;
+ case 18: {
+ addToken(TokenTypes.LITERAL_STRING_DOUBLE_QUOTE);
+ }
+ // fall through
+ case 57:
+ break;
+ case 19: {
+ addToken(TokenTypes.ERROR_CHAR);
+ }
+ // fall through
+ case 58:
+ break;
+ case 20: {
+ addToken(TokenTypes.LITERAL_NUMBER_FLOAT);
+ }
+ // fall through
+ case 59:
+ break;
+ case 21: {
+ start = zzMarkedPos - 2;
+ yybegin(MLC);
+ }
+ // fall through
+ case 60:
+ break;
+ case 22: {
+ start = zzMarkedPos - 2;
+ yybegin(EOL_COMMENT);
+ }
+ // fall through
+ case 61:
+ break;
+ case 23: {
+ addToken(TokenTypes.ERROR_NUMBER_FORMAT);
+ }
+ // fall through
+ case 62:
+ break;
+ case 24: {
+ addToken(TokenTypes.LITERAL_NUMBER_HEXADECIMAL);
+ }
+ // fall through
+ case 63:
+ break;
+ case 25: {
+ yybegin(YYINITIAL);
+ addToken(start, zzStartRead + 1, TokenTypes.COMMENT_MULTILINE);
+ }
+ // fall through
+ case 64:
+ break;
+ case 26: {
+ yybegin(YYINITIAL);
+ addToken(start, zzStartRead + 1, TokenTypes.COMMENT_DOCUMENTATION);
+ }
+ // fall through
+ case 65:
+ break;
+ case 27: {
+ int temp = zzStartRead;
+ addToken(start, zzStartRead - 1, TokenTypes.COMMENT_DOCUMENTATION);
+ addToken(temp, zzMarkedPos - 1, TokenTypes.COMMENT_MARKUP);
+ start = zzMarkedPos;
+ }
+ // fall through
+ case 66:
+ break;
+ case 28: {
+ addToken(TokenTypes.ERROR_STRING_DOUBLE);
+ }
+ // fall through
+ case 67:
+ break;
+ case 29: {
+ start = zzMarkedPos - 3;
+ yybegin(TEXT_BLOCK);
+ }
+ // fall through
+ case 68:
+ break;
+ case 30: {
+ addToken(TokenTypes.LITERAL_CHAR);
+ }
+ // fall through
+ case 69:
+ break;
+ case 31: {
+ start = zzMarkedPos - 3;
+ yybegin(DOCCOMMENT);
+ }
+ // fall through
+ case 70:
+ break;
+ case 32: {
+ addToken(TokenTypes.DATA_TYPE);
+ }
+ // fall through
+ case 71:
+ break;
+ case 33: {
+ yybegin(YYINITIAL);
+ addToken(start, zzStartRead + 2, TokenTypes.LITERAL_STRING_DOUBLE_QUOTE);
+ }
+ // fall through
+ case 72:
+ break;
+ case 34: {
+ addToken(TokenTypes.COMMENT_MULTILINE);
+ }
+ // fall through
+ case 73:
+ break;
+ case 35: {
+ addToken(TokenTypes.LITERAL_BOOLEAN);
+ }
+ // fall through
+ case 74:
+ break;
+ case 36: {
+ int temp = zzStartRead;
+ addToken(start, zzStartRead - 1, TokenTypes.COMMENT_MULTILINE);
+ addHyperlinkToken(temp, zzMarkedPos - 1, TokenTypes.COMMENT_MULTILINE);
+ start = zzMarkedPos;
+ }
+ // fall through
+ case 75:
+ break;
+ case 37: {
+ int temp = zzStartRead;
+ if (start <= zzStartRead - 1) {
+ addToken(start, zzStartRead - 1, TokenTypes.COMMENT_DOCUMENTATION);
+ }
+ addToken(temp, zzMarkedPos - 1, TokenTypes.COMMENT_KEYWORD);
+ start = zzMarkedPos;
+ }
+ // fall through
+ case 76:
+ break;
+ case 38: {
+ int temp = zzStartRead;
+ if (start <= zzStartRead - 1) {
+ addToken(start, zzStartRead - 1, TokenTypes.COMMENT_DOCUMENTATION);
+ }
+ addHyperlinkToken(temp, zzMarkedPos - 1, TokenTypes.COMMENT_DOCUMENTATION);
+ start = zzMarkedPos;
+ }
+ // fall through
+ case 77:
+ break;
+ case 39: {
+ int temp = zzStartRead;
+ addToken(start, zzStartRead - 1, TokenTypes.COMMENT_EOL);
+ addHyperlinkToken(temp, zzMarkedPos - 1, TokenTypes.COMMENT_EOL);
+ start = zzMarkedPos;
+ }
+ // fall through
+ case 78:
+ break;
+ default:
+ zzScanError(ZZ_NO_MATCH);
+ }
+ }
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/the/bytecode/club/bytecodeviewer/gui/util/BytecodeViewPanelUpdater.java b/src/main/java/the/bytecode/club/bytecodeviewer/gui/util/BytecodeViewPanelUpdater.java
index 3d012e730..a9af6ecc6 100644
--- a/src/main/java/the/bytecode/club/bytecodeviewer/gui/util/BytecodeViewPanelUpdater.java
+++ b/src/main/java/the/bytecode/club/bytecodeviewer/gui/util/BytecodeViewPanelUpdater.java
@@ -12,8 +12,11 @@
import javax.swing.event.CaretListener;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
+
+import org.fife.ui.rsyntaxtextarea.AbstractTokenMakerFactory;
import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
import org.fife.ui.rsyntaxtextarea.SyntaxConstants;
+import org.fife.ui.rsyntaxtextarea.TokenMakerFactory;
import org.objectweb.asm.ClassWriter;
import the.bytecode.club.bytecodeviewer.BytecodeViewer;
import the.bytecode.club.bytecodeviewer.Configuration;
@@ -359,7 +362,13 @@ public void buildTextArea(Decompiler decompiler, String decompiledSource)
bytecodeViewPanel.add(updateUpdaterTextArea.getTitleHeader(), BorderLayout.NORTH);
bytecodeViewPanel.textArea = updateUpdaterTextArea;
- bytecodeViewPanel.textArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA);
+ if (bytecodeViewPanel.decompiler != Decompiler.BYTECODE_DISASSEMBLER) {
+ bytecodeViewPanel.textArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA);
+ } else {
+ AbstractTokenMakerFactory tokenMakerFactory = (AbstractTokenMakerFactory) TokenMakerFactory.getDefaultInstance();
+ tokenMakerFactory.putMapping("text/javaBytecode", "the.bytecode.club.bytecodeviewer.decompilers.bytecode.JavaBytecodeTokenMaker");
+ bytecodeViewPanel.textArea.setSyntaxEditingStyle("text/javaBytecode");
+ }
bytecodeViewPanel.textArea.setCodeFoldingEnabled(true);
bytecodeViewPanel.textArea.setAntiAliasingEnabled(true);
bytecodeViewPanel.textArea.setText(decompiledSource);