/* The following code was generated by JFlex 1.4.3 on 1/7/13 7:12 PM */
/*
* Copyright 2011 Axis Data Management Corp.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.admc.jcreole;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.io.InputStream;
import java.io.IOException;
import java.io.File;
import java.util.List;
import java.util.ArrayList;
import org.apache.commons.io.input.CharSequenceReader;
import com.admc.util.Expander;
import com.admc.util.IOUtil;
/**
* This class is a scanner generated by
* <a href="http://www.jflex.de/">JFlex</a> 1.4.3
* on 1/7/13 7:12 PM from the specification file
* <tt>/home/blaine/gradle/jcreole/src/main/java/com/admc/jcreole/creole.flex</tt>
*/
public class CreoleScanner extends beaver.Scanner {
/** 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 JCXBLOCKSTATE = 12;
public static final int DLSTATE = 14;
public static final int LISTATE = 4;
public static final int PSTATE = 2;
public static final int HEADSTATE = 10;
public static final int YYINITIAL = 0;
public static final int DEATH = 16;
public static final int TABLESTATE = 8;
public static final int ESCURL = 6;
/**
* 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, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17
};
/**
* Translates characters to character classes
*/
private static final String ZZ_CMAP_PACKED =
"\11\0\1\2\1\6\1\0\1\1\23\0\1\4\1\57\1\5\1\13"+
"\3\0\1\5\1\20\1\40\1\7\1\70\1\36\1\33\1\5\1\32"+
"\12\3\1\63\1\16\1\10\1\15\1\12\1\5\1\0\1\3\1\74"+
"\1\50\1\47\1\41\1\66\5\3\1\53\1\3\1\24\1\3\1\55"+
"\1\3\1\67\1\64\7\3\1\11\1\37\1\14\1\35\1\34\1\0"+
"\1\45\1\71\1\52\1\30\1\25\1\21\1\3\1\62\1\26\1\73"+
"\1\72\1\51\1\44\1\27\1\22\1\54\1\3\1\42\1\46\1\23"+
"\1\65\2\3\1\31\1\43\1\3\1\60\1\17\1\61\1\56\uff81\0";
/**
* Translates characters to character classes
*/
private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
/**
* Translates DFA states to action switch labels.
*/
private static final int [] ZZ_ACTION = zzUnpackAction();
private static final String ZZ_ACTION_PACKED_0 =
"\20\0\2\1\2\0\3\2\1\3\21\2\1\4\1\5"+
"\1\6\5\2\17\7\1\10\3\7\1\11\1\12\1\7"+
"\1\12\1\13\1\14\1\10\1\15\2\7\1\16\1\7"+
"\1\16\1\7\20\17\1\20\1\21\1\10\2\7\1\10"+
"\1\22\4\7\1\23\4\7\1\15\1\7\1\24\1\7"+
"\1\24\1\25\6\1\5\0\1\26\1\27\2\0\1\30"+
"\1\31\1\32\1\33\1\34\1\35\1\36\1\37\1\10"+
"\1\0\2\10\10\0\1\40\1\41\1\42\1\27\1\43"+
"\1\44\1\0\1\32\1\45\5\0\1\46\2\0\1\47"+
"\1\27\1\50\1\0\1\51\1\52\1\53\1\54\1\55"+
"\1\56\4\0\1\11\1\12\2\0\1\27\2\57\1\60"+
"\1\61\1\57\1\27\2\0\1\16\1\62\1\16\1\27"+
"\1\16\1\27\2\0\1\27\2\63\1\64\1\0\1\65"+
"\1\66\1\0\1\67\1\70\2\0\1\21\2\27\3\0"+
"\1\23\2\27\2\0\1\27\1\52\1\57\1\71\1\72"+
"\1\57\1\0\1\24\1\0\1\27\5\1\5\0\1\73"+
"\2\0\1\74\1\0\1\74\6\0\1\75\6\0\1\76"+
"\4\0\1\77\11\0\1\75\21\0\1\75\37\0\1\100"+
"\17\0\1\75\12\0\13\1\14\0\1\101\1\102\1\0"+
"\1\103\2\0\1\104\15\0\1\102\16\0\1\105\42\0"+
"\1\105\10\0\6\1\3\0\1\106\1\15\1\0\1\107"+
"\3\0\1\110\1\111\1\101\2\0\2\104\11\0\1\112"+
"\1\113\1\0\1\114\12\0\1\115\1\116\31\0\1\117"+
"\14\0\3\1\2\0\1\15\4\0\1\110\1\111\2\0"+
"\1\120\1\121\7\0\1\112\1\113\1\74\1\0\1\104"+
"\6\0\1\122\22\0\1\123\14\0\1\124\2\0\3\1"+
"\1\125\4\0\1\126\3\0\1\127\4\0\1\104\2\0"+
"\1\120\1\130\5\0\1\103\6\0\1\11\30\0\3\1"+
"\13\0\1\120\16\0\1\11\21\0\2\1\12\0\1\131"+
"\35\0\2\1\13\0\1\132\31\0\2\1\1\0\1\133"+
"\34\0\2\1\25\0\2\1\5\0\1\131\2\0\1\134"+
"\13\0\2\1\6\0\1\135\13\0\2\1\6\0\1\136"+
"\7\0\1\137\2\0\2\1\3\0\1\140\6\0\1\141"+
"\1\0\1\1\2\0\1\142\7\0\1\142\1\143\5\0"+
"\1\143\1\0\1\144\3\0\1\144\2\0\1\145\7\0"+
"\1\146\2\0\1\147\4\0\1\146\1\0\1\147";
private static int [] zzUnpackAction() {
int [] result = new int[981];
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\75\0\172\0\267\0\364\0\u0131\0\u016e\0\u01ab"+
"\0\u01e8\0\u0225\0\u0262\0\u029f\0\u02dc\0\u0319\0\u0356\0\u0393"+
"\0\u03d0\0\u040d\0\u044a\0\u0487\0\u04c4\0\u0501\0\u053e\0\u04c4"+
"\0\u057b\0\u05b8\0\u05f5\0\u0632\0\u066f\0\u06ac\0\u06e9\0\u0726"+
"\0\u0763\0\u07a0\0\u07dd\0\u081a\0\u0857\0\u0894\0\u08d1\0\u090e"+
"\0\u094b\0\u0988\0\u04c4\0\u04c4\0\u09c5\0\u0a02\0\u0a3f\0\u0a7c"+
"\0\u0ab9\0\u04c4\0\u0af6\0\u0b33\0\u0b70\0\u0bad\0\u05f5\0\u0632"+
"\0\u0bea\0\u0c27\0\u0c64\0\u0ca1\0\u0cde\0\u0d1b\0\u0d58\0\u0d95"+
"\0\u0dd2\0\u0857\0\u0e0f\0\u0e4c\0\u0e89\0\u0b70\0\u0ec6\0\u0bea"+
"\0\u04c4\0\u04c4\0\u0f03\0\u0f40\0\u0f7d\0\u0fba\0\u0ff7\0\u1034"+
"\0\u1071\0\u0a7c\0\u04c4\0\u0af6\0\u0b70\0\u10ae\0\u05f5\0\u0632"+
"\0\u0bea\0\u0c64\0\u0ca1\0\u0cde\0\u0d1b\0\u0d58\0\u0d95\0\u0857"+
"\0\u10eb\0\u1128\0\u1165\0\u11a2\0\u11df\0\u121c\0\u1259\0\u1296"+
"\0\u04c4\0\u12d3\0\u1310\0\u134d\0\u138a\0\u13c7\0\u1404\0\u1441"+
"\0\u147e\0\u14bb\0\u14f8\0\u1535\0\u0b70\0\u1572\0\u0bea\0\u04c4"+
"\0\u15af\0\u15ec\0\u1629\0\u1666\0\u16a3\0\u16e0\0\u044a\0\u171d"+
"\0\u0501\0\u175a\0\u1797\0\u04c4\0\u17d4\0\u1811\0\u184e\0\u04c4"+
"\0\u04c4\0\u188b\0\u04c4\0\u04c4\0\u04c4\0\u04c4\0\u04c4\0\u04c4"+
"\0\u18c8\0\u1905\0\u1942\0\u197f\0\u19bc\0\u0894\0\u19f9\0\u1a36"+
"\0\u1a73\0\u1ab0\0\u1aed\0\u04c4\0\u04c4\0\u04c4\0\u1b2a\0\u04c4"+
"\0\u04c4\0\u1b67\0\u1ba4\0\u04c4\0\u1be1\0\u1c1e\0\u1c5b\0\u1c98"+
"\0\u1cd5\0\u04c4\0\u1d12\0\u1d4f\0\u04c4\0\u1d8c\0\u04c4\0\u1dc9"+
"\0\u04c4\0\u1e06\0\u04c4\0\u04c4\0\u04c4\0\u04c4\0\u1e43\0\u1e80"+
"\0\u1ebd\0\u0e4c\0\u1efa\0\u04c4\0\u1f37\0\u1f74\0\u1fb1\0\u04c4"+
"\0\u1fee\0\u04c4\0\u04c4\0\u202b\0\u2068\0\u0fba\0\u20a5\0\u20e2"+
"\0\u04c4\0\u04c4\0\u211f\0\u215c\0\u2199\0\u10eb\0\u21d6\0\u2213"+
"\0\u04c4\0\u1165\0\u04c4\0\u2250\0\u04c4\0\u04c4\0\u228d\0\u04c4"+
"\0\u04c4\0\u121c\0\u22ca\0\u2307\0\u2344\0\u2381\0\u23be\0\u1310"+
"\0\u134d\0\u23fb\0\u2438\0\u2475\0\u1441\0\u24b2\0\u24ef\0\u252c"+
"\0\u2569\0\u04c4\0\u04c4\0\u25a6\0\u1535\0\u04c4\0\u25e3\0\u2620"+
"\0\u265d\0\u269a\0\u26d7\0\u2714\0\u2751\0\u278e\0\u27cb\0\u2808"+
"\0\u2845\0\u2882\0\u04c4\0\u28bf\0\u28fc\0\u04c4\0\u2939\0\u2976"+
"\0\u29b3\0\u29f0\0\u2a2d\0\u2a6a\0\u2aa7\0\u2ae4\0\u2b21\0\u2b5e"+
"\0\u2b9b\0\u2bd8\0\u2c15\0\u2c52\0\u2c8f\0\u04c4\0\u2ccc\0\u2d09"+
"\0\u2d46\0\u2d83\0\u04c4\0\u2dc0\0\u2dfd\0\u2e3a\0\u2e77\0\u2eb4"+
"\0\u2ef1\0\u2f2e\0\u2f6b\0\u2fa8\0\u2fe5\0\u3022\0\u305f\0\u309c"+
"\0\u30d9\0\u3116\0\u3153\0\u3190\0\u31cd\0\u320a\0\u3247\0\u3284"+
"\0\u2976\0\u32c1\0\u32fe\0\u333b\0\u3378\0\u33b5\0\u33f2\0\u342f"+
"\0\u346c\0\u34a9\0\u1efa\0\u34e6\0\u3523\0\u3560\0\u359d\0\u35da"+
"\0\u3617\0\u3654\0\u3691\0\u36ce\0\u370b\0\u1fee\0\u202b\0\u3748"+
"\0\u3785\0\u37c2\0\u37ff\0\u383c\0\u3879\0\u38b6\0\u38f3\0\u3930"+
"\0\u396d\0\u39aa\0\u39e7\0\u3a24\0\u3a61\0\u3a9e\0\u04c4\0\u3adb"+
"\0\u3b18\0\u3b55\0\u3b92\0\u3bcf\0\u3c0c\0\u3c49\0\u3c86\0\u3cc3"+
"\0\u3d00\0\u3d3d\0\u3d7a\0\u3db7\0\u3df4\0\u3e31\0\u3e6e\0\u2569"+
"\0\u25a6\0\u3eab\0\u3ee8\0\u3f25\0\u3f62\0\u3f9f\0\u3fdc\0\u4019"+
"\0\u4056\0\u4093\0\u40d0\0\u410d\0\u414a\0\u4187\0\u41c4\0\u4201"+
"\0\u423e\0\u427b\0\u42b8\0\u42f5\0\u4332\0\u436f\0\u43ac\0\u43e9"+
"\0\u4426\0\u4463\0\u44a0\0\u44dd\0\u451a\0\u4557\0\u4594\0\u45d1"+
"\0\u460e\0\u04c4\0\u464b\0\u04c4\0\u4688\0\u46c5\0\u4702\0\u473f"+
"\0\u477c\0\u47b9\0\u47f6\0\u4833\0\u4870\0\u48ad\0\u48ea\0\u4927"+
"\0\u4964\0\u49a1\0\u49de\0\u4a1b\0\u4a58\0\u4a95\0\u4ad2\0\u4b0f"+
"\0\u4b4c\0\u4b89\0\u4bc6\0\u4c03\0\u4c40\0\u4c7d\0\u4cba\0\u4cf7"+
"\0\u4d34\0\u4d71\0\u4dae\0\u04c4\0\u4deb\0\u4e28\0\u4e65\0\u4ea2"+
"\0\u4edf\0\u4f1c\0\u4f59\0\u4f96\0\u4fd3\0\u5010\0\u504d\0\u508a"+
"\0\u50c7\0\u5104\0\u5141\0\u517e\0\u51bb\0\u51f8\0\u5235\0\u5272"+
"\0\u52af\0\u52ec\0\u5329\0\u5366\0\u53a3\0\u53e0\0\u541d\0\u545a"+
"\0\u5497\0\u54d4\0\u5511\0\u554e\0\u558b\0\u55c8\0\u4a58\0\u5605"+
"\0\u5642\0\u567f\0\u56bc\0\u56f9\0\u5736\0\u5773\0\u57b0\0\u57ed"+
"\0\u582a\0\u5867\0\u58a4\0\u58e1\0\u591e\0\u595b\0\u5998\0\u59d5"+
"\0\u04c4\0\u5a12\0\u5a4f\0\u04c4\0\u5a8c\0\u5ac9\0\u5b06\0\u5b43"+
"\0\u5b80\0\u04c4\0\u5bbd\0\u5bfa\0\u5c37\0\u04c4\0\u5c74\0\u5cb1"+
"\0\u4a58\0\u5cee\0\u5d2b\0\u5d68\0\u5da5\0\u5de2\0\u5e1f\0\u5e5c"+
"\0\u5e99\0\u5ed6\0\u04c4\0\u5f13\0\u5f50\0\u5f8d\0\u5fca\0\u6007"+
"\0\u6044\0\u6081\0\u60be\0\u60fb\0\u6138\0\u04c4\0\u04c4\0\u6175"+
"\0\u61b2\0\u61ef\0\u622c\0\u6269\0\u62a6\0\u62e3\0\u6320\0\u635d"+
"\0\u639a\0\u63d7\0\u6414\0\u6451\0\u648e\0\u64cb\0\u6508\0\u6545"+
"\0\u6582\0\u65bf\0\u65fc\0\u6639\0\u6676\0\u66b3\0\u66f0\0\u672d"+
"\0\u04c4\0\u676a\0\u67a7\0\u67e4\0\u6821\0\u685e\0\u689b\0\u68d8"+
"\0\u6915\0\u6952\0\u698f\0\u69cc\0\u6a09\0\u6a46\0\u6a83\0\u6ac0"+
"\0\u04c4\0\u6afd\0\u04c4\0\u6b3a\0\u6b77\0\u6bb4\0\u6bf1\0\u04c4"+
"\0\u04c4\0\u6c2e\0\u6c6b\0\u6ca8\0\u04c4\0\u6ce5\0\u6d22\0\u6d5f"+
"\0\u6d9c\0\u6dd9\0\u6e16\0\u6e53\0\u04c4\0\u04c4\0\u5ed6\0\u6e90"+
"\0\u6ecd\0\u6f0a\0\u6f47\0\u6f84\0\u6fc1\0\u6ffe\0\u703b\0\u6175"+
"\0\u7078\0\u70b5\0\u70f2\0\u712f\0\u716c\0\u71a9\0\u71e6\0\u7223"+
"\0\u7260\0\u729d\0\u72da\0\u7317\0\u7354\0\u7391\0\u73ce\0\u740b"+
"\0\u7448\0\u7485\0\u04c4\0\u74c2\0\u74ff\0\u753c\0\u7579\0\u75b6"+
"\0\u75f3\0\u7630\0\u766d\0\u76aa\0\u76e7\0\u7724\0\u7761\0\u04c4"+
"\0\u779e\0\u77db\0\u7818\0\u7855\0\u7892\0\u6afd\0\u78cf\0\u790c"+
"\0\u7949\0\u7986\0\u6c2e\0\u79c3\0\u7a00\0\u7a3d\0\u04c4\0\u7a7a"+
"\0\u7ab7\0\u7af4\0\u7b31\0\u7b6e\0\u7bab\0\u7be8\0\u7c25\0\u6f0a"+
"\0\u7c62\0\u7c9f\0\u7cdc\0\u7d19\0\u7d56\0\u7078\0\u7d93\0\u7dd0"+
"\0\u7e0d\0\u7e4a\0\u7e87\0\u7ec4\0\u04c4\0\u7f01\0\u7f3e\0\u7f7b"+
"\0\u7fb8\0\u7ff5\0\u8032\0\u806f\0\u80ac\0\u80e9\0\u8126\0\u8163"+
"\0\u81a0\0\u81dd\0\u821a\0\u8257\0\u8294\0\u82d1\0\u830e\0\u834b"+
"\0\u8388\0\u83c5\0\u8402\0\u843f\0\u847c\0\u84b9\0\u84f6\0\u8533"+
"\0\u8570\0\u85ad\0\u85ea\0\u8627\0\u5c37\0\u8664\0\u86a1\0\u86de"+
"\0\u871b\0\u8758\0\u8795\0\u87d2\0\u880f\0\u884c\0\u8889\0\u88c6"+
"\0\u8903\0\u8940\0\u897d\0\u89ba\0\u89f7\0\u8a34\0\u8a71\0\u8aae"+
"\0\u8aeb\0\u8b28\0\u7ec4\0\u8b65\0\u8ba2\0\u8bdf\0\u8c1c\0\u8c59"+
"\0\u8c96\0\u8cd3\0\u8d10\0\u8d4d\0\u8d8a\0\u8dc7\0\u8e04\0\u8e41"+
"\0\u8e7e\0\u8ebb\0\u8ef8\0\u8f35\0\u8f72\0\u8faf\0\u8fec\0\u9029"+
"\0\u9066\0\u90a3\0\u90e0\0\u911d\0\u915a\0\u9197\0\u91d4\0\u9211"+
"\0\u924e\0\u6ecd\0\u7b6e\0\u928b\0\u92c8\0\u9305\0\u9342\0\u937f"+
"\0\u93bc\0\u93f9\0\u9436\0\u9473\0\u94b0\0\u94ed\0\u952a\0\u9567"+
"\0\u95a4\0\u95e1\0\u961e\0\u965b\0\u9698\0\u96d5\0\u9712\0\u974f"+
"\0\u978c\0\u97c9\0\u9806\0\u9843\0\u9880\0\u98bd\0\u98fa\0\u9937"+
"\0\u9974\0\u99b1\0\u99ee\0\u9a2b\0\u9a68\0\u9aa5\0\u9ae2\0\u9b1f"+
"\0\u9b5c\0\u9b99\0\u9bd6\0\u04c4\0\u9c13\0\u9c50\0\u9c8d\0\u9cca"+
"\0\u9d07\0\u9d44\0\u9d81\0\u9dbe\0\u9dfb\0\u9e38\0\u9e75\0\u9eb2"+
"\0\u9eef\0\u9f2c\0\u9f69\0\u9fa6\0\u9fe3\0\ua020\0\ua05d\0\ua09a"+
"\0\ua0d7\0\ua114\0\ua151\0\ua18e\0\ua1cb\0\ua208\0\ua245\0\ua282"+
"\0\u04c4\0\ua2bf\0\ua2fc\0\ua339\0\ua376\0\ua3b3\0\ua3f0\0\ua42d"+
"\0\ua46a\0\ua4a7\0\ua4e4\0\ua521\0\ua55e\0\ua59b\0\ua5d8\0\ua615"+
"\0\ua652\0\ua68f\0\ua6cc\0\ua709\0\ua746\0\ua783\0\ua7c0\0\ua7fd"+
"\0\ua83a\0\ua877\0\ua8b4\0\ua8f1\0\ua92e\0\ua96b\0\ua9a8\0\ua9e5"+
"\0\uaa22\0\uaa5f\0\uaa9c\0\uaad9\0\uab16\0\uab53\0\uab90\0\uabcd"+
"\0\uac0a\0\uac47\0\uac84\0\uacc1\0\uacfe\0\uad3b\0\uad78\0\uadb5"+
"\0\uadf2\0\uae2f\0\uae6c\0\uaea9\0\uaee6\0\uaf23\0\uaf60\0\uaf9d"+
"\0\uafda\0\ub017\0\ub054\0\u04c4\0\ub091\0\ub0ce\0\u04c4\0\ub10b"+
"\0\ub148\0\ub185\0\ub1c2\0\ub1ff\0\ub23c\0\ub279\0\ub2b6\0\ub2f3"+
"\0\ub330\0\ub36d\0\ub3aa\0\ub3e7\0\ub424\0\ub461\0\ub49e\0\ub4db"+
"\0\ub518\0\ub555\0\u04c4\0\ub592\0\ub5cf\0\ub60c\0\ub649\0\ub686"+
"\0\ub6c3\0\ub700\0\ub73d\0\ub77a\0\ub7b7\0\ub7f4\0\ub831\0\ub86e"+
"\0\ub8ab\0\ub8e8\0\ub925\0\ub962\0\ub99f\0\ub9dc\0\u04c4\0\uba19"+
"\0\uba56\0\uba93\0\ubad0\0\ubb0d\0\ubb4a\0\ubb87\0\u04c4\0\ubbc4"+
"\0\ubc01\0\ubc3e\0\ubc7b\0\ubcb8\0\ubcf5\0\ubd32\0\u04c4\0\ubd6f"+
"\0\ubdac\0\ubde9\0\ube26\0\ube63\0\ubea0\0\u04c4\0\ubedd\0\ubf1a"+
"\0\ubf57\0\ubf94\0\ubfd1\0\uc00e\0\uc04b\0\uc088\0\uc0c5\0\uc102"+
"\0\uc13f\0\uc17c\0\u04c4\0\uc1b9\0\uc1f6\0\uc233\0\uc270\0\uc2ad"+
"\0\uc2ea\0\u04c4\0\uc327\0\uc364\0\uc3a1\0\uc3de\0\uc41b\0\u04c4"+
"\0\uc458\0\uc495\0\u04c4\0\uc4d2\0\uc50f\0\uc54c\0\uc589\0\uc5c6"+
"\0\uc603\0\uc640\0\uc67d\0\uc6ba\0\uc6f7\0\uc734\0\uc771\0\uc7ae"+
"\0\uc7eb\0\uc828\0\u04c4\0\uc865\0\u04c4";
private static int [] zzUnpackRowMap() {
int [] result = new int[981];
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();
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 =
"\2\25\1\26\1\27\1\26\1\25\1\30\1\31\1\32"+
"\1\33\1\34\1\35\5\25\11\27\1\36\1\37\1\40"+
"\1\41\1\42\1\43\1\25\15\27\1\44\1\25\1\45"+
"\1\25\1\27\1\25\4\27\1\25\4\27\2\25\1\46"+
"\1\27\1\46\1\25\1\30\1\47\1\50\1\33\1\34"+
"\1\51\1\25\1\52\1\53\1\54\1\25\1\55\10\27"+
"\1\36\1\56\1\40\1\41\1\42\1\43\1\25\15\27"+
"\1\57\1\25\1\60\1\25\1\61\1\25\4\27\1\25"+
"\4\27\3\62\1\63\2\62\1\64\1\65\1\66\1\67"+
"\1\70\1\71\5\62\1\72\10\63\1\73\1\74\1\75"+
"\1\76\1\77\1\100\1\62\15\63\1\101\1\62\1\102"+
"\1\62\1\103\1\62\4\63\1\62\4\63\2\62\1\104"+
"\1\63\1\104\1\62\1\105\1\106\1\107\1\67\1\70"+
"\1\110\2\62\1\111\1\112\1\62\1\72\10\63\1\73"+
"\1\74\1\75\1\76\1\77\1\100\1\62\15\63\1\113"+
"\1\62\1\102\1\62\1\103\1\62\4\63\1\62\4\63"+
"\3\62\1\63\2\62\1\114\1\65\1\115\1\67\1\70"+
"\1\71\5\62\1\72\10\63\1\73\1\74\1\75\1\76"+
"\1\77\1\100\1\62\15\63\1\101\1\62\1\102\1\62"+
"\1\103\1\62\4\63\1\62\4\63\2\62\1\116\1\63"+
"\1\116\1\62\1\114\1\117\1\120\1\67\1\70\1\121"+
"\5\62\1\72\10\63\1\73\1\74\1\75\1\76\1\77"+
"\1\100\1\62\15\63\1\113\1\62\1\122\1\62\1\103"+
"\1\62\4\63\1\62\4\63\3\123\1\124\2\123\1\0"+
"\1\125\1\126\1\127\1\130\1\131\5\123\11\124\1\132"+
"\1\133\1\134\1\135\1\136\1\137\1\123\15\124\1\101"+
"\1\123\1\140\1\123\1\124\1\123\4\124\1\123\4\124"+
"\2\123\1\141\1\124\1\141\1\123\1\0\1\125\1\142"+
"\1\127\1\130\1\131\5\123\11\124\1\132\1\133\1\134"+
"\1\135\1\136\1\137\1\123\15\124\1\113\1\123\1\140"+
"\1\123\1\124\1\123\4\124\1\123\4\124\3\62\1\63"+
"\2\62\1\143\1\65\1\115\1\67\1\70\1\71\3\62"+
"\1\144\1\62\1\72\10\63\1\73\1\74\1\75\1\76"+
"\1\77\1\100\1\62\15\63\1\145\1\62\1\102\1\62"+
"\1\103\1\62\4\63\1\62\4\63\2\62\1\146\1\63"+
"\1\146\1\62\1\143\1\65\1\147\1\67\1\70\1\71"+
"\3\62\1\144\1\62\1\72\10\63\1\73\1\74\1\75"+
"\1\76\1\77\1\100\1\62\15\63\1\150\1\62\1\122"+
"\1\62\1\103\1\62\4\63\1\62\4\63\3\62\1\63"+
"\2\62\1\151\1\65\1\152\1\67\1\70\1\71\1\62"+
"\1\153\3\62\1\72\10\63\1\73\1\74\1\75\1\76"+
"\1\77\1\100\1\62\15\63\1\101\1\62\1\102\1\62"+
"\1\103\1\62\4\63\1\62\4\63\2\62\1\154\1\63"+
"\1\154\1\62\1\151\1\65\1\155\1\67\1\70\1\71"+
"\1\62\1\156\3\62\1\72\10\63\1\73\1\74\1\75"+
"\1\76\1\77\1\100\1\62\15\63\1\113\1\62\1\102"+
"\1\62\1\103\1\62\4\63\1\62\4\63\3\62\1\63"+
"\3\62\1\65\1\157\1\67\1\70\1\71\5\62\1\72"+
"\10\63\1\73\1\74\1\75\1\76\1\77\1\100\1\62"+
"\15\63\1\101\1\62\1\102\1\62\1\103\1\62\4\63"+
"\1\62\4\63\2\62\1\160\1\63\1\160\2\62\1\65"+
"\1\161\1\67\1\70\1\71\5\62\1\72\10\63\1\73"+
"\1\162\1\75\1\76\1\77\1\100\1\62\15\63\1\113"+
"\1\62\1\122\1\62\1\103\1\62\4\63\1\62\4\63"+
"\3\62\1\63\2\62\1\163\1\65\1\115\1\67\1\70"+
"\1\71\5\62\1\72\10\63\1\73\1\74\1\75\1\76"+
"\1\77\1\100\1\62\15\63\1\101\1\62\1\102\1\62"+
"\1\103\1\62\4\63\1\62\4\63\2\62\1\164\1\63"+
"\1\164\1\62\1\163\1\165\1\166\1\67\1\70\1\167"+
"\2\62\1\170\2\62\1\72\10\63\1\73\1\74\1\75"+
"\1\76\1\77\1\100\1\62\15\63\1\113\1\62\1\122"+
"\1\62\1\103\1\62\4\63\1\62\4\63\6\171\1\0"+
"\1\171\1\172\1\173\46\171\1\174\16\171\1\175\1\171"+
"\1\175\1\171\1\0\1\171\1\176\1\173\46\171\1\174"+
"\14\171\2\0\1\177\1\0\1\177\102\0\1\200\161\0"+
"\1\201\1\0\1\201\1\0\1\30\107\0\1\202\40\0"+
"\1\203\21\0\1\204\75\0\1\205\75\0\1\206\75\0"+
"\1\207\75\0\1\210\113\0\1\211\75\0\1\212\75\0"+
"\1\213\75\0\1\214\75\0\1\215\75\0\1\216\41\0"+
"\1\217\2\0\6\220\4\0\1\221\10\0\6\220\16\0"+
"\1\222\1\0\1\223\1\220\1\224\72\0\1\225\16\0"+
"\1\226\1\0\1\226\1\0\1\30\1\227\1\230\2\0"+
"\1\231\1\0\1\52\1\53\1\54\13\0\1\232\22\0"+
"\1\233\16\0\7\234\1\204\4\234\1\235\1\236\57\234"+
"\10\0\1\237\64\0\13\240\1\210\1\235\1\241\57\240"+
"\15\0\1\52\100\0\1\202\1\0\1\242\36\0\1\203"+
"\45\0\1\243\45\0\1\217\2\0\1\244\3\220\1\244"+
"\1\220\1\244\1\0\1\244\1\0\1\221\10\0\6\220"+
"\16\0\1\222\1\0\1\223\1\220\1\224\72\0\1\245"+
"\35\0\1\202\1\0\1\246\36\0\1\203\33\0\1\247"+
"\40\0\1\250\14\0\1\251\1\0\1\251\10\0\1\252"+
"\15\0\1\253\24\0\1\254\23\0\1\255\75\0\1\256"+
"\77\0\1\257\102\0\1\247\1\0\1\260\36\0\1\250"+
"\44\0\1\261\75\0\1\262\75\0\1\263\75\0\1\264"+
"\75\0\1\265\75\0\1\266\41\0\1\217\2\0\6\220"+
"\4\0\1\267\10\0\6\220\16\0\1\222\1\0\1\223"+
"\1\220\1\270\33\0\1\247\1\0\1\271\36\0\1\250"+
"\14\0\1\272\1\0\1\272\1\0\1\273\1\274\1\275"+
"\2\0\1\274\2\0\1\111\1\112\36\0\1\233\20\0"+
"\1\276\1\0\1\276\1\0\1\273\6\0\1\252\15\0"+
"\1\253\24\0\1\254\24\0\1\277\70\0\1\217\2\0"+
"\1\244\3\220\1\244\1\220\1\244\1\0\1\244\1\0"+
"\1\267\10\0\6\220\16\0\1\222\1\0\1\223\1\220"+
"\1\270\12\0\2\300\1\301\1\300\1\301\1\300\1\302"+
"\1\303\3\300\1\303\1\300\1\302\1\300\1\302\13\300"+
"\1\304\41\300\10\0\1\305\66\0\1\306\1\0\1\306"+
"\2\0\1\117\1\307\2\0\1\121\42\0\1\233\25\0"+
"\1\310\4\0\1\311\1\312\67\0\1\313\77\0\1\314"+
"\1\311\1\312\67\0\1\315\66\0\1\316\1\0\1\316"+
"\3\0\1\317\45\0\1\233\26\0\1\320\64\0\2\321"+
"\1\322\1\321\1\322\12\321\1\323\55\321\2\0\1\324"+
"\1\0\1\324\1\0\1\325\6\0\1\326\40\0\1\327"+
"\22\0\1\217\1\0\1\330\6\220\2\0\1\331\1\0"+
"\1\267\10\0\6\220\16\0\1\222\1\0\1\223\1\220"+
"\1\270\14\0\1\332\1\0\1\332\3\0\1\333\6\0"+
"\1\334\36\0\1\233\26\0\1\335\70\0\1\217\1\0"+
"\1\330\1\244\3\220\1\244\1\220\1\244\1\0\1\244"+
"\1\0\1\267\10\0\6\220\16\0\1\222\1\0\1\223"+
"\1\220\1\270\22\0\1\336\66\0\1\337\1\0\1\337"+
"\1\0\1\151\6\0\1\340\61\0\1\341\1\0\1\341"+
"\3\0\1\317\4\0\1\342\40\0\1\233\26\0\1\343"+
"\66\0\1\337\1\0\1\337\1\0\1\151\6\0\1\156"+
"\67\0\1\344\66\0\1\345\1\0\1\345\3\0\1\346"+
"\22\0\1\232\22\0\1\233\26\0\1\347\117\0\1\350"+
"\41\0\2\300\1\351\1\300\1\351\1\300\1\352\6\300"+
"\1\352\1\353\1\352\13\300\1\354\41\300\2\0\1\355"+
"\1\0\1\355\2\0\1\356\1\357\2\0\1\356\2\0"+
"\1\170\37\0\1\233\26\0\1\360\64\0\6\171\1\0"+
"\74\171\1\0\1\171\1\361\72\171\1\0\2\171\1\362"+
"\71\171\1\0\51\171\1\363\16\171\1\175\1\171\1\175"+
"\1\171\1\0\1\171\1\364\72\171\1\0\1\171\1\365"+
"\64\171\12\0\1\366\105\0\1\367\74\0\1\370\52\0"+
"\1\371\1\372\1\0\1\372\1\0\1\371\1\0\1\373"+
"\1\374\1\0\1\375\4\0\1\376\1\377\16\0\1\u0100"+
"\3\0\1\u0101\1\u0102\6\0\1\u0103\1\0\1\u0104\1\u0105"+
"\2\376\13\0\14\206\1\u0106\60\206\12\0\1\373\115\0"+
"\1\u0107\64\0\1\u0108\127\0\1\222\76\0\1\u0109\37\0"+
"\1\u010a\51\0\60\u010b\1\u010c\1\u010d\13\u010b\7\234\1\u010e"+
"\4\234\1\235\1\236\57\234\10\0\1\u010f\64\0\13\240"+
"\1\0\1\235\1\241\57\240\33\0\1\u0110\50\0\1\244"+
"\3\0\1\244\1\0\1\244\1\0\1\244\56\0\1\u0111"+
"\1\u0112\1\0\1\u0112\1\0\1\u0111\1\0\1\373\1\374"+
"\1\0\1\375\4\0\1\u0113\1\u0114\1\0\1\u0115\1\0"+
"\1\u0116\1\u0117\11\0\1\u0100\3\0\1\u0118\1\u0102\1\u0119"+
"\5\0\1\u0103\1\0\1\u011a\1\u011b\1\u0113\1\376\67\0"+
"\1\u011c\53\0\1\u011d\41\0\60\u010b\1\u011e\1\u010d\13\u010b"+
"\23\0\1\u011f\74\0\1\u0120\74\0\1\u0121\53\0\1\251"+
"\1\0\1\251\10\0\1\252\15\0\1\253\74\0\1\u0122"+
"\121\0\1\u0123\15\0\1\u0124\1\u0125\1\0\1\u0125\1\0"+
"\1\u0124\1\0\1\373\2\0\1\375\4\0\1\u0126\1\u0127"+
"\4\0\1\u0128\11\0\1\u0129\3\0\1\u012a\1\u012b\10\0"+
"\1\u0104\1\u0105\1\u012c\1\u012d\67\0\1\u012e\53\0\1\u012f"+
"\64\0\1\u0130\74\0\1\u0131\74\0\1\u0132\53\0\1\u0133"+
"\1\0\1\u0133\1\0\1\273\76\0\1\u0134\66\0\1\276"+
"\1\0\1\276\1\0\1\273\6\0\1\252\15\0\1\253"+
"\42\0\1\u0135\1\u0136\1\0\1\u0136\1\0\1\u0135\1\0"+
"\1\373\2\0\1\375\4\0\1\u0126\1\u0137\1\0\1\u0138"+
"\1\0\1\u0139\1\u013a\11\0\1\u0129\3\0\1\u013b\1\u012b"+
"\1\u013c\5\0\1\u013d\1\0\1\u0104\1\u0105\1\u012c\1\u012d"+
"\15\0\1\u013e\1\0\1\u013e\1\0\1\302\1\303\3\0"+
"\1\303\1\0\1\302\1\0\1\302\13\0\1\u013f\74\0"+
"\1\u0140\42\0\1\u0141\1\u0142\1\0\1\u0142\1\0\1\u0141"+
"\1\0\1\373\1\374\1\0\1\375\4\0\1\u0126\1\u0143"+
"\4\0\1\u0128\11\0\1\u0129\4\0\1\u0144\6\0\1\u0103"+
"\1\0\1\u0104\1\u0105\1\u012c\1\u012d\23\0\1\u0145\73\0"+
"\1\310\5\0\1\312\60\0\1\u0146\1\u0147\1\0\1\u0147"+
"\1\0\1\u0146\1\0\1\373\1\374\1\0\1\375\4\0"+
"\1\u0126\1\u0148\1\0\1\u0149\1\0\1\u0139\1\u014a\11\0"+
"\1\u0129\3\0\1\u014b\1\u0144\1\u013c\5\0\1\u0103\1\0"+
"\1\u0104\1\u0105\1\u012c\1\u012d\26\0\1\314\1\0\1\312"+
"\60\0\2\u014c\1\0\1\u014c\1\0\1\u014c\1\0\1\373"+
"\2\0\1\375\24\0\1\u0129\15\0\1\u0104\1\u0105\25\0"+
"\1\u014d\65\0\1\u014c\1\u014e\1\0\1\u014e\1\0\1\u014c"+
"\1\0\1\373\2\0\1\375\11\0\1\u0139\12\0\1\u0129"+
"\5\0\1\u013c\7\0\1\u0104\1\u0105\17\0\1\324\1\0"+
"\1\324\1\0\1\325\103\0\1\u014f\67\0\1\u0150\101\0"+
"\1\326\60\0\1\u0141\1\u0151\1\0\1\u0151\1\0\1\u0141"+
"\1\0\1\373\1\374\1\0\1\375\4\0\1\u0126\1\u0143"+
"\3\0\1\u0139\1\u0128\11\0\1\u0129\4\0\1\u0144\1\u013c"+
"\5\0\1\u0103\1\0\1\u0104\1\u0105\1\u012c\1\u012d\14\0"+
"\1\u0124\1\u0152\1\0\1\u0152\1\0\1\u0124\1\0\1\373"+
"\2\0\1\375\4\0\1\u0126\1\u0143\3\0\1\u0153\1\u0128"+
"\11\0\1\u0129\4\0\1\u012b\10\0\1\u0104\1\u0105\1\u012c"+
"\1\u012d\15\0\1\337\1\0\1\337\1\0\1\151\103\0"+
"\1\342\60\0\1\u0124\1\u0154\1\0\1\u0154\1\0\1\u0124"+
"\1\0\1\373\2\0\1\375\4\0\1\u0126\1\u0143\3\0"+
"\1\u0155\1\u0128\11\0\1\u0129\4\0\1\u012b\1\u013c\7\0"+
"\1\u0104\1\u0105\1\u012c\1\u012d\14\0\1\u0156\1\u0157\1\0"+
"\1\u0157\1\0\1\u0156\1\0\1\373\1\374\1\0\1\375"+
"\1\u0158\3\0\1\u0126\1\u0143\4\0\1\u0128\11\0\1\u0129"+
"\4\0\1\u0144\6\0\1\u0103\1\0\1\u0104\1\u0105\1\u012c"+
"\1\u012d\23\0\1\u0159\65\0\1\u015a\1\u015b\1\0\1\u015b"+
"\1\0\1\u015a\1\0\1\373\1\374\1\0\1\375\1\u0158"+
"\3\0\1\u0126\1\u015c\1\0\1\u0115\1\0\1\u0116\1\u015d"+
"\11\0\1\u0129\3\0\1\u015e\1\u0144\1\u0119\5\0\1\u0103"+
"\1\0\1\u0104\1\u0105\1\u012c\1\u012d\46\0\1\u015f\43\0"+
"\1\u0160\1\0\1\u0160\1\0\1\352\6\0\1\352\1\353"+
"\1\352\13\0\1\u0161\74\0\1\u0162\51\0\1\u0163\65\0"+
"\1\u0164\1\u0165\1\0\1\u0165\1\0\1\u0164\1\0\1\373"+
"\1\374\1\0\1\375\4\0\1\u0126\1\u0166\1\0\1\u0167"+
"\1\0\1\u0139\1\u0168\11\0\1\u0129\3\0\1\u0169\1\u0144"+
"\1\u013c\5\0\1\u0103\1\0\1\u0104\1\u0105\1\u012c\1\u012d"+
"\13\0\1\171\2\361\1\171\1\361\1\171\1\u014c\4\171"+
"\1\u016a\24\171\1\u016b\15\171\1\u016c\1\u016d\15\171\6\362"+
"\1\206\5\362\1\u016e\60\362\6\u016f\1\u010b\51\u016f\1\u0170"+
"\1\u0171\13\u016f\6\171\1\0\1\171\1\u0172\65\171\1\361"+
"\1\365\1\171\1\365\1\171\1\u014c\4\171\1\u016a\11\171"+
"\1\u0173\12\171\1\u016b\5\171\1\u0174\7\171\1\u016c\1\u016d"+
"\15\171\3\0\2\366\4\0\1\u0175\7\0\11\366\1\0"+
"\2\366\4\0\15\366\4\0\1\366\1\0\4\366\1\0"+
"\4\366\54\0\1\u0176\43\0\1\u0177\52\0\2\371\1\0"+
"\1\371\1\0\1\371\2\0\1\374\1\0\1\375\4\0"+
"\1\376\1\377\16\0\1\u0100\3\0\1\u0101\1\u0102\10\0"+
"\1\u0104\1\u0105\2\376\14\0\1\371\1\372\1\0\1\372"+
"\1\0\1\371\2\0\1\374\1\0\1\375\4\0\1\376"+
"\1\377\16\0\1\u0100\3\0\1\u0101\1\u0102\6\0\1\u0103"+
"\1\0\1\u0104\1\u0105\2\376\16\0\2\374\5\0\1\u0178"+
"\6\0\11\374\1\0\2\374\4\0\15\374\4\0\1\374"+
"\1\0\4\374\1\0\4\374\12\375\1\u0179\62\375\22\0"+
"\1\u017a\53\0\2\u0129\1\0\1\u0129\1\0\1\u0129\3\0"+
"\1\u017b\127\0\1\u017c\57\0\1\u017d\106\0\1\u017e\32\0"+
"\12\u0104\1\u017f\62\u0104\12\u0105\1\u0180\62\u0105\14\206\1\u0181"+
"\60\206\33\0\1\u0182\115\0\1\u0183\100\0\1\u0184\37\0"+
"\1\u0185\51\0\61\u010b\1\u010d\13\u010b\61\u010c\1\u0186\13\u010c"+
"\61\u010b\1\u0187\13\u010b\1\0\1\u0188\1\u010f\1\0\1\u010f"+
"\1\0\1\u0188\2\0\1\u0189\6\0\1\u0113\1\u018a\1\0"+
"\1\u0115\1\0\1\u0116\1\u0117\15\0\1\u015e\1\0\1\u0119"+
"\5\0\1\u0103\1\0\1\u011a\1\u011b\1\u0113\47\0\1\u018b"+
"\42\0\2\u0111\1\0\1\u0111\1\0\1\u0111\2\0\1\374"+
"\1\0\1\375\4\0\1\u0113\1\u0114\1\0\1\u0115\2\0"+
"\1\u0117\11\0\1\u0100\3\0\1\u0118\1\u0102\10\0\1\u011a"+
"\1\u011b\1\u0113\1\376\14\0\1\u0111\1\u0112\1\0\1\u0112"+
"\1\0\1\u0111\2\0\1\374\1\0\1\375\4\0\1\u0113"+
"\1\u0114\1\0\1\u0115\1\0\1\u0116\1\u0117\11\0\1\u0100"+
"\3\0\1\u0118\1\u0102\1\u0119\5\0\1\u0103\1\0\1\u011a"+
"\1\u011b\1\u0113\1\376\35\0\1\u018c\74\0\1\u018d\101\0"+
"\1\u018e\74\0\1\u018f\112\0\1\u0190\52\0\1\u0191\51\0"+
"\12\u011a\1\u0192\62\u011a\12\u011b\1\u0193\62\u011b\63\0\1\u0194"+
"\44\0\1\u0195\41\0\6\u010c\1\u0196\52\u010c\1\u0186\13\u010c"+
"\54\0\1\u0197\74\0\1\u0198\43\0\1\u0199\104\0\1\u019a"+
"\121\0\1\u019b\15\0\2\u0124\1\0\1\u0124\1\0\1\u0124"+
"\4\0\1\375\4\0\1\u0126\1\u0143\4\0\1\u0128\11\0"+
"\1\u0129\4\0\1\u012b\10\0\1\u0104\1\u0105\1\u012c\1\u012d"+
"\14\0\1\u0124\1\u0125\1\0\1\u0125\1\0\1\u0124\4\0"+
"\1\375\4\0\1\u0126\1\u0127\4\0\1\u0128\11\0\1\u0129"+
"\3\0\1\u012a\1\u012b\10\0\1\u0104\1\u0105\1\u012c\1\u012d"+
"\14\0\2\u0126\1\0\1\u0126\1\0\1\u0126\3\0\1\u019c"+
"\104\0\1\u019d\101\0\1\u019e\112\0\1\u019f\57\0\1\u01a0"+
"\47\0\2\u012c\5\0\1\u01a1\6\0\11\u012c\1\0\2\u012c"+
"\4\0\15\u012c\4\0\1\u012c\1\0\4\u012c\1\0\4\u012c"+
"\1\0\2\u012d\1\0\1\u012d\1\0\1\u012d\3\0\1\u01a2"+
"\145\0\1\u01a3\44\0\1\u01a4\115\0\1\u01a5\43\0\1\u01a6"+
"\125\0\1\u01a7\21\0\1\u01a8\1\u0134\1\0\1\u0134\1\0"+
"\1\u01a8\12\0\1\u01a9\1\0\1\u0138\1\0\1\u0139\1\u01aa"+
"\15\0\1\u01ab\1\0\1\u013c\5\0\1\u013d\21\0\2\u0135"+
"\1\0\1\u0135\1\0\1\u0135\4\0\1\375\4\0\1\u0126"+
"\1\u01ac\1\0\1\u0138\2\0\1\u013a\11\0\1\u0129\3\0"+
"\1\u01ab\1\u012b\6\0\1\u013d\1\0\1\u0104\1\u0105\1\u012c"+
"\1\u012d\14\0\1\u0135\1\u0136\1\0\1\u0136\1\0\1\u0135"+
"\4\0\1\375\4\0\1\u0126\1\u0137\1\0\1\u0138\1\0"+
"\1\u0139\1\u013a\11\0\1\u0129\3\0\1\u013b\1\u012b\1\u013c"+
"\5\0\1\u013d\1\0\1\u0104\1\u0105\1\u012c\1\u012d\35\0"+
"\1\u01ad\74\0\1\u01ae\101\0\1\u01af\74\0\1\u01b0\112\0"+
"\1\u01b1\52\0\1\u01b2\113\0\1\u01b3\65\0\1\u01b4\42\0"+
"\2\u0141\1\0\1\u0141\1\0\1\u0141\2\0\1\374\1\0"+
"\1\375\4\0\1\u0126\1\u0143\4\0\1\u0128\11\0\1\u0129"+
"\4\0\1\u0144\10\0\1\u0104\1\u0105\1\u012c\1\u012d\14\0"+
"\1\u0141\1\u0142\1\0\1\u0142\1\0\1\u0141\2\0\1\374"+
"\1\0\1\375\4\0\1\u0126\1\u0143\4\0\1\u0128\11\0"+
"\1\u0129\4\0\1\u0144\6\0\1\u0103\1\0\1\u0104\1\u0105"+
"\1\u012c\1\u012d\35\0\1\u01b5\102\0\1\u01b6\45\0\1\u01b7"+
"\1\u0145\1\0\1\u0145\1\0\1\u01b7\12\0\1\u01b8\1\0"+
"\1\u0149\1\0\1\u0139\1\u01b9\15\0\1\u014b\1\0\1\u013c"+
"\5\0\1\u0103\21\0\2\u0146\1\0\1\u0146\1\0\1\u0146"+
"\2\0\1\374\1\0\1\375\4\0\1\u0126\1\u0148\1\0"+
"\1\u0149\2\0\1\u014a\11\0\1\u0129\3\0\1\u014b\1\u0144"+
"\10\0\1\u0104\1\u0105\1\u012c\1\u012d\14\0\1\u0146\1\u0147"+
"\1\0\1\u0147\1\0\1\u0146\2\0\1\374\1\0\1\375"+
"\4\0\1\u0126\1\u0148\1\0\1\u0149\1\0\1\u0139\1\u014a"+
"\11\0\1\u0129\3\0\1\u014b\1\u0144\1\u013c\5\0\1\u0103"+
"\1\0\1\u0104\1\u0105\1\u012c\1\u012d\35\0\1\u01ba\74\0"+
"\1\u01bb\101\0\1\u01bc\112\0\1\u01bd\30\0\2\u014c\1\0"+
"\1\u014c\1\0\1\u014c\4\0\1\375\24\0\1\u0129\15\0"+
"\1\u0104\1\u0105\17\0\1\u014d\1\0\1\u014d\20\0\1\u0139"+
"\20\0\1\u013c\27\0\1\u014c\1\u014e\1\0\1\u014e\1\0"+
"\1\u014c\4\0\1\375\11\0\1\u0139\12\0\1\u0129\5\0"+
"\1\u013c\7\0\1\u0104\1\u0105\17\0\1\u0150\1\0\1\u0150"+
"\20\0\1\u0139\20\0\1\u013c\5\0\1\u0103\21\0\1\u0141"+
"\1\u0151\1\0\1\u0151\1\0\1\u0141\2\0\1\374\1\0"+
"\1\375\4\0\1\u0126\1\u0143\3\0\1\u0139\1\u0128\11\0"+
"\1\u0129\4\0\1\u0144\1\u013c\5\0\1\u0103\1\0\1\u0104"+
"\1\u0105\1\u012c\1\u012d\14\0\1\u0124\1\u0152\1\0\1\u0152"+
"\1\0\1\u0124\4\0\1\375\4\0\1\u0126\1\u0143\3\0"+
"\1\u0153\1\u0128\11\0\1\u0129\4\0\1\u012b\10\0\1\u0104"+
"\1\u0105\1\u012c\1\u012d\42\0\1\u01be\46\0\1\u0124\1\u0154"+
"\1\0\1\u0154\1\0\1\u0124\4\0\1\375\4\0\1\u0126"+
"\1\u0143\3\0\1\u0155\1\u0128\11\0\1\u0129\4\0\1\u012b"+
"\1\u013c\7\0\1\u0104\1\u0105\1\u012c\1\u012d\42\0\1\u01bf"+
"\46\0\2\u0156\1\0\1\u0156\1\0\1\u0156\2\0\1\374"+
"\1\0\1\375\1\u0158\3\0\1\u0126\1\u0143\4\0\1\u0128"+
"\11\0\1\u0129\4\0\1\u0144\10\0\1\u0104\1\u0105\1\u012c"+
"\1\u012d\14\0\1\u0156\1\u0157\1\0\1\u0157\1\0\1\u0156"+
"\2\0\1\374\1\0\1\375\1\u0158\3\0\1\u0126\1\u0143"+
"\4\0\1\u0128\11\0\1\u0129\4\0\1\u0144\6\0\1\u0103"+
"\1\0\1\u0104\1\u0105\1\u012c\1\u012d\14\0\2\u0158\1\0"+
"\1\u0158\1\0\1\u0158\3\0\1\u01c0\63\0\1\u01c1\1\u0159"+
"\1\0\1\u0159\1\0\1\u01c1\12\0\1\u01c2\1\0\1\u0115"+
"\1\0\1\u0116\1\u01c3\15\0\1\u015e\1\0\1\u0119\5\0"+
"\1\u0103\21\0\2\u015a\1\0\1\u015a\1\0\1\u015a\2\0"+
"\1\374\1\0\1\375\1\u0158\3\0\1\u0126\1\u015c\1\0"+
"\1\u0115\2\0\1\u015d\11\0\1\u0129\3\0\1\u015e\1\u0144"+
"\10\0\1\u0104\1\u0105\1\u012c\1\u012d\14\0\1\u015a\1\u015b"+
"\1\0\1\u015b\1\0\1\u015a\2\0\1\374\1\0\1\375"+
"\1\u0158\3\0\1\u0126\1\u015c\1\0\1\u0115\1\0\1\u0116"+
"\1\u015d\11\0\1\u0129\3\0\1\u015e\1\u0144\1\u0119\5\0"+
"\1\u0103\1\0\1\u0104\1\u0105\1\u012c\1\u012d\35\0\1\u01c4"+
"\101\0\1\u01c5\112\0\1\u01c6\62\0\1\u01c7\74\0\1\u01c8"+
"\42\0\1\u01c9\1\u0163\1\0\1\u0163\1\0\1\u01c9\12\0"+
"\1\u01ca\1\0\1\u0167\1\0\1\u0139\1\u01cb\15\0\1\u0169"+
"\1\0\1\u013c\5\0\1\u0103\21\0\2\u0164\1\0\1\u0164"+
"\1\0\1\u0164\2\0\1\374\1\0\1\375\4\0\1\u0126"+
"\1\u0166\1\0\1\u0167\2\0\1\u0168\11\0\1\u0129\3\0"+
"\1\u0169\1\u0144\10\0\1\u0104\1\u0105\1\u012c\1\u012d\14\0"+
"\1\u0164\1\u0165\1\0\1\u0165\1\0\1\u0164\2\0\1\374"+
"\1\0\1\375\4\0\1\u0126\1\u0166\1\0\1\u0167\1\0"+
"\1\u0139\1\u0168\11\0\1\u0129\3\0\1\u0169\1\u0144\1\u013c"+
"\5\0\1\u0103\1\0\1\u0104\1\u0105\1\u012c\1\u012d\35\0"+
"\1\u01cc\74\0\1\u01cd\101\0\1\u01ce\112\0\1\u01cf\27\0"+
"\6\u016a\1\375\3\u016a\1\u01d0\62\u016a\1\171\2\u016b\1\171"+
"\1\u016b\1\171\1\u0129\66\171\6\u016c\1\u0104\3\u016c\1\u01d1"+
"\62\u016c\6\u016d\1\u0105\3\u016d\1\u01d2\62\u016d\6\362\1\206"+
"\5\362\1\171\60\362\6\u016f\1\u010b\52\u016f\1\u0171\13\u016f"+
"\6\u0170\1\u010c\52\u0170\1\u01d3\13\u0170\6\u016f\1\u010b\52\u016f"+
"\1\171\13\u016f\2\171\1\u0172\1\171\1\u0172\1\171\1\0"+
"\16\171\1\u0173\20\171\1\u0174\34\171\1\0\20\171\1\u01d4"+
"\53\171\1\0\14\171\1\u01d5\51\171\1\0\2\u0175\1\0"+
"\1\u0175\1\0\1\u0175\1\0\1\u01d6\147\0\1\u01d7\65\0"+
"\1\u01d8\32\0\1\u01d9\62\0\12\375\1\u01da\62\375\22\0"+
"\1\u01db\64\0\1\u01dc\130\0\1\u01dd\56\0\1\u01de\71\0"+
"\1\u01df\47\0\12\u0104\1\u01e0\62\u0104\12\u0105\1\u01e1\62\u0105"+
"\14\0\1\u01e2\143\0\1\u01e3\65\0\1\u01e4\20\0\61\u010c"+
"\1\u01e5\13\u010c\61\0\1\u01e6\14\0\2\u0188\1\0\1\u0188"+
"\1\0\1\u0188\2\0\1\u0189\6\0\1\u0113\1\u018a\1\0"+
"\1\u0115\2\0\1\u0117\15\0\1\u015e\11\0\1\u011a\1\u011b"+
"\1\u0113\17\0\2\u0189\5\0\1\u01e7\6\0\11\u0189\1\0"+
"\2\u0189\4\0\15\u0189\4\0\1\u0189\1\0\4\u0189\1\0"+
"\4\u0189\22\0\1\u01e8\105\0\1\u01e9\63\0\1\u01ea\124\0"+
"\1\u01eb\107\0\1\u01ec\37\0\1\u01ed\112\0\1\u01ee\71\0"+
"\1\u01ef\31\0\12\u011a\1\u01f0\62\u011a\12\u011b\1\u01f1\62\u011b"+
"\32\0\1\u01f2\44\0\1\u01e9\1\0\1\u01e9\1\0\1\u01f3"+
"\66\0\6\u0196\1\u01f4\52\u0196\1\u01f5\13\u0196\46\0\1\u011c"+
"\14\0\1\u0194\74\0\1\u01f6\65\0\1\u01f7\53\0\1\u01f8"+
"\47\0\1\252\100\0\1\u01f9\104\0\1\u01fa\102\0\1\u01fb"+
"\112\0\1\u01fc\56\0\1\u01fd\56\0\1\u01fe\74\0\1\u01ff"+
"\114\0\1\u0200\125\0\1\u0201\65\0\1\u0202\66\0\1\u012e"+
"\14\0\1\u01a3\12\0\2\u01a8\1\0\1\u01a8\1\0\1\u01a8"+
"\12\0\1\u01a9\1\0\1\u0138\2\0\1\u01aa\15\0\1\u01ab"+
"\7\0\1\u013d\42\0\1\u0203\101\0\1\u0204\112\0\1\u0205"+
"\51\0\1\u0206\74\0\1\u0207\124\0\1\u0208\107\0\1\u0209"+
"\37\0\1\u020a\112\0\1\u020b\71\0\1\u020c\56\0\1\u020d"+
"\102\0\1\u020e\63\0\1\u020f\102\0\1\u0210\45\0\2\u01b7"+
"\1\0\1\u01b7\1\0\1\u01b7\12\0\1\u01b8\1\0\1\u0149"+
"\2\0\1\u01b9\15\0\1\u014b\52\0\1\u0211\101\0\1\u0212"+
"\67\0\1\u0213\124\0\1\u0214\52\0\1\u0215\112\0\1\u0216"+
"\113\0\1\u0217\74\0\1\u0218\21\0\1\u0219\63\0\2\u01c1"+
"\1\0\1\u01c1\1\0\1\u01c1\12\0\1\u01c2\1\0\1\u0115"+
"\2\0\1\u01c3\15\0\1\u015e\52\0\1\u021a\101\0\1\u021b"+
"\67\0\1\u021c\102\0\1\u021d\112\0\1\u021e\61\0\1\u021f"+
"\42\0\2\u01c9\1\0\1\u01c9\1\0\1\u01c9\12\0\1\u01ca"+
"\1\0\1\u0167\2\0\1\u01cb\15\0\1\u0169\52\0\1\u0220"+
"\101\0\1\u0221\67\0\1\u0222\124\0\1\u0223\52\0\1\u0224"+
"\112\0\1\u0225\26\0\6\u016a\1\375\3\u016a\1\171\62\u016a"+
"\6\u016c\1\u0104\3\u016c\1\171\62\u016c\6\u016d\1\u0105\3\u016d"+
"\1\171\62\u016d\6\u0170\1\u010c\52\u0170\1\u0226\13\u0170\6\171"+
"\1\0\56\171\1\u0227\15\171\1\0\34\171\1\u0228\31\171"+
"\10\0\1\u0229\116\0\1\u022a\110\0\1\u0176\14\0\1\u01d7"+
"\23\0\1\u022b\105\0\1\u022c\74\0\1\u022d\121\0\1\u022e"+
"\47\0\1\u022f\63\0\1\u0230\74\0\1\u0231\114\0\1\u0232"+
"\110\0\1\u0183\14\0\1\u01e3\11\0\61\u0233\1\u0234\13\u0233"+
"\12\0\1\u0235\104\0\1\u0236\75\0\1\u0237\53\0\1\u0238"+
"\1\0\1\u0238\5\0\1\u0238\126\0\1\u0239\55\0\1\u023a"+
"\72\0\1\u023b\122\0\1\u023c\35\0\1\u023d\74\0\1\u023e"+
"\62\0\1\u023f\2\0\1\u023f\1\0\1\u01f2\1\0\7\u023f"+
"\1\u01f2\17\u023f\1\u01f2\20\u023f\1\u01f2\3\u023f\1\u01f2\11\u023f"+
"\6\u0196\1\u01f4\52\u0196\1\u0240\21\u0196\1\u01f4\52\u0196\1\u0241"+
"\13\u0196\32\0\1\u0242\110\0\1\u0198\14\0\1\u01f6\13\0"+
"\1\u01f8\1\0\1\u01f8\1\0\1\252\66\0\10\u01f9\1\u0243"+
"\64\u01f9\23\0\1\u0244\76\0\1\u0245\72\0\1\u0246\121\0"+
"\1\u0247\24\0\1\u0248\2\0\1\u0248\1\0\1\u0200\1\0"+
"\7\u0248\1\u0200\17\u0248\1\u0200\20\u0248\1\u0200\3\u0248\1\u0200"+
"\11\u0248\32\0\1\u0249\110\0\1\u01a5\14\0\1\u0201\33\0"+
"\1\u024a\102\0\1\u024b\112\0\1\u024c\50\0\1\u024d\75\0"+
"\1\u024e\53\0\1\u024f\1\0\1\u024f\5\0\1\u0250\126\0"+
"\1\u0251\55\0\1\u0252\72\0\1\u0253\122\0\1\u0254\46\0"+
"\1\u0255\53\0\1\u020e\1\0\1\u020e\1\0\1\302\111\0"+
"\1\u0256\121\0\1\u0257\46\0\1\u0258\102\0\1\u0259\67\0"+
"\1\u025a\53\0\1\u025b\1\0\1\u025b\5\0\1\u025b\107\0"+
"\1\u025c\72\0\1\u025d\115\0\1\u025e\74\0\1\u025f\52\0"+
"\1\u0260\102\0\1\u0261\67\0\1\u0262\76\0\1\u0263\72\0"+
"\1\u0264\53\0\1\u021f\1\0\1\u021f\1\0\1\352\110\0"+
"\1\u0265\102\0\1\u0266\67\0\1\u0267\53\0\1\u0268\1\0"+
"\1\u0268\5\0\1\u0268\107\0\1\u0269\72\0\1\u026a\51\0"+
"\6\u026b\1\u0233\52\u026b\1\171\13\u026b\6\171\1\0\35\171"+
"\1\u026c\36\171\1\0\42\171\1\u026d\23\171\1\u026e\2\0"+
"\1\u026e\1\0\1\u022a\1\0\7\u026e\1\u022a\17\u026e\1\u022a"+
"\20\u026e\1\u022a\3\u026e\1\u022a\11\u026e\24\0\1\u026f\75\0"+
"\1\u0270\120\0\1\u0271\46\0\1\u0272\51\0\1\u0273\2\0"+
"\1\u0273\1\0\1\u0232\1\0\7\u0273\1\u0232\17\u0273\1\u0232"+
"\20\u0273\1\u0232\3\u0273\1\u0232\11\u0273\61\u0233\1\u0274\13\u0233"+
"\61\0\1\u0234\36\0\1\u0275\75\0\1\u0276\50\0\6\u0238"+
"\1\u0277\66\u0238\66\0\1\u0278\37\0\1\u0279\70\0\1\u027a"+
"\74\0\1\u027b\47\0\6\u0196\1\u01f4\52\u0196\1\u027c\13\u0196"+
"\6\u027d\1\u027e\52\u027d\1\u027f\13\u027d\1\u0280\2\0\1\u0280"+
"\1\0\1\u0242\1\0\7\u0280\1\u0242\17\u0280\1\u0242\20\u0280"+
"\1\u0242\3\u0280\1\u0242\11\u0280\10\u01f9\1\u0281\64\u01f9\24\0"+
"\1\u0282\101\0\1\u0283\70\0\1\u0284\120\0\1\u0285\23\0"+
"\1\u0286\2\0\1\u0286\1\0\1\u0249\1\0\7\u0286\1\u0249"+
"\17\u0286\1\u0249\20\u0286\1\u0249\3\u0286\1\u0249\11\u0286\23\0"+
"\1\u0287\76\0\1\u0288\72\0\1\u0289\74\0\1\u028a\75\0"+
"\1\u028b\50\0\6\u024f\1\0\3\u024f\1\u028c\62\u024f\12\0"+
"\1\u028d\150\0\1\u028e\37\0\1\u028f\70\0\1\u0290\74\0"+
"\1\u0291\72\0\1\u0292\75\0\1\u0293\121\0\1\u0294\46\0"+
"\1\u0295\76\0\1\u0296\73\0\1\u0297\101\0\1\u0298\70\0"+
"\1\u0299\135\0\1\u029a\74\0\1\u029b\31\0\1\u029c\76\0"+
"\1\u029d\73\0\1\u029e\101\0\1\u029f\70\0\1\u02a0\72\0"+
"\1\u02a1\76\0\1\u02a2\73\0\1\u02a3\101\0\1\u02a4\70\0"+
"\1\u02a5\47\0\6\u026b\1\u0233\52\u026b\1\u02a6\13\u026b\6\171"+
"\1\0\57\171\1\u02a7\14\171\1\0\16\171\1\u02a8\47\171"+
"\22\0\1\u02a9\114\0\1\u02aa\77\0\1\u02ab\72\0\1\u02ac"+
"\31\0\61\u0233\1\u02ad\13\u0233\24\0\1\u02ae\72\0\1\u02af"+
"\74\0\1\u02b0\54\0\1\u0238\1\0\1\u0238\5\0\1\u0238"+
"\12\0\1\u02b1\111\0\1\u02b2\116\0\1\u02b3\10\0\6\u027d"+
"\1\u027e\52\u027d\1\u02b4\21\u027d\1\u027e\52\u027d\1\u02b5\21\u027d"+
"\1\u027e\52\u027d\1\u02b6\13\u027d\6\u02b7\1\u02b8\52\u02b7\1\u027f"+
"\13\u02b7\1\0\2\u02b9\1\0\1\u02b9\1\0\1\u02b9\1\0"+
"\1\u02b9\27\0\1\u02ba\56\0\1\u02bb\77\0\1\u02bc\111\0"+
"\1\u02bd\77\0\1\u02be\53\0\1\u02bf\101\0\1\u0208\70\0"+
"\1\u02c0\73\0\1\u02c1\72\0\1\u02c2\52\0\6\u024f\1\0"+
"\3\u024f\1\u02c3\62\u024f\22\0\1\u02c4\54\0\1\u024f\1\0"+
"\1\u024f\5\0\1\u0250\12\0\1\u02bc\111\0\1\u02c5\116\0"+
"\1\u02c6\53\0\1\u02c7\53\0\1\u02c8\117\0\1\u02c9\53\0"+
"\1\u02ca\101\0\1\u0214\65\0\1\u02cb\54\0\1\u025b\1\0"+
"\1\u025b\5\0\1\u025b\12\0\1\u02bc\111\0\1\u02cc\54\0"+
"\1\u02cd\74\0\1\u02ce\76\0\1\u02cf\101\0\1\u01eb\65\0"+
"\1\u02d0\54\0\1\u0238\1\0\1\u0238\5\0\1\u0238\12\0"+
"\1\u02bc\111\0\1\u02d1\56\0\1\u02d2\101\0\1\u0223\65\0"+
"\1\u02d3\54\0\1\u0268\1\0\1\u0268\5\0\1\u0268\12\0"+
"\1\u02bc\111\0\1\u02d4\32\0\6\u026b\1\u0233\52\u026b\1\u0226"+
"\13\u026b\6\171\1\0\13\171\1\u02d5\60\171\1\0\55\171"+
"\1\u02d6\10\171\23\0\1\u02d7\120\0\1\u02d8\73\0\1\u02d9"+
"\103\0\1\u02da\41\0\1\u02db\75\0\1\u02dc\113\0\1\u02dd"+
"\62\0\1\u02de\113\0\1\u02df\107\0\1\u02e0\12\0\6\u02b7"+
"\1\u02e1\52\u02b7\1\u027f\13\u02b7\6\u027d\1\u027e\52\u027d\1\u02e2"+
"\21\u027d\1\u027e\52\u027d\1\u02e3\13\u027d\6\u02b7\1\u02b8\74\u02b7"+
"\1\u02b8\52\u02b7\1\u02e4\13\u02b7\1\0\2\u02b9\1\0\1\u02b9"+
"\1\0\1\u02b9\31\0\1\u02ba\35\0\2\u02ba\1\0\1\u02ba"+
"\1\0\1\u02ba\3\0\1\u02e5\105\0\1\u02e6\101\0\1\u02e7"+
"\113\0\1\u02e8\73\0\1\u02e9\50\0\1\u02ea\114\0\1\u02eb"+
"\54\0\1\u02ec\75\0\1\u02ed\113\0\1\u02ee\101\0\1\u02ef"+
"\107\0\1\u02f0\67\0\1\u02f1\42\0\1\u02f2\117\0\1\u02f3"+
"\50\0\1\u02f4\75\0\1\u02f5\120\0\1\u02f6\67\0\1\u02f7"+
"\74\0\1\u02f8\54\0\1\u02f9\75\0\1\u02fa\120\0\1\u02fb"+
"\47\0\1\u02fc\75\0\1\u02fd\120\0\1\u02fe\25\0\6\171"+
"\1\0\33\171\1\u02ff\40\171\1\0\53\171\1\u0300\12\171"+
"\25\0\1\u0301\74\0\1\u0302\115\0\1\u0303\70\0\1\u0304"+
"\55\0\1\u0305\76\0\1\u0306\113\0\1\u0307\32\0\1\u0113"+
"\1\0\1\u0113\115\0\1\u0308\74\0\1\u0309\130\0\1\u030a"+
"\13\0\6\u02b7\1\u02b8\52\u02b7\1\u030b\13\u02b7\12\0\1\u030c"+
"\107\0\1\u030d\51\0\1\u030e\1\0\1\u030e\115\0\1\u030f"+
"\115\0\1\u0310\51\0\1\u0311\120\0\1\u0312\50\0\1\u0313"+
"\76\0\1\u0314\113\0\1\u0315\55\0\1\u0316\74\0\1\u0317"+
"\111\0\1\u0318\57\0\1\u0319\115\0\1\u031a\51\0\1\u031b"+
"\76\0\1\u031c\74\0\1\u031d\113\0\1\u031e\74\0\1\u031f"+
"\53\0\1\u0320\76\0\1\u0321\74\0\1\u0322\72\0\1\u0323"+
"\76\0\1\u0324\74\0\1\u0325\47\0\6\171\1\0\35\171"+
"\1\u0326\36\171\1\0\16\171\1\u0327\47\171\41\0\1\u0328"+
"\54\0\1\u0301\55\0\1\u0329\1\0\1\u0329\116\0\1\u032a"+
"\73\0\1\u032b\51\0\1\u0113\1\0\1\u0113\34\0\1\u0328"+
"\4\0\1\u01eb\73\0\1\u032c\50\0\1\u032d\100\0\1\u032e"+
"\130\0\1\u032f\13\0\6\u02b7\1\u02b8\52\u02b7\1\u0330\13\u02b7"+
"\2\0\1\u0331\1\0\1\u0331\34\0\1\u0332\33\0\12\u0333"+
"\1\0\62\u0333\21\0\1\u0334\55\0\1\u0335\1\0\1\u0335"+
"\115\0\1\u0336\74\0\1\u0337\74\0\1\u0338\51\0\1\u0331"+
"\1\0\1\u0331\34\0\1\u0332\4\0\1\u0208\73\0\1\u0339"+
"\50\0\1\u033a\100\0\1\u033b\75\0\1\u033c\50\0\1\u0331"+
"\1\0\1\u0331\72\0\1\u033d\1\0\1\u033d\115\0\1\u033e"+
"\51\0\1\u0331\1\0\1\u0331\41\0\1\u0214\47\0\1\u033f"+
"\120\0\1\u0340\74\0\1\u0341\54\0\1\u0342\51\0\1\u0331"+
"\1\0\1\u0331\41\0\1\u01eb\47\0\1\u0343\100\0\1\u0344"+
"\51\0\1\u0331\1\0\1\u0331\41\0\1\u0223\47\0\1\u0345"+
"\53\0\6\171\1\0\36\171\1\u0346\35\171\1\0\16\171"+
"\1\u0347\47\171\27\0\1\u0348\74\0\1\u0349\47\0\1\u0113"+
"\1\0\1\u0113\41\0\1\u01eb\51\0\1\u034a\112\0\1\u0328"+
"\11\0\1\u034b\44\0\1\u034c\132\0\1\u034d\13\0\6\u02b7"+
"\1\u02e1\66\u02b7\12\u034e\1\0\62\u034e\27\0\1\u034f\45\0"+
"\12\u0333\1\u0350\62\u0333\41\0\1\u0351\35\0\1\u0335\1\0"+
"\1\u0335\10\0\1\u0352\15\0\1\u0352\34\0\1\u0352\52\0"+
"\1\u0208\47\0\1\u0353\55\0\1\u0331\1\0\1\u0331\41\0"+
"\1\u0208\51\0\1\u0354\112\0\1\u0351\11\0\1\u0355\44\0"+
"\1\u0356\100\0\1\u0357\47\0\1\u033d\1\0\1\u033d\10\0"+
"\1\u0358\15\0\1\u0358\34\0\1\u0358\52\0\1\u0214\101\0"+
"\1\u0359\44\0\1\u035a\74\0\1\u035b\117\0\1\u01eb\101\0"+
"\1\u034b\67\0\1\u0223\101\0\1\u035c\21\0\6\171\1\0"+
"\14\171\1\u035d\57\171\1\0\14\171\1\u035e\51\171\23\0"+
"\1\u035f\74\0\1\u0360\117\0\1\u0361\54\0\1\u0362\46\0"+
"\12\u034c\1\u0363\62\u034c\6\0\1\u0364\66\0\12\u034e\1\u0365"+
"\62\u034e\23\0\1\u0366\63\0\1\u0367\111\0\1\u0368\73\0"+
"\1\u0369\42\0\1\u036a\1\0\1\u036b\54\0\1\u0355\67\0"+
"\1\u036c\54\0\1\u036d\46\0\12\u0356\1\u036e\62\u0356\23\0"+
"\1\u0208\77\0\1\u0369\42\0\1\u036a\1\0\1\u036f\27\0"+
"\1\u0370\135\0\1\u0371\53\0\1\u036c\20\0\1\u0371\33\0"+
"\1\u0372\46\0\6\171\1\0\37\171\1\u0373\26\171\6\u035e"+
"\1\u0356\3\u035e\1\u0374\62\u035e\42\0\1\u0375\34\0\1\u0376"+
"\1\0\1\u0376\5\0\1\u0377\62\0\12\u0361\1\u0378\62\u0361"+
"\46\0\1\u0379\26\0\12\u034c\1\u037a\62\u034c\12\0\1\u037b"+
"\124\0\1\u037c\55\0\1\u037d\100\0\1\u037e\116\0\1\u037f"+
"\75\0\1\u0380\22\0\12\u036c\1\u0381\62\u036c\46\0\1\u0357"+
"\26\0\12\u0356\1\u0382\62\u0356\52\0\1\u0383\70\0\1\u0384"+
"\53\0\1\u0385\115\0\1\u0386\26\0\6\u0373\1\u036c\3\u0373"+
"\1\u0387\62\u0373\6\u035e\1\u0356\3\u035e\1\u0388\62\u035e\43\0"+
"\1\u0389\33\0\1\u038a\1\u038b\1\u0376\5\0\1\u0377\6\0"+
"\11\u038b\1\0\2\u038b\4\0\15\u038b\4\0\1\u038b\1\0"+
"\4\u038b\1\0\4\u038b\12\0\1\u038c\62\0\12\u0361\1\u038d"+
"\62\u0361\23\0\1\u01eb\53\0\1\u038e\1\0\1\u038e\1\0"+
"\1\u038f\3\0\1\u038e\125\0\1\u0390\73\0\1\u0391\103\0"+
"\1\u0392\45\0\1\u0393\103\0\1\u0394\43\0\12\u036c\1\u0395"+
"\62\u036c\2\0\1\u0396\1\0\1\u0396\1\0\1\u0397\3\0"+
"\1\u0396\113\0\1\u0398\66\0\1\u0214\117\0\1\u0399\51\0"+
"\1\u0223\51\0\6\u0373\1\u036c\3\u0373\1\u039a\62\u0373\2\171"+
"\1\u039b\1\171\1\u039b\1\171\1\u0397\3\171\1\u039b\62\171"+
"\1\0\2\376\1\0\1\376\1\0\1\376\70\0\1\u038a"+
"\1\0\1\u038a\5\0\1\u0377\65\0\2\u038b\5\0\1\u039c"+
"\6\0\11\u038b\1\0\2\u038b\4\0\15\u038b\4\0\1\u038b"+
"\1\0\4\u038b\1\0\4\u038b\2\0\1\u038c\1\0\1\u038c"+
"\1\0\1\u039d\70\0\1\u039e\1\0\1\u039e\1\0\1\u039f"+
"\3\0\1\u039e\64\0\1\u038e\1\0\1\u038e\1\0\1\u038f"+
"\66\0\12\u0390\1\u03a0\62\u0390\43\0\1\u03a1\57\0\1\u03a2"+
"\120\0\1\u03a3\106\0\1\u03a4\12\0\1\u03a5\1\0\1\u03a5"+
"\1\0\1\u03a6\3\0\1\u03a5\64\0\1\u0396\1\0\1\u0396"+
"\1\0\1\u0397\152\0\1\u03a4\7\0\1\u036a\25\0\1\u03a7"+
"\47\0\2\171\1\u03a8\1\171\1\u03a8\1\171\1\u03a6\3\171"+
"\1\u03a8\64\171\1\u039b\1\171\1\u039b\1\171\1\u0397\66\171"+
"\12\0\1\u03a9\142\0\1\u03aa\16\0\1\u039e\1\0\1\u039e"+
"\1\0\1\u039f\66\0\12\u0390\1\u03ab\62\u0390\12\u03a1\1\u03ac"+
"\62\u03a1\27\0\1\u03ad\137\0\1\u03ae\56\0\1\u03af\22\0"+
"\1\u03a5\1\0\1\u03a5\1\0\1\u03a6\111\0\1\u03b0\51\0"+
"\2\171\1\u03a8\1\171\1\u03a8\1\171\1\u03a6\66\171\2\0"+
"\1\u03a9\1\0\1\u03a9\1\0\1\u03b1\146\0\1\u03b2\26\0"+
"\1\u03b3\62\0\12\u03a1\1\u03b4\62\u03a1\25\0\1\u03ae\50\0"+
"\2\u03b5\1\0\1\u03b5\1\0\1\u03b5\133\0\1\u03b6\27\0"+
"\12\u03b0\1\u03b7\62\u03b0\60\0\1\u03b8\74\0\1\u03b9\26\0"+
"\1\u03ba\65\0\2\u03bb\14\0\11\u03bb\1\0\2\u03bb\4\0"+
"\15\u03bb\4\0\1\u03bb\1\0\4\u03bb\1\0\4\u03bb\27\0"+
"\1\u03ae\45\0\12\u03b0\1\u03bc\62\u03b0\60\0\1\u03bd\22\0"+
"\1\u03be\71\0\2\u03bb\5\0\1\u03bf\6\0\11\u03bb\1\0"+
"\2\u03bb\4\0\15\u03bb\4\0\1\u03bb\1\0\4\u03bb\1\0"+
"\4\u03bb\12\0\1\u03c0\142\0\1\u03c1\14\0\6\u03be\1\u03c2"+
"\66\u03be\12\0\1\u03c3\70\0\1\u03c4\66\0\6\u03be\1\u03c2"+
"\52\u03be\1\u03c5\13\u03be\6\u03c4\1\u03c6\66\u03c4\6\u03be\1\u03c2"+
"\52\u03be\1\u03c7\13\u03be\6\u03c4\1\u03c6\52\u03c4\1\u03c8\13\u03c4"+
"\6\u03be\1\u03c2\52\u03be\1\u03c9\13\u03be\6\u03c4\1\u03c6\52\u03c4"+
"\1\u03ca\13\u03c4\6\u03be\1\u03cb\66\u03be\6\u03c4\1\u03c6\52\u03c4"+
"\1\u03cc\13\u03c4\61\0\1\u03cd\13\0\6\u03c4\1\u03ce\66\u03c4"+
"\61\0\1\u03cf\74\0\1\u03d0\74\0\1\u03d1\74\0\1\u03d2"+
"\21\0\1\u03d3\147\0\1\u03d4\21\0\1\u03d5\66\0";
private static int [] zzUnpackTrans() {
int [] result = new int[51362];
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[] = {
"Unkown internal scanner error",
"Error: could not match input",
"Error: pushback value was too large"
};
/**
* ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
*/
private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
private static final String ZZ_ATTRIBUTE_PACKED_0 =
"\20\0\2\1\2\0\1\11\2\1\1\11\22\1\2\11"+
"\5\1\1\11\26\1\2\11\10\1\1\11\25\1\1\11"+
"\16\1\1\11\7\1\4\0\1\11\1\1\2\0\2\11"+
"\1\1\6\11\1\0\2\1\10\0\3\11\1\1\2\11"+
"\1\0\1\1\1\11\5\0\1\11\2\0\1\11\1\1"+
"\1\11\1\0\1\11\1\1\4\11\4\0\1\1\1\11"+
"\2\0\1\1\1\11\1\1\2\11\2\1\2\0\1\1"+
"\2\11\3\1\2\0\1\1\1\11\1\1\1\11\1\0"+
"\2\11\1\0\2\11\2\0\3\1\3\0\3\1\2\0"+
"\3\1\2\11\1\1\1\0\1\11\1\0\6\1\5\0"+
"\1\11\2\0\1\11\1\0\1\1\6\0\1\1\6\0"+
"\1\11\4\0\1\11\11\0\1\1\21\0\1\1\37\0"+
"\1\11\17\0\1\1\12\0\13\1\14\0\1\1\1\11"+
"\1\0\1\11\2\0\1\1\15\0\1\1\16\0\1\11"+
"\42\0\1\1\10\0\6\1\3\0\1\11\1\1\1\0"+
"\1\11\3\0\2\1\1\11\2\0\1\1\1\11\11\0"+
"\2\1\1\0\1\11\12\0\2\11\31\0\1\11\14\0"+
"\3\1\1\11\1\0\1\11\4\0\2\11\2\0\1\1"+
"\1\11\7\0\2\11\1\1\1\0\1\1\6\0\1\1"+
"\22\0\1\11\14\0\1\11\2\0\4\1\4\0\1\1"+
"\3\0\1\11\4\0\1\1\2\0\2\1\5\0\1\1"+
"\6\0\1\11\30\0\3\1\13\0\1\1\16\0\1\1"+
"\21\0\2\1\12\0\1\1\35\0\2\1\13\0\1\11"+
"\31\0\2\1\1\0\1\11\34\0\2\1\25\0\2\1"+
"\5\0\1\11\2\0\1\11\13\0\2\1\6\0\1\11"+
"\13\0\2\1\6\0\1\11\7\0\1\11\2\0\2\1"+
"\3\0\1\11\6\0\1\11\1\0\1\1\2\0\1\1"+
"\7\0\1\11\1\1\5\0\1\11\1\0\1\1\3\0"+
"\1\11\2\0\1\11\7\0\1\1\2\0\1\1\4\0"+
"\1\11\1\0\1\11";
private static int [] zzUnpackAttribute() {
int [] result = new int[981];
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[] = new char[ZZ_BUFFERSIZE];
/** 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;
/** number of newlines encountered up to the start of the matched text */
private int yyline;
/** the number of characters up to the start of the matched text */
private int yychar;
/**
* the number of characters from the last newline up to the start of the
* matched text
*/
private int yycolumn;
/**
* zzAtBOL == true <=> the scanner is currently at the beginning of a line
*/
private boolean zzAtBOL = true;
/** zzAtEOF == true <=> the scanner is at the EOF */
private boolean zzAtEOF;
/** denotes if the user-EOF-code has already been executed */
private boolean zzEOFDone;
/** For the backwards DFA of general lookahead statements */
private boolean [] zzFin = new boolean [ZZ_BUFFERSIZE+1];
/* user code: */
private static final Pattern BlockPrePattern =
Pattern.compile("(?s)\\Q{{{\\E\n(.*?)\n\\Q}}}");
private static final Pattern InlinePrePattern =
Pattern.compile("(?s)\\Q{{{\\E(.*?)\\Q}}}");
private static final Pattern ListLevelPattern =
Pattern.compile("\\s*([#*]+)(=?)");
private static final Pattern ParamPluginPattern =
Pattern.compile("(?s)<<\\s*(\\w+)\\s+(.*\\S)\\s*>>");
private static final Pattern OptParamPluginPattern =
Pattern.compile("(?s)<<\\s*(\\w+)(?:\\s+(.*\\S))?\\s*>>");
private static final Pattern JcxPattern =
Pattern.compile("(?s)<<\\s*([\\[{])\\s*(.*\\S)?\\s*>>");
private static final Pattern IndexSandwichPattern = Pattern.compile(
"(?s)(<<\\s*\\(\\s*>>\\s*)(.*?\\S)\\s*<<\\s*\\)\\s*>>");
private static final Pattern PrettyPattern =
Pattern.compile(
"(?s)(?:[ \t]*)?<<[ \t]*"
+ "prettyPrint(?:[ \t]+([-\\w \t]*))?>>[ \t]*"
+ "\\Q\n{{{\\E\n(.*?)\n\\Q}}}");
private boolean needIndexCloser;
private Token newToken(short id) {
return new Token(id, null, yychar, yyline, yycolumn);
}
private Token newToken(short id, String s) {
return new Token(id, s, yychar, yyline, yycolumn);
}
private Token newToken(short id, String s, int intParam) {
return new Token(id, s, yychar, yyline, yycolumn, intParam);
}
private int urlDeferringState, listLevel;
private List<Integer> stateStack = new ArrayList<Integer>();
public List<Integer> getStateStack() { return stateStack; }
private void pushState() {
stateStack.add(0, yystate());
}
private int popState() {
return (stateStack.size() < 1) ? YYINITIAL : stateStack.remove(0);
}
/**
* Static factory method.
*
* @param doClean If true will silently remove illegal input characters.
* If false, will throw if encounter any illegal input char.
*/
public static CreoleScanner newCreoleScanner(File inFile,
boolean doClean, Expander expander) throws IOException {
return newCreoleScanner(
IOUtil.toStringBuilder(inFile), doClean, expander);
}
/**
* Static factory method.
* This method will always silently filter out \r's.
* The doClean parameter says what to do about control characters other
* than \r (silently filtered) and \n and tabs (allowed and retained).
*
* @param inSb StringBuilder containing any characters that we will filter
* and/or validate.
* @param doClean If true will silently remove illegal input characters.
* If false, will throw if encounter any illegal input char.
* @throws IllegalArgumentException if doClean is set to false and
* control character(s) other than \n, \r, \t are found in the
* StringBuilder.
*/
public static CreoleScanner newCreoleScanner(StringBuilder inSb,
boolean doClean, Expander expander) throws IOException {
List<Integer> badIndexes = new ArrayList<Integer>();
char c;
StringBuilder sb = (expander == null) ? inSb : expander.expand(inSb);
for (int i = sb.length() - 1; i >= 0; i--) {
c = sb.charAt(i);
switch (c) {
case '\r':
sb.deleteCharAt(i);
case '\n':
case '\t':
continue;
}
if (!Character.isISOControl(c)) continue;
if (doClean) sb.deleteCharAt(i);
else badIndexes.add(badIndexes.size(), Integer.valueOf(i));
}
if (badIndexes.size() > 0)
throw new IllegalArgumentException(
"Illegal input char(s) at following positions: "
+ badIndexes);
//if (sb.length() > 0 && sb.charAt(sb.length()-1) != '\n')
//sb.append('\n');
return new CreoleScanner(new CharSequenceReader(sb));
}
private Matcher matcher(Pattern p) {
return matcher(p, false);
}
private Matcher matcher(Pattern p, boolean doTrim) {
Matcher m = p.matcher(doTrim ? yytext().trim() : yytext());
if (!m.matches())
throw new CreoleParseException(String.format(
"Creole directive markup text doesn't match expected pattern: "
+ "\"%s\"", yytext()), yychar, yyline, yycolumn);
return m;
}
/**
* Creates a new scanner
* There is also a java.io.InputStream version of this constructor.
*
* @param in the java.io.Reader to read input from.
*/
public CreoleScanner(java.io.Reader in) {
this.zzReader = in;
}
/**
* Creates a new scanner.
* There is also java.io.Reader version of this constructor.
*
* @param in the java.io.Inputstream to read input from.
*/
public CreoleScanner(java.io.InputStream in) {
this(new java.io.InputStreamReader(in));
}
/**
* Unpacks the compressed character translation table.
*
* @param packed the packed character translation table
* @return the unpacked character translation table
*/
private static char [] zzUnpackCMap(String packed) {
char [] map = new char[0x10000];
int i = 0; /* index in packed string */
int j = 0; /* index in unpacked array */
while (i < 160) {
int count = packed.charAt(i++);
char value = packed.charAt(i++);
do map[j++] = value; while (--count > 0);
}
return map;
}
/**
* Refills the input buffer.
*
* @return <code>false</code>, iff there was new input.
*
* @exception java.io.IOException if any I/O-Error occurs
*/
private boolean zzRefill() throws java.io.IOException {
/* first: make room (if you can) */
if (zzStartRead > 0) {
System.arraycopy(zzBuffer, zzStartRead,
zzBuffer, 0,
zzEndRead-zzStartRead);
/* translate stored positions */
zzEndRead-= zzStartRead;
zzCurrentPos-= zzStartRead;
zzMarkedPos-= zzStartRead;
zzStartRead = 0;
}
/* is the buffer big enough? */
if (zzCurrentPos >= zzBuffer.length) {
/* if not: blow it up */
char newBuffer[] = new char[zzCurrentPos*2];
System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
zzBuffer = newBuffer;
}
/* finally: fill the buffer with new input */
int numRead = zzReader.read(zzBuffer, zzEndRead,
zzBuffer.length-zzEndRead);
if (numRead > 0) {
zzEndRead+= numRead;
return false;
}
// unlikely but not impossible: read 0 characters, but not at end of stream
if (numRead == 0) {
int c = zzReader.read();
if (c == -1) {
return true;
} else {
zzBuffer[zzEndRead++] = (char) c;
return false;
}
}
// numRead < 0
return true;
}
/**
* Closes the input stream.
*/
public final void yyclose() throws java.io.IOException {
zzAtEOF = true; /* indicate end of file */
zzEndRead = zzStartRead; /* invalidate buffer */
if (zzReader != null)
zzReader.close();
}
/**
* 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
* <b>cannot</b> be reused (internal buffer is discarded and lost).
* Lexical state is set to <tt>ZZ_INITIAL</tt>.
*
* @param reader the new input stream
*/
public final void yyreset(java.io.Reader reader) {
zzReader = reader;
zzAtBOL = true;
zzAtEOF = false;
zzEOFDone = false;
zzEndRead = zzStartRead = 0;
zzCurrentPos = zzMarkedPos = 0;
yyline = yychar = yycolumn = 0;
zzLexicalState = YYINITIAL;
}
/**
* 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;
}
/**
* 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 <tt>pos</tt> 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 occured 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;
}
/**
* Contains user EOF-code, which will be executed exactly once,
* when the end of file is reached
*/
private void zzDoEOF() throws java.io.IOException {
if (!zzEOFDone) {
zzEOFDone = true;
yyclose();
}
}
/**
* 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
* @exception java.io.IOException if any I/O-Error occurs
*/
public Token nextToken() throws java.io.IOException, CreoleParseException {
int zzInput;
int zzAction;
// cached fields:
int zzCurrentPosL;
int zzMarkedPosL;
int zzEndReadL = zzEndRead;
char [] zzBufferL = zzBuffer;
char [] zzCMapL = ZZ_CMAP;
int [] zzTransL = ZZ_TRANS;
int [] zzRowMapL = ZZ_ROWMAP;
int [] zzAttrL = ZZ_ATTRIBUTE;
while (true) {
zzMarkedPosL = zzMarkedPos;
yychar+= zzMarkedPosL-zzStartRead;
boolean zzR = false;
for (zzCurrentPosL = zzStartRead; zzCurrentPosL < zzMarkedPosL;
zzCurrentPosL++) {
switch (zzBufferL[zzCurrentPosL]) {
case '\u000B':
case '\u000C':
case '\u0085':
case '\u2028':
case '\u2029':
yyline++;
yycolumn = 0;
zzR = false;
break;
case '\r':
yyline++;
yycolumn = 0;
zzR = true;
break;
case '\n':
if (zzR)
zzR = false;
else {
yyline++;
yycolumn = 0;
}
break;
default:
zzR = false;
yycolumn++;
}
}
if (zzR) {
// peek one character ahead if it is \n (if we have counted one line too much)
boolean zzPeek;
if (zzMarkedPosL < zzEndReadL)
zzPeek = zzBufferL[zzMarkedPosL] == '\n';
else if (zzAtEOF)
zzPeek = false;
else {
boolean eof = zzRefill();
zzEndReadL = zzEndRead;
zzMarkedPosL = zzMarkedPos;
zzBufferL = zzBuffer;
if (eof)
zzPeek = false;
else
zzPeek = zzBufferL[zzMarkedPosL] == '\n';
}
if (zzPeek) yyline--;
}
if (zzMarkedPosL > zzStartRead) {
switch (zzBufferL[zzMarkedPosL-1]) {
case '\n':
case '\u000B':
case '\u000C':
case '\u0085':
case '\u2028':
case '\u2029':
zzAtBOL = true;
break;
case '\r':
if (zzMarkedPosL < zzEndReadL)
zzAtBOL = zzBufferL[zzMarkedPosL] != '\n';
else if (zzAtEOF)
zzAtBOL = false;
else {
boolean eof = zzRefill();
zzMarkedPosL = zzMarkedPos;
zzEndReadL = zzEndRead;
zzBufferL = zzBuffer;
if (eof)
zzAtBOL = false;
else
zzAtBOL = zzBufferL[zzMarkedPosL] != '\n';
}
break;
default:
zzAtBOL = false;
}
}
zzAction = -1;
zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
if (zzAtBOL)
zzState = ZZ_LEXSTATE[zzLexicalState+1];
else
zzState = ZZ_LEXSTATE[zzLexicalState];
zzForAction: {
while (true) {
if (zzCurrentPosL < zzEndReadL)
zzInput = zzBufferL[zzCurrentPosL++];
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 = zzBufferL[zzCurrentPosL++];
}
}
int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
if (zzNext == -1) break zzForAction;
zzState = zzNext;
int zzAttributes = zzAttrL[zzState];
if ( (zzAttributes & 1) == 1 ) {
zzAction = zzState;
zzMarkedPosL = zzCurrentPosL;
if ( (zzAttributes & 8) == 8 ) break zzForAction;
}
}
}
// store back cached position
zzMarkedPos = zzMarkedPosL;
switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
case 9:
{ yybegin(popState());
yypushback(yylength());
return newToken(Terminals.END_PARA, "\n");
}
case 104: break;
case 94:
{ return newToken(Terminals.ROOTLVL_STYLESHEET,
matcher(ParamPluginPattern, true).group(2));
}
case 105: break;
case 80:
{ if (yystate() == YYINITIAL) {
pushState();
yybegin(PSTATE);
}
return newToken(Terminals.NESTED_PRE, matcher(InlinePrePattern).group(1));
}
case 106: break;
case 68:
{ // Seems to be a JFlex bug here. "{{...}}}" captures the whole thing
// even though it should end after the first "}}.
if (yystate() == YYINITIAL) {
pushState();
yybegin(PSTATE);
}
// N.b. we handle images inside of [[links]] in the awkwardly redundant
// way of parsing that out inside the parser instead of the scanner.
// We delimit url from alttext with 0 char.
StringBuilder sb = new StringBuilder(yytext());
return newToken(Terminals.IMAGE,
sb.substring(2, yylength()-2), sb.indexOf("|") - 2);
}
case 107: break;
case 36:
{ pushState();
yybegin(LISTATE);
return newToken(Terminals.LI, "#", -1);
}
case 108: break;
case 61:
{ return newToken(Terminals.EMDASH);
}
case 109: break;
case 25:
{ pushState();
yybegin(PSTATE);
return newToken(Terminals.EM_TOGGLE);
}
case 110: break;
case 20:
{ yypushback(yylength());
yybegin(LISTATE);
return newToken(Terminals.FINAL_DT);
}
case 111: break;
case 57:
// lookahead expression with fixed base length
zzMarkedPos = zzStartRead + 1;
{ yybegin(popState());
return newToken(Terminals.FINAL_DT);
}
case 112: break;
case 6:
{ yypushback(yylength());
pushState();
yybegin(TABLESTATE);
}
case 113: break;
case 67:
{ return newToken(Terminals.TEXT, yytext().substring(1));
}
case 114: break;
case 27:
{ pushState();
yybegin(PSTATE);
return newToken(Terminals.UNDER_TOGGLE);
}
case 115: break;
case 96:
{ return newToken(Terminals.ROOTLVL_ENUMFORMATS,
matcher(ParamPluginPattern, true).group(2));
}
case 116: break;
case 90:
{ Matcher m = matcher(IndexSandwichPattern);
if (m.groupCount() != 2)
throw new RuntimeException(
"Index Sandwich Pattern captured " + m.groupCount() + " groups");
if (needIndexCloser)
throw new CreoleParseException(
"Tangled index entry marker (...) pairing",
yychar, yyline, yycolumn);
needIndexCloser = true;
yypushback(yylength() - m.group(1).length());
return newToken(Terminals.INDEXED, m.group(2));
}
case 117: break;
case 79:
{ yybegin(popState());
return newToken(Terminals.END_JCXBLOCK);
}
case 118: break;
case 18:
{ // No need to pop state. We always come from and return to YYINITIAL.
yybegin(YYINITIAL);
return newToken(Terminals.END_H);
}
case 119: break;
case 56:
{ return newToken(Terminals.TEXT, "|");
}
case 120: break;
case 38:
// lookahead expression with fixed base length
zzMarkedPos = zzStartRead + 1;
{ yybegin(popState());
return newToken(Terminals.END_PARA);
}
case 121: break;
case 10:
{ yypushback(yylength());
yybegin(LISTATE);
return newToken(Terminals.END_PARA);
}
case 122: break;
case 91:
{ // Undesirable situation here.
// We don't know whether the Styler directive at root level is intended for
// a para, list, table, or jcxBlock.
// Until figure out how to determine, assume para, which may cause
// unnecessary switching back and forth to paras.
// Probably not worth fixing, since the page author can always avoid this
// situation by not using <<addClass +jcxBlock...>> at the root level.
// I.e. if the author wants to style a root-level jcxBlock, then use a
// <<addClass =jcxBlock...>> instead.
pushState();
yypushback(yylength());
yybegin(PSTATE);
}
case 123: break;
case 54:
{ return newToken(Terminals.CELL, null, 1);
}
case 124: break;
case 95:
{ return newToken(Terminals.NESTED_STYLESHEET,
matcher(ParamPluginPattern, true).group(2));
}
case 125: break;
case 59:
{ throw new CreoleParseException("'<<<' or '>>>' are reserved tokens",
yychar, yyline, yycolumn);
}
case 126: break;
case 41:
{ return newToken(Terminals.EM_TOGGLE);
}
case 127: break;
case 4:
{ // No need to push or pop for HEADSTATE. Will revert to YYINITIAL.
// If you wnat a HEADING from inside a jcxBlock, exit the jcxBlock first.
yypushback(yylength());
yybegin(HEADSTATE);
}
case 128: break;
case 72:
{ int startIndex = yytext().indexOf('~');
return newToken(Terminals.NESTED_RAWHTML,
yytext().substring(startIndex+1, yylength() - 2));
}
case 129: break;
case 16:
{ yybegin(popState()); return newToken(Terminals.FINAL_ROW);
}
case 130: break;
case 2:
{ pushState();
yybegin(PSTATE);
return newToken(Terminals.TEXT, yytext());
}
case 131: break;
case 62:
// lookahead expression with fixed lookahead length
yypushback(2);
{ pushState();
yybegin(PSTATE);
return newToken(Terminals.TEXT, yytext());
}
case 132: break;
case 88:
// lookahead expression with fixed base length
zzMarkedPos = zzStartRead + 1;
{ // YYINITIAL handled already
urlDeferringState = yystate();
yybegin(ESCURL);
return newToken(Terminals.TEXT, yytext());
}
case 133: break;
case 37:
{ if (yystate() == YYINITIAL) yybegin(PSTATE);
int len = yylength();
return newToken(Terminals.TEXT,
yytext().substring(0, len - 2) + yytext().substring(len - 1));
}
case 134: break;
case 43:
{ return newToken(Terminals.UNDER_TOGGLE);
}
case 135: break;
case 35:
// lookahead expression with fixed lookahead length
yypushback(1);
{ pushState();
yybegin(LISTATE);
return newToken(Terminals.LI, "#", 1);
}
case 136: break;
case 30:
{ pushState();
yybegin(PSTATE);
return newToken(Terminals.HARDLINE);
}
case 137: break;
case 34:
{ pushState();
yybegin(LISTATE);
return newToken(Terminals.LI, "*", -1);
}
case 138: break;
case 39:
{ return newToken(Terminals.STRONG_TOGGLE);
}
case 139: break;
case 83:
{ yybegin(popState());
yypushback(yylength());
return newToken(Terminals.FINAL_LI);
}
case 140: break;
case 66:
{ pushState();
yypushback(2);
yybegin(PSTATE);
return newToken(Terminals.STRIKE_TOGGLE);
}
case 141: break;
case 64:
// lookahead expression with fixed base length
zzMarkedPos = zzStartRead + 2;
{ return newToken(Terminals.CELL, null);
}
case 142: break;
case 45:
{ return newToken(Terminals.SUB_TOGGLE);
}
case 143: break;
case 40:
{ return newToken(Terminals.MONO_TOGGLE);
}
case 144: break;
case 71:
{ if (!needIndexCloser)
throw new CreoleParseException(
"Tangled index entry marker (...) pairing",
yychar, yyline, yycolumn);
needIndexCloser = false;
}
case 145: break;
case 65:
{ // The optional 2nd half may in fact be a {{image}} instead of the target
// URL. In that case, the parser will handle it.
// We delimit label from url with 0 char.
StringBuilder sb = new StringBuilder(yytext());
if (yystate() == YYINITIAL) {
pushState();
yybegin(PSTATE);
}
return newToken(Terminals.URL,
sb.substring(2, yylength()-2), sb.indexOf("|") - 2);
}
case 146: break;
case 58:
// lookahead expression with fixed base length
zzMarkedPos = zzStartRead + 1;
{ return newToken(Terminals.END_DT);
}
case 147: break;
case 82:
{ return newToken(Terminals.URL, yytext());
}
case 148: break;
case 73:
{ int startIndex = yytext().indexOf('!');
return newToken(Terminals.NESTED_HTMLCOMMENT,
yytext().substring(startIndex+1, yylength() - 2));
}
case 149: break;
case 21:
{ return newToken(Terminals.DT);
}
case 150: break;
case 60:
{ pushState();
yypushback(yylength());
yybegin(PSTATE);
}
case 151: break;
case 12:
{ yypushback(yylength());
yybegin(TABLESTATE);
return newToken(Terminals.END_PARA);
}
case 152: break;
case 89:
{ // Pres starting at ^{st} inside jcxBlocks handled by NESTED_...
yypushback(1);
return newToken((yystate() == YYINITIAL)
? Terminals.ROOTLVL_NOWIKI : Terminals.NESTED_NOWIKI,
matcher(BlockPrePattern).group(1));
}
case 153: break;
case 24:
{ pushState();
yybegin(PSTATE);
return newToken(Terminals.MONO_TOGGLE);
}
case 154: break;
case 85:
// lookahead expression with fixed base length
zzMarkedPos = zzStartRead + 1;
{ pushState();
urlDeferringState = PSTATE;
yybegin(ESCURL);
return newToken(Terminals.TEXT, yytext());
}
case 155: break;
case 102:
{ yypushback(1);
return newToken((yystate() == YYINITIAL)
? Terminals.ROOTLVL_NOWIKI : Terminals.NESTED_NOWIKI,
matcher(PrettyPattern).group(2) + '\u0003');
}
case 156: break;
case 29:
{ pushState();
yybegin(PSTATE);
return newToken(Terminals.SUB_TOGGLE);
}
case 157: break;
case 69:
{ yypushback(2); return newToken(Terminals.STRIKE_TOGGLE);
}
case 158: break;
case 17:
{ return newToken(Terminals.CELL);
}
case 159: break;
case 11:
{ yypushback(yylength());
yybegin(DLSTATE);
return newToken(Terminals.END_PARA);
}
case 160: break;
case 8:
{ if (yystate() == YYINITIAL) yybegin(PSTATE);
return newToken(Terminals.TEXT, yytext().substring(1));
}
case 161: break;
case 22:
{ pushState();
yybegin(PSTATE);
return newToken(Terminals.STRONG_TOGGLE);
}
case 162: break;
case 93:
{ return newToken(Terminals.FOOTREF, matcher(ParamPluginPattern).group(2));
}
case 163: break;
case 78:
{ return newToken(Terminals.END_JCXSPAN);
}
case 164: break;
case 103:
{ yypushback(1);
Matcher m = matcher(PrettyPattern);
return newToken((yystate() == YYINITIAL)
? Terminals.ROOTLVL_NOWIKI : Terminals.NESTED_NOWIKI,
m.group(2) + '\u0003' + m.group(1));
}
case 165: break;
case 63:
{ yypushback(yylength());
pushState();
yybegin(PSTATE);
}
case 166: break;
case 49:
// lookahead expression with fixed base length
zzMarkedPos = zzStartRead + 1;
{ return newToken(Terminals.END_LI, null, listLevel);
}
case 167: break;
case 48:
// lookahead expression with fixed base length
zzMarkedPos = zzStartRead + 1;
{ yybegin(popState());
return newToken(Terminals.FINAL_LI);
}
case 168: break;
case 42:
{ return newToken(Terminals.STRIKE_TOGGLE);
}
case 169: break;
case 55:
{ return newToken(Terminals.TEXT, "\n");
}
case 170: break;
case 15:
{ yybegin(urlDeferringState); // Already been pushed, if necessary
return newToken(Terminals.TEXT, yytext());
}
case 171: break;
case 14:
{ Matcher m = matcher(ListLevelPattern);
if (m.groupCount() != 2)
throw new RuntimeException(
"List-item Matcher captured " + m.groupCount() + " groups");
return newToken(Terminals.LI,
Character.toString(m.group(1).charAt(0)),
m.group(1).length()
* ((m.group(2) != null && m.group(2).length() > 0) ? -1 : 1)
);
}
case 172: break;
case 97:
{ return newToken(Terminals.NESTED_ENUMFORMATS,
matcher(ParamPluginPattern).group(2));
}
case 173: break;
case 31:
{ if (yystate() == YYINITIAL) yybegin(PSTATE);
return newToken(Terminals.HARDSPACE); // Going with HardSpace here
}
case 174: break;
case 44:
{ return newToken(Terminals.SUP_TOGGLE);
}
case 175: break;
case 77:
{ Matcher m = matcher(JcxPattern);
if (m.groupCount() != 2)
throw new RuntimeException(
"JCX Matcher captured " + m.groupCount() + " groups");
String classNames = m.group(2);
return newToken(Terminals.JCXSPAN,
(classNames == null) ? null : classNames.replaceAll("\\s+", " "));
}
case 176: break;
case 74:
{ // Raw HTML starting at ^{st} inside jcxBlocks handled by NESTED_...
int startIndex = yytext().indexOf('~');
return newToken(Terminals.ROOTLVL_RAWHTML,
yytext().substring(startIndex+1, yylength() - 2));
}
case 177: break;
case 23:
{ throw new CreoleParseException("Unknown plugin", yychar, yyline, yycolumn);
}
case 178: break;
case 92:
{ return newToken(Terminals.INDEXED, matcher(ParamPluginPattern).group(2));
}
case 179: break;
case 84:
{ yybegin(popState());
yypushback(yylength());
return newToken(Terminals.FINAL_DT);
}
case 180: break;
case 19:
{ int hLevel = yytext().trim().length();
if (hLevel < 1 || hLevel > 6)
throw new CreoleParseException(
"Unexpected level for Heading prefix: " + yytext().trim(),
yychar, yyline, yycolumn);
return newToken(Terminals.HEADING, null, hLevel);
}
case 181: break;
case 99:
{ return newToken(Terminals.ENTRYDEF,
matcher(ParamPluginPattern).group(2), 1);
}
case 182: break;
case 3:
{ return newToken(Terminals.ROOTLVL_NEWLINE);
}
case 183: break;
case 7:
{ return newToken(Terminals.TEXT, yytext());
}
case 184: break;
case 47:
// lookahead expression with fixed base length
zzMarkedPos = zzStartRead + 1;
{ return newToken(Terminals.TEXT, yytext());
}
case 185: break;
case 52:
// lookahead expression with fixed base length
zzMarkedPos = zzStartRead + 1;
{ return newToken(Terminals.END_ROW, null, listLevel);
}
case 186: break;
case 98:
{ return newToken(Terminals.ENTRYDEF,
matcher(ParamPluginPattern).group(2), 0);
}
case 187: break;
case 5:
{ pushState();
yybegin(DLSTATE);
return newToken(Terminals.DT);
}
case 188: break;
case 51:
// lookahead expression with fixed base length
zzMarkedPos = zzStartRead + 1;
{ yybegin(popState());
return newToken(Terminals.FINAL_ROW);
}
case 189: break;
case 75:
{ // HTML comments starting at ^{st} inside jcxBlocks handled by NESTED_...
int startIndex = yytext().indexOf('!');
return newToken(Terminals.ROOTLVL_HTMLCOMMENT,
yytext().substring(startIndex+1, yylength() - 2));
}
case 190: break;
case 50:
{ return newToken(Terminals.TAB);
}
case 191: break;
case 70:
{ Matcher m = matcher(JcxPattern);
if (m.groupCount() != 2)
throw new RuntimeException(
"JCX Matcher captured " + m.groupCount() + " groups");
String classNames = m.group(2);
// Note the recursion for JCXBLOCKSTATE
pushState();
yybegin(JCXBLOCKSTATE);
return newToken(Terminals.JCXBLOCK,
(classNames == null) ? null : classNames.replaceAll("\\s+", " "));
}
case 192: break;
case 86:
{ pushState();
yybegin(PSTATE);
return newToken(Terminals.TEXT, yytext().substring(1));
}
case 193: break;
case 28:
{ pushState();
yybegin(PSTATE);
return newToken(Terminals.SUP_TOGGLE);
}
case 194: break;
case 1:
{ return newToken(Terminals.EOF);
}
case 195: break;
case 101:
{ return newToken(Terminals.STYLER, matcher(ParamPluginPattern).group(2));
}
case 196: break;
case 100:
{ return newToken(Terminals.ENUMFORMATRESET,
matcher(ParamPluginPattern).group(2));
}
case 197: break;
case 26:
{ pushState();
yybegin(PSTATE);
return newToken(Terminals.STRIKE_TOGGLE);
}
case 198: break;
case 76:
{ return newToken(Terminals.HOR);
}
case 199: break;
case 33:
{ pushState();
yybegin(LISTATE);
return newToken(Terminals.TAB);
}
case 200: break;
case 87:
{ Matcher m = matcher(OptParamPluginPattern, true);
if (m.groupCount() != 2)
throw new RuntimeException(
"JCX Matcher captured " + m.groupCount() + " groups");
short t;
if (m.group(1).equals("toc"))
t = Terminals.TOC;
else if (m.group(1).equals("footNotes"))
t = Terminals.FOOTNOTES;
else if (m.group(1).equals("masterDefList"))
t = Terminals.MASTERDEFLIST;
else if (m.group(1).equals("index"))
t = Terminals.INDEX;
else throw new IllegalStateException(
"Unexpected Plugin directive: " + m.group(1));
return newToken(t, m.group(2));
}
case 201: break;
case 46:
{ return newToken(Terminals.HARDLINE);
}
case 202: break;
case 32:
// lookahead expression with fixed lookahead length
yypushback(1);
{ pushState();
yybegin(LISTATE);
return newToken(Terminals.LI, "*", 1);
}
case 203: break;
case 81:
// general lookahead, find correct zzMarkedPos
{ int zzFState = 18;
int zzFPos = zzStartRead;
if (zzFin.length <= zzBufferL.length) { zzFin = new boolean[zzBufferL.length+1]; }
boolean zzFinL[] = zzFin;
while (zzFState != -1 && zzFPos < zzMarkedPos) {
if ((zzAttrL[zzFState] & 1) == 1) { zzFinL[zzFPos] = true; }
zzInput = zzBufferL[zzFPos++];
zzFState = zzTransL[ zzRowMapL[zzFState] + zzCMapL[zzInput] ];
}
if (zzFState != -1 && (zzAttrL[zzFState] & 1) == 1) { zzFinL[zzFPos] = true; }
zzFState = 19;
zzFPos = zzMarkedPos;
while (!zzFinL[zzFPos] || (zzAttrL[zzFState] & 1) != 1) {
zzInput = zzBufferL[--zzFPos];
zzFState = zzTransL[ zzRowMapL[zzFState] + zzCMapL[zzInput] ];
};
zzMarkedPos = zzFPos;
}
{
}
case 204: break;
case 13:
{
}
case 205: break;
case 53:
// lookahead expression with fixed lookahead length
yypushback(1);
{
}
case 206: break;
default:
if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
zzAtEOF = true;
zzDoEOF();
switch (zzLexicalState) {
case DLSTATE: {
yybegin(DEATH); return newToken(Terminals.FINAL_DT);
}
case 982: break;
case LISTATE: {
yybegin(DEATH); return newToken(Terminals.FINAL_LI);
}
case 983: break;
case PSTATE: {
yybegin(DEATH); return newToken(Terminals.END_PARA);
}
case 984: break;
case TABLESTATE: {
yybegin(DEATH); return newToken(Terminals.FINAL_ROW);
}
case 985: break;
default:
{
return newToken(Terminals.EOF);
}
}
}
else {
zzScanError(ZZ_NO_MATCH);
}
}
}
}
}