// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.

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

package org.jetbrains.yaml;

import com.intellij.lexer.FlexLexer;
import com.intellij.psi.tree.IElementType;

/* Auto generated File */


import java.util.BitSet;

public class _YAMLLexer implements FlexLexer, YAMLTokenTypes {

  /** 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 LINE_START_STATE = 2;
  public static final int BLOCK_STATE = 4;
  public static final int FLOW_STATE = 6;
  public static final int POSSIBLE_PLAIN_TEXT_STATE = 8;
  public static final int ANCHOR_MODE = 10;
  public static final int ALIAS_MODE = 12;
  public static final int KEY_MODE = 14;
  public static final int BS_HEADER_TAIL_STATE = 16;
  public static final int BS_BODY_STATE = 18;

  /**
   * 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,  0,  0,  1,  1,  2,  2,  3,  3,  4,  4,  5,  5,  6,  6, 
     7,  7,  8, 8
  };

  /**
   * 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\5\u0100\1\u0200\1\u0300\1\u0100\5\u0400\1\u0500\1\u0600"+
    "\1\u0700\5\u0100\1\u0800\1\u0900\1\u0a00\1\u0b00\1\u0c00\1\u0d00"+
    "\1\u0e00\3\u0100\1\u0f00\17\u0100\1\u1000\165\u0100\1\u0600\1\u0100"+
    "\1\u1100\1\u1200\1\u1300\1\u1400\123\u0100\1\u0a00\4\u0100\1\u1500"+
    "\10\u0100\1\u1600\2\u0100\1\u1700\1\u1800\1\u1400\1\u0100\1\u0500"+
    "\1\u0100\1\u1900\1\u1600\1\u0900\3\u0100\1\u1300\1\u1a00\114\u0100"+
    "\1\u1b00\1\u1300\153\u0100\1\u1c00\11\u0100\1\u1d00\1\u1400\6\u0100"+
    "\1\u1300\u0f16\u0100";

  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\2\3\1\4\22\0\1\5\1\6"+
    "\1\7\1\10\1\11\1\12\1\13\1\14\2\11\1\15"+
    "\1\16\1\17\1\20\1\21\1\11\12\22\1\23\1\11"+
    "\1\24\1\11\1\25\1\26\1\27\6\30\24\31\1\32"+
    "\1\33\1\34\1\0\1\11\1\35\6\30\24\31\1\36"+
    "\1\37\1\40\1\11\6\0\1\3\32\0\1\3\u01bf\0"+
    "\12\22\206\0\12\22\306\0\12\22\234\0\12\22\166\0"+
    "\12\22\140\0\12\22\166\0\12\22\106\0\12\22\u0116\0"+
    "\12\22\106\0\12\22\346\0\1\3\u015f\0\12\22\46\0"+
    "\12\22\u012c\0\12\22\200\0\12\22\246\0\12\22\6\0"+
    "\12\22\266\0\12\22\126\0\12\22\206\0\12\22\6\0"+
    "\12\22\246\0\13\3\35\0\2\3\5\0\1\3\57\0"+
    "\1\3\240\0\1\3\u01cf\0\12\22\46\0\12\22\306\0"+
    "\12\22\26\0\12\22\126\0\12\22\u0196\0\12\22\246\0"+
    "\12\22\206\0\12\22\u012c\0\12\22\200\0\12\22\74\0"+
    "\12\22\220\0\12\22\166\0\12\22\146\0\12\22\206\0"+
    "\12\22\106\0\12\22\266\0\12\22\u0164\0\62\22\100\0"+
    "\12\22\266\0";

  private static int [] zzUnpackcmap_blocks() {
    int [] result = new int[7680];
    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 =
    "\20\0\1\1\1\2\2\1\1\3\1\4\1\5\3\6"+
    "\1\7\5\6\1\10\1\11\1\12\1\13\1\14\1\15"+
    "\1\16\1\17\1\6\1\20\1\6\1\21\1\6\1\10"+
    "\1\12\1\15\1\6\1\22\4\6\1\23\1\24\1\25"+
    "\1\26\1\6\1\27\1\30\1\31\14\0\1\32\2\33"+
    "\7\0\1\34\2\0\1\35\2\0\1\36\1\37\2\40"+
    "\2\11\1\0\2\16\2\0\1\41\5\0\1\42\4\0"+
    "\1\6\1\0\1\6\2\0\1\6\3\0\1\43\16\0"+
    "\1\44\1\45\1\0\1\3\3\0\1\34\2\0\1\46"+
    "\1\6\2\0\1\36\1\11\1\0\1\16\1\6\2\0"+
    "\1\6\4\0\1\47\1\0\1\6\4\0\1\50\3\6"+
    "\2\0\3\6\1\0\1\42\6\0\1\51\3\0\2\6"+
    "\1\0\1\6\2\0\1\52\2\0\1\6\1\0\1\6"+
    "\1\0\1\6\2\0\1\6\1\50\3\0\1\42\3\47"+
    "\2\0\1\6\1\0\2\6\1\53\2\6\5\0\1\6"+
    "\1\0\1\6\1\47\4\6\1\0";

  private static int [] zzUnpackAction() {
    int [] result = new int[238];
    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\41\0\102\0\143\0\204\0\245\0\306\0\347"+
    "\0\u0108\0\u0129\0\u014a\0\u016b\0\u018c\0\u01ad\0\u01ce\0\u01ef"+
    "\0\u0210\0\u0231\0\u0252\0\u0273\0\u0294\0\u02b5\0\u0210\0\u0210"+
    "\0\u02d6\0\u02f7\0\u0318\0\u0339\0\u035a\0\u037b\0\u039c\0\u03bd"+
    "\0\u03de\0\u03ff\0\u03de\0\u0210\0\u0210\0\u0420\0\u0441\0\u0210"+
    "\0\u0462\0\u0483\0\u04a4\0\u0210\0\u04c5\0\u04e6\0\u04e6\0\u0507"+
    "\0\u0528\0\u0210\0\u0549\0\u056a\0\u058b\0\u05ac\0\u05cd\0\u05ee"+
    "\0\u060f\0\u0210\0\u0630\0\u0210\0\u0651\0\u0672\0\u0693\0\u06b4"+
    "\0\u0210\0\u06d5\0\u06f6\0\u0717\0\u0738\0\u0759\0\u077a\0\u079b"+
    "\0\u07bc\0\u07dd\0\u07fe\0\u081f\0\u0210\0\u0840\0\u0861\0\u0882"+
    "\0\u08a3\0\u08c4\0\u02f7\0\u08e5\0\u0906\0\u0927\0\u0948\0\u035a"+
    "\0\u037b\0\u0969\0\u098a\0\u039c\0\u09ab\0\u0210\0\u09cc\0\u09ed"+
    "\0\u0a0e\0\u0a2f\0\u0a50\0\u0a71\0\u0a92\0\u0ab3\0\u0ad4\0\u0af5"+
    "\0\u0b16\0\u0b37\0\u0b58\0\u0b79\0\u0b9a\0\u0bbb\0\u0bdc\0\u0bfd"+
    "\0\u0c1e\0\u0c3f\0\u0c60\0\u0c81\0\u0ca2\0\u0cc3\0\u0ce4\0\u0d05"+
    "\0\u0d26\0\u0210\0\u0672\0\u0d47\0\u0d47\0\u0d68\0\u0d89\0\u0daa"+
    "\0\u0210\0\u0dcb\0\u0dec\0\u0e0d\0\u0e2e\0\u0e4f\0\u0e70\0\u0e91"+
    "\0\u0eb2\0\u0eb2\0\u0ed3\0\u07dd\0\u0ef4\0\u0f15\0\u0f36\0\u0210"+
    "\0\u0f57\0\u0906\0\u0210\0\u0f78\0\u0f99\0\u0fba\0\u0fdb\0\u0210"+
    "\0\u0ffc\0\u0210\0\u0a71\0\u101d\0\u103e\0\u105f\0\u1080\0\u10a1"+
    "\0\u10c2\0\u10e3\0\u0b58\0\u1104\0\u0b9a\0\u1125\0\u1146\0\u1167"+
    "\0\u1188\0\u0bbb\0\u0bdc\0\u1188\0\u11a9\0\u11ca\0\u11eb\0\u0c81"+
    "\0\u120c\0\u122d\0\u124e\0\u126f\0\u1290\0\u12b1\0\u12d2\0\u12f3"+
    "\0\u0e0d\0\u0e4f\0\u0210\0\u1314\0\u1335\0\u1356\0\u1377\0\u1398"+
    "\0\u13b9\0\u13da\0\u13fb\0\u141c\0\u143d\0\u145e\0\u147f\0\u14a0"+
    "\0\u14c1\0\u14e2\0\u1503\0\u1524\0\u1545\0\u1566\0\u0b58\0\u0210"+
    "\0\u1587\0\u15a8\0\u15c9\0\u15ea\0\u160b\0\u162c\0\u164d\0\u166e"+
    "\0\u168f\0\u16b0\0\u16d1\0\u16f2\0\u1713\0\u0210\0\u145e\0\u1734"+
    "\0\u1734\0\u1755\0\u1776\0\u1797\0\u17b8\0\u17d9\0\u17fa\0\u181b"+
    "\0\u124e\0\u183c\0\u185d\0\u1356\0\u160b\0\u162c";

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

  private static int [] zzUnpacktrans() {
    int [] result = new int[6270];
    int offset = 0;
    offset = zzUnpacktrans(ZZ_TRANS_PACKED_0, offset, result);
    return result;
  }

  private static int zzUnpacktrans(String packed, int offset, int [] result) {
    int i = 0;       /* index in packed string  */
    int j = offset;  /* index in unpacked array */
    int l = packed.length();
    while (i < l) {
      int count = packed.charAt(i++);
      int value = packed.charAt(i++);
      value--;
      do result[j++] = value; while (--count > 0);
    }
    return j;
  }


  /* error codes */
  private static final int ZZ_UNKNOWN_ERROR = 0;
  private static final int ZZ_NO_MATCH = 1;
  private static final int ZZ_PUSHBACK_2BIG = 2;

  /* error messages for the codes above */
  private static final String[] ZZ_ERROR_MSG = {
    "Unknown internal scanner error",
    "Error: could not match input",
    "Error: pushback value was too large"
  };

  /**
   * ZZ_ATTRIBUTE[aState] contains the attributes of state {@code aState}
   */
  private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();

  private static final String ZZ_ATTRIBUTE_PACKED_0 =
    "\20\0\1\11\5\1\2\11\13\1\2\11\2\1\1\11"+
    "\3\1\1\11\5\1\1\11\7\1\1\11\1\1\1\11"+
    "\4\1\1\11\2\0\1\1\1\0\1\1\4\0\2\1"+
    "\1\11\7\0\1\1\2\0\1\1\2\0\3\1\1\11"+
    "\2\1\1\0\2\1\2\0\1\1\5\0\1\1\4\0"+
    "\1\1\1\0\1\1\2\0\1\1\3\0\1\11\2\0"+
    "\1\1\1\0\1\1\1\0\1\11\1\0\1\1\5\0"+
    "\2\1\1\0\1\1\3\0\1\11\2\0\1\11\1\1"+
    "\2\0\1\1\1\11\1\0\1\11\1\1\2\0\1\1"+
    "\4\0\1\1\1\0\1\1\4\0\4\1\2\0\3\1"+
    "\1\0\1\1\4\0\2\1\1\11\3\0\2\1\1\0"+
    "\1\1\2\0\1\1\2\0\1\1\1\0\1\1\1\0"+
    "\1\1\2\0\1\1\1\11\3\0\4\1\2\0\1\1"+
    "\1\0\2\1\1\11\2\1\5\0\1\1\1\0\6\1"+
    "\1\0";

  private static int [] zzUnpackAttribute() {
    int [] result = new int[238];
    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 CharSequence zzBuffer = "";

  /** the textposition at the last accepting state */
  private int zzMarkedPos;

  /** the current text position in the buffer */
  private int zzCurrentPos;

  /** startRead marks the beginning of the yytext() string in the buffer */
  private int zzStartRead;

  /** endRead marks the last character in the buffer, that has been read
      from input */
  private int zzEndRead;

  /** zzAtEOF == true <=> the scanner is at the EOF */
  private boolean zzAtEOF;

  /** For the backwards DFA of general lookahead statements */
  private BitSet zzFin = null;

  /** Number of newlines encountered up to the start of the matched text. */
  @SuppressWarnings("unused")
  private int yyline;

  /** Number of characters from the last newline up to the start of the matched text. */
  protected int yycolumn;

  /** Number of characters up to the start of the matched text. */
  @SuppressWarnings("unused")
  private long yychar;

  /** Whether the scanner is currently at the beginning of a line. */
  @SuppressWarnings("unused")
  private boolean zzAtBOL = true;

  /** Whether the user-EOF-code has already been executed. */
  @SuppressWarnings("unused")
  private boolean zzEOFDone;

  /* user code: */
  /**
   * The number of open but not closed braces.
   * Note: lexer does not distinguish braces from brackets while counting them.
   */
  private int myBraceCount = 0;
  
  /** A token type of parsed block scalar */
  private IElementType myBlockScalarType = null;

  /** A state to be returned in (or it is used to calculate next state) */
  private int myReturnState = YYINITIAL;

  /**
   * An indent of block composite element (key or sequence marker).
   * It is used to identify range of block scalars and plain text scalars.
   */
  private int myPrevElementIndent = 0;

  /** This flag is set after the first plain scalar line until it ends */
  private boolean myPossiblePlainTextScalarContinue = false;

  //-------------------------------------------------------------------------------------------------------------------

  public boolean isCleanState() {
    return yystate() == YYINITIAL
           && myBraceCount == 0
           && myPrevElementIndent == 0
           && !myPossiblePlainTextScalarContinue;
  }

  public void cleanMyState() {
    myBraceCount = 0;
    myBlockScalarType = null;

    yycolumn = 0;
    myReturnState = YYINITIAL;

    prepareForNewDocument();
    yybegin(YYINITIAL);
  }

  private void prepareForNewDocument() {
    myPrevElementIndent = 0;
    myPossiblePlainTextScalarContinue = false;
  }

  //-------------------------------------------------------------------------------------------------------------------

  /** @param offset offset from currently matched token start (could be negative) */
  private char getCharAtOffset(final int offset) {
    final int loc = getTokenStart() + offset;
    return 0 <= loc && loc < zzBuffer.length() ? zzBuffer.charAt(loc) : (char) -1;
  }

  private boolean isAfterEol() {
    final char prev = getCharAtOffset(-1);
    return prev == (char)-1 || prev == '\n';
  }

  private IElementType getWhitespaceType() {
    return isAfterEol() ? INDENT : WHITESPACE;
  }

  private void goToState(int state) {
    yybegin(state);
    yypushback(yylength());
  }

  //-------------------------------------------------------------------------------------------------------------------

  /**
   * @param indentLen The length of indent in the current line
   * @return the next state
   */
  private int getStateAfterLineStart(int indentLen) {
    if (myPossiblePlainTextScalarContinue && yycolumn + indentLen > myPrevElementIndent) {
      return POSSIBLE_PLAIN_TEXT_STATE;
    }
    else {
      myPossiblePlainTextScalarContinue = false;
      return BLOCK_STATE;
    }
  }

  private int getStateAfterBlockScalar() {
    return myReturnState == BLOCK_STATE ? LINE_START_STATE : FLOW_STATE;
  }

  private void openBrace() {
    myBraceCount++;
    if (myBraceCount != 0) {
      myPrevElementIndent = 0;
      myPossiblePlainTextScalarContinue = false;
      yybegin(FLOW_STATE);
    }
  }

  private void closeBrace() {
    if (myBraceCount > 0) {
      myBraceCount--;
    }
    if (myBraceCount == 0){
      yybegin(BLOCK_STATE);
    }
  }

  /**
   * This method stores return lexer state, stores indent information and moves to the key mode state
   * @return scalar key token
   */
  private IElementType processScalarKey(int returnState) {
    myPrevElementIndent = yycolumn;
    myReturnState = returnState;
    yybegin(KEY_MODE);
    return SCALAR_KEY;
  }

  private IElementType processScalarKey() {
    return processScalarKey(yystate());
  }


  /**
   * Creates a new scanner
   *
   * @param   in  the java.io.Reader to read input from.
   */
  public _YAMLLexer(java.io.Reader in) {
    this.zzReader = in;
  }


  /** Returns the maximum size of the scanner buffer, which limits the size of tokens. */
  private int zzMaxBufferLen() {
    return Integer.MAX_VALUE;
  }

  /**  Whether the scanner buffer can grow to accommodate a larger token. */
  private boolean zzCanGrow() {
    return true;
  }

  /**
   * Translates raw input code points to DFA table row
   */
  private static int zzCMap(int input) {
    int offset = input & 255;
    return offset == input ? ZZ_CMAP_BLOCKS[offset] : ZZ_CMAP_BLOCKS[ZZ_CMAP_TOP[input >> 8] | offset];
  }

  public final int getTokenStart() {
    return zzStartRead;
  }

  public final int getTokenEnd() {
    return getTokenStart() + yylength();
  }

  public void reset(CharSequence buffer, int start, int end, int initialState) {
    zzBuffer = buffer;
    zzCurrentPos = zzMarkedPos = zzStartRead = start;
    zzAtEOF  = false;
    zzAtBOL = true;
    zzEndRead = end;
    yybegin(initialState);
  }

  /**
   * Refills the input buffer.
   *
   * @return      {@code false}, iff there was new input.
   *
   * @exception   java.io.IOException  if any I/O-Error occurs
   */
  private boolean zzRefill() throws java.io.IOException {
    return true;
  }


  /**
   * 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 CharSequence yytext() {
    return zzBuffer.subSequence(zzStartRead, zzMarkedPos);
  }


  /**
   * Returns the character at position {@code pos} from the
   * matched text.
   *
   * It is equivalent to yytext().charAt(pos), but faster
   *
   * @param pos the position of the character to fetch.
   *            A value from 0 to yylength()-1.
   *
   * @return the character at position pos
   */
  public final char yycharat(int pos) {
    return zzBuffer.charAt(zzStartRead+pos);
  }


  /**
   * Returns the length of the matched text region.
   */
  public final int yylength() {
    return zzMarkedPos-zzStartRead;
  }


  /**
   * Reports an error that occurred while scanning.
   *
   * In a wellformed scanner (no or only correct usage of
   * yypushback(int) and a match-all fallback rule) this method
   * will only be called with things that "Can't Possibly Happen".
   * If this method is called, something is seriously wrong
   * (e.g. a JFlex bug producing a faulty scanner etc.).
   *
   * Usual syntax/scanner level error handling should be done
   * in error fallback rules.
   *
   * @param   errorCode  the code of the errormessage to display
   */
  private void zzScanError(int errorCode) {
    String message;
    try {
      message = ZZ_ERROR_MSG[errorCode];
    }
    catch (ArrayIndexOutOfBoundsException e) {
      message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
    }

    throw new Error(message);
  }


  /**
   * Pushes the specified amount of characters back into the input stream.
   *
   * They will be read again by then next call of the scanning method
   *
   * @param number  the number of characters to be read again.
   *                This number must not be greater than yylength()!
   */
  public void yypushback(int number)  {
    if ( number > yylength() )
      zzScanError(ZZ_PUSHBACK_2BIG);

    zzMarkedPos -= number;
  }


  /**
   * Resumes scanning until the next regular expression is matched,
