// Generated by JFlex 1.9.2 http://jflex.de/  (tweaked for IntelliJ platform)
// source: Python.flex

/* It's an automatically generated code. Do not modify it. */
package com.jetbrains.python.lexer;

import com.intellij.psi.tree.IElementType;
import com.jetbrains.python.PyTokenTypes;
import com.intellij.openapi.util.text.StringUtil;



import java.util.BitSet;

public class _PythonLexer implements FlexLexerEx {

  /** 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 PENDING_DOCSTRING = 2;
  public static final int IN_DOCSTRING_OWNER = 4;
  public static final int FSTRING = 6;
  public static final int FSTRING_FRAGMENT = 8;
  public static final int FSTRING_FRAGMENT_FORMAT = 10;

  /**
   * 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,  5, 5
  };

  /**
   * 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\2\u1f00\1\u2000\7\u1f00\1\u2100\1\u2200\1\u2300"+
    "\1\u1f00\1\u2400\1\u2500\2\u1f00\31\u0100\1\u2600\121\u0100\1\u2700"+
    "\4\u0100\1\u2800\1\u0100\1\u2900\1\u2a00\1\u2b00\1\u2c00\1\u2d00"+
    "\1\u2e00\53\u0100\1\u2f00\10\u3000\31\u1f00\1\u0100\1\u3100\1\u3200"+
    "\1\u0100\1\u3300\1\u3400\1\u3500\1\u3600\1\u3700\1\u3800\1\u3900"+
    "\1\u3a00\1\u3b00\1\u0100\1\u3c00\1\u3d00\1\u3e00\1\u3f00\1\u4000"+
    "\1\u4100\1\u4200\1\u1f00\1\u4300\1\u4400\1\u4500\1\u4600\1\u4700"+
    "\1\u4800\1\u4900\1\u4a00\1\u4b00\1\u4c00\1\u4d00\1\u4e00\1\u1f00"+
    "\1\u4f00\1\u5000\1\u5100\1\u1f00\3\u0100\1\u5200\1\u5300\1\u5400"+
    "\12\u1f00\4\u0100\1\u5500\17\u1f00\2\u0100\1\u5600\41\u1f00\2\u0100"+
    "\1\u5700\1\u5800\2\u1f00\1\u5900\1\u5a00\27\u0100\1\u5b00\2\u0100"+
    "\1\u5c00\45\u1f00\1\u0100\1\u5d00\1\u5e00\11\u1f00\1\u5f00\24\u1f00"+
    "\1\u6000\1\u6100\1\u1f00\1\u6200\1\u6300\1\u6400\1\u6500\2\u1f00"+
    "\1\u6600\5\u1f00\1\u6700\1\u6800\1\u6900\5\u1f00\1\u6a00\1\u6b00"+
    "\4\u1f00\1\u6c00\2\u1f00\1\u6d00\16\u1f00\246\u0100\1\u6e00\20\u0100"+
    "\1\u6f00\1\u7000\25\u0100\1\u7100\34\u0100\1\u7200\14\u1f00\2\u0100"+
    "\1\u7300\u0b06\u1f00\1\u2700\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\22\0\1\6"+
    "\1\7\1\10\1\11\1\0\1\12\1\13\1\14\1\15"+
    "\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25"+
    "\1\26\6\27\2\30\1\31\1\32\1\33\1\34\1\35"+
    "\1\0\1\36\1\37\1\40\1\41\1\37\1\42\1\43"+
    "\3\44\1\45\1\44\1\46\1\44\1\47\1\50\2\44"+
    "\1\51\1\44\1\52\1\53\2\44\1\54\2\44\1\55"+
    "\1\56\1\57\1\60\1\61\1\62\1\63\1\64\1\65"+
    "\1\66\1\67\1\70\1\71\1\72\1\73\1\45\1\74"+
    "\1\75\1\76\1\77\1\100\1\101\1\44\1\102\1\103"+
    "\1\104\1\105\1\44\1\106\1\107\1\110\1\44\1\111"+
    "\1\112\1\113\1\114\6\0\1\115\44\0\1\44\12\0"+
    "\1\44\4\0\1\44\5\0\27\44\1\0\37\44\1\0"+
    "\u01ca\44\4\0\14\44\16\0\5\44\7\0\1\44\1\0"+
    "\1\44\21\0\165\44\1\0\2\44\2\0\4\44\1\0"+
    "\1\44\6\0\1\44\1\0\3\44\1\0\1\44\1\0"+
    "\24\44\1\0\123\44\1\0\213\44\1\0\255\44\1\0"+
    "\46\44\2\0\1\44\6\0\51\44\10\0\55\44\1\0"+
    "\1\44\1\0\2\44\1\0\2\44\1\0\1\44\10\0"+
    "\33\44\4\0\4\44\35\0\13\44\5\0\100\44\12\116"+
    "\4\0\146\44\1\0\10\44\2\0\12\44\1\0\6\44"+
    "\12\116\3\44\2\0\1\44\20\0\73\44\2\0\145\44"+
    "\16\0\12\116\54\44\4\0\1\44\2\0\1\44\2\0"+
    "\56\44\22\0\34\44\4\0\13\44\65\0\25\44\1\0"+
    "\10\44\25\0\17\44\1\0\201\44\2\0\12\116\1\0"+
    "\23\44\1\0\10\44\2\0\2\44\2\0\26\44\1\0"+
    "\7\44\1\0\1\44\3\0\4\44\2\0\11\44\2\0"+
    "\2\44\2\0\4\44\10\0\1\44\4\0\2\44\1\0"+
    "\5\44\2\0\12\116\2\44\12\0\1\44\1\0\1\44"+
    "\2\0\3\44\1\0\6\44\4\0\2\44\2\0\26\44"+
    "\1\0\7\44\1\0\2\44\1\0\2\44\1\0\2\44"+
    "\2\0\1\44\1\0\5\44\4\0\2\44\2\0\3\44"+
    "\3\0\1\44\7\0\4\44\1\0\1\44\7\0\12\116"+
    "\6\44\13\0\3\44\1\0\11\44\1\0\3\44\1\0"+
    "\26\44\1\0\7\44\1\0\2\44\1\0\5\44\2\0"+
    "\12\44\1\0\3\44\1\0\3\44\2\0\1\44\17\0"+
    "\4\44\2\0\12\116\11\0\7\44\1\0\3\44\1\0"+
    "\10\44\2\0\2\44\2\0\26\44\1\0\7\44\1\0"+
    "\2\44\1\0\5\44\2\0\11\44\2\0\2\44\2\0"+
    "\3\44\10\0\2\44\4\0\2\44\1\0\5\44\2\0"+
    "\12\116\1\0\1\44\20\0\2\44\1\0\6\44\3\0"+
    "\3\44\1\0\4\44\3\0\2\44\1\0\1\44\1\0"+
    "\2\44\3\0\2\44\3\0\3\44\3\0\14\44\4\0"+
    "\5\44\3\0\3\44\1\0\4\44\2\0\1\44\6\0"+
    "\1\44\16\0\12\116\20\0\15\44\1\0\3\44\1\0"+
    "\27\44\1\0\20\44\3\0\10\44\1\0\3\44\1\0"+
    "\4\44\7\0\2\44\1\0\3\44\5\0\4\44\2\0"+
    "\12\116\20\0\4\44\1\0\10\44\1\0\3\44\1\0"+
    "\27\44\1\0\12\44\1\0\5\44\2\0\11\44\1\0"+
    "\3\44\1\0\4\44\7\0\2\44\7\0\1\44\1\0"+
    "\4\44\2\0\12\116\1\0\2\44\15\0\4\44\1\0"+
    "\10\44\1\0\3\44\1\0\63\44\1\0\3\44\1\0"+
    "\5\44\5\0\4\44\7\0\5\44\2\0\12\116\12\0"+
    "\6\44\2\0\2\44\1\0\22\44\3\0\30\44\1\0"+
    "\11\44\1\0\1\44\2\0\7\44\3\0\1\44\4\0"+
    "\6\44\1\0\1\44\1\0\10\44\6\0\12\116\2\0"+
    "\2\44\15\0\72\44\5\0\17\44\1\0\12\116\47\0"+
    "\2\44\1\0\1\44\1\0\5\44\1\0\30\44\1\0"+
    "\1\44\1\0\27\44\2\0\5\44\1\0\1\44\1\0"+
    "\6\44\2\0\12\116\2\0\4\44\40\0\1\44\27\0"+
    "\2\44\6\0\12\116\13\0\1\44\1\0\1\44\1\0"+
    "\1\44\4\0\12\44\1\0\44\44\4\0\24\44\1\0"+
    "\22\44\1\0\44\44\11\0\1\44\71\0\100\44\12\116"+
    "\6\0\100\44\12\116\4\44\2\0\46\44\1\0\1\44"+
    "\5\0\1\44\2\0\53\44\1\0\115\44\1\0\4\44"+
    "\2\0\7\44\1\0\1\44\1\0\4\44\2\0\51\44"+
    "\1\0\4\44\2\0\41\44\1\0\4\44\2\0\7\44"+
    "\1\0\1\44\1\0\4\44\2\0\17\44\1\0\71\44"+
    "\1\0\4\44\2\0\103\44\2\0\3\44\40\0\20\44"+
    "\20\0\126\44\2\0\6\44\3\0\u016c\44\2\0\21\44"+
    "\1\0\32\44\5\0\113\44\3\0\13\44\7\0\15\44"+
    "\1\0\7\44\13\0\25\44\13\0\24\44\14\0\15\44"+
    "\1\0\3\44\1\0\2\44\14\0\124\44\3\0\1\44"+
    "\4\0\2\44\2\0\12\116\41\0\3\44\2\0\12\116"+
    "\6\0\131\44\7\0\53\44\5\0\106\44\12\0\37\44"+
    "\1\0\14\44\4\0\14\44\12\0\12\116\36\44\2\0"+
    "\5\44\13\0\54\44\4\0\32\44\6\0\12\116\46\0"+
    "\34\44\4\0\77\44\1\0\35\44\2\0\1\44\12\116"+
    "\6\0\12\116\15\0\1\44\10\0\17\44\101\0\114\44"+
    "\4\0\12\116\21\0\11\44\14\0\60\44\12\116\72\44"+
    "\14\0\70\44\10\0\12\116\3\0\3\44\12\116\44\44"+
    "\2\0\11\44\7\0\53\44\2\0\3\44\20\0\3\44"+
    "\1\0\47\44\5\0\372\44\1\0\33\44\2\0\6\44"+
    "\2\0\46\44\2\0\6\44\2\0\10\44\1\0\1\44"+
    "\1\0\1\44\1\0\1\44\1\0\37\44\2\0\65\44"+
    "\1\0\7\44\1\0\1\44\3\0\3\44\1\0\7\44"+
    "\3\0\4\44\2\0\6\44\4\0\15\44\5\0\3\44"+
    "\1\0\7\44\53\0\2\115\25\0\2\44\23\0\1\44"+
    "\34\0\1\44\15\0\1\44\20\0\15\44\63\0\41\44"+
    "\21\0\1\44\4\0\1\44\2\0\12\44\1\0\1\44"+
    "\3\0\5\44\6\0\1\44\1\0\1\44\1\0\1\44"+
    "\1\0\4\44\1\0\13\44\2\0\4\44\5\0\5\44"+
    "\4\0\1\44\21\0\51\44\u022d\0\64\44\26\0\57\44"+
    "\1\0\57\44\1\0\205\44\6\0\11\44\14\0\46\44"+
    "\1\0\1\44\5\0\1\44\2\0\70\44\7\0\1\44"+
    "\17\0\30\44\11\0\7\44\1\0\7\44\1\0\7\44"+
    "\1\0\7\44\1\0\7\44\1\0\7\44\1\0\7\44"+
    "\1\0\7\44\1\0\40\44\57\0\1\44\325\0\3\44"+
    "\31\0\17\44\1\0\5\44\2\0\5\44\4\0\126\44"+
    "\2\0\2\44\2\0\3\44\1\0\132\44\1\0\4\44"+
    "\5\0\53\44\1\0\136\44\21\0\33\44\65\0\306\44"+
    "\112\0\360\44\20\0\215\44\103\0\56\44\2\0\15\44"+
    "\3\0\20\44\12\116\2\44\24\0\63\44\1\0\12\44"+
    "\1\0\163\44\45\0\11\44\2\0\147\44\2\0\65\44"+
    "\2\0\5\44\60\0\61\44\30\0\64\44\14\0\106\44"+
    "\12\0\12\116\6\0\30\44\3\0\1\44\1\0\3\44"+
    "\12\116\44\44\2\0\44\44\14\0\35\44\3\0\101\44"+
    "\16\0\1\44\12\116\6\0\20\44\12\116\5\44\1\0"+
    "\67\44\11\0\16\44\2\0\12\116\6\0\27\44\3\0"+
    "\111\44\30\0\3\44\2\0\20\44\2\0\5\44\12\0"+
    "\6\44\2\0\6\44\2\0\6\44\11\0\7\44\1\0"+
    "\7\44\1\0\53\44\1\0\14\44\10\0\173\44\1\0"+
    "\2\44\2\0\12\116\6\0\244\44\14\0\27\44\4\0"+
    "\61\44\4\0\u0100\115\156\44\2\0\152\44\46\0\7\44"+
    "\14\0\5\44\5\0\14\44\1\0\15\44\1\0\5\44"+
    "\1\0\1\44\1\0\2\44\1\0\2\44\1\0\154\44"+
    "\41\0\153\44\22\0\100\44\2\0\66\44\50\0\14\44"+
    "\4\0\20\44\20\0\20\44\3\0\2\44\30\0\3\44"+
    "\40\0\5\44\1\0\207\44\23\0\12\116\7\0\32\44"+
    "\4\0\1\44\1\0\32\44\13\0\131\44\3\0\6\44"+
    "\2\0\6\44\2\0\6\44\2\0\3\44\43\0\14\44"+
    "\1\0\32\44\1\0\23\44\1\0\2\44\1\0\17\44"+
    "\2\0\16\44\42\0\173\44\105\0\65\44\210\0\1\44"+
    "\202\0\35\44\3\0\61\44\17\0\1\44\37\0\40\44"+
    "\15\0\36\44\5\0\53\44\5\0\36\44\2\0\44\44"+
    "\4\0\10\44\1\0\5\44\52\0\236\44\2\0\12\116"+
    "\6\0\44\44\4\0\44\44\4\0\50\44\10\0\64\44"+
    "\234\0\67\44\11\0\26\44\12\0\10\44\230\0\6\44"+
    "\2\0\1\44\1\0\54\44\1\0\2\44\3\0\1\44"+
    "\2\0\27\44\12\0\27\44\11\0\37\44\101\0\23\44"+
    "\1\0\2\44\12\0\26\44\12\0\32\44\106\0\70\44"+
    "\6\0\2\44\100\0\4\44\1\0\2\44\5\0\10\44"+
    "\1\0\3\44\1\0\35\44\2\0\3\44\4\0\1\44"+
    "\40\0\35\44\3\0\35\44\43\0\10\44\1\0\36\44"+
    "\31\0\66\44\12\0\26\44\12\0\23\44\15\0\22\44"+
    "\156\0\111\44\67\0\63\44\15\0\63\44\15\0\50\44"+
    "\10\0\12\116\306\0\35\44\12\0\1\44\10\0\41\44"+
    "\217\0\27\44\11\0\107\44\37\0\12\116\17\0\74\44"+
    "\25\0\31\44\7\0\12\116\6\0\65\44\1\0\12\116"+
    "\4\0\3\44\11\0\44\44\2\0\1\44\11\0\105\44"+
    "\4\0\4\44\3\0\12\116\1\44\1\0\1\44\43\0"+
    "\22\44\1\0\45\44\6\0\1\44\101\0\7\44\1\0"+
    "\1\44\1\0\4\44\1\0\17\44\1\0\12\44\7\0"+
    "\73\44\5\0\12\116\6\0\4\44\1\0\10\44\2\0"+
    "\2\44\2\0\26\44\1\0\7\44\1\0\2\44\1\0"+
    "\5\44\1\0\12\44\2\0\2\44\2\0\3\44\2\0"+
    "\1\44\6\0\1\44\5\0\7\44\2\0\7\44\3\0"+
    "\5\44\213\0\113\44\5\0\12\116\4\0\2\44\40\0"+
    "\106\44\1\0\1\44\10\0\12\116\246\0\66\44\2\0"+
    "\11\44\27\0\6\44\42\0\101\44\3\0\1\44\13\0"+
    "\12\116\46\0\71\44\7\0\12\116\66\0\33\44\2\0"+
    "\17\44\4\0\12\116\306\0\73\44\145\0\100\44\12\116"+
    "\25\0\1\44\240\0\10\44\2\0\56\44\2\0\10\44"+
    "\1\0\2\44\33\0\77\44\10\0\1\44\10\0\112\44"+
    "\3\0\1\44\42\0\71\44\7\0\11\44\1\0\55\44"+
    "\1\0\11\44\17\0\12\116\30\0\36\44\2\0\26\44"+
    "\1\0\16\44\111\0\7\44\1\0\2\44\1\0\54\44"+
    "\3\0\1\44\1\0\2\44\1\0\11\44\10\0\12\116"+
    "\6\0\6\44\1\0\2\44\1\0\45\44\1\0\2\44"+
    "\1\0\6\44\7\0\12\116\u0136\0\27\44\11\0\232\44"+
    "\146\0\157\44\21\0\304\44\274\0\57\44\321\0\107\44"+
    "\271\0\71\44\7\0\37\44\1\0\12\116\146\0\36\44"+
    "\2\0\5\44\13\0\67\44\11\0\4\44\14\0\12\116"+
    "\11\0\25\44\5\0\23\44\260\0\100\44\200\0\113\44"+
    "\4\0\71\44\7\0\21\44\100\0\2\44\1\0\1\44"+
    "\34\0\370\44\10\0\363\44\15\0\37\44\61\0\3\44"+
    "\21\0\4\44\10\0\u018c\44\4\0\153\44\5\0\15\44"+
    "\3\0\11\44\7\0\12\44\3\0\2\44\306\0\5\44"+
    "\3\0\6\44\10\0\10\44\2\0\7\44\36\0\4\44"+
    "\224\0\3\44\273\0\125\44\1\0\107\44\1\0\2\44"+
    "\2\0\1\44\2\0\2\44\2\0\4\44\1\0\14\44"+
    "\1\0\1\44\1\0\7\44\1\0\101\44\1\0\4\44"+
    "\2\0\10\44\1\0\7\44\1\0\34\44\1\0\4\44"+
    "\1\0\5\44\1\0\1\44\3\0\7\44\1\0\u0154\44"+
    "\2\0\31\44\1\0\31\44\1\0\37\44\1\0\31\44"+
    "\1\0\37\44\1\0\31\44\1\0\37\44\1\0\31\44"+
    "\1\0\37\44\1\0\31\44\1\0\10\44\2\0\62\116"+
    "\67\44\4\0\62\44\10\0\1\44\16\0\1\44\26\0"+
    "\5\44\1\0\17\44\120\0\7\44\1\0\21\44\2\0"+
    "\7\44\1\0\2\44\1\0\5\44\325\0\55\44\3\0"+
    "\16\44\2\0\12\116\4\0\1\44\u0171\0\60\44\12\116"+
    "\6\0\305\44\13\0\7\44\51\0\114\44\4\0\12\116"+
    "\246\0\4\44\1\0\33\44\1\0\2\44\1\0\1\44"+
    "\2\0\1\44\1\0\12\44\1\0\4\44\1\0\1\44"+
    "\1\0\1\44\6\0\1\44\4\0\1\44\1\0\1\44"+
    "\1\0\1\44\1\0\3\44\1\0\2\44\1\0\1\44"+
    "\2\0\1\44\1\0\1\44\1\0\1\44\1\0\1\44"+
    "\1\0\1\44\1\0\2\44\1\0\1\44\2\0\4\44"+
    "\1\0\7\44\1\0\4\44\1\0\4\44\1\0\1\44"+
    "\1\0\12\44\1\0\21\44\5\0\3\44\1\0\5\44"+
    "\1\0\21\44\164\0\32\44\6\0\32\44\6\0\32\44"+
    "\166\0\327\44\51\0\65\44\13\0\336\44\2\0\u0182\44"+
    "\16\0\u0131\44\37\0\36\44\342\0";

  private static int [] zzUnpackcmap_blocks() {
    int [] result = new int[29696];
    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 =
    "\13\0\1\1\1\2\1\3\1\4\1\5\1\1\1\6"+
    "\1\7\1\10\1\11\1\6\1\12\1\13\1\14\1\15"+
    "\1\16\1\17\1\20\1\21\2\22\1\23\1\24\1\25"+
    "\1\26\1\27\1\30\3\31\1\32\1\33\1\34\1\35"+
    "\1\36\20\31\1\37\1\40\1\41\1\42\1\43\1\44"+
    "\1\45\1\46\1\45\1\43\2\47\1\23\4\31\1\50"+
    "\1\51\2\52\1\50\1\53\1\54\1\55\2\56\1\57"+
    "\1\60\1\61\2\31\1\62\1\63\10\31\1\64\1\65"+
    "\2\50\1\53\1\66\12\0\1\67\1\6\1\70\2\6"+
    "\1\71\1\72\3\6\1\73\1\74\1\75\1\76\1\77"+
    "\1\100\1\101\1\102\1\100\1\22\3\0\1\103\1\22"+
    "\1\0\1\22\2\0\1\22\1\0\1\104\1\105\1\106"+
    "\1\107\1\110\1\111\1\112\1\113\1\31\2\114\1\31"+
    "\1\115\14\31\1\116\1\31\1\117\1\120\2\31\1\121"+
    "\6\31\1\122\1\45\1\123\5\45\1\0\6\47\1\124"+
    "\2\0\2\31\2\0\2\52\1\50\1\55\6\56\1\125"+
    "\1\31\2\126\15\31\1\0\1\50\12\0\1\6\1\0"+
    "\1\127\1\130\1\127\1\131\1\0\1\132\1\0\1\22"+
    "\2\0\1\100\3\22\1\0\3\22\1\0\1\133\1\134"+
    "\1\31\2\0\1\31\1\135\4\31\1\136\1\137\4\31"+
    "\1\140\4\31\1\141\3\31\1\142\2\31\1\45\1\0"+
    "\1\143\1\144\1\143\1\0\1\47\2\145\1\31\1\52"+
    "\1\56\2\146\1\31\2\0\4\31\1\147\4\31\1\150"+
    "\2\31\1\50\6\0\1\151\1\0\1\151\1\114\5\31"+
    "\1\152\1\153\2\31\1\154\3\31\1\155\4\31\1\0"+
    "\1\144\1\0\1\144\10\0\1\126\11\31\1\156\10\0"+
    "\1\31\1\157\1\160\6\31\1\161\1\31\1\162\1\163"+
    "\10\0\1\164\1\165\3\31\1\166\1\31\1\167\2\0"+
    "\1\127\1\170\1\31\1\171\1\31\1\172\1\173\1\174"+
    "\1\175\1\143\1\145\1\146\1\31\1\176\1\31\1\177"+
    "\1\0\1\200\1\151\1\31\1\201\1\31\1\202\1\203"+
    "\1\204";

  private static int [] zzUnpackAction() {
    int [] result = new int[445];
    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\117\0\236\0\355\0\u013c\0\u018b\0\u01da\0\u0229"+
    "\0\u0278\0\u02c7\0\u0316\0\u0365\0\u0365\0\u0365\0\u0365\0\u0365"+
    "\0\u03b4\0\u0403\0\u0452\0\u04a1\0\u04f0\0\u053f\0\u0365\0\u0365"+
    "\0\u058e\0\u05dd\0\u0365\0\u062c\0\u067b\0\u06ca\0\u0719\0\u0768"+
    "\0\u07b7\0\u0365\0\u0806\0\u0855\0\u08a4\0\u08f3\0\u0942\0\u0991"+
    "\0\u09e0\0\u0365\0\u0365\0\u0365\0\u0a2f\0\u0365\0\u0a7e\0\u0acd"+
    "\0\u0b1c\0\u0b6b\0\u0bba\0\u0c09\0\u0c58\0\u0ca7\0\u0cf6\0\u0d45"+
    "\0\u0d94\0\u0de3\0\u0e32\0\u0e81\0\u0ed0\0\u0f1f\0\u0365\0\u0f6e"+
    "\0\u0365\0\u0365\0\u0365\0\u0365\0\u0fbd\0\u100c\0\u105b\0\u10aa"+
    "\0\u10f9\0\u1148\0\u1197\0\u11e6\0\u1235\0\u1284\0\u12d3\0\u1322"+
    "\0\u0365\0\u1371\0\u13c0\0\u140f\0\u145e\0\u0365\0\u14ad\0\u14fc"+
    "\0\u154b\0\u0365\0\u0365\0\u159a\0\u15e9\0\u1638\0\u0365\0\u0365"+
    "\0\u1687\0\u16d6\0\u1725\0\u1774\0\u17c3\0\u1812\0\u1861\0\u18b0"+
    "\0\u0365\0\u0365\0\u18ff\0\u194e\0\u0365\0\u0365\0\u199d\0\u19ec"+
    "\0\u1a3b\0\u1a8a\0\u1ad9\0\u1b28\0\u1b77\0\u1bc6\0\u1c15\0\u1c64"+
    "\0\u0365\0\u1cb3\0\u0365\0\u1d02\0\u1d51\0\u0365\0\u0365\0\u1da0"+
    "\0\u1def\0\u1e3e\0\u1e8d\0\u0365\0\u0365\0\u0365\0\u0365\0\u1edc"+
    "\0\u1f2b\0\u0365\0\u1f7a\0\u1fc9\0\u2018\0\u2067\0\u20b6\0\u0365"+
    "\0\u2105\0\u2154\0\u21a3\0\u21f2\0\u2241\0\u2290\0\u22df\0\u0365"+
    "\0\u232e\0\u0365\0\u0365\0\u0365\0\u0365\0\u237d\0\u0365\0\u23cc"+
    "\0\u241b\0\u246a\0\u24b9\0\u0365\0\u2508\0\u2557\0\u25a6\0\u25f5"+
    "\0\u2644\0\u2693\0\u26e2\0\u2731\0\u2780\0\u27cf\0\u281e\0\u286d"+
    "\0\u0942\0\u28bc\0\u0942\0\u0942\0\u290b\0\u295a\0\u0942\0\u29a9"+
    "\0\u29f8\0\u2a47\0\u2a96\0\u2ae5\0\u2b34\0\u0365\0\u2b83\0\u0365"+
    "\0\u2bd2\0\u2c21\0\u2c70\0\u2cbf\0\u2d0e\0\u2d5d\0\u2dac\0\u2dfb"+
    "\0\u2e4a\0\u2e99\0\u2ee8\0\u2f37\0\u0365\0\u2f86\0\u2fd5\0\u3024"+
    "\0\u3073\0\u140f\0\u145e\0\u30c2\0\u3111\0\u3160\0\u31af\0\u31fe"+
    "\0\u324d\0\u329c\0\u32eb\0\u333a\0\u3389\0\u0365\0\u33d8\0\u3427"+
    "\0\u3476\0\u34c5\0\u3514\0\u3563\0\u35b2\0\u3601\0\u3650\0\u369f"+
    "\0\u36ee\0\u373d\0\u378c\0\u37db\0\u382a\0\u3879\0\u194e\0\u38c8"+
    "\0\u0365\0\u3917\0\u3966\0\u39b5\0\u3a04\0\u3a53\0\u3aa2\0\u3a04"+
    "\0\u3a53\0\u3af1\0\u3b40\0\u3b40\0\u3b8f\0\u0365\0\u3bde\0\u0365"+
    "\0\u067b\0\u0365\0\u3c2d\0\u3c7c\0\u3ccb\0\u3d1a\0\u3d69\0\u3db8"+
    "\0\u0365\0\u3e07\0\u3e56\0\u3ea5\0\u3ef4\0\u3f43\0\u3f92\0\u0365"+
    "\0\u0365\0\u3fe1\0\u4030\0\u407f\0\u40ce\0\u0942\0\u411d\0\u416c"+
    "\0\u41bb\0\u420a\0\u0942\0\u0942\0\u4259\0\u42a8\0\u42f7\0\u4346"+
    "\0\u0942\0\u4395\0\u43e4\0\u4433\0\u4482\0\u0942\0\u44d1\0\u4520"+
    "\0\u456f\0\u0942\0\u45be\0\u460d\0\u465c\0\u465c\0\u46ab\0\u0365"+
    "\0\u46fa\0\u4749\0\u0365\0\u4798\0\u47e7\0\u4836\0\u0365\0\u0365"+
    "\0\u4885\0\u48d4\0\u4923\0\u4972\0\u49c1\0\u4a10\0\u4a5f\0\u4aae"+
    "\0\u4afd\0\u0942\0\u4b4c\0\u4b9b\0\u4bea\0\u4c39\0\u0942\0\u4c88"+
    "\0\u4cd7\0\u4d26\0\u4d75\0\u4dc4\0\u4e13\0\u4e62\0\u4eb1\0\u4f00"+
    "\0\u4f4f\0\u4f9e\0\u4fed\0\u0365\0\u503c\0\u508b\0\u50da\0\u5129"+
    "\0\u5178\0\u0942\0\u0942\0\u51c7\0\u5216\0\u0942\0\u5265\0\u52b4"+
    "\0\u5303\0\u0942\0\u5352\0\u53a1\0\u53f0\0\u543f\0\u548e\0\u54dd"+
    "\0\u552c\0\u557b\0\u55ca\0\u5619\0\u5668\0\u56b7\0\u5706\0\u5755"+
    "\0\u57a4\0\u57f3\0\u0365\0\u5842\0\u5891\0\u58e0\0\u592f\0\u597e"+
    "\0\u59cd\0\u5a1c\0\u5a6b\0\u5aba\0\u0942\0\u5b09\0\u5b58\0\u5ba7"+
    "\0\u5bf6\0\u5c45\0\u4f4f\0\u5c94\0\u4fed\0\u5ce3\0\u0942\0\u0942"+
    "\0\u5d32\0\u5d81\0\u5dd0\0\u5e1f\0\u5e6e\0\u5ebd\0\u0942\0\u5f0c"+
    "\0\u0942\0\u0942\0\u5f5b\0\u54dd\0\u5faa\0\u557b\0\u5ff9\0\u6048"+
    "\0\u6097\0\u60e6\0\u0942\0\u0942\0\u6135\0\u6184\0\u61d3\0\u0942"+
    "\0\u6222\0\u0942\0\u6271\0\u62c0\0\u630f\0\u0942\0\u635e\0\u0942"+
    "\0\u63ad\0\u0942\0\u0942\0\u0942\0\u0942\0\u465c\0\u0365\0\u0365"+
    "\0\u63fc\0\u0942\0\u644b\0\u0942\0\u630f\0\u0365\0\u0365\0\u649a"+
    "\0\u0942\0\u64e9\0\u0942\0\u0942\0\u0942";

  private static int [] zzUnpackRowMap() {
    int [] result = new int[445];
    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\14\1\15\1\16\1\14\1\17\1\14\1\20\1\21"+
    "\1\22\1\23\1\24\1\25\1\26\1\27\1\30\1\31"+
    "\1\32\1\33\1\34\1\35\1\36\1\37\3\40\1\41"+
    "\1\42\1\43\1\44\1\45\1\46\1\47\2\50\1\47"+
    "\1\51\5\47\1\50\1\51\1\50\1\47\1\52\1\53"+
    "\1\54\1\55\1\47\1\56\1\57\1\60\1\61\1\62"+
    "\1\63\1\64\1\65\1\47\1\66\1\47\1\67\1\47"+
    "\1\70\1\71\1\72\1\73\1\47\1\74\1\50\1\75"+
    "\1\47\1\76\1\77\1\100\1\101\1\102\2\14\1\103"+
    "\1\15\1\104\1\14\1\17\1\0\1\20\1\103\1\105"+
    "\1\106\2\103\1\107\23\103\2\110\7\103\1\110\1\103"+
    "\1\110\2\103\1\53\5\103\2\110\14\103\1\110\2\103"+
    "\1\110\7\103\1\0\1\103\1\14\1\15\1\104\1\14"+
    "\1\17\1\14\1\20\1\21\1\111\1\106\1\24\1\25"+
    "\1\112\1\27\1\30\1\31\1\32\1\33\1\34\1\35"+
    "\1\36\1\37\3\40\1\113\1\42\1\43\1\44\1\45"+
    "\1\46\1\47\2\114\1\47\1\51\5\47\1\114\1\51"+
    "\1\114\1\47\1\52\1\53\1\54\1\55\1\47\1\56"+
    "\1\57\1\115\1\116\1\62\1\63\1\64\1\65\1\47"+
    "\1\66\1\47\1\67\1\47\1\70\1\71\1\72\1\117"+
    "\1\47\1\74\1\114\1\75\1\47\1\76\1\77\1\100"+
    "\1\101\1\102\2\14\2\120\1\121\2\120\1\14\2\120"+
    "\1\122\3\120\1\123\41\120\1\124\32\120\1\125\5\120"+
    "\1\14\1\15\1\126\1\14\1\17\1\14\1\20\1\127"+
    "\1\130\1\106\1\24\1\25\1\131\1\132\1\133\1\31"+
    "\1\32\1\33\1\34\1\35\1\36\1\37\3\40\1\134"+
    "\1\42\1\43\1\44\1\45\1\46\1\47\2\135\1\47"+
    "\1\136\5\47\1\135\1\136\1\135\1\47\1\137\1\53"+
    "\1\140\1\55\1\47\1\56\1\57\1\141\1\142\1\143"+
    "\1\144\1\145\1\65\1\47\1\66\1\47\1\67\1\47"+
    "\1\70\1\71\1\72\1\146\1\47\1\147\1\135\1\150"+
    "\1\47\1\76\1\151\1\100\1\152\1\102\2\14\2\153"+
    "\1\121\2\153\1\14\2\153\1\122\3\153\1\123\41\153"+
    "\1\154\32\153\1\155\1\153\1\156\3\153\10\0\1\157"+
    "\3\0\1\160\23\0\2\161\7\0\1\161\1\0\1\161"+
    "\10\0\2\161\14\0\1\161\2\0\1\161\13\0\1\162"+
    "\6\0\1\162\20\0\1\162\74\0\1\163\3\0\1\164"+
    "\23\0\2\165\7\0\1\165\1\0\1\165\10\0\2\165"+
    "\14\0\1\165\2\0\1\165\67\0\1\162\50\0\1\166"+
    "\3\0\1\167\23\0\2\170\7\0\1\170\1\0\1\170"+
    "\10\0\2\170\14\0\1\170\2\0\1\170\164\0\1\171"+
    "\62\0\2\172\1\173\2\172\1\0\2\172\1\174\45\172"+
    "\1\175\40\172\2\23\1\0\2\23\1\0\111\23\34\0"+
    "\1\176\116\0\1\177\62\0\2\200\1\173\2\200\1\0"+
    "\6\200\1\201\41\200\1\202\40\200\17\0\1\203\14\0"+
    "\1\204\116\0\1\205\116\0\1\206\1\207\106\0\4\210"+
    "\112\0\1\211\7\0\1\212\105\0\1\213\1\0\3\214"+
    "\1\215\7\0\1\216\1\0\1\217\2\0\1\220\1\221"+
    "\1\0\1\222\2\0\1\223\1\224\4\0\1\225\2\0"+
    "\1\216\2\0\1\217\5\0\1\226\2\0\1\222\4\0"+
    "\1\223\1\0\1\224\32\0\1\213\1\0\4\40\11\0"+
    "\1\217\2\0\1\220\1\221\4\0\1\223\5\0\1\227"+
    "\5\0\1\217\5\0\1\226\7\0\1\223\45\0\1\230"+
    "\115\0\1\231\1\232\1\233\115\0\1\234\116\0\1\235"+
    "\1\236\115\0\1\237\107\0\4\47\6\0\16\47\4\0"+
    "\1\47\1\0\26\47\5\0\1\47\10\0\1\22\3\0"+
    "\1\26\10\0\4\47\6\0\1\47\2\240\1\47\1\51"+
    "\5\47\1\240\1\51\1\240\1\47\4\0\1\47\1\0"+
    "\1\47\2\240\2\47\1\51\11\47\1\240\1\47\1\51"+
    "\1\240\3\47\5\0\1\47\10\0\1\241\3\0\1\242"+
    "\10\0\4\47\6\0\1\47\2\243\7\47\1\243\1\47"+
    "\1\243\1\47\4\0\1\47\1\0\1\47\2\243\14\47"+
    "\1\243\2\47\1\243\3\47\5\0\1\47\34\0\1\244"+
    "\107\0\4\47\6\0\16\47\4\0\1\47\1\0\14\47"+
    "\1\245\3\47\1\246\5\47\5\0\1\47\10\0\1\22"+
    "\3\0\1\26\10\0\4\47\6\0\1\47\2\240\1\47"+
    "\1\51\5\47\1\240\1\51\1\240\1\47\4\0\1\47"+
    "\1\0\1\47\2\240\2\47\1\51\11\47\1\247\1\47"+
    "\1\51\1\240\3\47\5\0\1\47\10\0\1\22\3\0"+
    "\1\26\10\0\4\47\6\0\1\47\2\240\1\47\1\51"+
    "\5\47\1\240\1\51\1\240\1\47\4\0\1\47\1\0"+
    "\1\47\2\240\2\47\1\51\4\47\1\250\2\47\1\251"+
    "\1\47\1\240\1\47\1\51\1\240\3\47\5\0\1\47"+
    "\25\0\4\47\6\0\16\47\4\0\1\47\1\0\4\47"+
    "\1\252\21\47\5\0\1\47\25\0\4\47\6\0\16\47"+
    "\4\0\1\47\1\0\12\47\1\253\11\47\1\254\1\47"+
    "\5\0\1\47\10\0\1\241\3\0\1\242\10\0\4\47"+
    "\6\0\1\47\2\243\7\47\1\243\1\47\1\243\1\47"+
    "\4\0\1\47\1\0\1\47\2\243\5\47\1\255\4\47"+
    "\1\256\1\47\1\257\2\47\1\243\3\47\5\0\1\47"+
    "\25\0\4\47\6\0\16\47\4\0\1\47\1\0\12\47"+
    "\1\260\13\47\5\0\1\47\25\0\4\47\6\0\16\47"+
    "\4\0\1\47\1\0\5\47\1\261\5\47\1\262\1\263"+
    "\3\47\1\264\5\47\5\0\1\47\25\0\4\47\6\0"+
    "\16\47\4\0\1\47\1\0\1\265\25\47\5\0\1\47"+
    "\25\0\4\47\6\0\16\47\4\0\1\47\1\0\15\47"+
    "\1\266\10\47\5\0\1\47\25\0\4\47\6\0\16\47"+
    "\4\0\1\47\1\0\17\47\1\267\6\47\5\0\1\47"+
    "\25\0\4\47\6\0\16\47\4\0\1\47\1\0\1\270"+
    "\25\47\5\0\1\47\10\0\1\22\3\0\1\26\10\0"+
    "\4\47\6\0\1\47\2\240\1\47\1\51\5\47\1\240"+
    "\1\51\1\240\1\47\4\0\1\47\1\0\1\271\2\240"+
    "\1\47\1\272\1\51\11\47\1\240\1\47\1\51\1\240"+
    "\3\47\5\0\1\47\10\0\1\241\3\0\1\242\10\0"+
    "\4\47\6\0\1\47\2\243\7\47\1\243\1\47\1\243"+
    "\1\47\4\0\1\47\1\0\1\47\2\243\14\47\1\273"+
    "\2\47\1\243\3\47\5\0\1\47\25\0\4\47\6\0"+
    "\16\47\4\0\1\47\1\0\7\47\1\274\16\47\5\0"+
    "\1\47\25\0\4\47\6\0\16\47\4\0\1\47\1\0"+
    "\10\47\1\275\15\47\5\0\1\47\34\0\1\276\62\0"+
    "\2\277\1\300\2\277\1\0\2\277\1\301\45\277\1\302"+
    "\40\277\2\106\1\0\2\106\1\0\111\106\2\303\1\300"+
    "\2\303\1\0\6\303\1\304\41\303\1\305\40\303\10\0"+
    "\1\105\3\0\1\107\23\0\2\306\7\0\1\306\1\0"+
    "\1\306\10\0\2\306\14\0\1\306\2\0\1\306\11\0"+
    "\2\307\1\0\2\307\1\0\2\307\1\310\45\307\1\311"+
    "\40\307\2\312\1\0\2\312\1\0\6\312\1\313\41\312"+
    "\1\314\40\312\2\0\1\315\3\0\1\316\2\0\1\317"+
    "\22\0\1\230\72\0\1\111\3\0\1\112\10\0\4\47"+
    "\6\0\1\47\2\320\1\47\1\51\5\47\1\320\1\51"+
    "\1\320\1\47\4\0\1\47\1\0\1\47\2\320\2\47"+
    "\1\51\11\47\1\320\1\47\1\51\1\320\3\47\5\0"+
    "\1\47\10\0\1\111\3\0\1\112\10\0\4\47\6\0"+
    "\1\47\2\320\1\47\1\51\5\47\1\320\1\51\1\320"+
    "\1\47\4\0\1\47\1\0\1\47\2\320\2\47\1\51"+
    "\11\47\1\321\1\47\1\51\1\320\3\47\5\0\1\47"+
    "\10\0\1\111\3\0\1\112\10\0\4\47\6\0\1\47"+
    "\2\320\1\47\1\51\5\47\1\320\1\51\1\320\1\47"+
    "\4\0\1\47\1\0\1\47\2\320\2\47\1\51\4\47"+
    "\1\250\2\47\1\251\1\47\1\320\1\47\1\51\1\320"+
    "\3\47\5\0\1\47\10\0\1\111\3\0\1\112\10\0"+
    "\4\47\6\0\1\47\2\320\1\47\1\51\5\47\1\320"+
    "\1\51\1\320\1\47\4\0\1\47\1\0\1\271\2\320"+
    "\1\47\1\272\1\51\11\47\1\320\1\47\1\51\1\320"+
    "\3\47\5\0\1\47\2\120\1\0\2\120\1\0\2\120"+
    "\1\0\3\120\1\0\41\120\1\322\32\120\1\323\5\120"+
    "\10\0\1\324\122\0\1\325\102\0\47\120\1\326\41\120"+
    "\1\0\1\120\1\0\3\120\111\0\1\120\5\0\1\327"+
    "\2\0\2\327\2\0\1\327\1\0\3\327\1\0\14\327"+
    "\1\0\2\327\1\171\56\327\1\0\3\327\2\330\1\0"+
    "\2\330\1\0\2\330\1\331\45\330\1\332\40\330\2\333"+
    "\1\0\2\333\1\0\6\333\1\334\41\333\1\335\40\333"+
    "\34\0\1\336\72\0\1\130\3\0\1\131\10\0\4\47"+
    "\6\0\1\47\2\337\1\47\1\136\5\47\1\337\1\136"+
    "\1\337\1\47\4\0\1\47\1\0\1\47\2\337\2\47"+
    "\1\136\11\47\1\337\1\47\1\136\1\337\3\47\5\0"+
    "\1\47\10\0\1\340\3\0\1\341\10\0\4\47\6\0"+
    "\1\47\2\342\7\47\1\342\1\47\1\342\1\47\4\0"+
    "\1\47\1\0\1\47\2\342\14\47\1\342\2\47\1\342"+
    "\3\47\5\0\1\47\10\0\1\130\3\0\1\131\10\0"+
    "\4\47\6\0\1\47\2\337\1\47\1\136\5\47\1\337"+
    "\1\136\1\337\1\47\4\0\1\47\1\0\1\47\2\337"+
    "\2\47\1\136\11\47\1\343\1\47\1\136\1\337\3\47"+
    "\5\0\1\47\10\0\1\130\3\0\1\131\10\0\4\47"+
    "\6\0\1\47\2\337\1\47\1\136\5\47\1\337\1\136"+
    "\1\337\1\47\4\0\1\47\1\0\1\47\2\337\2\47"+
    "\1\136\4\47\1\344\2\47\1\345\1\47\1\337\1\47"+
    "\1\136\1\337\3\47\5\0\1\47\25\0\4\47\6\0"+
    "\16\47\4\0\1\47\1\0\4\47\1\346\21\47\5\0"+
    "\1\47\25\0\4\47\6\0\16\47\4\0\1\47\1\0"+
    "\12\47\1\253\11\47\1\347\1\47\5\0\1\47\10\0"+
    "\1\340\3\0\1\341\10\0\4\47\6\0\1\47\2\342"+
    "\7\47\1\342\1\47\1\342\1\47\4\0\1\47\1\0"+
    "\1\47\2\342\5\47\1\350\4\47\1\256\1\47\1\351"+
    "\2\47\1\342\3\47\5\0\1\47\10\0\1\130\3\0"+
    "\1\131\10\0\4\47\6\0\1\47\2\337\1\47\1\136"+
    "\5\47\1\337\1\136\1\337\1\47\4\0\1\47\1\0"+
    "\1\352\2\337\1\47\1\353\1\136\11\47\1\337\1\47"+
    "\1\136\1\337\3\47\5\0\1\47\10\0\1\340\3\0"+
    "\1\341\10\0\4\47\6\0\1\47\2\342\7\47\1\342"+
    "\1\47\1\342\1\47\4\0\1\47\1\0\1\47\2\342"+
    "\14\47\1\354\2\47\1\342\3\47\5\0\1\47\25\0"+
    "\4\47\6\0\16\47\4\0\1\47\1\0\7\47\1\355"+
    "\1\356\15\47\5\0\1\47\2\153\1\0\2\153\1\0"+
    "\2\153\1\0\3\153\1\0\41\153\1\357\32\153\1\0"+
    "\1\153\1\0\52\153\1\360\41\153\1\0\1\153\1\0"+
    "\3\153\2\157\1\0\2\157\1\0\2\157\1\361\45\157"+
    "\1\362\40\157\2\160\1\0\2\160\1\0\6\160\1\361"+
    "\41\160\1\363\40\160\10\0\1\157\3\0\1\160\23\0"+
    "\2\364\7\0\1\364\1\0\1\364\10\0\2\364\14\0"+
    "\1\364\2\0\1\364\12\0\1\162\4\0\1\162\120\0"+
    "\1\365\122\0\1\366\112\0\1\163\3\0\1\164\23\0"+
    "\2\367\7\0\1\367\1\0\1\367\10\0\2\367\14\0"+
    "\1\367\2\0\1\367\11\0\2\157\1\0\2\157\1\0"+
    "\2\157\1\370\45\157\1\362\40\157\2\160\1\0\2\160"+
    "\1\0\6\160\1\371\41\160\1\363\40\160\10\0\1\166"+
    "\3\0\1\167\23\0\2\372\7\0\1\372\1\0\1\372"+
    "\10\0\2\372\14\0\1\372\2\0\1\372\11\0\2\172"+
    "\1\173\2\172\1\0\2\172\1\373\45\172\1\175\40\172"+
    "\1\0\1\374\1\173\3\0\1\374\1\0\1\375\1\173"+
    "\20\0\1\173\23\0\1\376\40\0\117\172\2\200\1\173"+
    "\2\200\1\0\6\200\1\373\41\200\1\202\40\200\1\0"+
    "\1\374\1\173\3\0\1\374\2\0\1\173\2\0\1\377"+
    "\15\0\1\173\23\0\1\376\40\0\117\200\34\0\1\u0100"+
    "\107\0\4\210\11\0\1\217\2\0\1\220\13\0\1\u0101"+
    "\5\0\1\217\63\0\1\u0102\107\0\4\210\11\0\1\217"+
    "\2\0\1\220\21\0\1\217\52\0\1\213\1\0\3\214"+
    "\1\215\11\0\1\217\2\0\1\220\1\221\4\0\1\223"+
    "\5\0\1\225\5\0\1\217\5\0\1\226\7\0\1\223"+
    "\34\0\1\213\1\0\4\215\11\0\1\217\2\0\1\220"+
    "\13\0\1\u0103\5\0\1\217\54\0\2\u0104\32\0\1\u0105"+
    "\55\0\1\u0106\1\0\1\u0106\2\0\4\u0107\134\0\1\u0108"+
    "\4\0\1\u0109\31\0\1\u0109\36\0\3\u010a\31\0\1\u010b"+
    "\103\0\1\u010c\26\0\1\u010d\46\0\4\u010e\6\0\5\u010e"+
    "\15\0\1\u010f\1\0\6\u010e\53\0\3\214\1\215\141\0"+
    "\1\u0109\21\0\1\u0108\7\0\1\u0109\36\0\4\40\122\0"+
    "\1\u0110\116\0\1\u0111\72\0\1\22\3\0\1\26\10\0"+
    "\4\47\6\0\1\47\2\u0112\1\47\1\51\5\47\1\u0112"+
    "\1\51\1\u0112\1\47\4\0\1\47\1\0\1\47\2\u0112"+
    "\2\47\1\51\11\47\1\u0112\1\47\1\51\1\u0112\3\47"+
    "\5\0\1\47\10\0\1\u0113\122\0\1\u0114\112\0\1\241"+
    "\3\0\1\242\10\0\4\47\6\0\1\47\2\u0115\7\47"+
    "\1\u0115\1\47\1\u0115\1\47\4\0\1\47\1\0\1\47"+
    "\2\u0115\14\47\1\u0115\2\47\1\u0115\3\47\5\0\1\47"+
    "\25\0\4\47\6\0\16\47\4\0\1\47\1\0\3\47"+
    "\1\u0116\22\47\5\0\1\47\25\0\4\47\6\0\16\47"+
    "\4\0\1\47\1\0\20\47\1\u0117\5\47\5\0\1\47"+
    "\10\0\1\22\3\0\1\26\10\0\4\47\6\0\1\47"+
    "\2\u0112\1\47\1\51\5\47\1\u0112\1\51\1\u0112\1\47"+
    "\4\0\1\47\1\0\1\47\2\u0112\1\47\1\u0118\1\51"+
    "\11\47\1\u0112\1\47\1\51\1\u0112\3\47\5\0\1\47"+
    "\25\0\4\47\6\0\16\47\4\0\1\47\1\0\1\u0119"+
    "\25\47\5\0\1\47\25\0\4\47\6\0\16\47\4\0"+
    "\1\47\1\0\14\47\1\u011a\11\47\5\0\1\47\25\0"+
    "\4\47\6\0\16\47\4\0\1\47\1\0\5\47\1\u011b"+
    "\4\47\1\u011c\13\47\5\0\1\47\25\0\4\47\6\0"+
    "\16\47\4\0\1\47\1\0\10\47\1\u011d\7\47\1\u011e"+
    "\5\47\5\0\1\47\25\0\4\47\6\0\16\47\4\0"+
    "\1\47\1\0\2\47\1\u011f\23\47\5\0\1\47\25\0"+
    "\4\47\6\0\16\47\4\0\1\47\1\0\14\47\1\u0120"+
    "\11\47\5\0\1\47\25\0\4\47\6\0\16\47\4\0"+
    "\1\47\1\0\17\47\1\u0121\6\47\5\0\1\47\10\0"+
    "\1\241\3\0\1\242\10\0\4\47\6\0\1\47\2\u0115"+
    "\7\47\1\u0115\1\47\1\u0115\1\47\4\0\1\47\1\0"+
    "\1\47\2\u0115\12\47\1\u0122\1\47\1\u0115\2\47\1\u0115"+
    "\3\47\5\0\1\47\25\0\4\47\6\0\16\47\4\0"+
    "\1\47\1\0\15\47\1\u0123\10\47\5\0\1\47\25\0"+
    "\4\47\6\0\16\47\4\0\1\47\1\0\16\47\1\u0124"+
    "\7\47\5\0\1\47\25\0\4\47\6\0\16\47\4\0"+
    "\1\47\1\0\13\47\1\u0125\12\47\5\0\1\47\25\0"+
    "\4\47\6\0\16\47\4\0\1\47\1\0\21\47\1\u0126"+
    "\4\47\5\0\1\47\25\0\4\47\6\0\16\47\4\0"+
    "\1\47\1\0\20\47\1\u0127\5\47\5\0\1\47\25\0"+
    "\4\47\6\0\16\47\4\0\1\47\1\0\10\47\1\u0128"+
    "\15\47\5\0\1\47\25\0\4\47\6\0\16\47\4\0"+
