{"mappings":"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","sources":["src/formatter/pdf_formatter/types.ts","src/constants.ts","src/serialized_types.ts","src/normalize_mappings/enharmonic-normalize.ts","src/scales.ts","src/chord_parsing_error.ts","src/parser/chord/peg_parser.ts","src/chord.ts","src/chord_sheet/comment.ts","src/chord_sheet/font_size.ts","src/chord_sheet/font.ts","src/chord_sheet/trace_info.ts","src/chord_sheet/ast_component.ts","src/chord_sheet/tags.ts","src/chord_sheet/metadata_accessors.ts","src/parser/chord_definition/peg_parser.ts","src/chord_definition/chord_definition.ts","src/chord_sheet/tag_interpreter.ts","src/chord_sheet/tag.ts","src/chord_sheet/metadata.ts","src/chord_sheet/chord_pro/evaluatable.ts","src/chord_sheet/chord_pro/literal.ts","src/chord_sheet/chord_pro/composite.ts","src/chord_sheet/chord_pro/evaluation_error.ts","src/chord_sheet/chord_pro/ternary.ts","src/chord_sheet/item.ts","src/chord_sheet/line.ts","src/chord_sheet/chord_lyrics_pair.ts","src/normalize_mappings/suffix-normalize-mapping.ts","src/utilities.ts","src/key.ts","src/formatter/configuration/base_configuration.ts","src/pango/pango_helpers.ts","src/formatter/configuration/html_configuration.ts","src/chord_diagram/renderer.ts","src/chord_diagram/chord_diagram.ts","src/formatter/configuration/measured_html_configuration.ts","src/formatter/configuration/pdf_configuration.ts","src/formatter/configuration/default_config_manager.ts","src/formatter/formatter.ts","src/chord_sheet/soft_line_break.ts","src/chord_definition/chord_definition_set.ts","src/formatter/formatting_context.ts","src/chord_sheet/line_expander.ts","src/chord_sheet/paragraph.ts","src/parser/parser_warning.ts","src/chord_sheet/font_stack.ts","src/song_builder.ts","src/chord_sheet/song_mapper.ts","src/formatter/chord_renderer.ts","src/key_config.ts","src/helpers.ts","src/chord_sheet/standard_metadata_providers.ts","src/chord_sheet/song.ts","src/formatter/chord_pro_formatter.ts","src/chord_sheet/ast_type.ts","src/chord_sheet_serializer.ts","src/parser/null_tracer.ts","src/parser/chord_pro/helpers.ts","src/parser/chord_pro/peg_parser.ts","src/parser/chord_pro_parser.ts","src/parser/parser_helpers.ts","src/parser/chord_sheet_parser.ts","src/template_helpers/metadata_processor.ts","src/template_helpers/when_callback.ts","src/template_helpers/when_clause.ts","src/template_helpers/when.ts","src/template_helpers.ts","src/formatter/chords_over_words_formatter.ts","src/parser/chords_over_words/helpers.ts","src/parser/chords_over_words/peg_parser.ts","src/parser/chords_over_words_parser.ts","src/formatter/html_formatter.ts","src/formatter/templates/html_div_formatter.ts","src/formatter/html_div_formatter.ts","src/formatter/templates/html_table_formatter.ts","src/formatter/html_table_formatter.ts","src/layout/measurement/measurer.ts","src/layout/measurement/js_pdf_measurer.ts","src/layout/measurement/canvas_measurer.ts","src/layout/measurement/dom_measurer.ts","src/layout/measurement/index.ts","src/formatter/measurement_based_formatter.ts","src/layout/engine/dimensions.ts","src/rendering/html/html_doc_wrapper.ts","src/layout/engine/types.ts","src/layout/engine/item_processor.ts","src/layout/engine/layout_factory.ts","src/layout/engine/line_breaker.ts","src/layout/engine/layout_helpers.ts","src/layout/engine/paragraph_splitter/strategies/five_or_more_lines_paragraph_split_strategy.ts","src/layout/engine/paragraph_splitter/strategies/four_lines_paragraph_split_strategy.ts","src/layout/engine/paragraph_splitter/strategies/three_or_less_lines_paragraph_split_strategy.ts","src/layout/engine/paragraph_splitter/paragraph_splitter.ts","src/layout/engine/paragraph_splitter/index.ts","src/layout/engine/title_separator_tag.ts","src/layout/engine/layout_engine.ts","src/layout/engine/index.ts","src/rendering/renderer.ts","src/rendering/html/html_element_styler.ts","src/layout/engine/condition.ts","src/formatter/text_formatter.ts","src/rendering/shared/layout_section_renderer.ts","src/rendering/html/positioned_html_renderer.ts","src/formatter/measured_html_formatter.ts","src/parser/ultimate_guitar_parser.ts","src/version.ts","src/formatter_configuration.ts","src/key_helpers.ts","src/index.ts","src/formatter/configuration/measurement_based_configuration.ts","src/formatter/configuration/index.ts","src/formatter/pdf_formatter/fonts/NimbusSansLFonts.base64.ts","src/formatter/pdf_formatter/doc_wrapper.ts","src/chord_diagram/js_pdf_renderer.ts","src/rendering/pdf/pdf_chord_diagram_renderer.ts","src/rendering/pdf/js_pdf_renderer.ts","src/formatter/pdf_formatter.ts","src/pdf.ts"],"sourcesContent":["import {\n  ImageCompression,\n  ImageOptions,\n  RGBAData,\n  TextOptionsLight,\n  jsPDFOptions,\n} from 'jspdf';\n\nexport interface PdfDoc {\n  get internal(): {\n    pageSize: {\n      getWidth(): number,\n    }\n  };\n\n  addImage(\n    imageData: string | HTMLImageElement | HTMLCanvasElement | Uint8Array | RGBAData,\n    format: string,\n    x: number,\n    y: number,\n    width: number,\n    height: number,\n    alias?: string,\n    compression?: ImageCompression,\n    rotation?: number\n  ): PdfDoc;\n\n  addImage(\n    imageData: string | HTMLImageElement | HTMLCanvasElement | Uint8Array | RGBAData,\n    x: number,\n    y: number,\n    width: number,\n    height: number,\n    alias?: string,\n    compression?: ImageCompression,\n    rotation?: number\n  ): PdfDoc;\n\n  addImage(options: ImageOptions): PdfDoc;\n\n  circle(x: number, y: number, r: number, style?: string | null): PdfDoc;\n\n  getTextDimensions(text: string, options?: TextOptionsLight): { w: number; h: number };\n\n  line(x1: number, y1: number, x2: number, y2: number, style?: string | null): PdfDoc;\n\n  roundedRect(\n    x: number,\n    y: number,\n    w: number,\n    h: number,\n    rx: number,\n    ry: number,\n    style?: string | null\n  ): PdfDoc;\n\n  save(filename: string, options: { returnPromise: true }): Promise<void>;\n  save(filename?: string): PdfDoc;\n\n  setDrawColor(ch1: string | number, ch2?: number, ch3?: number, ch4?: number): PdfDoc;\n\n  setFont(fontName: string, fontStyle?: string, fontWeight?: string | number): PdfDoc;\n\n  setFontSize(size: number): PdfDoc;\n\n  setPage(page: number): PdfDoc;\n\n  setLineWidth(width: number): PdfDoc;\n\n  setTextColor(ch1: string): PdfDoc;\n  setTextColor(ch1: number): PdfDoc;\n  setTextColor(ch1: number, ch2: number, ch3: number, ch4?: number): PdfDoc;\n\n  text(text: string | string[], x: number, y: number, options?: TextOptionsLight, transform?: any): PdfDoc;\n\n  addFileToVFS(fileName: string, data: string): PdfDoc;\n  addFont(\n    postScriptName: string,\n    id: string,\n    fontStyle: string,\n    fontWeight?: string | number,\n    encoding?:\n      | 'StandardEncoding'\n      | 'MacRomanEncoding'\n      | 'Identity-H'\n      | 'WinAnsiEncoding',\n    isStandardFont?: boolean\n  ): string;\n}\n\nexport type PdfConstructor = new (options?: jsPDFOptions) => PdfDoc;\n","/**\n * Used to mark a paragraph as bridge\n * @constant\n * @type {string}\n */\nexport const BRIDGE = 'bridge';\n\n/**\n * Used to mark a paragraph as chorus\n * @constant\n * @type {string}\n */\nexport const CHORUS = 'chorus';\n\n/**\n * Used to mark a paragraph as grid\n * @constant\n * @type {string}\n */\nexport const GRID = 'grid';\n\n/**\n * Used to mark a paragraph as containing lines with both verse and chorus type\n * @constant\n * @type {string}\n */\nexport const INDETERMINATE = 'indeterminate';\n\n/**\n * Used to mark a paragraph as not containing a line marked with a type\n * @constant\n * @type {string}\n */\nexport const NONE = 'none';\n\n/**\n * Used to mark a paragraph as tab\n * @constant\n * @type {string}\n */\nexport const TAB = 'tab';\n\n/**\n * Used to mark a paragraph as verse\n * @constant\n * @type {string}\n */\nexport const VERSE = 'verse';\n\n/**\n * Used to mark a paragraph as part\n * @constant\n * @type {string}\n */\nexport const PART = 'part';\n\n/**\n * Used to mark a section as Lilypond notation\n * @constant\n * @type {string}\n */\nexport const LILYPOND = 'ly';\n\n/**\n * Used to mark a section as ABC music notation\n * @constant\n * @type {string}\n */\nexport const ABC = 'abc';\n\n/**\n * Used to mark a section as SVG image\n * @constant\n * @type {string}\n */\nexport const SVG = 'svg';\n\n/**\n * Used to mark a paragraph as textblock\n * @constant\n * @type {string}\n */\nexport const TEXTBLOCK = 'textblock';\n\nexport type ParagraphType =\n  'abc' |\n  'bridge' |\n  'chorus' |\n  'grid' |\n  'indeterminate' |\n  'ly' |\n  'none' |\n  'svg' |\n  'tab' |\n  'textblock' |\n  'verse' |\n  'part' |\n  string;\n\nexport const SYMBOL = 'symbol';\nexport const NUMERIC = 'numeric';\nexport const NUMERAL = 'numeral';\nexport const SOLFEGE = 'solfege';\n\nexport const ROMAN_NUMERALS = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII'];\n\nexport const FLAT = 'b';\nexport const SHARP = '#';\nexport type Accidental = '#' | 'b';\nexport const NO_ACCIDENTAL = 'NM';\nexport type NoAccidental = 'NM';\nexport type AccidentalMaybe = Accidental | NoAccidental;\n\n/**\n * @deprecated Use Accidental instead\n */\nexport type Modifier = Accidental;\n/**\n * @deprecated Use NO_ACCIDENTAL instead\n */\nexport const NO_MODIFIER = NO_ACCIDENTAL;\n/**\n * @deprecated Use NoAccidental instead\n */\nexport type NoModifier = NoAccidental;\n/**\n * @deprecated Use AccidentalMaybe instead\n */\nexport type ModifierMaybe = AccidentalMaybe;\n\nexport type ChordType = 'symbol' | 'solfege' | 'numeric' | 'numeral';\nexport type ChordStyle = 'symbol' | 'solfege' | 'number' | 'numeral';\nexport type NullableChordStyle = ChordStyle | null;\n\nexport const MINOR = 'm';\nexport const MAJOR = 'M';\n\nexport type Mode = 'M' | 'm';\n\nexport type FretNumber = number;\nexport type OpenFret = 0;\nexport type NonSoundingString = '-1' | 'N' | 'x';\n\nexport type StringNumber = 1 | 2 | 3 | 4 | 5 | 6;\nexport type FingerNumber = 1 | 2 | 3 | 4 | 5 | OpenFret;\n\nexport const nonSoundingString = ['N', '-1', 'x'] as NonSoundingString[];\nexport const openFret = 0 as OpenFret;\n\nexport type Fret = FretNumber | OpenFret | NonSoundingString;\n\nexport const START_TAG = 'start_tag';\nexport const END_TAG = 'end_tag';\nexport const AUTO = 'auto';\n","import { Accidental, ChordType, Fret } from './constants';\n\nexport interface SerializedTraceInfo {\n  location?: {\n    offset: number | null,\n    line: number | null,\n    column: number | null,\n  },\n}\n\nexport interface SerializedChord {\n  type: 'chord',\n  base: string,\n  accidental: Accidental | null,\n  suffix: string | null,\n  bassBase: string | null,\n  bassAccidental: Accidental | null,\n  chordType: ChordType,\n  optional?: boolean,\n}\n\nexport interface SerializedChordLyricsPair {\n  type: 'chordLyricsPair',\n  chord?: SerializedChord | null,\n  chords: string,\n  lyrics: string | null,\n  annotation?: string | null,\n  isRhythmSymbol?: boolean,\n}\n\nexport interface SerializedChordDefinition {\n  name: string,\n  baseFret: number,\n  frets: Fret[],\n  fingers?: number[],\n}\n\nexport type SerializedTag = SerializedTraceInfo & {\n  type: 'tag',\n  name: string,\n  value: string,\n  chordDefinition?: SerializedChordDefinition,\n  attributes?: Record<string, string>,\n  selector?: string | null,\n  isNegated?: boolean,\n};\n\nexport interface SerializedComment {\n  type: 'comment',\n  comment: string,\n}\n\nexport type ContentType = 'tab' | 'abc' | 'ly' | 'svg' | 'grid' | 'textblock';\n\nexport type PartTypes = 'part' | 'intro' | 'instrumental' | 'tag' | 'end';\n\nexport interface SerializedSection {\n  type: 'section',\n  sectionType: ContentType,\n  content: string[],\n  startTag: SerializedTag,\n  endTag: SerializedTag,\n}\n\nexport type SerializedLiteral = string;\n\nexport interface SerializedTernary extends SerializedTraceInfo {\n  type: 'ternary',\n  variable: string | null,\n  valueTest: string | null,\n  trueExpression: (SerializedLiteral | SerializedTernary)[],\n  falseExpression: (SerializedLiteral | SerializedTernary)[],\n}\n\nexport type SerializedComposite = (SerializedLiteral | SerializedTernary)[];\n\nexport interface SerializedSoftLineBreak {\n  type: 'softLineBreak',\n}\n\nexport type SerializedItem =\n  SerializedChordLyricsPair |\n  SerializedComment |\n  SerializedLiteral |\n  SerializedSoftLineBreak |\n  SerializedTag |\n  SerializedTernary;\n\nexport interface SerializedLine {\n  type: 'line',\n  items: SerializedItem[],\n}\n\nexport interface SerializedSong {\n  type: 'chordSheet',\n  lines: SerializedLine[],\n}\n\nexport type SerializedComponent =\n  SerializedLine |\n  SerializedSong |\n  SerializedChordLyricsPair |\n  SerializedTag |\n  SerializedComment |\n  SerializedTernary |\n  SerializedLiteral |\n  SerializedSection |\n  SerializedSoftLineBreak;\n","const enharmonics: Record<string, Record<string, string>> = {\n  'Ab': {\n    'B': 'Cb',\n  },\n  'Bb': {\n    'B': 'Cb',\n  },\n  'Cb': {\n    'B': 'Cb',\n    'A#': 'Bb',\n    'E': 'Fb',\n  },\n  'C': {\n    'C#': 'Db',\n    'D#': 'Eb',\n    'F#': 'Gb',\n    'G#': 'Ab',\n    'A#': 'Bb',\n  },\n  'C#': {\n    'Eb': 'D#',\n    'Bb': 'A#',\n  },\n  'Db': {\n    'Cb': 'B',\n    'F#': 'Gb',\n    'G#': 'Ab',\n    'A#': 'Bb',\n  },\n  'D': {\n    'D#': 'Eb',\n    'A#': 'Bb',\n    'Gb': 'F#',\n  },\n  'Eb': {\n    'D#': 'Eb',\n    'F#': 'Gb',\n    'G#': 'Ab',\n    'A#': 'Bb',\n  },\n  'E': {\n    'Ab': 'G#',\n    'A#': 'Bb',\n    'D#': 'Eb',\n    'Db': 'C#',\n    'Eb': 'D#',\n  },\n  'F': {\n    'A#': 'Bb',\n    'F#': 'Gb',\n    'D#': 'Eb',\n    'G#': 'Ab',\n  },\n  'F#': {\n    'Bb': 'A#',\n    'Eb': 'D#',\n  },\n  'Gb': {\n    'A#': 'Bb',\n    'D#': 'Eb',\n    'G#': 'Ab',\n    'B': 'Cb',\n    'E': 'Fb',\n  },\n  'G': {\n    'A#': 'Bb',\n    'D#': 'Eb',\n    'G#': 'Ab',\n    'C#': 'Db',\n  },\n  'G#': {\n    'A#': 'Bb',\n    'D#': 'Eb',\n    'Cb': 'B#',\n  },\n  'Am': {\n    'G#': 'Ab',\n    'F#': 'Gb',\n    'C#': 'Db',\n    'D#': 'Eb',\n    'A#': 'Bb',\n  },\n  'Bbm': {\n    'Cb': 'B',\n    'Gb': 'F#',\n  },\n  'Bm': {\n    'A#': 'Bb',\n    'D#': 'Eb',\n  },\n  'C#m': {\n    'A#': 'Bb',\n    'D#': 'Eb',\n    'Gb': 'F#',\n  },\n  'Cm': {\n    'G#': 'Ab',\n    'A#': 'Bb',\n    'D#': 'Eb',\n    'F#': 'Gb',\n    'C#': 'Db',\n  },\n  'Dm': {\n    'A#': 'Bb',\n    'D#': 'Eb',\n    'F#': 'Gb',\n    'G#': 'Ab',\n    'C#': 'Db',\n  },\n  'Em': {\n    'A#': 'Bb',\n    'D#': 'Eb',\n    'C#': 'Db',\n  },\n  'F#m': {\n    'A#': 'Bb',\n    'D#': 'Eb',\n    'Gb': 'F#',\n    'Ab': 'G#',\n    'Db': 'C#',\n  },\n  'Fm': {\n    'G#': 'Ab',\n    'A#': 'Bb',\n    'D#': 'Eb',\n    'F#': 'Gb',\n    'C#': 'Db',\n  },\n  'Gm': {\n    'G#': 'Ab',\n    'A#': 'Bb',\n    'D#': 'Eb',\n    'C#': 'Db',\n    'F#': 'Gb',\n  },\n  'G#m': {\n    'Bb': 'A#',\n    'Eb': 'D#',\n  },\n  'B': {\n    'Eb': 'D#',\n  },\n  'Lab': {\n    'Si': 'Dob',\n  },\n  'Dob': {\n    'Si': 'Dob',\n    'La#': 'Sib',\n    'Mi': 'Fab',\n  },\n  'Do': {\n    'Do#': 'Reb',\n    'Re#': 'Mib',\n    'Fa#': 'Solb',\n    'Sol#': 'Lab',\n    'La#': 'Sib',\n  },\n  'Do#': {\n    'Mib': 'Re#',\n    'Sib': 'La#',\n  },\n  'Reb': {\n    'Si': 'Dob',\n    'Fa#': 'Solb',\n  },\n  'Re': {\n    'Re#': 'Mib',\n    'La#': 'Sib',\n    'Solb': 'Fa#',\n  },\n  'Mib': {\n    'Re#': 'Mib',\n    'Fa#': 'Solb',\n    'Sol#': 'Lab',\n    'La#': 'Sib',\n  },\n  'Mi': {\n    'Lab': 'Sol#',\n    'La#': 'Sib',\n    'Re#': 'Mib',\n    'Reb': 'Do#',\n    'Mib': 'Re#',\n  },\n  'Fa': {\n    'La#': 'Sib',\n    'Fa#': 'Solb',\n    'Re#': 'Mib',\n    'Sol#': 'Lab',\n  },\n  'Fa#': {\n    'Sib': 'La#',\n    'Mib': 'Re#',\n  },\n  'Solb': {\n    'La#': 'Sib',\n    'Re#': 'Mib',\n    'Sol#': 'Lab',\n    'Si': 'Dob',\n    'Mi': 'Fab',\n  },\n  'Sol': {\n    'La#': 'Sib',\n    'Re#': 'Mib',\n    'Sol#': 'Lab',\n    'Do#': 'Reb',\n  },\n  'Sol#': {\n    'La#': 'Sib',\n    'Re#': 'Mib',\n    'Dob': 'Si#',\n  },\n  'Lam': {\n    'Sol#': 'Lab',\n    'Fa#': 'Solb',\n    'Do#': 'Reb',\n    'Re#': 'Mib',\n    'La#': 'Sib',\n  },\n  'Sibm': {\n    'Dob': 'Si',\n    'Solb': 'Fa#',\n  },\n  'Sim': {\n    'La#': 'Sib',\n    'Re#': 'Mib',\n  },\n  'Do#m': {\n    'La#': 'Sib',\n    'Re#': 'Mib',\n    'Solb': 'Fa#',\n  },\n  'Dom': {\n    'Sol#': 'Lab',\n    'La#': 'Sib',\n    'Re#': 'Mib',\n    'Fa#': 'Solb',\n    'Do#': 'Reb',\n  },\n  'Rem': {\n    'La#': 'Sib',\n    'Re#': 'Mib',\n    'Fa#': 'Solb',\n    'Sol#': 'Lab',\n    'Do#': 'Reb',\n  },\n  'Mim': {\n    'La#': 'Sib',\n    'Re#': 'Mib',\n    'Do#': 'Reb',\n  },\n  'Fa#m': {\n    'La#': 'Sib',\n    'Re#': 'Mib',\n    'Solb': 'Fa#',\n    'Lab': 'Sol#',\n    'Reb': 'Do#',\n  },\n  'Fam': {\n    'Sol#': 'Lab',\n    'La#': 'Sib',\n    'Re#': 'Mib',\n    'Fa#': 'Solb',\n    'Do#': 'Reb',\n  },\n  'Solm': {\n    'Sol#': 'Lab',\n    'La#': 'Sib',\n    'Re#': 'Mib',\n    'Do#': 'Reb',\n    'Fa#': 'Solb',\n  },\n  'Sol#m': {\n    'Sib': 'La#',\n    'Mib': 'Re#',\n  },\n  'Si': {\n    'Mib': 'Re#',\n  },\n};\n\nexport default enharmonics;\n","/*\n  ⚠️⚠️⚠️ NOTE: this file has been generated automatically.\n          Please do NOT edit this file directly, but instead:\n            - edit the data source, located in `data/scales.ts`\n            - run `yarn build:code-generate` to re-generate this file.\n   */\n\nimport {\n  ChordType,\n  FLAT,\n  MAJOR,\n  MINOR,\n  Mode,\n  ModifierMaybe,\n  NO_MODIFIER,\n  NUMERAL,\n  NUMERIC,\n  SHARP,\n  SOLFEGE,\n  SYMBOL,\n} from './constants';\n\nexport const KEY_TO_GRADE: Record<ChordType, Record<Mode, Record<ModifierMaybe, Record<string, number>>>> = {\n\n  [SYMBOL]: {\n\n    [MAJOR]: {\n\n      [NO_MODIFIER]: {\n        C: 0,\n        D: 2,\n        E: 4,\n        F: 5,\n        G: 7,\n        A: 9,\n        B: 11,\n      },\n\n      [SHARP]: {\n        B: 0,\n        C: 1,\n        D: 3,\n        E: 5,\n        F: 6,\n        G: 8,\n        A: 10,\n      },\n\n      [FLAT]: {\n        D: 1,\n        E: 3,\n        F: 4,\n        G: 6,\n        A: 8,\n        B: 10,\n        C: 11,\n      },\n\n    },\n\n    [MINOR]: {\n\n      [NO_MODIFIER]: {\n        C: 0,\n        D: 2,\n        E: 4,\n        F: 5,\n        G: 7,\n        A: 9,\n        B: 11,\n      },\n\n      [SHARP]: {\n        B: 0,\n        C: 1,\n        D: 3,\n        E: 5,\n        F: 6,\n        G: 8,\n        A: 10,\n      },\n\n      [FLAT]: {\n        D: 1,\n        E: 3,\n        F: 4,\n        G: 6,\n        A: 8,\n        B: 10,\n        C: 11,\n      },\n\n    },\n\n  },\n\n  [SOLFEGE]: {\n\n    [MAJOR]: {\n\n      [NO_MODIFIER]: {\n        Do: 0,\n        Re: 2,\n        Mi: 4,\n        Fa: 5,\n        Sol: 7,\n        La: 9,\n        Si: 11,\n      },\n\n      [SHARP]: {\n        Si: 0,\n        Do: 1,\n        Re: 3,\n        Mi: 5,\n        Fa: 6,\n        Sol: 8,\n        La: 10,\n      },\n\n      [FLAT]: {\n        Re: 1,\n        Mi: 3,\n        Fa: 4,\n        Sol: 6,\n        La: 8,\n        Si: 10,\n        Do: 11,\n      },\n\n    },\n\n    [MINOR]: {\n\n      [NO_MODIFIER]: {\n        Do: 0,\n        Re: 2,\n        Mi: 4,\n        Fa: 5,\n        Sol: 7,\n        La: 9,\n        Si: 11,\n      },\n\n      [SHARP]: {\n        Si: 0,\n        Do: 1,\n        Re: 3,\n        Mi: 5,\n        Fa: 6,\n        Sol: 8,\n        La: 10,\n      },\n\n      [FLAT]: {\n        Re: 1,\n        Mi: 3,\n        Fa: 4,\n        Sol: 6,\n        La: 8,\n        Si: 10,\n        Do: 11,\n      },\n\n    },\n\n  },\n\n  [NUMERIC]: {\n\n    [MAJOR]: {\n\n      [NO_MODIFIER]: {\n        1: 0,\n        2: 2,\n        3: 4,\n        4: 5,\n        5: 7,\n        6: 9,\n        7: 11,\n      },\n\n      [SHARP]: {\n        7: 0,\n        1: 1,\n        2: 3,\n        3: 5,\n        4: 6,\n        5: 8,\n        6: 10,\n      },\n\n      [FLAT]: {\n        2: 1,\n        3: 3,\n        4: 4,\n        5: 6,\n        6: 8,\n        7: 10,\n        1: 11,\n      },\n\n    },\n\n    [MINOR]: {\n\n      [NO_MODIFIER]: {\n        1: 0,\n        2: 2,\n        3: 3,\n        4: 5,\n        5: 7,\n        6: 8,\n        7: 10,\n      },\n\n      [SHARP]: {\n        1: 1,\n        2: 3,\n        3: 4,\n        4: 6,\n        5: 8,\n        6: 9,\n        7: 11,\n      },\n\n      [FLAT]: {\n        2: 1,\n        3: 2,\n        4: 4,\n        5: 6,\n        6: 7,\n        7: 9,\n        1: 11,\n      },\n\n    },\n\n  },\n\n  [NUMERAL]: {\n\n    [MAJOR]: {\n\n      [NO_MODIFIER]: {\n        I: 0,\n        II: 2,\n        III: 4,\n        IV: 5,\n        V: 7,\n        VI: 9,\n        VII: 11,\n      },\n\n      [SHARP]: {\n        VII: 0,\n        I: 1,\n        II: 3,\n        III: 5,\n        IV: 6,\n        V: 8,\n        VI: 10,\n      },\n\n      [FLAT]: {\n        II: 1,\n        III: 3,\n        IV: 4,\n        V: 6,\n        VI: 8,\n        VII: 10,\n        I: 11,\n      },\n\n    },\n\n    [MINOR]: {\n\n      [NO_MODIFIER]: {\n        I: 0,\n        II: 2,\n        III: 3,\n        IV: 5,\n        V: 7,\n        VI: 8,\n        VII: 10,\n      },\n\n      [SHARP]: {\n        I: 1,\n        II: 3,\n        III: 4,\n        IV: 6,\n        V: 8,\n        VI: 9,\n        VII: 11,\n      },\n\n      [FLAT]: {\n        II: 1,\n        III: 2,\n        IV: 4,\n        V: 6,\n        VI: 7,\n        VII: 9,\n        I: 11,\n      },\n\n    },\n\n  },\n\n};\n\nexport const GRADE_TO_KEY: Record<ChordType, Record<Mode, Record<ModifierMaybe, Record<number, string>>>> = {\n\n  [SYMBOL]: {\n\n    [MAJOR]: {\n\n      [NO_MODIFIER]: {\n        0: 'C',\n        2: 'D',\n        4: 'E',\n        5: 'F',\n        7: 'G',\n        9: 'A',\n        11: 'B',\n      },\n\n      [SHARP]: {\n        0: 'B#',\n        1: 'C#',\n        3: 'D#',\n        5: 'E#',\n        6: 'F#',\n        8: 'G#',\n        10: 'A#',\n      },\n\n      [FLAT]: {\n        1: 'Db',\n        3: 'Eb',\n        4: 'Fb',\n        6: 'Gb',\n        8: 'Ab',\n        10: 'Bb',\n        11: 'Cb',\n      },\n\n    },\n\n    [MINOR]: {\n\n      [NO_MODIFIER]: {\n        0: 'C',\n        2: 'D',\n        4: 'E',\n        5: 'F',\n        7: 'G',\n        9: 'A',\n        11: 'B',\n      },\n\n      [SHARP]: {\n        0: 'B#',\n        1: 'C#',\n        3: 'D#',\n        5: 'E#',\n        6: 'F#',\n        8: 'G#',\n        10: 'A#',\n      },\n\n      [FLAT]: {\n        1: 'Db',\n        3: 'Eb',\n        4: 'Fb',\n        6: 'Gb',\n        8: 'Ab',\n        10: 'Bb',\n        11: 'Cb',\n      },\n\n    },\n\n  },\n\n  [SOLFEGE]: {\n\n    [MAJOR]: {\n\n      [NO_MODIFIER]: {\n        0: 'Do',\n        2: 'Re',\n        4: 'Mi',\n        5: 'Fa',\n        7: 'Sol',\n        9: 'La',\n        11: 'Si',\n      },\n\n      [SHARP]: {\n        0: 'Si#',\n        1: 'Do#',\n        3: 'Re#',\n        5: 'Mi#',\n        6: 'Fa#',\n        8: 'Sol#',\n        10: 'La#',\n      },\n\n      [FLAT]: {\n        1: 'Reb',\n        3: 'Mib',\n        4: 'Fab',\n        6: 'Solb',\n        8: 'Lab',\n        10: 'Sib',\n        11: 'Dob',\n      },\n\n    },\n\n    [MINOR]: {\n\n      [NO_MODIFIER]: {\n        0: 'Do',\n        2: 'Re',\n        4: 'Mi',\n        5: 'Fa',\n        7: 'Sol',\n        9: 'La',\n        11: 'Si',\n      },\n\n      [SHARP]: {\n        0: 'Si#',\n        1: 'Do#',\n        3: 'Re#',\n        5: 'Mi#',\n        6: 'Fa#',\n        8: 'Sol#',\n        10: 'La#',\n      },\n\n      [FLAT]: {\n        1: 'Reb',\n        3: 'Mib',\n        4: 'Fab',\n        6: 'Solb',\n        8: 'Lab',\n        10: 'Sib',\n        11: 'Dob',\n      },\n\n    },\n\n  },\n\n  [NUMERIC]: {\n\n    [MAJOR]: {\n\n      [NO_MODIFIER]: {\n        0: '1',\n        2: '2',\n        4: '3',\n        5: '4',\n        7: '5',\n        9: '6',\n        11: '7',\n      },\n\n      [SHARP]: {\n        0: '#7',\n        1: '#1',\n        3: '#2',\n        5: '#3',\n        6: '#4',\n        8: '#5',\n        10: '#6',\n      },\n\n      [FLAT]: {\n        1: 'b2',\n        3: 'b3',\n        4: 'b4',\n        6: 'b5',\n        8: 'b6',\n        10: 'b7',\n        11: 'b1',\n      },\n\n    },\n\n    [MINOR]: {\n\n      [NO_MODIFIER]: {\n        0: '1',\n        2: '2',\n        3: '3',\n        5: '4',\n        7: '5',\n        8: '6',\n        10: '7',\n      },\n\n      [SHARP]: {\n        1: '#1',\n        3: '#2',\n        4: '#3',\n        6: '#4',\n        8: '#5',\n        9: '#6',\n        11: '#7',\n      },\n\n      [FLAT]: {\n        1: 'b2',\n        2: 'b3',\n        4: 'b4',\n        6: 'b5',\n        7: 'b6',\n        9: 'b7',\n        11: 'b1',\n      },\n\n    },\n\n  },\n\n  [NUMERAL]: {\n\n    [MAJOR]: {\n\n      [NO_MODIFIER]: {\n        0: 'I',\n        2: 'II',\n        4: 'III',\n        5: 'IV',\n        7: 'V',\n        9: 'VI',\n        11: 'VII',\n      },\n\n      [SHARP]: {\n        0: '#VII',\n        1: '#I',\n        3: '#II',\n        5: '#III',\n        6: '#IV',\n        8: '#V',\n        10: '#VI',\n      },\n\n      [FLAT]: {\n        1: 'bII',\n        3: 'bIII',\n        4: 'bIV',\n        6: 'bV',\n        8: 'bVI',\n        10: 'bVII',\n        11: 'bI',\n      },\n\n    },\n\n    [MINOR]: {\n\n      [NO_MODIFIER]: {\n        0: 'I',\n        2: 'II',\n        3: 'III',\n        5: 'IV',\n        7: 'V',\n        8: 'VI',\n        10: 'VII',\n      },\n\n      [SHARP]: {\n        1: '#I',\n        3: '#II',\n        4: '#III',\n        6: '#IV',\n        8: '#V',\n        9: '#VI',\n        11: '#VII',\n      },\n\n      [FLAT]: {\n        1: 'bII',\n        2: 'bIII',\n        4: 'bIV',\n        6: 'bV',\n        7: 'bVI',\n        9: 'bVII',\n        11: 'bI',\n      },\n\n    },\n\n  },\n\n};\n","export default class ChordParsingError extends Error {}\n","\n// Generated by peggy v. 5.1.0 (ts-pegjs plugin v. 3.1.0 )\n//\n// https://peggyjs.org/   https://github.com/metadevpro/ts-pegjs\n\n\"use strict\";\n\nexport interface FilePosition {\n  offset: number;\n  line: number;\n  column: number;\n}\n\nexport interface FileRange {\n  start: FilePosition;\n  end: FilePosition;\n  source: string;\n}\n\nexport interface LiteralExpectation {\n  type: \"literal\";\n  text: string;\n  ignoreCase: boolean;\n}\n\nexport interface ClassParts extends Array<string | ClassParts> {}\n\nexport interface ClassExpectation {\n  type: \"class\";\n  parts: ClassParts;\n  inverted: boolean;\n  ignoreCase: boolean;\n}\n\nexport interface AnyExpectation {\n  type: \"any\";\n}\n\nexport interface EndExpectation {\n  type: \"end\";\n}\n\nexport interface OtherExpectation {\n  type: \"other\";\n  description: string;\n}\n\nexport type Expectation = LiteralExpectation | ClassExpectation | AnyExpectation | EndExpectation | OtherExpectation;\n\nfunction peg$padEnd(str: string, targetLength: number, padString: string) {\n  padString = padString || ' ';\n  if (str.length > targetLength) {\n    return str;\n  }\n  targetLength -= str.length;\n  padString += padString.repeat(targetLength);\n  return str + padString.slice(0, targetLength);\n}\n\nexport class PeggySyntaxError extends Error {\n  public static buildMessage(expected: Expectation[], found: string | null) {\n    function hex(ch: string): string {\n      return ch.charCodeAt(0).toString(16).toUpperCase();\n    }\n\n    function literalEscape(s: string): string {\n      return s\n        .replace(/\\\\/g, \"\\\\\\\\\")\n        .replace(/\"/g,  \"\\\\\\\"\")\n        .replace(/\\0/g, \"\\\\0\")\n        .replace(/\\t/g, \"\\\\t\")\n        .replace(/\\n/g, \"\\\\n\")\n        .replace(/\\r/g, \"\\\\r\")\n        .replace(/[\\x00-\\x0F]/g,            (ch) => \"\\\\x0\" + hex(ch) )\n        .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\"  + hex(ch) );\n    }\n\n    function classEscape(s: string): string {\n      return s\n        .replace(/\\\\/g, \"\\\\\\\\\")\n        .replace(/\\]/g, \"\\\\]\")\n        .replace(/\\^/g, \"\\\\^\")\n        .replace(/-/g,  \"\\\\-\")\n        .replace(/\\0/g, \"\\\\0\")\n        .replace(/\\t/g, \"\\\\t\")\n        .replace(/\\n/g, \"\\\\n\")\n        .replace(/\\r/g, \"\\\\r\")\n        .replace(/[\\x00-\\x0F]/g,            (ch) => \"\\\\x0\" + hex(ch) )\n        .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\"  + hex(ch) );\n    }\n\n    function describeExpectation(expectation: Expectation) {\n      switch (expectation.type) {\n        case \"literal\":\n          return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n        case \"class\":\n          const escapedParts = expectation.parts.map((part) => {\n            return Array.isArray(part)\n              ? classEscape(part[0] as string) + \"-\" + classEscape(part[1] as string)\n              : classEscape(part);\n          });\n\n          return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts + \"]\";\n        case \"any\":\n          return \"any character\";\n        case \"end\":\n          return \"end of input\";\n        case \"other\":\n          return expectation.description;\n      }\n    }\n\n    function describeExpected(expected1: Expectation[]) {\n      const descriptions = expected1.map(describeExpectation);\n      let i: number;\n      let j: number;\n\n      descriptions.sort();\n\n      if (descriptions.length > 0) {\n        for (i = 1, j = 1; i < descriptions.length; i++) {\n          if (descriptions[i - 1] !== descriptions[i]) {\n            descriptions[j] = descriptions[i];\n            j++;\n          }\n        }\n        descriptions.length = j;\n      }\n\n      switch (descriptions.length) {\n        case 1:\n          return descriptions[0];\n\n        case 2:\n          return descriptions[0] + \" or \" + descriptions[1];\n\n        default:\n          return descriptions.slice(0, -1).join(\", \")\n            + \", or \"\n            + descriptions[descriptions.length - 1];\n      }\n    }\n\n    function describeFound(found1: string | null) {\n      return found1 ? \"\\\"\" + literalEscape(found1) + \"\\\"\" : \"end of input\";\n    }\n\n    return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n  }\n\n  public message: string;\n  public expected: Expectation[];\n  public found: string | null;\n  public location: FileRange;\n  public name: string;\n\n  constructor(message: string, expected: Expectation[], found: string | null, location: FileRange) {\n    super();\n    this.message = message;\n    this.expected = expected;\n    this.found = found;\n    this.location = location;\n    this.name = \"PeggySyntaxError\";\n\n    if (typeof (Object as any).setPrototypeOf === \"function\") {\n      (Object as any).setPrototypeOf(this, PeggySyntaxError.prototype);\n    } else {\n      (this as any).__proto__ = PeggySyntaxError.prototype;\n    }\n    if (typeof (Error as any).captureStackTrace === \"function\") {\n      (Error as any).captureStackTrace(this, PeggySyntaxError);\n    }\n  }\n\n  format(sources: { grammarSource?: string; text: string }[]): string {\n    let str = 'Error: ' + this.message;\n    if (this.location) {\n      let src: string[] | null = null;\n      let k;\n      for (k = 0; k < sources.length; k++) {\n        if (sources[k].grammarSource === this.location.source) {\n          src = sources[k].text.split(/\\r\\n|\\n|\\r/g);\n          break;\n        }\n      }\n      let s = this.location.start;\n      let loc = this.location.source + ':' + s.line + ':' + s.column;\n      if (src) {\n        let e = this.location.end;\n        let filler = peg$padEnd('', s.line.toString().length, ' ');\n        let line = src[s.line - 1];\n        let last = s.line === e.line ? e.column : line.length + 1;\n        str += '\\n --> ' + loc + '\\n' + filler + ' |\\n' + s.line + ' | ' + line + '\\n' + filler + ' | ' +\n          peg$padEnd('', s.column - 1, ' ') +\n          peg$padEnd('', last - s.column, '^');\n      } else {\n        str += '\\n at ' + loc;\n      }\n    }\n    return str;\n  }\n}\n\nfunction peg$parse(input: string, options?: ParseOptions) {\n  options = options !== undefined ? options : {};\n\n  const peg$FAILED: Readonly<any> = {};\n  const peg$source = options.grammarSource;\n\n  const peg$startRuleFunctions: {[id: string]: any} = { Chord: peg$parseChord };\n  let peg$startRuleFunction: () => any = peg$parseChord;\n\n  const peg$c0 = \"(\";\n  const peg$c1 = peg$literalExpectation(\"(\", false);\n  const peg$c2 = \")\";\n  const peg$c3 = peg$literalExpectation(\")\", false);\n  const peg$c4 = function(chord: any): any {\n        return { type: \"chord\", ...chord, column: location().start.column, optional: true };\n      };\n  const peg$c5 = function(chord: any): any {\n        return { type: \"chord\", ...chord, column: location().start.column };\n      };\n  const peg$c6 = /^[#b]/;\n  const peg$c7 = peg$classExpectation([\"#\", \"b\"], false, false);\n  const peg$c8 = function(root: any, accidental: any, suffix: any, bass: any): any {\n        const suffixProps = typeof suffix === 'string' || suffix === null\n          ? { suffix }\n          : { quality: suffix.quality, extensions: suffix.extensions };\n    \t  return { base: root, accidental, ...suffixProps, ...bass, chordType: \"symbol\" };\n      };\n  const peg$c9 = function(bass: any): any {\n        return { base: null, accidental: null, suffix: null, ...bass, chordType: \"symbol\" };\n      };\n  const peg$c10 = /^[A-Ga-g]/;\n  const peg$c11 = peg$classExpectation([[\"A\", \"G\"], [\"a\", \"g\"]], false, false);\n  const peg$c12 = \"/\";\n  const peg$c13 = peg$literalExpectation(\"/\", false);\n  const peg$c14 = function(root: any, accidental: any): any {\n        return { bassBase: root, bassAccidental: accidental };\n      };\n  const peg$c15 = function(root: any, accidental: any, suffix: any, bass: any): any {\n        const suffixProps = typeof suffix === 'string' || suffix === null\n          ? { suffix }\n          : { quality: suffix.quality, extensions: suffix.extensions };\n    \t  return { base: root, accidental, ...suffixProps, ...bass, chordType: \"solfege\" };\n      };\n  const peg$c16 = function(bass: any): any {\n        return { base: null, accidental: null, suffix: null, ...bass, chordType: \"solfege\" };\n      };\n  const peg$c17 = \"do\";\n  const peg$c18 = peg$literalExpectation(\"Do\", true);\n  const peg$c19 = \"re\";\n  const peg$c20 = peg$literalExpectation(\"Re\", true);\n  const peg$c21 = \"mi\";\n  const peg$c22 = peg$literalExpectation(\"Mi\", true);\n  const peg$c23 = \"sol\";\n  const peg$c24 = peg$literalExpectation(\"Sol\", true);\n  const peg$c25 = \"la\";\n  const peg$c26 = peg$literalExpectation(\"La\", true);\n  const peg$c27 = \"si\";\n  const peg$c28 = peg$literalExpectation(\"Si\", true);\n  const peg$c29 = \"Fa\";\n  const peg$c30 = peg$literalExpectation(\"Fa\", false);\n  const peg$c31 = \"dd\";\n  const peg$c32 = peg$literalExpectation(\"dd\", true);\n  const peg$c33 = \"ug\";\n  const peg$c34 = peg$literalExpectation(\"ug\", true);\n  const peg$c35 = function(): any { return \"Fa\"; };\n  const peg$c36 = \"fa\";\n  const peg$c37 = peg$literalExpectation(\"fa\", false);\n  const peg$c38 = function(): any { return \"fa\"; };\n  const peg$c39 = function(accidental: any, root: any, suffix: any, bass: any): any {\n        const suffixProps = typeof suffix === 'string' || suffix === null\n          ? { suffix }\n          : { quality: suffix.quality, extensions: suffix.extensions };\n        return { base: root, accidental, ...suffixProps, ...bass, chordType: \"numeral\" };\n      };\n  const peg$c40 = function(bass: any): any {\n        return { base: null, accidental: null, suffix: null, ...bass, chordType: \"numeral\" };\n      };\n  const peg$c41 = \"iii\";\n  const peg$c42 = peg$literalExpectation(\"III\", true);\n  const peg$c43 = \"vii\";\n  const peg$c44 = peg$literalExpectation(\"VII\", true);\n  const peg$c45 = \"ii\";\n  const peg$c46 = peg$literalExpectation(\"II\", true);\n  const peg$c47 = \"iv\";\n  const peg$c48 = peg$literalExpectation(\"IV\", true);\n  const peg$c49 = \"vi\";\n  const peg$c50 = peg$literalExpectation(\"VI\", true);\n  const peg$c51 = /^[IV]/i;\n  const peg$c52 = peg$classExpectation([\"I\", \"V\"], false, true);\n  const peg$c53 = function(accidental: any, root: any): any {\n        return { bassBase: root, bassAccidental: accidental };\n      };\n  const peg$c54 = function(accidental: any, root: any, suffix: any, bass: any): any {\n        const suffixProps = typeof suffix === 'string' || suffix === null\n          ? { suffix }\n          : { quality: suffix.quality, extensions: suffix.extensions };\n        return { base: root, accidental, ...suffixProps, ...bass, chordType: \"numeric\" };\n      };\n  const peg$c55 = function(bass: any): any {\n        return { base: null, accidental: null, suffix: null, ...bass, chordType: \"numeric\" };\n      };\n  const peg$c56 = /^[1-7]/;\n  const peg$c57 = peg$classExpectation([[\"1\", \"7\"]], false, false);\n  const peg$c58 = function(quality: any, extensions: any): any {\n        return { quality: quality || null, extensions: extensions || null };\n      };\n  const peg$c59 = \"m\";\n  const peg$c60 = peg$literalExpectation(\"m\", false);\n  const peg$c61 = \"a\";\n  const peg$c62 = peg$literalExpectation(\"a\", true);\n  const peg$c63 = function(): any { return \"m\"; };\n  const peg$c64 = \"dim\";\n  const peg$c65 = peg$literalExpectation(\"dim\", true);\n  const peg$c66 = \"aug\";\n  const peg$c67 = peg$literalExpectation(\"aug\", true);\n  const peg$c68 = \"sus4\";\n  const peg$c69 = peg$literalExpectation(\"sus4\", true);\n  const peg$c70 = \"sus2\";\n  const peg$c71 = peg$literalExpectation(\"sus2\", true);\n  const peg$c72 = \"sus\";\n  const peg$c73 = peg$literalExpectation(\"sus\", true);\n  const peg$c74 = \"\";\n  const peg$c75 = /^[a-zA-Z0-9#+\\-o\\u266D\\u266F\\u0394]/;\n  const peg$c76 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"], \"#\", \"+\", \"-\", \"o\", \"\\u266D\", \"\\u266F\", \"\\u0394\"], false, false);\n  const peg$c77 = function(content: any): any { return \"(\" + content + \")\"; };\n\n  let peg$currPos = 0;\n  let peg$savedPos = 0;\n  const peg$posDetailsCache = [{ line: 1, column: 1 }];\n  let peg$maxFailPos = 0;\n  let peg$maxFailExpected: Expectation[] = [];\n  let peg$silentFails = 0;\n\n  let peg$result;\n\n  if (options.startRule !== undefined) {\n    if (!(options.startRule in peg$startRuleFunctions)) {\n      throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n    }\n\n    peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n  }\n\n  function text(): string {\n    return input.substring(peg$savedPos, peg$currPos);\n  }\n\n  function location(): FileRange {\n    return peg$computeLocation(peg$savedPos, peg$currPos);\n  }\n\n  function expected(description: string, location1?: FileRange) {\n    location1 = location1 !== undefined\n      ? location1\n      : peg$computeLocation(peg$savedPos, peg$currPos);\n\n    throw peg$buildStructuredError(\n      [peg$otherExpectation(description)],\n      input.substring(peg$savedPos, peg$currPos),\n      location1\n    );\n  }\n\n  function error(message: string, location1?: FileRange) {\n    location1 = location1 !== undefined\n      ? location1\n      : peg$computeLocation(peg$savedPos, peg$currPos);\n\n    throw peg$buildSimpleError(message, location1);\n  }\n\n  function peg$literalExpectation(text1: string, ignoreCase: boolean): LiteralExpectation {\n    return { type: \"literal\", text: text1, ignoreCase: ignoreCase };\n  }\n\n  function peg$classExpectation(parts: ClassParts, inverted: boolean, ignoreCase: boolean): ClassExpectation {\n    return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n  }\n\n  function peg$anyExpectation(): AnyExpectation {\n    return { type: \"any\" };\n  }\n\n  function peg$endExpectation(): EndExpectation {\n    return { type: \"end\" };\n  }\n\n  function peg$otherExpectation(description: string): OtherExpectation {\n    return { type: \"other\", description: description };\n  }\n\n  function peg$computePosDetails(pos: number) {\n    let details = peg$posDetailsCache[pos];\n    let p;\n\n    if (details) {\n      return details;\n    } else {\n      p = pos - 1;\n      while (!peg$posDetailsCache[p]) {\n        p--;\n      }\n\n      details = peg$posDetailsCache[p];\n      details = {\n        line: details.line,\n        column: details.column\n      };\n\n      while (p < pos) {\n        if (input.charCodeAt(p) === 10) {\n          details.line++;\n          details.column = 1;\n        } else {\n          details.column++;\n        }\n\n        p++;\n      }\n\n      peg$posDetailsCache[pos] = details;\n\n      return details;\n    }\n  }\n\n  function peg$computeLocation(startPos: number, endPos: number): FileRange {\n    const startPosDetails = peg$computePosDetails(startPos);\n    const endPosDetails = peg$computePosDetails(endPos);\n\n    return {\n      source: peg$source,\n      start: {\n        offset: startPos,\n        line: startPosDetails.line,\n        column: startPosDetails.column\n      },\n      end: {\n        offset: endPos,\n        line: endPosDetails.line,\n        column: endPosDetails.column\n      }\n    };\n  }\n\n  function peg$fail(expected1: Expectation) {\n    if (peg$currPos < peg$maxFailPos) { return; }\n\n    if (peg$currPos > peg$maxFailPos) {\n      peg$maxFailPos = peg$currPos;\n      peg$maxFailExpected = [];\n    }\n\n    peg$maxFailExpected.push(expected1);\n  }\n\n  function peg$buildSimpleError(message: string, location1: FileRange) {\n    return new PeggySyntaxError(message, [], \"\", location1);\n  }\n\n  function peg$buildStructuredError(expected1: Expectation[], found: string | null, location1: FileRange) {\n    return new PeggySyntaxError(\n      PeggySyntaxError.buildMessage(expected1, found),\n      expected1,\n      found,\n      location1\n    );\n  }\n\n  function peg$parseChord(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 40) {\n      s1 = peg$c0;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c1); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseNumeral();\n      if (s2 as any === peg$FAILED) {\n        s2 = peg$parseNumeric();\n        if (s2 as any === peg$FAILED) {\n          s2 = peg$parseChordSolfege();\n          if (s2 as any === peg$FAILED) {\n            s2 = peg$parseChordSymbol();\n          }\n        }\n      }\n      if (s2 as any !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 41) {\n          s3 = peg$c2;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c3); }\n        }\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c4(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parseNumeral();\n      if (s1 as any === peg$FAILED) {\n        s1 = peg$parseNumeric();\n        if (s1 as any === peg$FAILED) {\n          s1 = peg$parseChordSolfege();\n          if (s1 as any === peg$FAILED) {\n            s1 = peg$parseChordSymbol();\n          }\n        }\n      }\n      if (s1 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c5(s1);\n      }\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordAccidental(): any {\n    let s0;\n\n    if (peg$c6.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c7); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordSymbol(): any {\n    let s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$parseChordSymbolRoot();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseChordAccidental();\n      if (s2 as any === peg$FAILED) {\n        s2 = null;\n      }\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseChordSuffix();\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parseChordSymbolBass();\n          if (s4 as any === peg$FAILED) {\n            s4 = null;\n          }\n          if (s4 as any !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c8(s1, s2, s3, s4);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parseChordSymbolBass();\n      if (s1 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c9(s1);\n      }\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordSymbolRoot(): any {\n    let s0;\n\n    if (peg$c10.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c11); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordSymbolBass(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 47) {\n      s1 = peg$c12;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c13); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseChordSymbolRoot();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseChordAccidental();\n        if (s3 as any === peg$FAILED) {\n          s3 = null;\n        }\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c14(s2, s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordSolfege(): any {\n    let s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$parseChordSolfegeRoot();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseChordAccidental();\n      if (s2 as any === peg$FAILED) {\n        s2 = null;\n      }\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseChordSuffix();\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parseChordSolfegeBass();\n          if (s4 as any === peg$FAILED) {\n            s4 = null;\n          }\n          if (s4 as any !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c15(s1, s2, s3, s4);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parseChordSolfegeBass();\n      if (s1 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c16(s1);\n      }\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordSolfegeRoot(): any {\n    let s0;\n\n    if (input.substr(peg$currPos, 2).toLowerCase() === peg$c17) {\n      s0 = input.substr(peg$currPos, 2);\n      peg$currPos += 2;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c18); }\n    }\n    if (s0 as any === peg$FAILED) {\n      if (input.substr(peg$currPos, 2).toLowerCase() === peg$c19) {\n        s0 = input.substr(peg$currPos, 2);\n        peg$currPos += 2;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c20); }\n      }\n      if (s0 as any === peg$FAILED) {\n        if (input.substr(peg$currPos, 2).toLowerCase() === peg$c21) {\n          s0 = input.substr(peg$currPos, 2);\n          peg$currPos += 2;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c22); }\n        }\n        if (s0 as any === peg$FAILED) {\n          s0 = peg$parseSolfegeFa();\n          if (s0 as any === peg$FAILED) {\n            if (input.substr(peg$currPos, 3).toLowerCase() === peg$c23) {\n              s0 = input.substr(peg$currPos, 3);\n              peg$currPos += 3;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c24); }\n            }\n            if (s0 as any === peg$FAILED) {\n              if (input.substr(peg$currPos, 2).toLowerCase() === peg$c25) {\n                s0 = input.substr(peg$currPos, 2);\n                peg$currPos += 2;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c26); }\n              }\n              if (s0 as any === peg$FAILED) {\n                if (input.substr(peg$currPos, 2).toLowerCase() === peg$c27) {\n                  s0 = input.substr(peg$currPos, 2);\n                  peg$currPos += 2;\n                } else {\n                  s0 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c28); }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseSolfegeFa(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (input.substr(peg$currPos, 2) === peg$c29) {\n      s1 = peg$c29;\n      peg$currPos += 2;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c30); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$currPos;\n      peg$silentFails++;\n      if (input.substr(peg$currPos, 2).toLowerCase() === peg$c31) {\n        s3 = input.substr(peg$currPos, 2);\n        peg$currPos += 2;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c32); }\n      }\n      if (s3 as any === peg$FAILED) {\n        if (input.substr(peg$currPos, 2).toLowerCase() === peg$c33) {\n          s3 = input.substr(peg$currPos, 2);\n          peg$currPos += 2;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c34); }\n        }\n      }\n      peg$silentFails--;\n      if (s3 as any === peg$FAILED) {\n        s2 = undefined;\n      } else {\n        peg$currPos = s2;\n        s2 = peg$FAILED;\n      }\n      if (s2 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c35();\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 2) === peg$c36) {\n        s1 = peg$c36;\n        peg$currPos += 2;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c37); }\n      }\n      if (s1 as any !== peg$FAILED) {\n        s2 = peg$currPos;\n        peg$silentFails++;\n        if (input.substr(peg$currPos, 2).toLowerCase() === peg$c31) {\n          s3 = input.substr(peg$currPos, 2);\n          peg$currPos += 2;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c32); }\n        }\n        if (s3 as any === peg$FAILED) {\n          if (input.substr(peg$currPos, 2).toLowerCase() === peg$c33) {\n            s3 = input.substr(peg$currPos, 2);\n            peg$currPos += 2;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c34); }\n          }\n        }\n        peg$silentFails--;\n        if (s3 as any === peg$FAILED) {\n          s2 = undefined;\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n        if (s2 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c38();\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordSolfegeBass(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 47) {\n      s1 = peg$c12;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c13); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseChordSolfegeRoot();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseChordAccidental();\n        if (s3 as any === peg$FAILED) {\n          s3 = null;\n        }\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c14(s2, s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseNumeral(): any {\n    let s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$parseChordAccidental();\n    if (s1 as any === peg$FAILED) {\n      s1 = null;\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseNumeralRoot();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseChordSuffix();\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parseNumeralBass();\n          if (s4 as any === peg$FAILED) {\n            s4 = null;\n          }\n          if (s4 as any !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c39(s1, s2, s3, s4);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parseNumeralBass();\n      if (s1 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c40(s1);\n      }\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseNumeralRoot(): any {\n    let s0;\n\n    if (input.substr(peg$currPos, 3).toLowerCase() === peg$c41) {\n      s0 = input.substr(peg$currPos, 3);\n      peg$currPos += 3;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c42); }\n    }\n    if (s0 as any === peg$FAILED) {\n      if (input.substr(peg$currPos, 3).toLowerCase() === peg$c43) {\n        s0 = input.substr(peg$currPos, 3);\n        peg$currPos += 3;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c44); }\n      }\n      if (s0 as any === peg$FAILED) {\n        if (input.substr(peg$currPos, 2).toLowerCase() === peg$c45) {\n          s0 = input.substr(peg$currPos, 2);\n          peg$currPos += 2;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c46); }\n        }\n        if (s0 as any === peg$FAILED) {\n          if (input.substr(peg$currPos, 2).toLowerCase() === peg$c47) {\n            s0 = input.substr(peg$currPos, 2);\n            peg$currPos += 2;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c48); }\n          }\n          if (s0 as any === peg$FAILED) {\n            if (input.substr(peg$currPos, 2).toLowerCase() === peg$c49) {\n              s0 = input.substr(peg$currPos, 2);\n              peg$currPos += 2;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c50); }\n            }\n            if (s0 as any === peg$FAILED) {\n              if (peg$c51.test(input.charAt(peg$currPos))) {\n                s0 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c52); }\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseNumeralBass(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 47) {\n      s1 = peg$c12;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c13); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseChordAccidental();\n      if (s2 as any === peg$FAILED) {\n        s2 = null;\n      }\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseNumeralRoot();\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c53(s2, s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseNumeric(): any {\n    let s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$parseChordAccidental();\n    if (s1 as any === peg$FAILED) {\n      s1 = null;\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseNumericRoot();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseChordSuffix();\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parseNumericBass();\n          if (s4 as any === peg$FAILED) {\n            s4 = null;\n          }\n          if (s4 as any !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c54(s1, s2, s3, s4);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parseNumericBass();\n      if (s1 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c55(s1);\n      }\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseNumericRoot(): any {\n    let s0;\n\n    if (peg$c56.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c57); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseNumericBass(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 47) {\n      s1 = peg$c12;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c13); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseChordAccidental();\n      if (s2 as any === peg$FAILED) {\n        s2 = null;\n      }\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseNumericRoot();\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c53(s2, s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordSuffix(): any {\n    let s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$parseQuality();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$currPos;\n      s3 = [];\n      s4 = peg$parseExtensions();\n      while (s4 as any !== peg$FAILED) {\n        s3.push(s4);\n        s4 = peg$parseExtensions();\n      }\n      if (s3 as any !== peg$FAILED) {\n        s2 = input.substring(s2, peg$currPos);\n      } else {\n        s2 = s3;\n      }\n      if (s2 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c58(s1, s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseQuality(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 109) {\n      s1 = peg$c59;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c60); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$currPos;\n      peg$silentFails++;\n      if (input.substr(peg$currPos, 1).toLowerCase() === peg$c61) {\n        s3 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c62); }\n      }\n      peg$silentFails--;\n      if (s3 as any === peg$FAILED) {\n        s2 = undefined;\n      } else {\n        peg$currPos = s2;\n        s2 = peg$FAILED;\n      }\n      if (s2 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c63();\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 as any === peg$FAILED) {\n      if (input.substr(peg$currPos, 3).toLowerCase() === peg$c64) {\n        s0 = input.substr(peg$currPos, 3);\n        peg$currPos += 3;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c65); }\n      }\n      if (s0 as any === peg$FAILED) {\n        if (input.substr(peg$currPos, 3).toLowerCase() === peg$c66) {\n          s0 = input.substr(peg$currPos, 3);\n          peg$currPos += 3;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c67); }\n        }\n        if (s0 as any === peg$FAILED) {\n          if (input.substr(peg$currPos, 4).toLowerCase() === peg$c68) {\n            s0 = input.substr(peg$currPos, 4);\n            peg$currPos += 4;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c69); }\n          }\n          if (s0 as any === peg$FAILED) {\n            if (input.substr(peg$currPos, 4).toLowerCase() === peg$c70) {\n              s0 = input.substr(peg$currPos, 4);\n              peg$currPos += 4;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c71); }\n            }\n            if (s0 as any === peg$FAILED) {\n              if (input.substr(peg$currPos, 3).toLowerCase() === peg$c72) {\n                s0 = input.substr(peg$currPos, 3);\n                peg$currPos += 3;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c73); }\n              }\n              if (s0 as any === peg$FAILED) {\n                s0 = peg$c74;\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseExtensions(): any {\n    let s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 40) {\n      s1 = peg$c0;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c1); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$currPos;\n      s3 = [];\n      if (peg$c75.test(input.charAt(peg$currPos))) {\n        s4 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s4 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c76); }\n      }\n      if (s4 as any !== peg$FAILED) {\n        while (s4 as any !== peg$FAILED) {\n          s3.push(s4);\n          if (peg$c75.test(input.charAt(peg$currPos))) {\n            s4 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c76); }\n          }\n        }\n      } else {\n        s3 = peg$FAILED;\n      }\n      if (s3 as any !== peg$FAILED) {\n        s2 = input.substring(s2, peg$currPos);\n      } else {\n        s2 = s3;\n      }\n      if (s2 as any !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 41) {\n          s3 = peg$c2;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c3); }\n        }\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c77(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = [];\n      if (peg$c75.test(input.charAt(peg$currPos))) {\n        s2 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c76); }\n      }\n      if (s2 as any !== peg$FAILED) {\n        while (s2 as any !== peg$FAILED) {\n          s1.push(s2);\n          if (peg$c75.test(input.charAt(peg$currPos))) {\n            s2 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s2 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c76); }\n          }\n        }\n      } else {\n        s1 = peg$FAILED;\n      }\n      if (s1 as any !== peg$FAILED) {\n        s0 = input.substring(s0, peg$currPos);\n      } else {\n        s0 = s1;\n      }\n    }\n\n    return s0;\n  }\n\n  peg$result = peg$startRuleFunction();\n\n  if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n    return peg$result;\n  } else {\n    if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n      peg$fail(peg$endExpectation());\n    }\n\n    throw peg$buildStructuredError(\n      peg$maxFailExpected,\n      peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n      peg$maxFailPos < input.length\n        ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n        : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n    );\n  }\n}\n\nexport interface ParseOptions {\n  filename?: string;\n  startRule?: string;\n  tracer?: any;\n  [key: string]: any;\n}\nexport type ParseFunction = (input: string, options?: ParseOptions) => any;\nexport const parse: ParseFunction = peg$parse;\n\n","import ChordParsingError from './chord_parsing_error';\nimport Key from './key';\nimport { parse } from './parser/chord/peg_parser';\nimport { deprecate, isMinor, normalizeChordSuffix } from './utilities';\n\nimport {\n  Accidental,\n  ChordType,\n  NUMERAL,\n  NUMERIC,\n  SOLFEGE,\n  SYMBOL,\n} from './constants';\n\ninterface ChordProperties {\n  root?: Key | null;\n  suffix?: string | null;\n  quality?: string | null;\n  extensions?: string | null;\n  bass?: Key | null;\n  optional?: boolean;\n}\n\nexport interface ChordConstructorOptions {\n  base?: string | number | null;\n  accidental?: Accidental | null;\n  suffix?: string | null;\n  quality?: string | null;\n  extensions?: string | null;\n  bassBase?: string | number | null;\n  bassAccidental?: Accidental | null;\n  root?: Key | null;\n  bass?: Key | null;\n  chordType?: ChordType | null;\n  optional?: boolean;\n}\n\n/**\n * Represents a Chord, consisting of a root, suffix (quality) and bass\n */\nclass Chord implements ChordProperties {\n  bass: Key | null;\n\n  root: Key | null;\n\n  private _suffix: string | null;\n\n  private _quality: string | null;\n\n  private _extensions: string | null;\n\n  get suffix(): string | null {\n    if (this._quality !== null || this._extensions !== null) {\n      return (this._quality || '') + (this._extensions || '');\n    }\n    return this._suffix;\n  }\n\n  get quality(): string | null {\n    return this._quality;\n  }\n\n  get extensions(): string | null {\n    return this._extensions;\n  }\n\n  optional: boolean;\n\n  /**\n   * Tries to parse a chord string into a chord\n   * Any leading or trailing whitespace is removed first, so a chord like `  \\n  E/G# \\r ` is valid.\n   * @param chordString the chord string, eg `Esus4/G#` or `1sus4/#3`.\n   * @returns {Chord|null}\n   */\n  static parse(chordString: string): Chord | null {\n    try {\n      return this.parseOrFail(chordString);\n    } catch (_error) {\n      return null;\n    }\n  }\n\n  static parseOrFail(chordString: string): Chord {\n    const trimmedChord = chordString.trim();\n\n    try {\n      const ast = parse(trimmedChord);\n      return new Chord(ast);\n    } catch (error) {\n      const errorObj = error as Error;\n      throw new ChordParsingError(`Failed parsing '${trimmedChord}': ${errorObj.message}`);\n    }\n  }\n\n  /**\n   * Returns a deep copy of the chord\n   * @returns {Chord}\n   */\n  clone(): Chord {\n    return this.set({});\n  }\n\n  /**\n   * Converts the chord to a chord symbol, using the supplied key as a reference.\n   * For example, a numeric chord `#4` with reference key `E` will return the chord symbol `A#`.\n   * When the chord is already a chord symbol, it will return a clone of the object.\n   * @param {Key|string|null} [referenceKey=null] the reference key. The key is required when converting a\n   * numeric or numeral.\n   * @returns {Chord} the chord symbol\n   */\n  toChordSymbol(referenceKey: Key | string | null = null): Chord {\n    if (this.isChordSymbol()) return this.clone();\n\n    const { keyObj, referenceIsMinor } = this.prepareKeyForConversion(referenceKey);\n\n    const chordSymbolChord = new Chord({\n      suffix: this.normalizedSuffix,\n      root: this.root?.toChordSymbol(keyObj, referenceIsMinor) || null,\n      bass: this.bass?.toChordSymbol(keyObj, referenceIsMinor) || null,\n      optional: this.optional,\n    });\n\n    return this.finalizeConvertedChord(chordSymbolChord, keyObj);\n  }\n\n  /**\n   * Converts the chord to a chord symbol string, using the supplied key as a reference.\n   * For example, a numeric chord `#4` with reference key `E` will return the chord symbol `A#`.\n   * When the chord is already a chord symbol, it will return a string version of the chord.\n   * @param {Key|string|null} [referenceKey=null] the reference key. The key is required when converting a\n   * numeric or numeral.\n   * @returns {string} the chord symbol string\n   * @see {toChordSymbol}\n   */\n  toChordSymbolString(referenceKey: Key | string | null = null): string {\n    return this.toChordSymbol(referenceKey).toString();\n  }\n\n  /**\n   * Determines whether the chord is a chord symbol\n   * @returns {boolean}\n   */\n  isChordSymbol(): boolean {\n    return this.is(SYMBOL);\n  }\n\n  /**\n   * Converts the chord to a chord solfege, using the supplied key as a reference.\n   * For example, a numeric chord `#4` with reference key `Mi` will return the chord symbol `La#`.\n   * When the chord is already a chord solfege, it will return a clone of the object.\n   * @param {Key|string|null} [referenceKey=null] the reference key. The key is required when converting a\n   * numeric or numeral.\n   * @returns {Chord} the chord solfege\n   */\n  toChordSolfege(referenceKey: Key | string | null = null): Chord {\n    if (this.isChordSolfege()) return this.clone();\n\n    const { keyObj } = this.prepareKeyForConversion(referenceKey);\n\n    const chordSolfegeChord = new Chord({\n      suffix: this.normalizedSuffix,\n      root: this.root?.toChordSolfege(keyObj) || null,\n      bass: this.bass?.toChordSolfege(keyObj) || null,\n      optional: this.optional,\n    });\n\n    return this.finalizeConvertedChord(chordSolfegeChord, referenceKey);\n  }\n\n  /**\n   * Converts the chord to a chord solfege string, using the supplied key as a reference.\n   * For example, a numeric chord `#4` with reference key `E` will return the chord solfege `A#`.\n   * When the chord is already a chord solfege, it will return a string version of the chord.\n   * @param {Key|string|null} [referenceKey=null] the reference key. The key is required when converting a\n   * numeric or numeral.\n   * @returns {string} the chord solfege string\n   * @see {toChordSolfege}\n   */\n  toChordSolfegeString(referenceKey: Key | string | null = null): string {\n    return this.toChordSolfege(referenceKey).toString();\n  }\n\n  /**\n   * Determines whether the chord is a chord solfege\n   * @returns {boolean}\n   */\n  isChordSolfege(): boolean {\n    return this.is(SOLFEGE);\n  }\n\n  /**\n   * Converts the chord to a numeric chord, using the supplied key as a reference.\n   * For example, a chord symbol A# with reference key E will return the numeric chord #4.\n   * @param {Key|string|null} [referenceKey=null] the reference key. The key is required when converting a chord symbol\n   * @returns {Chord} the numeric chord\n   */\n  toNumeric(referenceKey: Key | string | null = null): Chord {\n    if (this.isNumeric()) {\n      return this.clone();\n    }\n\n    if (this.isNumeral()) {\n      return this.transform((key) => key.toNumeric());\n    }\n\n    let keyObj: Key | null = Key.wrap(referenceKey);\n\n    if (keyObj && keyObj.isMinor()) {\n      keyObj = keyObj.relativeMajor;\n    }\n\n    return new Chord({\n      suffix: normalizeChordSuffix(this.suffix),\n      root: this.root?.toNumeric(keyObj) || null,\n      bass: this.bass?.toNumeric(keyObj) || null,\n      ...(this.optional ? { optional: true } : {}),\n    });\n  }\n\n  /**\n   * Converts the chord to a numeral chord, using the supplied key as a reference.\n   * For example, a chord symbol A# with reference key E will return the numeral chord #IV.\n   * @param {Key|string|null} [referenceKey=null] the reference key. The key is required when converting a chord symbol\n   * @returns {Chord} the numeral chord\n   */\n  toNumeral(referenceKey: Key | string | null = null): Chord {\n    if (this.isNumeral()) {\n      return this.clone();\n    }\n\n    if (this.isNumeric()) {\n      return this.transform((key) => key.toNumeral());\n    }\n\n    let keyObj: Key | null = Key.wrap(referenceKey);\n\n    if (keyObj && keyObj.isMinor()) {\n      keyObj = keyObj.relativeMajor;\n    }\n\n    return new Chord({\n      suffix: normalizeChordSuffix(this.suffix),\n      root: (keyObj && this.root) ? this.root.toNumeral(keyObj) : null,\n      bass: this.bass?.toNumeral(keyObj) || null,\n      ...(this.optional ? { optional: true } : {}),\n    });\n  }\n\n  /**\n   * Converts the chord to a numeral chord string, using the supplied kye as a reference.\n   * For example, a chord symbol A# with reference key E will return the numeral chord #4.\n   * @param {Key|string|null} [referenceKey=null] the reference key. The key is required when converting a chord symbol\n   * @returns {string} the numeral chord string\n   * @see {toNumeral}\n   */\n  toNumeralString(referenceKey: Key | string | null = null): string {\n    return this.toNumeral(referenceKey).toString();\n  }\n\n  /**\n   * Determines whether the chord is numeric\n   * @returns {boolean}\n   */\n  isNumeric(): boolean {\n    return this.is(NUMERIC);\n  }\n\n  /**\n   * Converts the chord to a numeric chord string, using the supplied kye as a reference.\n   * For example, a chord symbol A# with reference key E will return the numeric chord #4.\n   * @param {Key|string|null} [referenceKey=null] the reference key. The key is required when converting a chord symbol\n   * @returns {string} the numeric chord string\n   * @see {toNumeric}\n   */\n  toNumericString(referenceKey: Key | string | null = null): string {\n    return this.toNumeric(referenceKey).toString();\n  }\n\n  /**\n   * Determines whether the chord is a numeral\n   * @returns {boolean}\n   */\n  isNumeral(): boolean {\n    return this.is(NUMERAL);\n  }\n\n  /**\n   * Converts the chord to a string, eg `Esus4/G#` or `1sus4/#3`\n   * @param {Object} [configuration={}] options\n   * @param {boolean} [configuration.useUnicodeModifier=false] Whether or not to use unicode modifiers.\n   * This will make `#` (sharp) look like `♯` and `b` (flat) look like `♭`\n   * @returns {string} the chord string\n   */\n  toString({ useUnicodeModifier = false } = {}): string {\n    let chordString = '';\n    let suffix = this.suffix || '';\n    const showMinor = suffix[0] !== 'm';\n\n    if (useUnicodeModifier) {\n      suffix = suffix.replace(/#(?=\\d)/g, '\\u266f').replace(/b(?=\\d)/g, '\\u266d');\n    }\n\n    if (this.root) chordString = this.root.toString({ showMinor, useUnicodeModifier }) + suffix;\n    if (this.bass) chordString = `${chordString}/${this.bass.toString({ useUnicodeModifier })}`;\n\n    // Wrap in parentheses if optional\n    if (this.optional) {\n      chordString = `(${chordString})`;\n    }\n\n    return chordString;\n  }\n\n  /**\n   * Normalizes the chord root and bass notes:\n   * - Fab becomes Mi\n   * - Dob becomes Si\n   * - Si# becomes Do\n   * - Mi# becomes Fa\n   * - Fb becomes E\n   * - Cb becomes B\n   * - B# becomes C\n   * - E# becomes F\n   * - 4b becomes 3\n   * - 1b becomes 7\n   * - 7# becomes 1\n   * - 3# becomes 4\n   *\n   * Besides that it normalizes the suffix if `normalizeSuffix` is `true`.\n   * For example, `sus2` becomes `2`, `sus4` becomes `sus`.\n   * All suffix normalizations can be found in `src/normalize_mappings/suffix-mapping.txt`.\n   *\n   * When the chord is minor, bass notes are normalized off of the relative major\n   * of the root note. For example, `Em/A#` becomes `Em/Bb`.\n   * @param {Key|string} [key=null] the key to normalize to\n   * @param {Object} [options={}] options\n   * @param {boolean} [options.normalizeSuffix=true] whether to normalize the chord suffix after transposing\n   * @returns {Chord} the normalized chord\n   */\n  normalize(key: Key | string | null = null, { normalizeSuffix = true }: { normalizeSuffix?: boolean; } = {}): Chord {\n    const suffix = normalizeSuffix ? normalizeChordSuffix(this.suffix) : this.suffix;\n    let normalizedRoot = this.root;\n\n    if (this.root) {\n      normalizedRoot = this.root.normalize();\n      if (key) normalizedRoot = normalizedRoot.normalizeEnharmonics(key);\n    }\n\n    return this.set({\n      suffix,\n      root: normalizedRoot,\n      bass: this.bass ? this.bass.normalize().normalizeEnharmonics(normalizedRoot) : null,\n    });\n  }\n\n  /**\n   * Switches to the specified accidental\n   * @param newAccidental the accidental to use: `'#'` or `'b'`\n   * @returns {Chord} the new, changed chord\n   */\n  useAccidental(newAccidental: Accidental): Chord {\n    return this.transform((key) => key.useAccidental(newAccidental));\n  }\n\n  /**\n   * @deprecated Use useAccidental instead\n   */\n  useModifier(newAccidental: Accidental): Chord {\n    deprecate('useModifier is deprecated, use useAccidental instead');\n    return this.useAccidental(newAccidental);\n  }\n\n  /**\n   * Transposes the chord up by 1 semitone. Eg. A becomes A#, Eb becomes E\n   * @returns {Chord} the new, transposed chord\n   */\n  transposeUp(): Chord {\n    return this.transform((key) => key.transposeUp());\n  }\n\n  /**\n   * Transposes the chord down by 1 semitone. Eg. A# becomes A, E becomes Eb\n   * @returns {Chord} the new, transposed chord\n   */\n  transposeDown(): Chord {\n    return this.transform((key) => key.transposeDown());\n  }\n\n  /**\n   * Transposes the chord by the specified number of semitones\n   * @param delta de number of semitones\n   * @returns {Chord} the new, transposed chord\n   */\n  transpose(delta: number): Chord {\n    return this.transform((key) => key.transpose(delta));\n  }\n\n  constructor(options: ChordConstructorOptions) {\n    this._quality = options.quality ?? null;\n    this._extensions = options.extensions ?? null;\n    this._suffix = options.suffix ?? null;\n    this.optional = options.optional ?? false;\n\n    this.root = Chord.determineRoot({ ...options, suffix: this.suffix });\n    this.bass = Chord.determineBass(options);\n  }\n\n  equals(otherChord: Chord): boolean {\n    return this.suffix === otherChord.suffix &&\n      this.optional === otherChord.optional &&\n      Key.equals(this.root, otherChord.root) &&\n      Key.equals(this.bass, otherChord.bass);\n  }\n\n  static determineRoot(options: ChordConstructorOptions & { suffix?: string | null }): Key | null {\n    const {\n      root, base, accidental, suffix, chordType,\n    } = options;\n    if (root) return root;\n    if (!base) return null;\n    if (!chordType) throw new Error('Can\\'t resolve at this point without a chord type');\n\n    return Key.resolve({\n      key: base,\n      keyType: chordType,\n      minor: isMinor(base, chordType, suffix ?? null),\n      accidental: accidental ?? null,\n    });\n  }\n\n  static determineBass(options: ChordConstructorOptions): Key | null {\n    const {\n      bass, bassBase, bassAccidental, chordType,\n    } = options;\n    if (bass) return bass;\n    if (!bassBase) return null;\n    if (!chordType) throw new Error('Can\\'t resolve at this point without a chord type');\n\n    return Key.resolve({\n      key: bassBase,\n      accidental: bassAccidental ?? null,\n      minor: false,\n      keyType: chordType,\n    });\n  }\n\n  isMinor(): boolean {\n    return this.root?.isMinor() || false;\n  }\n\n  makeMinor(): Chord {\n    return this.set({\n      root: this.root?.makeMinor() || null,\n    });\n  }\n\n  set(properties: ChordProperties): Chord {\n    const suffixProps = this.determineSuffixProps(properties);\n\n    return new Chord(\n      {\n        root: this.root?.clone() || null,\n        ...suffixProps,\n        bass: this.bass?.clone() || null,\n        ...(this.optional ? { optional: true } : {}),\n        ...properties,\n      },\n    );\n  }\n\n  private determineSuffixProps(\n    properties: ChordProperties,\n  ): { suffix?: string | null; quality?: string | null; extensions?: string | null } {\n    if ('suffix' in properties) {\n      return { suffix: properties.suffix, quality: null, extensions: null };\n    }\n\n    if ('quality' in properties || 'extensions' in properties) {\n      return {\n        quality: properties.quality ?? this._quality,\n        extensions: properties.extensions ?? this._extensions,\n      };\n    }\n\n    if (this._quality !== null || this._extensions !== null) {\n      return { quality: this._quality, extensions: this._extensions };\n    }\n\n    return { suffix: this._suffix };\n  }\n\n  private is(type: ChordType): boolean {\n    return (!this.root || this.root.is(type)) && (!this.bass || this.bass.is(type));\n  }\n\n  private transform(transformFunc: (_key: Key) => Key): Chord {\n    return this.set({\n      root: this.root ? transformFunc(this.root) : null,\n      bass: this.bass ? transformFunc(this.bass) : null,\n    });\n  }\n\n  private get normalizedSuffix(): string | null {\n    return this.suffix ? normalizeChordSuffix(this.suffix) : null;\n  }\n\n  private prepareKeyForConversion(\n    referenceKey: Key | string | null,\n  ): { keyObj: Key | null; referenceIsMinor: boolean } {\n    const wrappedKey = Key.wrap(referenceKey);\n    const referenceIsMinor = wrappedKey?.isMinor() || false;\n    const keyObj = referenceIsMinor ? wrappedKey?.relativeMajor || null : wrappedKey;\n    return { keyObj, referenceIsMinor };\n  }\n\n  private finalizeConvertedChord(chord: Chord, normalizeKey: Key | string | null): Chord {\n    let result = chord;\n    if (this.root?.isMinor()) result = result.makeMinor();\n    return result.normalize(normalizeKey);\n  }\n}\n\nexport default Chord;\n","import type Line from './line';\n\n/**\n * Represents a comment. See https://www.chordpro.org/chordpro/chordpro-file-format-specification/#overview\n */\nclass Comment {\n  content: string;\n\n  parentLine: Line | null = null;\n\n  constructor(content: string) {\n    this.content = content;\n  }\n\n  /**\n   * Indicates whether a Comment should be visible in a formatted chord sheet (except for ChordPro sheets)\n   * @returns {boolean}\n   */\n  isRenderable(): boolean {\n    return false;\n  }\n\n  /**\n   * Returns a deep copy of the Comment, useful when programmatically transforming a song\n   * @returns {Comment}\n   */\n  clone(): Comment {\n    return new Comment(this.content);\n  }\n\n  toString(): string {\n    return `Comment(content=${this.content})`;\n  }\n}\n\nexport default Comment;\n","type Size = 'px' | '%';\n\nclass FontSize {\n  /**\n   * The size unit, either `\"px\"` or `\"%\"`\n   * @member {string}\n   */\n  unit: Size;\n\n  /**\n   * The font size\n   * @member {number}\n   */\n  fontSize: number;\n\n  constructor(fontSize: number, kind: Size) {\n    this.fontSize = fontSize;\n    this.unit = kind;\n  }\n\n  clone() {\n    return new FontSize(this.fontSize, this.unit);\n  }\n\n  multiply(percentage): FontSize {\n    return new FontSize((this.fontSize * percentage) / 100, this.unit);\n  }\n\n  /**\n   * Stringifies the font size by concatenating size and unit\n   *\n   * @example\n   * // Returns \"30px\"\n   * new FontSize(30, 'px').toString()\n   * @example\n   * // Returns \"120%\"\n   * new FontSize(120, '%').toString()\n   *\n   * @return {string} The font size\n   */\n  toString() {\n    return `${this.fontSize}${this.unit}`;\n  }\n\n  static parse(fontSize: string, parent: FontSize | null) {\n    const trimmed = fontSize.trim();\n    const parsedFontSize = parseFloat(trimmed);\n\n    if (Number.isNaN(parsedFontSize)) {\n      return this.parseNotANumber(parent);\n    }\n\n    if (trimmed.slice(-1) === '%') {\n      return this.parsePercentage(parsedFontSize, parent);\n    }\n\n    return new FontSize(parsedFontSize, 'px');\n  }\n\n  static parseNotANumber(parent: FontSize | null) {\n    if (parent) {\n      return parent.clone();\n    }\n\n    return new FontSize(100, '%');\n  }\n\n  static parsePercentage(parsedFontSize: number, parent: FontSize | null) {\n    if (parent) {\n      return parent.multiply(parsedFontSize);\n    }\n\n    return new FontSize(parsedFontSize, '%');\n  }\n}\n\nexport default FontSize;\n","import FontSize from './font_size';\n\ninterface FontProperties {\n  font?: string | null;\n  size?: FontSize | null;\n  colour?: string | null;\n}\n\nclass Font {\n  /**\n   * The font\n   * @member {string | null}\n   */\n  font: string | null = null;\n\n  /**\n   * The font size, expressed in either pixels or percentage.\n   * @member {FontSize | null}\n   */\n  size: FontSize | null = null;\n\n  /**\n   * The font color\n   * @member {string | null}\n   */\n  colour: string | null = null;\n\n  constructor({ font, size, colour }: FontProperties = { font: null, size: null, colour: null }) {\n    this.font = font ? font.replace(/\"/g, '\\'') : null;\n    this.size = size || null;\n    this.colour = colour || null;\n  }\n\n  clone() {\n    return new Font({\n      font: this.font,\n      size: this.size,\n      colour: this.colour,\n    });\n  }\n\n  /**\n   * Converts the font, size and color to a CSS string.\n   * If possible, font and size are combined to the `font` shorthand.\n   * If `font` contains double quotes (`\"`) those will be converted to single quotes (`'`).\n   *\n   * @example\n   * // Returns \"font-family: 'Times New Roman'\"\n   * new Font({ font: '\"Times New Roman\"' }).toCssString()\n   * @example\n   * // Returns \"color: red; font-family: Verdana\"\n   * new Font({ font: 'Verdana', colour: 'red' }).toCssString()\n   * @example\n   * // Returns \"font: 30px Verdana\"\n   * new Font({ font: 'Verdana', size: '30' }).toCssString()\n   * @example\n   * // Returns \"color: blue; font: 30% Verdana\"\n   * new Font({ font: 'Verdana', size: '30%', colour: 'blue' }).toCssString()\n   *\n   * @return {string} The CSS string\n   */\n  toCssString(): string {\n    const properties: Record<string, string> = {};\n\n    if (this.colour) {\n      properties.color = this.colour;\n    }\n\n    if (this.font && this.size) {\n      properties.font = `${this.size} ${this.font}`;\n    } else if (this.font) {\n      properties['font-family'] = this.font;\n    } else if (this.size) {\n      properties['font-size'] = `${this.size}`;\n    }\n\n    return Object\n      .keys(properties)\n      .map((key) => `${key}: ${properties[key]}`)\n      .join('; ');\n  }\n}\n\nexport default Font;\n","interface TraceInfo {\n  line?: number | null;\n  column?: number | null;\n  offset?: number | null;\n}\n\nexport default TraceInfo;\n","import type Line from './line';\nimport TraceInfo from './trace_info';\n\nabstract class AstComponent {\n  parentLine: Line | null = null;\n\n  line: number | null = null;\n\n  column: number | null = null;\n\n  offset: number | null = null;\n\n  protected constructor(traceInfo: TraceInfo | null = null) {\n    if (traceInfo) {\n      this.line = traceInfo.line || null;\n      this.column = traceInfo.column || null;\n      this.offset = traceInfo.offset || null;\n    }\n  }\n\n  abstract clone(): AstComponent;\n}\n\nexport default AstComponent;\n","/**\n * Album meta directive. See https://www.chordpro.org/chordpro/directives-album/\n * @type {string}\n */\nexport const ALBUM = 'album';\n\n/**\n * Arranger meta directive. See https://chordpro.org/chordpro/directives-arranger/\n * @type {string}\n */\nexport const ARRANGER = 'arranger';\n\n/**\n * Artist meta directive. See https://www.chordpro.org/chordpro/directives-artist/\n * @type {string}\n */\nexport const ARTIST = 'artist';\n\n/**\n * Capo meta directive. See https://www.chordpro.org/chordpro/directives-capo/\n * @type {string}\n */\nexport const CAPO = 'capo';\n\n/**\n * Comment directive. See https://www.chordpro.org/chordpro/directives-comment/\n * @type {string}\n */\nexport const COMMENT = 'comment';\n\n/**\n * Composer meta directive. See https://www.chordpro.org/chordpro/directives-composer/\n * @type {string}\n */\nexport const COMPOSER = 'composer';\n\n/**\n * Copyright meta directive. See https://www.chordpro.org/chordpro/directives-copyright/\n * @type {string}\n */\nexport const COPYRIGHT = 'copyright';\n\n/**\n * Duration meta directive. See https://www.chordpro.org/chordpro/directives-duration/\n * @type {string}\n */\nexport const DURATION = 'duration';\n\n/**\n * Image directive. See https://www.chordpro.org/chordpro/directives-image/\n * @type {string}\n */\nexport const IMAGE = 'image';\n\n/**\n * End of ABC music notation section See https://chordpro.org/chordpro/directives-env_abc/\n * @type {string}\n */\nexport const END_OF_ABC = 'end_of_abc';\n\n/**\n * End of bridge directive. See https://chordpro.org/chordpro/directives-env_bridge/\n * @type {string}\n */\nexport const END_OF_BRIDGE = 'end_of_bridge';\n\n/**\n * End of chorus directive. See https://www.chordpro.org/chordpro/directives-env_chorus/\n * @type {string}\n */\nexport const END_OF_CHORUS = 'end_of_chorus';\n\n/**\n * End of grid directive. See https://www.chordpro.org/chordpro/directives-env_grid/\n * @type {string}\n */\nexport const END_OF_GRID = 'end_of_grid';\n\n/**\n * End of Lilypond music notation section See https://chordpro.org/chordpro/directives-env_ly/\n * @type {string}\n */\nexport const END_OF_LY = 'end_of_ly';\n\n/**\n * End of tab directive. See https://www.chordpro.org/chordpro/directives-env_tab/\n * @type {string}\n */\nexport const END_OF_TAB = 'end_of_tab';\n\n/**\n * End of verse directive. See https://www.chordpro.org/chordpro/directives-env_verse/\n * @type {string}\n */\nexport const END_OF_VERSE = 'end_of_verse';\n\n/**\n * End of part directive.\n * @type {string}\n */\nexport const END_OF_PART = 'end_of_part';\n\n/**\n * Key meta directive. See https://www.chordpro.org/chordpro/directives-key/\n * @type {string}\n */\nexport const KEY = 'key';\n\n/**\n * _Key meta directive. Reflects the key as transposed by the capo value\n * See https://www.chordpro.org/chordpro/directives-key/\n * @type {string}\n */\nexport const _KEY = '_key';\n\n/**\n * Lyricist meta directive. See https://www.chordpro.org/chordpro/directives-lyricist/\n * @type {string}\n */\nexport const LYRICIST = 'lyricist';\n\n/**\n * Sorttitle meta directive. See https://chordpro.org/chordpro/directives-sorttitle/\n * @type {string}\n */\nexport const SORTTITLE = 'sorttitle';\n\n/**\n * Start of ABC music notation section See https://chordpro.org/chordpro/directives-env_abc/\n * @type {string}\n */\nexport const START_OF_ABC = 'start_of_abc';\n\n/**\n * Start of bridge directive. See https://chordpro.org/chordpro/directives-env_bridge/\n * @type {string}\n */\nexport const START_OF_BRIDGE = 'start_of_bridge';\n\n/**\n * Start of chorus directive. See https://www.chordpro.org/chordpro/directives-env_chorus/\n * @type {string}\n */\nexport const START_OF_CHORUS = 'start_of_chorus';\n\n/**\n * Start of grid directive. See https://www.chordpro.org/chordpro/directives-env_grid/\n * @type {string}\n */\nexport const START_OF_GRID = 'start_of_grid';\n\n/**\n * Start of Lilypond music notation section See https://chordpro.org/chordpro/directives-env_ly/\n * @type {string}\n */\nexport const START_OF_LY = 'start_of_ly';\n\n/**\n * Start of tab directive. See https://www.chordpro.org/chordpro/directives-env_tab/\n * @type {string}\n */\nexport const START_OF_TAB = 'start_of_tab';\n\n/**\n * Start of SVG section. See https://www.chordpro.org/chordpro/directives-env_svg/\n * @type {string}\n */\nexport const START_OF_SVG = 'start_of_svg';\n\n/**\n * End of SVG section. See https://www.chordpro.org/chordpro/directives-env_svg/\n * @type {string}\n */\nexport const END_OF_SVG = 'end_of_svg';\n\n/**\n * Start of textblock directive. See https://chordpro.org/chordpro/directives-env_textblock/\n * @type {string}\n */\nexport const START_OF_TEXTBLOCK = 'start_of_textblock';\n\n/**\n * End of textblock directive. See https://chordpro.org/chordpro/directives-env_textblock/\n * @type {string}\n */\nexport const END_OF_TEXTBLOCK = 'end_of_textblock';\n\n/**\n * Start of verse directive. See https://www.chordpro.org/chordpro/directives-env_verse/\n * @type {string}\n */\nexport const START_OF_VERSE = 'start_of_verse';\n\n/**\n * Start of part\n * @type {string}\n */\nexport const START_OF_PART = 'start_of_part';\n\n/**\n * Subtitle meta directive. See https://www.chordpro.org/chordpro/directives-subtitle/\n * @type {string}\n */\nexport const SUBTITLE = 'subtitle';\n\n/**\n * Tempo meta directive. See https://www.chordpro.org/chordpro/directives-tempo/\n * @type {string}\n */\nexport const TEMPO = 'tempo';\n\n/**\n * Time meta directive. See https://www.chordpro.org/chordpro/directives-time/\n * @type {string}\n */\nexport const TIME = 'time';\n\n/**\n * Title meta directive. See https://www.chordpro.org/chordpro/directives-title/\n * @type {string}\n */\nexport const TITLE = 'title';\n\n/**\n * Transpose meta directive. See: https://www.chordpro.org/chordpro/directives-transpose/\n * @type {string}\n */\nexport const TRANSPOSE = 'transpose';\n\n/**\n * New Key meta directive. See: https://github.com/BetterMusic/ChordSheetJS/issues/53\n * @type {string}\n */\nexport const NEW_KEY = 'new_key';\n\n/**\n * Year meta directive. See https://www.chordpro.org/chordpro/directives-year/\n * @type {string}\n */\nexport const YEAR = 'year';\n\n/**\n * Chordfont directive. See https://www.chordpro.org/chordpro/directives-props_chord_legacy/\n * @type {string}\n */\nexport const CHORDFONT = 'chordfont';\n\n/**\n * Chordfont directive. See https://www.chordpro.org/chordpro/directives-props_chord_legacy/\n * @type {string}\n */\nexport const CHORDSIZE = 'chordsize';\n\n/**\n * Chordfont directive. See https://www.chordpro.org/chordpro/directives-props_chord_legacy/\n * @type {string}\n */\nexport const CHORDCOLOUR = 'chordcolour';\n\n/**\n * Chordfont directive. See https://www.chordpro.org/chordpro/directives-props_text_legacy/\n * @type {string}\n */\nexport const TEXTFONT = 'textfont';\n\n/**\n * Chordfont directive. See https://www.chordpro.org/chordpro/directives-props_text_legacy/\n * @type {string}\n */\nexport const TEXTSIZE = 'textsize';\n\n/**\n * Chordfont directive. See https://www.chordpro.org/chordpro/directives-props_text_legacy/\n * @type {string}\n */\nexport const TEXTCOLOUR = 'textcolour';\n\n/**\n * Chordfont directive. See https://www.chordpro.org/chordpro/directives-props_title_legacy/\n * @type {string}\n */\nexport const TITLEFONT = 'titlefont';\n\n/**\n * Chordfont directive. See https://www.chordpro.org/chordpro/directives-props_title_legacy/\n * @type {string}\n */\nexport const TITLESIZE = 'titlesize';\n\n/**\n * Chordfont directive. See https://www.chordpro.org/chordpro/directives-props_title_legacy/\n * @type {string}\n */\nexport const TITLECOLOUR = 'titlecolour';\n\n/**\n * Chorus directive. Support repeating an earlier defined section.\n * See https://www.chordpro.org/chordpro/directives-env_chorus/\n * @type {string}\n */\nexport const CHORUS = 'chorus';\n\n/**\n * Chord type directive. Determines the type of chords used in the rendered chord sheet.\n * Possible values are 'solfege', 'symbol', 'numeral' and 'number'\n * @see https://github.com/bettermusic/ChordSheetJS/issues/352\n * @type {string}\n */\nexport const CHORD_STYLE = 'chord_style';\n","import {\n  ALBUM,\n  ARTIST,\n  CAPO,\n  COMPOSER,\n  COPYRIGHT,\n  DURATION,\n  KEY,\n  LYRICIST,\n  SUBTITLE,\n  TEMPO,\n  TIME,\n  TITLE,\n  YEAR,\n} from './tags';\n\nabstract class MetadataAccessors {\n  abstract getMetadataValue(_name: string): string | string[] | null;\n\n  abstract getSingleMetadataValue(_name: string): string | null;\n\n  get key(): string | null { return this.getSingleMetadataValue(KEY); }\n\n  get title(): string | null { return this.getSingleMetadataValue(TITLE); }\n\n  get subtitle(): string | null { return this.getSingleMetadataValue(SUBTITLE); }\n\n  get capo(): string | string[] | null { return this.getMetadataValue(CAPO); }\n\n  get duration(): string | null { return this.getSingleMetadataValue(DURATION); }\n\n  get tempo(): string | null { return this.getSingleMetadataValue(TEMPO); }\n\n  get time(): string | string[] | null { return this.getMetadataValue(TIME); }\n\n  get year(): string | null { return this.getSingleMetadataValue(YEAR); }\n\n  get album(): string | string[] | null { return this.getMetadataValue(ALBUM); }\n\n  get copyright(): string | null { return this.getSingleMetadataValue(COPYRIGHT); }\n\n  get lyricist(): string | string[] | null { return this.getMetadataValue(LYRICIST); }\n\n  get artist(): string | string[] | null { return this.getMetadataValue(ARTIST); }\n\n  get composer(): string | string[] | null { return this.getMetadataValue(COMPOSER); }\n}\n\nexport default MetadataAccessors;\n","\n// Generated by peggy v. 5.1.0 (ts-pegjs plugin v. 3.1.0 )\n//\n// https://peggyjs.org/   https://github.com/metadevpro/ts-pegjs\n\n\"use strict\";\n\nexport interface FilePosition {\n  offset: number;\n  line: number;\n  column: number;\n}\n\nexport interface FileRange {\n  start: FilePosition;\n  end: FilePosition;\n  source: string;\n}\n\nexport interface LiteralExpectation {\n  type: \"literal\";\n  text: string;\n  ignoreCase: boolean;\n}\n\nexport interface ClassParts extends Array<string | ClassParts> {}\n\nexport interface ClassExpectation {\n  type: \"class\";\n  parts: ClassParts;\n  inverted: boolean;\n  ignoreCase: boolean;\n}\n\nexport interface AnyExpectation {\n  type: \"any\";\n}\n\nexport interface EndExpectation {\n  type: \"end\";\n}\n\nexport interface OtherExpectation {\n  type: \"other\";\n  description: string;\n}\n\nexport type Expectation = LiteralExpectation | ClassExpectation | AnyExpectation | EndExpectation | OtherExpectation;\n\nfunction peg$padEnd(str: string, targetLength: number, padString: string) {\n  padString = padString || ' ';\n  if (str.length > targetLength) {\n    return str;\n  }\n  targetLength -= str.length;\n  padString += padString.repeat(targetLength);\n  return str + padString.slice(0, targetLength);\n}\n\nexport class PeggySyntaxError extends Error {\n  public static buildMessage(expected: Expectation[], found: string | null) {\n    function hex(ch: string): string {\n      return ch.charCodeAt(0).toString(16).toUpperCase();\n    }\n\n    function literalEscape(s: string): string {\n      return s\n        .replace(/\\\\/g, \"\\\\\\\\\")\n        .replace(/\"/g,  \"\\\\\\\"\")\n        .replace(/\\0/g, \"\\\\0\")\n        .replace(/\\t/g, \"\\\\t\")\n        .replace(/\\n/g, \"\\\\n\")\n        .replace(/\\r/g, \"\\\\r\")\n        .replace(/[\\x00-\\x0F]/g,            (ch) => \"\\\\x0\" + hex(ch) )\n        .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\"  + hex(ch) );\n    }\n\n    function classEscape(s: string): string {\n      return s\n        .replace(/\\\\/g, \"\\\\\\\\\")\n        .replace(/\\]/g, \"\\\\]\")\n        .replace(/\\^/g, \"\\\\^\")\n        .replace(/-/g,  \"\\\\-\")\n        .replace(/\\0/g, \"\\\\0\")\n        .replace(/\\t/g, \"\\\\t\")\n        .replace(/\\n/g, \"\\\\n\")\n        .replace(/\\r/g, \"\\\\r\")\n        .replace(/[\\x00-\\x0F]/g,            (ch) => \"\\\\x0\" + hex(ch) )\n        .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\"  + hex(ch) );\n    }\n\n    function describeExpectation(expectation: Expectation) {\n      switch (expectation.type) {\n        case \"literal\":\n          return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n        case \"class\":\n          const escapedParts = expectation.parts.map((part) => {\n            return Array.isArray(part)\n              ? classEscape(part[0] as string) + \"-\" + classEscape(part[1] as string)\n              : classEscape(part);\n          });\n\n          return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts + \"]\";\n        case \"any\":\n          return \"any character\";\n        case \"end\":\n          return \"end of input\";\n        case \"other\":\n          return expectation.description;\n      }\n    }\n\n    function describeExpected(expected1: Expectation[]) {\n      const descriptions = expected1.map(describeExpectation);\n      let i: number;\n      let j: number;\n\n      descriptions.sort();\n\n      if (descriptions.length > 0) {\n        for (i = 1, j = 1; i < descriptions.length; i++) {\n          if (descriptions[i - 1] !== descriptions[i]) {\n            descriptions[j] = descriptions[i];\n            j++;\n          }\n        }\n        descriptions.length = j;\n      }\n\n      switch (descriptions.length) {\n        case 1:\n          return descriptions[0];\n\n        case 2:\n          return descriptions[0] + \" or \" + descriptions[1];\n\n        default:\n          return descriptions.slice(0, -1).join(\", \")\n            + \", or \"\n            + descriptions[descriptions.length - 1];\n      }\n    }\n\n    function describeFound(found1: string | null) {\n      return found1 ? \"\\\"\" + literalEscape(found1) + \"\\\"\" : \"end of input\";\n    }\n\n    return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n  }\n\n  public message: string;\n  public expected: Expectation[];\n  public found: string | null;\n  public location: FileRange;\n  public name: string;\n\n  constructor(message: string, expected: Expectation[], found: string | null, location: FileRange) {\n    super();\n    this.message = message;\n    this.expected = expected;\n    this.found = found;\n    this.location = location;\n    this.name = \"PeggySyntaxError\";\n\n    if (typeof (Object as any).setPrototypeOf === \"function\") {\n      (Object as any).setPrototypeOf(this, PeggySyntaxError.prototype);\n    } else {\n      (this as any).__proto__ = PeggySyntaxError.prototype;\n    }\n    if (typeof (Error as any).captureStackTrace === \"function\") {\n      (Error as any).captureStackTrace(this, PeggySyntaxError);\n    }\n  }\n\n  format(sources: { grammarSource?: string; text: string }[]): string {\n    let str = 'Error: ' + this.message;\n    if (this.location) {\n      let src: string[] | null = null;\n      let k;\n      for (k = 0; k < sources.length; k++) {\n        if (sources[k].grammarSource === this.location.source) {\n          src = sources[k].text.split(/\\r\\n|\\n|\\r/g);\n          break;\n        }\n      }\n      let s = this.location.start;\n      let loc = this.location.source + ':' + s.line + ':' + s.column;\n      if (src) {\n        let e = this.location.end;\n        let filler = peg$padEnd('', s.line.toString().length, ' ');\n        let line = src[s.line - 1];\n        let last = s.line === e.line ? e.column : line.length + 1;\n        str += '\\n --> ' + loc + '\\n' + filler + ' |\\n' + s.line + ' | ' + line + '\\n' + filler + ' | ' +\n          peg$padEnd('', s.column - 1, ' ') +\n          peg$padEnd('', last - s.column, '^');\n      } else {\n        str += '\\n at ' + loc;\n      }\n    }\n    return str;\n  }\n}\n\nfunction peg$parse(input: string, options?: ParseOptions) {\n  options = options !== undefined ? options : {};\n\n  const peg$FAILED: Readonly<any> = {};\n  const peg$source = options.grammarSource;\n\n  const peg$startRuleFunctions: {[id: string]: any} = { ChordDefinitionValue: peg$parseChordDefinitionValue };\n  let peg$startRuleFunction: () => any = peg$parseChordDefinitionValue;\n\n  const peg$c0 = \"frets\";\n  const peg$c1 = peg$literalExpectation(\"frets\", false);\n  const peg$c2 = function(name: any, baseFret: any, frets: any, fingers: any): any {\n        return {\n          name,\n          baseFret: baseFret || 1,\n          frets,\n          fingers,\n          text: text()\n        };\n      };\n  const peg$c3 = \"/\";\n  const peg$c4 = peg$literalExpectation(\"/\", false);\n  const peg$c5 = /^[A-Ga-g]/;\n  const peg$c6 = peg$classExpectation([[\"A\", \"G\"], [\"a\", \"g\"]], false, false);\n  const peg$c7 = /^[b#\\u266D\\u266F]/;\n  const peg$c8 = peg$classExpectation([\"b\", \"#\", \"\\u266D\", \"\\u266F\"], false, false);\n  const peg$c9 = \"es\";\n  const peg$c10 = peg$literalExpectation(\"es\", false);\n  const peg$c11 = \"s\";\n  const peg$c12 = peg$literalExpectation(\"s\", false);\n  const peg$c13 = \"is\";\n  const peg$c14 = peg$literalExpectation(\"is\", false);\n  const peg$c15 = /^[a-zA-Z0-9#\\u266Fb\\u266D()+\\-\\/\\xF8\\u0394\\u2212]/;\n  const peg$c16 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"], \"#\", \"\\u266F\", \"b\", \"\\u266D\", \"(\", \")\", \"+\", \"-\", \"/\", \"\\xF8\", \"\\u0394\", \"\\u2212\"], false, false);\n  const peg$c17 = \"base-fret\";\n  const peg$c18 = peg$literalExpectation(\"base-fret\", false);\n  const peg$c19 = function(baseFret: any): any {\n        return baseFret;\n      };\n  const peg$c20 = \"fingers\";\n  const peg$c21 = peg$literalExpectation(\"fingers\", false);\n  const peg$c22 = function(fingers: any): any {\n        return fingers;\n      };\n  const peg$c23 = function(finger: any): any {\n        return finger;\n      };\n  const peg$c24 = /^[\\-A-Za-z]/;\n  const peg$c25 = peg$classExpectation([\"-\", [\"A\", \"Z\"], [\"a\", \"z\"]], false, false);\n  const peg$c26 = /^[0-9]/;\n  const peg$c27 = peg$classExpectation([[\"0\", \"9\"]], false, false);\n  const peg$c28 = function(number: any): any {\n        return parseInt(number, 10);\n      };\n  const peg$c29 = function(fret: any): any {\n        return fret;\n      };\n  const peg$c30 = \"0\";\n  const peg$c31 = peg$literalExpectation(\"0\", false);\n  const peg$c32 = function(): any {\n        return 0;\n      };\n  const peg$c33 = \"-1\";\n  const peg$c34 = peg$literalExpectation(\"-1\", false);\n  const peg$c35 = /^[NXnx]/;\n  const peg$c36 = peg$classExpectation([\"N\", \"X\", \"n\", \"x\"], false, false);\n  const peg$c37 = peg$otherExpectation(\"whitespace\");\n  const peg$c38 = peg$otherExpectation(\"optional whitespace\");\n  const peg$c39 = /^[ \\t\\n\\r]/;\n  const peg$c40 = peg$classExpectation([\" \", \"\\t\", \"\\n\", \"\\r\"], false, false);\n\n  let peg$currPos = 0;\n  let peg$savedPos = 0;\n  const peg$posDetailsCache = [{ line: 1, column: 1 }];\n  let peg$maxFailPos = 0;\n  let peg$maxFailExpected: Expectation[] = [];\n  let peg$silentFails = 0;\n\n  let peg$result;\n\n  if (options.startRule !== undefined) {\n    if (!(options.startRule in peg$startRuleFunctions)) {\n      throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n    }\n\n    peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n  }\n\n  function text(): string {\n    return input.substring(peg$savedPos, peg$currPos);\n  }\n\n  function location(): FileRange {\n    return peg$computeLocation(peg$savedPos, peg$currPos);\n  }\n\n  function expected(description: string, location1?: FileRange) {\n    location1 = location1 !== undefined\n      ? location1\n      : peg$computeLocation(peg$savedPos, peg$currPos);\n\n    throw peg$buildStructuredError(\n      [peg$otherExpectation(description)],\n      input.substring(peg$savedPos, peg$currPos),\n      location1\n    );\n  }\n\n  function error(message: string, location1?: FileRange) {\n    location1 = location1 !== undefined\n      ? location1\n      : peg$computeLocation(peg$savedPos, peg$currPos);\n\n    throw peg$buildSimpleError(message, location1);\n  }\n\n  function peg$literalExpectation(text1: string, ignoreCase: boolean): LiteralExpectation {\n    return { type: \"literal\", text: text1, ignoreCase: ignoreCase };\n  }\n\n  function peg$classExpectation(parts: ClassParts, inverted: boolean, ignoreCase: boolean): ClassExpectation {\n    return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n  }\n\n  function peg$anyExpectation(): AnyExpectation {\n    return { type: \"any\" };\n  }\n\n  function peg$endExpectation(): EndExpectation {\n    return { type: \"end\" };\n  }\n\n  function peg$otherExpectation(description: string): OtherExpectation {\n    return { type: \"other\", description: description };\n  }\n\n  function peg$computePosDetails(pos: number) {\n    let details = peg$posDetailsCache[pos];\n    let p;\n\n    if (details) {\n      return details;\n    } else {\n      p = pos - 1;\n      while (!peg$posDetailsCache[p]) {\n        p--;\n      }\n\n      details = peg$posDetailsCache[p];\n      details = {\n        line: details.line,\n        column: details.column\n      };\n\n      while (p < pos) {\n        if (input.charCodeAt(p) === 10) {\n          details.line++;\n          details.column = 1;\n        } else {\n          details.column++;\n        }\n\n        p++;\n      }\n\n      peg$posDetailsCache[pos] = details;\n\n      return details;\n    }\n  }\n\n  function peg$computeLocation(startPos: number, endPos: number): FileRange {\n    const startPosDetails = peg$computePosDetails(startPos);\n    const endPosDetails = peg$computePosDetails(endPos);\n\n    return {\n      source: peg$source,\n      start: {\n        offset: startPos,\n        line: startPosDetails.line,\n        column: startPosDetails.column\n      },\n      end: {\n        offset: endPos,\n        line: endPosDetails.line,\n        column: endPosDetails.column\n      }\n    };\n  }\n\n  function peg$fail(expected1: Expectation) {\n    if (peg$currPos < peg$maxFailPos) { return; }\n\n    if (peg$currPos > peg$maxFailPos) {\n      peg$maxFailPos = peg$currPos;\n      peg$maxFailExpected = [];\n    }\n\n    peg$maxFailExpected.push(expected1);\n  }\n\n  function peg$buildSimpleError(message: string, location1: FileRange) {\n    return new PeggySyntaxError(message, [], \"\", location1);\n  }\n\n  function peg$buildStructuredError(expected1: Expectation[], found: string | null, location1: FileRange) {\n    return new PeggySyntaxError(\n      PeggySyntaxError.buildMessage(expected1, found),\n      expected1,\n      found,\n      location1\n    );\n  }\n\n  function peg$parseChordDefinitionValue(): any {\n    let s0, s1, s2, s3, s4, s5, s6;\n\n    s0 = peg$currPos;\n    s1 = peg$parseChordDefinitionName();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseBaseFret();\n        if (s3 as any === peg$FAILED) {\n          s3 = null;\n        }\n        if (s3 as any !== peg$FAILED) {\n          if (input.substr(peg$currPos, 5) === peg$c0) {\n            s4 = peg$c0;\n            peg$currPos += 5;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c1); }\n          }\n          if (s4 as any !== peg$FAILED) {\n            s5 = [];\n            s6 = peg$parseFretWithLeadingSpace();\n            if (s6 as any !== peg$FAILED) {\n              while (s6 as any !== peg$FAILED) {\n                s5.push(s6);\n                s6 = peg$parseFretWithLeadingSpace();\n              }\n            } else {\n              s5 = peg$FAILED;\n            }\n            if (s5 as any !== peg$FAILED) {\n              s6 = peg$parseChordFingersDefinition();\n              if (s6 as any === peg$FAILED) {\n                s6 = null;\n              }\n              if (s6 as any !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c2(s1, s3, s5, s6);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordDefinitionName(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    s2 = peg$parseChordDefinitionNameBase();\n    if (s2 as any !== peg$FAILED) {\n      s3 = peg$parseChordDefinitionNameBass();\n      if (s3 as any === peg$FAILED) {\n        s3 = null;\n      }\n      if (s3 as any !== peg$FAILED) {\n        s2 = [s2, s3];\n        s1 = s2;\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 as any !== peg$FAILED) {\n      s0 = input.substring(s0, peg$currPos);\n    } else {\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordDefinitionNameBase(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    s2 = peg$parseChordDefinitionNote();\n    if (s2 as any !== peg$FAILED) {\n      s3 = peg$parseChordDefinitionSuffix();\n      if (s3 as any === peg$FAILED) {\n        s3 = null;\n      }\n      if (s3 as any !== peg$FAILED) {\n        s2 = [s2, s3];\n        s1 = s2;\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 as any !== peg$FAILED) {\n      s0 = input.substring(s0, peg$currPos);\n    } else {\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordDefinitionNameBass(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 47) {\n      s2 = peg$c3;\n      peg$currPos++;\n    } else {\n      s2 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c4); }\n    }\n    if (s2 as any !== peg$FAILED) {\n      s3 = peg$parseChordDefinitionNote();\n      if (s3 as any !== peg$FAILED) {\n        s2 = [s2, s3];\n        s1 = s2;\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 as any !== peg$FAILED) {\n      s0 = input.substring(s0, peg$currPos);\n    } else {\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordDefinitionNote(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    if (peg$c5.test(input.charAt(peg$currPos))) {\n      s2 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s2 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c6); }\n    }\n    if (s2 as any !== peg$FAILED) {\n      if (peg$c7.test(input.charAt(peg$currPos))) {\n        s3 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c8); }\n      }\n      if (s3 as any === peg$FAILED) {\n        if (input.substr(peg$currPos, 2) === peg$c9) {\n          s3 = peg$c9;\n          peg$currPos += 2;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c10); }\n        }\n        if (s3 as any === peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 115) {\n            s3 = peg$c11;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c12); }\n          }\n          if (s3 as any === peg$FAILED) {\n            if (input.substr(peg$currPos, 2) === peg$c13) {\n              s3 = peg$c13;\n              peg$currPos += 2;\n            } else {\n              s3 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c14); }\n            }\n          }\n        }\n      }\n      if (s3 as any === peg$FAILED) {\n        s3 = null;\n      }\n      if (s3 as any !== peg$FAILED) {\n        s2 = [s2, s3];\n        s1 = s2;\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 as any !== peg$FAILED) {\n      s0 = input.substring(s0, peg$currPos);\n    } else {\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordDefinitionSuffix(): any {\n    let s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = [];\n    if (peg$c15.test(input.charAt(peg$currPos))) {\n      s2 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s2 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c16); }\n    }\n    if (s2 as any !== peg$FAILED) {\n      while (s2 as any !== peg$FAILED) {\n        s1.push(s2);\n        if (peg$c15.test(input.charAt(peg$currPos))) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c16); }\n        }\n      }\n    } else {\n      s1 = peg$FAILED;\n    }\n    if (s1 as any !== peg$FAILED) {\n      s0 = input.substring(s0, peg$currPos);\n    } else {\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseBaseFret(): any {\n    let s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    if (input.substr(peg$currPos, 9) === peg$c17) {\n      s1 = peg$c17;\n      peg$currPos += 9;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c18); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parse__();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseFretNumber();\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parse__();\n          if (s4 as any !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c19(s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordFingersDefinition(): any {\n    let s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$parse__();\n    if (s1 as any !== peg$FAILED) {\n      if (input.substr(peg$currPos, 7) === peg$c20) {\n        s2 = peg$c20;\n        peg$currPos += 7;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c21); }\n      }\n      if (s2 as any !== peg$FAILED) {\n        s3 = [];\n        s4 = peg$parseFingerWithLeadingSpace();\n        if (s4 as any !== peg$FAILED) {\n          while (s4 as any !== peg$FAILED) {\n            s3.push(s4);\n            s4 = peg$parseFingerWithLeadingSpace();\n          }\n        } else {\n          s3 = peg$FAILED;\n        }\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c22(s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseFingerWithLeadingSpace(): any {\n    let s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = peg$parse__();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseFinger();\n      if (s2 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c23(s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseFinger(): any {\n    let s0;\n\n    s0 = peg$parseFingerNumber();\n    if (s0 as any === peg$FAILED) {\n      if (peg$c24.test(input.charAt(peg$currPos))) {\n        s0 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c25); }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseFingerNumber(): any {\n    let s0, s1;\n\n    s0 = peg$currPos;\n    if (peg$c26.test(input.charAt(peg$currPos))) {\n      s1 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c27); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c28(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parseFretWithLeadingSpace(): any {\n    let s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = peg$parse__();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseFret();\n      if (s2 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c29(s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseFret(): any {\n    let s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = peg$parse_();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseFretNumber();\n      if (s2 as any === peg$FAILED) {\n        s2 = peg$parseOpenFret();\n        if (s2 as any === peg$FAILED) {\n          s2 = peg$parseNonSoundingString();\n        }\n      }\n      if (s2 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c29(s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseFretNumber(): any {\n    let s0, s1;\n\n    s0 = peg$currPos;\n    if (peg$c26.test(input.charAt(peg$currPos))) {\n      s1 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c27); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c28(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parseOpenFret(): any {\n    let s0, s1;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 48) {\n      s1 = peg$c30;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c31); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c32();\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parseNonSoundingString(): any {\n    let s0;\n\n    if (input.substr(peg$currPos, 2) === peg$c33) {\n      s0 = peg$c33;\n      peg$currPos += 2;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c34); }\n    }\n    if (s0 as any === peg$FAILED) {\n      if (peg$c35.test(input.charAt(peg$currPos))) {\n        s0 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c36); }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parse__(): any {\n    let s0, s1;\n\n    peg$silentFails++;\n    s0 = [];\n    s1 = peg$parseWhitespaceCharacter();\n    if (s1 as any !== peg$FAILED) {\n      while (s1 as any !== peg$FAILED) {\n        s0.push(s1);\n        s1 = peg$parseWhitespaceCharacter();\n      }\n    } else {\n      s0 = peg$FAILED;\n    }\n    peg$silentFails--;\n    if (s0 as any === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c37); }\n    }\n\n    return s0;\n  }\n\n  function peg$parse_(): any {\n    let s0, s1;\n\n    peg$silentFails++;\n    s0 = [];\n    s1 = peg$parseWhitespaceCharacter();\n    while (s1 as any !== peg$FAILED) {\n      s0.push(s1);\n      s1 = peg$parseWhitespaceCharacter();\n    }\n    peg$silentFails--;\n    if (s0 as any === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c38); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseWhitespaceCharacter(): any {\n    let s0;\n\n    if (peg$c39.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c40); }\n    }\n\n    return s0;\n  }\n\n  peg$result = peg$startRuleFunction();\n\n  if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n    return peg$result;\n  } else {\n    if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n      peg$fail(peg$endExpectation());\n    }\n\n    throw peg$buildStructuredError(\n      peg$maxFailExpected,\n      peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n      peg$maxFailPos < input.length\n        ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n        : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n    );\n  }\n}\n\nexport interface ParseOptions {\n  filename?: string;\n  startRule?: string;\n  tracer?: any;\n  [key: string]: any;\n}\nexport type ParseFunction = (input: string, options?: ParseOptions) => any;\nexport const parse: ParseFunction = peg$parse;\n\n","import { parse } from '../parser/chord_definition/peg_parser';\n\nimport {\n  Fret,\n  NonSoundingString,\n  OpenFret,\n  nonSoundingString,\n  openFret,\n} from '../constants';\n\n/**\n * Checks whether the given fret is an open fret (unfingered, open string).\n * @param fret - The fret to check.\n * @returns `true` if the fret is an open fret, `false` otherwise.\n */\nexport function isOpenFret(fret: Fret): fret is OpenFret {\n  return fret === openFret;\n}\n\n/**\n * Checks whether the given fret represents a non-sounding (muted/damped) string.\n * @param fret - The fret to check.\n * @returns `true` if the fret represents a non-sounding string, `false` otherwise.\n */\nexport function isNonSoundingString(fret: Fret): fret is NonSoundingString {\n  return nonSoundingString.includes(fret as NonSoundingString);\n}\n\n/**\n * Represents a chord definition.\n *\n * Definitions are made using the `{chord}` or `{define}` directive.\n * A chord definitions overrides a previous chord definition for the exact same chord.\n *\n * @see https://chordpro.org/chordpro/directives-define/\n * @see https://chordpro.org/chordpro/directives-chord/\n */\nclass ChordDefinition {\n  /**\n   * The chord name, e.g. `C`, `Dm`, `G7`.\n   * @type {string}\n   */\n  name: string;\n\n  /**\n   * Defines the offset for the chord, which is the position of the topmost finger.\n   * The offset must be 1 or higher.\n   * @type {number}\n   */\n  baseFret: number;\n\n  /**\n   * Defines the string positions.\n   * Strings are enumerated from left (lowest) to right (highest), as they appear in the chord diagrams.\n   * Fret positions are relative to the offset minus one, so with base-fret 1 (the default),\n   * the topmost fret position is 1. With base-fret 3, fret position 1 indicates the 3rd position.\n   * `0` (zero) denotes an open string. Use `-1`, `N` or `x` to denote a non-sounding string.\n   * @type {Fret[]}\n   */\n  frets: Fret[];\n\n  /**\n   * defines finger settings. This part may be omitted.\n   *\n   * For the frets and the fingers positions, there must be exactly as many positions as there are strings,\n   * which is 6 by default. For the fingers positions, values corresponding to open or damped strings are ignored.\n   * Finger settings may be numeric (0 .. 9) or uppercase letters (A .. Z).\n   * Note that the values -, x, X, and N are used to designate a string without finger setting.\n   * @type {number[]}\n   */\n  fingers: number[];\n\n  constructor(name: string, baseFret: number, frets: Fret[], fingers?: number[]) {\n    this.name = name;\n    this.baseFret = baseFret;\n    this.frets = frets;\n    this.fingers = fingers || [];\n  }\n\n  /**\n   * Parses a chord definition in the form of:\n   * - <name> base-fret <offset> frets <pos> <pos> … <pos>\n   * - <name> base-fret <offset> frets <pos> <pos> … <pos> fingers <pos> <pos> … <pos>\n   * @param chordDefinition\n   * @returns {ChordDefinition}\n   * @see https://chordpro.org/chordpro/directives-define/#common-usage\n   */\n  static parse(chordDefinition: string): ChordDefinition {\n    const {\n      name,\n      baseFret,\n      frets,\n      fingers,\n    } = parse(chordDefinition.trim());\n\n    return new ChordDefinition(name, baseFret, frets, fingers);\n  }\n\n  clone(): ChordDefinition {\n    return new ChordDefinition(this.name, this.baseFret, [...this.frets], [...this.fingers]);\n  }\n}\n\nexport default ChordDefinition;\n","import {\n  ABC,\n  AUTO,\n  BRIDGE,\n  END_TAG,\n  GRID,\n  LILYPOND,\n  START_TAG,\n  SVG,\n  TAB,\n  TEXTBLOCK,\n  VERSE,\n} from '../constants';\n\nimport {\n  CHORUS,\n  END_OF_ABC,\n  END_OF_BRIDGE,\n  END_OF_CHORUS,\n  END_OF_GRID,\n  END_OF_LY,\n  END_OF_PART,\n  END_OF_SVG,\n  END_OF_TAB,\n  END_OF_TEXTBLOCK,\n  END_OF_VERSE,\n  START_OF_ABC,\n  START_OF_BRIDGE,\n  START_OF_CHORUS,\n  START_OF_GRID,\n  START_OF_LY,\n  START_OF_PART,\n  START_OF_SVG,\n  START_OF_TAB,\n  START_OF_TEXTBLOCK,\n  START_OF_VERSE,\n} from './tags';\n\nconst START_TAG_TO_SECTION_TYPE = {\n  [START_OF_ABC]: ABC,\n  [START_OF_BRIDGE]: BRIDGE,\n  [START_OF_CHORUS]: CHORUS,\n  [START_OF_GRID]: GRID,\n  [START_OF_LY]: LILYPOND,\n  [START_OF_SVG]: SVG,\n  [START_OF_TAB]: TAB,\n  [START_OF_TEXTBLOCK]: TEXTBLOCK,\n  [START_OF_VERSE]: VERSE,\n};\n\nconst END_TAG_TO_SECTION_TYPE = {\n  [END_OF_ABC]: ABC,\n  [END_OF_BRIDGE]: BRIDGE,\n  [END_OF_CHORUS]: CHORUS,\n  [END_OF_GRID]: GRID,\n  [END_OF_LY]: LILYPOND,\n  [END_OF_SVG]: SVG,\n  [END_OF_TAB]: TAB,\n  [END_OF_TEXTBLOCK]: TEXTBLOCK,\n  [END_OF_VERSE]: VERSE,\n};\n\nconst SECTION_START_REGEX = /^start_of_(.+)$/;\nconst SECTION_END_REGEX = /^end_of_(.+)$/;\n\nclass TagInterpreter {\n  tagName: string;\n\n  tagValue: string;\n\n  static interpret(tagName: string, tagValue: string) {\n    return new this(tagName, tagValue).interpret();\n  }\n\n  constructor(tagName: string, tagValue: string) {\n    this.tagName = tagName;\n    this.tagValue = tagValue;\n  }\n\n  interpret(): [string | null, string | null] {\n    return this.startOfPart() ||\n      this.endOfPart() ||\n      this.sectionStart() ||\n      this.sectionEnd() ||\n      this.startOfSection() ||\n      this.endOfSection() ||\n      [null, null];\n  }\n\n  startOfPart(): [string, string] | null {\n    if (this.tagName === START_OF_PART && this.tagValue) {\n      return [START_TAG, this.tagValue.split(' ')[0].toLowerCase()];\n    }\n\n    return null;\n  }\n\n  endOfPart(): [string, string] | null {\n    if (this.tagName === END_OF_PART) {\n      return [END_TAG, AUTO];\n    }\n\n    return null;\n  }\n\n  sectionStart(): [string, string] | null {\n    if (this.tagName in START_TAG_TO_SECTION_TYPE) {\n      return [START_TAG, START_TAG_TO_SECTION_TYPE[this.tagName]];\n    }\n\n    return null;\n  }\n\n  sectionEnd(): [string, string] | null {\n    if (this.tagName in END_TAG_TO_SECTION_TYPE) {\n      return [END_TAG, END_TAG_TO_SECTION_TYPE[this.tagName]];\n    }\n\n    return null;\n  }\n\n  startOfSection(): [string, string] | null {\n    const parseStartResult = SECTION_START_REGEX.exec(this.tagName);\n\n    if (parseStartResult) {\n      return [START_TAG, parseStartResult[1]];\n    }\n\n    return null;\n  }\n\n  endOfSection(): [string, string] | null {\n    const parseEndResult = SECTION_END_REGEX.exec(this.tagName);\n\n    if (parseEndResult) {\n      return [END_TAG, parseEndResult[1]];\n    }\n\n    return null;\n  }\n}\n\nexport default TagInterpreter;\n","import AstComponent from './ast_component';\nimport ChordDefinition from '../chord_definition/chord_definition';\nimport TagInterpreter from './tag_interpreter';\nimport TraceInfo from './trace_info';\n\nimport {\n  ALBUM,\n  ARRANGER,\n  ARTIST,\n  CAPO,\n  CHORDCOLOUR,\n  CHORDFONT,\n  CHORDSIZE,\n  CHORD_STYLE,\n  CHORUS,\n  COMMENT,\n  COMPOSER,\n  COPYRIGHT,\n  DURATION,\n  END_OF_BRIDGE,\n  END_OF_CHORUS,\n  END_OF_GRID,\n  END_OF_PART,\n  END_OF_TAB,\n  END_OF_VERSE,\n  IMAGE,\n  KEY,\n  LYRICIST,\n  NEW_KEY, SORTTITLE,\n  START_OF_ABC,\n  START_OF_BRIDGE,\n  START_OF_CHORUS,\n  START_OF_GRID,\n  START_OF_LY,\n  START_OF_PART,\n  START_OF_SVG,\n  START_OF_TAB,\n  START_OF_TEXTBLOCK,\n  START_OF_VERSE,\n  SUBTITLE,\n  TEMPO,\n  TEXTCOLOUR,\n  TEXTFONT,\n  TEXTSIZE,\n  TIME,\n  TITLE,\n  YEAR,\n  _KEY,\n} from './tags';\n\nimport { END_TAG, START_TAG } from '../constants';\n\nconst CHORDFONT_SHORT = 'cf';\nconst CHORDSIZE_SHORT = 'cs';\nconst COMMENT_SHORT = 'c';\nconst END_OF_BRIDGE_SHORT = 'eob';\nconst END_OF_CHORUS_SHORT = 'eoc';\nconst END_OF_GRID_SHORT = 'eog';\nconst END_OF_TAB_SHORT = 'eot';\nconst END_OF_VERSE_SHORT = 'eov';\nconst END_OF_PART_SHORT = 'eop';\nconst NEW_KEY_SHORT = 'nk';\nconst START_OF_BRIDGE_SHORT = 'sob';\nconst START_OF_CHORUS_SHORT = 'soc';\nconst START_OF_GRID_SHORT = 'sog';\nconst START_OF_TAB_SHORT = 'sot';\nconst START_OF_VERSE_SHORT = 'sov';\nconst START_OF_PART_SHORT = 'sop';\nconst SUBTITLE_SHORT = 'st';\nconst TEXTFONT_SHORT = 'tf';\nconst TEXTSIZE_SHORT = 'ts';\nconst TITLE_SHORT = 't';\nconst START_OF_PART_SHORTER = 'p';\nconst END_OF_PART_SHORTER = 'ep';\n\nconst RENDERABLE_TAGS = [COMMENT, IMAGE];\n\n// Order of these tags is the default rendering order\nexport const META_TAGS = [\n  TITLE,\n  SUBTITLE,\n  ARTIST,\n  ALBUM,\n  YEAR,\n  COMPOSER,\n  LYRICIST,\n  KEY,\n  CAPO,\n  CHORD_STYLE,\n  TEMPO,\n  TIME,\n  ARRANGER,\n  COPYRIGHT,\n  DURATION,\n  SORTTITLE,\n];\n\nexport const READ_ONLY_TAGS = [_KEY];\n\nconst INLINE_FONT_TAGS = [\n  CHORDFONT,\n  CHORDSIZE,\n  CHORDCOLOUR,\n  TEXTFONT,\n  TEXTSIZE,\n  TEXTCOLOUR,\n];\n\nconst DIRECTIVES_WITH_RENDERABLE_LABEL = [\n  CHORUS,\n  START_OF_ABC,\n  START_OF_BRIDGE,\n  START_OF_CHORUS,\n  START_OF_GRID,\n  START_OF_LY,\n  START_OF_SVG,\n  START_OF_TAB,\n  START_OF_TEXTBLOCK,\n  START_OF_VERSE,\n  START_OF_PART,\n];\n\nconst ALIASES: Record<string, string> = {\n  [CHORDFONT_SHORT]: CHORDFONT,\n  [CHORDSIZE_SHORT]: CHORDSIZE,\n  [COMMENT_SHORT]: COMMENT,\n  [END_OF_BRIDGE_SHORT]: END_OF_BRIDGE,\n  [END_OF_CHORUS_SHORT]: END_OF_CHORUS,\n  [END_OF_GRID_SHORT]: END_OF_GRID,\n  [END_OF_TAB_SHORT]: END_OF_TAB,\n  [END_OF_VERSE_SHORT]: END_OF_VERSE,\n  [END_OF_PART_SHORT]: END_OF_PART,\n  [END_OF_PART_SHORTER]: END_OF_PART,\n  [NEW_KEY_SHORT]: NEW_KEY,\n  [START_OF_BRIDGE_SHORT]: START_OF_BRIDGE,\n  [START_OF_CHORUS_SHORT]: START_OF_CHORUS,\n  [START_OF_GRID_SHORT]: START_OF_GRID,\n  [START_OF_TAB_SHORT]: START_OF_TAB,\n  [START_OF_VERSE_SHORT]: START_OF_VERSE,\n  [START_OF_PART_SHORT]: START_OF_PART,\n  [START_OF_PART_SHORTER]: START_OF_PART,\n  [SUBTITLE_SHORT]: SUBTITLE,\n  [TEXTFONT_SHORT]: TEXTFONT,\n  [TEXTSIZE_SHORT]: TEXTSIZE,\n  [TITLE_SHORT]: TITLE,\n};\n\nconst TAG_REGEX = /^([^:\\s]+)(:?\\s*(.+))?$/;\nconst CUSTOM_META_TAG_NAME_REGEX = /^x_(.+)$/;\n\nexport function isReadonlyTag(tagName: string) {\n  return READ_ONLY_TAGS.includes(tagName);\n}\n\nconst translateTagNameAlias = (name: string) => {\n  if (!name) {\n    return name;\n  }\n\n  const sanitizedName = name.trim();\n\n  if (sanitizedName in ALIASES) {\n    return ALIASES[sanitizedName];\n  }\n\n  return sanitizedName;\n};\n\n/**\n * Represents a tag/directive. See https://www.chordpro.org/chordpro/chordpro-directives/\n */\nclass Tag extends AstComponent {\n  _isMetaTag = false;\n\n  _originalName = '';\n\n  _name = '';\n\n  _value = '';\n\n  chordDefinition?: ChordDefinition;\n\n  selector: string | null = null;\n\n  isNegated = false;\n\n  /**\n   * The tag attributes. For example, section related tags can have a label:\n   * `{start_of_verse: label=\"Verse 1\"}`\n   * @type {Record<string, string>}\n   */\n  attributes: Record<string, string> = {};\n\n  constructor(\n    name: string,\n    value: string | null = null,\n    traceInfo: TraceInfo | null = null,\n    attributes: Record<string, string> = {},\n    selector: string | null = null,\n    isNegated = false,\n  ) {\n    super(traceInfo);\n    this.parseNameValue(name, value);\n    this.attributes = attributes;\n    this.selector = selector;\n    this.isNegated = isNegated;\n  }\n\n  private parseNameValue(name: string, value: string | null): void {\n    if (name === 'meta') {\n      this.parseMetaTag(value);\n    } else {\n      this.name = name;\n      this.value = value || '';\n    }\n  }\n\n  private parseMetaTag(value: string | null) {\n    if (!value) {\n      throw new Error('Expected value');\n    }\n\n    const [metaName, metaValue] = value.split(/\\s(.+)/);\n    this.name = metaName;\n    this.value = metaValue || '';\n    this._isMetaTag = true;\n  }\n\n  static parse(tag: string | Tag): Tag | null {\n    if (tag instanceof Tag) {\n      return tag;\n    }\n\n    return this.parseWithRegex(tag, TAG_REGEX);\n  }\n\n  static parseWithRegex(tag: string, regex: RegExp): Tag | null {\n    const matches = tag.match(regex);\n\n    if (matches !== null) {\n      return new Tag(matches[1], matches[3] || null);\n    }\n\n    return null;\n  }\n\n  static parseOrFail(tag: string | Tag): Tag {\n    const parsed = this.parse(tag);\n\n    if (!parsed) {\n      throw new Error(`Failed to parse ${tag}`);\n    }\n\n    return parsed;\n  }\n\n  get label() {\n    const labelAttribute = this.attributes.label;\n\n    if (labelAttribute && labelAttribute.length > 0) {\n      return labelAttribute;\n    }\n\n    return this.value || '';\n  }\n\n  isSectionDelimiter(): boolean {\n    return this.isSectionStart() || this.isSectionEnd();\n  }\n\n  isSectionStart(): boolean {\n    const [tagType] = TagInterpreter.interpret(this.name, this.value);\n    return tagType === START_TAG;\n  }\n\n  isSectionEnd(): boolean {\n    const [tagType] = TagInterpreter.interpret(this.name, this.value);\n    return tagType === END_TAG;\n  }\n\n  isInlineFontTag(): boolean {\n    return INLINE_FONT_TAGS.includes(this.name);\n  }\n\n  /**\n   * Checks whether the tag is a comment tag ({comment} or {c}).\n   */\n  isComment(): boolean {\n    return this.name === COMMENT || this.name === COMMENT_SHORT;\n  }\n\n  /**\n   * Checks whether the tag is an image tag ({image}).\n   */\n  isImage(): boolean {\n    return this.name === IMAGE;\n  }\n\n  set name(name) {\n    this._name = translateTagNameAlias(name);\n    this._originalName = name;\n  }\n\n  /**\n   * The tag full name. When the original tag used the short name, `name` will return the full name.\n   * @member\n   * @type {string}\n   */\n  get name() {\n    return this._name.trim();\n  }\n\n  /**\n   * The original tag name that was used to construct the tag.\n   * @member\n   * @type {string}\n   */\n  get originalName() {\n    return this._originalName.trim();\n  }\n\n  set value(value) {\n    this._value = value || '';\n  }\n\n  /**\n   * The tag value\n   * @member\n   * @type {string}\n   */\n  get value(): string {\n    return `${this._value}`.trim();\n  }\n\n  /**\n   * Checks whether the tag value is a non-empty string.\n   * @returns {boolean}\n   */\n  hasValue(): boolean {\n    return this.value.length > 0;\n  }\n\n  hasAttributes() {\n    return Object.keys(this.attributes).length > 0;\n  }\n\n  hasLabel(): boolean {\n    return this.label.length > 0;\n  }\n\n  /**\n   * Checks whether the tag is usually rendered inline. It currently only applies to comment tags.\n   * @returns {boolean}\n   */\n  isRenderable(): boolean {\n    return RENDERABLE_TAGS.includes(this.name) || this.hasRenderableLabel();\n  }\n\n  /**\n   * Check whether this tag's label (if any) should be rendered, as applicable to tags like\n   * `start_of_verse` and `start_of_chorus`.\n   * See https://chordpro.org/chordpro/directives-env_chorus/, https://chordpro.org/chordpro/directives-env_verse/,\n   * https://chordpro.org/chordpro/directives-env_bridge/, https://chordpro.org/chordpro/directives-env_tab/\n   */\n  hasRenderableLabel(): boolean {\n    return (DIRECTIVES_WITH_RENDERABLE_LABEL.includes(this.name) || this.isSectionStart()) && this.hasLabel();\n  }\n\n  /**\n   * Checks whether the tag is a standard meta tag, a custom meta directive (`{x_some_name}`)\n   * or a non-standard meta tag (`{meta: name value}`)\n   * @returns {boolean}\n   */\n  isMetaTag(): boolean {\n    return this._isMetaTag || CUSTOM_META_TAG_NAME_REGEX.test(this.name) || META_TAGS.indexOf(this.name) !== -1;\n  }\n\n  /**\n   * Checks whether this tag is a standard meta tag or a custom meta directive (`{x_some_name}`)\n   * @returns {boolean}\n   */\n  isStandardOrCustomMetaTag(): boolean {\n    return META_TAGS.indexOf(this.name) !== -1 || CUSTOM_META_TAG_NAME_REGEX.test(this.name);\n  }\n\n  /**\n   * Returns a clone of the tag.\n   * @returns {Tag} The cloned tag\n   */\n  clone(): Tag {\n    return new Tag(this._originalName, this.value, null, this.attributes);\n  }\n\n  toString(): string {\n    return `Tag(name=${this.name}, value=${this.value})`;\n  }\n\n  set({ value }: { value: string }): Tag {\n    return new Tag(this._originalName, value, null, this.attributes);\n  }\n\n  setAttribute(name: string, value: string) {\n    return new Tag(\n      this._originalName,\n      this.value,\n      null,\n      {\n        ...this.attributes,\n        [name]: value,\n      },\n    );\n  }\n}\n\nexport default Tag;\n","import Key from '../key';\nimport MetadataAccessors from './metadata_accessors';\nimport { isReadonlyTag } from './tag';\nimport { CAPO, KEY, _KEY } from './tags';\n\ntype MetadataProvider = () => string | null;\n\nfunction appendValue(array: string[], value: string): void {\n  if (!array.includes(value)) {\n    array.push(value);\n  }\n}\n\n/**\n * Stores song metadata. Properties can be accessed using the get() method:\n *\n * const metadata = new Metadata({ author: 'John' });\n * metadata.get('author')   // => 'John'\n *\n * See {@link Metadata#get}\n */\nclass Metadata extends MetadataAccessors implements Iterable<[string, string | string[]]> {\n  metadata: Record<string, string | string[]> = {};\n\n  providers = new Map<string, MetadataProvider>();\n\n  constructor(metadata: Record<string, string | string[]> | Metadata = {}) {\n    super();\n\n    if (metadata instanceof Metadata) {\n      this.assign(metadata.metadata);\n    } else {\n      this.assign(metadata);\n    }\n  }\n\n  merge(metadata: Record<string, string | string[]> | Metadata = {}): Metadata {\n    const clone = this.clone();\n    if (metadata instanceof Metadata) {\n      clone.assign(metadata.metadata);\n    } else {\n      clone.assign(metadata);\n    }\n    return clone;\n  }\n\n  contains(key: string): boolean {\n    return key in this.metadata;\n  }\n\n  add(key: string, value: string): void {\n    if (isReadonlyTag(key)) {\n      return;\n    }\n\n    if (!(key in this.metadata)) {\n      this.metadata[key] = value;\n      return;\n    }\n\n    this.appendValue(key, value);\n  }\n\n  appendValue(key: string, value: string): void {\n    const currentValue = this.metadata[key];\n\n    if (currentValue === value) {\n      return;\n    }\n\n    if (currentValue instanceof Array) {\n      appendValue(currentValue, value);\n      return;\n    }\n\n    this.metadata[key] = [currentValue, value];\n  }\n\n  setProvider(key: string, provider: MetadataProvider): void {\n    this.providers.set(key, provider);\n  }\n\n  set(key: string, value: string | null): void {\n    if (value) {\n      this.metadata[key] = value;\n    } else {\n      delete this.metadata[key];\n    }\n  }\n\n  getMetadataValue(name: string): string | string[] | null {\n    return this.get(name);\n  }\n\n  getSingleMetadataValue(name: string): string | null {\n    return this.getSingle(name);\n  }\n\n  /**\n   * Reads a metadata value by key. This method supports simple value lookup, as well as fetching single array values.\n   *\n   * This method deprecates direct property access, eg: metadata['author']\n   *\n   * @example\n   * const metadata = new Metadata({ lyricist: 'Pete', author: ['John', 'Mary'] });\n   * metadata.get('lyricist') // => 'Pete'\n   * metadata.get('author')   // => ['John', 'Mary']\n   * metadata.get('author.1') // => 'John'\n   * metadata.get('author.2') // => 'Mary'\n   *\n   * Using a negative index will start counting at the end of the list:\n   *\n   * const metadata = new Metadata({ lyricist: 'Pete', author: ['John', 'Mary'] });\n   * metadata.get('author.-1') // => 'Mary'\n   * metadata.get('author.-2') // => 'John'\n   *\n   * @param prop the property name\n   * @returns {Array<String>|String} the metadata value(s). If there is only one value, it will return a String,\n   * else it returns an array of strings.\n   */\n  get(prop: string): string | string[] | null {\n    if (prop === _KEY) {\n      return this.calculateKeyFromCapo();\n    }\n\n    if (prop in this.metadata) {\n      return this.metadata[prop];\n    }\n\n    const provider = this.providers.get(prop);\n\n    if (provider) {\n      return provider();\n    }\n\n    return this.getArrayItem(prop);\n  }\n\n  /**\n   * Returns all metadata values, including provider values and generated values like `_key`.\n   * @returns {Object.<string, string|string[]>} the metadata values\n   */\n  all(): Record<string, string | string[]> {\n    const all: Record<string, string | string[]> = {};\n\n    this.providers.forEach((provider, providerKey) => {\n      const value = provider();\n\n      if (value !== null) {\n        all[providerKey] = value;\n      }\n    });\n\n    Object.assign(all, this.metadata);\n\n    const key = this.calculateKeyFromCapo();\n\n    if (key) {\n      all[_KEY] = key;\n    }\n\n    return all;\n  }\n\n  ownMetadata(): Record<string, string | string[]> {\n    const all = { ...this.metadata };\n    const key = this.calculateKeyFromCapo();\n\n    if (key) {\n      all[_KEY] = key;\n    }\n\n    return all;\n  }\n\n  [Symbol.iterator](): IterableIterator<[string, string | string[]]> {\n    return Object.entries(this.ownMetadata())[Symbol.iterator]();\n  }\n\n  /**\n   * Returns a single metadata value. If the actual value is an array, it returns the first value. Else, it returns\n   * the value.\n   * @ignore\n   * @param {string} prop the property name\n   * @returns {String} The metadata value\n   */\n  getSingle(prop: string): string | null {\n    const value = this.get(prop);\n\n    if (Array.isArray(value)) {\n      return value[0];\n    }\n\n    return value;\n  }\n\n  parseArrayKey(prop: string): [string, number] | null {\n    const match = prop.match(/(.+)\\.(-?\\d+)$/);\n\n    if (!match) {\n      return null;\n    }\n\n    const key = match[1];\n    const index = parseInt(match[2], 10);\n    return [key, index];\n  }\n\n  getArrayItem(prop: string): string | null {\n    const parsedKey = this.parseArrayKey(prop);\n\n    if (parsedKey === null) {\n      return null;\n    }\n\n    const [key, index] = parsedKey;\n    const arrayValue = (this.metadata[key] || []);\n    let itemIndex = index;\n\n    if (itemIndex < 0) {\n      itemIndex = arrayValue.length + itemIndex;\n    } else if (itemIndex > 0) {\n      itemIndex -= 1;\n    }\n\n    return arrayValue[itemIndex];\n  }\n\n  /**\n   * Returns a deep clone of this Metadata object\n   * @returns {Metadata} the cloned Metadata object\n   */\n  clone(): Metadata {\n    const cloned = new Metadata(this.metadata);\n    this.providers.forEach((provider, key) => cloned.setProvider(key, provider));\n    return cloned;\n  }\n\n  calculateKeyFromCapo(): string | null {\n    const capoString = this.getSingle(CAPO);\n    const keyString = this.getSingle(KEY);\n\n    if (capoString && keyString) {\n      const key: Key | null = Key.parse(keyString);\n\n      if (!key) {\n        throw new Error(`Could not parse ${keyString}`);\n      }\n\n      const capo = parseInt(capoString, 10);\n      return key.transpose(capo).normalize().toString();\n    }\n\n    return null;\n  }\n\n  assign(metadata: Record<string, string | string[] | null>): void {\n    Object\n      .keys(metadata)\n      .filter((key) => !isReadonlyTag(key))\n      .forEach((key) => {\n        const value = metadata[key];\n\n        if (value === null || value === undefined) {\n          return;\n        }\n\n        if (value instanceof Array) {\n          this.metadata[key] = [...value];\n        } else if (value === null) {\n          delete this.metadata[key];\n        } else {\n          this.metadata[key] = value.toString();\n        }\n      });\n  }\n}\n\nexport default Metadata;\n","import AstComponent from '../ast_component';\nimport Metadata from '../metadata';\n\nabstract class Evaluatable extends AstComponent {\n  abstract evaluate(_metadata: Metadata, _metadataSeparator: string, _variable?: string | null): string;\n\n  abstract clone(): Evaluatable;\n}\n\nexport default Evaluatable;\n","import Evaluatable from './evaluatable';\n\nclass Literal extends Evaluatable {\n  string: string;\n\n  constructor(string: string) {\n    super();\n    this.string = string;\n  }\n\n  evaluate(): string {\n    return this.string;\n  }\n\n  isRenderable(): boolean {\n    return true;\n  }\n\n  clone(): Literal {\n    return new Literal(this.string);\n  }\n}\n\nexport default Literal;\n","import Evaluatable from './evaluatable';\nimport Metadata from '../metadata';\n\nclass Composite extends Evaluatable {\n  expressions: Evaluatable[] = [];\n\n  variable: string | null;\n\n  constructor(expressions: Evaluatable[], variable: string | null = null) {\n    super();\n    this.expressions = expressions;\n    this.variable = variable;\n  }\n\n  evaluate(metadata: Metadata, metadataSeparator: string): string {\n    return this.expressions.map((expression) => (\n      expression.evaluate(metadata, metadataSeparator, this.variable)\n    )).join('');\n  }\n\n  isRenderable(): boolean {\n    return true;\n  }\n\n  clone(): Composite {\n    return new Composite(\n      this.expressions.map((expression) => expression.clone()),\n      this.variable,\n    );\n  }\n}\n\nexport default Composite;\n","class EvaluationError extends Error {\n  line: number | null = null;\n\n  column: number | null = null;\n\n  offset: number | null = null;\n\n  constructor(message: string, line: number | null = null, column: number | null = null, offset: number | null = null) {\n    super(`${message} on line ${line} column ${column}`);\n    this.name = 'ExpressionError';\n    this.line = line;\n    this.column = column;\n    this.offset = offset;\n  }\n}\n\nexport default EvaluationError;\n","import Composite from './composite';\nimport Evaluatable from './evaluatable';\nimport EvaluationError from './evaluation_error';\nimport Metadata from '../metadata';\nimport TraceInfo from '../trace_info';\nimport { isEmptyString } from '../../utilities';\n\nexport type TernaryProperties = TraceInfo & {\n  variable?: string | null;\n  valueTest?: string | null;\n  trueExpression?: Evaluatable[];\n  falseExpression?: Evaluatable[];\n};\n\nclass Ternary extends Evaluatable {\n  variable: string | null;\n\n  valueTest: string | null;\n\n  trueExpression: Evaluatable[] = [];\n\n  falseExpression: Evaluatable[] = [];\n\n  constructor(\n    {\n      variable = null,\n      valueTest = null,\n      trueExpression = [],\n      falseExpression = [],\n      line = null,\n      column = null,\n      offset = null,\n    }: TernaryProperties,\n  ) {\n    super({ line, column, offset });\n    this.variable = variable || null;\n    this.valueTest = valueTest || null;\n    this.trueExpression = trueExpression;\n    this.falseExpression = falseExpression;\n  }\n\n  /**\n   * Evaluate the meta expression\n   * @param {Metadata} metadata The metadata object to use for evaluating the expression\n   * @param {string} [metadataSeparator=null] The metadata separator to use if necessary\n   * @returns {string} The evaluated expression\n   */\n  evaluate(metadata: Metadata, metadataSeparator: string, upperContext: string | null = null): string {\n    if (this.variable) {\n      return this.evaluateWithVariable(metadata, metadataSeparator);\n    }\n\n    if (!upperContext) {\n      throw new EvaluationError('Unexpected empty expression', this.line, this.column, this.offset);\n    }\n\n    return this.evaluateToString(metadata.get(upperContext) || '', metadataSeparator);\n  }\n\n  evaluateToString(value: string[] | string, metadataSeparator: string): string {\n    if (Array.isArray(value)) {\n      return value.join(metadataSeparator);\n    }\n\n    return value;\n  }\n\n  evaluateWithVariable(metadata: Metadata, metadataSeparator: string): string {\n    if (!this.variable) {\n      throw new Error('Expected this.variable to be present');\n    }\n\n    const value = metadata.get(this.variable);\n\n    if (value && (isEmptyString(this.valueTest) || value === this.valueTest)) {\n      return this.evaluateForTruthyValue(metadata, metadataSeparator, value);\n    }\n\n    if (this.falseExpression.length) {\n      return new Composite(this.falseExpression, this.variable).evaluate(metadata, metadataSeparator);\n    }\n\n    return '';\n  }\n\n  evaluateForTruthyValue(metadata: Metadata, metadataSeparator: string, value: string | string[]): string {\n    if (this.trueExpression.length) {\n      return new Composite(this.trueExpression, this.variable).evaluate(metadata, metadataSeparator);\n    }\n\n    return this.evaluateToString(value, metadataSeparator);\n  }\n\n  isRenderable(): boolean {\n    return true;\n  }\n\n  clone(): Ternary {\n    return new Ternary({\n      variable: this.variable,\n      valueTest: this.valueTest,\n      trueExpression: this.trueExpression.map((part) => part.clone()),\n      falseExpression: this.falseExpression.map((part) => part.clone()),\n      line: this.line,\n      column: this.column,\n      offset: this.offset,\n    });\n  }\n}\n\nexport default Ternary;\n","import ChordLyricsPair from './chord_lyrics_pair';\nimport Comment from './comment';\nimport Literal from './chord_pro/literal';\nimport Tag from './tag';\nimport Ternary from './chord_pro/ternary';\n\ntype Item = ChordLyricsPair | Comment | Tag | Ternary | Literal;\n\nexport default Item;\n","import ChordLyricsPair from './chord_lyrics_pair';\nimport Comment from './comment';\nimport Font from './font';\nimport Item from './item';\nimport Tag from './tag';\nimport { ContentType, PartTypes } from '../serialized_types';\n\nimport {\n  BRIDGE,\n  CHORUS,\n  GRID,\n  NONE,\n  PART,\n  TAB,\n  VERSE,\n} from '../constants';\n\ntype MapItemFunc = (_item: Item) => Item | null;\n\nexport type LineType = 'bridge' | 'chorus' | 'none' | 'tab' | 'verse' | ContentType | 'indeterminate' | PartTypes;\n\n/**\n * Represents a line in a chord sheet, consisting of items of type ChordLyricsPair or Tag\n */\nclass Line {\n  /**\n   * The items ({@link ChordLyricsPair} or {@link Tag} or {@link Comment}) of which the line consists\n   * @type {Array.<(ChordLyricsPair|Tag|Comment)>}\n   */\n  items: Item[] = [];\n\n  /**\n   * The line type, This is set by the ChordProParser when it read tags like {start_of_chorus} or {start_of_verse}\n   * It uses the following mapping to determine the line type from directives:\n   * - `start_of_abc` => {@link ABC}\n   * - `start_of_bridge` => {@link BRIDGE}\n   * - `start_of_chorus` => {@link CHORUS}\n   * - `start_of_grid` => {@link GRID}\n   * - `start_of_ly` => {@link LILYPOND}\n   * - `start_of_tab` => {@link TAB}\n   * - `start_of_verse` => {@link VERSE}\n   *\n   * There are two special cases:\n   * - {@link INDETERMINATE} when the paragraph lines do not have a consistent type\n   * - {@link NONE} when no type is derived\n   * @type {string}\n   */\n  type: string = NONE;\n\n  currentChordLyricsPair: ChordLyricsPair = new ChordLyricsPair();\n\n  key: string | null = null;\n\n  transposeKey: string | null = null;\n\n  lineNumber: number | null = null;\n\n  selector: string | null = null;\n\n  selectorIsNegated = false;\n\n  /**\n   * The text font that applies to this line. Is derived from the directives:\n   * `textfont`, `textsize` and `textcolour`\n   * See: https://www.chordpro.org/chordpro/directives-props_text_legacy/\n   * @type {Font}\n   */\n  textFont: Font = new Font();\n\n  /**\n   * The chord font that applies to this line. Is derived from the directives:\n   * `chordfont`, `chordsize` and `chordcolour`\n   * See: https://www.chordpro.org/chordpro/directives-props_chord_legacy/\n   * @type {Font}\n   */\n  chordFont: Font = new Font();\n\n  constructor({ type, items }: { type: string, items: Item[] } = { type: NONE, items: [] }) {\n    this.type = type;\n    this.items = items;\n  }\n\n  /**\n   * Indicates whether the line contains any items\n   * @returns {boolean}\n   */\n  isEmpty(): boolean {\n    return this.items.length === 0;\n  }\n\n  /**\n   * Adds an item ({@link ChordLyricsPair} or {@link Tag}) to the line\n   * @param {ChordLyricsPair|Tag} item The item to be added\n   */\n  addItem(item: Item): void {\n    if (item instanceof Tag) {\n      this.addTag(item);\n    } else if (item instanceof ChordLyricsPair) {\n      this.addChordLyricsPair(item);\n    } else if (item instanceof Comment) {\n      this.addComment(item);\n    } else {\n      const addedItem = item;\n      addedItem.parentLine = this;\n      this.items.push(addedItem);\n    }\n  }\n\n  /**\n   * Indicates whether the line contains items that are renderable\n   * @returns {boolean}\n   */\n  hasRenderableItems(): boolean {\n    return this.items.some((item) => item.isRenderable());\n  }\n\n  /**\n   * Returns a deep copy of the line and all of its items\n   * @returns {Line}\n   */\n  clone(): Line {\n    return this.mapItems(null);\n  }\n\n  mapItems(func: MapItemFunc | null): Line {\n    const clonedLine = new Line();\n\n    clonedLine.items = this.items\n      .map((item) => {\n        const clonedItem = item.clone();\n        return func ? func(clonedItem) : clonedItem;\n      })\n      .filter((item) => item !== null) as Item[];\n\n    clonedLine.type = this.type;\n    return clonedLine;\n  }\n\n  /**\n   * Indicates whether the line type is {@link BRIDGE}\n   * @returns {boolean}\n   */\n  isBridge(): boolean {\n    return this.type === BRIDGE;\n  }\n\n  /**\n   * Indicates whether the line type is {@link CHORUS}\n   * @returns {boolean}\n   */\n  isChorus(): boolean {\n    return this.type === CHORUS;\n  }\n\n  /**\n   * Indicates whether the line type is {@link GRID}\n   * @returns {boolean}\n   */\n  isGrid(): boolean {\n    return this.type === GRID;\n  }\n\n  /**\n   * Indicates whether the line type is {@link TAB}\n   * @returns {boolean}\n   */\n  isTab(): boolean {\n    return this.type === TAB;\n  }\n\n  /**\n   * Indicates whether the line type is {@link VERSE}\n   * @returns {boolean}\n   */\n  isVerse(): boolean {\n    return this.type === VERSE;\n  }\n\n  /**\n   * Indicates whether the line type is {@link PART}\n   * @returns {boolean}\n   */\n  isPart(): boolean {\n    return this.type === PART;\n  }\n\n  /**\n   * Indicates whether the line contains items that are renderable. Please use {@link hasRenderableItems}\n   * @deprecated\n   * @returns {boolean}\n   */\n  hasContent(): boolean {\n    return this.hasRenderableItems();\n  }\n\n  addChordLyricsPair(chords: ChordLyricsPair | string | null = null, lyrics = null): ChordLyricsPair {\n    if (chords instanceof ChordLyricsPair) {\n      this.currentChordLyricsPair = chords;\n    } else {\n      this.currentChordLyricsPair = new ChordLyricsPair(chords || '', lyrics || '');\n    }\n\n    this.currentChordLyricsPair.parentLine = this;\n    this.items.push(this.currentChordLyricsPair);\n    return this.currentChordLyricsPair;\n  }\n\n  ensureChordLyricsPair(): void {\n    if (!this.currentChordLyricsPair) {\n      this.addChordLyricsPair();\n    }\n  }\n\n  chords(chr: string): void {\n    this.ensureChordLyricsPair();\n    this.currentChordLyricsPair.chords += chr;\n  }\n\n  lyrics(chr: string): void {\n    this.ensureChordLyricsPair();\n    this.currentChordLyricsPair.lyrics += chr;\n  }\n\n  addTag(nameOrTag: Tag | string, value: string | null = null): Tag {\n    const tag = (nameOrTag instanceof Tag) ? nameOrTag : new Tag(nameOrTag, value);\n    tag.parentLine = this;\n    this.items.push(tag);\n    return tag;\n  }\n\n  addComment(content: Comment | string): Comment {\n    const comment = (content instanceof Comment) ? content : new Comment(content);\n    comment.parentLine = this;\n    this.items.push(comment);\n    return comment;\n  }\n\n  set(properties: { type?: string, items?: Item[] }): Line {\n    return new Line(\n      {\n        type: this.type,\n        items: this.items,\n        ...properties,\n      },\n    );\n  }\n\n  get _tag(): Tag | null {\n    if (this.items.length !== 1) {\n      return null;\n    }\n\n    const item = this.items[0];\n\n    if (!(item instanceof Tag)) {\n      return null;\n    }\n\n    return item;\n  }\n\n  isSectionStart(): boolean {\n    return this._tag?.isSectionStart() || false;\n  }\n\n  isSectionEnd(): boolean {\n    return this._tag?.isSectionEnd() || false;\n  }\n}\n\nexport default Line;\n","import Chord from '../chord';\nimport Key from '../key';\nimport type Line from './line';\n\nimport { Accidental } from '../constants';\nimport { deprecate } from '../utilities';\n\n/**\n * Represents a chord with the corresponding (partial) lyrics\n */\nclass ChordLyricsPair {\n  chords: string;\n\n  lyrics: string | null;\n\n  annotation: string | null;\n\n  isRhythmSymbol: boolean;\n\n  parentLine: Line | null = null;\n\n  private _chordObj: Chord | null = null;\n\n  /**\n   * Initialises a ChordLyricsPair\n   * @param {string} chords The chords\n   * @param {string | null} lyrics The lyrics\n   * @param {string | null} annotation The annotation\n   * @param {Chord | null} chordObj Optional pre-parsed Chord object\n   * @param {boolean} isRhythmSymbol Whether this pair represents a rhythm symbol\n   */\n  constructor(\n    chords = '',\n    lyrics: string | null = null,\n    annotation: string | null = null,\n    chordObj: Chord | null = null,\n    isRhythmSymbol = false,\n  ) {\n    this.chords = chords || '';\n    this.lyrics = lyrics || '';\n    this.annotation = annotation || '';\n    this._chordObj = chordObj;\n    this.isRhythmSymbol = isRhythmSymbol;\n  }\n\n  /** Returns the Chord object if available, otherwise parses from string */\n  get chord(): Chord | null {\n    return this._chordObj || Chord.parse(this.chords.trim());\n  }\n\n  /**\n   * Indicates whether a ChordLyricsPair should be visible in a formatted chord sheet (except for ChordPro sheets)\n   * @returns {boolean}\n   */\n  isRenderable(): boolean {\n    return true;\n  }\n\n  /**\n   * Indicates whether the ChordLyricsPair has non-empty lyrics.\n   */\n  hasLyrics(): boolean {\n    return !!(this.lyrics && this.lyrics.trim().length > 0);\n  }\n\n  /**\n   * Returns a deep copy of the ChordLyricsPair, useful when programmatically transforming a song\n   * @returns {ChordLyricsPair}\n   */\n  clone(): ChordLyricsPair {\n    const chordObj = this._chordObj?.clone() || null;\n    return new ChordLyricsPair(this.chords, this.lyrics, this.annotation, chordObj, this.isRhythmSymbol);\n  }\n\n  toString(): string {\n    return `ChordLyricsPair(chords=${this.chords}, lyrics=${this.lyrics})`;\n  }\n\n  set(\n    {\n      chords, lyrics, annotation, chordObj, isRhythmSymbol,\n    }:\n    { chords?: string, lyrics?: string, annotation?: string, chordObj?: Chord | null, isRhythmSymbol?: boolean },\n  ): ChordLyricsPair {\n    return new ChordLyricsPair(\n      chords ?? this.chords,\n      lyrics ?? this.lyrics,\n      annotation ?? this.annotation,\n      chordObj ?? null,\n      isRhythmSymbol ?? this.isRhythmSymbol,\n    );\n  }\n\n  setLyrics(lyrics: string): ChordLyricsPair {\n    return this.set({ lyrics });\n  }\n\n  setAnnotation(annotation: string): ChordLyricsPair {\n    return this.set({ annotation });\n  }\n\n  transpose(\n    delta: number,\n    key: string | Key | null = null,\n    { normalizeChordSuffix }: { normalizeChordSuffix: boolean } = { normalizeChordSuffix: false },\n  ): ChordLyricsPair {\n    return this.changeChord((chord: Chord) => {\n      const transposedChord = chord.transpose(delta);\n\n      if (key) {\n        return transposedChord.normalize(key, { normalizeSuffix: normalizeChordSuffix });\n      }\n\n      return transposedChord;\n    });\n  }\n\n  useAccidental(accidental: Accidental) {\n    return this.changeChord((chord: Chord) => chord.useAccidental(accidental));\n  }\n\n  /**\n   * @deprecated Use useAccidental instead\n   */\n  useModifier(accidental: Accidental) {\n    deprecate('useModifier is deprecated, use useAccidental instead');\n    return this.useAccidental(accidental);\n  }\n\n  changeChord(func: (chord: Chord) => Chord): ChordLyricsPair {\n    const chordObj = Chord.parse(this.chords.trim());\n\n    if (chordObj) {\n      const changedChord = func(chordObj);\n      return this.set({ chords: changedChord.toString(), chordObj: changedChord });\n    }\n\n    return this.clone();\n  }\n}\n\nexport default ChordLyricsPair;\n","const mapping: Record<string, string> = {\n  \"2\": \"2\",\n  \"4\": \"sus\",\n  \"5\": \"5\",\n  \"6\": \"6\",\n  \"7\": \"7\",\n  \"9\": \"9\",\n  \"11\": \"11\",\n  \"13\": \"13\",\n  \"42\": \"4(2)\",\n  \"69\": \"6(9)\",\n  \"(#4)\": \"(#4)\",\n  \"#4\": \"(#4)\",\n  \"+4\": \"(#4)\",\n  \"(+4)\": \"(#4)\",\n  \"(11)\": \"(11)\",\n  \"add11\": \"(11)\",\n  \"(add11)\": \"(11)\",\n  \"(13)\": \"(13)\",\n  \"add13\": \"(13)\",\n  \"(add13)\": \"(13)\",\n  \"(2)\": \"(2)\",\n  \"add2\": \"(2)\",\n  \"(add2)\": \"(2)\",\n  \"(4)\": \"(4)\",\n  \"add4\": \"(4)\",\n  \"(add4)\": \"(4)\",\n  \"sus(4)\": \"(4)\",\n  \"(6)\": \"(6)\",\n  \"add6\": \"(6)\",\n  \"(add6)\": \"(6)\",\n  \"(7)\": \"(7)\",\n  \"(9)\": \"(9)\",\n  \"add9\": \"(9)\",\n  \"(add9)\": \"(9)\",\n  \"(b5)\": \"(b5)\",\n  \"-5\": \"(b5)\",\n  \"(-5)\": \"(b5)\",\n  \"b5\": \"(b5)\",\n  \"2(6)\": \"2(6)\",\n  \"(b6)\": \"(b6)\",\n  \"(unis)\": \"(unis)\",\n  \"unis\": \"(unis)\",\n  \"[blank]\": \"[blank]\",\n  \"maj\": \"[blank]\",\n  \"major\": \"[blank]\",\n  \"M\": \"[blank]\",\n  \"ma\": \"[blank]\",\n  \"Ma\": \"[blank]\",\n  \"Majj\": \"[blank]\",\n  \"+\": \"+\",\n  \"aug\": \"+\",\n  \"(#5)\": \"+\",\n  \"#5\": \"+\",\n  \"+5\": \"+\",\n  \"(+5)\": \"+\",\n  \"x\": \"+\",\n  \"dom11\": \"11\",\n  \"11(#5)\": \"11(#5)\",\n  \"11#5\": \"11(#5)\",\n  \"11+5\": \"11(#5)\",\n  \"11(+5)\": \"11(#5)\",\n  \"11(#9)\": \"11(#9)\",\n  \"11#9\": \"11(#9)\",\n  \"11+9\": \"11(#9)\",\n  \"11(+9)\": \"11(#9)\",\n  \"11(b13)\": \"11(b13)\",\n  \"11b13\": \"11(b13)\",\n  \"11-13\": \"11(b13)\",\n  \"11(-13)\": \"11(b13)\",\n  \"11(b5)\": \"11(b5)\",\n  \"11b5\": \"11(b5)\",\n  \"11-5\": \"11(b5)\",\n  \"11(-5)\": \"11(b5)\",\n  \"11(b9)\": \"11(b9)\",\n  \"11b9\": \"11(b9)\",\n  \"11-9\": \"11(b9)\",\n  \"11(-9)\": \"11(b9)\",\n  \"11sus4\": \"11sus4\",\n  \"11sus\": \"11sus4\",\n  \"m11sus4\": \"11sus4\",\n  \"m11sus\": \"11sus4\",\n  \"dom13\": \"13\",\n  \"13(#11)\": \"13(#11)\",\n  \"13#11\": \"13(#11)\",\n  \"13+11\": \"13(#11)\",\n  \"13(+11)\": \"13(#11)\",\n  \"13(#5)\": \"13(#5)\",\n  \"13#5\": \"13(#5)\",\n  \"13+5\": \"13(#5)\",\n  \"13(+5)\": \"13(#5)\",\n  \"13(#9)\": \"13(#9)\",\n  \"13#9\": \"13(#9)\",\n  \"13(+9)\": \"13(#9)\",\n  \"13+9\": \"13(#9)\",\n  \"13(#9#5)\": \"13(#9#5)\",\n  \"13#9#5\": \"13(#9#5)\",\n  \"13(+9+5)\": \"13(#9#5)\",\n  \"13+9+5\": \"13(#9#5)\",\n  \"13(#9b5)\": \"13(#9b5)\",\n  \"13#9b5\": \"13(#9b5)\",\n  \"13(+9-5)\": \"13(#9b5)\",\n  \"13+9-5\": \"13(#9b5)\",\n  \"13(add2)\": \"13(add2)\",\n  \"13(add4)\": \"13(add4)\",\n  \"13(b5)\": \"13(b5)\",\n  \"13b5\": \"13(b5)\",\n  \"13-5\": \"13(b5)\",\n  \"13(-5)\": \"13(b5)\",\n  \"13(b9)\": \"13(b9)\",\n  \"13b9\": \"13(b9)\",\n  \"13-9\": \"13(b9)\",\n  \"13(-9)\": \"13(b9)\",\n  \"13(b9#5)\": \"13(b9#5)\",\n  \"13b9#5\": \"13(b9#5)\",\n  \"13-9+5\": \"13(b9#5)\",\n  \"13(-9+5)\": \"13(b9#5)\",\n  \"13(b9b5)\": \"13(b9b5)\",\n  \"13b9b5\": \"13(b9b5)\",\n  \"13-9-5\": \"13(b9b5)\",\n  \"13(-9-5)\": \"13(b9b5)\",\n  \"13sus4\": \"13sus4\",\n  \"13sus\": \"13sus4\",\n  \"m13sus4\": \"13sus4\",\n  \"m13sus\": \"13sus4\",\n  \"sus2\": \"2\",\n  \"add9(no3)\": \"2\",\n  \"2(#11)\": \"2(#11)\",\n  \"2(#4)\": \"2(#4)\",\n  \"2+4\": \"2(#4)\",\n  \"2#4\": \"2(#4)\",\n  \"2(+4)\": \"2(#4)\",\n  \"(#4)2\": \"2(#4)\",\n  \"2(#4)(#42)(2#4)\": \"2(#4)(#42)(2#4)\",\n  \"2(+7)\": \"2(+7)\",\n  \"2(4)\": \"2(4)\",\n  \"sus2(4)\": \"2(4)\",\n  \"2(ma7)\": \"2(ma7)\",\n  \"2(no3)\": \"2(no3)\",\n  \"4(2)\": \"4(2)\",\n  \"sus42\": \"4(2)\",\n  \"no3\": \"5\",\n  \"(no3)\": \"5\",\n  \"5(no3)\": \"5\",\n  \"6(2)\": \"6(2)\",\n  \"6(b9)\": \"6(b9)\",\n  \"6(no3)\": \"6(no3)\",\n  \"6(9)\": \"6(9)\",\n  \"6(add9)\": \"6(9)\",\n  \"dom7\": \"7\",\n  \"7(#11)\": \"7(#11)\",\n  \"7#11\": \"7(#11)\",\n  \"7+11\": \"7(#11)\",\n  \"7(+11)\": \"7(#11)\",\n  \"7(#5)\": \"7(#5)\",\n  \"aug7\": \"7(#5)\",\n  \"7#5\": \"7(#5)\",\n  \"7+5\": \"7(#5)\",\n  \"7(+5)\": \"7(#5)\",\n  \"x7\": \"7(#5)\",\n  \"7(#5#11)\": \"7(#5#11)\",\n  \"7#5#11\": \"7(#5#11)\",\n  \"7+5+11\": \"7(#5#11)\",\n  \"7(+5+11)\": \"7(#5#11)\",\n  \"7(#9)\": \"7(#9)\",\n  \"7#9\": \"7(#9)\",\n  \"7+9\": \"7(#9)\",\n  \"7(+9)\": \"7(#9)\",\n  \"7(#9#5)\": \"7(#9#5)\",\n  \"7(#5#9)\": \"7(#9#5)\",\n  \"7#5#9\": \"7(#9#5)\",\n  \"7+5+9\": \"7(#9#5)\",\n  \"7(+5+9)\": \"7(#9#5)\",\n  \"7(#9b13)\": \"7(#9b13)\",\n  \"7#9b13\": \"7(#9b13)\",\n  \"7(+9-13)\": \"7(#9b13)\",\n  \"7+9-13\": \"7(#9b13)\",\n  \"7(b13#9)\": \"7(#9b13)\",\n  \"7b13#9\": \"7(#9b13)\",\n  \"7-13+9\": \"7(#9b13)\",\n  \"7(-13+9)\": \"7(#9b13)\",\n  \"7(#9b5)\": \"7(#9b5)\",\n  \"7(6)\": \"7(6)\",\n  \"7(b13)\": \"7(b13)\",\n  \"7b13\": \"7(b13)\",\n  \"7-13\": \"7(b13)\",\n  \"7(-13)\": \"7(b13)\",\n  \"7(b5)\": \"7(b5)\",\n  \"7b5\": \"7(b5)\",\n  \"7-5\": \"7(b5)\",\n  \"7(-5)\": \"7(b5)\",\n  \"7(b5#11)\": \"7(b5#11)\",\n  \"7b5#11\": \"7(b5#11)\",\n  \"7-5+11\": \"7(b5#11)\",\n  \"7(-5+11)\": \"7(b5#11)\",\n  \"7(b5#9)\": \"7(b5#9)\",\n  \"7b5#9\": \"7(b5#9)\",\n  \"7-5+9\": \"7(b5#9)\",\n  \"7(-5+9)\": \"7(b5#9)\",\n  \"7(b5b9)\": \"7(b5b9)\",\n  \"7b5b9\": \"7(b5b9)\",\n  \"7-5-9\": \"7(b5b9)\",\n  \"7(-5-9)\": \"7(b5b9)\",\n  \"7(b9)\": \"7(b9)\",\n  \"7b9\": \"7(b9)\",\n  \"7-9\": \"7(b9)\",\n  \"7(-9)\": \"7(b9)\",\n  \"7(b9#5)\": \"7(b9#5)\",\n  \"7(#5b9)\": \"7(b9#5)\",\n  \"7#5b9\": \"7(b9#5)\",\n  \"7+5-9\": \"7(b9#5)\",\n  \"7(+5-9)\": \"7(b9#5)\",\n  \"7(b9b13)\": \"7(b9b13)\",\n  \"7b9b13\": \"7(b9b13)\",\n  \"7-9-13\": \"7(b9b13)\",\n  \"7(-9-13)\": \"7(b9b13)\",\n  \"7(b13b9)\": \"7(b9b13)\",\n  \"7b13b9\": \"7(b9b13)\",\n  \"7-13-9\": \"7(b9b13)\",\n  \"7(-13-9)\": \"7(b9b13)\",\n  \"7(b9b5)\": \"7(b9b5)\",\n  \"7(no3)\": \"7(no3)\",\n  \"7aug5\": \"7aug5\",\n  \"7b9sus4\": \"7b9sus4\",\n  \"7sus(6)\": \"7sus(6)\",\n  \"7sus(b9)\": \"7sus(b9)\",\n  \"7sus4\": \"7sus4\",\n  \"7sus\": \"7sus4\",\n  \"dom9\": \"9\",\n  \"9(#11)\": \"9(#11)\",\n  \"9#11\": \"9(#11)\",\n  \"9+11\": \"9(#11)\",\n  \"9(+11)\": \"9(#11)\",\n  \"9(#5)\": \"9(#5)\",\n  \"9#5\": \"9(#5)\",\n  \"9+5\": \"9(#5)\",\n  \"9(+5)\": \"9(#5)\",\n  \"aug9\": \"9(#5)\",\n  \"x9\": \"9(#5)\",\n  \"9(b13)\": \"9(b13)\",\n  \"9b13\": \"9(b13)\",\n  \"9-13\": \"9(b13)\",\n  \"9(-13)\": \"9(b13)\",\n  \"9(b5)\": \"9(b5)\",\n  \"9b5\": \"9(b5)\",\n  \"9-5\": \"9(b5)\",\n  \"9(-5)\": \"9(b5)\",\n  \"9aug\": \"9aug\",\n  \"9sus4\": \"9sus4\",\n  \"9sus\": \"9sus4\",\n  \"m9sus4\": \"9sus4\",\n  \"m9sus\": \"9sus4\",\n  \"b69(#11)\": \"b69(#11)\",\n  \"b69sus\": \"b69sus\",\n  \"b9sus\": \"b9sus\",\n  \"dim\": \"dim\",\n  \"m(b5)\": \"dim\",\n  \"mb5\": \"dim\",\n  \"m-5\": \"dim\",\n  \"m(-5)\": \"dim\",\n  \"-(b5)\": \"dim\",\n  \"-b5\": \"dim\",\n  \"dim7\": \"dim7\",\n  \"o7\": \"dim7\",\n  \"m\": \"m\",\n  \"mi\": \"m\",\n  \"min\": \"m\",\n  \"minor\": \"m\",\n  \"-\": \"m\",\n  \"m(11)\": \"m(11)\",\n  \"m(add11)\": \"m(11)\",\n  \"m(4)\": \"m(4)\",\n  \"m(add4)\": \"m(4)\",\n  \"m(9)\": \"m(9)\",\n  \"m(add9)\": \"m(9)\",\n  \"m(ma7)\": \"m(ma7)\",\n  \"m(M7)\": \"m(ma7)\",\n  \"mM7\": \"m(ma7)\",\n  \"mi(maj7)\": \"m(ma7)\",\n  \"min(maj7)\": \"m(ma7)\",\n  \"m(maj7)\": \"m(ma7)\",\n  \"m(+7)\": \"m(ma7)\",\n  \"m+7\": \"m(ma7)\",\n  \"mmaj7\": \"m(ma7)\",\n  \"m(ma9)\": \"m(ma9)\",\n  \"m(M9)\": \"m(ma9)\",\n  \"mM9\": \"m(ma9)\",\n  \"mi(maj9)\": \"m(ma9)\",\n  \"min(maj9)\": \"m(ma9)\",\n  \"m(maj9)\": \"m(ma9)\",\n  \"m(+9)\": \"m(ma9)\",\n  \"m+9\": \"m(ma9)\",\n  \"m(no5)\": \"m(no5)\",\n  \"m11\": \"m11\",\n  \"mi11\": \"m11\",\n  \"min11\": \"m11\",\n  \"-11\": \"m11\",\n  \"m11(#5)\": \"m11(#5)\",\n  \"m11#5\": \"m11(#5)\",\n  \"m11+5\": \"m11(#5)\",\n  \"m11(+5)\": \"m11(#5)\",\n  \"-11(#5)\": \"m11(#5)\",\n  \"-11#5\": \"m11(#5)\",\n  \"m9+5\": \"m9(#5)\",\n  \"-11(+5)\": \"m11(#5)\",\n  \"m11(#9)\": \"m11(#9)\",\n  \"m11#9\": \"m11(#9)\",\n  \"m11+9\": \"m11(#9)\",\n  \"m11(+9)\": \"m11(#9)\",\n  \"-11(#9)\": \"m11(#9)\",\n  \"-11#9\": \"m11(#9)\",\n  \"-11+9\": \"m11(#9)\",\n  \"-11(+9)\": \"m11(#9)\",\n  \"m11(#9#5)\": \"m11(#9#5)\",\n  \"m11(#5#9)\": \"m11(#9#5)\",\n  \"m11#5#9\": \"m11(#9#5)\",\n  \"m11+5+9\": \"m11(#9#5)\",\n  \"m11(+5+9)\": \"m11(#9#5)\",\n  \"-11(#5#9)\": \"m11(#9#5)\",\n  \"-11#5#9\": \"m11(#9#5)\",\n  \"m9+5+9\": \"m11(#9#5)\",\n  \"-11(+5+9)\": \"m11(#9#5)\",\n  \"m11(#9b13)\": \"m11(#9b13)\",\n  \"m11#9b13\": \"m11(#9b13)\",\n  \"m11+9-13\": \"m11(#9b13)\",\n  \"m11(+9-13)\": \"m11(#9b13)\",\n  \"-11(#9b13)\": \"m11(#9b13)\",\n  \"-11#9b13\": \"m11(#9b13)\",\n  \"-11+9-13\": \"m11(#9b13)\",\n  \"-11(+9-13)\": \"m11(#9b13)\",\n  \"m11(b13)\": \"m11(b13)\",\n  \"m11b13\": \"m11(b13)\",\n  \"m11-13\": \"m11(b13)\",\n  \"m11(-13)\": \"m11(b13)\",\n  \"-11(b13)\": \"m11(b13)\",\n  \"-11b13\": \"m11(b13)\",\n  \"-11-13\": \"m11(b13)\",\n  \"-11(-13)\": \"m11(b13)\",\n  \"m11(b13#5)\": \"m11(b13#5)\",\n  \"m11(#5b13)\": \"m11(b13#5)\",\n  \"m11#5b13\": \"m11(b13#5)\",\n  \"m11+5-13\": \"m11(b13#5)\",\n  \"m11(+5-13)\": \"m11(b13#5)\",\n  \"-11(#5b13)\": \"m11(b13#5)\",\n  \"-11#5b13\": \"m11(b13#5)\",\n  \"-11+5-13\": \"m11(b13#5)\",\n  \"-11(+5-13)\": \"m11(b13#5)\",\n  \"m11(b5)\": \"m11(b5)\",\n  \"m11b5\": \"m11(b5)\",\n  \"m11-5\": \"m11(b5)\",\n  \"m11(-5)\": \"m11(b5)\",\n  \"-11(b5)\": \"m11(b5)\",\n  \"-11b5\": \"m11(b5)\",\n  \"-9-5\": \"m9(b5)\",\n  \"-11(-5)\": \"m11(b5)\",\n  \"m11(b5#9)\": \"m11(b5#9)\",\n  \"m11b5#9\": \"m11(b5#9)\",\n  \"m11-5+9\": \"m11(b5#9)\",\n  \"m11(-5+9)\": \"m11(b5#9)\",\n  \"-11(b5#9)\": \"m11(b5#9)\",\n  \"-11b5#9\": \"m11(b5#9)\",\n  \"-11-5+9\": \"m11(b5#9)\",\n  \"-11(-5+9)\": \"m11(b5#9)\",\n  \"m11(b5b13)\": \"m11(b5b13)\",\n  \"m11b5b13\": \"m11(b5b13)\",\n  \"m11(-5-13)\": \"m11(b5b13)\",\n  \"m11-5-13\": \"m11(b5b13)\",\n  \"-11(b5b13)\": \"m11(b5b13)\",\n  \"-11b5b13\": \"m11(b5b13)\",\n  \"-11(-5-13)\": \"m11(b5b13)\",\n  \"-11-5-13\": \"m11(b5b13)\",\n  \"m11(b5b9)\": \"m11(b5b9)\",\n  \"m11b5b9\": \"m11(b5b9)\",\n  \"m11-5-9\": \"m11(b5b9)\",\n  \"m11(-5-9)\": \"m11(b5b9)\",\n  \"-11(b5b9)\": \"m11(b5b9)\",\n  \"-11b5b9\": \"m11(b5b9)\",\n  \"-11-5-9\": \"m11(b5b9)\",\n  \"-11(-5-9)\": \"m11(b5b9)\",\n  \"m11(b9)\": \"m11(b9)\",\n  \"m11b9\": \"m11(b9)\",\n  \"m11(-9)\": \"m11(b9)\",\n  \"m11-9\": \"m11(b9)\",\n  \"-11(b9)\": \"m11(b9)\",\n  \"-11b9\": \"m11(b9)\",\n  \"-11(-9)\": \"m11(b9)\",\n  \"-11-9\": \"m11(b9)\",\n  \"m11(b9#5)\": \"m11(b9#5)\",\n  \"m11(#5b9)\": \"m11(b9#5)\",\n  \"m11#5b9\": \"m11(b9#5)\",\n  \"m11+5-9\": \"m11(b9#5)\",\n  \"m11(+5-9)\": \"m11(b9#5)\",\n  \"-11(#5b9)\": \"m11(b9#5)\",\n  \"-11#5b9\": \"m11(b9#5)\",\n  \"m9+5-9\": \"m11(b9#5)\",\n  \"-11(+5-9)\": \"m11(b9#5)\",\n  \"m11(b9b13)\": \"m11(b9b13)\",\n  \"m11b9b13\": \"m11(b9b13)\",\n  \"m11(-9-13)\": \"m11(b9b13)\",\n  \"m11-9-13\": \"m11(b9b13)\",\n  \"-11(b9b13)\": \"m11(b9b13)\",\n  \"-11b9b13\": \"m11(b9b13)\",\n  \"-11(-9-13)\": \"m11(b9b13)\",\n  \"-11-9-13\": \"m11(b9b13)\",\n  \"m13\": \"m13\",\n  \"mi13\": \"m13\",\n  \"min13\": \"m13\",\n  \"-13\": \"m13\",\n  \"m13(#11)\": \"m13(#11)\",\n  \"m13#11\": \"m13(#11)\",\n  \"m13+11\": \"m13(#11)\",\n  \"m13(+11)\": \"m13(#11)\",\n  \"-13(#11)\": \"m13(#11)\",\n  \"-13#11\": \"m13(#11)\",\n  \"-13+11\": \"m13(#11)\",\n  \"-13(+11)\": \"m13(#11)\",\n  \"m13(#5)\": \"m13(#5)\",\n  \"m13#5\": \"m13(#5)\",\n  \"m13+5\": \"m13(#5)\",\n  \"m13(+5)\": \"m13(#5)\",\n  \"-13(#5)\": \"m13(#5)\",\n  \"-13#5\": \"m13(#5)\",\n  \"-13(+5)\": \"m13(#5)\",\n  \"m13(#9)\": \"m13(#9)\",\n  \"m13#9\": \"m13(#9)\",\n  \"m13(+9)\": \"m13(#9)\",\n  \"m13+9\": \"m13(#9)\",\n  \"-13(#9)\": \"m13(#9)\",\n  \"-13#9\": \"m13(#9)\",\n  \"-13(+9)\": \"m13(#9)\",\n  \"-13+9\": \"m13(#9)\",\n  \"m13(b5)\": \"m13(b5)\",\n  \"m13b5\": \"m13(b5)\",\n  \"m13-5\": \"m13(b5)\",\n  \"m13(-5)\": \"m13(b5)\",\n  \"-13(b5)\": \"m13(b5)\",\n  \"-13b5\": \"m13(b5)\",\n  \"-13-5\": \"m13(b5)\",\n  \"-13(-5)\": \"m13(b5)\",\n  \"m13(b9)\": \"m13(b9)\",\n  \"m13b9\": \"m13(b9)\",\n  \"m13-9\": \"m13(b9)\",\n  \"m13(-9)\": \"m13(b9)\",\n  \"-13(b13)\": \"m13(b9)\",\n  \"-13b13\": \"m13(b9)\",\n  \"-13-13\": \"m13(b9)\",\n  \"-13(-13)\": \"m13(b9)\",\n  \"m2\": \"m2\",\n  \"mi2\": \"m2\",\n  \"min2\": \"m2\",\n  \"m(add2)\": \"m2\",\n  \"madd2\": \"m2\",\n  \"m4\": \"m4\",\n  \"m6\": \"m6\",\n  \"mi6\": \"m6\",\n  \"min6\": \"m6\",\n  \"-6\": \"m6\",\n  \"m6(#5)\": \"m6(#5)\",\n  \"m6(9)\": \"m6(9)\",\n  \"m6add9\": \"m6(9)\",\n  \"m6(add9)\": \"m6(9)\",\n  \"m69\": \"m6(9)\",\n  \"m6(ma7)\": \"m6(ma7)\",\n  \"m6(M7)\": \"m6(ma7)\",\n  \"m6(+7)\": \"m6(ma7)\",\n  \"m6M7\": \"m6(ma7)\",\n  \"m6+7\": \"m6(ma7)\",\n  \"m7\": \"m7\",\n  \"mi7\": \"m7\",\n  \"min7\": \"m7\",\n  \"-7\": \"m7\",\n  \"m7(#11)\": \"m7(#11)\",\n  \"m7#11\": \"m7(#11)\",\n  \"m7+11\": \"m7(#11)\",\n  \"m7(+11)\": \"m7(#11)\",\n  \"-7(#11)\": \"m7(#11)\",\n  \"-7#11\": \"m7(#11)\",\n  \"-7+11\": \"m7(#11)\",\n  \"-7(+11)\": \"m7(#11)\",\n  \"m7(#5)\": \"m7(#5)\",\n  \"m7#5\": \"m7(#5)\",\n  \"m7+5\": \"m7(#5)\",\n  \"m7(+5)\": \"m7(#5)\",\n  \"-7(#5)\": \"m7(#5)\",\n  \"-7#5\": \"m7(#5)\",\n  \"-7(+5)\": \"m7(#5)\",\n  \"m7(#9)\": \"m7(#9)\",\n  \"m7#9\": \"m7(#9)\",\n  \"m7+9\": \"m7(#9)\",\n  \"m7(+9)\": \"m7(#9)\",\n  \"-7(#9)\": \"m7(#9)\",\n  \"-7#9\": \"m7(#9)\",\n  \"-7(+9)\": \"m7(#9)\",\n  \"m7(11)\": \"m7(11)\",\n  \"m7(4)\": \"m7(4)\",\n  \"m7(add4)\": \"m7(4)\",\n  \"m7(add11)\": \"m7(4)\",\n  \"m74\": \"m7(4)\",\n  \"m7(6)\": \"m7(6)\",\n  \"m7(add6)\": \"m7(add6)\",\n  \"m7(b13)\": \"m7(b13)\",\n  \"m7b13\": \"m7(b13)\",\n  \"m7-13\": \"m7(b13)\",\n  \"m7(-13)\": \"m7(b13)\",\n  \"-7(b13)\": \"m7(b13)\",\n  \"-7b13\": \"m7(b13)\",\n  \"-7-13\": \"m7(b13)\",\n  \"-7(-13)\": \"m7(b13)\",\n  \"m7(b5)\": \"m7(b5)\",\n  \"m7b5\": \"m7(b5)\",\n  \"m7-5\": \"m7(b5)\",\n  \"m7(-5)\": \"m7(b5)\",\n  \"-7(b5)\": \"m7(b5)\",\n  \"-7b5\": \"m7(b5)\",\n  \"-7(-5)\": \"m7(b5)\",\n  \"m7(b9)\": \"m7(b9)\",\n  \"m7b9\": \"m7(b9)\",\n  \"m7-9\": \"m7(b9)\",\n  \"m7(-9)\": \"m7(b9)\",\n  \"-7(b9)\": \"m7(b9)\",\n  \"-7b9\": \"m7(b9)\",\n  \"-7(-9)\": \"m7(b9)\",\n  \"m7(no3)\": \"m7(no3)\",\n  \"min7(no3)\": \"m7(no3)\",\n  \"m7sus4\": \"m7sus4\",\n  \"m7sus\": \"m7sus4\",\n  \"m9\": \"m9\",\n  \"mi9\": \"m9\",\n  \"min9\": \"m9\",\n  \"-9\": \"m9\",\n  \"m9(#11)\": \"m9(#11)\",\n  \"m9#11\": \"m9(#11)\",\n  \"m9+11\": \"m9(#11)\",\n  \"m9(+11)\": \"m9(#11)\",\n  \"-9(#11)\": \"m9(#11)\",\n  \"-9#11\": \"m9(#11)\",\n  \"-9+11\": \"m9(#11)\",\n  \"-9(+11)\": \"m9(#11)\",\n  \"m9(#5)\": \"m9(#5)\",\n  \"m9#5\": \"m9(#5)\",\n  \"m9(+5)\": \"m9(#5)\",\n  \"-9(#5)\": \"m9(#5)\",\n  \"-9#5\": \"m9(#5)\",\n  \"-9(+5)\": \"m9(#5)\",\n  \"m9(#7)\": \"m9(#7)\",\n  \"m9(b13)\": \"m9(b13)\",\n  \"m9b13\": \"m9(b13)\",\n  \"m9-13\": \"m9(b13)\",\n  \"m9(-13)\": \"m9(b13)\",\n  \"-9(b13)\": \"m9(b13)\",\n  \"-9b13\": \"m9(b13)\",\n  \"-9-13\": \"m9(b13)\",\n  \"-9(-13)\": \"m9(b13)\",\n  \"m9(b5)\": \"m9(b5)\",\n  \"m9b5\": \"m9(b5)\",\n  \"m9-5\": \"m9(b5)\",\n  \"m9(-5)\": \"m9(b5)\",\n  \"-9(b5)\": \"m9(b5)\",\n  \"-9b5\": \"m9(b5)\",\n  \"-9(-5)\": \"m9(b5)\",\n  \"m9(ma7)\": \"m9(ma7)\",\n  \"m9(maj7)\": \"m9(ma7)\",\n  \"m9(+7)\": \"m9(ma7)\",\n  \"m9(M7)\": \"m9(ma7)\",\n  \"m9M7\": \"m9(ma7)\",\n  \"ma9\": \"ma9\",\n  \"maj9\": \"ma9\",\n  \"maj9b11\": \"maj9b11\",\n  \"ma11\": \"ma11\",\n  \"11(#7)\": \"ma11\",\n  \"11#7\": \"ma11\",\n  \"11+7\": \"ma11\",\n  \"11(+7)\": \"ma11\",\n  \"+11\": \"ma11\",\n  \"M11\": \"ma11\",\n  \"ma11(#5)\": \"ma11(#5)\",\n  \"maj11#5\": \"ma11(#5)\",\n  \"maj11+5\": \"ma11(#5)\",\n  \"maj11(+5)\": \"ma11(#5)\",\n  \"+11(#5)\": \"ma11(#5)\",\n  \"+11#5\": \"ma11(#5)\",\n  \"M11+5\": \"ma11(#5)\",\n  \"+11(+5)\": \"ma11(#5)\",\n  \"maj11(#5)\": \"ma11(#5)\",\n  \"ma11#5\": \"ma11(#5)\",\n  \"ma11+5\": \"ma11(#5)\",\n  \"ma11(+5)\": \"ma11(#5)\",\n  \"ma11(#9)\": \"ma11(#9)\",\n  \"maj11#9\": \"ma11(#9)\",\n  \"maj11+9\": \"ma11(#9)\",\n  \"maj11(+9)\": \"ma11(#9)\",\n  \"+11(#9)\": \"ma11(#9)\",\n  \"+11#9\": \"ma11(#9)\",\n  \"M11+9\": \"ma11(#9)\",\n  \"+11(+9)\": \"ma11(#9)\",\n  \"maj11(#9)\": \"ma11(#9)\",\n  \"ma11#9\": \"ma11(#9)\",\n  \"ma11+9\": \"ma11(#9)\",\n  \"ma11(+9)\": \"ma11(#9)\",\n  \"ma11(b13)\": \"ma11(b13)\",\n  \"maj11b13\": \"ma11(b13)\",\n  \"maj11-13\": \"ma11(b13)\",\n  \"maj11(-13)\": \"ma11(b13)\",\n  \"+11(b13)\": \"ma11(b13)\",\n  \"+11b13\": \"ma11(b13)\",\n  \"M11-13\": \"ma11(b13)\",\n  \"+11(-13)\": \"ma11(b13)\",\n  \"maj11(b13)\": \"ma11(b13)\",\n  \"ma11b13\": \"ma11(b13)\",\n  \"ma11-13\": \"ma11(b13)\",\n  \"ma11(-13)\": \"ma11(b13)\",\n  \"ma11(b5)\": \"ma11(b5)\",\n  \"maj11b5\": \"ma11(b5)\",\n  \"maj11-5\": \"ma11(b5)\",\n  \"maj11(-5)\": \"ma11(b5)\",\n  \"+11(b5)\": \"ma11(b5)\",\n  \"+11b5\": \"ma11(b5)\",\n  \"M11-5\": \"ma11(b5)\",\n  \"+11(-5)\": \"ma11(b5)\",\n  \"maj11(b5)\": \"ma11(b5)\",\n  \"ma11b5\": \"ma11(b5)\",\n  \"ma11-5\": \"ma11(b5)\",\n  \"ma11(-5)\": \"ma11(b5)\",\n  \"ma11(b9)\": \"ma11(b9)\",\n  \"maj11b9\": \"ma11(b9)\",\n  \"maj11(-9)\": \"ma11(b9)\",\n  \"maj11-9\": \"ma11(b9)\",\n  \"+11(b9)\": \"ma11(b9)\",\n  \"+11b9\": \"ma11(b9)\",\n  \"M11(-9)\": \"ma11(b9)\",\n  \"+11-9\": \"ma11(b9)\",\n  \"maj11(b9)\": \"ma11(b9)\",\n  \"ma11b9\": \"ma11(b9)\",\n  \"ma11(-9)\": \"ma11(b9)\",\n  \"ma11-9\": \"ma11(b9)\",\n  \"ma13\": \"ma13\",\n  \"13(#7)\": \"ma13\",\n  \"+13\": \"ma13\",\n  \"M13\": \"ma13\",\n  \"maj13\": \"ma13\",\n  \"Maj13\": \"ma13\",\n  \"ma13(#11)\": \"ma13(#11)\",\n  \"maj13#11\": \"ma13(#11)\",\n  \"maj13+11\": \"ma13(#11)\",\n  \"maj13(+11)\": \"ma13(#11)\",\n  \"+13(#11)\": \"ma13(#11)\",\n  \"+13#11\": \"ma13(#11)\",\n  \"M13+11\": \"ma13(#11)\",\n  \"+13(+11)\": \"ma13(#11)\",\n  \"maj13(#11)\": \"ma13(#11)\",\n  \"ma7#11\": \"ma9(#11)\",\n  \"ma13+11\": \"ma13(#11)\",\n  \"ma13(+11)\": \"ma13(#11)\",\n  \"ma13(#11#5)\": \"ma13(#11#5)\",\n  \"maj13#11#5\": \"ma13(#11#5)\",\n  \"maj13+11+5\": \"ma13(#11#5)\",\n  \"maj13(+11+5)\": \"ma13(#11#5)\",\n  \"+13(#11#5)\": \"ma13(#11#5)\",\n  \"+13#11#5\": \"ma13(#11#5)\",\n  \"M13+11+5\": \"ma13(#11#5)\",\n  \"+13(+11+5)\": \"ma13(#11#5)\",\n  \"maj13(#11#5)\": \"ma13(#11#5)\",\n  \"ma7#11#5\": \"ma9(#11#5)\",\n  \"ma13+11+5\": \"ma13(#11#5)\",\n  \"ma13(+11+5)\": \"ma13(#11#5)\",\n  \"ma13(#5)\": \"ma13(#5)\",\n  \"maj13#5\": \"ma13(#5)\",\n  \"maj13+5\": \"ma13(#5)\",\n  \"maj13(+5)\": \"ma13(#5)\",\n  \"+13(#5)\": \"ma13(#5)\",\n  \"+13#5\": \"ma13(#5)\",\n  \"M13+5\": \"ma13(#5)\",\n  \"+13(+5)\": \"ma13(#5)\",\n  \"maj13(#5)\": \"ma13(#5)\",\n  \"ma13#5\": \"ma13(#5)\",\n  \"ma13+5\": \"ma13(#5)\",\n  \"ma13(+5)\": \"ma13(#5)\",\n  \"ma13(#9)\": \"ma13(#9)\",\n  \"maj13#9\": \"ma13(#9)\",\n  \"maj13(+9)\": \"ma13(#9)\",\n  \"maj13+9\": \"ma13(#9)\",\n  \"+13(#9)\": \"ma13(#9)\",\n  \"+13#9\": \"ma13(#9)\",\n  \"M13(+9)\": \"ma13(#9)\",\n  \"+13+9\": \"ma13(#9)\",\n  \"maj13(#9)\": \"ma13(#9)\",\n  \"ma13#9\": \"ma13(#9)\",\n  \"ma13(+9)\": \"ma13(#9)\",\n  \"ma13+9\": \"ma13(#9)\",\n  \"ma13(#9#5)\": \"ma13(#9#5)\",\n  \"maj13#9#5\": \"ma13(#9#5)\",\n  \"maj13(+9+5)\": \"ma13(#9#5)\",\n  \"maj13+9+5\": \"ma13(#9#5)\",\n  \"+13(#9#5)\": \"ma13(#9#5)\",\n  \"+13#9#5\": \"ma13(#9#5)\",\n  \"M13(+9+5)\": \"ma13(#9#5)\",\n  \"+13+9+5\": \"ma13(#9#5)\",\n  \"maj13(#9#5)\": \"ma13(#9#5)\",\n  \"ma7#9#5\": \"ma13(#9#5)\",\n  \"ma13(+9+5)\": \"ma13(#9#5)\",\n  \"ma13+9+5\": \"ma13(#9#5)\",\n  \"ma13(b5)\": \"ma13(b5)\",\n  \"maj13b5\": \"ma13(b5)\",\n  \"maj13-5\": \"ma13(b5)\",\n  \"maj13(-5)\": \"ma13(b5)\",\n  \"+13(b5)\": \"ma13(b5)\",\n  \"+13b5\": \"ma13(b5)\",\n  \"M13-5\": \"ma13(b5)\",\n  \"+13(-5)\": \"ma13(b5)\",\n  \"maj13(b5)\": \"ma13(b5)\",\n  \"ma13b5\": \"ma13(b5)\",\n  \"ma13-5\": \"ma13(b5)\",\n  \"ma13(-5)\": \"ma13(b5)\",\n  \"ma13(b9)\": \"ma13(b9)\",\n  \"maj13b9\": \"ma13(b9)\",\n  \"maj13-9\": \"ma13(b9)\",\n  \"maj13(-9)\": \"ma13(b9)\",\n  \"+13(b9)\": \"ma13(b9)\",\n  \"+13b9\": \"ma13(b9)\",\n  \"M13-9\": \"ma13(b9)\",\n  \"+13(-9)\": \"ma13(b9)\",\n  \"maj13(b9)\": \"ma13(b9)\",\n  \"ma13b9\": \"ma13(b9)\",\n  \"ma13-9\": \"ma13(b9)\",\n  \"ma13(-9)\": \"ma13(b9)\",\n  \"ma13(b9#5)\": \"ma13(b9#5)\",\n  \"maj13b9#5\": \"ma13(b9#5)\",\n  \"maj13-9+5\": \"ma13(b9#5)\",\n  \"maj13(-9+5)\": \"ma13(b9#5)\",\n  \"+13(b9#5)\": \"ma13(b9#5)\",\n  \"+13b9#5\": \"ma13(b9#5)\",\n  \"M13-9+5\": \"ma13(b9#5)\",\n  \"+13(-9+5)\": \"ma13(b9#5)\",\n  \"maj13(b9#5)\": \"ma13(b9#5)\",\n  \"ma7b9#5\": \"ma13(b9#5)\",\n  \"ma13-9+5\": \"ma13(b9#5)\",\n  \"ma13(-9+5)\": \"ma13(b9#5)\",\n  \"ma6\": \"ma6\",\n  \"ma6(9)\": \"ma6(9)\",\n  \"ma69\": \"ma6(9)\",\n  \"ma7\": \"ma7\",\n  \"+7\": \"ma7\",\n  \"#7\": \"ma7\",\n  \"M7\": \"ma7\",\n  \"Maj7\": \"ma7\",\n  \"maj7\": \"ma7\",\n  \"(triangle)\": \"ma7\",\n  \"ma7(#11)\": \"ma7(#11)\",\n  \"maj7#11\": \"ma7(#11)\",\n  \"maj7+11\": \"ma7(#11)\",\n  \"maj7(+11)\": \"ma7(#11)\",\n  \"+7(#11)\": \"ma7(#11)\",\n  \"+7#11\": \"ma7(#11)\",\n  \"M7+11\": \"ma7(#11)\",\n  \"+7(+11)\": \"ma7(#11)\",\n  \"maj7(#11)\": \"ma7(#11)\",\n  \"ma7+11\": \"ma7(#11)\",\n  \"ma7(+11)\": \"ma7(#11)\",\n  \"ma7(#4)\": \"ma7(#4)\",\n  \"ma7(#5)\": \"ma7(#5)\",\n  \"maj7#5\": \"ma7(#5)\",\n  \"maj7+5\": \"ma7(#5)\",\n  \"maj7(+5)\": \"ma7(#5)\",\n  \"+7(#5)\": \"ma7(#5)\",\n  \"+7#5\": \"ma7(#5)\",\n  \"M7+5\": \"ma7(#5)\",\n  \"+7(+5)\": \"ma7(#5)\",\n  \"maj7(#5)\": \"ma7(#5)\",\n  \"ma7#5\": \"ma7(#5)\",\n  \"ma7+5\": \"ma7(#5)\",\n  \"ma7(+5)\": \"ma7(#5)\",\n  \"aug(M7)\": \"ma7(#5)\",\n  \"aug(+7)\": \"ma7(#5)\",\n  \"aug(ma7)\": \"ma7(#5)\",\n  \"aug(maj7)\": \"ma7(#5)\",\n  \"ma7(#9)\": \"ma7(#9)\",\n  \"maj7#9\": \"ma7(#9)\",\n  \"maj7+9\": \"ma7(#9)\",\n  \"maj7(+9)\": \"ma7(#9)\",\n  \"+7(#9)\": \"ma7(#9)\",\n  \"+7#9\": \"ma7(#9)\",\n  \"M7+9\": \"ma7(#9)\",\n  \"+7(+9)\": \"ma7(#9)\",\n  \"maj7(#9)\": \"ma7(#9)\",\n  \"ma7#9\": \"ma7(#9)\",\n  \"ma7+9\": \"ma7(#9)\",\n  \"ma7(+9)\": \"ma7(#9)\",\n  \"ma7(b13)\": \"ma7(b13)\",\n  \"maj7b13\": \"ma7(b13)\",\n  \"maj7-13\": \"ma7(b13)\",\n  \"maj7(-13)\": \"ma7(b13)\",\n  \"+7(b13)\": \"ma7(b13)\",\n  \"+7b13\": \"ma7(b13)\",\n  \"M7-13\": \"ma7(b13)\",\n  \"+7(-13)\": \"ma7(b13)\",\n  \"maj7(b13)\": \"ma7(b13)\",\n  \"ma7b13\": \"ma9(b13)\",\n  \"ma7-13\": \"ma7(b13)\",\n  \"ma7(-13)\": \"ma7(b13)\",\n  \"ma7(b5)\": \"ma7(b5)\",\n  \"maj7b5\": \"ma7(b5)\",\n  \"maj7-5\": \"ma7(b5)\",\n  \"maj7(-5)\": \"ma7(b5)\",\n  \"+7(b5)\": \"ma7(b5)\",\n  \"+7b5\": \"ma7(b5)\",\n  \"M7-5\": \"ma7(b5)\",\n  \"+7(-5)\": \"ma7(b5)\",\n  \"maj7(b5)\": \"ma7(b5)\",\n  \"ma7b5\": \"ma7(b5)\",\n  \"ma7-5\": \"ma7(b5)\",\n  \"ma7(-5)\": \"ma7(b5)\",\n  \"ma7(b9)\": \"ma7(b9)\",\n  \"maj7b9\": \"ma7(b9)\",\n  \"maj7-9\": \"ma7(b9)\",\n  \"maj7(-9)\": \"ma7(b9)\",\n  \"+7(b9)\": \"ma7(b9)\",\n  \"+7b9\": \"ma7(b9)\",\n  \"M7-9\": \"ma7(b9)\",\n  \"+7(-9)\": \"ma7(b9)\",\n  \"maj7(b9)\": \"ma7(b9)\",\n  \"ma7b9\": \"ma7(b9)\",\n  \"ma7-9\": \"ma7(b9)\",\n  \"ma7(-9)\": \"ma7(b9)\",\n  \"ma7(no3)\": \"ma7(no3)\",\n  \"9(#7)\": \"ma9\",\n  \"+9\": \"ma9\",\n  \"M9\": \"ma9\",\n  \"ma9(#11)\": \"ma9(#11)\",\n  \"maj9#11\": \"ma9(#11)\",\n  \"maj9+11\": \"ma9(#11)\",\n  \"maj9(+11)\": \"ma9(#11)\",\n  \"+9(#11)\": \"ma9(#11)\",\n  \"+9#11\": \"ma9(#11)\",\n  \"M9+11\": \"ma9(#11)\",\n  \"+9(+11)\": \"ma9(#11)\",\n  \"maj9(#11)\": \"ma9(#11)\",\n  \"ma9+11\": \"ma9(#11)\",\n  \"ma9(+11)\": \"ma9(#11)\",\n  \"ma9(#11#5)\": \"ma9(#11#5)\",\n  \"maj9#11#5\": \"ma9(#11#5)\",\n  \"maj9+11+5\": \"ma9(#11#5)\",\n  \"maj9(+11+5)\": \"ma9(#11#5)\",\n  \"+9(#11#5)\": \"ma9(#11#5)\",\n  \"+9#11#5\": \"ma9(#11#5)\",\n  \"M9+11+5\": \"ma9(#11#5)\",\n  \"+9(+11+5)\": \"ma9(#11#5)\",\n  \"maj9(#11#5)\": \"ma9(#11#5)\",\n  \"ma9+11+5\": \"ma9(#11#5)\",\n  \"ma9(+11+5)\": \"ma9(#11#5)\",\n  \"ma9(#4)\": \"ma9(#4)\",\n  \"ma9(#5)\": \"ma9(#5)\",\n  \"maj9#5\": \"ma9(#5)\",\n  \"maj9+5\": \"ma9(#5)\",\n  \"maj9(+5)\": \"ma9(#5)\",\n  \"+9(#5)\": \"ma9(#5)\",\n  \"+9#5\": \"ma9(#5)\",\n  \"M9+5\": \"ma9(#5)\",\n  \"+9(+5)\": \"ma9(#5)\",\n  \"maj9(#5)\": \"ma9(#5)\",\n  \"ma9#5\": \"ma9(#5)\",\n  \"ma9+5\": \"ma9(#5)\",\n  \"ma9(+5)\": \"ma9(#5)\",\n  \"ma9(13)\": \"ma9(13)\",\n  \"ma9(b13)\": \"ma9(b13)\",\n  \"maj9b13\": \"ma9(b13)\",\n  \"maj9-13\": \"ma9(b13)\",\n  \"maj9(-13)\": \"ma9(b13)\",\n  \"+9(b13)\": \"ma9(b13)\",\n  \"+9b13\": \"ma9(b13)\",\n  \"M9-13\": \"ma9(b13)\",\n  \"+9(-13)\": \"ma9(b13)\",\n  \"maj9(b13)\": \"ma9(b13)\",\n  \"ma9-13\": \"ma9(b13)\",\n  \"ma9(-13)\": \"ma9(b13)\",\n  \"ma9(b13#5)\": \"ma9(b13#5)\",\n  \"maj9b13#5\": \"ma9(b13#5)\",\n  \"maj9-13+5\": \"ma9(b13#5)\",\n  \"maj9(-13+5)\": \"ma9(b13#5)\",\n  \"+9(b13#5)\": \"ma9(b13#5)\",\n  \"+9b13#5\": \"ma9(b13#5)\",\n  \"M9-13+5\": \"ma9(b13#5)\",\n  \"+9(-13+5)\": \"ma9(b13#5)\",\n  \"maj9(b13#5)\": \"ma9(b13#5)\",\n  \"ma7b13#5\": \"ma9(b13#5)\",\n  \"ma9-13+5\": \"ma9(b13#5)\",\n  \"ma9(-13+5)\": \"ma9(b13#5)\",\n  \"ma9(b5)\": \"ma9(b5)\",\n  \"maj9b5\": \"ma9(b5)\",\n  \"maj9-5\": \"ma9(b5)\",\n  \"maj9(-5)\": \"ma9(b5)\",\n  \"+9(b5)\": \"ma9(b5)\",\n  \"+9b5\": \"ma9(b5)\",\n  \"M9-5\": \"ma9(b5)\",\n  \"+9(-5)\": \"ma9(b5)\",\n  \"maj9(b5)\": \"ma9(b5)\",\n  \"ma9b5\": \"ma9(b5)\",\n  \"ma9-5\": \"ma9(b5)\",\n  \"ma9(-5)\": \"ma9(b5)\",\n  \"sus\": \"sus\",\n  \"sus4\": \"sus\",\n  \"sus(no5)\": \"sus(no5)\",\n  \"sus#42\": \"sus#42\",\n  \"\": \"\"\n};\n\nexport default mapping;","import ChordLyricsPair from './chord_sheet/chord_lyrics_pair';\nimport Item from './chord_sheet/item';\nimport Line from './chord_sheet/line';\nimport SUFFIX_MAPPING from './normalize_mappings/suffix-normalize-mapping';\n\nimport { GRADE_TO_KEY } from './scales';\n\nimport {\n  Accidental, AccidentalMaybe, ChordType, MAJOR, MINOR, NO_ACCIDENTAL, NUMERAL, SHARP,\n} from './constants';\n\nexport function callChain<T>(value: T, functions: ((_value: T) => T)[]): T {\n  return functions.reduce((acc, fn) => fn(acc), value);\n}\n\nexport function hasChordContents(line: Line): boolean {\n  return line.items.some((item) => (item instanceof ChordLyricsPair) && !!item.chords);\n}\n\nexport function hasRemarkContents(line: Line): boolean {\n  return line.items.some((item) => (item instanceof ChordLyricsPair) && (item.chords || item.annotation));\n}\n\nexport function isEvaluatable(item: Item): boolean {\n  return ('evaluate' in item) && (typeof item.evaluate === 'function');\n}\n\nexport function padLeft(string: string, length: number): string {\n  let paddedString = string;\n  for (let l = string.length; l < length; l += 1, paddedString += ' ');\n  return paddedString;\n}\n\ntype ObjectWithLength = any[] | string | null;\n\nexport function isPresent(object: ObjectWithLength): boolean {\n  return !!object && object.length > 0;\n}\n\nfunction dasherize(string: string): string {\n  return string.replace(/[A-Z]/g, (match) => `-${match.toLowerCase()}`);\n}\n\nfunction scopeSelector(selector: string, scope: string): string {\n  return selector\n    .split(',')\n    .map((s) => `${scope} ${s.trim()}`.trim())\n    .join(',\\n');\n}\n\ntype CssObject = Record<string, Record<string, string>>;\n\nexport function scopeCss(css: CssObject, scope = ''): string {\n  return Object\n    .entries(css)\n    .map(([selector, styles]) => {\n      const rules = Object\n        .entries(styles)\n        .map(([property, value]) => `${dasherize(property)}: ${value};`)\n        .join('\\n  ');\n\n      const scopedSelector = scopeSelector(selector, scope);\n\n      return `\n${scopedSelector} {\n  ${rules}\n}`.substring(1);\n    })\n    .join('\\n\\n');\n}\n\nexport function warn(message: string): void {\n  const proc = globalThis.process;\n  if (typeof proc === 'object' && typeof proc.emitWarning === 'function') {\n    proc.emitWarning(message);\n  } else {\n    // eslint-disable-next-line no-console\n    console.warn(message);\n  }\n}\n\nexport function deprecate(message: string): void {\n  try {\n    throw new Error(`DEPRECATION: ${message}`);\n  } catch (e) {\n    const error = (e as Error);\n    warn(`${message}\\n${error.stack}`);\n  }\n}\n\nexport function isEmptyString(string: string | null | undefined): boolean {\n  return (string === null || string === undefined || string === '');\n}\n\nexport function isMinor(key: string | number, keyType: ChordType, suffix: any): boolean {\n  switch (keyType) {\n    case NUMERAL:\n      return typeof key === 'string' && key.toLowerCase() === key;\n    default:\n      return typeof suffix === 'string' &&\n        suffix[0] === 'm' &&\n        suffix.substring(0, 2).toLowerCase() !== 'ma' &&\n        suffix.substring(0, 3).toLowerCase() !== 'maj';\n  }\n}\n\nexport function normalizeLineEndings(string: string): string {\n  return string.replace(/\\r\\n?/g, '\\n');\n}\n\nclass GradeSet {\n  grades: Record<AccidentalMaybe, Record<number, string>>;\n\n  constructor(grades: Record<AccidentalMaybe, Record<number, string>>) {\n    this.grades = grades;\n  }\n\n  determineGrade(accidental: AccidentalMaybe | null, preferredAccidental: Accidental | null, grade: number) {\n    return this.getGradeForAccidental(accidental, grade) ||\n      this.getGradeForAccidental(NO_ACCIDENTAL, grade) ||\n      this.getGradeForAccidental(preferredAccidental, grade) ||\n      this.getGradeForAccidental(SHARP, grade);\n  }\n\n  getGradeForAccidental(accidental: AccidentalMaybe | null, grade: number) {\n    if (accidental) {\n      return this.grades[accidental][grade];\n    }\n\n    return null;\n  }\n}\n\nfunction determineKey({\n  type,\n  accidental,\n  preferredAccidental,\n  grade,\n  minor,\n}: {\n  type: ChordType,\n  accidental: AccidentalMaybe | null,\n  preferredAccidental: Accidental | null,\n  grade: number,\n  minor: boolean,\n}) {\n  const mode = (minor ? MINOR : MAJOR);\n  const grades = GRADE_TO_KEY[type][mode];\n  return new GradeSet(grades).determineGrade(accidental, preferredAccidental, grade);\n}\n\nexport function gradeToKey(options: {\n  type: ChordType,\n  accidental: AccidentalMaybe | null,\n  preferredAccidental: Accidental | null,\n  grade: number,\n  minor: boolean,\n}): string {\n  const {\n    type,\n    accidental,\n    preferredAccidental,\n    grade,\n    minor,\n  } = options;\n\n  let key = determineKey({\n    type, accidental, preferredAccidental, grade, minor,\n  });\n\n  if (!key) {\n    throw new Error(`Could not resolve ${options} to a key`);\n  }\n\n  if (minor && type === NUMERAL) {\n    key = key.toLowerCase();\n  }\n\n  return key;\n}\n\nexport function normalizeChordSuffix(suffix: string | null): string | null {\n  if (suffix === null) {\n    return null;\n  }\n\n  if (SUFFIX_MAPPING[suffix] === '[blank]') {\n    return null;\n  }\n\n  return SUFFIX_MAPPING[suffix] || suffix;\n}\n\nlet mergeConfigs: <T>(target: T, source: any) => T;\n\nfunction mergeObjects<T>(target: T, source: any) {\n  const result: any = { ...target };\n\n  // Merge all keys from source\n  Object.keys(source).forEach((key) => {\n    const targetValue = (target as any)[key];\n    const sourceValue = source[key];\n\n    // If both values are objects and not arrays, recursively merge them\n    if (\n      targetValue && typeof targetValue === 'object' && !Array.isArray(targetValue) &&\n      sourceValue && typeof sourceValue === 'object' && !Array.isArray(sourceValue)\n    ) {\n      result[key] = mergeConfigs(targetValue, sourceValue);\n    } else {\n      // Otherwise, use the source value (includes array replacement)\n      result[key] = sourceValue;\n    }\n  });\n\n  return result;\n}\n\n/**\n * Deep merges two configuration objects with special handling for arrays\n *\n * This function performs a deep merge of configuration objects with the following behavior:\n * - Objects are deep merged recursively\n * - Arrays from source completely replace arrays in target (no concatenation)\n * - Primitive values from source replace values in target\n * - Handles null/undefined cases appropriately\n *\n * This is specifically designed for chordsheet configuration merging where\n * certain array properties (like layout.header.content) should not be merged\n * but replaced entirely when overridden.\n *\n * @param target The target configuration object to merge into\n * @param source The source configuration object with overrides\n * @returns A new object with merged configuration\n */\nmergeConfigs = <T>(target: T, source: any): T => {\n  // Handle null/undefined cases\n  if (source === null || source === undefined) {\n    return target as T;\n  }\n  if (target === null || target === undefined) {\n    return source as T;\n  }\n\n  // Handle primitive types or different types\n  if (typeof target !== 'object' || typeof source !== 'object') {\n    return source as T;\n  }\n\n  // Handle arrays - replace target array with source array (no merging)\n  if (Array.isArray(source)) {\n    return source as unknown as T;\n  }\n\n  // For objects, create a new object to avoid mutating the originals\n  return mergeObjects(target, source);\n};\n\nexport { mergeConfigs };\n\n/**\n * Utility type that creates a deep partial type\n * This makes all properties optional recursively through the entire object\n */\nexport type DeepPartial<T> = T extends object ? {\n  [P in keyof T]?: DeepPartial<T[P]>;\n} : T;\nexport function filterObject<T>(\n  object: Record<string, T>,\n  predicate: (key: string, value: T) => boolean,\n): Record<string, T> {\n  return Object.fromEntries(\n    Object.entries(object).filter(([key, value]) => predicate(key, value)),\n  );\n}\n","import ENHARMONIC_MAPPING from './normalize_mappings/enharmonic-normalize';\n\nimport {\n  Accidental,\n  AccidentalMaybe,\n  ChordType,\n  FLAT,\n  MAJOR,\n  MINOR,\n  NO_ACCIDENTAL,\n  NUMERAL,\n  NUMERIC,\n  ROMAN_NUMERALS,\n  SHARP,\n  SOLFEGE,\n  SYMBOL,\n} from './constants';\n\nimport { KEY_TO_GRADE } from './scales';\nimport { deprecate, gradeToKey } from './utilities';\n\nconst regexes: Record<ChordType, RegExp> = {\n  symbol: /^(?<key>((?<note>[A-Ga-g])(?<accidental>#|b)?))(?<minor>m)?$/,\n  solfege: /^(?<key>((?<note>Do|Re|Mi|Fa|Sol|La|Si|do|re|mi|fa|sol|la|si)(?<accidental>#|b)?))(?<minor>m)?$/,\n  numeric: /^(?<key>(?<accidental>#|b)?(?<note>[1-7]))(?<minor>m)?$/,\n  numeral: /^(?<key>(?<accidental>#|b)?(?<note>I{1,3}|IV|VI{0,2}|i{1,3}|iv|vi{0,2}))$/,\n};\n\ninterface KeyProperties {\n  grade?: number | null;\n  number?: number | null;\n  type?: ChordType;\n  minor?: boolean;\n  accidental?: Accidental | null;\n  referenceKeyGrade?: number | null;\n  referenceKeyMode?: string | null;\n  preferredAccidental?: Accidental | null;\n  explicitAccidental?: boolean;\n}\n\nconst KEY_TYPES: ChordType[] = [SYMBOL, SOLFEGE, NUMERIC, NUMERAL];\nconst NATURAL_MINORS = [1, 2, 3, 4, 5, 8, 9, 10];\nconst NO_FLAT_GRADES = [4, 11];\nconst NO_FLAT_NUMBERS = [1, 4];\nconst NO_SHARP_GRADES = [5, 0];\nconst NO_SHARP_NUMBERS = [3, 7];\nconst PREFERS_FLAT_NUMBERS = [2, 3, 10];\n\ninterface ConstructorOptions {\n  grade?: number | null;\n  number?: number | null;\n  minor: boolean;\n  type: ChordType;\n  accidental: Accidental | null;\n  referenceKeyGrade?: number | null;\n  referenceKeyMode?: string | null;\n  originalKeyString?: string | null;\n  preferredAccidental: Accidental | null;\n  explicitAccidental?: boolean;\n}\n\n/**\n * Represents a key, such as Eb (symbol), #3 (numeric) or VII (numeral).\n *\n * The only function considered public API is `Key.distance`\n */\nclass Key implements KeyProperties {\n  grade: number | null;\n\n  number: number | null = null;\n\n  accidental: Accidental | null;\n\n  type: ChordType;\n\n  get unicodeAccidental(): string | null {\n    switch (this.accidental) {\n      case FLAT:\n        return '\\u266d';\n      case SHARP:\n        return '\\u266f';\n      default:\n        return null;\n    }\n  }\n\n  /** @deprecated Use unicodeAccidental instead */\n  get unicodeModifier(): string | null {\n    deprecate('unicodeModifier is deprecated, use unicodeAccidental instead');\n    return this.unicodeAccidental;\n  }\n\n  /** @deprecated Use accidental instead */\n  get modifier(): Accidental | null {\n    deprecate('modifier is deprecated, use accidental instead');\n    return this.accidental;\n  }\n\n  /** @deprecated Use preferredAccidental instead */\n  get preferredModifier(): Accidental | null {\n    deprecate('preferredModifier is deprecated, use preferredAccidental instead');\n    return this.preferredAccidental;\n  }\n\n  minor = false;\n\n  referenceKeyGrade: number | null = null;\n\n  referenceKeyMode: string | null = null;\n\n  originalKeyString: string | null = null;\n\n  preferredAccidental: Accidental | null;\n\n  explicitAccidental = false;\n\n  static parse(keyString: string | null): null | Key {\n    if (!keyString) return null;\n\n    const trimmed = keyString.trim();\n    if (!trimmed) return null;\n\n    for (let i = 0, count = KEY_TYPES.length; i < count; i += 1) {\n      const resolvedKey = this.parseAsType(trimmed, KEY_TYPES[i]);\n\n      if (resolvedKey) return resolvedKey;\n    }\n\n    return null;\n  }\n\n  static parseAsType(trimmed: string, keyType: ChordType) {\n    const match = trimmed.match(regexes[keyType]);\n\n    if (!match) return null;\n\n    const { minor, note, accidental } = match.groups as { minor?: string, note: string, accidental?: Accidental };\n\n    return this.resolve({\n      key: note,\n      keyType,\n      minor: minor || false,\n      accidental: accidental || null,\n    });\n  }\n\n  /* eslint-disable-next-line max-lines-per-function */\n  static resolve(\n    {\n      key,\n      keyType,\n      minor,\n      accidental,\n    }: {\n      key: string | number,\n      keyType: ChordType,\n      minor: string | boolean,\n      accidental: Accidental | null,\n    },\n  ): Key | null {\n    const keyString = `${key}`;\n    const isMinor = this.isMinor(keyString, keyType, minor);\n\n    if (keyType === SYMBOL || keyType === SOLFEGE) {\n      const grade = this.toGrade(keyString, accidental || NO_ACCIDENTAL, keyType, isMinor);\n\n      if (grade !== null) {\n        return new Key({\n          grade: 0,\n          minor: isMinor,\n          type: keyType,\n          accidental: accidental || null,\n          preferredAccidental: accidental || null,\n          referenceKeyGrade: grade,\n          originalKeyString: keyString,\n        });\n      }\n    }\n\n    const number = this.getNumberFromKey(keyString, keyType);\n\n    return new Key({\n      number,\n      minor: isMinor,\n      type: keyType,\n      accidental: accidental || null,\n      preferredAccidental: accidental || null,\n      originalKeyString: keyString,\n    });\n  }\n\n  static getNumberFromKey(keyString: string, keyType: ChordType) {\n    if (keyType === NUMERIC) {\n      return parseInt(keyString, 10);\n    }\n\n    const uppercaseKey = keyString.toUpperCase();\n    return ROMAN_NUMERALS.findIndex((numeral) => uppercaseKey === numeral) + 1;\n  }\n\n  static keyWithAccidental(key: string, accidental: Accidental | null, type: ChordType): string {\n    const normalizedKey = key.toUpperCase();\n    const accidentalString = accidental || '';\n\n    if (type === SOLFEGE) {\n      return `${key.charAt(0).toUpperCase() + key.slice(1).toLowerCase()}${accidentalString}`;\n    }\n\n    if (type === SYMBOL) {\n      return `${normalizedKey}${accidentalString}`;\n    }\n\n    return `${accidentalString}${normalizedKey}`;\n  }\n\n  /** @deprecated Use keyWithAccidental instead */\n  static keyWithModifier(key: string, accidental: Accidental | null, type: ChordType): string {\n    deprecate('keyWithModifier is deprecated, use keyWithAccidental instead');\n    return this.keyWithAccidental(key, accidental, type);\n  }\n\n  static toGrade(key: string, accidental: AccidentalMaybe, type: ChordType, isMinor: boolean): number | null {\n    const mode = (isMinor ? MINOR : MAJOR);\n    const grades = KEY_TO_GRADE[type][mode][accidental];\n\n    if (key in grades) {\n      return grades[key];\n    }\n\n    const upperCaseKey = key.toUpperCase();\n\n    if (upperCaseKey in grades) {\n      return grades[upperCaseKey];\n    }\n\n    return null;\n  }\n\n  static isMinor(key: string, keyType: ChordType, minor: string | undefined | boolean) {\n    switch (keyType) {\n      case 'numeral':\n        return key.toLowerCase() === key;\n      default:\n        switch (typeof minor) {\n          case 'string':\n            return minor === 'm' || minor.toLowerCase() === 'min';\n          case 'boolean':\n            return minor;\n          default:\n            return false;\n        }\n    }\n  }\n\n  static parseOrFail(keyString: string | null): Key {\n    const parsed = this.parse(keyString);\n\n    if (!parsed) throw new Error(`Failed to parse ${keyString}`);\n\n    return parsed;\n  }\n\n  static wrap(keyStringOrObject: Key | string | null): Key | null {\n    if (keyStringOrObject instanceof Key) return keyStringOrObject;\n\n    if (keyStringOrObject === null) return null;\n\n    return this.parse(keyStringOrObject);\n  }\n\n  static wrapOrFail(keyStringOrObject: Key | string | null = null): Key {\n    if (keyStringOrObject === null) throw new Error('Unexpected null key');\n\n    const wrapped = this.wrap(keyStringOrObject);\n\n    if (wrapped === null) throw new Error(`Failed: invalid key ${keyStringOrObject}`);\n\n    return wrapped;\n  }\n\n  static toString(keyStringOrObject: Key | string) {\n    return `${Key.wrapOrFail(keyStringOrObject)}`;\n  }\n\n  /**\n   * Calculates the distance in semitones between one key and another.\n   * @param {Key | string} oneKey the key\n   * @param {Key | string} otherKey the other key\n   * @return {number} the distance in semitones\n   */\n  static distance(oneKey: Key | string, otherKey: Key | string): number {\n    return this.wrapOrFail(oneKey).distanceTo(otherKey);\n  }\n\n  constructor(\n    {\n      grade = null, number = null, minor, type, accidental, referenceKeyGrade = null,\n      referenceKeyMode = null, originalKeyString = null, preferredAccidental = null,\n      explicitAccidental = false,\n    }: ConstructorOptions,\n  ) {\n    this.grade = grade;\n    this.number = number;\n    this.minor = minor;\n    this.type = type;\n    this.accidental = accidental;\n    this.preferredAccidental = preferredAccidental;\n    this.referenceKeyGrade = referenceKeyGrade;\n    this.referenceKeyMode = referenceKeyMode;\n    this.originalKeyString = originalKeyString;\n    this.explicitAccidental = explicitAccidental;\n  }\n\n  distanceTo(otherKey: Key | string): number {\n    const otherKeyObj = Key.wrapOrFail(otherKey);\n    return Key.shiftGrade(otherKeyObj.effectiveGrade - this.effectiveGrade);\n  }\n\n  get effectiveGrade(): number {\n    if (this.grade === null) {\n      throw new Error('Cannot calculate effectiveGrade without a grade');\n    }\n\n    return Key.shiftGrade(this.grade + (this.referenceKeyGrade || 0));\n  }\n\n  isMinor(): boolean {\n    return this.minor;\n  }\n\n  makeMinor(): Key {\n    return this.set({ minor: true });\n  }\n\n  get relativeMajor(): Key {\n    return this.changeGrade(+3).set({ minor: false });\n  }\n\n  get relativeMinor(): Key {\n    return this.changeGrade(-3).set({ minor: true });\n  }\n\n  toMajor(): Key {\n    if (this.isMinor()) {\n      return this.transpose(3).set({ minor: false });\n    }\n\n    return this.clone();\n  }\n\n  clone(): Key {\n    return this.set({});\n  }\n\n  private ensureGrade() {\n    if (this.grade === null) {\n      this.calculateGradeFromNumber();\n    }\n  }\n\n  private calculateGradeFromNumber() {\n    if (this.number === null) {\n      throw new Error('Cannot calculate grade, number is null');\n    }\n\n    this.grade = Key.toGrade(\n      this.number.toString(),\n      this.accidental || NO_ACCIDENTAL,\n      NUMERIC,\n      this.isMinor(),\n    );\n\n    this.number = null;\n  }\n\n  toChordSymbol(key: Key | string | null, referenceKeyWasMinor = false): Key {\n    if (this.isChordSymbol()) return this.clone();\n    return this.convertToChordType(key, SYMBOL, referenceKeyWasMinor);\n  }\n\n  toChordSolfege(key: Key | string | null, referenceKeyWasMinor = false): Key {\n    if (this.isChordSolfege()) return this.clone();\n    return this.convertToChordType(key, SOLFEGE, referenceKeyWasMinor);\n  }\n\n  private convertToChordType(key: Key | string | null, type: ChordType, referenceKeyWasMinor: boolean): Key {\n    const { accidental } = this;\n    this.ensureGrade();\n    const keyObj = Key.wrapOrFail(key);\n\n    const minorResult = this.handleMinorKeyConversion(keyObj, referenceKeyWasMinor);\n    if (minorResult) return minorResult;\n\n    const converted = this.set({\n      referenceKeyGrade: Key.shiftGrade(this.effectiveGrade + keyObj.effectiveGrade),\n      grade: 0,\n      type,\n      accidental: null,\n      preferredAccidental: accidental || keyObj.accidental,\n    });\n\n    const normalized = converted.normalizeEnharmonics(keyObj);\n    return accidental ? normalized.set({ preferredAccidental: accidental, accidental: null }) : normalized;\n  }\n\n  private handleMinorKeyConversion(keyObj: Key, referenceKeyWasMinor: boolean): Key | null {\n    if (!(this.isNumeral() || this.isNumeric()) || !referenceKeyWasMinor) return null;\n    // In minor keys, degree 6 with 'm' quality maps to the tonic (i)\n    if (this.grade === 8) return keyObj.relativeMinor;\n    if (this.grade === 7) return keyObj.relativeMinor.changeGrade(-1);\n    if (this.grade === 9) return keyObj.relativeMinor.changeGrade(+1);\n    return null;\n  }\n\n  toChordSymbolString(key: Key): string {\n    return this.toChordSymbol(key).toString();\n  }\n\n  toChordSolfegeString(key: Key): string {\n    return this.toChordSolfege(key).toString();\n  }\n\n  is(type: ChordType): boolean {\n    return this.type === type;\n  }\n\n  isNumeric(): boolean {\n    return this.is(NUMERIC);\n  }\n\n  isChordSymbol(): boolean {\n    return this.is(SYMBOL);\n  }\n\n  isChordSolfege(): boolean {\n    return this.is(SOLFEGE);\n  }\n\n  isNumeral(): boolean {\n    return this.is(NUMERAL);\n  }\n\n  equals(otherKey: Key): boolean {\n    return this.grade === otherKey.grade &&\n      this.number === otherKey.number &&\n      this.accidental === otherKey.accidental &&\n      this.preferredAccidental === otherKey.preferredAccidental &&\n      this.type === otherKey.type &&\n      this.minor === otherKey.minor;\n  }\n\n  static equals(oneKey: Key | null, otherKey: Key | null) {\n    if (oneKey === null) {\n      return otherKey === null;\n    }\n\n    if (otherKey === null) {\n      return false;\n    }\n\n    return oneKey.equals(otherKey);\n  }\n\n  toNumeric(key: Key | string | null = null): Key {\n    if (this.isNumeric()) {\n      return this.clone();\n    }\n\n    if (this.isNumeral()) {\n      return this.set({ type: NUMERIC });\n    }\n\n    const referenceKey = Key.wrapOrFail(key);\n    const referenceKeyGrade = referenceKey.effectiveGrade;\n    const referenceKeyMode = referenceKey.minor ? MINOR : MAJOR;\n    const grade = Key.shiftGrade(this.effectiveGrade - referenceKeyGrade);\n    let preferredAccidental = referenceKey.accidental;\n\n    if (PREFERS_FLAT_NUMBERS.includes(grade)) {\n      preferredAccidental = FLAT;\n    }\n\n    return this.set({\n      type: NUMERIC,\n      grade: Key.shiftGrade(this.effectiveGrade - referenceKeyGrade),\n      referenceKeyGrade: 0,\n      accidental: null,\n      preferredAccidental,\n      referenceKeyMode,\n    });\n  }\n\n  toNumericString(key: Key | null = null): string {\n    return this.toNumeric(key).toString();\n  }\n\n  toNumeral(key: Key | string | null = null): Key {\n    if (this.isNumeral()) {\n      return this.clone();\n    }\n\n    if (this.isNumeric()) {\n      return this.set({ type: NUMERAL });\n    }\n\n    const referenceKey = Key.wrapOrFail(key);\n    const referenceKeyGrade = referenceKey.effectiveGrade;\n    const referenceKeyMode = referenceKey.minor ? MINOR : MAJOR;\n    const grade = Key.shiftGrade(this.effectiveGrade - referenceKeyGrade);\n    let preferredAccidental = referenceKey.accidental;\n\n    if (PREFERS_FLAT_NUMBERS.includes(grade)) {\n      preferredAccidental = FLAT;\n    }\n\n    return this.set({\n      type: NUMERAL,\n      grade: Key.shiftGrade(this.effectiveGrade - referenceKeyGrade),\n      referenceKeyGrade: 0,\n      accidental: null,\n      preferredAccidental,\n      referenceKeyMode,\n    });\n  }\n\n  toNumeralString(key: Key | null = null): string {\n    return this.toNumeral(key).toString();\n  }\n\n  toString({ showMinor = true, useUnicodeModifier = false } = {}): string {\n    let { note } = this;\n\n    if (useUnicodeModifier) {\n      note = note.replace('#', '\\u266f').replace('b', '\\u266d');\n    }\n\n    return `${note}${showMinor ? this.minorSign : ''}`;\n  }\n\n  get note(): string {\n    if (this.grade === null) {\n      return this.getNoteForNumber();\n    }\n\n    if ((this.isChordSymbol() || this.isChordSolfege()) && this.referenceKeyGrade === null) {\n      throw new Error('Not possible, reference key grade is null');\n    }\n\n    let { minor } = this;\n\n    if (this.referenceKeyMode) {\n      minor = this.referenceKeyMode === MINOR;\n    }\n\n    return gradeToKey({\n      type: this.type,\n      accidental: this.accidental,\n      preferredAccidental: this.preferredAccidental,\n      grade: this.effectiveGrade,\n      minor,\n    });\n  }\n\n  private getNoteForNumber() {\n    if (this.number === null) throw new Error('Not possible, grade and number are null');\n\n    if (this.isNumeric()) {\n      return `${this.accidental || ''}${this.number}`;\n    }\n\n    const numeral = ROMAN_NUMERALS[this.number - 1];\n    return `${this.accidental || ''}${this.isMinor() ? numeral.toLowerCase() : numeral}`;\n  }\n\n  get minorSign() {\n    if (!this.minor) return '';\n\n    switch (this.type) {\n      case SYMBOL:\n        return 'm';\n      case SOLFEGE:\n        return 'm';\n      case NUMERIC:\n        return this.isNaturalMinor() ? '' : 'm';\n      default:\n        return '';\n    }\n  }\n\n  private isNaturalMinor() {\n    this.ensureGrade();\n\n    if (!this.grade) {\n      throw new Error('Expected grade to be set, but it is is still empty.');\n    }\n\n    return NATURAL_MINORS.includes(this.grade);\n  }\n\n  transpose(delta: number): Key {\n    if (delta === 0) return this;\n\n    const originalAccidental = this.accidental;\n    let transposedKey = this.clone();\n    const func = (delta < 0) ? 'transposeDown' : 'transposeUp';\n\n    for (let i = 0, count = Math.abs(delta); i < count; i += 1) {\n      transposedKey = transposedKey[func]();\n    }\n\n    return transposedKey.useAccidental(originalAccidental);\n  }\n\n  changeGrade(delta) {\n    if (this.referenceKeyGrade) {\n      return this.set({ referenceKeyGrade: Key.shiftGrade(this.referenceKeyGrade + delta) });\n    }\n\n    this.ensureGrade();\n\n    return this.set({ grade: Key.shiftGrade(this.grade + delta) });\n  }\n\n  transposeUp(): Key {\n    const normalizedKey = this.normalize();\n    let key: Key = normalizedKey.changeGrade(+1);\n\n    if (this.accidental || !key.canBeSharp()) {\n      key = key.useAccidental(null);\n    } else if (key.canBeSharp()) {\n      key = key.useAccidental(SHARP);\n    }\n\n    key = key.set({ preferredAccidental: SHARP }).normalize();\n    return key;\n  }\n\n  transposeDown(): Key {\n    const normalizedKey = this.normalize();\n    let key: Key = normalizedKey.changeGrade(-1);\n\n    if (this.accidental || !key.canBeFlat()) {\n      key = key.useAccidental(null);\n    } else if (key.canBeFlat()) {\n      key = key.useAccidental(FLAT);\n    }\n\n    return key.set({ preferredAccidental: FLAT });\n  }\n\n  canBeFlat() {\n    const list = this.number !== null ? NO_FLAT_NUMBERS : NO_FLAT_GRADES;\n    const value = this.number ?? this.effectiveGrade;\n    return !list.includes(value);\n  }\n\n  canBeSharp() {\n    const list = this.number !== null ? NO_SHARP_NUMBERS : NO_SHARP_GRADES;\n    const value = this.number ?? this.effectiveGrade;\n    return !list.includes(value);\n  }\n\n  setGrade(newGrade: number): Key { return this.set({ grade: Key.shiftGrade(newGrade) }); }\n\n  static shiftGrade(grade: number): number {\n    return grade < 0 ? this.shiftGrade(grade + 12) : grade % 12;\n  }\n\n  useAccidental(newAccidental: Accidental | null): Key {\n    this.ensureGrade();\n    return this.set({ accidental: newAccidental, explicitAccidental: newAccidental !== null });\n  }\n\n  /** @deprecated Use useAccidental instead */\n  useModifier(newAccidental: Accidental | null): Key {\n    deprecate('useModifier is deprecated, use useAccidental instead');\n    return this.useAccidental(newAccidental);\n  }\n\n  normalize(): Key {\n    this.ensureGrade();\n\n    if (this.accidental === SHARP && !this.canBeSharp()) {\n      return this.set({ accidental: null });\n    }\n\n    if (this.accidental === FLAT && !this.canBeFlat()) {\n      return this.set({ accidental: null });\n    }\n\n    return this.clone();\n  }\n\n  normalizeEnharmonics(key: Key | string | null): Key {\n    if (key) {\n      // Preserve explicit accidental choices made via useAccidental()\n      if (this.explicitAccidental) return this.clone();\n\n      const rootKeyString = Key.wrapOrFail(key).toString({ showMinor: true });\n      const enharmonics = ENHARMONIC_MAPPING[rootKeyString];\n      const thisKeyString = this.toString({ showMinor: false });\n\n      if (enharmonics && enharmonics[thisKeyString]) {\n        return Key\n          .parseOrFail(enharmonics[thisKeyString])\n          .set({ minor: this.minor });\n      }\n    }\n\n    return this.clone();\n  }\n\n  private set(attributes: KeyProperties, overwrite = true): Key {\n    return new Key({\n      ...(overwrite ? {} : attributes),\n      grade: this.grade,\n      number: this.number,\n      type: this.type,\n      accidental: this.accidental,\n      minor: this.minor,\n      referenceKeyGrade: this.referenceKeyGrade,\n      originalKeyString: this.originalKeyString,\n      preferredAccidental: this.preferredAccidental,\n      explicitAccidental: this.explicitAccidental,\n      ...(overwrite ? attributes : {}),\n    });\n  }\n}\n\nexport default Key;\n","import { ContentType } from '../../serialized_types';\nimport Key from '../../key';\nimport { META_TAGS } from '../../chord_sheet/tag';\n\nexport type Delegate = (_string: string) => string;\nexport const defaultDelegate: Delegate = (string: string) => string;\n\nexport interface MetadataRule {\n  match: string | string[] | RegExp | ((key: string) => boolean);\n  visible?: boolean;\n  sortMethod?: 'preserve' | 'alphabetical' | 'custom';\n  customSort?: (a: string, b: string) => number;\n}\n\nexport interface MetadataConfiguration {\n  separator: string;\n  order: (string | MetadataRule)[];\n}\n\nexport interface InstrumentConfiguration {\n  type?: string;\n  description?: string;\n  tuning?: string;\n}\n\nexport interface UserConfigurationProperties {\n  name?: string;\n  fullname?: string;\n}\n\nexport const defaultMetadataConfiguration: MetadataConfiguration = {\n  separator: ',',\n  order: [\n    ...META_TAGS,\n    // x_ metadata - alphabetical\n    { match: /^x_/, sortMethod: 'alphabetical' },\n  ],\n};\n\nexport interface DelegatesConfiguration {\n  abc: Delegate;\n  ly: Delegate;\n  svg: Delegate;\n  tab: Delegate;\n  grid: Delegate;\n}\n\nexport const defaultDelegatesConfiguration: DelegatesConfiguration = {\n  abc: defaultDelegate,\n  ly: defaultDelegate,\n  svg: defaultDelegate,\n  tab: defaultDelegate,\n  grid: defaultDelegate,\n};\n\n// Base configuration interface\nexport interface BaseFormatterConfiguration {\n  decapo: boolean;\n  delegates: Partial<Record<ContentType, Delegate>>;\n  evaluate: boolean;\n  expandChorusDirective: boolean;\n  instrument: InstrumentConfiguration | null;\n  key: Key | null;\n  metadata: MetadataConfiguration;\n  normalizeChords: boolean;\n  useUnicodeModifiers: boolean;\n  user: UserConfigurationProperties | null;\n}\n\n// Legacy configuration properties type\nexport type ConfigurationProperties = Record<string, any> & Partial<{\n  decapo: boolean;\n  delegates: Partial<DelegatesConfiguration>;\n  evaluate: boolean;\n  expandChorusDirective: boolean;\n  instrument: Partial<InstrumentConfiguration>;\n  key: Key | string | null;\n  metadata: Partial<MetadataConfiguration>;\n  normalizeChords: boolean;\n  useUnicodeModifiers: boolean;\n  user: Partial<UserConfigurationProperties>;\n}>;\n\n// Default configuration\nexport const defaultBaseConfiguration: BaseFormatterConfiguration = {\n  decapo: false,\n  delegates: defaultDelegatesConfiguration,\n  evaluate: false,\n  expandChorusDirective: false,\n  instrument: null,\n  key: null,\n  metadata: defaultMetadataConfiguration,\n  normalizeChords: true,\n  useUnicodeModifiers: false,\n  user: null,\n};\n\nexport default BaseFormatterConfiguration;\n","const KNOWN_TAGS = 'b|i|u|s|tt|big|small|sub|sup|span|strut|sym';\n\nconst PANGO_TAG_PATTERN = new RegExp(\n  `<(?:\\\\/(?:${KNOWN_TAGS})>|(?:${KNOWN_TAGS})(?:\\\\s[^>]*)?\\\\/?>)`,\n  'g',\n);\n\nconst SYM_MAP: Record<string, string> = {\n  sharp: '\\u266F',\n  flat: '\\u266D',\n  natural: '\\u266E',\n};\n\nconst SPAN_ATTR_TO_CSS: Record<string, string> = {\n  color: 'color',\n  foreground: 'color',\n  background: 'background-color',\n  font_family: 'font-family',\n  face: 'font-family',\n  size: 'font-size',\n  weight: 'font-weight',\n  style: 'font-style',\n};\n\nconst PASSTHROUGH_TAGS = new Set(['b', 'i', 'u', 's', 'tt', 'sub', 'sup']);\n\nconst CONVERTED_TAGS: Record<string, string> = {\n  big: 'font-size: larger',\n  small: 'font-size: smaller',\n};\n\n// Matches open, close, and self-closing known Pango tags in a single pass\nconst PANGO_HTML_PATTERN = new RegExp(\n  `<(${KNOWN_TAGS})(\\\\s[^>]*)?\\\\/>` +\n  `|<(${KNOWN_TAGS})(\\\\s[^>]*)?>` +\n  `|<\\\\/(${KNOWN_TAGS})>`,\n  'g',\n);\n\nfunction parseAttributes(attrString: string): Record<string, string> {\n  const attrs: Record<string, string> = {};\n  const attrRegex = /(\\w+)\\s*=\\s*\"([^\"]*)\"/g;\n  let result = attrRegex.exec(attrString);\n\n  while (result !== null) {\n    const [, key, value] = result;\n    attrs[key] = value;\n    result = attrRegex.exec(attrString);\n  }\n\n  return attrs;\n}\n\nfunction spanAttrsToCss(attrs: Record<string, string>): string[] {\n  const properties = Object.entries(SPAN_ATTR_TO_CSS)\n    .filter(([pangoAttr]) => attrs[pangoAttr])\n    .map(([pangoAttr, cssProperty]) => `${cssProperty}: ${attrs[pangoAttr]}`);\n\n  if (attrs.underline && attrs.underline !== 'none') {\n    properties.push('text-decoration: underline');\n  }\n\n  if (attrs.strikethrough === 'true') {\n    properties.push('text-decoration: line-through');\n  }\n\n  return properties;\n}\n\nfunction convertSpanOpen(attrString: string): string {\n  const attrs = parseAttributes(attrString);\n\n  if (attrs.href) return `<a href=\"${attrs.href}\">`;\n\n  const cssProperties = spanAttrsToCss(attrs);\n\n  if (cssProperties.length > 0) {\n    return `<span style=\"${cssProperties.join('; ')}\">`;\n  }\n\n  return '<span>';\n}\n\nfunction handleSelfClosing(tag: string, attrString: string): string {\n  if (tag === 'sym') {\n    const attrs = parseAttributes(attrString || '');\n    return SYM_MAP[attrs.name] || '';\n  }\n  return '';\n}\n\nfunction handleOpenTag(tag: string, attrString: string, stack: string[]): string | null {\n  if (PASSTHROUGH_TAGS.has(tag)) {\n    stack.push(`</${tag}>`);\n    return `<${tag}>`;\n  }\n\n  if (CONVERTED_TAGS[tag]) {\n    stack.push('</span>');\n    return `<span style=\"${CONVERTED_TAGS[tag]}\">`;\n  }\n\n  if (tag === 'span') {\n    const html = convertSpanOpen(attrString || '');\n    stack.push(html.startsWith('<a ') ? '</a>' : '</span>');\n    return html;\n  }\n\n  return null;\n}\n\nfunction handleCloseTag(tag: string, stack: string[]): string | null {\n  if (PASSTHROUGH_TAGS.has(tag)) {\n    stack.pop();\n    return `</${tag}>`;\n  }\n\n  if (tag === 'big' || tag === 'small' || tag === 'span') {\n    return stack.pop() || `</${tag}>`;\n  }\n\n  return null;\n}\n\nexport function stripPangoMarkup(text: string): string {\n  return text.replace(PANGO_TAG_PATTERN, '');\n}\n\nexport interface PangoRenderer {\n  convert(text: string): string;\n}\n\nexport function pangoToHtml(text: string): string {\n  const openTagStack: string[] = [];\n\n  return text.replace(\n    PANGO_HTML_PATTERN,\n    (match, scTag, scAttrs, openTag, openAttrs, closeTag) => {\n      if (scTag) return handleSelfClosing(scTag, scAttrs);\n      if (openTag) return handleOpenTag(openTag, openAttrs, openTagStack) ?? match;\n      if (closeTag) return handleCloseTag(closeTag, openTagStack) ?? match;\n      return match;\n    },\n  );\n}\n\nexport const defaultPangoRenderer: PangoRenderer = {\n  convert: pangoToHtml,\n};\n","import {\n  BaseFormatterConfiguration,\n  ConfigurationProperties,\n} from './base_configuration';\n\nimport { PangoRenderer } from '../../pango/pango_helpers';\n\nexport type CSS = Record<string, string | number>;\n\nexport interface HtmlTemplateCssClasses {\n  annotation: string,\n  chord: string,\n  chordSheet: string,\n  column: string,\n  comment: string,\n  emptyLine: string,\n  image: string,\n  label: string,\n  labelWrapper: string,\n  line: string,\n  literal: string,\n  literalContents: string,\n  lyrics: string,\n  paragraph: string,\n  rhythmSymbol: string,\n  row: string,\n  subtitle: string,\n  title: string,\n}\n\n// HTML formatter configuration\nexport interface HTMLFormatterConfiguration extends BaseFormatterConfiguration {\n  cssClasses: HtmlTemplateCssClasses;\n  customCSS?: CSS;\n  pangoRenderer?: PangoRenderer;\n  renderBlankLines?: boolean;\n}\n\n// Default CSS classes\n\nexport const defaultCssClasses: HtmlTemplateCssClasses = {\n  annotation: 'annotation',\n  chord: 'chord',\n  chordSheet: 'chord-sheet',\n  column: 'column',\n  comment: 'comment',\n  emptyLine: 'empty-line',\n  image: 'image',\n  label: 'label',\n  labelWrapper: 'label-wrapper',\n  line: 'line',\n  literal: 'literal',\n  literalContents: 'contents',\n  lyrics: 'lyrics',\n  paragraph: 'paragraph',\n  rhythmSymbol: 'rhythm-symbol',\n  row: 'row',\n  subtitle: 'subtitle',\n  title: 'title',\n};\n\n// HTML ConfigurationProperties type\nexport interface HTMLConfigurationProperties extends ConfigurationProperties {\n  cssClasses?: Partial<HtmlTemplateCssClasses>;\n  customCSS?: CSS;\n  pangoRenderer?: PangoRenderer;\n  renderBlankLines?: boolean;\n}\n\nexport const htmlSpecificDefaults: Partial<HTMLFormatterConfiguration> = {\n  cssClasses: {\n    annotation: 'annotation',\n    chord: 'chord',\n    chordSheet: 'chord-sheet',\n    column: 'column',\n    comment: 'comment',\n    emptyLine: 'empty-line',\n    image: 'image',\n    label: 'label',\n    labelWrapper: 'label-wrapper',\n    line: 'line',\n    literal: 'literal',\n    literalContents: 'contents',\n    lyrics: 'lyrics',\n    paragraph: 'paragraph',\n    rhythmSymbol: 'rhythm-symbol',\n    row: 'row',\n    subtitle: 'subtitle',\n    title: 'title',\n  },\n};\n","export interface RadiusOpts { radius: number }\nexport interface FillOpts { fill?: boolean }\ninterface HeightOpts { height: number }\nexport interface PositionOpts { x: number, y: number }\nexport interface SizeOpts { size: number }\nexport interface ThicknessOpts { thickness: number }\nexport interface FillColorOpts { color?: number|string }\ninterface WidthOpts { width: number }\nexport type DimensionOpts = WidthOpts & HeightOpts;\n\nexport interface Renderer {\n  circle({\n    x, y, size, fill, thickness,\n  }: FillOpts & PositionOpts & SizeOpts & ThicknessOpts): void\n\n  line({\n    x1, y1, x2, y2, thickness,\n  }: { x1: number, y1: number, x2: number, y2: number } & ThicknessOpts & FillColorOpts): void\n\n  rect({\n    x, y, width, height, fill, thickness, radius,\n  }: DimensionOpts & FillOpts & PositionOpts & RadiusOpts & ThicknessOpts): void\n\n  text(\n    text: string,\n    {\n      fontSize,\n      fontStyle,\n      x,\n      y,\n    }: {\n      fontSize: number,\n      fontStyle?: string,\n      x: number,\n      y: number\n    }\n  ): void;\n}\n","import { Renderer } from './renderer';\nimport { FingerNumber, FretNumber, StringNumber } from '../constants';\n\n/**\n * Represents a barre (bar) in a chord diagram, where one finger presses multiple strings at the same fret.\n */\nexport interface Barre {\n  /** The starting string number (lowest). */\n  from: StringNumber;\n  /** The ending string number (highest). */\n  to: StringNumber;\n  /** The fret position of the barre. */\n  fret: FretNumber;\n}\n\ntype StringList = StringNumber[];\n\n/**\n * Represents a finger position marker on a specific string and fret in a chord diagram.\n */\nexport interface StringMarker {\n  /** The string number where the finger is placed. */\n  string: StringNumber;\n  /** The fret number where the finger is placed. */\n  fret: FretNumber;\n  /** Optional finger number (1-4) used to press this position. */\n  finger?: FingerNumber;\n}\n\n/**\n * Defines the structure of a chord diagram, including finger positions, barres, and string states.\n */\nexport interface ChordDiagramDefinition {\n  /** Array of barres in the chord. */\n  barres: Barre[];\n  /** The chord name displayed as the diagram title. */\n  chord: string;\n  /** Number of frets to display in the diagram. */\n  fretCount: number;\n  /** Array of finger position markers. */\n  markers: StringMarker[];\n  /** String numbers that are played open (unfingered). */\n  openStrings: StringList;\n  /** Total number of strings on the instrument. */\n  stringCount: number;\n  /** String numbers that are muted/not played. */\n  unusedStrings: StringList;\n  /** The starting fret position (1 for standard position, higher for transposed chords). */\n  baseFret: number;\n}\n\n/**\n * Configuration options for rendering a chord diagram, controlling dimensions, colors, and visual styling.\n */\nexport interface ChordDiagramRenderingConfig {\n  /** Vertical position of the chord title. */\n  titleY: number;\n  /** Width of the guitar neck area. */\n  neckWidth: number;\n  /** Height of the guitar neck area. */\n  neckHeight: number;\n  /** Thickness of the nut (top bar) at the first fret. */\n  nutThickness: number;\n  /** Color of the nut. */\n  nutColor: number|string;\n  /** Thickness of regular fret bars. */\n  fretThickness: number;\n  /** Color of the fret lines. */\n  fretColor: number|string;\n  /** Color of the strings. */\n  stringColor: number|string;\n  /** Size of open/muted string indicators above the nut. */\n  stringIndicatorSize: number;\n  /** Size of finger position markers on the fretboard. */\n  fingerIndicatorSize: number;\n  /** Vertical offset adjustment for finger indicators. */\n  fingerIndicatorOffset: number;\n  /** Thickness of the string lines. */\n  stringThickness: number;\n  /** Thickness of the fret lines. */\n  fretLineThickness: number;\n  /** Line thickness for open string (circle) indicators. */\n  openStringIndicatorThickness: number;\n  /** Line thickness for muted string (X) indicators. */\n  unusedStringIndicatorThickness: number;\n  /** Line thickness for finger position markers. */\n  markerThickness: number;\n  /** Line thickness for barre indicators. */\n  barreThickness: number;\n  /** Font size for the chord title. */\n  titleFontSize: number;\n  /** Font size for the base fret number (when transposed). */\n  baseFretFontSize: number;\n  /** Font size for finger numbers below the diagram. */\n  fingerNumberFontSize: number;\n  /** Whether to display finger numbers below the diagram. */\n  showFingerNumbers: boolean;\n  /** Horizontal spacing between multiple diagrams. */\n  diagramSpacing: number;\n  /** Maximum number of diagrams per row (optional). */\n  maxDiagramsPerRow?: number|null;\n}\n\nconst defaultChordDiagramDefinition: ChordDiagramDefinition = {\n  barres: [],\n  chord: '',\n  fretCount: 4,\n  markers: [],\n  openStrings: [],\n  stringCount: 6,\n  unusedStrings: [],\n  baseFret: 0,\n};\n\n/**\n * Default configuration values for rendering chord diagrams.\n */\nexport const DefaultChordDiagramRenderingConfig: ChordDiagramRenderingConfig = {\n  titleY: 28,\n  neckWidth: 120,\n  neckHeight: 160,\n  nutThickness: 10,\n  fretThickness: 4,\n  nutColor: 0,\n  fretColor: '#929292',\n  stringIndicatorSize: 14,\n  fingerIndicatorSize: 16,\n  stringColor: 0,\n  fingerIndicatorOffset: 0,\n  stringThickness: 3,\n  fretLineThickness: 4,\n  openStringIndicatorThickness: 2,\n  unusedStringIndicatorThickness: 2,\n  markerThickness: 2,\n  barreThickness: 2,\n  titleFontSize: 48,\n  baseFretFontSize: 8,\n  fingerNumberFontSize: 28,\n  showFingerNumbers: true,\n  diagramSpacing: 7,\n};\n\nfunction repeat(count: number, callback: (i: number) => void): void {\n  Array.from({ length: count }).forEach((_, i) => callback(i));\n}\n\n/**\n * Renders a visual chord diagram for guitar or similar stringed instruments.\n *\n * A chord diagram displays finger positions, barres, open strings, and muted strings\n * on a graphical representation of the instrument's fretboard.\n */\nclass ChordDiagram {\n  chordDiagramDefinition: ChordDiagramDefinition;\n\n  renderer?: Renderer;\n\n  config: ChordDiagramRenderingConfig;\n\n  constructor(chordDiagramDefinition: Partial<ChordDiagramDefinition>, config?: Partial<ChordDiagramRenderingConfig>) {\n    this.chordDiagramDefinition = { ...defaultChordDiagramDefinition, ...chordDiagramDefinition };\n    this.config = { ...DefaultChordDiagramRenderingConfig, ...config };\n  }\n\n  get neckX() {\n    return (this.config.stringIndicatorSize / 2) + 1;\n  }\n\n  get neckY() {\n    return this.stringIndicatorY + this.config.stringIndicatorSize + 3;\n  }\n\n  get stringIndicatorY() {\n    return this.config.titleY + (this.config.titleFontSize / 2);\n  }\n\n  get fingerNumberIndicatorsY() {\n    return this.neckY +\n    this.config.neckHeight +\n    this.config.fingerNumberFontSize +\n    (this.config.fingerNumberFontSize / 2);\n  }\n\n  get nutThicknessCorrection() {\n    return this.config.nutThickness - this.config.fretThickness;\n  }\n\n  render(renderer: Renderer) {\n    this.renderer = renderer;\n    this.renderTitle(renderer);\n    this.renderFrets(renderer);\n    this.renderStrings(renderer);\n    this.renderNut(renderer);\n    this.renderOpenStringIndicators(renderer);\n    this.renderUnusedStringIndicators(renderer);\n    this.renderStringMarkers(renderer);\n    this.renderBarres(renderer);\n    this.renderFingerNumberIndicators(renderer);\n  }\n\n  renderTitle(renderer: Renderer) {\n    const { chord } = this.chordDiagramDefinition;\n\n    renderer.text(\n      chord,\n      {\n        fontSize: this.config.titleFontSize,\n        x: (this.neckX + (this.config.neckWidth / 2)),\n        y: this.config.titleY,\n      },\n    );\n  }\n\n  renderStrings(renderer: Renderer) {\n    const { stringCount } = this.chordDiagramDefinition;\n\n    repeat(stringCount, (stringIndex) => {\n      renderer.line({\n        x1: this.neckX + (stringIndex * (this.config.neckWidth / (stringCount - 1))),\n        y1: this.neckY,\n        x2: this.neckX + (stringIndex * (this.config.neckWidth / (stringCount - 1))),\n        y2: this.neckY + this.config.neckHeight,\n        thickness: this.config.stringThickness,\n        color: this.config.stringColor,\n      });\n    });\n  }\n\n  renderNut(renderer: Renderer) {\n    if (this.chordDiagramDefinition.baseFret === 1) {\n      this.renderStandardNut(renderer);\n    } else {\n      this.renderTransposedNut(renderer);\n    }\n  }\n\n  private renderTransposedNut(renderer: Renderer) {\n    renderer.text(\n      this.chordDiagramDefinition.baseFret.toString(),\n      {\n        fontSize: this.config.baseFretFontSize,\n        x: this.neckX - this.config.fretThickness - (this.config.baseFretFontSize * 3),\n        y: this.neckY + (this.config.neckHeight / this.chordDiagramDefinition.fretCount),\n      },\n    );\n    renderer.line({\n      x1: this.neckX - this.config.fretThickness,\n      y1: this.neckY + this.nutThicknessCorrection + 1,\n      x2: this.neckX - this.config.fretThickness + this.config.neckWidth + (2 * this.config.fretThickness),\n      y2: this.neckY + this.nutThicknessCorrection,\n      thickness: this.config.fretThickness,\n      color: this.config.nutColor,\n    });\n  }\n\n  private renderStandardNut(renderer: Renderer) {\n    renderer.line({\n      x1: this.neckX - this.config.stringThickness,\n      y1: this.neckY,\n      x2: this.neckX + this.config.neckWidth + this.config.stringThickness,\n      y2: this.neckY,\n      thickness: this.config.nutThickness,\n    });\n  }\n\n  renderFrets(renderer: Renderer) {\n    const { fretCount } = this.chordDiagramDefinition;\n    const fretSpacing = (this.config.neckHeight - this.nutThicknessCorrection) / fretCount;\n\n    repeat(fretCount, (fretIndex) => {\n      renderer.line({\n        x1: this.neckX - this.config.fretThickness,\n        y1: this.neckY + this.nutThicknessCorrection + ((fretIndex + 1) * fretSpacing),\n        x2: this.neckX - this.config.fretThickness + this.config.neckWidth + (2 * this.config.fretThickness),\n        y2: this.neckY + this.nutThicknessCorrection + ((fretIndex + 1) * fretSpacing),\n        thickness: this.config.fretLineThickness,\n        color: this.config.fretColor,\n      });\n    });\n  }\n\n  renderOpenStringIndicators(renderer: Renderer) {\n    const { openStrings, stringCount } = this.chordDiagramDefinition;\n\n    openStrings.forEach((stringNumber: StringNumber) => {\n      renderer.circle({\n        size: this.config.stringIndicatorSize,\n        x: this.neckX + ((stringNumber - 1) * (this.config.neckWidth / (stringCount - 1))),\n        y: this.stringIndicatorY,\n        thickness: this.config.openStringIndicatorThickness,\n      });\n    });\n  }\n\n  renderUnusedStringIndicators(renderer: Renderer) {\n    const { stringCount, unusedStrings } = this.chordDiagramDefinition;\n\n    unusedStrings.forEach((stringNumber: StringNumber) => {\n      const x = this.neckX + ((stringNumber - 1) * (this.config.neckWidth / (stringCount - 1)));\n      const y = this.stringIndicatorY;\n      const size = this.config.stringIndicatorSize;\n\n      renderer.line({\n        x1: x - size / 2,\n        y1: y - size / 2,\n        x2: x + size / 2,\n        y2: y + size / 2,\n        thickness: this.config.unusedStringIndicatorThickness,\n      });\n\n      renderer.line({\n        x1: x + size / 2,\n        y1: y - size / 2,\n        x2: x - size / 2,\n        y2: y + size / 2,\n        thickness: this.config.unusedStringIndicatorThickness,\n      });\n    });\n  }\n\n  renderStringMarkers(renderer: Renderer) {\n    const { fretCount, markers } = this.chordDiagramDefinition;\n    const fretSpacing = (this.config.neckHeight - this.nutThicknessCorrection) / fretCount;\n\n    markers.forEach(({ string, fret }: StringMarker) => {\n      renderer.circle({\n        x: this.neckX + ((string - 1) * (this.config.neckWidth / 5)),\n        y: this.neckY + this.nutThicknessCorrection +\n           (fret * fretSpacing) - (fretSpacing / 2) + this.config.fingerIndicatorOffset,\n        size: this.config.fingerIndicatorSize,\n        fill: true,\n        thickness: this.config.markerThickness,\n      });\n    });\n  }\n\n  renderBarres(renderer: Renderer) {\n    const { barres, fretCount, stringCount } = this.chordDiagramDefinition;\n    const fretSpacing = (this.config.neckHeight - this.nutThicknessCorrection) / fretCount;\n    const barreHeight = fretSpacing / 3.0;\n    const stringSpacing = this.config.neckWidth / (stringCount - 1);\n\n    barres.forEach(({ from, to, fret }: Barre) => {\n      const stringSpaceCount = to - from;\n\n      renderer.rect({\n        x: this.neckX + (from - 1.5) * stringSpacing,\n        y: this.neckY + this.nutThicknessCorrection + ((fret - 0.5) * fretSpacing) - (barreHeight / 2) +\n           this.config.fingerIndicatorOffset,\n        width: (stringSpaceCount + 1) * stringSpacing,\n        height: barreHeight,\n        thickness: this.config.barreThickness,\n        radius: 8,\n        fill: true,\n      });\n    });\n  }\n\n  renderFingerNumberIndicators(renderer: Renderer) {\n    if (!this.config.showFingerNumbers) return;\n    const { markers, stringCount } = this.chordDiagramDefinition;\n    const stringSpacing = this.config.neckWidth / (stringCount - 1);\n\n    markers.forEach(({ string, finger }: StringMarker) => {\n      if (!finger) return;\n\n      renderer.text(\n        `${finger}`,\n        {\n          fontSize: this.config.fingerNumberFontSize,\n          x: this.neckX + ((string - 1) * stringSpacing),\n          y: this.fingerNumberIndicatorsY,\n        },\n      );\n    });\n  }\n}\n\nexport default ChordDiagram;\n","import {\n  MeasurementBasedConfigurationProperties,\n  MeasurementBasedFormatterConfiguration,\n  MeasurementBasedLayoutConfig,\n  SectionsConfig,\n} from './measurement_based_configuration';\n\n// MeasuredHtml layout configuration extends measurement-based layout\nexport interface MeasuredHtmlLayoutConfig extends MeasurementBasedLayoutConfig {\n  // MeasuredHtml requires these fields that are optional in the base config\n  header: MeasurementBasedLayoutConfig['header'];\n  footer: MeasurementBasedLayoutConfig['footer'];\n  sections: SectionsConfig;\n}\n\n// MeasuredHtml formatter configuration\nexport interface MeasuredHtmlFormatterConfiguration extends MeasurementBasedFormatterConfiguration {\n  version: string;\n  // Override layout with the MeasuredHtml layout config\n  layout: MeasuredHtmlLayoutConfig;\n  pageSize: {\n    width: number;\n    height: number;\n  };\n  cssClassPrefix?: string;\n  additionalCss?: string;\n  cssClasses?: {\n    container?: string;\n    page?: string;\n    chord?: string;\n    lyrics?: string;\n    sectionLabel?: string;\n    comment?: string;\n    header?: string;\n    footer?: string;\n  };\n}\n\n// MeasuredHtml ConfigurationProperties type\nexport interface MeasuredHtmlConfigurationProperties extends MeasurementBasedConfigurationProperties {\n  version?: string;\n  layout?: Partial<MeasuredHtmlLayoutConfig>;\n  pageSize?: {\n    width?: number;\n    height?: number;\n  };\n  cssClassPrefix?: string;\n  additionalCss?: string;\n  cssClasses?: Record<string, string>;\n}\n\nexport const measuredHtmlSpecificDefaults: Partial<MeasuredHtmlFormatterConfiguration> = {\n  // Font settings for various elements\n  pageSize: {\n    width: 0,\n    height: 0,\n  },\n  fonts: {\n    title: {\n      name: 'Arial', style: 'bold', size: 22, color: '#151515',\n    },\n    subtitle: {\n      name: 'Arial', style: 'normal', size: 11, color: '#6f6f6f',\n    },\n    metadata: {\n      name: 'Arial', style: 'normal', size: 10, color: '#8b8b8b',\n    },\n    text: {\n      name: 'Arial', style: 'normal', size: 10, color: '#232323',\n    },\n    chord: {\n      name: 'Arial', style: 'bold', size: 9, color: '#232323',\n    },\n    comment: {\n      name: 'Arial', style: 'bold', size: 10, color: '#232323',\n    },\n    sectionLabel: {\n      name: 'Arial', style: 'bold', size: 10, color: '#a1312d',\n    },\n    annotation: {\n      name: 'Arial', style: 'normal', size: 10, color: '#232323',\n    },\n  },\n  layout: {\n    global: {\n      margins: {\n        top: 14,\n        bottom: 12,\n        left: 45,\n        right: 45,\n      },\n    },\n    header: {\n      height: 72,\n      content: [\n        {\n          type: 'text',\n          template: '%{title}',\n          style: {\n            name: 'Arial', style: 'bold', size: 19, color: '#151515', weight: 700,\n          },\n          position: {\n            x: 'left', y: 0, clip: true, ellipsis: true,\n          },\n          condition: {\n            page: { first: true },\n          },\n        },\n        {\n          type: 'text',\n          template: '%{artist}',\n          style: {\n            name: 'Arial', style: 'normal', size: 11, color: '#6f6f6f',\n          },\n          position: {\n            x: 'left', y: 25, clip: true, ellipsis: true,\n          },\n          condition: {\n            page: { first: true },\n          },\n        },\n        {\n          type: 'text',\n          template: '%{tempo|%{} BPM}%{time| \\u00b7 %{}}%{capo| \\u00b7 Capo %{}}',\n          style: {\n            name: 'Arial', style: 'normal', size: 11, color: '#6f6f6f',\n          },\n          position: {\n            x: 'left', y: 40, width: 240, clip: true, ellipsis: true,\n          },\n          condition: {\n            page: { first: true },\n          },\n        },\n        {\n          type: 'line',\n          style: { width: 1, color: '#d7d7d7' },\n          position: {\n            x: 0, y: 60, width: 'auto', height: 0,\n          },\n          condition: {\n            page: { first: true },\n          },\n        },\n        {\n          type: 'text',\n          template: '%{key}',\n          cssClass: 'measured-html-key-badge',\n          elementStyle: {\n            width: '28px',\n            height: '28px',\n            display: 'flex',\n            alignItems: 'center',\n            justifyContent: 'center',\n            borderRadius: '999px',\n            backgroundColor: '#a1312d',\n            textAlign: 'center',\n            boxSizing: 'border-box',\n          },\n          style: {\n            name: 'Arial', style: 'bold', size: 12, color: '#ffffff', weight: 700,\n          },\n          position: {\n            x: 'right',\n            y: 12,\n            width: 28,\n            offsetX: -2,\n          },\n          condition: {\n            and: [\n              { page: { first: true } },\n              { key: { exists: true } },\n            ],\n          },\n        },\n        {\n          type: 'text',\n          template: '%{title}',\n          style: {\n            name: 'Arial', style: 'bold', size: 12, color: '#151515', weight: 700,\n          },\n          position: {\n            x: 'left', y: 0, clip: true, ellipsis: true,\n          },\n          condition: {\n            page: { greater_than: 1 },\n          },\n        },\n        {\n          type: 'text',\n          template: '%{page}/%{pages}',\n          style: {\n            name: 'Arial', style: 'normal', size: 10, color: '#9a9a9a',\n          },\n          position: { x: 'right', y: 4, offsetX: -38 },\n          condition: {\n            page: { greater_than: 1 },\n          },\n        },\n        {\n          type: 'text',\n          template: '%{key}',\n          cssClass: 'measured-html-key-badge',\n          elementStyle: {\n            width: '28px',\n            height: '28px',\n            display: 'flex',\n            alignItems: 'center',\n            justifyContent: 'center',\n            borderRadius: '999px',\n            backgroundColor: '#a1312d',\n            textAlign: 'center',\n            boxSizing: 'border-box',\n          },\n          style: {\n            name: 'Arial', style: 'bold', size: 12, color: '#ffffff', weight: 700,\n          },\n          position: {\n            x: 'right',\n            y: 2,\n            width: 28,\n            offsetX: -2,\n          },\n          condition: {\n            and: [\n              { page: { greater_than: 1 } },\n              { key: { exists: true } },\n            ],\n          },\n        },\n        {\n          type: 'line',\n          style: { width: 1, color: '#d7d7d7' },\n          position: {\n            x: 0, y: 32, width: 'auto', height: 0,\n          },\n          condition: {\n            page: { greater_than: 1 },\n          },\n        },\n      ],\n    },\n    footer: {\n      height: 0,\n      content: [\n      ],\n    },\n    sections: {\n      global: {\n        paragraphSpacing: 10,\n        linePadding: 4,\n        chordLyricSpacing: 2,\n        chordSpacing: 2,\n        columnWidth: 0,\n        columnSpacing: 25,\n        minColumnWidth: 0,\n        maxColumnWidth: 0,\n      },\n      base: {\n        display: {\n          lyricsOnly: false,\n          repeatedSections: 'full',\n        },\n      },\n    },\n    chordDiagrams: {\n      enabled: true,\n      renderingConfig: {\n        titleY: 28,\n        neckWidth: 120,\n        neckHeight: 160,\n        nutThickness: 10,\n        fretThickness: 4,\n        nutColor: 0,\n        fretColor: '#929292',\n        stringIndicatorSize: 14,\n        fingerIndicatorSize: 16,\n        stringColor: 0,\n        fingerIndicatorOffset: 0,\n        stringThickness: 3,\n        fretLineThickness: 4,\n        openStringIndicatorThickness: 2,\n        unusedStringIndicatorThickness: 2,\n        markerThickness: 2,\n        barreThickness: 2,\n        titleFontSize: 48,\n        baseFretFontSize: 8,\n        fingerNumberFontSize: 28,\n        showFingerNumbers: true,\n        diagramSpacing: 7,\n      },\n      fonts: {\n        title: {\n          name: 'Arial', style: 'bold', size: 9, color: '#232323',\n        },\n        fingerings: {\n          name: 'Arial', style: 'bold', size: 6, color: '#232323',\n        },\n        baseFret: {\n          name: 'Arial', style: 'bold', size: 6, color: '#232323',\n        },\n      },\n    },\n  },\n};\n","import {\n  ChordDiagramsConfig,\n  MeasurementBasedConfigurationProperties,\n  MeasurementBasedFormatterConfiguration,\n  MeasurementBasedLayoutConfig,\n  SectionsConfig,\n} from './measurement_based_configuration';\n\n// PDF layout configuration extends measurement-based layout\nexport interface PDFLayoutConfig extends MeasurementBasedLayoutConfig {\n  // PDF requires these fields that are optional in the base config\n  header: MeasurementBasedLayoutConfig['header'];\n  footer: MeasurementBasedLayoutConfig['footer'];\n  sections: SectionsConfig;\n  chordDiagrams: ChordDiagramsConfig;\n}\n\n// PDF formatter configuration\nexport interface PDFFormatterConfiguration extends MeasurementBasedFormatterConfiguration {\n  version: string;\n  // Override layout with the PDF layout config\n  layout: PDFLayoutConfig;\n}\n\n// PDF ConfigurationProperties type\nexport interface PDFConfigurationProperties extends MeasurementBasedConfigurationProperties {\n  version?: string;\n  layout?: Partial<PDFLayoutConfig>;\n}\n\nexport const pdfSpecificDefaults: Partial<PDFFormatterConfiguration> = {\n  // Font settings for various elements\n  fonts: {\n    title: {\n      name: 'NimbusSansL-Bol', style: 'bold', size: 24, color: 'black',\n    },\n    subtitle: {\n      name: 'NimbusSansL-Reg', style: 'normal', size: 10, color: 100,\n    },\n    metadata: {\n      name: 'NimbusSansL-Reg', style: 'normal', size: 10, color: 100,\n    },\n    text: {\n      name: 'NimbusSansL-Reg', style: 'normal', size: 10, color: 'black',\n    },\n    chord: {\n      name: 'NimbusSansL-Bol', style: 'bold', size: 9, color: 'black',\n    },\n    comment: {\n      name: 'NimbusSansL-Bol', style: 'bold', size: 10, color: 'black',\n    },\n    sectionLabel: {\n      name: 'NimbusSansL-Bol', style: 'bold', size: 10, color: 'black',\n    },\n    annotation: {\n      name: 'NimbusSansL-Reg', style: 'normal', size: 10, color: 'black',\n    },\n  },\n  layout: {\n    global: {\n      margins: {\n        top: 35,\n        bottom: 10,\n        left: 45,\n        right: 45,\n      },\n    },\n    header: {\n      height: 60,\n      content: [\n        {\n          type: 'text',\n          template: '%{title}',\n          style: {\n            name: 'NimbusSansL-Bol', style: 'bold', size: 24, color: 'black',\n          },\n          position: { x: 'left', y: 15 },\n        },\n        {\n          type: 'text',\n          template: 'Key of %{key} - BPM %{tempo} - Time %{time}',\n          style: {\n            name: 'NimbusSansL-Reg', style: 'normal', size: 12, color: 100,\n          },\n          position: { x: 'left', y: 28 },\n        },\n        {\n          type: 'text',\n          template: 'By %{artist} %{subtitle}',\n          style: {\n            name: 'NimbusSansL-Reg', style: 'normal', size: 10, color: 100,\n          },\n          position: { x: 'left', y: 38 },\n        },\n      ],\n    },\n    footer: {\n      height: 30,\n      content: [\n        {\n          type: 'text',\n          value: '©2024 My Music Publishing',\n          style: {\n            name: 'NimbusSansL-Reg', style: 'normal', size: 10, color: 'black',\n          },\n          position: { x: 'left', y: 0 },\n        },\n      ],\n    },\n    sections: {\n      global: {\n        paragraphSpacing: 10,\n        linePadding: 4,\n        chordLyricSpacing: 2,\n        chordSpacing: 2,\n        columnCount: 2,\n        columnWidth: 0,\n        columnSpacing: 25,\n      },\n      base: {\n        display: {\n          lyricsOnly: false,\n          repeatedSections: 'title_only',\n        },\n      },\n    },\n    chordDiagrams: {\n      enabled: true,\n      renderingConfig: {\n        titleY: 28,\n        neckWidth: 120,\n        neckHeight: 160,\n        nutThickness: 10,\n        fretThickness: 4,\n        nutColor: 0,\n        fretColor: '#929292',\n        stringIndicatorSize: 14,\n        fingerIndicatorSize: 16,\n        stringColor: 0,\n        fingerIndicatorOffset: 0,\n        stringThickness: 3,\n        fretLineThickness: 4,\n        openStringIndicatorThickness: 2,\n        unusedStringIndicatorThickness: 2,\n        markerThickness: 2,\n        barreThickness: 2,\n        titleFontSize: 48,\n        baseFretFontSize: 8,\n        fingerNumberFontSize: 28,\n        showFingerNumbers: true,\n        diagramSpacing: 7,\n      },\n      fonts: {\n        title: {\n          name: 'NimbusSansL-Bol', style: 'bold', size: 9, color: 'black',\n        },\n        fingerings: {\n          name: 'NimbusSansL-Bol', style: 'bold', size: 6, color: 'black',\n        },\n        baseFret: {\n          name: 'NimbusSansL-Bol', style: 'bold', size: 6, color: 'black',\n        },\n      },\n    },\n  },\n};\n","import { mergeConfigs } from '../../utilities';\nimport {\n  BaseFormatterConfiguration,\n  defaultBaseConfiguration,\n} from './base_configuration';\nimport { HTMLFormatterConfiguration, htmlSpecificDefaults } from './html_configuration';\nimport { MeasuredHtmlFormatterConfiguration, measuredHtmlSpecificDefaults } from './measured_html_configuration';\nimport {\n  MeasurementBasedFormatterConfiguration,\n  measurementSpecificDefaults,\n} from './measurement_based_configuration';\nimport { PDFFormatterConfiguration, pdfSpecificDefaults } from './pdf_configuration';\n\nconst formatterDefaultParts: Record<string, any> = {\n  'base': {},\n  'html': htmlSpecificDefaults,\n  'measurement': measurementSpecificDefaults,\n  'pdf': pdfSpecificDefaults,\n  'measured_html': measuredHtmlSpecificDefaults,\n};\n\nconst inheritanceMap: Record<string, string[]> = {\n  base: ['base'],\n  html: ['base', 'html'],\n  measurement: ['base', 'measurement'],\n  pdf: ['base', 'measurement', 'pdf'],\n  measured_html: ['base', 'measurement', 'measured_html'],\n};\n\n/**\n * Build the inheritance chain for a formatter type\n * @param formatterType The formatter type to build the chain for\n * @returns Array of formatter types in inheritance order (base first)\n */\nexport const buildInheritanceChain = (formatterType: string): string[] => {\n  const chain = inheritanceMap[formatterType] || [];\n  return [...chain];\n};\n\n/**\n * Get the default configuration for a specific formatter type\n * This dynamically composes the full default configuration by merging\n * the defaults from all levels in the inheritance chain\n * @param formatterType The formatter type to get defaults for\n * @returns The fully composed default configuration\n */\nexport const getDefaultConfig = <T extends BaseFormatterConfiguration>(\n  formatterType: string,\n): T => {\n  let config = { ...defaultBaseConfiguration };\n  const chain = buildInheritanceChain(formatterType);\n  config = chain.reduce((acc, type) => mergeConfigs(acc, formatterDefaultParts[type] || {}), config);\n  return config as T;\n};\n\nexport const getBaseDefaultConfig = ():\n  BaseFormatterConfiguration => getDefaultConfig<BaseFormatterConfiguration>('base');\n\nexport const getHTMLDefaultConfig = ():\n  HTMLFormatterConfiguration => getDefaultConfig<HTMLFormatterConfiguration>('html');\n\nexport const getMeasurementDefaultConfig = ():\n  MeasurementBasedFormatterConfiguration => getDefaultConfig<MeasurementBasedFormatterConfiguration>('measurement');\n\nexport const getPDFDefaultConfig = ():\n  PDFFormatterConfiguration => getDefaultConfig<PDFFormatterConfiguration>('pdf');\n\nexport const getMeasuredHtmlDefaultConfig = ():\n  MeasuredHtmlFormatterConfiguration => getDefaultConfig<MeasuredHtmlFormatterConfiguration>('measured_html');\n\n/**\n * Register a new formatter type with its specific defaults and inheritance chain\n * @param formatterType The formatter type to register\n * @param specificDefaults The formatter-specific default settings\n * @param inheritsFrom Array of formatter types this one inherits from (in order)\n */\nexport const registerFormatterType = (\n  formatterType: string,\n  specificDefaults: Record<string, any> = {},\n  inheritsFrom: string[] = [],\n): void => {\n  formatterDefaultParts[formatterType] = specificDefaults;\n  inheritanceMap[formatterType] = inheritsFrom;\n};\n","import { BaseFormatterConfiguration } from './configuration/base_configuration';\nimport { DeepPartial } from '../utilities';\nimport { getBaseDefaultConfig } from './configuration/default_config_manager';\nimport { mergeConfigs } from '../utilities';\n\n/**\n * Base formatter class that provides configuration handling for all formatters\n */\nclass Formatter<T extends BaseFormatterConfiguration = BaseFormatterConfiguration> {\n  configuration: T;\n\n  /**\n   * Instantiate\n   * @param {DeepPartial<T>} [configuration={}] options\n   * @param {boolean} [configuration.evaluate=false] Whether or not to evaluate meta expressions.\n   * For more info about meta expressions, see: https://bit.ly/2SC9c2u\n   * @param {object} [configuration.metadata={}]\n   * @param {string} [configuration.metadata.separator=\", \"] The separator to be used when rendering a\n   * metadata value that has multiple values. See: https://bit.ly/2SC9c2u\n   * @param {Key|string} [configuration.key=null] The key to use for rendering. The chord sheet will be\n   * transposed from the song's original key (as indicated by the `{key}` directive) to the specified key.\n   * Note that transposing will only work if the original song key is set.\n   * @param {boolean} [configuration.expandChorusDirective=false] Whether or not to expand `{chorus}` directives\n   * by rendering the last defined chorus inline after the directive.\n   * @param {boolean} [configuration.useUnicodeModifiers=false] Whether or not to use unicode flat and sharp\n   * symbols.\n   * @param {boolean} [configuration.normalizeChords=true] Whether or not to automatically normalize chords\n   */\n  constructor(configuration: DeepPartial<T> = {} as DeepPartial<T>) {\n    const defaultConfig = this.getDefaultConfiguration();\n    this.configuration = mergeConfigs(defaultConfig, configuration) as T;\n  }\n\n  /**\n   * Configure the formatter with new options\n   * @param {DeepPartial<T>} config New configuration options\n   * @returns {this} The formatter instance for chaining\n   */\n  configure(config: DeepPartial<T>): this {\n    this.configuration = mergeConfigs(this.configuration, config) as T;\n    return this;\n  }\n\n  /**\n   * Get the default configuration for this formatter type\n   * Should be implemented by subclasses to return the appropriate default configuration\n   */\n  protected getDefaultConfiguration(): T {\n    return getBaseDefaultConfig() as T;\n  }\n}\n\nexport default Formatter;\n","/**\n * Represents a soft line break in the lyrics, typically rendered as a space or optional break point.\n */\nclass SoftLineBreak {\n  /**\n   * The content of the soft line break, defaults to a single space.\n   */\n  content: string;\n\n  constructor(content = ' ') {\n    this.content = content;\n  }\n\n  /**\n   * Returns a copy of the SoftLineBreak.\n   */\n  clone() {\n    return new SoftLineBreak();\n  }\n}\n\nexport default SoftLineBreak;\n","import ChordDefinition from './chord_definition';\nimport chordDefinitions from './defaults.json';\n\nexport type DefinitionSet = Record<string, ChordDefinition>;\n\nclass ChordDefinitionSet {\n  definitions: DefinitionSet;\n\n  constructor(definitions?: DefinitionSet) {\n    this.definitions = definitions || {};\n  }\n\n  get(chord: string): ChordDefinition | null {\n    return this.definitions[chord] || null;\n  }\n\n  withDefaults() {\n    const defaultDefinitions: Record<string, string> = chordDefinitions;\n    const clone = this.clone();\n\n    Object.keys(defaultDefinitions).forEach((chord: string) => {\n      const definition = ChordDefinition.parse(defaultDefinitions[chord]);\n\n      if (!clone.has(chord)) {\n        clone.add(chord, definition);\n      }\n    });\n\n    return clone;\n  }\n\n  add(chord: string, definition: ChordDefinition) {\n    this.definitions[chord] = definition;\n  }\n\n  has(chord: string): boolean {\n    return chord in this.definitions;\n  }\n\n  clone(): ChordDefinitionSet {\n    const clone = new ChordDefinitionSet();\n\n    Object.keys(this.definitions).forEach((chord: string) => {\n      clone.add(chord, this.definitions[chord].clone());\n    });\n\n    return clone;\n  }\n}\n\nexport default ChordDefinitionSet;\n","import { BaseFormatterConfiguration } from './configuration';\nimport Metadata from '../chord_sheet/metadata';\n\ninterface FormattingContext {\n  configuration: BaseFormatterConfiguration;\n  metadata: Metadata;\n}\n\nexport default FormattingContext;\n","import Item from './item';\nimport Line from './line';\nimport Song from './song';\nimport Tag from './tag';\n\nimport { CHORUS } from '../constants';\nimport { END_OF_CHORUS, START_OF_CHORUS } from './tags';\n\nclass LineExpander {\n  line: Line;\n\n  song: Song;\n\n  static expand(line: Line, song: Song): Line[] {\n    return new LineExpander(line, song).expand();\n  }\n\n  constructor(line: Line, song: Song) {\n    this.line = line;\n    this.song = song;\n  }\n\n  expand(): Line[] {\n    const expandedLines = this.line.items.flatMap((item: Item) => {\n      if (item instanceof Tag && item.name === CHORUS) {\n        return this.getLastChorusBefore(this.line.lineNumber);\n      }\n\n      return [];\n    });\n\n    return [this.line, ...expandedLines];\n  }\n\n  private getLastChorusBefore(lineNumber: number | null): Line[] {\n    const lines: Line[] = [];\n\n    if (!lineNumber) {\n      return lines;\n    }\n\n    for (let i = lineNumber - 1; i >= 0; i -= 1) {\n      const line = this.song.lines[i];\n\n      if (line.type !== CHORUS && lines.length > 0) {\n        break;\n      }\n\n      if (line.type === CHORUS && (line.isEmpty() || this.lineHasMoreThanChorusDirectives(line))) {\n        lines.unshift(line);\n      }\n    }\n\n    return lines;\n  }\n\n  private lineHasMoreThanChorusDirectives(line: Line): boolean {\n    return line.items.some((item: Item) => {\n      if (item instanceof Tag) {\n        if (item.name === START_OF_CHORUS || item.name === END_OF_CHORUS) {\n          return false;\n        }\n      }\n\n      return true;\n    });\n  }\n}\n\nexport default LineExpander;\n","import { INDETERMINATE } from '../constants';\nimport Item from './item';\nimport Line from './line';\nimport Literal from './chord_pro/literal';\nimport Tag from './tag';\n\nfunction getCommonValue(values: string[], fallback: string | null): string | null {\n  const uniqueValues = [...new Set(values)];\n\n  if (uniqueValues.length === 1) {\n    return uniqueValues[0];\n  }\n\n  return fallback;\n}\n\n/**\n * Represents a paragraph of lines in a chord sheet\n */\nclass Paragraph {\n  /**\n   * The {@link Line} items of which the paragraph consists\n   * @member\n   * @type {Line[]}\n   */\n  lines: Line[] = [];\n\n  addLine(line): void {\n    this.lines.push(line);\n  }\n\n  /**\n   * Indicates whether the paragraph only contains literals. If true, {@link contents} can be used to retrieve\n   * the paragraph contents as one string where lines are separated by newlines.\n   * @see {@link contents}\n   * @returns {boolean}\n   */\n  isLiteral() {\n    const { lines } = this;\n\n    if (this.isEmpty()) {\n      return false;\n    }\n\n    return lines.every((line) => line.items.every((item) => {\n      if (item instanceof Literal) {\n        return true;\n      }\n\n      if (item instanceof Tag && (item as Tag).isSectionDelimiter()) {\n        return true;\n      }\n\n      return false;\n    }));\n  }\n\n  /**\n   * Returns the paragraph contents as one string where lines are separated by newlines\n   * @returns {string}\n   */\n  get contents(): string {\n    return this\n      .lines\n      .filter((line) => (\n        line.items.every((item) => item instanceof Literal)\n      ))\n      .map((line) => (\n        line.items.map((item) => (item as Literal).string).join('')\n      )).join('\\n');\n  }\n\n  /**\n   * Returns the label of the paragraph. The label is the value of the first section delimiter tag\n   * in the first line.\n   * @returns {string|null}\n   */\n  get label(): string | null {\n    if (this.lines.length === 0) {\n      return null;\n    }\n\n    const startTag = this.lines[0].items.find((item: Item) => item instanceof Tag && item.isSectionDelimiter());\n\n    if (startTag) {\n      return (startTag as Tag).label;\n    }\n\n    return null;\n  }\n\n  /**\n   * Tries to determine the common type for all lines. If the types for all lines are equal, it returns that type.\n   * If not, it returns {@link INDETERMINATE}\n   * For the possible values, see {@link Line.type}\n   * @returns {string}\n   */\n  get type(): string {\n    const types = this.lines.map((line) => line.type);\n    return getCommonValue(types, INDETERMINATE) as string;\n  }\n\n  get selector(): string | null {\n    const selectors =\n      this.lines\n        .map((line) => line.selector)\n        .filter((selector) => selector !== null);\n\n    return getCommonValue(selectors, null);\n  }\n\n  get selectorIsNegated(): boolean {\n    return this.lines.some((line) => line.selectorIsNegated);\n  }\n\n  /**\n   * Indicates whether the paragraph contains lines with renderable items.\n   * @see {@link Line.hasRenderableItems}\n   * @returns {boolean}\n   */\n  hasRenderableItems(): boolean {\n    return this.lines.some((line) => line.hasRenderableItems());\n  }\n\n  isEmpty(): boolean {\n    return this.lines.length === 0;\n  }\n}\n\nexport default Paragraph;\n","/**\n * Represents a parser warning, currently only used by ChordProParser.\n */\nclass ParserWarning {\n  /**\n   * The warning message\n   * @member\n   * @type {string}\n   */\n  message: string;\n\n  /**\n   * The chord sheet line number on which the warning occurred\n   * @member\n   * @type {number}\n   */\n  lineNumber: number | null = null;\n\n  /**\n   * The chord sheet column on which the warning occurred\n   * @member\n   * @type {number}\n   */\n  column: number | null = null;\n\n  /**\n   * @hideconstructor\n   */\n  constructor(message: string, lineNumber: number | null, column: number | null) {\n    this.message = message;\n    this.lineNumber = lineNumber;\n    this.column = column;\n  }\n\n  /**\n   * Returns a stringified version of the warning\n   * @returns {string} The string warning\n   */\n  toString(): string {\n    return `Warning: ${this.message} on line ${this.lineNumber || '?'} column ${this.column || '?'}`;\n  }\n}\n\nexport default ParserWarning;\n","import Font from './font';\nimport FontSize from './font_size';\nimport Tag from './tag';\n\nimport {\n  CHORDCOLOUR,\n  CHORDFONT,\n  CHORDSIZE,\n  TEXTCOLOUR,\n  TEXTFONT,\n  TEXTSIZE,\n} from './tags';\n\nclass FontStack {\n  fontAndColourStacks: Record<string, string[]> = {\n    [CHORDCOLOUR]: [],\n    [CHORDFONT]: [],\n    [TEXTCOLOUR]: [],\n    [TEXTFONT]: [],\n  };\n\n  sizeStacks: Record<string, FontSize[]> = {\n    [CHORDSIZE]: [],\n    [TEXTSIZE]: [],\n  };\n\n  textFont: Font = new Font();\n\n  chordFont: Font = new Font();\n\n  applyTag(tag: Tag) {\n    switch (tag.name) {\n      case TEXTFONT:\n        this.textFont.font = this.pushOrPopTag(tag);\n        break;\n\n      case TEXTSIZE:\n        this.textFont.size = this.pushOrPopSizeTag(tag);\n        break;\n\n      case TEXTCOLOUR:\n        this.textFont.colour = this.pushOrPopTag(tag);\n        break;\n\n      case CHORDFONT:\n        this.chordFont.font = this.pushOrPopTag(tag);\n        break;\n\n      case CHORDSIZE:\n        this.chordFont.size = this.pushOrPopSizeTag(tag);\n        break;\n\n      case CHORDCOLOUR:\n        this.chordFont.colour = this.pushOrPopTag(tag);\n        break;\n\n      default:\n        break;\n    }\n  }\n\n  private pushOrPopTag(tag: Tag): string | null {\n    let { value }: { value: string | null } = tag;\n\n    if (tag.hasValue()) {\n      this.fontAndColourStacks[tag.name].push(value);\n    } else {\n      this.fontAndColourStacks[tag.name].pop();\n      value = this.fontAndColourStacks[tag.name].slice(-1)[0] || null;\n    }\n\n    return value;\n  }\n\n  private pushOrPopSizeTag(tag: Tag): FontSize | null {\n    const { value }: { value: string | null } = tag;\n\n    if (tag.hasValue()) {\n      const parent: FontSize | null = this.sizeStacks[tag.name].slice(-1)[0] || null;\n      const parsedFontSize: FontSize = FontSize.parse(value, parent);\n      this.sizeStacks[tag.name].push(parsedFontSize);\n      return parsedFontSize;\n    }\n\n    this.sizeStacks[tag.name].pop();\n    return this.sizeStacks[tag.name].slice(-1)[0] || null;\n  }\n}\n\nexport default FontStack;\n","import FontStack from './chord_sheet/font_stack';\nimport Item from './chord_sheet/item';\nimport Metadata from './chord_sheet/metadata';\nimport ParserWarning from './parser/parser_warning';\nimport Song from './chord_sheet/song';\nimport Tag from './chord_sheet/tag';\nimport TagInterpreter from './chord_sheet/tag_interpreter';\nimport TraceInfo from './chord_sheet/trace_info';\n\nimport { KEY, NEW_KEY, TRANSPOSE } from './chord_sheet/tags';\nimport Line, { LineType } from './chord_sheet/line';\n\nimport {\n  AUTO, END_TAG, NONE, PART, START_TAG,\n} from './constants';\n\nclass SongBuilder {\n  currentKey: string | null = null;\n\n  currentLine: Line | null = null;\n\n  fontStack: FontStack = new FontStack();\n\n  lines: Line[] = [];\n\n  metadata: Metadata = new Metadata();\n\n  sectionType: string = NONE;\n\n  selector: string | null = null;\n\n  selectorIsNegated = false;\n\n  song: Song;\n\n  transposeKey: string | null = null;\n\n  warnings: ParserWarning[] = [];\n\n  constructor(song: Song) {\n    this.song = song;\n    this.song.lines = this.lines;\n    this.song.warnings = this.warnings;\n  }\n\n  get previousLine(): Line | null {\n    const count = this.lines.length;\n\n    if (count >= 2) {\n      return this.lines[count - 2];\n    }\n\n    return null;\n  }\n\n  addLine(line?: Line): Line {\n    if (line) {\n      this.currentLine = line;\n    } else {\n      this.currentLine = new Line();\n      this.lines.push(this.currentLine);\n    }\n\n    this.setCurrentProperties(this.sectionType, this.selector, this.selectorIsNegated);\n    this.currentLine.transposeKey = this.transposeKey ?? this.currentKey;\n    this.currentLine.key = this.currentKey || this.song.getMetadata().getSingle(KEY);\n    this.currentLine.lineNumber = this.lines.length - 1;\n    return this.currentLine;\n  }\n\n  setCurrentProperties(sectionType: string, selector: string | null = null, isNegated = false): void {\n    if (!this.currentLine) throw new Error('Expected this.currentLine to be present');\n\n    this.currentLine.type = sectionType as LineType;\n    this.currentLine.selector = selector;\n    this.currentLine.selectorIsNegated = isNegated;\n    this.currentLine.textFont = this.fontStack.textFont.clone();\n    this.currentLine.chordFont = this.fontStack.chordFont.clone();\n  }\n\n  addItem(item: Item): void {\n    if (item instanceof Tag) {\n      this.addTag(item);\n    } else {\n      this.ensureLine();\n      if (!this.currentLine) throw new Error('Expected this.currentLine to be present');\n      this.currentLine.addItem(item);\n    }\n  }\n\n  chords(chr: string): void {\n    if (!this.currentLine) throw new Error('Expected this.currentLine to be present');\n    this.currentLine.chords(chr);\n  }\n\n  lyrics(chr: string): void {\n    this.ensureLine();\n    if (!this.currentLine) throw new Error('Expected this.currentLine to be present');\n    this.currentLine.lyrics(chr);\n  }\n\n  addTag(tagContents: string | Tag): Tag {\n    const tag = Tag.parseOrFail(tagContents);\n    this.applyTagOnSong(tag);\n    this.applyTagOnLine(tag);\n    return tag;\n  }\n\n  ensureLine(): void {\n    if (this.currentLine === null) {\n      this.addLine();\n    }\n  }\n\n  private applyTagOnSong(tag: Tag) {\n    if (tag.name === TRANSPOSE) {\n      this.transposeKey = tag.value;\n    } else if (tag.name === NEW_KEY) {\n      this.currentKey = tag.value;\n    } else if (tag.isSectionDelimiter()) {\n      this.setSectionTypeFromTag(tag);\n    } else if (tag.isInlineFontTag()) {\n      this.fontStack.applyTag(tag);\n    }\n  }\n\n  private applyTagOnLine(tag: Tag) {\n    this.ensureLine();\n    if (!this.currentLine) throw new Error('Expected this.currentLine to be present');\n    this.currentLine.addTag(tag);\n  }\n\n  setSectionTypeFromTag(tag: Tag): void {\n    const [tagType, sectionType] = TagInterpreter.interpret(tag.name, tag.value);\n\n    if (!sectionType) {\n      return;\n    }\n\n    if (tagType === START_TAG) {\n      this.startSection(sectionType, tag);\n    } else if (tagType === END_TAG) {\n      this.endSection(sectionType === AUTO ? this.sectionType : sectionType, tag);\n    }\n  }\n\n  startSection(sectionType: string, tag: Tag): void {\n    this.checkCurrentSectionType(NONE, tag);\n    this.selector = tag.selector;\n    this.selectorIsNegated = tag.isNegated;\n\n    if (sectionType === PART && tag.value) {\n      this.sectionType = tag.value.split(' ')[0].toLowerCase();\n    } else {\n      this.sectionType = sectionType;\n    }\n\n    this.setCurrentProperties(sectionType, tag.selector, tag.isNegated);\n  }\n\n  endSection(sectionType: string, tag: Tag): void {\n    this.checkCurrentSectionType(sectionType, tag);\n    this.sectionType = NONE;\n    this.selector = null;\n    this.selectorIsNegated = false;\n  }\n\n  checkCurrentSectionType(sectionType: string, tag: Tag): void {\n    if (this.sectionType !== sectionType && !(sectionType === 'part' && tag.name === 'end_of_part')) {\n      this.addWarning(`Unexpected tag {${tag.originalName}}, current section is: ${this.sectionType}`, tag);\n    }\n  }\n\n  addWarning(message: string, { line, column }: TraceInfo): void {\n    const warning = new ParserWarning(message, line || null, column || null);\n    this.warnings.push(warning);\n  }\n}\n\nexport default SongBuilder;\n","import Item from './item';\nimport Line from './line';\nimport Song from './song';\nimport SongBuilder from '../song_builder';\n\nexport type MapItemsCallback = (_item: Item) => Item | Item[] | null;\n\nclass SongMapper {\n  private song: Song;\n\n  private clonedSong: Song;\n\n  private builder: SongBuilder;\n\n  private addedLine = false;\n\n  constructor(song: Song) {\n    this.song = song;\n    this.clonedSong = new Song();\n    this.builder = new SongBuilder(this.clonedSong);\n  }\n\n  mapItems(func: MapItemsCallback): Song {\n    this.song.lines.forEach((line) => {\n      this.mapLineItems(line, func);\n    });\n\n    return this.clonedSong;\n  }\n\n  private mapLineItems(line: Line, func: MapItemsCallback) {\n    line.items.forEach((item) => {\n      this.mapItem(func, item);\n    });\n\n    if (line.isEmpty()) {\n      this.ensureLine();\n    }\n\n    this.addedLine = false;\n  }\n\n  private mapItem(func: MapItemsCallback, item: Item) {\n    const changedItem = func(item);\n\n    if (changedItem === null) {\n      return;\n    }\n\n    const isArray = Array.isArray(changedItem);\n\n    if (!isArray || changedItem.length > 0) {\n      this.ensureLine();\n    }\n\n    if (isArray) {\n      changedItem.forEach((i) => this.builder.addItem(i));\n    } else {\n      this.builder.addItem(changedItem);\n    }\n  }\n\n  ensureLine() {\n    if (!this.addedLine) {\n      this.builder.addLine();\n      this.addedLine = true;\n    }\n  }\n}\n\nexport default SongMapper;\n","import Chord from '../chord';\nimport Key from '../key';\nimport { NullableChordStyle } from '../constants';\nimport { callChain } from '../utilities';\nimport { transposeDistance } from '../helpers';\n\ninterface ConstructorOptions {\n  capo: number;\n  contextKey: Key | null;\n  decapo: boolean;\n  normalizeChords: boolean;\n  renderKey: Key | null;\n  songKey: Key | null;\n  style: NullableChordStyle;\n  transposeKey: string | null;\n  useUnicodeModifier: boolean;\n}\n\nconst defaultConstructorOptions = {\n  capo: 0,\n  contextKey: null,\n  decapo: false,\n  normalizeChords: true,\n  renderKey: null,\n  songKey: null,\n  style: null,\n  transposeKey: null,\n  useUnicodeModifier: false,\n};\n\nclass ChordRenderer {\n  capo: number;\n\n  contextKey: Key | null;\n\n  normalizeChords: boolean;\n\n  renderKey: Key | null;\n\n  songKey: Key | null;\n\n  style: NullableChordStyle;\n\n  transposeKey: string | null;\n\n  useUnicodeModifier: boolean;\n\n  constructor(options: Partial<ConstructorOptions> = {}) {\n    const config: ConstructorOptions = { ...defaultConstructorOptions, ...options };\n\n    this.capo = config.decapo ? config.capo : 0;\n    this.contextKey = config.contextKey;\n    this.normalizeChords = config.normalizeChords;\n    this.renderKey = config.renderKey;\n    this.songKey = config.songKey;\n    this.style = config.style;\n    this.transposeKey = config.transposeKey;\n    this.useUnicodeModifier = config.useUnicodeModifier;\n  }\n\n  render(chordString: string): string {\n    const chord = Chord.parse(chordString);\n\n    if (!chord) {\n      return chordString;\n    }\n\n    return callChain<Chord>(\n      chord,\n      [\n        (c: Chord) => c.transpose(this.effectiveTransposeDistance),\n        (c: Chord) => (this.accidental ? c.useAccidental(this.accidental) : c),\n        (c: Chord) => (this.normalizeChords ? c.normalize(this.effectiveKey) : c),\n        (c: Chord) => this.changeChordType(c),\n      ],\n    ).toString({ useUnicodeModifier: this.useUnicodeModifier });\n  }\n\n  private changeChordType(chord: Chord): Chord {\n    switch (this.style) {\n      case 'symbol':\n        return chord.toChordSymbol(this.effectiveKey);\n      case 'solfege':\n        return chord.toChordSolfege(this.effectiveKey);\n      case 'numeral':\n        return chord.toNumeral(this.effectiveKey);\n      case 'number':\n        return chord.toNumeric(this.effectiveKey);\n      default:\n        return chord;\n    }\n  }\n\n  private get accidental() {\n    return this.renderKey?.accidental || this.contextKey?.accidental || null;\n  }\n\n  private get effectiveKey() {\n    if (this.renderKey) {\n      return this.renderKey;\n    }\n\n    if (!this.contextKey) {\n      return null;\n    }\n\n    return this.contextKey.transpose(this.effectiveTransposeDistance);\n  }\n\n  private get effectiveTransposeDistance() {\n    let transpose = -1 * this.capo;\n\n    if (this.songKey) {\n      if (this.transposeKey) {\n        transpose += transposeDistance(this.transposeKey, this.songKey);\n      }\n\n      if (this.renderKey) {\n        transpose += Key.distance(this.songKey, this.renderKey);\n      }\n    }\n\n    return transpose;\n  }\n}\n\nexport default ChordRenderer;\n","export const majorKeys: Record<'symbol' | 'solfege', string[]> = {\n  solfege: ['La', 'Sib', 'Si', 'Do', 'Do#', 'Reb', 'Re', 'Mib', 'Mi', 'Fa', 'Fa#', 'Solb', 'Sol', 'Sol#', 'Lab'],\n  symbol: ['A', 'Bb', 'B', 'C', 'C#', 'Db', 'D', 'Eb', 'E', 'F', 'F#', 'Gb', 'G', 'G#', 'Ab'],\n};\n\nexport const minorKeys: Record<'symbol' | 'solfege', string[]> = {\n  solfege: ['Fa#m', 'Solm', 'Sol#m', 'Lam', 'Sibm', 'Sim', 'Dom', 'Do#m', 'Rem', 'Re#m', 'Mibm', 'Mim', 'Fam'],\n  symbol: ['F#m', 'Gm', 'G#m', 'Am', 'Bbm', 'Bm', 'Cm', 'C#m', 'Dm', 'D#m', 'Ebm', 'Em', 'Fm'],\n};\n\nexport const capos: Record<'symbol' | 'solfege', Record<string, Record<string, string>>> = {\n  solfege: {\n    'Sib': {\n      1: 'La', 3: 'Sol', 6: 'Mi', 8: 'Re', 10: 'Do',\n    },\n    'Re': {\n      2: 'Do', 5: 'La', 7: 'Sol', 10: 'Mi',\n    },\n    'Mib': {\n      1: 'Re', 3: 'Do', 6: 'La', 8: 'Sol',\n    },\n    'Db': {\n      1: 'Do', 4: 'La', 6: 'Sol', 9: 'Mi',\n    },\n    'Do#': {\n      1: 'Do', 4: 'La', 6: 'Sol', 9: 'Mi',\n    },\n    'Mi': {\n      2: 'Re', 4: 'Do', 7: 'La', 9: 'Sol',\n    },\n    'Fa': {\n      1: 'Mi', 3: 'Re', 5: 'Do', 6: 'Si', 8: 'La', 10: 'Sol',\n    },\n    'Fa#': {\n      2: 'Mi', 4: 'Re', 6: 'Do', 7: 'Si', 9: 'La',\n    },\n    'Solb': {\n      2: 'Mi', 4: 'Re', 6: 'Do', 7: 'Si', 9: 'La',\n    },\n    'Sol': {\n      3: 'Mi', 5: 'Re', 7: 'Do', 8: 'Si', 10: 'La',\n    },\n    'Sol#': {\n      1: 'Sol', 4: 'Mi', 6: 'Re', 8: 'Do',\n    },\n    'Lab': {\n      1: 'Sol', 4: 'Mi', 6: 'Re', 8: 'Do',\n    },\n    'La': {\n      2: 'Sol', 5: 'Mi', 7: 'Re', 9: 'Do',\n    },\n    'Si': {\n      2: 'La', 4: 'Sol', 7: 'Mi', 9: 'Re',\n    },\n    'Do': {\n      3: 'La', 5: 'Sol', 8: 'Mi', 10: 'Re',\n    },\n    'Lam': { 3: 'Fa#m', 5: 'Mim', 7: 'Rem' },\n    'Sibm': {\n      1: 'Lam', 4: 'Fa#m', 6: 'Mim', 8: 'Rem',\n    },\n    'Sim': { 2: 'Lam', 5: 'Fa#m', 7: 'Mim' },\n    'Dom': {\n      1: 'Sim', 3: 'Lam', 6: 'Fa#m', 8: 'Mim',\n    },\n    'Do#m': {\n      2: 'Sim', 4: 'Lam', 7: 'Fa#m', 9: 'Mim',\n    },\n    'Rem': { 3: 'Sim', 5: 'Lam', 8: 'Fa#m' },\n    'Mibm': { 1: 'Rem', 4: 'Sim', 6: 'Lam' },\n    'Re#m': { 1: 'Rem', 4: 'Sim', 6: 'Lam' },\n  },\n  symbol: {\n    'Bb': {\n      1: 'A', 3: 'G', 6: 'E', 8: 'D', 10: 'C',\n    },\n    'D': {\n      2: 'C', 5: 'A', 7: 'G', 10: 'E',\n    },\n    'Eb': {\n      1: 'D', 3: 'C', 6: 'A', 8: 'G',\n    },\n    'Db': {\n      1: 'C', 4: 'A', 6: 'G', 9: 'E',\n    },\n    'C#': {\n      1: 'C', 4: 'A', 6: 'G', 9: 'E',\n    },\n    'E': {\n      2: 'D', 4: 'C', 7: 'A', 9: 'G',\n    },\n    'F': {\n      1: 'E', 3: 'D', 5: 'C', 6: 'B', 8: 'A', 10: 'G',\n    },\n    'F#': {\n      2: 'E', 4: 'D', 6: 'C', 7: 'B', 9: 'A',\n    },\n    'Gb': {\n      2: 'E', 4: 'D', 6: 'C', 7: 'B', 9: 'A',\n    },\n    'G': {\n      3: 'E', 5: 'D', 7: 'C', 8: 'B', 10: 'A',\n    },\n    'G#': {\n      1: 'G', 4: 'E', 6: 'D', 8: 'C',\n    },\n    'Ab': {\n      1: 'G', 4: 'E', 6: 'D', 8: 'C',\n    },\n    'A': {\n      2: 'G', 5: 'E', 7: 'D', 9: 'C',\n    },\n    'B': {\n      2: 'A', 4: 'G', 7: 'E', 9: 'D',\n    },\n    'C': {\n      3: 'A', 5: 'G', 8: 'E', 10: 'D',\n    },\n    'Am': { 3: 'F#m', 5: 'Em', 7: 'Dm' },\n    'Bbm': {\n      1: 'Am', 4: 'F#m', 6: 'Em', 8: 'Dm',\n    },\n    'Bm': { 2: 'Am', 5: 'F#m', 7: 'Em' },\n    'Cm': {\n      1: 'Bm', 3: 'Am', 6: 'F#m', 8: 'Em',\n    },\n    'C#m': {\n      2: 'Bm', 4: 'Am', 7: 'F#m', 9: 'Em',\n    },\n    'Dm': { 3: 'Bm', 5: 'Am', 8: 'F#m' },\n    'Ebm': { 1: 'Dm', 4: 'Bm', 6: 'Am' },\n    'D#m': { 1: 'Dm', 4: 'Bm', 6: 'Am' },\n  },\n};\n","import ChordRenderer from './formatter/chord_renderer';\nimport FormattingContext from './formatter/formatting_context';\nimport Key from './key';\nimport Line from './chord_sheet/line';\nimport Song from './chord_sheet/song';\n\nimport { NullableChordStyle } from './constants';\nimport { CAPO, CHORD_STYLE } from './chord_sheet/tags';\nimport { capos, majorKeys, minorKeys } from './key_config';\n\nexport function transposeDistance(transposeKey: string, songKey: string | Key): number {\n  if (/^\\d+$/.test(transposeKey)) {\n    return parseInt(transposeKey, 10);\n  }\n\n  return Key.distance(songKey, transposeKey);\n}\n\ninterface RenderChordOptions {\n  renderKey?: Key | null;\n  useUnicodeModifier?: boolean;\n  normalizeChords?: boolean;\n  decapo?: boolean;\n}\n\n/**\n * Renders a chord in the context of a line and song and taking into account some options\n * @param chordString The chord to render\n * @param line The line the chord is in\n * @param song The song the line is in\n * @param renderKey The key to render the chord in. If not provided, the line key will be used,\n * or the song key if the line key is not provided.\n * @param useUnicodeModifier Whether to use unicode modifiers ('\\u266f'/'\\u266d') or plain text ('#'/'b').\n * Default `false`.\n * @param normalizeChords Whether to normalize the chord to the key (default `true`)\n * @param decapo Whether to transpose all chords to eliminate the capo (default `false`)\n */\nexport function renderChord(\n  chordString: string,\n  line: Line,\n  song: Song,\n  {\n    renderKey = null,\n    useUnicodeModifier = false,\n    normalizeChords = true,\n    decapo = false,\n  }: RenderChordOptions = {},\n): string {\n  const capoString = song.metadata.getSingle(CAPO);\n\n  return new ChordRenderer({\n    capo: capoString ? parseInt(capoString, 10) : 0,\n    contextKey: Key.wrap(line.key || song.key),\n    decapo,\n    normalizeChords,\n    renderKey,\n    songKey: Key.wrap(song.key),\n    style: song.metadata.getSingle(CHORD_STYLE) as NullableChordStyle,\n    transposeKey: line.transposeKey,\n    useUnicodeModifier,\n  })\n    .render(chordString);\n}\n\n/**\n * Returns recommended capo positions for the provided key.\n *\n * The returned object maps capo fret numbers to the effective key when using\n * that capo position.\n *\n * @param {Key|string} key The key to get capo positions for.\n * @returns {Object.<string, string>} The available capo positions, keyed by capo fret number.\n */\nexport function getCapos(key: Key | string): Record<string, string> {\n  const keyObj = Key.wrapOrFail(key);\n  const chordType = keyObj.type === 'solfege' ? 'solfege' : 'symbol';\n  return capos[chordType][Key.toString(key)];\n}\n\n/**\n * Returns available transpose target keys for the provided key.\n *\n * The result uses symbol or solfege notation to match the input key, and major\n * or minor keys depending on the input mode.\n *\n * @param {Key|string} key The key to get transpose targets for.\n * @returns {Array<string>} The available target keys.\n */\nexport function getKeys(key: Key | string): string[] {\n  const keyObj = Key.wrapOrFail(key);\n  const chordType = keyObj.type === 'solfege' ? 'solfege' : 'symbol';\n  return keyObj.isMinor() ? minorKeys[chordType] : majorKeys[chordType];\n}\n\nexport function testSelector(\n  { selector, isNegated }: { selector: string, isNegated: boolean },\n  { configuration, metadata }: FormattingContext,\n) {\n  if (selector === configuration.instrument?.type) {\n    return !isNegated;\n  }\n\n  if (selector === configuration.user?.name) {\n    return !isNegated;\n  }\n\n  const metadataValue = metadata.getSingle(selector);\n  const metadataValueTruthy = metadataValue && metadataValue !== '';\n\n  return isNegated ? !metadataValueTruthy : !!metadataValueTruthy;\n}\n","import Configuration from '../formatter/configuration';\n\ntype Provider = () => string | null;\n\nfunction formatDate(date: Date): string {\n  const year = date.getFullYear();\n  const month = String(date.getMonth() + 1).padStart(2, '0');\n  const day = String(date.getDate()).padStart(2, '0');\n  return `${year}-${month}-${day}`;\n}\n\nexport function staticProviders(): Map<string, Provider> {\n  const providers = new Map<string, Provider>();\n  providers.set('chordpro', () => 'ChordPro');\n  providers.set('chordpro.version', () => '14.0.0');\n  providers.set('today', () => formatDate(new Date()));\n  return providers;\n}\n\nexport function configurationProviders(configuration: Configuration): Map<string, Provider> {\n  const providers = staticProviders();\n  const { instrument, user } = configuration;\n\n  providers.set('instrument', () => instrument?.type ?? null);\n  providers.set('instrument.type', () => instrument?.type ?? null);\n  providers.set('instrument.description', () => instrument?.description ?? null);\n  providers.set('tuning', () => instrument?.tuning ?? null);\n  providers.set('user', () => user?.name ?? null);\n  providers.set('user.name', () => user?.name ?? null);\n  providers.set('user.fullname', () => user?.fullname ?? null);\n\n  return providers;\n}\n","import Chord from '../chord';\nimport ChordDefinition from '../chord_definition/chord_definition';\nimport ChordDefinitionSet from '../chord_definition/chord_definition_set';\nimport ChordLyricsPair from './chord_lyrics_pair';\nimport Configuration from '../formatter/configuration';\nimport FormattingContext from '../formatter/formatting_context';\nimport Item from './item';\nimport Key from '../key';\nimport Line from './line';\nimport LineExpander from './line_expander';\nimport Literal from './chord_pro/literal';\nimport Metadata from './metadata';\nimport MetadataAccessors from './metadata_accessors';\nimport Paragraph from './paragraph';\nimport ParserWarning from '../parser/parser_warning';\nimport SongBuilder from '../song_builder';\nimport SongMapper from './song_mapper';\nimport Tag from './tag';\n\nimport { Accidental } from '../constants';\nimport { TEXTBLOCK } from '../constants';\nimport { testSelector } from '../helpers';\nimport { ABC, LILYPOND, SVG } from '../constants';\nimport { CAPO, KEY } from './tags';\nimport { configurationProviders, staticProviders } from './standard_metadata_providers';\nimport { deprecate, filterObject } from '../utilities';\n\ntype MapItemsCallback = (_item: Item) => Item | Item[] | null;\n\n/**\n * Represents a song in a chord sheet. Currently a chord sheet can only have one song.\n */\nclass Song extends MetadataAccessors {\n  /**\n   * The {@link Line} items of which the song consists\n   * @member {Line[]}\n   */\n  lines: Line[] = [];\n\n  _bodyLines: Line[] | null = null;\n\n  _bodyParagraphs: Paragraph[] | null = null;\n\n  _renderParagraphs: Paragraph[] | null = null;\n\n  warnings: ParserWarning[] = [];\n\n  _metadata: Metadata | null = null;\n\n  /**\n   * Creates a new {Song} instance\n   * @param metadata {Record<string, string | string[]>|Metadata} predefined metadata\n   */\n  constructor(metadata: Record<string, string | string[]> | Metadata | null = null) {\n    super();\n\n    if (metadata) {\n      this._metadata = new Metadata(metadata);\n    }\n  }\n\n  /** Returns song lines, skipping leading empty/meta-only lines. @returns {Line[]} */\n  get bodyLines(): Line[] {\n    this._bodyLines ??= this.selectRenderableItems(this.lines) as Line[];\n    return this._bodyLines;\n  }\n\n  /** Returns song paragraphs, skipping paragraphs with only empty lines. @returns {Paragraph[]} */\n  get bodyParagraphs(): Paragraph[] {\n    this._bodyParagraphs ??= this.selectRenderableItems(this.paragraphs) as Paragraph[];\n    return this._bodyParagraphs;\n  }\n\n  get renderParagraphs(): Paragraph[] {\n    return this._renderParagraphs ?? this.bodyParagraphs;\n  }\n\n  set renderParagraphs(paragraphs: Paragraph[]) { this._renderParagraphs = paragraphs; }\n\n  selectRenderableItems(items: (Line | Paragraph)[]): (Line | Paragraph)[] {\n    const copy = [...items];\n    while (copy.length && !copy[0].hasRenderableItems()) copy.shift();\n    return copy;\n  }\n\n  /** The {@link Paragraph} items of which the song consists @member {Paragraph[]} */\n  get paragraphs(): Paragraph[] { return this.linesToParagraphs(this.lines); }\n\n  /** The body paragraphs with any `{chorus}` tag expanded into the targeted chorus */\n  get expandedBodyParagraphs(): Paragraph[] {\n    const expandedLines = this.lines.flatMap((line: Line) => LineExpander.expand(line, this));\n    return this.selectRenderableItems(this.linesToParagraphs(expandedLines)) as Paragraph[];\n  }\n\n  filterParagraphs(paragraphs: Paragraph[], configuration: Configuration): Paragraph[] {\n    const context: FormattingContext = { configuration, metadata: this.metadata };\n\n    return paragraphs.filter((paragraph) => {\n      const { selector, selectorIsNegated } = paragraph;\n\n      if (!selector) return true;\n\n      return testSelector({ selector, isNegated: selectorIsNegated }, context);\n    });\n  }\n\n  linesToParagraphs(lines: Line[]): Paragraph[] {\n    let currentParagraph = new Paragraph();\n    const paragraphs = [currentParagraph];\n    lines.forEach((line, index) => {\n      const nextLine: Line | null = lines[index + 1] || null;\n      if (line.isEmpty() || (line.isSectionEnd() && nextLine && !nextLine.isEmpty())) {\n        currentParagraph = new Paragraph();\n        paragraphs.push(currentParagraph);\n      } else if (line.hasRenderableItems()) {\n        currentParagraph.addLine(line);\n      }\n    });\n    return paragraphs;\n  }\n\n  /** Returns a deep clone of the song @returns {Song} */\n  clone(): Song {\n    const clone = new Song();\n    clone.warnings = [...this.warnings];\n    clone.lines = this.lines.map((line) => line.clone());\n    return clone;\n  }\n\n  getMetadataValue(name: string): string | string[] | null {\n    return this.metadata.getMetadataValue(name);\n  }\n\n  getSingleMetadataValue(name: string): string | null {\n    return this.metadata.getSingleMetadataValue(name);\n  }\n\n  /**\n   * Returns a copy of the song with the key value set to the specified key. It changes:\n   * - the value for `key` in the {@link metadata} set\n   * - any existing `key` directive\n   * @param {number|null} key the key. Passing `null` will:\n   * - remove the current key from {@link metadata}\n   * - remove any `key` directive\n   * @returns {Song} The changed song\n   */\n  setKey(key: string | number | null): Song {\n    const strKey = key ? key.toString() : null;\n    return this.changeMetadata(KEY, strKey);\n  }\n\n  /**\n   * Returns a copy of the song with the key value set to the specified capo. It changes:\n   * - the value for `capo` in the {@link metadata} set\n   * - any existing `capo` directive\n   * @param {number|null} capo the capo. Passing `null` will:\n   * - remove the current key from {@link metadata}\n   * - remove any `capo` directive\n   * @returns {Song} The changed song\n   */\n  setCapo(capo: number | null): Song {\n    const strCapo = capo ? capo.toString() : null;\n    return this.changeMetadata(CAPO, strCapo);\n  }\n\n  private updateDirectives(metadata: Record<string, string | string[] | null>): Song {\n    const updates = { ...metadata };\n\n    const newMetadata: Record<string, string | string[] | null> =\n      filterObject<string | string[] | null>(updates, (key, value) => (\n        value !== null && !this.metadata.contains(key)\n      ));\n\n    const updatedSong = this.changeOrDeleteDirectives(updates);\n    updatedSong.insertDirectives(newMetadata);\n    return updatedSong;\n  }\n\n  private changeOrDeleteDirectives(updates: Record<string, string | string[] | null>) {\n    const pendingUpdates = { ...updates };\n\n    return this.mapItems((item: Item) => {\n      if (!(item instanceof Tag)) {\n        return item;\n      }\n\n      const tag = item as Tag;\n\n      if (!(tag.name in pendingUpdates && tag.isMetaTag())) {\n        return item;\n      }\n\n      const replacementValue = pendingUpdates[tag.name];\n\n      if (replacementValue === null) {\n        return null;\n      }\n\n      pendingUpdates[tag.name] = null;\n\n      return [replacementValue].flat().map((value) => new Tag(tag.name, value));\n    });\n  }\n\n  private insertDirectives(metadata: Record<string, string | string[] | null>, { after = null } = {}): void {\n    const insertIndex = this.findInsertIndex(after);\n    const finalInsertIndex = this.adjustInsertIndex(insertIndex);\n    const newLines = this.createMetadataLines(metadata);\n    const linesToInsert = this.prepareLinesToInsert(newLines, insertIndex, finalInsertIndex);\n    this.spliceLines(finalInsertIndex, linesToInsert);\n  }\n\n  private findInsertIndex(after: string | null): number {\n    return this.lines.findIndex((line) => (\n      line.items.some((item) => this.isInsertionPoint(item, after))\n    ));\n  }\n\n  private isInsertionPoint(item: Item, after: string | null): boolean {\n    if (!(item instanceof Tag)) return true;\n    if (after && item.name === after) return true;\n    return item.isComment() || item.isSectionDelimiter();\n  }\n\n  private adjustInsertIndex(insertIndex: number): number {\n    if (insertIndex <= 0) return insertIndex;\n\n    for (let i = insertIndex - 1; i >= 0; i -= 1) {\n      if (!this.lines[i].isEmpty()) return i + 1;\n    }\n    return 0;\n  }\n\n  private createMetadataLines(metadata: Record<string, string | string[] | null>): Line[] {\n    return Object.keys(metadata).flatMap((name) => {\n      const values = [metadata[name]].flat();\n      return values.map((value) => {\n        const line = new Line();\n        line.addTag(name, value);\n        return line;\n      });\n    });\n  }\n\n  private prepareLinesToInsert(newLines: Line[], insertIndex: number, finalInsertIndex: number): Line[] {\n    const linesToInsert = [...newLines];\n    const hasEmptyLineBetween = insertIndex > finalInsertIndex &&\n      this.lines.slice(finalInsertIndex, insertIndex).some((line) => line.isEmpty());\n\n    if (!hasEmptyLineBetween && newLines.length > 0) {\n      linesToInsert.push(new Line());\n    }\n    return linesToInsert;\n  }\n\n  private spliceLines(index: number, linesToInsert: Line[]): void {\n    const { lines } = this;\n    this.lines = [...lines.slice(0, index), ...linesToInsert, ...lines.slice(index)];\n  }\n\n  /**\n   * Transposes the song by the specified delta. It will:\n   * - transpose all chords, see: {@link Chord#transpose}\n   * - transpose the song key in {@link metadata}\n   * - update any existing `key` directive\n   * @param {number} delta The number of semitones (positive or negative) to transpose with\n   * @param {Object} [options={}] options\n   * @param {boolean} [options.normalizeChordSuffix=false] whether to normalize the chord suffixes after transposing\n   * @returns {Song} The transposed song\n   */\n  transpose(\n    delta: number,\n    { accidental = null, normalizeChordSuffix = false }:\n      { accidental?: Accidental | null, normalizeChordSuffix?: boolean } = {},\n  ): Song {\n    let transposedKey: Key | null = null;\n\n    return this.mapItems((item) => {\n      if (item instanceof Tag && item.name === KEY) {\n        transposedKey = Key.wrapOrFail(item.value).transpose(delta).normalize();\n        if (accidental) transposedKey = transposedKey.useAccidental(accidental);\n        return item.set({ value: transposedKey.toString() });\n      }\n      if (item instanceof ChordLyricsPair) {\n        return Song.transposeChordLyricsPair(item, delta, transposedKey, normalizeChordSuffix, accidental);\n      }\n      if (item instanceof Literal && Song.isMusicalSection(item.parentLine)) {\n        return Song.transposeLiteral(item, delta, transposedKey, normalizeChordSuffix, accidental);\n      }\n      return item;\n    });\n  }\n\n  private static transposeChordLyricsPair(\n    item: ChordLyricsPair,\n    delta: number,\n    transposedKey: Key | null,\n    normalizeChordSuffix: boolean,\n    accidental: Accidental | null,\n  ): ChordLyricsPair {\n    let chord = item.transpose(delta, transposedKey, { normalizeChordSuffix });\n    if (accidental) chord = chord.useAccidental(accidental);\n    return chord;\n  }\n\n  private static transposeLiteral(\n    item: Literal,\n    delta: number,\n    transposedKey: Key | null,\n    normalizeChordSuffix: boolean,\n    accidental: Accidental | null,\n  ): Literal {\n    return Song.mapChordsInLiteral(item, (chord) => {\n      let transposed = chord.transpose(delta);\n      if (transposedKey) transposed = transposed.normalize(transposedKey, { normalizeSuffix: normalizeChordSuffix });\n      if (accidental) transposed = transposed.useAccidental(accidental);\n      return transposed;\n    });\n  }\n\n  /**\n   * Transposes the song up by one semitone. It will:\n   * - transpose all chords, see: {@link Chord#transpose}\n   * - transpose the song key in {@link metadata}\n   * - update any existing `key` directive\n   * @param {Object} [options={}] options\n   * @param {boolean} [options.normalizeChordSuffix=false] whether to normalize the chord suffixes after transposing\n   * @returns {Song} The transposed song\n   */\n  transposeUp({ normalizeChordSuffix = false }: { normalizeChordSuffix?: boolean; } = {}): Song {\n    return this.transpose(1, { normalizeChordSuffix });\n  }\n\n  /**\n   * Transposes the song down by one semitone. It will:\n   * - transpose all chords, see: {@link Chord#transpose}\n   * - transpose the song key in {@link metadata}\n   * - update any existing `key` directive\n   * @param {Object} [options={}] options\n   * @param {boolean} [options.normalizeChordSuffix=false] whether to normalize the chord suffixes after transposing\n   * @returns {Song} The transposed song\n   */\n  transposeDown({ normalizeChordSuffix = false }: { normalizeChordSuffix?: boolean; } = {}): Song {\n    return this.transpose(-1, { normalizeChordSuffix });\n  }\n\n  /**\n   * Returns a copy of the song with the key set to the specified key. It changes:\n   * - the value for `key` in the {@link metadata} set\n   * - any existing `key` directive\n   * - all chords, those are transposed according to the distance between the current and the new key\n   * @param {string} newKey The new key.\n   * @returns {Song} The changed song\n   */\n  changeKey(newKey: string | Key): Song {\n    const currentKey = this.requireCurrentKey();\n    const targetKey = Key.wrapOrFail(newKey);\n    const delta = currentKey.distanceTo(targetKey);\n    return this.transpose(delta, { accidental: targetKey.accidental });\n  }\n\n  /**\n   * Returns a copy of the song with all chords changed to the specified accidental.\n   *\n   * Examples:\n   *\n   * ```js\n   * song.useAccidental('#');\n   * song.useAccidental('b');\n   * ```\n   *\n   * @param {Accidental} accidental the new accidental\n   * @returns {Song} the changed song\n   */\n  useAccidental(accidental: Accidental): Song {\n    const { currentKey } = this;\n    let changedSong = this.mapChordLyricsPairs((pair) => pair.useAccidental(accidental));\n\n    if (currentKey && currentKey.accidental !== accidental) {\n      changedSong = changedSong.changeKey(currentKey.useAccidental(accidental));\n    }\n\n    return changedSong;\n  }\n\n  /**\n   * @deprecated Use useAccidental instead\n   */\n  useModifier(accidental: Accidental): Song {\n    deprecate('useModifier is deprecated, use useAccidental instead');\n    return this.useAccidental(accidental);\n  }\n\n  /**\n   * Returns a copy of the song with all chords normalized to the specified key. See {@link Chord#normalize}.\n   * @param key the key to normalize to\n   * @param options options\n   * @param options.normalizeSuffix whether to normalize the chord suffixes\n   */\n  normalizeChords(\n    key: Key | string | null = null,\n    { normalizeSuffix = true }: { normalizeSuffix?: boolean; } = {},\n  ): Song {\n    return this.changeChords((chord) => chord.normalize(key, { normalizeSuffix }));\n  }\n\n  mapChordLyricsPairs(func: (pair: ChordLyricsPair) => ChordLyricsPair): Song {\n    return this.mapItems((item) => {\n      if (item instanceof ChordLyricsPair) {\n        return func(item);\n      }\n\n      return item;\n    });\n  }\n\n  changeChords(func: (chord: Chord) => Chord): Song {\n    return this.mapItems((item) => {\n      if (item instanceof ChordLyricsPair) {\n        return item.changeChord(func);\n      }\n      if (item instanceof Literal && Song.isMusicalSection(item.parentLine)) {\n        return Song.mapChordsInLiteral(item, func);\n      }\n      return item;\n    });\n  }\n\n  private static isMusicalSection(line: Line | null): boolean {\n    return line === null || ![ABC, LILYPOND, SVG, TEXTBLOCK].includes(line.type);\n  }\n\n  private static mapChordsInLiteral(item: Literal, func: (chord: Chord) => Chord): Literal {\n    // Handle space-separated chords in grid format (e.g., \"|| Am . . | C . |\")\n    const changedString = item.string.replace(/(\\s|^)(\\S+)(?=\\s|$)/g, (_match, space, token) => {\n      const chord = Chord.parse(token);\n      if (!chord) return `${space}${token}`;\n      return `${space}${func(chord).toString()}`;\n    });\n    return new Literal(changedString);\n  }\n\n  get currentKey(): Key | null {\n    return Key.wrap(this.key);\n  }\n\n  requireCurrentKey(): Key {\n    const { currentKey } = this;\n\n    if (!currentKey) {\n      throw new Error(`\nCannot change song key, the original key is unknown.\n\nEither ensure a key directive is present in the song (when using chordpro):\n  \\`{key: C}\\`\n\nOr set the song key before changing key:\n  \\`song.setKey('C');\\``.substring(1));\n    }\n\n    return currentKey;\n  }\n\n  /**\n   * Returns a copy of the song with the directive value(s) set to the specified value(s).\n   * - when there is a matching directive in the song, it will update the directive\n   * - when there is no matching directive, it will be inserted\n   * If `value` is `null` it will act as a delete, any directive matching `name` will be removed.\n   *\n   * @example\n   * ```javascript\n   * song.changeMetadata('author', 'John');\n   * song.changeMetadata('composer', ['Jane', 'John']);\n   * song.changeMetadata('key', null); // Remove key directive\n   * ```\n   * @param name The directive name\n   * @param {string | string[] | null} value The value to set, or `null` to remove the directive\n   * @return {Song} The changed song\n   */\n  changeMetadata(name: string, value: string | string[] | null): Song;\n\n  /**\n   * Returns a copy of the song with the metadata changed. It will:\n   * - update the metadata\n   * - update any existing directive matching the metadata key\n   * - insert a new directive if it does not exist\n   * @example\n   * ```javascript\n   * song.changeMetadata({\n   *   author: 'John',\n   *   composer: ['Jane', 'John'],\n   *   key: null, // Remove key directive\n   * });\n   * ```\n   * @param {Record<string, string | string[] | null>} metadata The metadata to change\n   */\n  changeMetadata(metadata: Record<string, string | string[] | null>): Song;\n\n  changeMetadata(\n    nameOrData: string | Record<string, string | string[] | null>,\n    value?: string | string[] | null,\n  ): Song {\n    if (typeof nameOrData === 'string') {\n      if (typeof value === 'undefined') {\n        throw new Error('Value is required when name is a string');\n      }\n\n      return this.changeMetadata({ [nameOrData]: value });\n    }\n\n    const updatedSong = this.updateDirectives(nameOrData);\n    updatedSong.metadata.assign(nameOrData);\n    return updatedSong;\n  }\n\n  addLine(line: Line) {\n    this.lines.push(line);\n  }\n\n  /**\n   * Change the song contents inline. Return a new {@link Item} to replace it. Return `null` to remove it.\n   * @example\n   * // transpose all chords:\n   * song.mapItems((item) => {\n   *   if (item instanceof ChordLyricsPair) {\n   *     return item.transpose(2, 'D');\n   *   }\n   *\n   *   return item;\n   * });\n   * @param {MapItemsCallback} func the callback function\n   * @returns {Song} the changed song\n   */\n  mapItems(func: MapItemsCallback): Song {\n    return new SongMapper(this).mapItems(func);\n  }\n\n  foreachItem(func: (_item: Item) => void): void {\n    this.lines.forEach((line) => {\n      line.items.forEach(func);\n    });\n  }\n\n  /**\n   * Returns all unique chords used in the song\n   * @returns {string[]} the chords\n   */\n  getChords(): string[] {\n    const chords = new Set<string>();\n\n    this.foreachItem((item: Item) => {\n      if (!(item instanceof ChordLyricsPair)) {\n        return;\n      }\n\n      const itemChords = (item as ChordLyricsPair).chords;\n\n      if (itemChords && itemChords.length > 0) {\n        const parsedChord = Chord.parse(itemChords);\n\n        if (parsedChord) {\n          chords.add(parsedChord.toString());\n        }\n      }\n    });\n\n    return Array.from(chords);\n  }\n\n  /**\n   * Returns all chord definitions from the song.\n   * Definitions are made using the `{chord}` or `{define}` directive.\n   * A chord definitions overrides a previous chord definition for the exact same chord.\n   * @returns {Record<string, ChordDefinition>} the chord definitions\n   * @see https://chordpro.org/chordpro/directives-define/\n   * @see https://chordpro.org/chordpro/directives-chord/\n   */\n  getChordDefinitions(context?: FormattingContext): Record<string, ChordDefinition> {\n    const chordDefinitions: Record<string, ChordDefinition> = {};\n\n    this.foreachItem((item: Item) => {\n      if (!(item instanceof Tag)) {\n        return;\n      }\n\n      const { chordDefinition, selector, isNegated } = (item as Tag);\n\n      if (selector && context && !testSelector({ selector, isNegated }, context)) {\n        return;\n      }\n\n      if (chordDefinition) {\n        chordDefinitions[chordDefinition.name] = chordDefinition.clone();\n      }\n    });\n\n    return chordDefinitions;\n  }\n\n  /**\n   * The song's metadata. When there is only one value for an entry, the value is a string. Else, the value is\n   * an array containing all unique values for the entry.\n   * @type {Metadata}\n   */\n  get metadata(): Metadata {\n    if (!this._metadata) {\n      this._metadata = this.getMetadata();\n    }\n\n    return this._metadata;\n  }\n\n  getMetadata(configuration?: Configuration): Metadata {\n    const metadata = new Metadata();\n\n    const providers = configuration ? configurationProviders(configuration) : staticProviders();\n    providers.forEach((provider, key) => metadata.setProvider(key, provider));\n\n    const chords = () => this.getChords();\n    metadata.setProvider('chords', () => { const c = chords(); return c.length ? c.join(', ') : null; });\n    metadata.setProvider('numchords', () => chords().length.toString());\n    metadata.setProvider('key_actual', () => metadata.getSingle('_key') ?? metadata.getSingle('key'));\n    metadata.setProvider('key_from', () => metadata.getSingle('key'));\n\n    this.foreachItem((item: Item) => {\n      if (!(item instanceof Tag)) {\n        return;\n      }\n\n      const tag = item as Tag;\n\n      if (!tag.isMetaTag()) {\n        return;\n      }\n\n      const { selector, isNegated } = tag;\n\n      if (selector && configuration && !testSelector({ selector, isNegated }, { metadata, configuration })) {\n        return;\n      }\n\n      metadata.add(item.name, item.value);\n    });\n\n    return metadata;\n  }\n\n  get chordDefinitions(): ChordDefinitionSet {\n    return new ChordDefinitionSet(this.getChordDefinitions());\n  }\n\n  /**\n   * Change the song contents inline. Return a new {@link Line} to replace it. Return `null` to remove it.\n   * @example\n   * // remove lines with only Tags:\n   * song.mapLines((line) => {\n   *   if (line.items.every(item => item instanceof Tag)) {\n   *     return null;\n   *   }\n   *\n   *   return line;\n   * });\n   * @param {MapLinesCallback} func the callback function\n   * @returns {Song} the changed song\n   */\n  mapLines(func: (_line: Line) => Line | null): Song {\n    const clonedSong = new Song();\n    const builder = new SongBuilder(clonedSong);\n\n    this.lines.forEach((line) => {\n      const changedLine = func(line);\n\n      if (changedLine) {\n        builder.addLine();\n        changedLine.items.forEach((item) => builder.addItem(item));\n      }\n    });\n\n    return clonedSong;\n  }\n\n  private updateItem(\n    findCallback: (_item: Item) => boolean,\n    updateCallback: (_item: Item) => Item,\n    notFoundCallback: (_song: Song) => Song,\n  ): Song {\n    let found = false;\n\n    const updatedSong = this.mapItems((item) => {\n      if (findCallback(item)) {\n        found = true;\n        return updateCallback(item);\n      }\n\n      return item;\n    });\n\n    if (!found) {\n      return notFoundCallback(updatedSong);\n    }\n\n    return updatedSong;\n  }\n\n  private removeItem(callback: (_item: Item) => boolean): Song {\n    return this.mapLines((line) => {\n      const { items } = line;\n      const index = items.findIndex(callback);\n\n      if (index === -1) {\n        return line;\n      }\n\n      if (items.length === 1) {\n        return null;\n      }\n\n      return line.set({\n        items: [...items.slice(0, index), ...items.slice(index + 1)],\n      });\n    });\n  }\n}\n\nexport default Song;\n","import ChordLyricsPair from '../chord_sheet/chord_lyrics_pair';\nimport Comment from '../chord_sheet/comment';\nimport Evaluatable from '../chord_sheet/chord_pro/evaluatable';\nimport Formatter from './formatter';\nimport Item from '../chord_sheet/item';\nimport Line from '../chord_sheet/line';\nimport Literal from '../chord_sheet/chord_pro/literal';\nimport Metadata from '../chord_sheet/metadata';\nimport SoftLineBreak from '../chord_sheet/soft_line_break';\nimport Song from '../chord_sheet/song';\nimport Tag from '../chord_sheet/tag';\nimport Ternary from '../chord_sheet/chord_pro/ternary';\n\n/**\n * Formats a song into a ChordPro chord sheet\n */\nclass ChordProFormatter extends Formatter {\n  /**\n   * Formats a song into a ChordPro chord sheet.\n   * @param {Song} song The song to be formatted\n   * @returns {string} The ChordPro string\n   */\n  format(song: Song): string {\n    const { lines } = song;\n    const metadata = song.getMetadata(this.configuration);\n    const { metadataLines, contentLines } = this.separateMetadataFromContent(lines);\n    const formattedMetadataLines = this.formatMetadataSection(metadataLines);\n    const formattedContentLines = this.formatContentSection(contentLines, metadata);\n    return this.combineMetadataAndContent(formattedMetadataLines, formattedContentLines);\n  }\n\n  private separateMetadataFromContent(lines: Line[]): { metadataLines: Line[], contentLines: Line[] } {\n    const metadataLines: Line[] = [];\n    const contentLines: Line[] = [];\n    let foundContentLine = false;\n\n    lines.forEach((line) => {\n      const isMetadataLine = line.items.length === 1 &&\n        line.items[0] instanceof Tag &&\n        (line.items[0] as Tag).isMetaTag();\n\n      // Only treat as metadata if it appears before any content line\n      // This preserves contextual directives like key changes within the song\n      if (isMetadataLine && !foundContentLine) {\n        metadataLines.push(line);\n      } else {\n        contentLines.push(line);\n        if (line.hasRenderableItems()) {\n          foundContentLine = true;\n        }\n      }\n    });\n\n    return { metadataLines, contentLines };\n  }\n\n  private formatMetadataSection(metadataLines: Line[]): string[] {\n    return metadataLines.map((line) => {\n      const tag = line.items[0] as Tag;\n\n      if (!tag.isStandardOrCustomMetaTag()) {\n        return `{meta: ${tag.originalName} ${tag.value}}`;\n      }\n      return this.formatTag(tag);\n    });\n  }\n\n  private formatContentSection(contentLines: Line[], metadata: Metadata): string {\n    return contentLines\n      .map((line) => this.formatLine(line, metadata))\n      .join('\\n');\n  }\n\n  private combineMetadataAndContent(formattedMetadataLines: string[], formattedContentLines: string): string {\n    if (formattedMetadataLines.length > 0) {\n      if (formattedContentLines.trim().length > 0) {\n        return `${formattedMetadataLines.join('\\n')}\\n${formattedContentLines}`;\n      }\n      return formattedMetadataLines.join('\\n');\n    }\n\n    return formattedContentLines;\n  }\n\n  formatLine(line: Line, metadata: Metadata): string {\n    return line.items\n      .map((item) => this.formatItem(item, metadata))\n      .join('');\n  }\n\n  formatItem(item: Item, metadata: Metadata): string {\n    type constructor = any;\n    type handlerFunc = any;\n\n    const handlers = new Map<constructor, handlerFunc>([\n      [Tag, (i: Item) => this.formatTag(i as Tag)],\n      [ChordLyricsPair, (i: Item) => this.formatChordLyricsPair(i as ChordLyricsPair)],\n      [Comment, (i: Item) => this.formatComment(i as Comment)],\n      [SoftLineBreak, (_i: Item) => '\\\\ '],\n    ]);\n\n    const handler = handlers.get(item.constructor);\n\n    if (handler) {\n      return handler(item);\n    }\n\n    if ('evaluate' in item) {\n      return this.formatOrEvaluateItem(item, metadata);\n    }\n\n    throw new Error(`Don't know how to format a ${item}`);\n  }\n\n  formatOrEvaluateItem(item: Evaluatable, metadata: Metadata): string {\n    if (this.configuration.evaluate) {\n      return item.evaluate(metadata, this.configuration.metadata.separator);\n    }\n\n    if (item instanceof Ternary) {\n      return this.formatTernary(item);\n    }\n\n    if (item instanceof Literal) {\n      return item.evaluate();\n    }\n\n    throw new Error(`Don't know how to format a ${item.constructor.name}`);\n  }\n\n  formatTernary(ternary: Ternary): string {\n    const {\n      variable,\n      valueTest,\n      trueExpression,\n      falseExpression,\n    } = ternary;\n\n    return [\n      '%{',\n      variable || '',\n      this.formatValueTest(valueTest),\n      this.formatExpressionRange(trueExpression),\n      this.formatExpressionRange(falseExpression),\n      '}',\n    ].join('');\n  }\n\n  formatValueTest(valueTest: string | null): string {\n    if (!valueTest) {\n      return '';\n    }\n\n    return `=${valueTest}`;\n  }\n\n  formatExpressionRange(expressionRange: Evaluatable[]): string {\n    if (!expressionRange.length) {\n      return '';\n    }\n\n    return `|${expressionRange.map((expression) => this.formatExpression(expression)).join('')}`;\n  }\n\n  formatExpression(expression: Evaluatable): string {\n    if (expression instanceof Ternary) {\n      return this.formatTernary(expression);\n    }\n\n    if (expression instanceof Literal) {\n      return expression.string;\n    }\n\n    return '';\n  }\n\n  formatTag(tag: Tag): string {\n    if (tag.hasAttributes()) {\n      return `{${tag.originalName}: ${this.formatTagAttributes(tag)}}`;\n    }\n\n    if (tag.hasValue()) {\n      return `{${tag.originalName}: ${tag.value}}`;\n    }\n\n    return `{${tag.originalName}}`;\n  }\n\n  formatTagAttributes(tag: Tag) {\n    const keys = Object.keys(tag.attributes);\n\n    if (keys.length === 0) {\n      return '';\n    }\n\n    return keys.map((key) => `${key}=\"${tag.attributes[key]}\"`).join(' ');\n  }\n\n  formatChordLyricsPair(chordLyricsPair: ChordLyricsPair): string {\n    return [\n      this.formatChordLyricsPairChords(chordLyricsPair),\n      this.formatChordLyricsPairLyrics(chordLyricsPair),\n    ].join('');\n  }\n\n  formatChordLyricsPairChords(chordLyricsPair: ChordLyricsPair): string {\n    if (chordLyricsPair.chords) {\n      const chordObj = chordLyricsPair.chord;\n      if (!chordObj) {\n        return `[${chordLyricsPair.chords}]`;\n      }\n\n      const finalChord = this.configuration.normalizeChords ? chordObj.normalize() : chordObj;\n      return `[${finalChord}]`;\n    }\n\n    if (chordLyricsPair.annotation) {\n      return `[*${chordLyricsPair.annotation}]`;\n    }\n\n    return '';\n  }\n\n  formatChordLyricsPairLyrics(chordLyricsPair: ChordLyricsPair): string {\n    return chordLyricsPair.lyrics || '';\n  }\n\n  formatComment(comment: Comment): string {\n    return `#${comment.content}`;\n  }\n}\n\nexport default ChordProFormatter;\n","import ChordLyricsPair from './chord_lyrics_pair';\nimport Comment from './comment';\nimport Evaluatable from './chord_pro/evaluatable';\nimport Literal from './chord_pro/literal';\nimport SoftLineBreak from './soft_line_break';\nimport Tag from './tag';\nimport Ternary from './chord_pro/ternary';\n\ntype AstType = ChordLyricsPair | Comment | Tag | Ternary | Evaluatable | Literal | SoftLineBreak;\n\nexport default AstType;\n","import AstType from './chord_sheet/ast_type';\nimport Chord from './chord';\nimport ChordDefinition from './chord_definition/chord_definition';\nimport ChordLyricsPair from './chord_sheet/chord_lyrics_pair';\nimport Comment from './chord_sheet/comment';\nimport Evaluatable from './chord_sheet/chord_pro/evaluatable';\nimport Item from './chord_sheet/item';\nimport Line from './chord_sheet/line';\nimport Literal from './chord_sheet/chord_pro/literal';\nimport SoftLineBreak from './chord_sheet/soft_line_break';\nimport Song from './chord_sheet/song';\nimport SongBuilder from './song_builder';\nimport Tag from './chord_sheet/tag';\nimport Ternary from './chord_sheet/chord_pro/ternary';\n\nimport { warn } from './utilities';\n\nimport {\n  SerializedChordDefinition,\n  SerializedChordLyricsPair,\n  SerializedComment,\n  SerializedComponent,\n  SerializedItem,\n  SerializedLine, SerializedLiteral,\n  SerializedSong,\n  SerializedTag, SerializedTernary,\n} from './serialized_types';\n\nconst CHORD_LYRICS_PAIR = 'chordLyricsPair';\nconst CHORD_SHEET = 'chordSheet';\nconst COMMENT = 'comment';\nconst LINE = 'line';\nconst SOFT_LINE_BREAK = 'softLineBreak';\nconst TAG = 'tag';\nconst TERNARY = 'ternary';\n\n/**\n * Serializes a song into een plain object, and deserializes the serialized object back into a {@link Song}\n */\nclass ChordSheetSerializer {\n  song: Song = new Song();\n\n  songBuilder: SongBuilder = new SongBuilder(this.song);\n\n  /**\n   * Serializes the chord sheet to a plain object, which can be converted to any format like JSON, XML etc\n   * Can be deserialized using {@link deserialize}\n   * @returns object A plain JS object containing all chord sheet data\n   */\n  serialize(song: Song): SerializedSong {\n    return {\n      type: CHORD_SHEET,\n      lines: song.lines.map((line) => this.serializeLine(line)),\n    };\n  }\n\n  serializeLine(line: Line): SerializedLine {\n    return {\n      type: LINE,\n      items: line.items.map((item) => this.serializeItem(item) as SerializedItem),\n    };\n  }\n\n  serializeItem(item: AstType): SerializedComponent {\n    type constructor = any;\n    type handler = any;\n\n    const serializers = new Map<constructor, handler>([\n      [Tag, this.serializeTag.bind(this)],\n      [ChordLyricsPair, this.serializeChordLyricsPair.bind(this)],\n      [Ternary, this.serializeTernary.bind(this)],\n      [Literal, this.serializeLiteral.bind(this)],\n      [Comment, this.serializeComment.bind(this)],\n      [SoftLineBreak, () => ({ type: SOFT_LINE_BREAK })],\n    ]);\n\n    const serializer = serializers.get(item.constructor);\n\n    if (!serializer) {\n      throw new Error(`Don't know how to serialize ${item.constructor.name}`);\n    }\n\n    return serializer(item);\n  }\n\n  serializeChordDefinition(chordDefinition: ChordDefinition): SerializedChordDefinition {\n    return {\n      name: chordDefinition.name,\n      baseFret: chordDefinition.baseFret,\n      frets: chordDefinition.frets,\n      fingers: chordDefinition.fingers,\n    };\n  }\n\n  serializeTag(tag: Tag): SerializedTag {\n    const serializedTag: SerializedTag = {\n      type: TAG,\n      name: tag.originalName,\n      value: tag.value,\n      attributes: tag.attributes || {},\n    };\n\n    if (tag.chordDefinition) {\n      serializedTag.chordDefinition = this.serializeChordDefinition(tag.chordDefinition);\n    }\n\n    return serializedTag;\n  }\n\n  serializeChordLyricsPair(chordLyricsPair: ChordLyricsPair): SerializedChordLyricsPair {\n    const serialized: SerializedChordLyricsPair = {\n      type: CHORD_LYRICS_PAIR,\n      chords: chordLyricsPair.chords,\n      chord: null,\n      lyrics: chordLyricsPair.lyrics,\n      annotation: chordLyricsPair.annotation,\n    };\n\n    if (chordLyricsPair.isRhythmSymbol) {\n      serialized.isRhythmSymbol = true;\n    }\n\n    return serialized;\n  }\n\n  serializeTernary(ternary: Ternary): object {\n    return {\n      type: TERNARY,\n      variable: ternary.variable,\n      valueTest: ternary.valueTest,\n      trueExpression: this.serializeExpression(ternary.trueExpression),\n      falseExpression: this.serializeExpression(ternary.falseExpression),\n    };\n  }\n\n  serializeLiteral(literal: Literal) {\n    return literal.string;\n  }\n\n  serializeExpression(expression: AstType[]) {\n    return expression.map((part) => this.serializeItem(part));\n  }\n\n  serializeComment(comment: Comment): SerializedComment {\n    return { type: COMMENT, comment: comment.content };\n  }\n\n  /**\n   * Deserializes a song that has been serialized using {@link serialize}\n   * @param {object} serializedSong The serialized song\n   * @returns {Song} The deserialized song\n   */\n  deserialize(serializedSong: SerializedSong): Song {\n    this.parseAstComponent(serializedSong);\n    return this.song;\n  }\n\n  parseAstComponent(astComponent: SerializedComponent)\n    : null | ChordLyricsPair | Tag | Comment | Ternary | Literal | SoftLineBreak {\n    if (typeof astComponent === 'string') return new Literal(astComponent);\n\n    switch (astComponent.type) {\n      case CHORD_SHEET:\n        this.parseChordSheet(astComponent);\n        break;\n      case CHORD_LYRICS_PAIR:\n        return this.parseChordLyricsPair(astComponent);\n      case COMMENT:\n        return this.parseComment(astComponent);\n      case SOFT_LINE_BREAK:\n        return new SoftLineBreak();\n      case TAG:\n        return this.parseTag(astComponent);\n      case TERNARY:\n        return this.parseTernary(astComponent);\n      case LINE:\n        this.parseLine(astComponent);\n        break;\n      default:\n        warn(`Unhandled AST component \"${astComponent.type}\"`);\n    }\n\n    return null;\n  }\n\n  parseChordSheet(astComponent: SerializedSong): void {\n    const { lines } = astComponent;\n    this.song = new Song();\n    this.songBuilder = new SongBuilder(this.song);\n    lines.forEach((line) => this.parseAstComponent(line));\n  }\n\n  parseLine(astComponent: SerializedLine): void {\n    const { items } = astComponent;\n    this.songBuilder.addLine();\n\n    items.forEach((item) => {\n      const parsedItem = this.parseAstComponent(item) as Item;\n      this.songBuilder.addItem(parsedItem);\n    });\n  }\n\n  parseChordLyricsPair(astComponent: SerializedChordLyricsPair): ChordLyricsPair {\n    const {\n      chord, chords, lyrics, annotation, isRhythmSymbol,\n    } = astComponent;\n\n    return new ChordLyricsPair(\n      chord ? new Chord(chord).toString() : chords,\n      lyrics,\n      annotation,\n      null,\n      isRhythmSymbol || false,\n    );\n  }\n\n  parseTag(astComponent: SerializedTag): Tag {\n    const {\n      name,\n      value,\n      location: { offset = null, line = null, column = null } = {},\n      chordDefinition,\n      attributes,\n      selector,\n      isNegated,\n    } = astComponent;\n    const tag = new Tag(name, value, { line, column, offset }, attributes);\n    tag.selector = selector || null;\n    tag.isNegated = isNegated || false;\n\n    if (chordDefinition) {\n      tag.chordDefinition = new ChordDefinition(\n        chordDefinition.name,\n        chordDefinition.baseFret,\n        chordDefinition.frets,\n        chordDefinition.fingers,\n      );\n    }\n\n    return tag;\n  }\n\n  parseComment(astComponent: SerializedComment): Comment {\n    const { comment } = astComponent;\n    return new Comment(comment);\n  }\n\n  parseTernary(astComponent: SerializedTernary): Ternary {\n    const {\n      variable,\n      valueTest,\n      trueExpression,\n      falseExpression,\n      location: { offset = null, line = null, column = null } = {},\n    } = astComponent;\n\n    return new Ternary({\n      variable,\n      valueTest,\n      trueExpression: this.parseExpression(trueExpression) as Evaluatable[],\n      falseExpression: this.parseExpression(falseExpression) as Evaluatable[],\n      offset,\n      line,\n      column,\n    });\n  }\n\n  parseExpression(expression: (SerializedLiteral | SerializedTernary)[]): (AstType | null)[] {\n    return (expression || [])\n      .map((part) => this.parseAstComponent(part))\n      .filter((part) => part !== null);\n  }\n}\n\nexport default ChordSheetSerializer;\n","class NullTracer {\n  trace() {}\n}\n\nexport default NullTracer;\n","import {\n  SerializedChordLyricsPair,\n  SerializedItem,\n  SerializedLine,\n  SerializedSoftLineBreak,\n  SerializedTag,\n} from '../../serialized_types';\n\nimport { FileRange } from './peg_parser';\n\nfunction splitSectionContent(content: string): string[] {\n  return content\n    .replace(/\\n$/, '')\n    .split('\\n');\n}\n\nexport function buildLine(items: any[]): SerializedLine {\n  return {\n    type: 'line',\n    items,\n  };\n}\n\nexport function buildSection(startTag: SerializedTag, endTag: SerializedTag, content: string): SerializedLine[] {\n  return [\n    buildLine([startTag]),\n    ...splitSectionContent(content).map((line: string) => buildLine([line])),\n    buildLine([endTag]),\n  ];\n}\n\nexport function buildTag(\n  name: string,\n  value: Partial<{ value: string | null, attributes: Record<string, string>}> | null,\n  selector: { value: string | null, isNegated: boolean } | null,\n  location: FileRange,\n): SerializedTag {\n  return {\n    type: 'tag',\n    name,\n    location: location.start,\n    value: value?.value || '',\n    attributes: value?.attributes || {},\n    selector: selector?.value,\n    isNegated: selector?.isNegated,\n  };\n}\n\nexport function stringSplitReplace(\n  string: string,\n  search: string,\n  replaceMatch: (subString: string) => any,\n  replaceRest: (subString: string) => any = (subString) => subString,\n): any[] {\n  const regExp = new RegExp(search, 'g');\n  const occurrences = Array.from(string.matchAll(regExp));\n  const result: string[] = [];\n  let index = 0;\n\n  occurrences.forEach((match) => {\n    const before = string.slice(index, match.index);\n    if (before !== '') result.push(replaceRest(before));\n    result.push(replaceMatch(match[0]));\n    index = match.index + match[0].length;\n  });\n\n  const rest = string.slice(index);\n  if (rest !== '') result.push(replaceRest(rest));\n\n  return result;\n}\n\nexport function applySoftLineBreaks(lyrics: string): SerializedChordLyricsPair[] {\n  return stringSplitReplace(\n    lyrics,\n    '\\xa0',\n    () => ({ type: 'softLineBreak' }),\n    (lyric) => ({ type: 'chordLyricsPair', chords: '', lyrics: lyric }),\n  ) as SerializedChordLyricsPair[];\n}\n\nexport function breakChordLyricsPairOnSoftLineBreak(\n  chords: string,\n  lyrics: string,\n): (SerializedChordLyricsPair | SerializedSoftLineBreak)[] {\n  const pairs =\n    applySoftLineBreaks(lyrics || '') as (SerializedChordLyricsPair | SerializedSoftLineBreak)[];\n  const [_first, ...rest] = pairs;\n  let first = pairs[0];\n  let addedLeadingChord: SerializedChordLyricsPair | null = null;\n\n  if (chords !== '') {\n    if (!first || first.type === 'softLineBreak') {\n      addedLeadingChord = { type: 'chordLyricsPair', chords, lyrics: '' };\n    } else {\n      first = { ...first, chords };\n    }\n  }\n\n  return [addedLeadingChord, first || null, ...rest].filter((item) => item !== null);\n}\n\nfunction isChordLyricsPair(item: SerializedItem): boolean {\n  return typeof item !== 'string' && item.type === 'chordLyricsPair';\n}\n\nfunction combinableChordLyricsPairs(itemA: SerializedItem, itemB: SerializedItem): boolean {\n  return (\n    isChordLyricsPair(itemA) &&\n    isChordLyricsPair(itemB) &&\n    (itemA as SerializedChordLyricsPair).chords.length > 0 &&\n    (itemB as SerializedChordLyricsPair).chords.length === 0\n  );\n}\n\nfunction combineLyrics(pairA: SerializedChordLyricsPair, pairB: SerializedChordLyricsPair): SerializedChordLyricsPair {\n  return {\n    ...pairA,\n    lyrics: `${pairA.lyrics}${pairB.lyrics}`,\n  };\n}\n\nexport function combineChordLyricsPairs(items: SerializedItem[], chopFirstWord?: boolean): SerializedItem[] {\n  if (chopFirstWord !== false) {\n    return items;\n  }\n\n  const combinedItems: SerializedItem[] = [];\n\n  for (let i = 0, { length } = items; i < length; i += 1) {\n    if (items[i + 1] && combinableChordLyricsPairs(items[i], items[i + 1])) {\n      combinedItems.push(\n        combineLyrics(\n          items[i] as SerializedChordLyricsPair as SerializedChordLyricsPair,\n          items[i + 1] as SerializedChordLyricsPair as SerializedChordLyricsPair,\n        ),\n      );\n\n      i += 1;\n    } else {\n      combinedItems.push(items[i]);\n    }\n  }\n\n  return combinedItems;\n}\n","import * as helpers from './helpers';\n\n\n// Generated by peggy v. 5.1.0 (ts-pegjs plugin v. 3.1.0 )\n//\n// https://peggyjs.org/   https://github.com/metadevpro/ts-pegjs\n\n\"use strict\";\n\nexport interface FilePosition {\n  offset: number;\n  line: number;\n  column: number;\n}\n\nexport interface FileRange {\n  start: FilePosition;\n  end: FilePosition;\n  source: string;\n}\n\nexport interface LiteralExpectation {\n  type: \"literal\";\n  text: string;\n  ignoreCase: boolean;\n}\n\nexport interface ClassParts extends Array<string | ClassParts> {}\n\nexport interface ClassExpectation {\n  type: \"class\";\n  parts: ClassParts;\n  inverted: boolean;\n  ignoreCase: boolean;\n}\n\nexport interface AnyExpectation {\n  type: \"any\";\n}\n\nexport interface EndExpectation {\n  type: \"end\";\n}\n\nexport interface OtherExpectation {\n  type: \"other\";\n  description: string;\n}\n\nexport type Expectation = LiteralExpectation | ClassExpectation | AnyExpectation | EndExpectation | OtherExpectation;\n\nfunction peg$padEnd(str: string, targetLength: number, padString: string) {\n  padString = padString || ' ';\n  if (str.length > targetLength) {\n    return str;\n  }\n  targetLength -= str.length;\n  padString += padString.repeat(targetLength);\n  return str + padString.slice(0, targetLength);\n}\n\nexport class PeggySyntaxError extends Error {\n  public static buildMessage(expected: Expectation[], found: string | null) {\n    function hex(ch: string): string {\n      return ch.charCodeAt(0).toString(16).toUpperCase();\n    }\n\n    function literalEscape(s: string): string {\n      return s\n        .replace(/\\\\/g, \"\\\\\\\\\")\n        .replace(/\"/g,  \"\\\\\\\"\")\n        .replace(/\\0/g, \"\\\\0\")\n        .replace(/\\t/g, \"\\\\t\")\n        .replace(/\\n/g, \"\\\\n\")\n        .replace(/\\r/g, \"\\\\r\")\n        .replace(/[\\x00-\\x0F]/g,            (ch) => \"\\\\x0\" + hex(ch) )\n        .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\"  + hex(ch) );\n    }\n\n    function classEscape(s: string): string {\n      return s\n        .replace(/\\\\/g, \"\\\\\\\\\")\n        .replace(/\\]/g, \"\\\\]\")\n        .replace(/\\^/g, \"\\\\^\")\n        .replace(/-/g,  \"\\\\-\")\n        .replace(/\\0/g, \"\\\\0\")\n        .replace(/\\t/g, \"\\\\t\")\n        .replace(/\\n/g, \"\\\\n\")\n        .replace(/\\r/g, \"\\\\r\")\n        .replace(/[\\x00-\\x0F]/g,            (ch) => \"\\\\x0\" + hex(ch) )\n        .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\"  + hex(ch) );\n    }\n\n    function describeExpectation(expectation: Expectation) {\n      switch (expectation.type) {\n        case \"literal\":\n          return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n        case \"class\":\n          const escapedParts = expectation.parts.map((part) => {\n            return Array.isArray(part)\n              ? classEscape(part[0] as string) + \"-\" + classEscape(part[1] as string)\n              : classEscape(part);\n          });\n\n          return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts + \"]\";\n        case \"any\":\n          return \"any character\";\n        case \"end\":\n          return \"end of input\";\n        case \"other\":\n          return expectation.description;\n      }\n    }\n\n    function describeExpected(expected1: Expectation[]) {\n      const descriptions = expected1.map(describeExpectation);\n      let i: number;\n      let j: number;\n\n      descriptions.sort();\n\n      if (descriptions.length > 0) {\n        for (i = 1, j = 1; i < descriptions.length; i++) {\n          if (descriptions[i - 1] !== descriptions[i]) {\n            descriptions[j] = descriptions[i];\n            j++;\n          }\n        }\n        descriptions.length = j;\n      }\n\n      switch (descriptions.length) {\n        case 1:\n          return descriptions[0];\n\n        case 2:\n          return descriptions[0] + \" or \" + descriptions[1];\n\n        default:\n          return descriptions.slice(0, -1).join(\", \")\n            + \", or \"\n            + descriptions[descriptions.length - 1];\n      }\n    }\n\n    function describeFound(found1: string | null) {\n      return found1 ? \"\\\"\" + literalEscape(found1) + \"\\\"\" : \"end of input\";\n    }\n\n    return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n  }\n\n  public message: string;\n  public expected: Expectation[];\n  public found: string | null;\n  public location: FileRange;\n  public name: string;\n\n  constructor(message: string, expected: Expectation[], found: string | null, location: FileRange) {\n    super();\n    this.message = message;\n    this.expected = expected;\n    this.found = found;\n    this.location = location;\n    this.name = \"PeggySyntaxError\";\n\n    if (typeof (Object as any).setPrototypeOf === \"function\") {\n      (Object as any).setPrototypeOf(this, PeggySyntaxError.prototype);\n    } else {\n      (this as any).__proto__ = PeggySyntaxError.prototype;\n    }\n    if (typeof (Error as any).captureStackTrace === \"function\") {\n      (Error as any).captureStackTrace(this, PeggySyntaxError);\n    }\n  }\n\n  format(sources: { grammarSource?: string; text: string }[]): string {\n    let str = 'Error: ' + this.message;\n    if (this.location) {\n      let src: string[] | null = null;\n      let k;\n      for (k = 0; k < sources.length; k++) {\n        if (sources[k].grammarSource === this.location.source) {\n          src = sources[k].text.split(/\\r\\n|\\n|\\r/g);\n          break;\n        }\n      }\n      let s = this.location.start;\n      let loc = this.location.source + ':' + s.line + ':' + s.column;\n      if (src) {\n        let e = this.location.end;\n        let filler = peg$padEnd('', s.line.toString().length, ' ');\n        let line = src[s.line - 1];\n        let last = s.line === e.line ? e.column : line.length + 1;\n        str += '\\n --> ' + loc + '\\n' + filler + ' |\\n' + s.line + ' | ' + line + '\\n' + filler + ' | ' +\n          peg$padEnd('', s.column - 1, ' ') +\n          peg$padEnd('', last - s.column, '^');\n      } else {\n        str += '\\n at ' + loc;\n      }\n    }\n    return str;\n  }\n}\n\nfunction peg$parse(input: string, options?: ParseOptions) {\n  options = options !== undefined ? options : {};\n\n  const peg$FAILED: Readonly<any> = {};\n  const peg$source = options.grammarSource;\n\n  const peg$startRuleFunctions: {[id: string]: any} = { ChordSheet: peg$parseChordSheet };\n  let peg$startRuleFunction: () => any = peg$parseChordSheet;\n\n  const peg$c0 = function(lines: any, trailingLine: any): any {\n        return {\n          type: 'chordSheet',\n          lines: [...lines, trailingLine].flat(),\n        };\n      };\n  const peg$c1 = function(component: any): any {\n        return component;\n      };\n  const peg$c2 = function(lyrics: any, tokens: any, chords: any, comment: any): any {\n        return helpers.buildLine([\n            lyrics ? { type: 'chordLyricsPair', chords: '', lyrics } : null,\n            ...helpers.combineChordLyricsPairs(tokens.flat(), options.chopFirstWord),\n            chords ? { type: 'chordLyricsPair', chords, lyrics: '' } : null,\n            comment ? { type: 'comment', comment } : null,\n          ].filter(x => x !== null),\n        );\n      };\n  const peg$c3 = function(lyrics: any): any {\n        return helpers.applySoftLineBreaks(lyrics);\n      };\n  const peg$c4 = \"#\";\n  const peg$c5 = peg$literalExpectation(\"#\", false);\n  const peg$c6 = /^[^\\r\\n]/;\n  const peg$c7 = peg$classExpectation([\"\\r\", \"\\n\"], true, false);\n  const peg$c8 = function(comment: any): any {\n        return comment;\n      };\n  const peg$c9 = function(annotation: any, lyrics: any, space: any): any {\n        return {\n          type: 'chordLyricsPair',\n          annotation: annotation || '',\n          lyrics: lyrics + (space || ''),\n        };\n      };\n  const peg$c10 = function(chords: any, lyrics: any, space: any): any {\n        const mergedLyrics = lyrics.map(c => c.char || c).join('') + (space || '');\n        return helpers.breakChordLyricsPairOnSoftLineBreak(chords || '', mergedLyrics);\n      };\n  const peg$c11 = function(lyrics: any): any {\n        return lyrics.map(c => c.char || c).join('');\n      };\n  const peg$c12 = \"[*\";\n  const peg$c13 = peg$literalExpectation(\"[*\", false);\n  const peg$c14 = \"]\";\n  const peg$c15 = peg$literalExpectation(\"]\", false);\n  const peg$c16 = function(annotation: any): any {\n        return annotation.map(c => c.char || c).join('');\n      };\n  const peg$c17 = \"[\";\n  const peg$c18 = peg$literalExpectation(\"[\", false);\n  const peg$c19 = function(chords: any): any {\n        return chords.map(c => c.char || c).join('');\n      };\n  const peg$c20 = /^[^\\]\\r\\n]/;\n  const peg$c21 = peg$classExpectation([\"]\", \"\\r\", \"\\n\"], true, false);\n  const peg$c22 = \"\\\\\";\n  const peg$c23 = peg$literalExpectation(\"\\\\\", false);\n  const peg$c24 = function(): any { return { type: 'char', char: '\\\\' }; };\n  const peg$c25 = function(): any { return { type: 'char', char: ']'  }; };\n  const peg$c26 = function(sequence: any): any {\n        return sequence;\n      };\n  const peg$c27 = \"%{\";\n  const peg$c28 = peg$literalExpectation(\"%{\", false);\n  const peg$c29 = \"}\";\n  const peg$c30 = peg$literalExpectation(\"}\", false);\n  const peg$c31 = function(variableName: any, valueTest: any, expressions: any): any {\n        return {\n          type: 'ternary',\n          variable: variableName.length > 0 ? variableName : null,\n          valueTest,\n          ...expressions,\n          location: location().start,\n        };\n      };\n  const peg$c32 = \"=\";\n  const peg$c33 = peg$literalExpectation(\"=\", false);\n  const peg$c34 = function(testValue: any): any {\n        return testValue;\n      };\n  const peg$c35 = \"|\";\n  const peg$c36 = peg$literalExpectation(\"|\", false);\n  const peg$c37 = function(trueExpression: any, falseExpression: any): any {\n        return {\n          type: 'ternary',\n          trueExpression,\n          falseExpression,\n          location: location().start,\n        };\n      };\n  const peg$c38 = function(falseExpression: any): any {\n        return falseExpression;\n      };\n  const peg$c39 = /^[a-zA-Z0-9\\-_]/;\n  const peg$c40 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"], \"-\", \"_\"], false, false);\n  const peg$c41 = \"%\";\n  const peg$c42 = peg$literalExpectation(\"%\", false);\n  const peg$c43 = \"{\";\n  const peg$c44 = peg$literalExpectation(\"{\", false);\n  const peg$c45 = function(): any { return { type: 'char', char: '%'    }; };\n  const peg$c46 = function(): any { return { type: 'char', char: ']'    }; };\n  const peg$c47 = function(): any { return { type: 'char', char: '|'    }; };\n  const peg$c48 = function(): any { return { type: 'char', char: '\\x7d' }; };\n  const peg$c49 = /^[^|[\\]\\\\{}%#\\r\\n\\t ]/;\n  const peg$c50 = peg$classExpectation([\"|\", \"[\", \"]\", \"\\\\\", \"{\", \"}\", \"%\", \"#\", \"\\r\", \"\\n\", \"\\t\", \" \"], true, false);\n  const peg$c51 = function(): any { return { type: 'char', char: '\\\\'   }; };\n  const peg$c52 = function(): any { return { type: 'char', char: '['    }; };\n  const peg$c53 = function(): any { return { type: 'char', char: '\\x7b' }; };\n  const peg$c54 = function(): any { return { type: 'char', char: '#'    }; };\n  const peg$c55 = \" \";\n  const peg$c56 = peg$literalExpectation(\" \", false);\n  const peg$c57 = function(): any { return { type: 'char', char: (options?.softLineBreaks ? '\\xa0' : ' ') }; };\n  const peg$c58 = \"chord\";\n  const peg$c59 = peg$literalExpectation(\"chord\", false);\n  const peg$c60 = \"define\";\n  const peg$c61 = peg$literalExpectation(\"define\", false);\n  const peg$c62 = \":\";\n  const peg$c63 = peg$literalExpectation(\":\", false);\n  const peg$c64 = function(name: any, selector: any, value: any): any {\n        const { text, ...chordDefinition } = value;\n\n        return {\n          type: 'tag',\n          name,\n          value: text,\n          chordDefinition,\n          location: location().start,\n          selector: selector?.value,\n          isNegated: selector?.isNegated,\n        };\n      };\n  const peg$c65 = function(tagName: any, selector: any, tagValue: any): any {\n        return helpers.buildTag(tagName, tagValue, selector, location());\n      };\n  const peg$c66 = \"-\";\n  const peg$c67 = peg$literalExpectation(\"-\", false);\n  const peg$c68 = function(value: any, negator: any): any {\n        return {\n          value,\n          isNegated: !!negator,\n        };\n      };\n  const peg$c69 = \"!\";\n  const peg$c70 = peg$literalExpectation(\"!\", false);\n  const peg$c71 = function(): any {\n        return true;\n      };\n  const peg$c72 = function(tagValue: any): any {\n        return tagValue;\n      };\n  const peg$c73 = function(value: any): any {\n        return { value: value };\n      };\n  const peg$c74 = function(attributes: any): any {\n        return { attributes: attributes };\n      };\n  const peg$c75 = function(attributes: any): any {\n        const obj = {};\n\n        attributes.forEach((pair) => {\n          obj[pair[0]] = pair[1];\n        });\n\n        return obj;\n      };\n  const peg$c76 = function(attribute: any): any {\n        return attribute;\n      };\n  const peg$c77 = function(name: any, value: any): any {\n        return [name, value];\n      };\n  const peg$c78 = /^[a-zA-Z_]/;\n  const peg$c79 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], \"_\"], false, false);\n  const peg$c80 = function(chars: any): any {\n        return chars.map(c => c.char || c).join('');\n      };\n  const peg$c81 = /^[^}\\\\\\r\\n]/;\n  const peg$c82 = peg$classExpectation([\"}\", \"\\\\\", \"\\r\", \"\\n\"], true, false);\n  const peg$c83 = /^[a-zA-Z\\-_]/;\n  const peg$c84 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], \"-\", \"_\"], false, false);\n  const peg$c85 = \"\\\"\";\n  const peg$c86 = peg$literalExpectation(\"\\\"\", false);\n  const peg$c87 = function(value: any): any {\n        return value;\n      };\n  const peg$c88 = /^[^\"}]/;\n  const peg$c89 = peg$classExpectation([\"\\\"\", \"}\"], true, false);\n  const peg$c90 = function(): any { return { type: 'char', char: '\"' }; };\n  const peg$c91 = \"frets\";\n  const peg$c92 = peg$literalExpectation(\"frets\", false);\n  const peg$c93 = function(name: any, baseFret: any, frets: any, fingers: any): any {\n        return {\n          name,\n          baseFret: baseFret || 1,\n          frets,\n          fingers,\n          text: text()\n        };\n      };\n  const peg$c94 = \"/\";\n  const peg$c95 = peg$literalExpectation(\"/\", false);\n  const peg$c96 = /^[A-Ga-g]/;\n  const peg$c97 = peg$classExpectation([[\"A\", \"G\"], [\"a\", \"g\"]], false, false);\n  const peg$c98 = /^[b#\\u266D\\u266F]/;\n  const peg$c99 = peg$classExpectation([\"b\", \"#\", \"\\u266D\", \"\\u266F\"], false, false);\n  const peg$c100 = \"es\";\n  const peg$c101 = peg$literalExpectation(\"es\", false);\n  const peg$c102 = \"s\";\n  const peg$c103 = peg$literalExpectation(\"s\", false);\n  const peg$c104 = \"is\";\n  const peg$c105 = peg$literalExpectation(\"is\", false);\n  const peg$c106 = /^[a-zA-Z0-9#\\u266Fb\\u266D()+\\-\\/\\xF8\\u0394\\u2212]/;\n  const peg$c107 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"], \"#\", \"\\u266F\", \"b\", \"\\u266D\", \"(\", \")\", \"+\", \"-\", \"/\", \"\\xF8\", \"\\u0394\", \"\\u2212\"], false, false);\n  const peg$c108 = \"base-fret\";\n  const peg$c109 = peg$literalExpectation(\"base-fret\", false);\n  const peg$c110 = function(baseFret: any): any {\n        return baseFret;\n      };\n  const peg$c111 = \"fingers\";\n  const peg$c112 = peg$literalExpectation(\"fingers\", false);\n  const peg$c113 = function(fingers: any): any {\n        return fingers;\n      };\n  const peg$c114 = function(finger: any): any {\n        return finger;\n      };\n  const peg$c115 = /^[\\-A-Za-z]/;\n  const peg$c116 = peg$classExpectation([\"-\", [\"A\", \"Z\"], [\"a\", \"z\"]], false, false);\n  const peg$c117 = /^[0-9]/;\n  const peg$c118 = peg$classExpectation([[\"0\", \"9\"]], false, false);\n  const peg$c119 = function(number: any): any {\n        return parseInt(number, 10);\n      };\n  const peg$c120 = function(fret: any): any {\n        return fret;\n      };\n  const peg$c121 = \"0\";\n  const peg$c122 = peg$literalExpectation(\"0\", false);\n  const peg$c123 = function(): any {\n        return 0;\n      };\n  const peg$c124 = \"-1\";\n  const peg$c125 = peg$literalExpectation(\"-1\", false);\n  const peg$c126 = /^[NXnx]/;\n  const peg$c127 = peg$classExpectation([\"N\", \"X\", \"n\", \"x\"], false, false);\n  const peg$c128 = function(startTag: any, content: any, endTag: any): any {\n        return helpers.buildSection(startTag, endTag, content);\n      };\n  const peg$c129 = \"start_of_abc\";\n  const peg$c130 = peg$literalExpectation(\"start_of_abc\", false);\n  const peg$c131 = function(tagName: any, selector: any, tagColonWithValue: any): any {\n        return helpers.buildTag(tagName, tagColonWithValue, selector, location());\n      };\n  const peg$c132 = \"end_of_abc\";\n  const peg$c133 = peg$literalExpectation(\"end_of_abc\", false);\n  const peg$c134 = function(tagName: any): any {\n        return helpers.buildTag(tagName, null, null, location());\n      };\n  const peg$c135 = \"start_of_grid\";\n  const peg$c136 = peg$literalExpectation(\"start_of_grid\", false);\n  const peg$c137 = \"sog\";\n  const peg$c138 = peg$literalExpectation(\"sog\", false);\n  const peg$c139 = \"end_of_grid\";\n  const peg$c140 = peg$literalExpectation(\"end_of_grid\", false);\n  const peg$c141 = \"eog\";\n  const peg$c142 = peg$literalExpectation(\"eog\", false);\n  const peg$c143 = \"start_of_ly\";\n  const peg$c144 = peg$literalExpectation(\"start_of_ly\", false);\n  const peg$c145 = \"end_of_ly\";\n  const peg$c146 = peg$literalExpectation(\"end_of_ly\", false);\n  const peg$c147 = \"start_of_svg\";\n  const peg$c148 = peg$literalExpectation(\"start_of_svg\", false);\n  const peg$c149 = \"end_of_svg\";\n  const peg$c150 = peg$literalExpectation(\"end_of_svg\", false);\n  const peg$c151 = \"start_of_tab\";\n  const peg$c152 = peg$literalExpectation(\"start_of_tab\", false);\n  const peg$c153 = \"sot\";\n  const peg$c154 = peg$literalExpectation(\"sot\", false);\n  const peg$c155 = \"end_of_tab\";\n  const peg$c156 = peg$literalExpectation(\"end_of_tab\", false);\n  const peg$c157 = \"eot\";\n  const peg$c158 = peg$literalExpectation(\"eot\", false);\n  const peg$c159 = \"start_of_textblock\";\n  const peg$c160 = peg$literalExpectation(\"start_of_textblock\", false);\n  const peg$c161 = \"end_of_textblock\";\n  const peg$c162 = peg$literalExpectation(\"end_of_textblock\", false);\n  const peg$c163 = peg$anyExpectation();\n  const peg$c164 = peg$otherExpectation(\"whitespace\");\n  const peg$c165 = peg$otherExpectation(\"optional whitespace\");\n  const peg$c166 = /^[ \\t\\n\\r]/;\n  const peg$c167 = peg$classExpectation([\" \", \"\\t\", \"\\n\", \"\\r\"], false, false);\n  const peg$c168 = peg$otherExpectation(\"space\");\n  const peg$c169 = /^[ \\t]/;\n  const peg$c170 = peg$classExpectation([\" \", \"\\t\"], false, false);\n  const peg$c171 = /^[\\n\\r]/;\n  const peg$c172 = peg$classExpectation([\"\\n\", \"\\r\"], false, false);\n  const peg$c173 = \"\\n\";\n  const peg$c174 = peg$literalExpectation(\"\\n\", false);\n  const peg$c175 = \"\\r\";\n  const peg$c176 = peg$literalExpectation(\"\\r\", false);\n\n  let peg$currPos = 0;\n  let peg$savedPos = 0;\n  const peg$posDetailsCache = [{ line: 1, column: 1 }];\n  let peg$maxFailPos = 0;\n  let peg$maxFailExpected: Expectation[] = [];\n  let peg$silentFails = 0;\n\n  let peg$result;\n\n  if (options.startRule !== undefined) {\n    if (!(options.startRule in peg$startRuleFunctions)) {\n      throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n    }\n\n    peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n  }\n\n  function text(): string {\n    return input.substring(peg$savedPos, peg$currPos);\n  }\n\n  function location(): FileRange {\n    return peg$computeLocation(peg$savedPos, peg$currPos);\n  }\n\n  function expected(description: string, location1?: FileRange) {\n    location1 = location1 !== undefined\n      ? location1\n      : peg$computeLocation(peg$savedPos, peg$currPos);\n\n    throw peg$buildStructuredError(\n      [peg$otherExpectation(description)],\n      input.substring(peg$savedPos, peg$currPos),\n      location1\n    );\n  }\n\n  function error(message: string, location1?: FileRange) {\n    location1 = location1 !== undefined\n      ? location1\n      : peg$computeLocation(peg$savedPos, peg$currPos);\n\n    throw peg$buildSimpleError(message, location1);\n  }\n\n  function peg$literalExpectation(text1: string, ignoreCase: boolean): LiteralExpectation {\n    return { type: \"literal\", text: text1, ignoreCase: ignoreCase };\n  }\n\n  function peg$classExpectation(parts: ClassParts, inverted: boolean, ignoreCase: boolean): ClassExpectation {\n    return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n  }\n\n  function peg$anyExpectation(): AnyExpectation {\n    return { type: \"any\" };\n  }\n\n  function peg$endExpectation(): EndExpectation {\n    return { type: \"end\" };\n  }\n\n  function peg$otherExpectation(description: string): OtherExpectation {\n    return { type: \"other\", description: description };\n  }\n\n  function peg$computePosDetails(pos: number) {\n    let details = peg$posDetailsCache[pos];\n    let p;\n\n    if (details) {\n      return details;\n    } else {\n      p = pos - 1;\n      while (!peg$posDetailsCache[p]) {\n        p--;\n      }\n\n      details = peg$posDetailsCache[p];\n      details = {\n        line: details.line,\n        column: details.column\n      };\n\n      while (p < pos) {\n        if (input.charCodeAt(p) === 10) {\n          details.line++;\n          details.column = 1;\n        } else {\n          details.column++;\n        }\n\n        p++;\n      }\n\n      peg$posDetailsCache[pos] = details;\n\n      return details;\n    }\n  }\n\n  function peg$computeLocation(startPos: number, endPos: number): FileRange {\n    const startPosDetails = peg$computePosDetails(startPos);\n    const endPosDetails = peg$computePosDetails(endPos);\n\n    return {\n      source: peg$source,\n      start: {\n        offset: startPos,\n        line: startPosDetails.line,\n        column: startPosDetails.column\n      },\n      end: {\n        offset: endPos,\n        line: endPosDetails.line,\n        column: endPosDetails.column\n      }\n    };\n  }\n\n  function peg$fail(expected1: Expectation) {\n    if (peg$currPos < peg$maxFailPos) { return; }\n\n    if (peg$currPos > peg$maxFailPos) {\n      peg$maxFailPos = peg$currPos;\n      peg$maxFailExpected = [];\n    }\n\n    peg$maxFailExpected.push(expected1);\n  }\n\n  function peg$buildSimpleError(message: string, location1: FileRange) {\n    return new PeggySyntaxError(message, [], \"\", location1);\n  }\n\n  function peg$buildStructuredError(expected1: Expectation[], found: string | null, location1: FileRange) {\n    return new PeggySyntaxError(\n      PeggySyntaxError.buildMessage(expected1, found),\n      expected1,\n      found,\n      location1\n    );\n  }\n\n  function peg$parseChordSheet(): any {\n    let s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = [];\n    s2 = peg$parseComponentWithNewline();\n    while (s2 as any !== peg$FAILED) {\n      s1.push(s2);\n      s2 = peg$parseComponentWithNewline();\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseComponent();\n      if (s2 as any === peg$FAILED) {\n        s2 = null;\n      }\n      if (s2 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c0(s1, s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseComponentWithNewline(): any {\n    let s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = peg$parseComponent();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseNewLine();\n      if (s2 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c1(s1);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseComponent(): any {\n    let s0;\n\n    s0 = peg$parseSection();\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$parseLine();\n    }\n\n    return s0;\n  }\n\n  function peg$parseLine(): any {\n    let s0, s1, s2, s3, s4, s5, s6;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    s2 = peg$parseLyrics();\n    if (s2 as any === peg$FAILED) {\n      s2 = null;\n    }\n    if (s2 as any !== peg$FAILED) {\n      s1 = input.substring(s1, peg$currPos);\n    } else {\n      s1 = s2;\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$parseToken();\n      while (s3 as any !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$parseToken();\n      }\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseChord();\n        if (s3 as any === peg$FAILED) {\n          s3 = null;\n        }\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parseComment();\n          if (s4 as any === peg$FAILED) {\n            s4 = null;\n          }\n          if (s4 as any !== peg$FAILED) {\n            s5 = [];\n            s6 = peg$parseSpace();\n            while (s6 as any !== peg$FAILED) {\n              s5.push(s6);\n              s6 = peg$parseSpace();\n            }\n            if (s5 as any !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c2(s1, s2, s3, s4);\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseToken(): any {\n    let s0, s1;\n\n    s0 = peg$parseChordDefinition();\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$parseTag();\n      if (s0 as any === peg$FAILED) {\n        s0 = peg$parseAnnotationLyricsPair();\n        if (s0 as any === peg$FAILED) {\n          s0 = peg$parseChordLyricsPair();\n          if (s0 as any === peg$FAILED) {\n            s0 = peg$parseMetaTernary();\n            if (s0 as any === peg$FAILED) {\n              s0 = peg$currPos;\n              s1 = peg$parseLyrics();\n              if (s1 as any !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c3(s1);\n              }\n              s0 = s1;\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseComment(): any {\n    let s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$parseSpace();\n    if (s1 as any === peg$FAILED) {\n      s1 = null;\n    }\n    if (s1 as any !== peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 35) {\n        s2 = peg$c4;\n        peg$currPos++;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c5); }\n      }\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$currPos;\n        s4 = [];\n        if (peg$c6.test(input.charAt(peg$currPos))) {\n          s5 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c7); }\n        }\n        while (s5 as any !== peg$FAILED) {\n          s4.push(s5);\n          if (peg$c6.test(input.charAt(peg$currPos))) {\n            s5 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c7); }\n          }\n        }\n        if (s4 as any !== peg$FAILED) {\n          s3 = input.substring(s3, peg$currPos);\n        } else {\n          s3 = s4;\n        }\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c8(s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseAnnotationLyricsPair(): any {\n    let s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$parseAnnotation();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$currPos;\n      s3 = [];\n      s4 = peg$parseLyrics();\n      while (s4 as any !== peg$FAILED) {\n        s3.push(s4);\n        s4 = peg$parseLyrics();\n      }\n      if (s3 as any !== peg$FAILED) {\n        s2 = input.substring(s2, peg$currPos);\n      } else {\n        s2 = s3;\n      }\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$currPos;\n        s4 = [];\n        s5 = peg$parseSpace();\n        while (s5 as any !== peg$FAILED) {\n          s4.push(s5);\n          s5 = peg$parseSpace();\n        }\n        if (s4 as any !== peg$FAILED) {\n          s3 = input.substring(s3, peg$currPos);\n        } else {\n          s3 = s4;\n        }\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c9(s1, s2, s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordLyricsPair(): any {\n    let s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$parseChord();\n    if (s1 as any !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$parseLyricsChar();\n      while (s3 as any !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$parseLyricsChar();\n      }\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$currPos;\n        s4 = [];\n        s5 = peg$parseSpace();\n        while (s5 as any !== peg$FAILED) {\n          s4.push(s5);\n          s5 = peg$parseSpace();\n        }\n        if (s4 as any !== peg$FAILED) {\n          s3 = input.substring(s3, peg$currPos);\n        } else {\n          s3 = s4;\n        }\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c10(s1, s2, s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseLyrics(): any {\n    let s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = [];\n    s2 = peg$parseLyricsCharOrSpace();\n    if (s2 as any !== peg$FAILED) {\n      while (s2 as any !== peg$FAILED) {\n        s1.push(s2);\n        s2 = peg$parseLyricsCharOrSpace();\n      }\n    } else {\n      s1 = peg$FAILED;\n    }\n    if (s1 as any !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c11(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parseLyricsCharOrSpace(): any {\n    let s0;\n\n    s0 = peg$parseLyricsChar();\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$parseSpace();\n    }\n\n    return s0;\n  }\n\n  function peg$parseAnnotation(): any {\n    let s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    peg$silentFails++;\n    s2 = peg$parseEscape();\n    peg$silentFails--;\n    if (s2 as any === peg$FAILED) {\n      s1 = undefined;\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 as any !== peg$FAILED) {\n      if (input.substr(peg$currPos, 2) === peg$c12) {\n        s2 = peg$c12;\n        peg$currPos += 2;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c13); }\n      }\n      if (s2 as any !== peg$FAILED) {\n        s3 = [];\n        s4 = peg$parseChordChar();\n        if (s4 as any !== peg$FAILED) {\n          while (s4 as any !== peg$FAILED) {\n            s3.push(s4);\n            s4 = peg$parseChordChar();\n          }\n        } else {\n          s3 = peg$FAILED;\n        }\n        if (s3 as any !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 93) {\n            s4 = peg$c14;\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c15); }\n          }\n          if (s4 as any !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c16(s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChord(): any {\n    let s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    peg$silentFails++;\n    s2 = peg$parseEscape();\n    peg$silentFails--;\n    if (s2 as any === peg$FAILED) {\n      s1 = undefined;\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 as any !== peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 91) {\n        s2 = peg$c17;\n        peg$currPos++;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c18); }\n      }\n      if (s2 as any !== peg$FAILED) {\n        s3 = [];\n        s4 = peg$parseChordChar();\n        while (s4 as any !== peg$FAILED) {\n          s3.push(s4);\n          s4 = peg$parseChordChar();\n        }\n        if (s3 as any !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 93) {\n            s4 = peg$c14;\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c15); }\n          }\n          if (s4 as any !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c19(s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordChar(): any {\n    let s0, s1, s2, s3;\n\n    if (peg$c20.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c21); }\n    }\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parseEscape();\n      if (s1 as any !== peg$FAILED) {\n        s2 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 92) {\n          s3 = peg$c22;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c23); }\n        }\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s2;\n          s3 = peg$c24();\n        }\n        s2 = s3;\n        if (s2 as any === peg$FAILED) {\n          s2 = peg$currPos;\n          if (input.charCodeAt(peg$currPos) === 93) {\n            s3 = peg$c14;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c15); }\n          }\n          if (s3 as any !== peg$FAILED) {\n            peg$savedPos = s2;\n            s3 = peg$c25();\n          }\n          s2 = s3;\n        }\n        if (s2 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c26(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseMetaTernary(): any {\n    let s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n    s0 = peg$currPos;\n    if (input.substr(peg$currPos, 2) === peg$c27) {\n      s1 = peg$c27;\n      peg$currPos += 2;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c28); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$currPos;\n        s4 = peg$parseMetaVariableName();\n        if (s4 as any === peg$FAILED) {\n          s4 = null;\n        }\n        if (s4 as any !== peg$FAILED) {\n          s3 = input.substring(s3, peg$currPos);\n        } else {\n          s3 = s4;\n        }\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parseMetaValueTest();\n          if (s4 as any === peg$FAILED) {\n            s4 = null;\n          }\n          if (s4 as any !== peg$FAILED) {\n            s5 = peg$parse_();\n            if (s5 as any !== peg$FAILED) {\n              s6 = peg$parseMetaTernaryTrueFalseExpressions();\n              if (s6 as any === peg$FAILED) {\n                s6 = null;\n              }\n              if (s6 as any !== peg$FAILED) {\n                s7 = peg$parse_();\n                if (s7 as any !== peg$FAILED) {\n                  if (input.charCodeAt(peg$currPos) === 125) {\n                    s8 = peg$c29;\n                    peg$currPos++;\n                  } else {\n                    s8 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c30); }\n                  }\n                  if (s8 as any !== peg$FAILED) {\n                    peg$savedPos = s0;\n                    s1 = peg$c31(s3, s4, s6);\n                    s0 = s1;\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseMetaValueTest(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 61) {\n      s1 = peg$c32;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c33); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseMetaTestValue();\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c34(s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseMetaTestValue(): any {\n    let s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = [];\n    s2 = peg$parseChar();\n    if (s2 as any !== peg$FAILED) {\n      while (s2 as any !== peg$FAILED) {\n        s1.push(s2);\n        s2 = peg$parseChar();\n      }\n    } else {\n      s1 = peg$FAILED;\n    }\n    if (s1 as any !== peg$FAILED) {\n      s0 = input.substring(s0, peg$currPos);\n    } else {\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseMetaTernaryTrueFalseExpressions(): any {\n    let s0, s1, s2, s3, s4, s5, s6;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 124) {\n      s1 = peg$c35;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c36); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseMetaExpression();\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parse_();\n          if (s4 as any !== peg$FAILED) {\n            s5 = peg$parseMetaTernaryFalseExpression();\n            if (s5 as any === peg$FAILED) {\n              s5 = null;\n            }\n            if (s5 as any !== peg$FAILED) {\n              s6 = peg$parse_();\n              if (s6 as any !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c37(s3, s5);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseMetaTernaryFalseExpression(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 124) {\n      s1 = peg$c35;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c36); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseMetaExpression();\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c38(s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseMetaVariableName(): any {\n    let s0, s1;\n\n    s0 = [];\n    if (peg$c39.test(input.charAt(peg$currPos))) {\n      s1 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c40); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      while (s1 as any !== peg$FAILED) {\n        s0.push(s1);\n        if (peg$c39.test(input.charAt(peg$currPos))) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c40); }\n        }\n      }\n    } else {\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseMetaExpression(): any {\n    let s0, s1, s2, s3;\n\n    s0 = [];\n    s1 = peg$currPos;\n    s2 = [];\n    s3 = peg$parseChar();\n    if (s3 as any !== peg$FAILED) {\n      while (s3 as any !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$parseChar();\n      }\n    } else {\n      s2 = peg$FAILED;\n    }\n    if (s2 as any !== peg$FAILED) {\n      s1 = input.substring(s1, peg$currPos);\n    } else {\n      s1 = s2;\n    }\n    if (s1 as any === peg$FAILED) {\n      s1 = peg$parseMetaTernary();\n    }\n    if (s1 as any !== peg$FAILED) {\n      while (s1 as any !== peg$FAILED) {\n        s0.push(s1);\n        s1 = peg$currPos;\n        s2 = [];\n        s3 = peg$parseChar();\n        if (s3 as any !== peg$FAILED) {\n          while (s3 as any !== peg$FAILED) {\n            s2.push(s3);\n            s3 = peg$parseChar();\n          }\n        } else {\n          s2 = peg$FAILED;\n        }\n        if (s2 as any !== peg$FAILED) {\n          s1 = input.substring(s1, peg$currPos);\n        } else {\n          s1 = s2;\n        }\n        if (s1 as any === peg$FAILED) {\n          s1 = peg$parseMetaTernary();\n        }\n      }\n    } else {\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseLyricsChar(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$parseWordChar();\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 37) {\n        s1 = peg$c41;\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c42); }\n      }\n      if (s1 as any !== peg$FAILED) {\n        s2 = peg$currPos;\n        peg$silentFails++;\n        if (input.charCodeAt(peg$currPos) === 123) {\n          s3 = peg$c43;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c44); }\n        }\n        peg$silentFails--;\n        if (s3 as any === peg$FAILED) {\n          s2 = undefined;\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n        if (s2 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c45();\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n      if (s0 as any === peg$FAILED) {\n        s0 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 93) {\n          s1 = peg$c14;\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c15); }\n        }\n        if (s1 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c46();\n        }\n        s0 = s1;\n        if (s0 as any === peg$FAILED) {\n          s0 = peg$currPos;\n          if (input.charCodeAt(peg$currPos) === 124) {\n            s1 = peg$c35;\n            peg$currPos++;\n          } else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c36); }\n          }\n          if (s1 as any !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c47();\n          }\n          s0 = s1;\n          if (s0 as any === peg$FAILED) {\n            s0 = peg$currPos;\n            if (input.charCodeAt(peg$currPos) === 125) {\n              s1 = peg$c29;\n              peg$currPos++;\n            } else {\n              s1 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c30); }\n            }\n            if (s1 as any !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c48();\n            }\n            s0 = s1;\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseChar(): any {\n    let s0;\n\n    s0 = peg$parseWordChar();\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$parseSpace();\n    }\n\n    return s0;\n  }\n\n  function peg$parseWordChar(): any {\n    let s0, s1, s2, s3;\n\n    if (peg$c49.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c50); }\n    }\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parseEscape();\n      if (s1 as any !== peg$FAILED) {\n        s2 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 92) {\n          s3 = peg$c22;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c23); }\n        }\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s2;\n          s3 = peg$c51();\n        }\n        s2 = s3;\n        if (s2 as any === peg$FAILED) {\n          s2 = peg$currPos;\n          if (input.charCodeAt(peg$currPos) === 124) {\n            s3 = peg$c35;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c36); }\n          }\n          if (s3 as any !== peg$FAILED) {\n            peg$savedPos = s2;\n            s3 = peg$c47();\n          }\n          s2 = s3;\n          if (s2 as any === peg$FAILED) {\n            s2 = peg$currPos;\n            if (input.charCodeAt(peg$currPos) === 91) {\n              s3 = peg$c17;\n              peg$currPos++;\n            } else {\n              s3 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c18); }\n            }\n            if (s3 as any !== peg$FAILED) {\n              peg$savedPos = s2;\n              s3 = peg$c52();\n            }\n            s2 = s3;\n            if (s2 as any === peg$FAILED) {\n              s2 = peg$currPos;\n              if (input.charCodeAt(peg$currPos) === 93) {\n                s3 = peg$c14;\n                peg$currPos++;\n              } else {\n                s3 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c15); }\n              }\n              if (s3 as any !== peg$FAILED) {\n                peg$savedPos = s2;\n                s3 = peg$c46();\n              }\n              s2 = s3;\n              if (s2 as any === peg$FAILED) {\n                s2 = peg$currPos;\n                if (input.charCodeAt(peg$currPos) === 123) {\n                  s3 = peg$c43;\n                  peg$currPos++;\n                } else {\n                  s3 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c44); }\n                }\n                if (s3 as any !== peg$FAILED) {\n                  peg$savedPos = s2;\n                  s3 = peg$c53();\n                }\n                s2 = s3;\n                if (s2 as any === peg$FAILED) {\n                  s2 = peg$currPos;\n                  if (input.charCodeAt(peg$currPos) === 125) {\n                    s3 = peg$c29;\n                    peg$currPos++;\n                  } else {\n                    s3 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c30); }\n                  }\n                  if (s3 as any !== peg$FAILED) {\n                    peg$savedPos = s2;\n                    s3 = peg$c48();\n                  }\n                  s2 = s3;\n                  if (s2 as any === peg$FAILED) {\n                    s2 = peg$currPos;\n                    if (input.charCodeAt(peg$currPos) === 37) {\n                      s3 = peg$c41;\n                      peg$currPos++;\n                    } else {\n                      s3 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$c42); }\n                    }\n                    if (s3 as any !== peg$FAILED) {\n                      peg$savedPos = s2;\n                      s3 = peg$c45();\n                    }\n                    s2 = s3;\n                    if (s2 as any === peg$FAILED) {\n                      s2 = peg$currPos;\n                      if (input.charCodeAt(peg$currPos) === 35) {\n                        s3 = peg$c4;\n                        peg$currPos++;\n                      } else {\n                        s3 = peg$FAILED;\n                        if (peg$silentFails === 0) { peg$fail(peg$c5); }\n                      }\n                      if (s3 as any !== peg$FAILED) {\n                        peg$savedPos = s2;\n                        s3 = peg$c54();\n                      }\n                      s2 = s3;\n                      if (s2 as any === peg$FAILED) {\n                        s2 = peg$currPos;\n                        if (input.charCodeAt(peg$currPos) === 32) {\n                          s3 = peg$c55;\n                          peg$currPos++;\n                        } else {\n                          s3 = peg$FAILED;\n                          if (peg$silentFails === 0) { peg$fail(peg$c56); }\n                        }\n                        if (s3 as any !== peg$FAILED) {\n                          peg$savedPos = s2;\n                          s3 = peg$c57();\n                        }\n                        s2 = s3;\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n        if (s2 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c26(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordDefinition(): any {\n    let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 123) {\n      s1 = peg$c43;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c44); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 as any !== peg$FAILED) {\n        if (input.substr(peg$currPos, 5) === peg$c58) {\n          s3 = peg$c58;\n          peg$currPos += 5;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c59); }\n        }\n        if (s3 as any === peg$FAILED) {\n          if (input.substr(peg$currPos, 6) === peg$c60) {\n            s3 = peg$c60;\n            peg$currPos += 6;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c61); }\n          }\n        }\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parseTagSelector();\n          if (s4 as any === peg$FAILED) {\n            s4 = null;\n          }\n          if (s4 as any !== peg$FAILED) {\n            s5 = peg$parse_();\n            if (s5 as any !== peg$FAILED) {\n              if (input.charCodeAt(peg$currPos) === 58) {\n                s6 = peg$c62;\n                peg$currPos++;\n              } else {\n                s6 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c63); }\n              }\n              if (s6 as any !== peg$FAILED) {\n                s7 = peg$parse_();\n                if (s7 as any !== peg$FAILED) {\n                  s8 = peg$parseChordDefinitionValue();\n                  if (s8 as any !== peg$FAILED) {\n                    s9 = peg$parse_();\n                    if (s9 as any !== peg$FAILED) {\n                      if (input.charCodeAt(peg$currPos) === 125) {\n                        s10 = peg$c29;\n                        peg$currPos++;\n                      } else {\n                        s10 = peg$FAILED;\n                        if (peg$silentFails === 0) { peg$fail(peg$c30); }\n                      }\n                      if (s10 as any !== peg$FAILED) {\n                        peg$savedPos = s0;\n                        s1 = peg$c64(s3, s4, s8);\n                        s0 = s1;\n                      } else {\n                        peg$currPos = s0;\n                        s0 = peg$FAILED;\n                      }\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseTag(): any {\n    let s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 123) {\n      s1 = peg$c43;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c44); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$currPos;\n        s4 = peg$parseTagName();\n        if (s4 as any !== peg$FAILED) {\n          s3 = input.substring(s3, peg$currPos);\n        } else {\n          s3 = s4;\n        }\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parseTagSelector();\n          if (s4 as any === peg$FAILED) {\n            s4 = null;\n          }\n          if (s4 as any !== peg$FAILED) {\n            s5 = peg$parseTagColonWithValue();\n            if (s5 as any === peg$FAILED) {\n              s5 = peg$parseTagSpaceWithValue();\n            }\n            if (s5 as any === peg$FAILED) {\n              s5 = null;\n            }\n            if (s5 as any !== peg$FAILED) {\n              s6 = peg$parse_();\n              if (s6 as any !== peg$FAILED) {\n                if (input.charCodeAt(peg$currPos) === 125) {\n                  s7 = peg$c29;\n                  peg$currPos++;\n                } else {\n                  s7 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c30); }\n                }\n                if (s7 as any !== peg$FAILED) {\n                  peg$savedPos = s0;\n                  s1 = peg$c65(s3, s4, s5);\n                  s0 = s1;\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseTagSelector(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 45) {\n      s1 = peg$c66;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c67); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseTagSelectorValue();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseTagSelectorNegator();\n        if (s3 as any === peg$FAILED) {\n          s3 = null;\n        }\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c68(s2, s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseTagSelectorNegator(): any {\n    let s0, s1;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 33) {\n      s1 = peg$c69;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c70); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c71();\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parseTagSelectorValue(): any {\n    let s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = [];\n    if (peg$c39.test(input.charAt(peg$currPos))) {\n      s2 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s2 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c40); }\n    }\n    if (s2 as any !== peg$FAILED) {\n      while (s2 as any !== peg$FAILED) {\n        s1.push(s2);\n        if (peg$c39.test(input.charAt(peg$currPos))) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c40); }\n        }\n      }\n    } else {\n      s1 = peg$FAILED;\n    }\n    if (s1 as any !== peg$FAILED) {\n      s0 = input.substring(s0, peg$currPos);\n    } else {\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseTagColonWithValue(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$parse_();\n    if (s1 as any !== peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 58) {\n        s2 = peg$c62;\n        peg$currPos++;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c63); }\n      }\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseTagValue();\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c72(s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseTagSpaceWithValue(): any {\n    let s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = peg$parse__();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseTagSimpleValue();\n      if (s2 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c73(s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseTagValue(): any {\n    let s0, s1;\n\n    s0 = peg$currPos;\n    s1 = peg$parseTagAttributes();\n    if (s1 as any !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c74(s1);\n    }\n    s0 = s1;\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parseTagSimpleValue();\n      if (s1 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c73(s1);\n      }\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseTagAttributes(): any {\n    let s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = [];\n    s2 = peg$parseTagAttributeWithLeadingSpace();\n    if (s2 as any !== peg$FAILED) {\n      while (s2 as any !== peg$FAILED) {\n        s1.push(s2);\n        s2 = peg$parseTagAttributeWithLeadingSpace();\n      }\n    } else {\n      s1 = peg$FAILED;\n    }\n    if (s1 as any !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c75(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parseTagAttributeWithLeadingSpace(): any {\n    let s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = peg$parse__();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseTagAttribute();\n      if (s2 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c76(s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseTagAttribute(): any {\n    let s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$parseTagAttributeName();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 as any !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 61) {\n          s3 = peg$c32;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c33); }\n        }\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parse_();\n          if (s4 as any !== peg$FAILED) {\n            s5 = peg$parseTagAttributeValue();\n            if (s5 as any !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c77(s1, s5);\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseTagName(): any {\n    let s0, s1;\n\n    s0 = [];\n    if (peg$c78.test(input.charAt(peg$currPos))) {\n      s1 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c79); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      while (s1 as any !== peg$FAILED) {\n        s0.push(s1);\n        if (peg$c78.test(input.charAt(peg$currPos))) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c79); }\n        }\n      }\n    } else {\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseTagSimpleValue(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$parse_();\n    if (s1 as any !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$parseTagValueChar();\n      while (s3 as any !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$parseTagValueChar();\n      }\n      if (s2 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c80(s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseTagValueChar(): any {\n    let s0, s1, s2, s3;\n\n    if (peg$c81.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c82); }\n    }\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parseEscape();\n      if (s1 as any !== peg$FAILED) {\n        s2 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 92) {\n          s3 = peg$c22;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c23); }\n        }\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s2;\n          s3 = peg$c51();\n        }\n        s2 = s3;\n        if (s2 as any === peg$FAILED) {\n          s2 = peg$currPos;\n          if (input.charCodeAt(peg$currPos) === 125) {\n            s3 = peg$c29;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c30); }\n          }\n          if (s3 as any !== peg$FAILED) {\n            peg$savedPos = s2;\n            s3 = peg$c48();\n          }\n          s2 = s3;\n          if (s2 as any === peg$FAILED) {\n            s2 = peg$currPos;\n            if (input.charCodeAt(peg$currPos) === 123) {\n              s3 = peg$c43;\n              peg$currPos++;\n            } else {\n              s3 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c44); }\n            }\n            if (s3 as any !== peg$FAILED) {\n              peg$savedPos = s2;\n              s3 = peg$c53();\n            }\n            s2 = s3;\n          }\n        }\n        if (s2 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c26(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseTagAttributeName(): any {\n    let s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = [];\n    if (peg$c83.test(input.charAt(peg$currPos))) {\n      s2 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s2 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c84); }\n    }\n    if (s2 as any !== peg$FAILED) {\n      while (s2 as any !== peg$FAILED) {\n        s1.push(s2);\n        if (peg$c83.test(input.charAt(peg$currPos))) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c84); }\n        }\n      }\n    } else {\n      s1 = peg$FAILED;\n    }\n    if (s1 as any !== peg$FAILED) {\n      s0 = input.substring(s0, peg$currPos);\n    } else {\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseTagAttributeValue(): any {\n    let s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 34) {\n      s1 = peg$c85;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c86); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$currPos;\n      s3 = [];\n      s4 = peg$parseTagAttributeValueChar();\n      while (s4 as any !== peg$FAILED) {\n        s3.push(s4);\n        s4 = peg$parseTagAttributeValueChar();\n      }\n      if (s3 as any !== peg$FAILED) {\n        s2 = input.substring(s2, peg$currPos);\n      } else {\n        s2 = s3;\n      }\n      if (s2 as any !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 34) {\n          s3 = peg$c85;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c86); }\n        }\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c87(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseTagAttributeValueChar(): any {\n    let s0, s1, s2, s3;\n\n    if (peg$c88.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c89); }\n    }\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parseEscape();\n      if (s1 as any !== peg$FAILED) {\n        s2 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 92) {\n          s3 = peg$c22;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c23); }\n        }\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s2;\n          s3 = peg$c51();\n        }\n        s2 = s3;\n        if (s2 as any === peg$FAILED) {\n          s2 = peg$currPos;\n          if (input.charCodeAt(peg$currPos) === 125) {\n            s3 = peg$c29;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c30); }\n          }\n          if (s3 as any !== peg$FAILED) {\n            peg$savedPos = s2;\n            s3 = peg$c48();\n          }\n          s2 = s3;\n          if (s2 as any === peg$FAILED) {\n            s2 = peg$currPos;\n            if (input.charCodeAt(peg$currPos) === 34) {\n              s3 = peg$c85;\n              peg$currPos++;\n            } else {\n              s3 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c86); }\n            }\n            if (s3 as any !== peg$FAILED) {\n              peg$savedPos = s2;\n              s3 = peg$c90();\n            }\n            s2 = s3;\n          }\n        }\n        if (s2 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c26(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordDefinitionValue(): any {\n    let s0, s1, s2, s3, s4, s5, s6;\n\n    s0 = peg$currPos;\n    s1 = peg$parseChordDefinitionName();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseBaseFret();\n        if (s3 as any === peg$FAILED) {\n          s3 = null;\n        }\n        if (s3 as any !== peg$FAILED) {\n          if (input.substr(peg$currPos, 5) === peg$c91) {\n            s4 = peg$c91;\n            peg$currPos += 5;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c92); }\n          }\n          if (s4 as any !== peg$FAILED) {\n            s5 = [];\n            s6 = peg$parseFretWithLeadingSpace();\n            if (s6 as any !== peg$FAILED) {\n              while (s6 as any !== peg$FAILED) {\n                s5.push(s6);\n                s6 = peg$parseFretWithLeadingSpace();\n              }\n            } else {\n              s5 = peg$FAILED;\n            }\n            if (s5 as any !== peg$FAILED) {\n              s6 = peg$parseChordFingersDefinition();\n              if (s6 as any === peg$FAILED) {\n                s6 = null;\n              }\n              if (s6 as any !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c93(s1, s3, s5, s6);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordDefinitionName(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    s2 = peg$parseChordDefinitionNameBase();\n    if (s2 as any !== peg$FAILED) {\n      s3 = peg$parseChordDefinitionNameBass();\n      if (s3 as any === peg$FAILED) {\n        s3 = null;\n      }\n      if (s3 as any !== peg$FAILED) {\n        s2 = [s2, s3];\n        s1 = s2;\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 as any !== peg$FAILED) {\n      s0 = input.substring(s0, peg$currPos);\n    } else {\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordDefinitionNameBase(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    s2 = peg$parseChordDefinitionNote();\n    if (s2 as any !== peg$FAILED) {\n      s3 = peg$parseChordDefinitionSuffix();\n      if (s3 as any === peg$FAILED) {\n        s3 = null;\n      }\n      if (s3 as any !== peg$FAILED) {\n        s2 = [s2, s3];\n        s1 = s2;\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 as any !== peg$FAILED) {\n      s0 = input.substring(s0, peg$currPos);\n    } else {\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordDefinitionNameBass(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 47) {\n      s2 = peg$c94;\n      peg$currPos++;\n    } else {\n      s2 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c95); }\n    }\n    if (s2 as any !== peg$FAILED) {\n      s3 = peg$parseChordDefinitionNote();\n      if (s3 as any !== peg$FAILED) {\n        s2 = [s2, s3];\n        s1 = s2;\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 as any !== peg$FAILED) {\n      s0 = input.substring(s0, peg$currPos);\n    } else {\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordDefinitionNote(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    if (peg$c96.test(input.charAt(peg$currPos))) {\n      s2 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s2 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c97); }\n    }\n    if (s2 as any !== peg$FAILED) {\n      if (peg$c98.test(input.charAt(peg$currPos))) {\n        s3 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c99); }\n      }\n      if (s3 as any === peg$FAILED) {\n        if (input.substr(peg$currPos, 2) === peg$c100) {\n          s3 = peg$c100;\n          peg$currPos += 2;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c101); }\n        }\n        if (s3 as any === peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 115) {\n            s3 = peg$c102;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c103); }\n          }\n          if (s3 as any === peg$FAILED) {\n            if (input.substr(peg$currPos, 2) === peg$c104) {\n              s3 = peg$c104;\n              peg$currPos += 2;\n            } else {\n              s3 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c105); }\n            }\n          }\n        }\n      }\n      if (s3 as any === peg$FAILED) {\n        s3 = null;\n      }\n      if (s3 as any !== peg$FAILED) {\n        s2 = [s2, s3];\n        s1 = s2;\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 as any !== peg$FAILED) {\n      s0 = input.substring(s0, peg$currPos);\n    } else {\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordDefinitionSuffix(): any {\n    let s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = [];\n    if (peg$c106.test(input.charAt(peg$currPos))) {\n      s2 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s2 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c107); }\n    }\n    if (s2 as any !== peg$FAILED) {\n      while (s2 as any !== peg$FAILED) {\n        s1.push(s2);\n        if (peg$c106.test(input.charAt(peg$currPos))) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c107); }\n        }\n      }\n    } else {\n      s1 = peg$FAILED;\n    }\n    if (s1 as any !== peg$FAILED) {\n      s0 = input.substring(s0, peg$currPos);\n    } else {\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseBaseFret(): any {\n    let s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    if (input.substr(peg$currPos, 9) === peg$c108) {\n      s1 = peg$c108;\n      peg$currPos += 9;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c109); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parse__();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseFretNumber();\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parse__();\n          if (s4 as any !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c110(s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordFingersDefinition(): any {\n    let s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$parse__();\n    if (s1 as any !== peg$FAILED) {\n      if (input.substr(peg$currPos, 7) === peg$c111) {\n        s2 = peg$c111;\n        peg$currPos += 7;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c112); }\n      }\n      if (s2 as any !== peg$FAILED) {\n        s3 = [];\n        s4 = peg$parseFingerWithLeadingSpace();\n        if (s4 as any !== peg$FAILED) {\n          while (s4 as any !== peg$FAILED) {\n            s3.push(s4);\n            s4 = peg$parseFingerWithLeadingSpace();\n          }\n        } else {\n          s3 = peg$FAILED;\n        }\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c113(s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseFingerWithLeadingSpace(): any {\n    let s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = peg$parse__();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseFinger();\n      if (s2 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c114(s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseFinger(): any {\n    let s0;\n\n    s0 = peg$parseFingerNumber();\n    if (s0 as any === peg$FAILED) {\n      if (peg$c115.test(input.charAt(peg$currPos))) {\n        s0 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c116); }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseFingerNumber(): any {\n    let s0, s1;\n\n    s0 = peg$currPos;\n    if (peg$c117.test(input.charAt(peg$currPos))) {\n      s1 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c118); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c119(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parseFretWithLeadingSpace(): any {\n    let s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = peg$parse__();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseFret();\n      if (s2 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c120(s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseFret(): any {\n    let s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = peg$parse_();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseFretNumber();\n      if (s2 as any === peg$FAILED) {\n        s2 = peg$parseOpenFret();\n        if (s2 as any === peg$FAILED) {\n          s2 = peg$parseNonSoundingString();\n        }\n      }\n      if (s2 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c120(s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseFretNumber(): any {\n    let s0, s1;\n\n    s0 = peg$currPos;\n    if (peg$c117.test(input.charAt(peg$currPos))) {\n      s1 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c118); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c119(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parseOpenFret(): any {\n    let s0, s1;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 48) {\n      s1 = peg$c121;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c122); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c123();\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parseNonSoundingString(): any {\n    let s0;\n\n    if (input.substr(peg$currPos, 2) === peg$c124) {\n      s0 = peg$c124;\n      peg$currPos += 2;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c125); }\n    }\n    if (s0 as any === peg$FAILED) {\n      if (peg$c126.test(input.charAt(peg$currPos))) {\n        s0 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c127); }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseSection(): any {\n    let s0;\n\n    s0 = peg$parseAbcSection();\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$parseGridSection();\n      if (s0 as any === peg$FAILED) {\n        s0 = peg$parseLySection();\n        if (s0 as any === peg$FAILED) {\n          s0 = peg$parseSvgSection();\n          if (s0 as any === peg$FAILED) {\n            s0 = peg$parseTabSection();\n            if (s0 as any === peg$FAILED) {\n              s0 = peg$parseTextblockSection();\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseAbcSection(): any {\n    let s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    s1 = peg$parseAbcStartTag();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseNewLine();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$currPos;\n        s4 = [];\n        s5 = peg$currPos;\n        s6 = peg$currPos;\n        peg$silentFails++;\n        s7 = peg$parseAbcEndTag();\n        peg$silentFails--;\n        if (s7 as any === peg$FAILED) {\n          s6 = undefined;\n        } else {\n          peg$currPos = s6;\n          s6 = peg$FAILED;\n        }\n        if (s6 as any !== peg$FAILED) {\n          s7 = peg$parseSectionCharacter();\n          if (s7 as any !== peg$FAILED) {\n            s6 = [s6, s7];\n            s5 = s6;\n          } else {\n            peg$currPos = s5;\n            s5 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s5;\n          s5 = peg$FAILED;\n        }\n        while (s5 as any !== peg$FAILED) {\n          s4.push(s5);\n          s5 = peg$currPos;\n          s6 = peg$currPos;\n          peg$silentFails++;\n          s7 = peg$parseAbcEndTag();\n          peg$silentFails--;\n          if (s7 as any === peg$FAILED) {\n            s6 = undefined;\n          } else {\n            peg$currPos = s6;\n            s6 = peg$FAILED;\n          }\n          if (s6 as any !== peg$FAILED) {\n            s7 = peg$parseSectionCharacter();\n            if (s7 as any !== peg$FAILED) {\n              s6 = [s6, s7];\n              s5 = s6;\n            } else {\n              peg$currPos = s5;\n              s5 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s5;\n            s5 = peg$FAILED;\n          }\n        }\n        if (s4 as any !== peg$FAILED) {\n          s3 = input.substring(s3, peg$currPos);\n        } else {\n          s3 = s4;\n        }\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parseAbcEndTag();\n          if (s4 as any !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c128(s1, s3, s4);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseAbcStartTag(): any {\n    let s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 123) {\n      s1 = peg$c43;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c44); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 as any !== peg$FAILED) {\n        if (input.substr(peg$currPos, 12) === peg$c129) {\n          s3 = peg$c129;\n          peg$currPos += 12;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c130); }\n        }\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parseTagSelector();\n          if (s4 as any === peg$FAILED) {\n            s4 = null;\n          }\n          if (s4 as any !== peg$FAILED) {\n            s5 = peg$parse_();\n            if (s5 as any !== peg$FAILED) {\n              s6 = peg$parseTagColonWithValue();\n              if (s6 as any === peg$FAILED) {\n                s6 = null;\n              }\n              if (s6 as any !== peg$FAILED) {\n                s7 = peg$parse_();\n                if (s7 as any !== peg$FAILED) {\n                  if (input.charCodeAt(peg$currPos) === 125) {\n                    s8 = peg$c29;\n                    peg$currPos++;\n                  } else {\n                    s8 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c30); }\n                  }\n                  if (s8 as any !== peg$FAILED) {\n                    peg$savedPos = s0;\n                    s1 = peg$c131(s3, s4, s6);\n                    s0 = s1;\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseAbcEndTag(): any {\n    let s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 123) {\n      s1 = peg$c43;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c44); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 as any !== peg$FAILED) {\n        if (input.substr(peg$currPos, 10) === peg$c132) {\n          s3 = peg$c132;\n          peg$currPos += 10;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c133); }\n        }\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parse_();\n          if (s4 as any !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 125) {\n              s5 = peg$c29;\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c30); }\n            }\n            if (s5 as any !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c134(s3);\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseGridSection(): any {\n    let s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    s1 = peg$parseGridStartTag();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseNewLine();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$currPos;\n        s4 = [];\n        s5 = peg$currPos;\n        s6 = peg$currPos;\n        peg$silentFails++;\n        s7 = peg$parseGridEndTag();\n        peg$silentFails--;\n        if (s7 as any === peg$FAILED) {\n          s6 = undefined;\n        } else {\n          peg$currPos = s6;\n          s6 = peg$FAILED;\n        }\n        if (s6 as any !== peg$FAILED) {\n          s7 = peg$parseSectionCharacter();\n          if (s7 as any !== peg$FAILED) {\n            s6 = [s6, s7];\n            s5 = s6;\n          } else {\n            peg$currPos = s5;\n            s5 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s5;\n          s5 = peg$FAILED;\n        }\n        while (s5 as any !== peg$FAILED) {\n          s4.push(s5);\n          s5 = peg$currPos;\n          s6 = peg$currPos;\n          peg$silentFails++;\n          s7 = peg$parseGridEndTag();\n          peg$silentFails--;\n          if (s7 as any === peg$FAILED) {\n            s6 = undefined;\n          } else {\n            peg$currPos = s6;\n            s6 = peg$FAILED;\n          }\n          if (s6 as any !== peg$FAILED) {\n            s7 = peg$parseSectionCharacter();\n            if (s7 as any !== peg$FAILED) {\n              s6 = [s6, s7];\n              s5 = s6;\n            } else {\n              peg$currPos = s5;\n              s5 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s5;\n            s5 = peg$FAILED;\n          }\n        }\n        if (s4 as any !== peg$FAILED) {\n          s3 = input.substring(s3, peg$currPos);\n        } else {\n          s3 = s4;\n        }\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parseGridEndTag();\n          if (s4 as any !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c128(s1, s3, s4);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseGridStartTag(): any {\n    let s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 123) {\n      s1 = peg$c43;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c44); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 as any !== peg$FAILED) {\n        if (input.substr(peg$currPos, 13) === peg$c135) {\n          s3 = peg$c135;\n          peg$currPos += 13;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c136); }\n        }\n        if (s3 as any === peg$FAILED) {\n          if (input.substr(peg$currPos, 3) === peg$c137) {\n            s3 = peg$c137;\n            peg$currPos += 3;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c138); }\n          }\n        }\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parseTagSelector();\n          if (s4 as any === peg$FAILED) {\n            s4 = null;\n          }\n          if (s4 as any !== peg$FAILED) {\n            s5 = peg$parse_();\n            if (s5 as any !== peg$FAILED) {\n              s6 = peg$parseTagColonWithValue();\n              if (s6 as any === peg$FAILED) {\n                s6 = null;\n              }\n              if (s6 as any !== peg$FAILED) {\n                s7 = peg$parse_();\n                if (s7 as any !== peg$FAILED) {\n                  if (input.charCodeAt(peg$currPos) === 125) {\n                    s8 = peg$c29;\n                    peg$currPos++;\n                  } else {\n                    s8 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c30); }\n                  }\n                  if (s8 as any !== peg$FAILED) {\n                    peg$savedPos = s0;\n                    s1 = peg$c131(s3, s4, s6);\n                    s0 = s1;\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseGridEndTag(): any {\n    let s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 123) {\n      s1 = peg$c43;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c44); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 as any !== peg$FAILED) {\n        if (input.substr(peg$currPos, 11) === peg$c139) {\n          s3 = peg$c139;\n          peg$currPos += 11;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c140); }\n        }\n        if (s3 as any === peg$FAILED) {\n          if (input.substr(peg$currPos, 3) === peg$c141) {\n            s3 = peg$c141;\n            peg$currPos += 3;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c142); }\n          }\n        }\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parse_();\n          if (s4 as any !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 125) {\n              s5 = peg$c29;\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c30); }\n            }\n            if (s5 as any !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c134(s3);\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseLySection(): any {\n    let s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    s1 = peg$parseLyStartTag();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseNewLine();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$currPos;\n        s4 = [];\n        s5 = peg$currPos;\n        s6 = peg$currPos;\n        peg$silentFails++;\n        s7 = peg$parseLyEndTag();\n        peg$silentFails--;\n        if (s7 as any === peg$FAILED) {\n          s6 = undefined;\n        } else {\n          peg$currPos = s6;\n          s6 = peg$FAILED;\n        }\n        if (s6 as any !== peg$FAILED) {\n          s7 = peg$parseSectionCharacter();\n          if (s7 as any !== peg$FAILED) {\n            s6 = [s6, s7];\n            s5 = s6;\n          } else {\n            peg$currPos = s5;\n            s5 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s5;\n          s5 = peg$FAILED;\n        }\n        while (s5 as any !== peg$FAILED) {\n          s4.push(s5);\n          s5 = peg$currPos;\n          s6 = peg$currPos;\n          peg$silentFails++;\n          s7 = peg$parseLyEndTag();\n          peg$silentFails--;\n          if (s7 as any === peg$FAILED) {\n            s6 = undefined;\n          } else {\n            peg$currPos = s6;\n            s6 = peg$FAILED;\n          }\n          if (s6 as any !== peg$FAILED) {\n            s7 = peg$parseSectionCharacter();\n            if (s7 as any !== peg$FAILED) {\n              s6 = [s6, s7];\n              s5 = s6;\n            } else {\n              peg$currPos = s5;\n              s5 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s5;\n            s5 = peg$FAILED;\n          }\n        }\n        if (s4 as any !== peg$FAILED) {\n          s3 = input.substring(s3, peg$currPos);\n        } else {\n          s3 = s4;\n        }\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parseLyEndTag();\n          if (s4 as any !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c128(s1, s3, s4);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseLyStartTag(): any {\n    let s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 123) {\n      s1 = peg$c43;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c44); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 as any !== peg$FAILED) {\n        if (input.substr(peg$currPos, 11) === peg$c143) {\n          s3 = peg$c143;\n          peg$currPos += 11;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c144); }\n        }\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parseTagSelector();\n          if (s4 as any === peg$FAILED) {\n            s4 = null;\n          }\n          if (s4 as any !== peg$FAILED) {\n            s5 = peg$parse_();\n            if (s5 as any !== peg$FAILED) {\n              s6 = peg$parseTagColonWithValue();\n              if (s6 as any === peg$FAILED) {\n                s6 = null;\n              }\n              if (s6 as any !== peg$FAILED) {\n                s7 = peg$parse_();\n                if (s7 as any !== peg$FAILED) {\n                  if (input.charCodeAt(peg$currPos) === 125) {\n                    s8 = peg$c29;\n                    peg$currPos++;\n                  } else {\n                    s8 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c30); }\n                  }\n                  if (s8 as any !== peg$FAILED) {\n                    peg$savedPos = s0;\n                    s1 = peg$c131(s3, s4, s6);\n                    s0 = s1;\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseLyEndTag(): any {\n    let s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 123) {\n      s1 = peg$c43;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c44); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 as any !== peg$FAILED) {\n        if (input.substr(peg$currPos, 9) === peg$c145) {\n          s3 = peg$c145;\n          peg$currPos += 9;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c146); }\n        }\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parse_();\n          if (s4 as any !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 125) {\n              s5 = peg$c29;\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c30); }\n            }\n            if (s5 as any !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c134(s3);\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseSvgSection(): any {\n    let s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    s1 = peg$parseSvgStartTag();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseNewLine();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$currPos;\n        s4 = [];\n        s5 = peg$currPos;\n        s6 = peg$currPos;\n        peg$silentFails++;\n        s7 = peg$parseSvgEndTag();\n        peg$silentFails--;\n        if (s7 as any === peg$FAILED) {\n          s6 = undefined;\n        } else {\n          peg$currPos = s6;\n          s6 = peg$FAILED;\n        }\n        if (s6 as any !== peg$FAILED) {\n          s7 = peg$parseSectionCharacter();\n          if (s7 as any !== peg$FAILED) {\n            s6 = [s6, s7];\n            s5 = s6;\n          } else {\n            peg$currPos = s5;\n            s5 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s5;\n          s5 = peg$FAILED;\n        }\n        while (s5 as any !== peg$FAILED) {\n          s4.push(s5);\n          s5 = peg$currPos;\n          s6 = peg$currPos;\n          peg$silentFails++;\n          s7 = peg$parseSvgEndTag();\n          peg$silentFails--;\n          if (s7 as any === peg$FAILED) {\n            s6 = undefined;\n          } else {\n            peg$currPos = s6;\n            s6 = peg$FAILED;\n          }\n          if (s6 as any !== peg$FAILED) {\n            s7 = peg$parseSectionCharacter();\n            if (s7 as any !== peg$FAILED) {\n              s6 = [s6, s7];\n              s5 = s6;\n            } else {\n              peg$currPos = s5;\n              s5 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s5;\n            s5 = peg$FAILED;\n          }\n        }\n        if (s4 as any !== peg$FAILED) {\n          s3 = input.substring(s3, peg$currPos);\n        } else {\n          s3 = s4;\n        }\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parseSvgEndTag();\n          if (s4 as any !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c128(s1, s3, s4);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseSvgStartTag(): any {\n    let s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 123) {\n      s1 = peg$c43;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c44); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 as any !== peg$FAILED) {\n        if (input.substr(peg$currPos, 12) === peg$c147) {\n          s3 = peg$c147;\n          peg$currPos += 12;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c148); }\n        }\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parseTagSelector();\n          if (s4 as any === peg$FAILED) {\n            s4 = null;\n          }\n          if (s4 as any !== peg$FAILED) {\n            s5 = peg$parse_();\n            if (s5 as any !== peg$FAILED) {\n              s6 = peg$parseTagColonWithValue();\n              if (s6 as any === peg$FAILED) {\n                s6 = null;\n              }\n              if (s6 as any !== peg$FAILED) {\n                s7 = peg$parse_();\n                if (s7 as any !== peg$FAILED) {\n                  if (input.charCodeAt(peg$currPos) === 125) {\n                    s8 = peg$c29;\n                    peg$currPos++;\n                  } else {\n                    s8 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c30); }\n                  }\n                  if (s8 as any !== peg$FAILED) {\n                    peg$savedPos = s0;\n                    s1 = peg$c131(s3, s4, s6);\n                    s0 = s1;\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseSvgEndTag(): any {\n    let s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 123) {\n      s1 = peg$c43;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c44); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 as any !== peg$FAILED) {\n        if (input.substr(peg$currPos, 10) === peg$c149) {\n          s3 = peg$c149;\n          peg$currPos += 10;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c150); }\n        }\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parse_();\n          if (s4 as any !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 125) {\n              s5 = peg$c29;\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c30); }\n            }\n            if (s5 as any !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c134(s3);\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseTabSection(): any {\n    let s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    s1 = peg$parseTabStartTag();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseNewLine();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$currPos;\n        s4 = [];\n        s5 = peg$currPos;\n        s6 = peg$currPos;\n        peg$silentFails++;\n        s7 = peg$parseTabEndTag();\n        peg$silentFails--;\n        if (s7 as any === peg$FAILED) {\n          s6 = undefined;\n        } else {\n          peg$currPos = s6;\n          s6 = peg$FAILED;\n        }\n        if (s6 as any !== peg$FAILED) {\n          s7 = peg$parseSectionCharacter();\n          if (s7 as any !== peg$FAILED) {\n            s6 = [s6, s7];\n            s5 = s6;\n          } else {\n            peg$currPos = s5;\n            s5 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s5;\n          s5 = peg$FAILED;\n        }\n        while (s5 as any !== peg$FAILED) {\n          s4.push(s5);\n          s5 = peg$currPos;\n          s6 = peg$currPos;\n          peg$silentFails++;\n          s7 = peg$parseTabEndTag();\n          peg$silentFails--;\n          if (s7 as any === peg$FAILED) {\n            s6 = undefined;\n          } else {\n            peg$currPos = s6;\n            s6 = peg$FAILED;\n          }\n          if (s6 as any !== peg$FAILED) {\n            s7 = peg$parseSectionCharacter();\n            if (s7 as any !== peg$FAILED) {\n              s6 = [s6, s7];\n              s5 = s6;\n            } else {\n              peg$currPos = s5;\n              s5 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s5;\n            s5 = peg$FAILED;\n          }\n        }\n        if (s4 as any !== peg$FAILED) {\n          s3 = input.substring(s3, peg$currPos);\n        } else {\n          s3 = s4;\n        }\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parseTabEndTag();\n          if (s4 as any !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c128(s1, s3, s4);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseTabStartTag(): any {\n    let s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 123) {\n      s1 = peg$c43;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c44); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 as any !== peg$FAILED) {\n        if (input.substr(peg$currPos, 12) === peg$c151) {\n          s3 = peg$c151;\n          peg$currPos += 12;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c152); }\n        }\n        if (s3 as any === peg$FAILED) {\n          if (input.substr(peg$currPos, 3) === peg$c153) {\n            s3 = peg$c153;\n            peg$currPos += 3;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c154); }\n          }\n        }\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parseTagSelector();\n          if (s4 as any === peg$FAILED) {\n            s4 = null;\n          }\n          if (s4 as any !== peg$FAILED) {\n            s5 = peg$parse_();\n            if (s5 as any !== peg$FAILED) {\n              s6 = peg$parseTagColonWithValue();\n              if (s6 as any === peg$FAILED) {\n                s6 = null;\n              }\n              if (s6 as any !== peg$FAILED) {\n                s7 = peg$parse_();\n                if (s7 as any !== peg$FAILED) {\n                  if (input.charCodeAt(peg$currPos) === 125) {\n                    s8 = peg$c29;\n                    peg$currPos++;\n                  } else {\n                    s8 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c30); }\n                  }\n                  if (s8 as any !== peg$FAILED) {\n                    peg$savedPos = s0;\n                    s1 = peg$c131(s3, s4, s6);\n                    s0 = s1;\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseTabEndTag(): any {\n    let s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 123) {\n      s1 = peg$c43;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c44); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 as any !== peg$FAILED) {\n        if (input.substr(peg$currPos, 10) === peg$c155) {\n          s3 = peg$c155;\n          peg$currPos += 10;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c156); }\n        }\n        if (s3 as any === peg$FAILED) {\n          if (input.substr(peg$currPos, 3) === peg$c157) {\n            s3 = peg$c157;\n            peg$currPos += 3;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c158); }\n          }\n        }\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parse_();\n          if (s4 as any !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 125) {\n              s5 = peg$c29;\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c30); }\n            }\n            if (s5 as any !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c134(s3);\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseTextblockSection(): any {\n    let s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    s1 = peg$parseTextblockStartTag();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseNewLine();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$currPos;\n        s4 = [];\n        s5 = peg$currPos;\n        s6 = peg$currPos;\n        peg$silentFails++;\n        s7 = peg$parseTextblockEndTag();\n        peg$silentFails--;\n        if (s7 as any === peg$FAILED) {\n          s6 = undefined;\n        } else {\n          peg$currPos = s6;\n          s6 = peg$FAILED;\n        }\n        if (s6 as any !== peg$FAILED) {\n          s7 = peg$parseSectionCharacter();\n          if (s7 as any !== peg$FAILED) {\n            s6 = [s6, s7];\n            s5 = s6;\n          } else {\n            peg$currPos = s5;\n            s5 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s5;\n          s5 = peg$FAILED;\n        }\n        while (s5 as any !== peg$FAILED) {\n          s4.push(s5);\n          s5 = peg$currPos;\n          s6 = peg$currPos;\n          peg$silentFails++;\n          s7 = peg$parseTextblockEndTag();\n          peg$silentFails--;\n          if (s7 as any === peg$FAILED) {\n            s6 = undefined;\n          } else {\n            peg$currPos = s6;\n            s6 = peg$FAILED;\n          }\n          if (s6 as any !== peg$FAILED) {\n            s7 = peg$parseSectionCharacter();\n            if (s7 as any !== peg$FAILED) {\n              s6 = [s6, s7];\n              s5 = s6;\n            } else {\n              peg$currPos = s5;\n              s5 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s5;\n            s5 = peg$FAILED;\n          }\n        }\n        if (s4 as any !== peg$FAILED) {\n          s3 = input.substring(s3, peg$currPos);\n        } else {\n          s3 = s4;\n        }\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parseTextblockEndTag();\n          if (s4 as any !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c128(s1, s3, s4);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseTextblockStartTag(): any {\n    let s0, s1, s2, s3, s4, s5, s6, s7, s8;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 123) {\n      s1 = peg$c43;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c44); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 as any !== peg$FAILED) {\n        if (input.substr(peg$currPos, 18) === peg$c159) {\n          s3 = peg$c159;\n          peg$currPos += 18;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c160); }\n        }\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parseTagSelector();\n          if (s4 as any === peg$FAILED) {\n            s4 = null;\n          }\n          if (s4 as any !== peg$FAILED) {\n            s5 = peg$parse_();\n            if (s5 as any !== peg$FAILED) {\n              s6 = peg$parseTagColonWithValue();\n              if (s6 as any === peg$FAILED) {\n                s6 = null;\n              }\n              if (s6 as any !== peg$FAILED) {\n                s7 = peg$parse_();\n                if (s7 as any !== peg$FAILED) {\n                  if (input.charCodeAt(peg$currPos) === 125) {\n                    s8 = peg$c29;\n                    peg$currPos++;\n                  } else {\n                    s8 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c30); }\n                  }\n                  if (s8 as any !== peg$FAILED) {\n                    peg$savedPos = s0;\n                    s1 = peg$c131(s3, s4, s6);\n                    s0 = s1;\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseTextblockEndTag(): any {\n    let s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 123) {\n      s1 = peg$c43;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c44); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 as any !== peg$FAILED) {\n        if (input.substr(peg$currPos, 16) === peg$c161) {\n          s3 = peg$c161;\n          peg$currPos += 16;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c162); }\n        }\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parse_();\n          if (s4 as any !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 125) {\n              s5 = peg$c29;\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c30); }\n            }\n            if (s5 as any !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c134(s3);\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseSectionCharacter(): any {\n    let s0;\n\n    if (input.length > peg$currPos) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c163); }\n    }\n\n    return s0;\n  }\n\n  function peg$parse__(): any {\n    let s0, s1;\n\n    peg$silentFails++;\n    s0 = [];\n    s1 = peg$parseWhitespaceCharacter();\n    if (s1 as any !== peg$FAILED) {\n      while (s1 as any !== peg$FAILED) {\n        s0.push(s1);\n        s1 = peg$parseWhitespaceCharacter();\n      }\n    } else {\n      s0 = peg$FAILED;\n    }\n    peg$silentFails--;\n    if (s0 as any === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c164); }\n    }\n\n    return s0;\n  }\n\n  function peg$parse_(): any {\n    let s0, s1;\n\n    peg$silentFails++;\n    s0 = [];\n    s1 = peg$parseWhitespaceCharacter();\n    while (s1 as any !== peg$FAILED) {\n      s0.push(s1);\n      s1 = peg$parseWhitespaceCharacter();\n    }\n    peg$silentFails--;\n    if (s0 as any === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c165); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseWhitespaceCharacter(): any {\n    let s0;\n\n    if (peg$c166.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c167); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseSpace(): any {\n    let s0, s1, s2;\n\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = [];\n    if (peg$c169.test(input.charAt(peg$currPos))) {\n      s2 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s2 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c170); }\n    }\n    if (s2 as any !== peg$FAILED) {\n      while (s2 as any !== peg$FAILED) {\n        s1.push(s2);\n        if (peg$c169.test(input.charAt(peg$currPos))) {\n          s2 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s2 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c170); }\n        }\n      }\n    } else {\n      s1 = peg$FAILED;\n    }\n    if (s1 as any !== peg$FAILED) {\n      s0 = input.substring(s0, peg$currPos);\n    } else {\n      s0 = s1;\n    }\n    peg$silentFails--;\n    if (s0 as any === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c168); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseNewLine(): any {\n    let s0;\n\n    if (peg$c171.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c172); }\n    }\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$parseCarriageReturnLineFeed();\n    }\n\n    return s0;\n  }\n\n  function peg$parseCarriageReturnLineFeed(): any {\n    let s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = peg$parseCarriageReturn();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseLineFeed();\n      if (s2 as any !== peg$FAILED) {\n        s1 = [s1, s2];\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseLineFeed(): any {\n    let s0;\n\n    if (input.charCodeAt(peg$currPos) === 10) {\n      s0 = peg$c173;\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c174); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseCarriageReturn(): any {\n    let s0;\n\n    if (input.charCodeAt(peg$currPos) === 13) {\n      s0 = peg$c175;\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c176); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseEscape(): any {\n    let s0;\n\n    if (input.charCodeAt(peg$currPos) === 92) {\n      s0 = peg$c22;\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c23); }\n    }\n\n    return s0;\n  }\n\n  peg$result = peg$startRuleFunction();\n\n  if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n    return peg$result;\n  } else {\n    if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n      peg$fail(peg$endExpectation());\n    }\n\n    throw peg$buildStructuredError(\n      peg$maxFailExpected,\n      peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n      peg$maxFailPos < input.length\n        ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n        : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n    );\n  }\n}\n\nexport interface ParseOptions {\n  filename?: string;\n  startRule?: string;\n  tracer?: any;\n  [key: string]: any;\n}\nexport type ParseFunction = (input: string, options?: ParseOptions) => any;\nexport const parse: ParseFunction = peg$parse;\n\n","import ChordSheetSerializer from '../chord_sheet_serializer';\nimport NullTracer from './null_tracer';\nimport ParserWarning from './parser_warning';\nimport { SerializedSong } from '../serialized_types';\nimport Song from '../chord_sheet/song';\nimport { normalizeLineEndings } from '../utilities';\nimport { ParseOptions, parse } from './chord_pro/peg_parser';\n\nexport type ChordProParserOptions = ParseOptions & {\n  softLineBreaks?: boolean;\n  chopFirstWord?: boolean;\n};\n\n/**\n * Parses a ChordPro chord sheet\n */\nclass ChordProParser {\n  song?: Song;\n\n  /**\n   * All warnings raised during parsing the chord sheet\n   * @member\n   * @type {ParserWarning[]}\n   */\n  get warnings(): ParserWarning[] {\n    return this.song?.warnings || [];\n  }\n\n  /**\n   * Parses a ChordPro chord sheet into a song\n   * @param {string} chordSheet the ChordPro chord sheet\n   * @param {ChordProParserOptions} options Parser options.\n   * @param {ChordProParserOptions.softLineBreaks} options.softLineBreaks=false If true, a backslash\n   * followed by * a space is treated as a soft line break\n   * @param {ChordProParserOptions.chopFirstWord} options.chopFirstWord=true If true, only the first lyric\n   * word is paired with the chord, the rest of the lyric is put in a separate chord lyric pair\n   * @see https://peggyjs.org/documentation.html#using-the-parser\n   * @returns {Song} The parsed song\n   */\n  parse(chordSheet: string, options?: ChordProParserOptions): Song {\n    const ast = parse(\n      normalizeLineEndings(chordSheet),\n      { tracer: new NullTracer(), ...options },\n    ) as SerializedSong;\n\n    this.song = new ChordSheetSerializer().deserialize(ast);\n    return this.song;\n  }\n}\n\nexport default ChordProParser;\n","const WIDE_RANGES: [number, number][] = [\n  [0x1100, 0x11FF], // Hangul Jamo\n  [0x2E80, 0x9FFF], // CJK Radicals through CJK Unified Ideographs\n  [0x3000, 0x303F], // CJK Symbols and Punctuation\n  [0x3040, 0x309F], // Hiragana\n  [0x30A0, 0x30FF], // Katakana\n  [0xAC00, 0xD7AF], // Hangul Syllables\n  [0xF900, 0xFAFF], // CJK Compatibility Ideographs\n  [0xFE30, 0xFE4F], // CJK Compatibility Forms\n  [0xFF01, 0xFFEF], // Fullwidth Forms\n  [0x20000, 0x2FA1F], // CJK Extension B+\n];\n\nexport function isWideCharacter(ch: string): boolean {\n  const code = ch.charCodeAt(0);\n  return WIDE_RANGES.some(([lo, hi]) => code >= lo && code <= hi);\n}\n\nexport function buildVisualColumnMap(lyricsLine: string): number[] {\n  const map: number[] = [];\n  let visualColumn = 0;\n\n  for (let characterIndex = 0; characterIndex < lyricsLine.length; characterIndex += 1) {\n    const characterWidth = isWideCharacter(lyricsLine[characterIndex]) ? 2 : 1;\n    for (let column = 0; column < characterWidth; column += 1) {\n      map[visualColumn] = characterIndex;\n      visualColumn += 1;\n    }\n  }\n\n  return map;\n}\n\nexport function chopFirstWord(string: string) {\n  const result = /(\\s+)(\\S+)/.exec(string);\n  const secondWordPosition = result ? (result.index + result[1].length) : null;\n\n  if (secondWordPosition && secondWordPosition !== -1) {\n    return [\n      string.substring(0, secondWordPosition).trim(),\n      string.substring(secondWordPosition),\n    ];\n  }\n\n  return [\n    /.+\\s+$/.test(string) ? `${string.trim()} ` : string,\n    null,\n  ];\n}\n","/* eslint max-len: 0 */\nimport ChordLyricsPair from '../chord_sheet/chord_lyrics_pair';\nimport Line from '../chord_sheet/line';\nimport Song from '../chord_sheet/song';\nimport SongBuilder from '../song_builder';\nimport { buildVisualColumnMap } from './parser_helpers';\nimport { deprecate, normalizeLineEndings } from '../utilities';\n\nconst WHITE_SPACE = /\\s/;\nconst CHORD_LINE_REGEX = /^\\s*((([A-G|Do|Re|Mi|Fa|Sol|La|Si])(#|b)?([^/\\s]*)(\\/([A-G|Do|Re|Mi|Fa|Sol|La|Si])(#|b)?)?)(\\s|$)+)+(\\s|$)+/;\n\n/**\n * Parses a normal chord sheet\n *\n * ChordSheetParser is deprecated, please use ChordsOverWordsParser.\n *\n * ChordsOverWordsParser aims to support any kind of chord, whereas ChordSheetParser lacks\n * support for many variations. Besides that, some chordpro feature have been ported back\n * to ChordsOverWordsParser, which adds some interesting functionality.\n */\nclass ChordSheetParser {\n  processingText = true;\n\n  preserveWhitespace = true;\n\n  song: Song = new Song();\n\n  songBuilder: SongBuilder = new SongBuilder(this.song);\n\n  songLine: Line | null = null;\n\n  chordLyricsPair: ChordLyricsPair | null = null;\n\n  lines: string[] = [];\n\n  currentLine = 0;\n\n  lineCount = 0;\n\n  /**\n   * Instantiate a chord sheet parser\n   * ChordSheetParser is deprecated, please use ChordsOverWordsParser.\n   * @param {Object} [options={}] options\n   * @param {boolean} [options.preserveWhitespace=true] whether to preserve trailing whitespace for chords\n   * @deprecated\n   */\n  constructor(\n    { preserveWhitespace = true }: { preserveWhitespace?: boolean } = {},\n    showDeprecationWarning = true,\n  ) {\n    if (showDeprecationWarning) {\n      deprecate(\n        `ChordSheetParser is deprecated, please use ChordsOverWordsParser.\n\n  ChordsOverWordsParser aims to support any kind of chord, whereas ChordSheetParser lacks\n  support for many variations. Besides that, some chordpro feature have been ported back\n  to ChordsOverWordsParser, which adds some interesting functionality.`,\n      );\n    }\n\n    this.preserveWhitespace = preserveWhitespace;\n  }\n\n  /**\n   * Parses a chord sheet into a song\n   * @param {string} chordSheet The ChordPro chord sheet\n   * @param {Object} [options={}] Optional parser options\n   * @param {Song} [options.song=null] The {@link Song} to store the song data in\n   * @returns {Song} The parsed song\n   */\n  parse(chordSheet: string, { song }: { song?: Song } = {}): Song {\n    this.initialize(chordSheet, song);\n\n    while (this.hasNextLine()) {\n      const line = this.readLine();\n      this.parseLine(line);\n    }\n\n    this.endOfSong();\n    return this.song;\n  }\n\n  endOfSong() { }\n\n  parseLine(line) {\n    this.songLine = this.songBuilder.addLine();\n\n    if (line.trim().length === 0) {\n      this.chordLyricsPair = null;\n    } else {\n      this.parseNonEmptyLine(line);\n    }\n  }\n\n  parseNonEmptyLine(line) {\n    if (!this.songLine) throw new Error('Expected this.songLine to be present');\n\n    this.chordLyricsPair = this.songLine.addChordLyricsPair();\n\n    if (CHORD_LINE_REGEX.test(line) && this.hasNextLine()) {\n      const nextLine = this.readLine();\n      this.parseLyricsWithChords(line, nextLine);\n    } else {\n      this.chordLyricsPair.lyrics = `${line}`;\n    }\n  }\n\n  initialize(document, song: Song | null = null) {\n    if (song) {\n      this.song = song;\n    }\n\n    this.lines = normalizeLineEndings(document).split('\\n');\n    this.currentLine = 0;\n    this.lineCount = this.lines.length;\n    this.processingText = true;\n  }\n\n  readLine() {\n    const line = this.lines[this.currentLine];\n    this.currentLine += 1;\n    return line;\n  }\n\n  hasNextLine() {\n    return this.currentLine < this.lineCount;\n  }\n\n  parseLyricsWithChords(chordsLine, lyricsLine) {\n    const consumedLyrics = this.processCharacters(chordsLine, lyricsLine);\n\n    if (!this.chordLyricsPair) throw new Error('Expected this.chordLyricsPair to be present');\n\n    this.chordLyricsPair.lyrics += lyricsLine.substring(consumedLyrics);\n    this.chordLyricsPair.chords = this.chordLyricsPair.chords.trim();\n\n    if (this.chordLyricsPair.lyrics) {\n      this.chordLyricsPair.lyrics = this.chordLyricsPair.lyrics.trim();\n    }\n\n    if (!lyricsLine.trim().length) {\n      this.songLine = new Line();\n      this.song.addLine(this.songLine);\n    }\n  }\n\n  processCharacters(chordsLine, lyricsLine): number {\n    const columnToLyricsIndex = buildVisualColumnMap(lyricsLine);\n    let lastLyricsIndex = -1;\n\n    for (let c = 0, charCount = chordsLine.length; c < charCount; c += 1) {\n      this.addCharacter(chordsLine[c], chordsLine[c + 1]);\n      lastLyricsIndex = this.mapLyricsCharacter(columnToLyricsIndex, c, lyricsLine, lastLyricsIndex);\n      this.processingText = !WHITE_SPACE.test(chordsLine[c]);\n    }\n\n    return lastLyricsIndex >= 0 ? lastLyricsIndex + 1 : 0;\n  }\n\n  mapLyricsCharacter(columnMap: number[], column: number, lyricsLine: string, lastIndex: number): number {\n    if (!this.chordLyricsPair) throw new Error('Expected this.chordLyricsPair to be present');\n\n    const lyricsIndex = columnMap[column];\n\n    if (lyricsIndex !== undefined && lyricsIndex !== lastIndex) {\n      this.chordLyricsPair.lyrics += lyricsLine[lyricsIndex];\n      return lyricsIndex;\n    }\n\n    return lastIndex;\n  }\n\n  addCharacter(chr, nextChar) {\n    const isWhiteSpace = WHITE_SPACE.test(chr);\n\n    if (!isWhiteSpace) {\n      this.ensureChordLyricsPairInitialized();\n    }\n\n    if (!isWhiteSpace || this.shouldAddCharacterToChords(nextChar)) {\n      if (!this.chordLyricsPair) throw new Error('Expected this.chordLyricsPair to be present');\n      this.chordLyricsPair.chords += chr;\n    }\n  }\n\n  shouldAddCharacterToChords(nextChar) {\n    return (nextChar && WHITE_SPACE.test(nextChar) && this.preserveWhitespace);\n  }\n\n  ensureChordLyricsPairInitialized() {\n    if (!this.processingText) {\n      if (!this.songLine) throw new Error('Expected this.songLine to be present');\n      this.chordLyricsPair = this.songLine.addChordLyricsPair();\n      this.processingText = true;\n    }\n  }\n}\n\nexport default ChordSheetParser;\n","import { MetadataConfiguration } from '../formatter/configuration';\nimport { MetadataRule } from '../formatter/configuration/base_configuration';\n\nclass MetadataProcessor {\n  metadata: Record<string, string | string[]>;\n\n  config: MetadataConfiguration;\n\n  processedKeys: Set<string>;\n\n  result: [string, string | string[]][];\n\n  constructor(\n    metadata: Record<string, string | string[]>,\n    config: MetadataConfiguration,\n  ) {\n    this.metadata = metadata;\n    this.config = config;\n    this.processedKeys = new Set<string>();\n    this.result = [];\n  }\n\n  process(): [string, string | string[]][] {\n    this.config.order.forEach((orderItem) => {\n      if (typeof orderItem === 'string') {\n        this.addItemByStringKey(orderItem);\n      } else {\n        this.addMatchingKeys(orderItem);\n      }\n    });\n\n    return this.result;\n  }\n\n  private addMatchingKeys(orderItem: MetadataRule) {\n    // Rule - find all matching keys\n    const matchingKeys = this.findMatchingKeys(this.metadata, orderItem);\n    const visibleKeys = matchingKeys.filter((key) => {\n      if (orderItem.visible === false) return false;\n      return !this.processedKeys.has(key);\n    });\n\n    // Sort the matching keys according to the rule\n    const sortedKeys = this.sortKeys(visibleKeys, orderItem);\n\n    // Add to result\n    sortedKeys.forEach((key) => {\n      this.result.push([key, this.metadata[key]]);\n      this.processedKeys.add(key);\n    });\n  }\n\n  private findMatchingKeys(\n    metadata: Record<string, string | string[]>,\n    rule: MetadataRule,\n  ): string[] {\n    const keys = Object.keys(metadata);\n\n    if (typeof rule.match === 'string') {\n      return keys.filter((key) => key === rule.match);\n    }\n\n    if (Array.isArray(rule.match)) {\n      return keys.filter((key) => (rule.match as string[]).includes(key));\n    }\n\n    if (rule.match instanceof RegExp) {\n      return keys.filter((key) => (rule.match as RegExp).test(key));\n    }\n\n    if (typeof rule.match === 'function') {\n      return keys.filter((k) => (rule.match as (key: string) => boolean)(k));\n    }\n\n    return [];\n  }\n\n  private addItemByStringKey(orderItem: string) {\n    // Simple string - look for exact match\n\n    if (this.metadata[orderItem] !== undefined && !this.processedKeys.has(orderItem)) {\n      this.result.push([orderItem, this.metadata[orderItem]]);\n      this.processedKeys.add(orderItem);\n    }\n  }\n\n  private sortKeys(keys: string[], rule: MetadataRule): string[] {\n    switch (rule.sortMethod) {\n      case 'alphabetical':\n        return [...keys].sort();\n\n      case 'custom':\n        if (rule.customSort) {\n          return [...keys].sort(rule.customSort);\n        }\n        return keys;\n\n      case 'preserve':\n      default:\n        // If match is an array, preserve its order for matching keys\n        if (Array.isArray(rule.match)) {\n          const orderMap = new Map(rule.match.map((key, index) => [key, index]));\n          return [...keys].sort((a, b) => {\n            const aIndex = orderMap.get(a) ?? Infinity;\n            const bIndex = orderMap.get(b) ?? Infinity;\n            return aIndex - bIndex;\n          });\n        }\n        return keys;\n    }\n  }\n}\n\nexport default MetadataProcessor;\n","type WhenCallback = () => string;\n\nexport default WhenCallback;\n","import WhenCallback from './when_callback';\n\nclass WhenClause {\n  condition: boolean;\n\n  callback: WhenCallback;\n\n  constructor(condition: any, callback: WhenCallback) {\n    this.condition = !!condition;\n    this.callback = callback;\n  }\n\n  evaluate(otherClauses: WhenClause[]): string {\n    if (this.condition) {\n      return this.callback();\n    }\n\n    if (otherClauses.length > 0) {\n      const [firstClause, ...rest] = otherClauses;\n      return firstClause.evaluate(rest);\n    }\n\n    return '';\n  }\n}\n\nexport default WhenClause;\n","import WhenCallback from './when_callback';\nimport WhenClause from './when_clause';\n\nclass When {\n  condition = false;\n\n  clauses: WhenClause[] = [];\n\n  constructor(condition: any, thenCallback?: WhenCallback) {\n    this.add(condition, thenCallback);\n  }\n\n  then(thenCallback: WhenCallback): When {\n    return this.add(this.condition, thenCallback);\n  }\n\n  elseWhen(condition: any, callback?: WhenCallback): When {\n    return this.add(condition, callback);\n  }\n\n  else(callback: WhenCallback): When {\n    return this.add(true, callback);\n  }\n\n  private add(condition: any, callback?: WhenCallback): When {\n    this.condition = !!condition;\n\n    if (callback) {\n      this.clauses.push(new WhenClause(condition, callback));\n    }\n\n    return this;\n  }\n\n  toString(): string {\n    const [firstClause, ...rest] = this.clauses;\n\n    if (firstClause) {\n      return firstClause.evaluate(rest);\n    }\n\n    throw new Error('Expected at least one .then() clause');\n  }\n}\n\nexport default When;\n","import ChordLyricsPair from './chord_sheet/chord_lyrics_pair';\nimport Evaluatable from './chord_sheet/chord_pro/evaluatable';\nimport Font from './chord_sheet/font';\nimport Item from './chord_sheet/item';\nimport Line from './chord_sheet/line';\nimport Metadata from './chord_sheet/metadata';\nimport { MetadataConfiguration } from './formatter/configuration/base_configuration';\nimport MetadataProcessor from './template_helpers/metadata_processor';\nimport Paragraph from './chord_sheet/paragraph';\nimport Tag from './chord_sheet/tag';\nimport When from './template_helpers/when';\nimport WhenCallback from './template_helpers/when_callback';\n\nimport { renderChord } from './helpers';\nimport { INDETERMINATE, NONE } from './constants';\nimport { Literal, SoftLineBreak } from './index';\nimport { hasChordContents, isEmptyString, isEvaluatable } from './utilities';\n\nimport {\n  Configuration,\n  Delegate,\n  HtmlTemplateCssClasses,\n  defaultCssClasses,\n  defaultDelegate,\n} from './formatter/configuration';\n\ntype EachCallback = (_item: any) => string;\n\nexport { hasChordContents, isEvaluatable } from './utilities';\nexport { renderChord } from './helpers';\n\nimport { pangoToHtml, stripPangoMarkup } from './pango/pango_helpers';\nexport { pangoToHtml, stripPangoMarkup };\n\nexport function isChordLyricsPair(item: Item): boolean {\n  return item instanceof ChordLyricsPair;\n}\n\nexport function isRhythmSymbol(item: Item): boolean {\n  return item instanceof ChordLyricsPair && item.isRhythmSymbol;\n}\n\nexport function lineHasContents(line: Line): boolean {\n  return line.items.some((item: Item) => item.isRenderable());\n}\n\nexport function isTag(item: Item): boolean {\n  return item instanceof Tag;\n}\n\nexport function isLiteral(item: Item): boolean {\n  return item instanceof Literal;\n}\n\nexport function isComment(item: Tag): boolean {\n  return item.name === 'comment';\n}\n\nexport function isImage(item: Tag): boolean {\n  return item.name === 'image';\n}\n\nexport function imageTag(item: Tag): string {\n  const src = item.attributes.src || item.value;\n  const width = item.attributes.width ? ` width=\"${item.attributes.width}\"` : '';\n  const height = item.attributes.height ? ` height=\"${item.attributes.height}\"` : '';\n  return `<img src=\"${src}\"${width}${height}>`;\n}\n\nexport function isColumnBreak(item: Item): boolean {\n  return item instanceof Tag && item.name === 'column_break';\n}\n\nexport function isSoftLineBreak(item: Item): boolean {\n  return item instanceof SoftLineBreak;\n}\n\nexport function stripHTML(string: string): string {\n  return string\n    .trim()\n    .replace(/(<\\/[a-z]+>)\\s+(<)/g, '$1$2')\n    .replace(/(>)\\s+(<\\/[a-z]+>)/g, '$1$2')\n    .replace(/(\\n)\\s+/g, '');\n}\n\nexport function newlinesToBreaks(string: string): string {\n  return string.replace(/\\n/g, '<br>');\n}\n\nexport function renderSection(paragraph: Paragraph, configuration: Configuration): string {\n  const delegate: Delegate = configuration.delegates[paragraph.type] || defaultDelegate;\n\n  return delegate(paragraph.contents);\n}\n\nexport function each(collection: any[], callback: EachCallback): string {\n  return collection.map(callback).join('');\n}\n\nexport function when(condition: any, callback?: WhenCallback): When {\n  return new When(condition, callback);\n}\n\nexport function hasTextContents(line: Line): boolean {\n  return line.items.some((item) => (\n    (item instanceof ChordLyricsPair && !isEmptyString(item.lyrics)) ||\n    (item instanceof Tag && item.isRenderable()) ||\n    isEvaluatable(item)\n  ));\n}\n\nexport function lineClasses(line: Line, cssClasses: HtmlTemplateCssClasses = defaultCssClasses): string {\n  const classes = [cssClasses.row];\n\n  if (!lineHasContents(line)) {\n    classes.push(cssClasses.emptyLine);\n  }\n\n  return classes.join(' ');\n}\n\nexport function paragraphClasses(paragraph: Paragraph, cssClasses: HtmlTemplateCssClasses = defaultCssClasses): string {\n  const classes = [cssClasses.paragraph];\n\n  if (paragraph.type !== INDETERMINATE && paragraph.type !== NONE) {\n    classes.push(paragraph.type);\n  }\n\n  return classes.join(' ');\n}\n\nexport function evaluate(item: Evaluatable, metadata: Metadata, configuration: Configuration): string {\n  return item.evaluate(metadata, configuration.metadata.separator);\n}\n\nexport function fontStyleTag(font: Font): string {\n  const cssString = font.toCssString();\n\n  if (cssString) {\n    return ` style=\"${cssString}\"`;\n  }\n\n  return '';\n}\n\nexport function processMetadata(\n  metadata: Record<string, string | string[]>,\n  config: MetadataConfiguration,\n): [string, string | string[]][] {\n  return new MetadataProcessor(metadata, config).process();\n}\n\nexport default {\n  isLiteral,\n  isSoftLineBreak,\n  isEvaluatable,\n  isChordLyricsPair,\n  lineHasContents,\n  isTag,\n  isComment,\n  isImage,\n  isColumnBreak,\n  stripHTML,\n  each,\n  when,\n  hasTextContents,\n  lineClasses,\n  paragraphClasses,\n  evaluate,\n  fontStyleTag,\n  renderChord,\n  hasChordContents,\n  pangoToHtml,\n  stripPangoMarkup,\n  processMetadata,\n};\n","import ChordLyricsPair from '../chord_sheet/chord_lyrics_pair';\nimport Formatter from './formatter';\nimport Item from '../chord_sheet/item';\nimport Line from '../chord_sheet/line';\nimport Metadata from '../chord_sheet/metadata';\nimport Paragraph from '../chord_sheet/paragraph';\nimport Song from '../chord_sheet/song';\nimport Tag from '../chord_sheet/tag';\n\nimport { renderChord } from '../helpers';\nimport { stripPangoMarkup } from '../pango/pango_helpers';\nimport { SoftLineBreak, Ternary } from '../index';\nimport { hasRemarkContents, isEmptyString, padLeft } from '../utilities';\nimport { hasTextContents, processMetadata, renderSection } from '../template_helpers';\n\n/**\n * Formats a song into a plain text chord sheet\n */\nclass ChordsOverWordsFormatter extends Formatter {\n  song: Song = new Song();\n\n  /**\n   * Formats a song into a plain text chord sheet\n   * @param {Song} song The song to be formatted\n   * @returns {string} the chord sheet\n   */\n  format(song: Song): string {\n    this.song = song;\n\n    const header = this.formatHeader();\n    const paragraphs = this.formatParagraphs();\n\n    // Only add separator if both header and paragraphs exist and first paragraph isn't empty\n    if (header && paragraphs) {\n      // Check if first paragraph has content\n      const firstParagraph = this.song.bodyParagraphs[0];\n      const firstLine = firstParagraph?.lines[0];\n      const shouldReduceNewlines = firstLine && firstLine.isEmpty();\n\n      if (shouldReduceNewlines) {\n        // Remove one newline from header to avoid triple newlines\n        const trimmedHeader = header.replace(/\\n\\n$/, '\\n');\n        return trimmedHeader + paragraphs;\n      }\n    }\n\n    return header + paragraphs;\n  }\n\n  formatHeader(): string {\n    // Process metadata according to configuration\n    const songMetadata = this.song.getMetadata(this.configuration);\n    const orderedMetadata = processMetadata(songMetadata.ownMetadata(), this.configuration.metadata);\n\n    const metadata = orderedMetadata\n      .map(([key, value]) => {\n        if (Array.isArray(value)) {\n          return `${key}: ${value.join(',')}`;\n        }\n        if (typeof value === 'undefined' || value === null || value === '') {\n          return `${key}:`;\n        }\n        return `${key}: ${value}`;\n      })\n      .join('\\n');\n\n    return metadata ? `${metadata}\\n\\n` : '';\n  }\n\n  formatParagraphs(): string {\n    const metadata = this.song.getMetadata(this.configuration);\n    const paragraphs = this.song.filterParagraphs(this.song.bodyParagraphs, this.configuration);\n    const count = paragraphs.length;\n\n    const formattedParagraphs = paragraphs.map((paragraph) => this.formatParagraph(paragraph, metadata));\n    const combined = formattedParagraphs.join('\\n\\n');\n\n    if (formattedParagraphs[count - 1].length === 0) {\n      return combined.substring(0, combined.length - 1);\n    }\n\n    return combined;\n  }\n\n  formatParagraph(paragraph: Paragraph, metadata: Metadata): string {\n    if (paragraph.isLiteral()) {\n      return [paragraph.label, renderSection(paragraph, this.configuration)]\n        .filter((part) => part)\n        .join('\\n');\n    }\n\n    return paragraph.lines\n      .filter((line) => line.hasRenderableItems())\n      .map((line) => this.formatLine(line, metadata))\n      .join('\\n');\n  }\n\n  formatLine(line: Line, metadata: Metadata): string {\n    const parts = [\n      this.formatLineTop(line, metadata),\n      this.formatLineBottom(line, metadata),\n    ];\n\n    return parts\n      .filter((p) => !isEmptyString(p))\n      .map((part) => (part || '').trimRight())\n      .join('\\n');\n  }\n\n  formatLineTop(line: Line, metadata: Metadata): string | null {\n    if (hasRemarkContents(line)) {\n      return this.formatLineWithFormatter(line, this.formatItemTop, metadata);\n    }\n\n    return null;\n  }\n\n  chordLyricsPairLength(chordLyricsPair: ChordLyricsPair, line: Line): number {\n    const content = chordLyricsPair.annotation || this.renderChord(chordLyricsPair, line);\n    const { lyrics } = chordLyricsPair;\n    const contentLength = (content || '').length;\n    const lyricsLength = stripPangoMarkup(lyrics || '').length;\n\n    if (contentLength >= lyricsLength) {\n      return contentLength + 1;\n    }\n\n    return Math.max(contentLength, lyricsLength);\n  }\n\n  formatItemTop(item: Item, _metadata: Metadata, line: Line): string {\n    if (item instanceof Tag && item.isRenderable()) {\n      return item.label;\n    }\n\n    if (item instanceof ChordLyricsPair) {\n      const content = item.annotation || this.renderChord(item, line);\n      return padLeft(content, this.chordLyricsPairLength(item, line));\n    }\n\n    if (item instanceof SoftLineBreak) {\n      return '  ';\n    }\n\n    return '';\n  }\n\n  renderChord(item: ChordLyricsPair, line: Line) {\n    return renderChord(\n      item.chords,\n      line,\n      this.song,\n      {\n        renderKey: this.configuration.key,\n        normalizeChords: this.configuration.normalizeChords,\n        decapo: this.configuration.decapo,\n      },\n    );\n  }\n\n  formatLineBottom(line, metadata) {\n    if (hasTextContents(line)) {\n      return this.formatLineWithFormatter(line, this.formatItemBottom, metadata);\n    }\n\n    return null;\n  }\n\n  formatLineWithFormatter(\n    line: Line,\n    formatter: (_item: Item, _metadata: Metadata, _line: Line) => string,\n    metadata: Metadata,\n  ): string {\n    return line\n      .items\n      .map((item) => formatter.call(this, item, metadata, line))\n      .join('');\n  }\n\n  formatItemBottom(item: Item, metadata: Metadata, line: Line): string {\n    if (typeof item === 'string') {\n      return item;\n    }\n\n    if (item instanceof Tag && item.isRenderable()) {\n      return item.label;\n    }\n\n    if (item instanceof ChordLyricsPair) {\n      return this.formatChordLyricsPair(item, line);\n    }\n\n    if ('evaluate' in item) {\n      return this.formatEvaluatable(item as Ternary, metadata);\n    }\n\n    if (item instanceof SoftLineBreak) {\n      return '\\\\ ';\n    }\n\n    return '';\n  }\n\n  private formatEvaluatable(item: Ternary, metadata: Metadata) {\n    return item.evaluate(metadata, this.configuration.metadata.separator);\n  }\n\n  private formatChordLyricsPair(item: ChordLyricsPair, line: Line) {\n    return padLeft(stripPangoMarkup(item.lyrics || ''), this.chordLyricsPairLength(item, line));\n  }\n}\n\nexport default ChordsOverWordsFormatter;\n","import { chopFirstWord as chopFirstWordFunc } from '../parser_helpers';\n\nimport {\n  SerializedChord,\n  SerializedChordLyricsPair,\n  SerializedLine,\n  SerializedSoftLineBreak,\n} from '../../serialized_types';\n\ntype CarriageReturn = '\\r';\ntype LineFeed = '\\n';\ntype CarriageReturnLineFeed = '\\r\\n';\ntype NewLine = CarriageReturn | LineFeed | CarriageReturnLineFeed;\n\ntype Lyrics = string;\ntype Chord = { column: number, value: string } & SerializedChord;\n\ninterface RhythmSymbol {\n  type: 'symbol',\n  value: '/' | '|' | '-' | 'x',\n  column: number,\n}\n\ninterface NoChord {\n  type: 'noChord',\n  value: string,\n  column: number,\n}\n\ntype DirectionLine = SerializedLine;\ntype InlineMetadata = SerializedLine;\n\ninterface ChordsLine {\n  type: 'chordsLine',\n  items: (Chord | RhythmSymbol | NoChord)[]\n}\n\ninterface LyricsLine {\n  type: 'lyricsLine',\n  content: Lyrics,\n}\n\ntype ChordSheetLine = DirectionLine | InlineMetadata | ChordsLine | LyricsLine;\n\nfunction combineChordSheetLines(\n  newLine: NewLine | null,\n  lines: ChordSheetLine[],\n  trailingLine: ChordSheetLine | null,\n): ChordSheetLine[] {\n  const hasEmptyLine = newLine && newLine.length > 0;\n  const emptyLines = (hasEmptyLine ? [{ type: 'line', items: [] }] : []) as ChordSheetLine[];\n  return [...emptyLines, ...lines, trailingLine].filter((x) => x !== null);\n}\n\nfunction applySoftLineBreaks(line: string): (SerializedSoftLineBreak | SerializedChordLyricsPair | null)[] {\n  // Split on backslash and handle the space separately to preserve trailing space\n  return line\n    .split(/\\\\\\s+/)\n    .flatMap((lyric, index) => ([\n      index === 0 ? null : { type: 'softLineBreak', content: ' ' },\n      lyric.length === 0 ? null : { type: 'chordLyricsPair', chords: '', lyrics: lyric },\n    ]));\n}\n\ntype ChordProperties = Omit<Chord, 'type'>;\n\nfunction chordProperties(chord: Chord): ChordProperties {\n  // Disable no-unused-vars until destructuredObjectIgnorePattern is available\n  const { type: _type, ...properties } = chord;\n  return properties;\n}\n\nfunction getChordData(chord: Chord) {\n  return (chord.type === 'chord') ? { chord: chordProperties(chord) } : { chords: chord.value };\n}\n\nfunction buildSoftLineBreakResult(\n  chordData: ReturnType<typeof getChordData>,\n  firstWord: string,\n  rest: string | null,\n): (SerializedChordLyricsPair | SerializedSoftLineBreak)[] {\n  const cleanFirstWord = firstWord.replace(/\\\\\\s*$/, '');\n  const result: (SerializedChordLyricsPair | SerializedSoftLineBreak)[] = [\n    { ...chordData, type: 'chordLyricsPair', lyrics: cleanFirstWord } as SerializedChordLyricsPair,\n    { type: 'softLineBreak', content: ' ' } as SerializedSoftLineBreak,\n  ];\n\n  if (rest) {\n    result.push(...applySoftLineBreaks(rest).filter((x) => x !== null));\n  }\n\n  return result;\n}\n\nfunction buildChordLyricsPairForChord(\n  chord: Chord,\n  nextChord: Chord | undefined,\n  lyrics: string,\n  chopFirstWord: boolean,\n): (SerializedChordLyricsPair | SerializedSoftLineBreak)[] | SerializedChordLyricsPair {\n  const start = chord.column - 1;\n  const end = nextChord ? nextChord.column - 1 : lyrics.length;\n  const pairLyrics = lyrics.substring(start, end);\n  const [firstWord, rest] = chopFirstWord ? chopFirstWordFunc(pairLyrics) : [pairLyrics, null];\n  const chordData = getChordData(chord);\n\n  const hasSoftLineBreakInFirst = firstWord && /\\\\\\s*$/.test(firstWord);\n\n  if (hasSoftLineBreakInFirst) {\n    return buildSoftLineBreakResult(chordData, firstWord, rest);\n  }\n\n  if (rest) {\n    return [\n      { ...chordData, type: 'chordLyricsPair', lyrics: `${firstWord} ` } as SerializedChordLyricsPair,\n      ...applySoftLineBreaks(rest),\n    ].filter((x) => x !== null);\n  }\n\n  return { ...chordData, type: 'chordLyricsPair', lyrics: firstWord } as SerializedChordLyricsPair;\n}\n\nfunction constructChordLyricsPairs(\n  chords: Chord[],\n  lyrics: string,\n  chopFirstWord: boolean,\n): (SerializedChordLyricsPair | SerializedSoftLineBreak)[] {\n  return chords\n    .map((chord, i) => buildChordLyricsPairForChord(chord, chords[i + 1], lyrics, chopFirstWord))\n    .flat();\n}\n\nfunction pairChordsWithLyrics(\n  chordsLine: ChordsLine,\n  lyricsLine: LyricsLine,\n  chopFirstWord: boolean,\n): SerializedLine {\n  const { content: lyrics } = lyricsLine;\n\n  const chords = chordsLine.items as Chord[];\n  const chordLyricsPairs = constructChordLyricsPairs(chords, lyrics, chopFirstWord);\n  const firstChord = chords[0];\n\n  if (firstChord && firstChord.column > 1) {\n    const firstChordPosition = firstChord.column;\n\n    if (firstChordPosition > 0) {\n      chordLyricsPairs.unshift({\n        type: 'chordLyricsPair',\n        chords: '',\n        lyrics: lyrics.substring(0, firstChordPosition - 1),\n      });\n    }\n  }\n\n  return { type: 'line', items: chordLyricsPairs };\n}\n\nfunction lyricsStringToLine(lyrics: string): SerializedLine {\n  return {\n    type: 'line',\n    items: [\n      {\n        type: 'chordLyricsPair',\n        chords: '',\n        lyrics,\n      },\n    ],\n  };\n}\n\nfunction chordsLineItemToChordLyricsPair(item: Chord | RhythmSymbol | NoChord): SerializedChordLyricsPair {\n  switch (item.type) {\n    case 'chord':\n      return {\n        type: 'chordLyricsPair', chord: item, chords: '', lyrics: null,\n      };\n    case 'symbol':\n      return {\n        type: 'chordLyricsPair', chords: item.value, lyrics: null, isRhythmSymbol: true,\n      };\n    case 'noChord':\n      return { type: 'chordLyricsPair', chords: item.value, lyrics: null };\n    default:\n      throw new Error(`Unexpected chordsLine item ${item}`);\n  }\n}\n\nfunction chordsToLine(chordsLine: ChordsLine): SerializedLine {\n  return {\n    type: 'line',\n    items: chordsLine.items.map((item) => chordsLineItemToChordLyricsPair(item)),\n  };\n}\n\nfunction lyricsToLine(lyricsLine: LyricsLine): SerializedLine {\n  const { content } = lyricsLine;\n\n  if (content && content.length > 0) {\n    return lyricsStringToLine(content);\n  }\n\n  return { type: 'line', items: [] };\n}\n\nfunction buildLine(\n  chordSheetLine: ChordSheetLine,\n  nextLine: ChordSheetLine,\n  chopFirstWord: boolean,\n): [SerializedLine, boolean] {\n  const { type } = chordSheetLine;\n\n  if (type === 'lyricsLine') {\n    return [lyricsToLine(chordSheetLine), false];\n  } if (type === 'chordsLine') {\n    if (nextLine && nextLine.type === 'lyricsLine' && nextLine.content && nextLine.content.length > 0) {\n      return [pairChordsWithLyrics(chordSheetLine, nextLine, chopFirstWord), true];\n    }\n    return [chordsToLine(chordSheetLine), false];\n  }\n  return [chordSheetLine, false];\n}\n\nfunction arrangeChordSheetLines(chordSheetLines: ChordSheetLine[], chopFirstWord: boolean): SerializedLine[] {\n  const arrangedLines: SerializedLine[] = [];\n  let lineIndex = 0;\n  const lastLineIndex = chordSheetLines.length - 1;\n\n  while (lineIndex <= lastLineIndex) {\n    const chordSheetLine = chordSheetLines[lineIndex];\n    const nextLine = chordSheetLines[lineIndex + 1];\n    const [arrangedLine, skipNextLine] = buildLine(chordSheetLine, nextLine, chopFirstWord);\n    arrangedLines.push(arrangedLine);\n    lineIndex += (skipNextLine ? 2 : 1);\n  }\n\n  return arrangedLines;\n}\n\nexport function composeChordSheetContents(\n  newLine: NewLine | null,\n  lines: ChordSheetLine[],\n  trailingLine: ChordSheetLine | null,\n  chopFirstWord: boolean,\n) {\n  const allLines = combineChordSheetLines(newLine, lines, trailingLine);\n  return arrangeChordSheetLines(allLines, chopFirstWord);\n}\n","import * as helpers from './helpers';\n\n\n// Generated by peggy v. 5.1.0 (ts-pegjs plugin v. 3.1.0 )\n//\n// https://peggyjs.org/   https://github.com/metadevpro/ts-pegjs\n\n\"use strict\";\n\nexport interface FilePosition {\n  offset: number;\n  line: number;\n  column: number;\n}\n\nexport interface FileRange {\n  start: FilePosition;\n  end: FilePosition;\n  source: string;\n}\n\nexport interface LiteralExpectation {\n  type: \"literal\";\n  text: string;\n  ignoreCase: boolean;\n}\n\nexport interface ClassParts extends Array<string | ClassParts> {}\n\nexport interface ClassExpectation {\n  type: \"class\";\n  parts: ClassParts;\n  inverted: boolean;\n  ignoreCase: boolean;\n}\n\nexport interface AnyExpectation {\n  type: \"any\";\n}\n\nexport interface EndExpectation {\n  type: \"end\";\n}\n\nexport interface OtherExpectation {\n  type: \"other\";\n  description: string;\n}\n\nexport type Expectation = LiteralExpectation | ClassExpectation | AnyExpectation | EndExpectation | OtherExpectation;\n\nfunction peg$padEnd(str: string, targetLength: number, padString: string) {\n  padString = padString || ' ';\n  if (str.length > targetLength) {\n    return str;\n  }\n  targetLength -= str.length;\n  padString += padString.repeat(targetLength);\n  return str + padString.slice(0, targetLength);\n}\n\nexport class PeggySyntaxError extends Error {\n  public static buildMessage(expected: Expectation[], found: string | null) {\n    function hex(ch: string): string {\n      return ch.charCodeAt(0).toString(16).toUpperCase();\n    }\n\n    function literalEscape(s: string): string {\n      return s\n        .replace(/\\\\/g, \"\\\\\\\\\")\n        .replace(/\"/g,  \"\\\\\\\"\")\n        .replace(/\\0/g, \"\\\\0\")\n        .replace(/\\t/g, \"\\\\t\")\n        .replace(/\\n/g, \"\\\\n\")\n        .replace(/\\r/g, \"\\\\r\")\n        .replace(/[\\x00-\\x0F]/g,            (ch) => \"\\\\x0\" + hex(ch) )\n        .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\"  + hex(ch) );\n    }\n\n    function classEscape(s: string): string {\n      return s\n        .replace(/\\\\/g, \"\\\\\\\\\")\n        .replace(/\\]/g, \"\\\\]\")\n        .replace(/\\^/g, \"\\\\^\")\n        .replace(/-/g,  \"\\\\-\")\n        .replace(/\\0/g, \"\\\\0\")\n        .replace(/\\t/g, \"\\\\t\")\n        .replace(/\\n/g, \"\\\\n\")\n        .replace(/\\r/g, \"\\\\r\")\n        .replace(/[\\x00-\\x0F]/g,            (ch) => \"\\\\x0\" + hex(ch) )\n        .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => \"\\\\x\"  + hex(ch) );\n    }\n\n    function describeExpectation(expectation: Expectation) {\n      switch (expectation.type) {\n        case \"literal\":\n          return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n        case \"class\":\n          const escapedParts = expectation.parts.map((part) => {\n            return Array.isArray(part)\n              ? classEscape(part[0] as string) + \"-\" + classEscape(part[1] as string)\n              : classEscape(part);\n          });\n\n          return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts + \"]\";\n        case \"any\":\n          return \"any character\";\n        case \"end\":\n          return \"end of input\";\n        case \"other\":\n          return expectation.description;\n      }\n    }\n\n    function describeExpected(expected1: Expectation[]) {\n      const descriptions = expected1.map(describeExpectation);\n      let i: number;\n      let j: number;\n\n      descriptions.sort();\n\n      if (descriptions.length > 0) {\n        for (i = 1, j = 1; i < descriptions.length; i++) {\n          if (descriptions[i - 1] !== descriptions[i]) {\n            descriptions[j] = descriptions[i];\n            j++;\n          }\n        }\n        descriptions.length = j;\n      }\n\n      switch (descriptions.length) {\n        case 1:\n          return descriptions[0];\n\n        case 2:\n          return descriptions[0] + \" or \" + descriptions[1];\n\n        default:\n          return descriptions.slice(0, -1).join(\", \")\n            + \", or \"\n            + descriptions[descriptions.length - 1];\n      }\n    }\n\n    function describeFound(found1: string | null) {\n      return found1 ? \"\\\"\" + literalEscape(found1) + \"\\\"\" : \"end of input\";\n    }\n\n    return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n  }\n\n  public message: string;\n  public expected: Expectation[];\n  public found: string | null;\n  public location: FileRange;\n  public name: string;\n\n  constructor(message: string, expected: Expectation[], found: string | null, location: FileRange) {\n    super();\n    this.message = message;\n    this.expected = expected;\n    this.found = found;\n    this.location = location;\n    this.name = \"PeggySyntaxError\";\n\n    if (typeof (Object as any).setPrototypeOf === \"function\") {\n      (Object as any).setPrototypeOf(this, PeggySyntaxError.prototype);\n    } else {\n      (this as any).__proto__ = PeggySyntaxError.prototype;\n    }\n    if (typeof (Error as any).captureStackTrace === \"function\") {\n      (Error as any).captureStackTrace(this, PeggySyntaxError);\n    }\n  }\n\n  format(sources: { grammarSource?: string; text: string }[]): string {\n    let str = 'Error: ' + this.message;\n    if (this.location) {\n      let src: string[] | null = null;\n      let k;\n      for (k = 0; k < sources.length; k++) {\n        if (sources[k].grammarSource === this.location.source) {\n          src = sources[k].text.split(/\\r\\n|\\n|\\r/g);\n          break;\n        }\n      }\n      let s = this.location.start;\n      let loc = this.location.source + ':' + s.line + ':' + s.column;\n      if (src) {\n        let e = this.location.end;\n        let filler = peg$padEnd('', s.line.toString().length, ' ');\n        let line = src[s.line - 1];\n        let last = s.line === e.line ? e.column : line.length + 1;\n        str += '\\n --> ' + loc + '\\n' + filler + ' |\\n' + s.line + ' | ' + line + '\\n' + filler + ' | ' +\n          peg$padEnd('', s.column - 1, ' ') +\n          peg$padEnd('', last - s.column, '^');\n      } else {\n        str += '\\n at ' + loc;\n      }\n    }\n    return str;\n  }\n}\n\nfunction peg$parse(input: string, options?: ParseOptions) {\n  options = options !== undefined ? options : {};\n\n  const peg$FAILED: Readonly<any> = {};\n  const peg$source = options.grammarSource;\n\n  const peg$startRuleFunctions: {[id: string]: any} = { ChordSheet: peg$parseChordSheet };\n  let peg$startRuleFunction: () => any = peg$parseChordSheet;\n\n  const peg$c0 = function(metadataLines: any, lines: any): any {\n        return {\n          type: \"chordSheet\",\n          lines: [\n            ...metadataLines,\n            ...lines,\n          ]\n        };\n      };\n  const peg$c1 = function(newLine: any, lines: any, trailingLine: any): any {\n      return helpers.composeChordSheetContents(newLine, lines, trailingLine, options.chopFirstWord !== false);\n    };\n  const peg$c2 = function(item: any): any {\n      return item;\n    };\n  const peg$c3 = function(line: any): any { return line; };\n  const peg$c4 = function(items: any): any {\n        if (items.some(item => item.type === 'chord' || item.type === 'noChord')) return true;\n        if (items.length <= 1) return false;\n        return !items.some((item, i) => i > 0 && item.column === items[i - 1].column + 1);\n      };\n  const peg$c5 = function(items: any): any {\n        return {\n          type: \"chordsLine\",\n          items\n        };\n      };\n  const peg$c6 = function(symbol: any): any {\n        return symbol;\n      };\n  const peg$c7 = /^[\\-\\/x|]/;\n  const peg$c8 = peg$classExpectation([\"-\", \"/\", \"x\", \"|\"], false, false);\n  const peg$c9 = function(symbol: any): any {\n        return {\n          type: \"symbol\",\n          value: symbol,\n          column: location().start.column\n        };\n      };\n  const peg$c10 = function(lyrics: any): any {\n      return { type: \"lyricsLine\", content: lyrics };\n    };\n  const peg$c11 = /^[a-zA-Z]/;\n  const peg$c12 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"]], false, false);\n  const peg$c13 = function(noChord: any): any {\n        return noChord;\n      };\n  const peg$c14 = \"n.c.\";\n  const peg$c15 = peg$literalExpectation(\"N.C.\", true);\n  const peg$c16 = \"n.c\";\n  const peg$c17 = peg$literalExpectation(\"N.C\", true);\n  const peg$c18 = \"n/c\";\n  const peg$c19 = peg$literalExpectation(\"N/C\", true);\n  const peg$c20 = \"nc\";\n  const peg$c21 = peg$literalExpectation(\"NC\", true);\n  const peg$c22 = function(): any {\n        return {\n          type: \"noChord\",\n          value: text(),\n          column: location().start.column\n        };\n      };\n  const peg$c23 = function(chord: any): any {\n        return chord;\n      };\n  const peg$c24 = function(line: any): any {\n        return {\n          type: \"line\",\n          items: [\n            { type: \"tag\", name: \"comment\", value: line }\n          ]\n        };\n      };\n  const peg$c25 = \"verse\";\n  const peg$c26 = peg$literalExpectation(\"verse\", true);\n  const peg$c27 = \"chorus\";\n  const peg$c28 = peg$literalExpectation(\"chorus\", true);\n  const peg$c29 = \"bridge\";\n  const peg$c30 = peg$literalExpectation(\"bridge\", true);\n  const peg$c31 = \"tag\";\n  const peg$c32 = peg$literalExpectation(\"tag\", true);\n  const peg$c33 = \"interlude\";\n  const peg$c34 = peg$literalExpectation(\"interlude\", true);\n  const peg$c35 = \"instrumental\";\n  const peg$c36 = peg$literalExpectation(\"instrumental\", true);\n  const peg$c37 = \"intro\";\n  const peg$c38 = peg$literalExpectation(\"intro\", true);\n  const peg$c39 = /^[^\\n\\r]/;\n  const peg$c40 = peg$classExpectation([\"\\n\", \"\\r\"], true, false);\n  const peg$c41 = function(pairs: any, trailingPair: any): any {\n        return [...pairs, trailingPair]\n          .filter(x => x)\n          .map(([key, value]) => ({\n            type: \"line\",\n            items: [\n              { type: \"tag\", name: key, value },\n            ],\n          }));\n      };\n  const peg$c42 = function(key: any, value: any): any {\n        return {\n          type: \"line\",\n          items: [\n            { type: \"tag\", name: key, value },\n          ],\n        }\n      };\n  const peg$c43 = function(pair: any): any {\n        return pair;\n      };\n  const peg$c44 = \"{\";\n  const peg$c45 = peg$literalExpectation(\"{\", false);\n  const peg$c46 = \"}\";\n  const peg$c47 = peg$literalExpectation(\"}\", false);\n  const peg$c48 = function(pair: any): any {\n      return pair;\n    };\n  const peg$c49 = function(key: any, value: any): any {\n      return [key, value];\n    };\n  const peg$c50 = \":\";\n  const peg$c51 = peg$literalExpectation(\":\", false);\n  const peg$c52 = /^[a-zA-Z0-9\\-_]/;\n  const peg$c53 = peg$classExpectation([[\"a\", \"z\"], [\"A\", \"Z\"], [\"0\", \"9\"], \"-\", \"_\"], false, false);\n  const peg$c54 = /^[^\\n\\r}]/;\n  const peg$c55 = peg$classExpectation([\"\\n\", \"\\r\", \"}\"], true, false);\n  const peg$c56 = \"---\";\n  const peg$c57 = peg$literalExpectation(\"---\", false);\n  const peg$c58 = peg$otherExpectation(\"whitespace\");\n  const peg$c59 = /^[ \\t]/;\n  const peg$c60 = peg$classExpectation([\" \", \"\\t\"], false, false);\n  const peg$c61 = \"(\";\n  const peg$c62 = peg$literalExpectation(\"(\", false);\n  const peg$c63 = \")\";\n  const peg$c64 = peg$literalExpectation(\")\", false);\n  const peg$c65 = function(chord: any): any {\n        return { type: \"chord\", ...chord, column: location().start.column, optional: true };\n      };\n  const peg$c66 = function(chord: any): any {\n        return { type: \"chord\", ...chord, column: location().start.column };\n      };\n  const peg$c67 = /^[#b]/;\n  const peg$c68 = peg$classExpectation([\"#\", \"b\"], false, false);\n  const peg$c69 = function(root: any, accidental: any, suffix: any, bass: any): any {\n        const suffixProps = typeof suffix === 'string' || suffix === null\n          ? { suffix }\n          : { quality: suffix.quality, extensions: suffix.extensions };\n    \t  return { base: root, accidental, ...suffixProps, ...bass, chordType: \"symbol\" };\n      };\n  const peg$c70 = function(bass: any): any {\n        return { base: null, accidental: null, suffix: null, ...bass, chordType: \"symbol\" };\n      };\n  const peg$c71 = /^[A-Ga-g]/;\n  const peg$c72 = peg$classExpectation([[\"A\", \"G\"], [\"a\", \"g\"]], false, false);\n  const peg$c73 = \"/\";\n  const peg$c74 = peg$literalExpectation(\"/\", false);\n  const peg$c75 = function(root: any, accidental: any): any {\n        return { bassBase: root, bassAccidental: accidental };\n      };\n  const peg$c76 = function(root: any, accidental: any, suffix: any, bass: any): any {\n        const suffixProps = typeof suffix === 'string' || suffix === null\n          ? { suffix }\n          : { quality: suffix.quality, extensions: suffix.extensions };\n    \t  return { base: root, accidental, ...suffixProps, ...bass, chordType: \"solfege\" };\n      };\n  const peg$c77 = function(bass: any): any {\n        return { base: null, accidental: null, suffix: null, ...bass, chordType: \"solfege\" };\n      };\n  const peg$c78 = \"do\";\n  const peg$c79 = peg$literalExpectation(\"Do\", true);\n  const peg$c80 = \"re\";\n  const peg$c81 = peg$literalExpectation(\"Re\", true);\n  const peg$c82 = \"mi\";\n  const peg$c83 = peg$literalExpectation(\"Mi\", true);\n  const peg$c84 = \"sol\";\n  const peg$c85 = peg$literalExpectation(\"Sol\", true);\n  const peg$c86 = \"la\";\n  const peg$c87 = peg$literalExpectation(\"La\", true);\n  const peg$c88 = \"si\";\n  const peg$c89 = peg$literalExpectation(\"Si\", true);\n  const peg$c90 = \"Fa\";\n  const peg$c91 = peg$literalExpectation(\"Fa\", false);\n  const peg$c92 = \"dd\";\n  const peg$c93 = peg$literalExpectation(\"dd\", true);\n  const peg$c94 = \"ug\";\n  const peg$c95 = peg$literalExpectation(\"ug\", true);\n  const peg$c96 = function(): any { return \"Fa\"; };\n  const peg$c97 = \"fa\";\n  const peg$c98 = peg$literalExpectation(\"fa\", false);\n  const peg$c99 = function(): any { return \"fa\"; };\n  const peg$c100 = function(accidental: any, root: any, suffix: any, bass: any): any {\n        const suffixProps = typeof suffix === 'string' || suffix === null\n          ? { suffix }\n          : { quality: suffix.quality, extensions: suffix.extensions };\n        return { base: root, accidental, ...suffixProps, ...bass, chordType: \"numeral\" };\n      };\n  const peg$c101 = function(bass: any): any {\n        return { base: null, accidental: null, suffix: null, ...bass, chordType: \"numeral\" };\n      };\n  const peg$c102 = \"iii\";\n  const peg$c103 = peg$literalExpectation(\"III\", true);\n  const peg$c104 = \"vii\";\n  const peg$c105 = peg$literalExpectation(\"VII\", true);\n  const peg$c106 = \"ii\";\n  const peg$c107 = peg$literalExpectation(\"II\", true);\n  const peg$c108 = \"iv\";\n  const peg$c109 = peg$literalExpectation(\"IV\", true);\n  const peg$c110 = \"vi\";\n  const peg$c111 = peg$literalExpectation(\"VI\", true);\n  const peg$c112 = /^[IV]/i;\n  const peg$c113 = peg$classExpectation([\"I\", \"V\"], false, true);\n  const peg$c114 = function(accidental: any, root: any): any {\n        return { bassBase: root, bassAccidental: accidental };\n      };\n  const peg$c115 = function(accidental: any, root: any, suffix: any, bass: any): any {\n        const suffixProps = typeof suffix === 'string' || suffix === null\n          ? { suffix }\n          : { quality: suffix.quality, extensions: suffix.extensions };\n        return { base: root, accidental, ...suffixProps, ...bass, chordType: \"numeric\" };\n      };\n  const peg$c116 = function(bass: any): any {\n        return { base: null, accidental: null, suffix: null, ...bass, chordType: \"numeric\" };\n      };\n  const peg$c117 = /^[1-7]/;\n  const peg$c118 = peg$classExpectation([[\"1\", \"7\"]], false, false);\n  const peg$c119 = \"2(#4)(#42)(2#4)\";\n  const peg$c120 = peg$literalExpectation(\"2(#4)(#42)(2#4)\", false);\n  const peg$c121 = \"maj13(+11+5)\";\n  const peg$c122 = peg$literalExpectation(\"maj13(+11+5)\", false);\n  const peg$c123 = \"maj13(#11#5)\";\n  const peg$c124 = peg$literalExpectation(\"maj13(#11#5)\", false);\n  const peg$c125 = \"ma13(#11#5)\";\n  const peg$c126 = peg$literalExpectation(\"ma13(#11#5)\", false);\n  const peg$c127 = \"ma13(+11+5)\";\n  const peg$c128 = peg$literalExpectation(\"ma13(+11+5)\", false);\n  const peg$c129 = \"maj13(+9+5)\";\n  const peg$c130 = peg$literalExpectation(\"maj13(+9+5)\", false);\n  const peg$c131 = \"maj13(#9#5)\";\n  const peg$c132 = peg$literalExpectation(\"maj13(#9#5)\", false);\n  const peg$c133 = \"maj13(-9+5)\";\n  const peg$c134 = peg$literalExpectation(\"maj13(-9+5)\", false);\n  const peg$c135 = \"maj13(b9#5)\";\n  const peg$c136 = peg$literalExpectation(\"maj13(b9#5)\", false);\n  const peg$c137 = \"maj9(+11+5)\";\n  const peg$c138 = peg$literalExpectation(\"maj9(+11+5)\", false);\n  const peg$c139 = \"maj9(#11#5)\";\n  const peg$c140 = peg$literalExpectation(\"maj9(#11#5)\", false);\n  const peg$c141 = \"maj9(-13+5)\";\n  const peg$c142 = peg$literalExpectation(\"maj9(-13+5)\", false);\n  const peg$c143 = \"maj9(b13#5)\";\n  const peg$c144 = peg$literalExpectation(\"maj9(b13#5)\", false);\n  const peg$c145 = \"m11(#9b13)\";\n  const peg$c146 = peg$literalExpectation(\"m11(#9b13)\", false);\n  const peg$c147 = \"m11(+9-13)\";\n  const peg$c148 = peg$literalExpectation(\"m11(+9-13)\", false);\n  const peg$c149 = \"-11(#9b13)\";\n  const peg$c150 = peg$literalExpectation(\"-11(#9b13)\", false);\n  const peg$c151 = \"-11(+9-13)\";\n  const peg$c152 = peg$literalExpectation(\"-11(+9-13)\", false);\n  const peg$c153 = \"m11(b13#5)\";\n  const peg$c154 = peg$literalExpectation(\"m11(b13#5)\", false);\n  const peg$c155 = \"m11(#5b13)\";\n  const peg$c156 = peg$literalExpectation(\"m11(#5b13)\", false);\n  const peg$c157 = \"m11(+5-13)\";\n  const peg$c158 = peg$literalExpectation(\"m11(+5-13)\", false);\n  const peg$c159 = \"-11(#5b13)\";\n  const peg$c160 = peg$literalExpectation(\"-11(#5b13)\", false);\n  const peg$c161 = \"-11(+5-13)\";\n  const peg$c162 = peg$literalExpectation(\"-11(+5-13)\", false);\n  const peg$c163 = \"m11(b5b13)\";\n  const peg$c164 = peg$literalExpectation(\"m11(b5b13)\", false);\n  const peg$c165 = \"m11(-5-13)\";\n  const peg$c166 = peg$literalExpectation(\"m11(-5-13)\", false);\n  const peg$c167 = \"-11(b5b13)\";\n  const peg$c168 = peg$literalExpectation(\"-11(b5b13)\", false);\n  const peg$c169 = \"-11(-5-13)\";\n  const peg$c170 = peg$literalExpectation(\"-11(-5-13)\", false);\n  const peg$c171 = \"m11(b9b13)\";\n  const peg$c172 = peg$literalExpectation(\"m11(b9b13)\", false);\n  const peg$c173 = \"m11(-9-13)\";\n  const peg$c174 = peg$literalExpectation(\"m11(-9-13)\", false);\n  const peg$c175 = \"-11(b9b13)\";\n  const peg$c176 = peg$literalExpectation(\"-11(b9b13)\", false);\n  const peg$c177 = \"-11(-9-13)\";\n  const peg$c178 = peg$literalExpectation(\"-11(-9-13)\", false);\n  const peg$c179 = \"maj11(-13)\";\n  const peg$c180 = peg$literalExpectation(\"maj11(-13)\", false);\n  const peg$c181 = \"maj11(b13)\";\n  const peg$c182 = peg$literalExpectation(\"maj11(b13)\", false);\n  const peg$c183 = \"maj13(+11)\";\n  const peg$c184 = peg$literalExpectation(\"maj13(+11)\", false);\n  const peg$c185 = \"maj13(#11)\";\n  const peg$c186 = peg$literalExpectation(\"maj13(#11)\", false);\n  const peg$c187 = \"maj13#11#5\";\n  const peg$c188 = peg$literalExpectation(\"maj13#11#5\", false);\n  const peg$c189 = \"maj13+11+5\";\n  const peg$c190 = peg$literalExpectation(\"maj13+11+5\", false);\n  const peg$c191 = \"+13(#11#5)\";\n  const peg$c192 = peg$literalExpectation(\"+13(#11#5)\", false);\n  const peg$c193 = \"+13(+11+5)\";\n  const peg$c194 = peg$literalExpectation(\"+13(+11+5)\", false);\n  const peg$c195 = \"ma13(#9#5)\";\n  const peg$c196 = peg$literalExpectation(\"ma13(#9#5)\", false);\n  const peg$c197 = \"ma13(+9+5)\";\n  const peg$c198 = peg$literalExpectation(\"ma13(+9+5)\", false);\n  const peg$c199 = \"ma13(b9#5)\";\n  const peg$c200 = peg$literalExpectation(\"ma13(b9#5)\", false);\n  const peg$c201 = \"ma13(-9+5)\";\n  const peg$c202 = peg$literalExpectation(\"ma13(-9+5)\", false);\n  const peg$c203 = \"(triangle)\";\n  const peg$c204 = peg$literalExpectation(\"(triangle)\", false);\n  const peg$c205 = \"ma9(#11#5)\";\n  const peg$c206 = peg$literalExpectation(\"ma9(#11#5)\", false);\n  const peg$c207 = \"ma9(+11+5)\";\n  const peg$c208 = peg$literalExpectation(\"ma9(+11+5)\", false);\n  const peg$c209 = \"ma9(b13#5)\";\n  const peg$c210 = peg$literalExpectation(\"ma9(b13#5)\", false);\n  const peg$c211 = \"ma9(-13+5)\";\n  const peg$c212 = peg$literalExpectation(\"ma9(-13+5)\", false);\n  const peg$c213 = \"add9(no3)\";\n  const peg$c214 = peg$literalExpectation(\"add9(no3)\", false);\n  const peg$c215 = \"min(maj7)\";\n  const peg$c216 = peg$literalExpectation(\"min(maj7)\", false);\n  const peg$c217 = \"min(maj9)\";\n  const peg$c218 = peg$literalExpectation(\"min(maj9)\", false);\n  const peg$c219 = \"m11(#9#5)\";\n  const peg$c220 = peg$literalExpectation(\"m11(#9#5)\", false);\n  const peg$c221 = \"m11(#5#9)\";\n  const peg$c222 = peg$literalExpectation(\"m11(#5#9)\", false);\n  const peg$c223 = \"m11(+5+9)\";\n  const peg$c224 = peg$literalExpectation(\"m11(+5+9)\", false);\n  const peg$c225 = \"-11(#5#9)\";\n  const peg$c226 = peg$literalExpectation(\"-11(#5#9)\", false);\n  const peg$c227 = \"-11(+5+9)\";\n  const peg$c228 = peg$literalExpectation(\"-11(+5+9)\", false);\n  const peg$c229 = \"m11(b5#9)\";\n  const peg$c230 = peg$literalExpectation(\"m11(b5#9)\", false);\n  const peg$c231 = \"m11(-5+9)\";\n  const peg$c232 = peg$literalExpectation(\"m11(-5+9)\", false);\n  const peg$c233 = \"-11(b5#9)\";\n  const peg$c234 = peg$literalExpectation(\"-11(b5#9)\", false);\n  const peg$c235 = \"-11(-5+9)\";\n  const peg$c236 = peg$literalExpectation(\"-11(-5+9)\", false);\n  const peg$c237 = \"m11(b5b9)\";\n  const peg$c238 = peg$literalExpectation(\"m11(b5b9)\", false);\n  const peg$c239 = \"m11(-5-9)\";\n  const peg$c240 = peg$literalExpectation(\"m11(-5-9)\", false);\n  const peg$c241 = \"-11(b5b9)\";\n  const peg$c242 = peg$literalExpectation(\"-11(b5b9)\", false);\n  const peg$c243 = \"-11(-5-9)\";\n  const peg$c244 = peg$literalExpectation(\"-11(-5-9)\", false);\n  const peg$c245 = \"m11(b9#5)\";\n  const peg$c246 = peg$literalExpectation(\"m11(b9#5)\", false);\n  const peg$c247 = \"m11(#5b9)\";\n  const peg$c248 = peg$literalExpectation(\"m11(#5b9)\", false);\n  const peg$c249 = \"m11(+5-9)\";\n  const peg$c250 = peg$literalExpectation(\"m11(+5-9)\", false);\n  const peg$c251 = \"-11(#5b9)\";\n  const peg$c252 = peg$literalExpectation(\"-11(#5b9)\", false);\n  const peg$c253 = \"-11(+5-9)\";\n  const peg$c254 = peg$literalExpectation(\"-11(+5-9)\", false);\n  const peg$c255 = \"m7(add11)\";\n  const peg$c256 = peg$literalExpectation(\"m7(add11)\", false);\n  const peg$c257 = \"min7(no3)\";\n  const peg$c258 = peg$literalExpectation(\"min7(no3)\", false);\n  const peg$c259 = \"maj11(+5)\";\n  const peg$c260 = peg$literalExpectation(\"maj11(+5)\", false);\n  const peg$c261 = \"maj11(#5)\";\n  const peg$c262 = peg$literalExpectation(\"maj11(#5)\", false);\n  const peg$c263 = \"maj11(+9)\";\n  const peg$c264 = peg$literalExpectation(\"maj11(+9)\", false);\n  const peg$c265 = \"maj11(#9)\";\n  const peg$c266 = peg$literalExpectation(\"maj11(#9)\", false);\n  const peg$c267 = \"ma11(b13)\";\n  const peg$c268 = peg$literalExpectation(\"ma11(b13)\", false);\n  const peg$c269 = \"ma11(-13)\";\n  const peg$c270 = peg$literalExpectation(\"ma11(-13)\", false);\n  const peg$c271 = \"maj11(-5)\";\n  const peg$c272 = peg$literalExpectation(\"maj11(-5)\", false);\n  const peg$c273 = \"maj11(b5)\";\n  const peg$c274 = peg$literalExpectation(\"maj11(b5)\", false);\n  const peg$c275 = \"maj11(-9)\";\n  const peg$c276 = peg$literalExpectation(\"maj11(-9)\", false);\n  const peg$c277 = \"maj11(b9)\";\n  const peg$c278 = peg$literalExpectation(\"maj11(b9)\", false);\n  const peg$c279 = \"ma13(#11)\";\n  const peg$c280 = peg$literalExpectation(\"ma13(#11)\", false);\n  const peg$c281 = \"ma13(+11)\";\n  const peg$c282 = peg$literalExpectation(\"ma13(+11)\", false);\n  const peg$c283 = \"ma13+11+5\";\n  const peg$c284 = peg$literalExpectation(\"ma13+11+5\", false);\n  const peg$c285 = \"maj13(+5)\";\n  const peg$c286 = peg$literalExpectation(\"maj13(+5)\", false);\n  const peg$c287 = \"maj13(#5)\";\n  const peg$c288 = peg$literalExpectation(\"maj13(#5)\", false);\n  const peg$c289 = \"maj13(+9)\";\n  const peg$c290 = peg$literalExpectation(\"maj13(+9)\", false);\n  const peg$c291 = \"maj13(#9)\";\n  const peg$c292 = peg$literalExpectation(\"maj13(#9)\", false);\n  const peg$c293 = \"maj13#9#5\";\n  const peg$c294 = peg$literalExpectation(\"maj13#9#5\", false);\n  const peg$c295 = \"maj13+9+5\";\n  const peg$c296 = peg$literalExpectation(\"maj13+9+5\", false);\n  const peg$c297 = \"+13(#9#5)\";\n  const peg$c298 = peg$literalExpectation(\"+13(#9#5)\", false);\n  const peg$c299 = \"M13(+9+5)\";\n  const peg$c300 = peg$literalExpectation(\"M13(+9+5)\", false);\n  const peg$c301 = \"maj13(-5)\";\n  const peg$c302 = peg$literalExpectation(\"maj13(-5)\", false);\n  const peg$c303 = \"maj13(b5)\";\n  const peg$c304 = peg$literalExpectation(\"maj13(b5)\", false);\n  const peg$c305 = \"maj13(-9)\";\n  const peg$c306 = peg$literalExpectation(\"maj13(-9)\", false);\n  const peg$c307 = \"maj13(b9)\";\n  const peg$c308 = peg$literalExpectation(\"maj13(b9)\", false);\n  const peg$c309 = \"maj13b9#5\";\n  const peg$c310 = peg$literalExpectation(\"maj13b9#5\", false);\n  const peg$c311 = \"maj13-9+5\";\n  const peg$c312 = peg$literalExpectation(\"maj13-9+5\", false);\n  const peg$c313 = \"+13(b9#5)\";\n  const peg$c314 = peg$literalExpectation(\"+13(b9#5)\", false);\n  const peg$c315 = \"+13(-9+5)\";\n  const peg$c316 = peg$literalExpectation(\"+13(-9+5)\", false);\n  const peg$c317 = \"maj7(+11)\";\n  const peg$c318 = peg$literalExpectation(\"maj7(+11)\", false);\n  const peg$c319 = \"maj7(#11)\";\n  const peg$c320 = peg$literalExpectation(\"maj7(#11)\", false);\n  const peg$c321 = \"aug(maj7)\";\n  const peg$c322 = peg$literalExpectation(\"aug(maj7)\", false);\n  const peg$c323 = \"maj7(-13)\";\n  const peg$c324 = peg$literalExpectation(\"maj7(-13)\", false);\n  const peg$c325 = \"maj7(b13)\";\n  const peg$c326 = peg$literalExpectation(\"maj7(b13)\", false);\n  const peg$c327 = \"maj9(+11)\";\n  const peg$c328 = peg$literalExpectation(\"maj9(+11)\", false);\n  const peg$c329 = \"maj9(#11)\";\n  const peg$c330 = peg$literalExpectation(\"maj9(#11)\", false);\n  const peg$c331 = \"maj9#11#5\";\n  const peg$c332 = peg$literalExpectation(\"maj9#11#5\", false);\n  const peg$c333 = \"maj9+11+5\";\n  const peg$c334 = peg$literalExpectation(\"maj9+11+5\", false);\n  const peg$c335 = \"+9(#11#5)\";\n  const peg$c336 = peg$literalExpectation(\"+9(#11#5)\", false);\n  const peg$c337 = \"+9(+11+5)\";\n  const peg$c338 = peg$literalExpectation(\"+9(+11+5)\", false);\n  const peg$c339 = \"maj9(-13)\";\n  const peg$c340 = peg$literalExpectation(\"maj9(-13)\", false);\n  const peg$c341 = \"maj9(b13)\";\n  const peg$c342 = peg$literalExpectation(\"maj9(b13)\", false);\n  const peg$c343 = \"maj9b13#5\";\n  const peg$c344 = peg$literalExpectation(\"maj9b13#5\", false);\n  const peg$c345 = \"maj9-13+5\";\n  const peg$c346 = peg$literalExpectation(\"maj9-13+5\", false);\n  const peg$c347 = \"+9(b13#5)\";\n  const peg$c348 = peg$literalExpectation(\"+9(b13#5)\", false);\n  const peg$c349 = \"+9(-13+5)\";\n  const peg$c350 = peg$literalExpectation(\"+9(-13+5)\", false);\n  const peg$c351 = \"13(#9#5)\";\n  const peg$c352 = peg$literalExpectation(\"13(#9#5)\", false);\n  const peg$c353 = \"13(+9+5)\";\n  const peg$c354 = peg$literalExpectation(\"13(+9+5)\", false);\n  const peg$c355 = \"13(#9b5)\";\n  const peg$c356 = peg$literalExpectation(\"13(#9b5)\", false);\n  const peg$c357 = \"13(+9-5)\";\n  const peg$c358 = peg$literalExpectation(\"13(+9-5)\", false);\n  const peg$c359 = \"13(add2)\";\n  const peg$c360 = peg$literalExpectation(\"13(add2)\", false);\n  const peg$c361 = \"13(add4)\";\n  const peg$c362 = peg$literalExpectation(\"13(add4)\", false);\n  const peg$c363 = \"13(b9#5)\";\n  const peg$c364 = peg$literalExpectation(\"13(b9#5)\", false);\n  const peg$c365 = \"13(-9+5)\";\n  const peg$c366 = peg$literalExpectation(\"13(-9+5)\", false);\n  const peg$c367 = \"13(b9b5)\";\n  const peg$c368 = peg$literalExpectation(\"13(b9b5)\", false);\n  const peg$c369 = \"13(-9-5)\";\n  const peg$c370 = peg$literalExpectation(\"13(-9-5)\", false);\n  const peg$c371 = \"7(#5#11)\";\n  const peg$c372 = peg$literalExpectation(\"7(#5#11)\", false);\n  const peg$c373 = \"7(+5+11)\";\n  const peg$c374 = peg$literalExpectation(\"7(+5+11)\", false);\n  const peg$c375 = \"7(#9b13)\";\n  const peg$c376 = peg$literalExpectation(\"7(#9b13)\", false);\n  const peg$c377 = \"7(+9-13)\";\n  const peg$c378 = peg$literalExpectation(\"7(+9-13)\", false);\n  const peg$c379 = \"7(b13#9)\";\n  const peg$c380 = peg$literalExpectation(\"7(b13#9)\", false);\n  const peg$c381 = \"7(-13+9)\";\n  const peg$c382 = peg$literalExpectation(\"7(-13+9)\", false);\n  const peg$c383 = \"7(b5#11)\";\n  const peg$c384 = peg$literalExpectation(\"7(b5#11)\", false);\n  const peg$c385 = \"7(-5+11)\";\n  const peg$c386 = peg$literalExpectation(\"7(-5+11)\", false);\n  const peg$c387 = \"7(b9b13)\";\n  const peg$c388 = peg$literalExpectation(\"7(b9b13)\", false);\n  const peg$c389 = \"7(-9-13)\";\n  const peg$c390 = peg$literalExpectation(\"7(-9-13)\", false);\n  const peg$c391 = \"7(b13b9)\";\n  const peg$c392 = peg$literalExpectation(\"7(b13b9)\", false);\n  const peg$c393 = \"7(-13-9)\";\n  const peg$c394 = peg$literalExpectation(\"7(-13-9)\", false);\n  const peg$c395 = \"7sus(b9)\";\n  const peg$c396 = peg$literalExpectation(\"7sus(b9)\", false);\n  const peg$c397 = \"b69(#11)\";\n  const peg$c398 = peg$literalExpectation(\"b69(#11)\", false);\n  const peg$c399 = \"m(add11)\";\n  const peg$c400 = peg$literalExpectation(\"m(add11)\", false);\n  const peg$c401 = \"mi(maj7)\";\n  const peg$c402 = peg$literalExpectation(\"mi(maj7)\", false);\n  const peg$c403 = \"mi(maj9)\";\n  const peg$c404 = peg$literalExpectation(\"mi(maj9)\", false);\n  const peg$c405 = \"m11#9b13\";\n  const peg$c406 = peg$literalExpectation(\"m11#9b13\", false);\n  const peg$c407 = \"m11+9-13\";\n  const peg$c408 = peg$literalExpectation(\"m11+9-13\", false);\n  const peg$c409 = \"-11#9b13\";\n  const peg$c410 = peg$literalExpectation(\"-11#9b13\", false);\n  const peg$c411 = \"-11+9-13\";\n  const peg$c412 = peg$literalExpectation(\"-11+9-13\", false);\n  const peg$c413 = \"m11(b13)\";\n  const peg$c414 = peg$literalExpectation(\"m11(b13)\", false);\n  const peg$c415 = \"m11(-13)\";\n  const peg$c416 = peg$literalExpectation(\"m11(-13)\", false);\n  const peg$c417 = \"-11(b13)\";\n  const peg$c418 = peg$literalExpectation(\"-11(b13)\", false);\n  const peg$c419 = \"-11(-13)\";\n  const peg$c420 = peg$literalExpectation(\"-11(-13)\", false);\n  const peg$c421 = \"m11#5b13\";\n  const peg$c422 = peg$literalExpectation(\"m11#5b13\", false);\n  const peg$c423 = \"m11+5-13\";\n  const peg$c424 = peg$literalExpectation(\"m11+5-13\", false);\n  const peg$c425 = \"-11#5b13\";\n  const peg$c426 = peg$literalExpectation(\"-11#5b13\", false);\n  const peg$c427 = \"-11+5-13\";\n  const peg$c428 = peg$literalExpectation(\"-11+5-13\", false);\n  const peg$c429 = \"m11b5b13\";\n  const peg$c430 = peg$literalExpectation(\"m11b5b13\", false);\n  const peg$c431 = \"m11-5-13\";\n  const peg$c432 = peg$literalExpectation(\"m11-5-13\", false);\n  const peg$c433 = \"-11b5b13\";\n  const peg$c434 = peg$literalExpectation(\"-11b5b13\", false);\n  const peg$c435 = \"-11-5-13\";\n  const peg$c436 = peg$literalExpectation(\"-11-5-13\", false);\n  const peg$c437 = \"m11b9b13\";\n  const peg$c438 = peg$literalExpectation(\"m11b9b13\", false);\n  const peg$c439 = \"m11-9-13\";\n  const peg$c440 = peg$literalExpectation(\"m11-9-13\", false);\n  const peg$c441 = \"-11b9b13\";\n  const peg$c442 = peg$literalExpectation(\"-11b9b13\", false);\n  const peg$c443 = \"-11-9-13\";\n  const peg$c444 = peg$literalExpectation(\"-11-9-13\", false);\n  const peg$c445 = \"m13(#11)\";\n  const peg$c446 = peg$literalExpectation(\"m13(#11)\", false);\n  const peg$c447 = \"m13(+11)\";\n  const peg$c448 = peg$literalExpectation(\"m13(+11)\", false);\n  const peg$c449 = \"-13(#11)\";\n  const peg$c450 = peg$literalExpectation(\"-13(#11)\", false);\n  const peg$c451 = \"-13(+11)\";\n  const peg$c452 = peg$literalExpectation(\"-13(+11)\", false);\n  const peg$c453 = \"-13(b13)\";\n  const peg$c454 = peg$literalExpectation(\"-13(b13)\", false);\n  const peg$c455 = \"-13(-13)\";\n  const peg$c456 = peg$literalExpectation(\"-13(-13)\", false);\n  const peg$c457 = \"m6(add9)\";\n  const peg$c458 = peg$literalExpectation(\"m6(add9)\", false);\n  const peg$c459 = \"m7(add4)\";\n  const peg$c460 = peg$literalExpectation(\"m7(add4)\", false);\n  const peg$c461 = \"m7(add6)\";\n  const peg$c462 = peg$literalExpectation(\"m7(add6)\", false);\n  const peg$c463 = \"m9(maj7)\";\n  const peg$c464 = peg$literalExpectation(\"m9(maj7)\", false);\n  const peg$c465 = \"ma11(#5)\";\n  const peg$c466 = peg$literalExpectation(\"ma11(#5)\", false);\n  const peg$c467 = \"ma11(+5)\";\n  const peg$c468 = peg$literalExpectation(\"ma11(+5)\", false);\n  const peg$c469 = \"ma11(#9)\";\n  const peg$c470 = peg$literalExpectation(\"ma11(#9)\", false);\n  const peg$c471 = \"ma11(+9)\";\n  const peg$c472 = peg$literalExpectation(\"ma11(+9)\", false);\n  const peg$c473 = \"maj11b13\";\n  const peg$c474 = peg$literalExpectation(\"maj11b13\", false);\n  const peg$c475 = \"maj11-13\";\n  const peg$c476 = peg$literalExpectation(\"maj11-13\", false);\n  const peg$c477 = \"+11(b13)\";\n  const peg$c478 = peg$literalExpectation(\"+11(b13)\", false);\n  const peg$c479 = \"+11(-13)\";\n  const peg$c480 = peg$literalExpectation(\"+11(-13)\", false);\n  const peg$c481 = \"ma11(b5)\";\n  const peg$c482 = peg$literalExpectation(\"ma11(b5)\", false);\n  const peg$c483 = \"ma11(-5)\";\n  const peg$c484 = peg$literalExpectation(\"ma11(-5)\", false);\n  const peg$c485 = \"ma11(b9)\";\n  const peg$c486 = peg$literalExpectation(\"ma11(b9)\", false);\n  const peg$c487 = \"ma11(-9)\";\n  const peg$c488 = peg$literalExpectation(\"ma11(-9)\", false);\n  const peg$c489 = \"maj13#11\";\n  const peg$c490 = peg$literalExpectation(\"maj13#11\", false);\n  const peg$c491 = \"maj13+11\";\n  const peg$c492 = peg$literalExpectation(\"maj13+11\", false);\n  const peg$c493 = \"+13(#11)\";\n  const peg$c494 = peg$literalExpectation(\"+13(#11)\", false);\n  const peg$c495 = \"+13(+11)\";\n  const peg$c496 = peg$literalExpectation(\"+13(+11)\", false);\n  const peg$c497 = \"+13#11#5\";\n  const peg$c498 = peg$literalExpectation(\"+13#11#5\", false);\n  const peg$c499 = \"M13+11+5\";\n  const peg$c500 = peg$literalExpectation(\"M13+11+5\", false);\n  const peg$c501 = \"ma7#11#5\";\n  const peg$c502 = peg$literalExpectation(\"ma7#11#5\", false);\n  const peg$c503 = \"ma13(#5)\";\n  const peg$c504 = peg$literalExpectation(\"ma13(#5)\", false);\n  const peg$c505 = \"ma13(+5)\";\n  const peg$c506 = peg$literalExpectation(\"ma13(+5)\", false);\n  const peg$c507 = \"ma13(#9)\";\n  const peg$c508 = peg$literalExpectation(\"ma13(#9)\", false);\n  const peg$c509 = \"ma13(+9)\";\n  const peg$c510 = peg$literalExpectation(\"ma13(+9)\", false);\n  const peg$c511 = \"ma13+9+5\";\n  const peg$c512 = peg$literalExpectation(\"ma13+9+5\", false);\n  const peg$c513 = \"ma13(b5)\";\n  const peg$c514 = peg$literalExpectation(\"ma13(b5)\", false);\n  const peg$c515 = \"ma13(-5)\";\n  const peg$c516 = peg$literalExpectation(\"ma13(-5)\", false);\n  const peg$c517 = \"ma13(b9)\";\n  const peg$c518 = peg$literalExpectation(\"ma13(b9)\", false);\n  const peg$c519 = \"ma13(-9)\";\n  const peg$c520 = peg$literalExpectation(\"ma13(-9)\", false);\n  const peg$c521 = \"ma13-9+5\";\n  const peg$c522 = peg$literalExpectation(\"ma13-9+5\", false);\n  const peg$c523 = \"ma7(#11)\";\n  const peg$c524 = peg$literalExpectation(\"ma7(#11)\", false);\n  const peg$c525 = \"ma7(+11)\";\n  const peg$c526 = peg$literalExpectation(\"ma7(+11)\", false);\n  const peg$c527 = \"maj7(+5)\";\n  const peg$c528 = peg$literalExpectation(\"maj7(+5)\", false);\n  const peg$c529 = \"maj7(#5)\";\n  const peg$c530 = peg$literalExpectation(\"maj7(#5)\", false);\n  const peg$c531 = \"aug(ma7)\";\n  const peg$c532 = peg$literalExpectation(\"aug(ma7)\", false);\n  const peg$c533 = \"maj7(+9)\";\n  const peg$c534 = peg$literalExpectation(\"maj7(+9)\", false);\n  const peg$c535 = \"maj7(#9)\";\n  const peg$c536 = peg$literalExpectation(\"maj7(#9)\", false);\n  const peg$c537 = \"ma7(b13)\";\n  const peg$c538 = peg$literalExpectation(\"ma7(b13)\", false);\n  const peg$c539 = \"ma7(-13)\";\n  const peg$c540 = peg$literalExpectation(\"ma7(-13)\", false);\n  const peg$c541 = \"maj7(-5)\";\n  const peg$c542 = peg$literalExpectation(\"maj7(-5)\", false);\n  const peg$c543 = \"maj7(b5)\";\n  const peg$c544 = peg$literalExpectation(\"maj7(b5)\", false);\n  const peg$c545 = \"maj7(-9)\";\n  const peg$c546 = peg$literalExpectation(\"maj7(-9)\", false);\n  const peg$c547 = \"maj7(b9)\";\n  const peg$c548 = peg$literalExpectation(\"maj7(b9)\", false);\n  const peg$c549 = \"ma7(no3)\";\n  const peg$c550 = peg$literalExpectation(\"ma7(no3)\", false);\n  const peg$c551 = \"ma9(#11)\";\n  const peg$c552 = peg$literalExpectation(\"ma9(#11)\", false);\n  const peg$c553 = \"ma9(+11)\";\n  const peg$c554 = peg$literalExpectation(\"ma9(+11)\", false);\n  const peg$c555 = \"ma9+11+5\";\n  const peg$c556 = peg$literalExpectation(\"ma9+11+5\", false);\n  const peg$c557 = \"maj9(+5)\";\n  const peg$c558 = peg$literalExpectation(\"maj9(+5)\", false);\n  const peg$c559 = \"maj9(#5)\";\n  const peg$c560 = peg$literalExpectation(\"maj9(#5)\", false);\n  const peg$c561 = \"ma9(b13)\";\n  const peg$c562 = peg$literalExpectation(\"ma9(b13)\", false);\n  const peg$c563 = \"ma9(-13)\";\n  const peg$c564 = peg$literalExpectation(\"ma9(-13)\", false);\n  const peg$c565 = \"ma7b13#5\";\n  const peg$c566 = peg$literalExpectation(\"ma7b13#5\", false);\n  const peg$c567 = \"ma9-13+5\";\n  const peg$c568 = peg$literalExpectation(\"ma9-13+5\", false);\n  const peg$c569 = \"maj9(-5)\";\n  const peg$c570 = peg$literalExpectation(\"maj9(-5)\", false);\n  const peg$c571 = \"maj9(b5)\";\n  const peg$c572 = peg$literalExpectation(\"maj9(b5)\", false);\n  const peg$c573 = \"sus(no5)\";\n  const peg$c574 = peg$literalExpectation(\"sus(no5)\", false);\n  const peg$c575 = \"(add11)\";\n  const peg$c576 = peg$literalExpectation(\"(add11)\", false);\n  const peg$c577 = \"(add13)\";\n  const peg$c578 = peg$literalExpectation(\"(add13)\", false);\n  const peg$c579 = \"[blank]\";\n  const peg$c580 = peg$literalExpectation(\"[blank]\", false);\n  const peg$c581 = \"11(b13)\";\n  const peg$c582 = peg$literalExpectation(\"11(b13)\", false);\n  const peg$c583 = \"11(-13)\";\n  const peg$c584 = peg$literalExpectation(\"11(-13)\", false);\n  const peg$c585 = \"m11sus4\";\n  const peg$c586 = peg$literalExpectation(\"m11sus4\", false);\n  const peg$c587 = \"13(#11)\";\n  const peg$c588 = peg$literalExpectation(\"13(#11)\", false);\n  const peg$c589 = \"13(+11)\";\n  const peg$c590 = peg$literalExpectation(\"13(+11)\", false);\n  const peg$c591 = \"m13sus4\";\n  const peg$c592 = peg$literalExpectation(\"m13sus4\", false);\n  const peg$c593 = \"sus2(4)\";\n  const peg$c594 = peg$literalExpectation(\"sus2(4)\", false);\n  const peg$c595 = \"6(add9)\";\n  const peg$c596 = peg$literalExpectation(\"6(add9)\", false);\n  const peg$c597 = \"7(#9#5)\";\n  const peg$c598 = peg$literalExpectation(\"7(#9#5)\", false);\n  const peg$c599 = \"7(#5#9)\";\n  const peg$c600 = peg$literalExpectation(\"7(#5#9)\", false);\n  const peg$c601 = \"7(+5+9)\";\n  const peg$c602 = peg$literalExpectation(\"7(+5+9)\", false);\n  const peg$c603 = \"7(#9b5)\";\n  const peg$c604 = peg$literalExpectation(\"7(#9b5)\", false);\n  const peg$c605 = \"7(b5#9)\";\n  const peg$c606 = peg$literalExpectation(\"7(b5#9)\", false);\n  const peg$c607 = \"7(-5+9)\";\n  const peg$c608 = peg$literalExpectation(\"7(-5+9)\", false);\n  const peg$c609 = \"7(b5b9)\";\n  const peg$c610 = peg$literalExpectation(\"7(b5b9)\", false);\n  const peg$c611 = \"7(-5-9)\";\n  const peg$c612 = peg$literalExpectation(\"7(-5-9)\", false);\n  const peg$c613 = \"7(b9#5)\";\n  const peg$c614 = peg$literalExpectation(\"7(b9#5)\", false);\n  const peg$c615 = \"7(#5b9)\";\n  const peg$c616 = peg$literalExpectation(\"7(#5b9)\", false);\n  const peg$c617 = \"7(+5-9)\";\n  const peg$c618 = peg$literalExpectation(\"7(+5-9)\", false);\n  const peg$c619 = \"7(b9b5)\";\n  const peg$c620 = peg$literalExpectation(\"7(b9b5)\", false);\n  const peg$c621 = \"7b9sus4\";\n  const peg$c622 = peg$literalExpectation(\"7b9sus4\", false);\n  const peg$c623 = \"7sus(6)\";\n  const peg$c624 = peg$literalExpectation(\"7sus(6)\", false);\n  const peg$c625 = \"m(add4)\";\n  const peg$c626 = peg$literalExpectation(\"m(add4)\", false);\n  const peg$c627 = \"m(add9)\";\n  const peg$c628 = peg$literalExpectation(\"m(add9)\", false);\n  const peg$c629 = \"m(maj7)\";\n  const peg$c630 = peg$literalExpectation(\"m(maj7)\", false);\n  const peg$c631 = \"m(maj9)\";\n  const peg$c632 = peg$literalExpectation(\"m(maj9)\", false);\n  const peg$c633 = \"m11(#5)\";\n  const peg$c634 = peg$literalExpectation(\"m11(#5)\", false);\n  const peg$c635 = \"m11(+5)\";\n  const peg$c636 = peg$literalExpectation(\"m11(+5)\", false);\n  const peg$c637 = \"-11(#5)\";\n  const peg$c638 = peg$literalExpectation(\"-11(#5)\", false);\n  const peg$c639 = \"-11(+5)\";\n  const peg$c640 = peg$literalExpectation(\"-11(+5)\", false);\n  const peg$c641 = \"m11(#9)\";\n  const peg$c642 = peg$literalExpectation(\"m11(#9)\", false);\n  const peg$c643 = \"m11(+9)\";\n  const peg$c644 = peg$literalExpectation(\"m11(+9)\", false);\n  const peg$c645 = \"-11(#9)\";\n  const peg$c646 = peg$literalExpectation(\"-11(#9)\", false);\n  const peg$c647 = \"-11(+9)\";\n  const peg$c648 = peg$literalExpectation(\"-11(+9)\", false);\n  const peg$c649 = \"m11#5#9\";\n  const peg$c650 = peg$literalExpectation(\"m11#5#9\", false);\n  const peg$c651 = \"m11+5+9\";\n  const peg$c652 = peg$literalExpectation(\"m11+5+9\", false);\n  const peg$c653 = \"-11#5#9\";\n  const peg$c654 = peg$literalExpectation(\"-11#5#9\", false);\n  const peg$c655 = \"m11(b5)\";\n  const peg$c656 = peg$literalExpectation(\"m11(b5)\", false);\n  const peg$c657 = \"m11(-5)\";\n  const peg$c658 = peg$literalExpectation(\"m11(-5)\", false);\n  const peg$c659 = \"-11(b5)\";\n  const peg$c660 = peg$literalExpectation(\"-11(b5)\", false);\n  const peg$c661 = \"-11(-5)\";\n  const peg$c662 = peg$literalExpectation(\"-11(-5)\", false);\n  const peg$c663 = \"m11b5#9\";\n  const peg$c664 = peg$literalExpectation(\"m11b5#9\", false);\n  const peg$c665 = \"m11-5+9\";\n  const peg$c666 = peg$literalExpectation(\"m11-5+9\", false);\n  const peg$c667 = \"-11b5#9\";\n  const peg$c668 = peg$literalExpectation(\"-11b5#9\", false);\n  const peg$c669 = \"-11-5+9\";\n  const peg$c670 = peg$literalExpectation(\"-11-5+9\", false);\n  const peg$c671 = \"m11b5b9\";\n  const peg$c672 = peg$literalExpectation(\"m11b5b9\", false);\n  const peg$c673 = \"m11-5-9\";\n  const peg$c674 = peg$literalExpectation(\"m11-5-9\", false);\n  const peg$c675 = \"-11b5b9\";\n  const peg$c676 = peg$literalExpectation(\"-11b5b9\", false);\n  const peg$c677 = \"-11-5-9\";\n  const peg$c678 = peg$literalExpectation(\"-11-5-9\", false);\n  const peg$c679 = \"m11(b9)\";\n  const peg$c680 = peg$literalExpectation(\"m11(b9)\", false);\n  const peg$c681 = \"m11(-9)\";\n  const peg$c682 = peg$literalExpectation(\"m11(-9)\", false);\n  const peg$c683 = \"-11(b9)\";\n  const peg$c684 = peg$literalExpectation(\"-11(b9)\", false);\n  const peg$c685 = \"-11(-9)\";\n  const peg$c686 = peg$literalExpectation(\"-11(-9)\", false);\n  const peg$c687 = \"m11#5b9\";\n  const peg$c688 = peg$literalExpectation(\"m11#5b9\", false);\n  const peg$c689 = \"m11+5-9\";\n  const peg$c690 = peg$literalExpectation(\"m11+5-9\", false);\n  const peg$c691 = \"-11#5b9\";\n  const peg$c692 = peg$literalExpectation(\"-11#5b9\", false);\n  const peg$c693 = \"m13(#5)\";\n  const peg$c694 = peg$literalExpectation(\"m13(#5)\", false);\n  const peg$c695 = \"m13(+5)\";\n  const peg$c696 = peg$literalExpectation(\"m13(+5)\", false);\n  const peg$c697 = \"-13(#5)\";\n  const peg$c698 = peg$literalExpectation(\"-13(#5)\", false);\n  const peg$c699 = \"-13(+5)\";\n  const peg$c700 = peg$literalExpectation(\"-13(+5)\", false);\n  const peg$c701 = \"m13(#9)\";\n  const peg$c702 = peg$literalExpectation(\"m13(#9)\", false);\n  const peg$c703 = \"m13(+9)\";\n  const peg$c704 = peg$literalExpectation(\"m13(+9)\", false);\n  const peg$c705 = \"-13(#9)\";\n  const peg$c706 = peg$literalExpectation(\"-13(#9)\", false);\n  const peg$c707 = \"-13(+9)\";\n  const peg$c708 = peg$literalExpectation(\"-13(+9)\", false);\n  const peg$c709 = \"m13(b5)\";\n  const peg$c710 = peg$literalExpectation(\"m13(b5)\", false);\n  const peg$c711 = \"m13(-5)\";\n  const peg$c712 = peg$literalExpectation(\"m13(-5)\", false);\n  const peg$c713 = \"-13(b5)\";\n  const peg$c714 = peg$literalExpectation(\"-13(b5)\", false);\n  const peg$c715 = \"-13(-5)\";\n  const peg$c716 = peg$literalExpectation(\"-13(-5)\", false);\n  const peg$c717 = \"m13(b9)\";\n  const peg$c718 = peg$literalExpectation(\"m13(b9)\", false);\n  const peg$c719 = \"m13(-9)\";\n  const peg$c720 = peg$literalExpectation(\"m13(-9)\", false);\n  const peg$c721 = \"m(add2)\";\n  const peg$c722 = peg$literalExpectation(\"m(add2)\", false);\n  const peg$c723 = \"m6(ma7)\";\n  const peg$c724 = peg$literalExpectation(\"m6(ma7)\", false);\n  const peg$c725 = \"m7(#11)\";\n  const peg$c726 = peg$literalExpectation(\"m7(#11)\", false);\n  const peg$c727 = \"m7(+11)\";\n  const peg$c728 = peg$literalExpectation(\"m7(+11)\", false);\n  const peg$c729 = \"-7(#11)\";\n  const peg$c730 = peg$literalExpectation(\"-7(#11)\", false);\n  const peg$c731 = \"-7(+11)\";\n  const peg$c732 = peg$literalExpectation(\"-7(+11)\", false);\n  const peg$c733 = \"m7(b13)\";\n  const peg$c734 = peg$literalExpectation(\"m7(b13)\", false);\n  const peg$c735 = \"m7(-13)\";\n  const peg$c736 = peg$literalExpectation(\"m7(-13)\", false);\n  const peg$c737 = \"-7(b13)\";\n  const peg$c738 = peg$literalExpectation(\"-7(b13)\", false);\n  const peg$c739 = \"-7(-13)\";\n  const peg$c740 = peg$literalExpectation(\"-7(-13)\", false);\n  const peg$c741 = \"m7(no3)\";\n  const peg$c742 = peg$literalExpectation(\"m7(no3)\", false);\n  const peg$c743 = \"m9(#11)\";\n  const peg$c744 = peg$literalExpectation(\"m9(#11)\", false);\n  const peg$c745 = \"m9(+11)\";\n  const peg$c746 = peg$literalExpectation(\"m9(+11)\", false);\n  const peg$c747 = \"-9(#11)\";\n  const peg$c748 = peg$literalExpectation(\"-9(#11)\", false);\n  const peg$c749 = \"-9(+11)\";\n  const peg$c750 = peg$literalExpectation(\"-9(+11)\", false);\n  const peg$c751 = \"m9(b13)\";\n  const peg$c752 = peg$literalExpectation(\"m9(b13)\", false);\n  const peg$c753 = \"m9(-13)\";\n  const peg$c754 = peg$literalExpectation(\"m9(-13)\", false);\n  const peg$c755 = \"-9(b13)\";\n  const peg$c756 = peg$literalExpectation(\"-9(b13)\", false);\n  const peg$c757 = \"-9(-13)\";\n  const peg$c758 = peg$literalExpectation(\"-9(-13)\", false);\n  const peg$c759 = \"m9(ma7)\";\n  const peg$c760 = peg$literalExpectation(\"m9(ma7)\", false);\n  const peg$c761 = \"maj9b11\";\n  const peg$c762 = peg$literalExpectation(\"maj9b11\", false);\n  const peg$c763 = \"maj11#5\";\n  const peg$c764 = peg$literalExpectation(\"maj11#5\", false);\n  const peg$c765 = \"maj11+5\";\n  const peg$c766 = peg$literalExpectation(\"maj11+5\", false);\n  const peg$c767 = \"+11(#5)\";\n  const peg$c768 = peg$literalExpectation(\"+11(#5)\", false);\n  const peg$c769 = \"+11(+5)\";\n  const peg$c770 = peg$literalExpectation(\"+11(+5)\", false);\n  const peg$c771 = \"maj11#9\";\n  const peg$c772 = peg$literalExpectation(\"maj11#9\", false);\n  const peg$c773 = \"maj11+9\";\n  const peg$c774 = peg$literalExpectation(\"maj11+9\", false);\n  const peg$c775 = \"+11(#9)\";\n  const peg$c776 = peg$literalExpectation(\"+11(#9)\", false);\n  const peg$c777 = \"+11(+9)\";\n  const peg$c778 = peg$literalExpectation(\"+11(+9)\", false);\n  const peg$c779 = \"ma11b13\";\n  const peg$c780 = peg$literalExpectation(\"ma11b13\", false);\n  const peg$c781 = \"ma11-13\";\n  const peg$c782 = peg$literalExpectation(\"ma11-13\", false);\n  const peg$c783 = \"maj11b5\";\n  const peg$c784 = peg$literalExpectation(\"maj11b5\", false);\n  const peg$c785 = \"maj11-5\";\n  const peg$c786 = peg$literalExpectation(\"maj11-5\", false);\n  const peg$c787 = \"+11(b5)\";\n  const peg$c788 = peg$literalExpectation(\"+11(b5)\", false);\n  const peg$c789 = \"+11(-5)\";\n  const peg$c790 = peg$literalExpectation(\"+11(-5)\", false);\n  const peg$c791 = \"maj11b9\";\n  const peg$c792 = peg$literalExpectation(\"maj11b9\", false);\n  const peg$c793 = \"maj11-9\";\n  const peg$c794 = peg$literalExpectation(\"maj11-9\", false);\n  const peg$c795 = \"+11(b9)\";\n  const peg$c796 = peg$literalExpectation(\"+11(b9)\", false);\n  const peg$c797 = \"M11(-9)\";\n  const peg$c798 = peg$literalExpectation(\"M11(-9)\", false);\n  const peg$c799 = \"ma13+11\";\n  const peg$c800 = peg$literalExpectation(\"ma13+11\", false);\n  const peg$c801 = \"maj13#5\";\n  const peg$c802 = peg$literalExpectation(\"maj13#5\", false);\n  const peg$c803 = \"maj13+5\";\n  const peg$c804 = peg$literalExpectation(\"maj13+5\", false);\n  const peg$c805 = \"+13(#5)\";\n  const peg$c806 = peg$literalExpectation(\"+13(#5)\", false);\n  const peg$c807 = \"+13(+5)\";\n  const peg$c808 = peg$literalExpectation(\"+13(+5)\", false);\n  const peg$c809 = \"maj13#9\";\n  const peg$c810 = peg$literalExpectation(\"maj13#9\", false);\n  const peg$c811 = \"maj13+9\";\n  const peg$c812 = peg$literalExpectation(\"maj13+9\", false);\n  const peg$c813 = \"+13(#9)\";\n  const peg$c814 = peg$literalExpectation(\"+13(#9)\", false);\n  const peg$c815 = \"M13(+9)\";\n  const peg$c816 = peg$literalExpectation(\"M13(+9)\", false);\n  const peg$c817 = \"+13#9#5\";\n  const peg$c818 = peg$literalExpectation(\"+13#9#5\", false);\n  const peg$c819 = \"+13+9+5\";\n  const peg$c820 = peg$literalExpectation(\"+13+9+5\", false);\n  const peg$c821 = \"ma7#9#5\";\n  const peg$c822 = peg$literalExpectation(\"ma7#9#5\", false);\n  const peg$c823 = \"maj13b5\";\n  const peg$c824 = peg$literalExpectation(\"maj13b5\", false);\n  const peg$c825 = \"maj13-5\";\n  const peg$c826 = peg$literalExpectation(\"maj13-5\", false);\n  const peg$c827 = \"+13(b5)\";\n  const peg$c828 = peg$literalExpectation(\"+13(b5)\", false);\n  const peg$c829 = \"+13(-5)\";\n  const peg$c830 = peg$literalExpectation(\"+13(-5)\", false);\n  const peg$c831 = \"maj13b9\";\n  const peg$c832 = peg$literalExpectation(\"maj13b9\", false);\n  const peg$c833 = \"maj13-9\";\n  const peg$c834 = peg$literalExpectation(\"maj13-9\", false);\n  const peg$c835 = \"+13(b9)\";\n  const peg$c836 = peg$literalExpectation(\"+13(b9)\", false);\n  const peg$c837 = \"+13(-9)\";\n  const peg$c838 = peg$literalExpectation(\"+13(-9)\", false);\n  const peg$c839 = \"+13b9#5\";\n  const peg$c840 = peg$literalExpectation(\"+13b9#5\", false);\n  const peg$c841 = \"M13-9+5\";\n  const peg$c842 = peg$literalExpectation(\"M13-9+5\", false);\n  const peg$c843 = \"ma7b9#5\";\n  const peg$c844 = peg$literalExpectation(\"ma7b9#5\", false);\n  const peg$c845 = \"maj7#11\";\n  const peg$c846 = peg$literalExpectation(\"maj7#11\", false);\n  const peg$c847 = \"maj7+11\";\n  const peg$c848 = peg$literalExpectation(\"maj7+11\", false);\n  const peg$c849 = \"+7(#11)\";\n  const peg$c850 = peg$literalExpectation(\"+7(#11)\", false);\n  const peg$c851 = \"+7(+11)\";\n  const peg$c852 = peg$literalExpectation(\"+7(+11)\", false);\n  const peg$c853 = \"ma7(#4)\";\n  const peg$c854 = peg$literalExpectation(\"ma7(#4)\", false);\n  const peg$c855 = \"ma7(#5)\";\n  const peg$c856 = peg$literalExpectation(\"ma7(#5)\", false);\n  const peg$c857 = \"ma7(+5)\";\n  const peg$c858 = peg$literalExpectation(\"ma7(+5)\", false);\n  const peg$c859 = \"aug(M7)\";\n  const peg$c860 = peg$literalExpectation(\"aug(M7)\", false);\n  const peg$c861 = \"aug(+7)\";\n  const peg$c862 = peg$literalExpectation(\"aug(+7)\", false);\n  const peg$c863 = \"ma7(#9)\";\n  const peg$c864 = peg$literalExpectation(\"ma7(#9)\", false);\n  const peg$c865 = \"ma7(+9)\";\n  const peg$c866 = peg$literalExpectation(\"ma7(+9)\", false);\n  const peg$c867 = \"maj7b13\";\n  const peg$c868 = peg$literalExpectation(\"maj7b13\", false);\n  const peg$c869 = \"maj7-13\";\n  const peg$c870 = peg$literalExpectation(\"maj7-13\", false);\n  const peg$c871 = \"+7(b13)\";\n  const peg$c872 = peg$literalExpectation(\"+7(b13)\", false);\n  const peg$c873 = \"+7(-13)\";\n  const peg$c874 = peg$literalExpectation(\"+7(-13)\", false);\n  const peg$c875 = \"ma7(b5)\";\n  const peg$c876 = peg$literalExpectation(\"ma7(b5)\", false);\n  const peg$c877 = \"ma7(-5)\";\n  const peg$c878 = peg$literalExpectation(\"ma7(-5)\", false);\n  const peg$c879 = \"ma7(b9)\";\n  const peg$c880 = peg$literalExpectation(\"ma7(b9)\", false);\n  const peg$c881 = \"ma7(-9)\";\n  const peg$c882 = peg$literalExpectation(\"ma7(-9)\", false);\n  const peg$c883 = \"maj9#11\";\n  const peg$c884 = peg$literalExpectation(\"maj9#11\", false);\n  const peg$c885 = \"maj9+11\";\n  const peg$c886 = peg$literalExpectation(\"maj9+11\", false);\n  const peg$c887 = \"+9(#11)\";\n  const peg$c888 = peg$literalExpectation(\"+9(#11)\", false);\n  const peg$c889 = \"+9(+11)\";\n  const peg$c890 = peg$literalExpectation(\"+9(+11)\", false);\n  const peg$c891 = \"+9#11#5\";\n  const peg$c892 = peg$literalExpectation(\"+9#11#5\", false);\n  const peg$c893 = \"M9+11+5\";\n  const peg$c894 = peg$literalExpectation(\"M9+11+5\", false);\n  const peg$c895 = \"ma9(#4)\";\n  const peg$c896 = peg$literalExpectation(\"ma9(#4)\", false);\n  const peg$c897 = \"ma9(#5)\";\n  const peg$c898 = peg$literalExpectation(\"ma9(#5)\", false);\n  const peg$c899 = \"ma9(+5)\";\n  const peg$c900 = peg$literalExpectation(\"ma9(+5)\", false);\n  const peg$c901 = \"ma9(13)\";\n  const peg$c902 = peg$literalExpectation(\"ma9(13)\", false);\n  const peg$c903 = \"maj9b13\";\n  const peg$c904 = peg$literalExpectation(\"maj9b13\", false);\n  const peg$c905 = \"maj9-13\";\n  const peg$c906 = peg$literalExpectation(\"maj9-13\", false);\n  const peg$c907 = \"+9(b13)\";\n  const peg$c908 = peg$literalExpectation(\"+9(b13)\", false);\n  const peg$c909 = \"+9(-13)\";\n  const peg$c910 = peg$literalExpectation(\"+9(-13)\", false);\n  const peg$c911 = \"+9b13#5\";\n  const peg$c912 = peg$literalExpectation(\"+9b13#5\", false);\n  const peg$c913 = \"M9-13+5\";\n  const peg$c914 = peg$literalExpectation(\"M9-13+5\", false);\n  const peg$c915 = \"ma9(b5)\";\n  const peg$c916 = peg$literalExpectation(\"ma9(b5)\", false);\n  const peg$c917 = \"ma9(-5)\";\n  const peg$c918 = peg$literalExpectation(\"ma9(-5)\", false);\n  const peg$c919 = \"(add2)\";\n  const peg$c920 = peg$literalExpectation(\"(add2)\", false);\n  const peg$c921 = \"(add4)\";\n  const peg$c922 = peg$literalExpectation(\"(add4)\", false);\n  const peg$c923 = \"sus(4)\";\n  const peg$c924 = peg$literalExpectation(\"sus(4)\", false);\n  const peg$c925 = \"(add6)\";\n  const peg$c926 = peg$literalExpectation(\"(add6)\", false);\n  const peg$c927 = \"(add9)\";\n  const peg$c928 = peg$literalExpectation(\"(add9)\", false);\n  const peg$c929 = \"(unis)\";\n  const peg$c930 = peg$literalExpectation(\"(unis)\", false);\n  const peg$c931 = \"11(#5)\";\n  const peg$c932 = peg$literalExpectation(\"11(#5)\", false);\n  const peg$c933 = \"11(+5)\";\n  const peg$c934 = peg$literalExpectation(\"11(+5)\", false);\n  const peg$c935 = \"11(#9)\";\n  const peg$c936 = peg$literalExpectation(\"11(#9)\", false);\n  const peg$c937 = \"11(+9)\";\n  const peg$c938 = peg$literalExpectation(\"11(+9)\", false);\n  const peg$c939 = \"11(b5)\";\n  const peg$c940 = peg$literalExpectation(\"11(b5)\", false);\n  const peg$c941 = \"11(-5)\";\n  const peg$c942 = peg$literalExpectation(\"11(-5)\", false);\n  const peg$c943 = \"11(b9)\";\n  const peg$c944 = peg$literalExpectation(\"11(b9)\", false);\n  const peg$c945 = \"11(-9)\";\n  const peg$c946 = peg$literalExpectation(\"11(-9)\", false);\n  const peg$c947 = \"11sus4\";\n  const peg$c948 = peg$literalExpectation(\"11sus4\", false);\n  const peg$c949 = \"m11sus\";\n  const peg$c950 = peg$literalExpectation(\"m11sus\", false);\n  const peg$c951 = \"13(#5)\";\n  const peg$c952 = peg$literalExpectation(\"13(#5)\", false);\n  const peg$c953 = \"13(+5)\";\n  const peg$c954 = peg$literalExpectation(\"13(+5)\", false);\n  const peg$c955 = \"13(#9)\";\n  const peg$c956 = peg$literalExpectation(\"13(#9)\", false);\n  const peg$c957 = \"13(+9)\";\n  const peg$c958 = peg$literalExpectation(\"13(+9)\", false);\n  const peg$c959 = \"13#9#5\";\n  const peg$c960 = peg$literalExpectation(\"13#9#5\", false);\n  const peg$c961 = \"13+9+5\";\n  const peg$c962 = peg$literalExpectation(\"13+9+5\", false);\n  const peg$c963 = \"13#9b5\";\n  const peg$c964 = peg$literalExpectation(\"13#9b5\", false);\n  const peg$c965 = \"13+9-5\";\n  const peg$c966 = peg$literalExpectation(\"13+9-5\", false);\n  const peg$c967 = \"13(b5)\";\n  const peg$c968 = peg$literalExpectation(\"13(b5)\", false);\n  const peg$c969 = \"13(-5)\";\n  const peg$c970 = peg$literalExpectation(\"13(-5)\", false);\n  const peg$c971 = \"13(b9)\";\n  const peg$c972 = peg$literalExpectation(\"13(b9)\", false);\n  const peg$c973 = \"13(-9)\";\n  const peg$c974 = peg$literalExpectation(\"13(-9)\", false);\n  const peg$c975 = \"13b9#5\";\n  const peg$c976 = peg$literalExpectation(\"13b9#5\", false);\n  const peg$c977 = \"13-9+5\";\n  const peg$c978 = peg$literalExpectation(\"13-9+5\", false);\n  const peg$c979 = \"13b9b5\";\n  const peg$c980 = peg$literalExpectation(\"13b9b5\", false);\n  const peg$c981 = \"13-9-5\";\n  const peg$c982 = peg$literalExpectation(\"13-9-5\", false);\n  const peg$c983 = \"13sus4\";\n  const peg$c984 = peg$literalExpectation(\"13sus4\", false);\n  const peg$c985 = \"m13sus\";\n  const peg$c986 = peg$literalExpectation(\"m13sus\", false);\n  const peg$c987 = \"2(#11)\";\n  const peg$c988 = peg$literalExpectation(\"2(#11)\", false);\n  const peg$c989 = \"2(ma7)\";\n  const peg$c990 = peg$literalExpectation(\"2(ma7)\", false);\n  const peg$c991 = \"2(no3)\";\n  const peg$c992 = peg$literalExpectation(\"2(no3)\", false);\n  const peg$c993 = \"5(no3)\";\n  const peg$c994 = peg$literalExpectation(\"5(no3)\", false);\n  const peg$c995 = \"6(no3)\";\n  const peg$c996 = peg$literalExpectation(\"6(no3)\", false);\n  const peg$c997 = \"7(#11)\";\n  const peg$c998 = peg$literalExpectation(\"7(#11)\", false);\n  const peg$c999 = \"7(+11)\";\n  const peg$c1000 = peg$literalExpectation(\"7(+11)\", false);\n  const peg$c1001 = \"7#5#11\";\n  const peg$c1002 = peg$literalExpectation(\"7#5#11\", false);\n  const peg$c1003 = \"7+5+11\";\n  const peg$c1004 = peg$literalExpectation(\"7+5+11\", false);\n  const peg$c1005 = \"7#9b13\";\n  const peg$c1006 = peg$literalExpectation(\"7#9b13\", false);\n  const peg$c1007 = \"7+9-13\";\n  const peg$c1008 = peg$literalExpectation(\"7+9-13\", false);\n  const peg$c1009 = \"7b13#9\";\n  const peg$c1010 = peg$literalExpectation(\"7b13#9\", false);\n  const peg$c1011 = \"7-13+9\";\n  const peg$c1012 = peg$literalExpectation(\"7-13+9\", false);\n  const peg$c1013 = \"7(b13)\";\n  const peg$c1014 = peg$literalExpectation(\"7(b13)\", false);\n  const peg$c1015 = \"7(-13)\";\n  const peg$c1016 = peg$literalExpectation(\"7(-13)\", false);\n  const peg$c1017 = \"7b5#11\";\n  const peg$c1018 = peg$literalExpectation(\"7b5#11\", false);\n  const peg$c1019 = \"7-5+11\";\n  const peg$c1020 = peg$literalExpectation(\"7-5+11\", false);\n  const peg$c1021 = \"7b9b13\";\n  const peg$c1022 = peg$literalExpectation(\"7b9b13\", false);\n  const peg$c1023 = \"7-9-13\";\n  const peg$c1024 = peg$literalExpectation(\"7-9-13\", false);\n  const peg$c1025 = \"7b13b9\";\n  const peg$c1026 = peg$literalExpectation(\"7b13b9\", false);\n  const peg$c1027 = \"7-13-9\";\n  const peg$c1028 = peg$literalExpectation(\"7-13-9\", false);\n  const peg$c1029 = \"7(no3)\";\n  const peg$c1030 = peg$literalExpectation(\"7(no3)\", false);\n  const peg$c1031 = \"9(#11)\";\n  const peg$c1032 = peg$literalExpectation(\"9(#11)\", false);\n  const peg$c1033 = \"9(+11)\";\n  const peg$c1034 = peg$literalExpectation(\"9(+11)\", false);\n  const peg$c1035 = \"9(b13)\";\n  const peg$c1036 = peg$literalExpectation(\"9(b13)\", false);\n  const peg$c1037 = \"9(-13)\";\n  const peg$c1038 = peg$literalExpectation(\"9(-13)\", false);\n  const peg$c1039 = \"m9sus4\";\n  const peg$c1040 = peg$literalExpectation(\"m9sus4\", false);\n  const peg$c1041 = \"b69sus\";\n  const peg$c1042 = peg$literalExpectation(\"b69sus\", false);\n  const peg$c1043 = \"m(ma7)\";\n  const peg$c1044 = peg$literalExpectation(\"m(ma7)\", false);\n  const peg$c1045 = \"m(ma9)\";\n  const peg$c1046 = peg$literalExpectation(\"m(ma9)\", false);\n  const peg$c1047 = \"m(no5)\";\n  const peg$c1048 = peg$literalExpectation(\"m(no5)\", false);\n  const peg$c1049 = \"m9+5+9\";\n  const peg$c1050 = peg$literalExpectation(\"m9+5+9\", false);\n  const peg$c1051 = \"m11b13\";\n  const peg$c1052 = peg$literalExpectation(\"m11b13\", false);\n  const peg$c1053 = \"m11-13\";\n  const peg$c1054 = peg$literalExpectation(\"m11-13\", false);\n  const peg$c1055 = \"-11b13\";\n  const peg$c1056 = peg$literalExpectation(\"-11b13\", false);\n  const peg$c1057 = \"-11-13\";\n  const peg$c1058 = peg$literalExpectation(\"-11-13\", false);\n  const peg$c1059 = \"m9+5-9\";\n  const peg$c1060 = peg$literalExpectation(\"m9+5-9\", false);\n  const peg$c1061 = \"m13#11\";\n  const peg$c1062 = peg$literalExpectation(\"m13#11\", false);\n  const peg$c1063 = \"m13+11\";\n  const peg$c1064 = peg$literalExpectation(\"m13+11\", false);\n  const peg$c1065 = \"-13#11\";\n  const peg$c1066 = peg$literalExpectation(\"-13#11\", false);\n  const peg$c1067 = \"-13+11\";\n  const peg$c1068 = peg$literalExpectation(\"-13+11\", false);\n  const peg$c1069 = \"-13b13\";\n  const peg$c1070 = peg$literalExpectation(\"-13b13\", false);\n  const peg$c1071 = \"-13-13\";\n  const peg$c1072 = peg$literalExpectation(\"-13-13\", false);\n  const peg$c1073 = \"m6(#5)\";\n  const peg$c1074 = peg$literalExpectation(\"m6(#5)\", false);\n  const peg$c1075 = \"m6add9\";\n  const peg$c1076 = peg$literalExpectation(\"m6add9\", false);\n  const peg$c1077 = \"m6(M7)\";\n  const peg$c1078 = peg$literalExpectation(\"m6(M7)\", false);\n  const peg$c1079 = \"m6(+7)\";\n  const peg$c1080 = peg$literalExpectation(\"m6(+7)\", false);\n  const peg$c1081 = \"m7(#5)\";\n  const peg$c1082 = peg$literalExpectation(\"m7(#5)\", false);\n  const peg$c1083 = \"m7(+5)\";\n  const peg$c1084 = peg$literalExpectation(\"m7(+5)\", false);\n  const peg$c1085 = \"-7(#5)\";\n  const peg$c1086 = peg$literalExpectation(\"-7(#5)\", false);\n  const peg$c1087 = \"-7(+5)\";\n  const peg$c1088 = peg$literalExpectation(\"-7(+5)\", false);\n  const peg$c1089 = \"m7(#9)\";\n  const peg$c1090 = peg$literalExpectation(\"m7(#9)\", false);\n  const peg$c1091 = \"m7(+9)\";\n  const peg$c1092 = peg$literalExpectation(\"m7(+9)\", false);\n  const peg$c1093 = \"-7(#9)\";\n  const peg$c1094 = peg$literalExpectation(\"-7(#9)\", false);\n  const peg$c1095 = \"-7(+9)\";\n  const peg$c1096 = peg$literalExpectation(\"-7(+9)\", false);\n  const peg$c1097 = \"m7(11)\";\n  const peg$c1098 = peg$literalExpectation(\"m7(11)\", false);\n  const peg$c1099 = \"m7(b5)\";\n  const peg$c1100 = peg$literalExpectation(\"m7(b5)\", false);\n  const peg$c1101 = \"m7(-5)\";\n  const peg$c1102 = peg$literalExpectation(\"m7(-5)\", false);\n  const peg$c1103 = \"-7(b5)\";\n  const peg$c1104 = peg$literalExpectation(\"-7(b5)\", false);\n  const peg$c1105 = \"-7(-5)\";\n  const peg$c1106 = peg$literalExpectation(\"-7(-5)\", false);\n  const peg$c1107 = \"m7(b9)\";\n  const peg$c1108 = peg$literalExpectation(\"m7(b9)\", false);\n  const peg$c1109 = \"m7(-9)\";\n  const peg$c1110 = peg$literalExpectation(\"m7(-9)\", false);\n  const peg$c1111 = \"-7(b9)\";\n  const peg$c1112 = peg$literalExpectation(\"-7(b9)\", false);\n  const peg$c1113 = \"-7(-9)\";\n  const peg$c1114 = peg$literalExpectation(\"-7(-9)\", false);\n  const peg$c1115 = \"m7sus4\";\n  const peg$c1116 = peg$literalExpectation(\"m7sus4\", false);\n  const peg$c1117 = \"m9(#5)\";\n  const peg$c1118 = peg$literalExpectation(\"m9(#5)\", false);\n  const peg$c1119 = \"m9(+5)\";\n  const peg$c1120 = peg$literalExpectation(\"m9(+5)\", false);\n  const peg$c1121 = \"-9(#5)\";\n  const peg$c1122 = peg$literalExpectation(\"-9(#5)\", false);\n  const peg$c1123 = \"-9(+5)\";\n  const peg$c1124 = peg$literalExpectation(\"-9(+5)\", false);\n  const peg$c1125 = \"m9(#7)\";\n  const peg$c1126 = peg$literalExpectation(\"m9(#7)\", false);\n  const peg$c1127 = \"m9(b5)\";\n  const peg$c1128 = peg$literalExpectation(\"m9(b5)\", false);\n  const peg$c1129 = \"m9(-5)\";\n  const peg$c1130 = peg$literalExpectation(\"m9(-5)\", false);\n  const peg$c1131 = \"-9(b5)\";\n  const peg$c1132 = peg$literalExpectation(\"-9(b5)\", false);\n  const peg$c1133 = \"-9(-5)\";\n  const peg$c1134 = peg$literalExpectation(\"-9(-5)\", false);\n  const peg$c1135 = \"m9(+7)\";\n  const peg$c1136 = peg$literalExpectation(\"m9(+7)\", false);\n  const peg$c1137 = \"m9(M7)\";\n  const peg$c1138 = peg$literalExpectation(\"m9(M7)\", false);\n  const peg$c1139 = \"11(#7)\";\n  const peg$c1140 = peg$literalExpectation(\"11(#7)\", false);\n  const peg$c1141 = \"11(+7)\";\n  const peg$c1142 = peg$literalExpectation(\"11(+7)\", false);\n  const peg$c1143 = \"ma11#5\";\n  const peg$c1144 = peg$literalExpectation(\"ma11#5\", false);\n  const peg$c1145 = \"ma11+5\";\n  const peg$c1146 = peg$literalExpectation(\"ma11+5\", false);\n  const peg$c1147 = \"ma11#9\";\n  const peg$c1148 = peg$literalExpectation(\"ma11#9\", false);\n  const peg$c1149 = \"ma11+9\";\n  const peg$c1150 = peg$literalExpectation(\"ma11+9\", false);\n  const peg$c1151 = \"+11b13\";\n  const peg$c1152 = peg$literalExpectation(\"+11b13\", false);\n  const peg$c1153 = \"M11-13\";\n  const peg$c1154 = peg$literalExpectation(\"M11-13\", false);\n  const peg$c1155 = \"ma11b5\";\n  const peg$c1156 = peg$literalExpectation(\"ma11b5\", false);\n  const peg$c1157 = \"ma11-5\";\n  const peg$c1158 = peg$literalExpectation(\"ma11-5\", false);\n  const peg$c1159 = \"ma11b9\";\n  const peg$c1160 = peg$literalExpectation(\"ma11b9\", false);\n  const peg$c1161 = \"ma11-9\";\n  const peg$c1162 = peg$literalExpectation(\"ma11-9\", false);\n  const peg$c1163 = \"13(#7)\";\n  const peg$c1164 = peg$literalExpectation(\"13(#7)\", false);\n  const peg$c1165 = \"+13#11\";\n  const peg$c1166 = peg$literalExpectation(\"+13#11\", false);\n  const peg$c1167 = \"M13+11\";\n  const peg$c1168 = peg$literalExpectation(\"M13+11\", false);\n  const peg$c1169 = \"ma7#11\";\n  const peg$c1170 = peg$literalExpectation(\"ma7#11\", false);\n  const peg$c1171 = \"ma13#5\";\n  const peg$c1172 = peg$literalExpectation(\"ma13#5\", false);\n  const peg$c1173 = \"ma13+5\";\n  const peg$c1174 = peg$literalExpectation(\"ma13+5\", false);\n  const peg$c1175 = \"ma13#9\";\n  const peg$c1176 = peg$literalExpectation(\"ma13#9\", false);\n  const peg$c1177 = \"ma13+9\";\n  const peg$c1178 = peg$literalExpectation(\"ma13+9\", false);\n  const peg$c1179 = \"ma13b5\";\n  const peg$c1180 = peg$literalExpectation(\"ma13b5\", false);\n  const peg$c1181 = \"ma13-5\";\n  const peg$c1182 = peg$literalExpectation(\"ma13-5\", false);\n  const peg$c1183 = \"ma13b9\";\n  const peg$c1184 = peg$literalExpectation(\"ma13b9\", false);\n  const peg$c1185 = \"ma13-9\";\n  const peg$c1186 = peg$literalExpectation(\"ma13-9\", false);\n  const peg$c1187 = \"ma6(9)\";\n  const peg$c1188 = peg$literalExpectation(\"ma6(9)\", false);\n  const peg$c1189 = \"ma7+11\";\n  const peg$c1190 = peg$literalExpectation(\"ma7+11\", false);\n  const peg$c1191 = \"maj7#5\";\n  const peg$c1192 = peg$literalExpectation(\"maj7#5\", false);\n  const peg$c1193 = \"maj7+5\";\n  const peg$c1194 = peg$literalExpectation(\"maj7+5\", false);\n  const peg$c1195 = \"+7(#5)\";\n  const peg$c1196 = peg$literalExpectation(\"+7(#5)\", false);\n  const peg$c1197 = \"+7(+5)\";\n  const peg$c1198 = peg$literalExpectation(\"+7(+5)\", false);\n  const peg$c1199 = \"maj7#9\";\n  const peg$c1200 = peg$literalExpectation(\"maj7#9\", false);\n  const peg$c1201 = \"maj7+9\";\n  const peg$c1202 = peg$literalExpectation(\"maj7+9\", false);\n  const peg$c1203 = \"+7(#9)\";\n  const peg$c1204 = peg$literalExpectation(\"+7(#9)\", false);\n  const peg$c1205 = \"+7(+9)\";\n  const peg$c1206 = peg$literalExpectation(\"+7(+9)\", false);\n  const peg$c1207 = \"ma7b13\";\n  const peg$c1208 = peg$literalExpectation(\"ma7b13\", false);\n  const peg$c1209 = \"ma7-13\";\n  const peg$c1210 = peg$literalExpectation(\"ma7-13\", false);\n  const peg$c1211 = \"maj7b5\";\n  const peg$c1212 = peg$literalExpectation(\"maj7b5\", false);\n  const peg$c1213 = \"maj7-5\";\n  const peg$c1214 = peg$literalExpectation(\"maj7-5\", false);\n  const peg$c1215 = \"+7(b5)\";\n  const peg$c1216 = peg$literalExpectation(\"+7(b5)\", false);\n  const peg$c1217 = \"+7(-5)\";\n  const peg$c1218 = peg$literalExpectation(\"+7(-5)\", false);\n  const peg$c1219 = \"maj7b9\";\n  const peg$c1220 = peg$literalExpectation(\"maj7b9\", false);\n  const peg$c1221 = \"maj7-9\";\n  const peg$c1222 = peg$literalExpectation(\"maj7-9\", false);\n  const peg$c1223 = \"+7(b9)\";\n  const peg$c1224 = peg$literalExpectation(\"+7(b9)\", false);\n  const peg$c1225 = \"+7(-9)\";\n  const peg$c1226 = peg$literalExpectation(\"+7(-9)\", false);\n  const peg$c1227 = \"ma9+11\";\n  const peg$c1228 = peg$literalExpectation(\"ma9+11\", false);\n  const peg$c1229 = \"maj9#5\";\n  const peg$c1230 = peg$literalExpectation(\"maj9#5\", false);\n  const peg$c1231 = \"maj9+5\";\n  const peg$c1232 = peg$literalExpectation(\"maj9+5\", false);\n  const peg$c1233 = \"+9(#5)\";\n  const peg$c1234 = peg$literalExpectation(\"+9(#5)\", false);\n  const peg$c1235 = \"+9(+5)\";\n  const peg$c1236 = peg$literalExpectation(\"+9(+5)\", false);\n  const peg$c1237 = \"ma9-13\";\n  const peg$c1238 = peg$literalExpectation(\"ma9-13\", false);\n  const peg$c1239 = \"maj9b5\";\n  const peg$c1240 = peg$literalExpectation(\"maj9b5\", false);\n  const peg$c1241 = \"maj9-5\";\n  const peg$c1242 = peg$literalExpectation(\"maj9-5\", false);\n  const peg$c1243 = \"+9(b5)\";\n  const peg$c1244 = peg$literalExpectation(\"+9(b5)\", false);\n  const peg$c1245 = \"+9(-5)\";\n  const peg$c1246 = peg$literalExpectation(\"+9(-5)\", false);\n  const peg$c1247 = \"sus#42\";\n  const peg$c1248 = peg$literalExpectation(\"sus#42\", false);\n  const peg$c1249 = \"add11\";\n  const peg$c1250 = peg$literalExpectation(\"add11\", false);\n  const peg$c1251 = \"add13\";\n  const peg$c1252 = peg$literalExpectation(\"add13\", false);\n  const peg$c1253 = \"major\";\n  const peg$c1254 = peg$literalExpectation(\"major\", false);\n  const peg$c1255 = \"dom11\";\n  const peg$c1256 = peg$literalExpectation(\"dom11\", false);\n  const peg$c1257 = \"11b13\";\n  const peg$c1258 = peg$literalExpectation(\"11b13\", false);\n  const peg$c1259 = \"11-13\";\n  const peg$c1260 = peg$literalExpectation(\"11-13\", false);\n  const peg$c1261 = \"11sus\";\n  const peg$c1262 = peg$literalExpectation(\"11sus\", false);\n  const peg$c1263 = \"dom13\";\n  const peg$c1264 = peg$literalExpectation(\"dom13\", false);\n  const peg$c1265 = \"13#11\";\n  const peg$c1266 = peg$literalExpectation(\"13#11\", false);\n  const peg$c1267 = \"13+11\";\n  const peg$c1268 = peg$literalExpectation(\"13+11\", false);\n  const peg$c1269 = \"13sus\";\n  const peg$c1270 = peg$literalExpectation(\"13sus\", false);\n  const peg$c1271 = \"2(#4)\";\n  const peg$c1272 = peg$literalExpectation(\"2(#4)\", false);\n  const peg$c1273 = \"2(+4)\";\n  const peg$c1274 = peg$literalExpectation(\"2(+4)\", false);\n  const peg$c1275 = \"(#4)2\";\n  const peg$c1276 = peg$literalExpectation(\"(#4)2\", false);\n  const peg$c1277 = \"2(+7)\";\n  const peg$c1278 = peg$literalExpectation(\"2(+7)\", false);\n  const peg$c1279 = \"sus42\";\n  const peg$c1280 = peg$literalExpectation(\"sus42\", false);\n  const peg$c1281 = \"(no3)\";\n  const peg$c1282 = peg$literalExpectation(\"(no3)\", false);\n  const peg$c1283 = \"6(b9)\";\n  const peg$c1284 = peg$literalExpectation(\"6(b9)\", false);\n  const peg$c1285 = \"7(#5)\";\n  const peg$c1286 = peg$literalExpectation(\"7(#5)\", false);\n  const peg$c1287 = \"7(+5)\";\n  const peg$c1288 = peg$literalExpectation(\"7(+5)\", false);\n  const peg$c1289 = \"7(#9)\";\n  const peg$c1290 = peg$literalExpectation(\"7(#9)\", false);\n  const peg$c1291 = \"7(+9)\";\n  const peg$c1292 = peg$literalExpectation(\"7(+9)\", false);\n  const peg$c1293 = \"7#5#9\";\n  const peg$c1294 = peg$literalExpectation(\"7#5#9\", false);\n  const peg$c1295 = \"7+5+9\";\n  const peg$c1296 = peg$literalExpectation(\"7+5+9\", false);\n  const peg$c1297 = \"7(b5)\";\n  const peg$c1298 = peg$literalExpectation(\"7(b5)\", false);\n  const peg$c1299 = \"7(-5)\";\n  const peg$c1300 = peg$literalExpectation(\"7(-5)\", false);\n  const peg$c1301 = \"7b5#9\";\n  const peg$c1302 = peg$literalExpectation(\"7b5#9\", false);\n  const peg$c1303 = \"7-5+9\";\n  const peg$c1304 = peg$literalExpectation(\"7-5+9\", false);\n  const peg$c1305 = \"7b5b9\";\n  const peg$c1306 = peg$literalExpectation(\"7b5b9\", false);\n  const peg$c1307 = \"7-5-9\";\n  const peg$c1308 = peg$literalExpectation(\"7-5-9\", false);\n  const peg$c1309 = \"7(b9)\";\n  const peg$c1310 = peg$literalExpectation(\"7(b9)\", false);\n  const peg$c1311 = \"7(-9)\";\n  const peg$c1312 = peg$literalExpectation(\"7(-9)\", false);\n  const peg$c1313 = \"7#5b9\";\n  const peg$c1314 = peg$literalExpectation(\"7#5b9\", false);\n  const peg$c1315 = \"7+5-9\";\n  const peg$c1316 = peg$literalExpectation(\"7+5-9\", false);\n  const peg$c1317 = \"7aug5\";\n  const peg$c1318 = peg$literalExpectation(\"7aug5\", false);\n  const peg$c1319 = \"7sus4\";\n  const peg$c1320 = peg$literalExpectation(\"7sus4\", false);\n  const peg$c1321 = \"9(#5)\";\n  const peg$c1322 = peg$literalExpectation(\"9(#5)\", false);\n  const peg$c1323 = \"9(+5)\";\n  const peg$c1324 = peg$literalExpectation(\"9(+5)\", false);\n  const peg$c1325 = \"9(b5)\";\n  const peg$c1326 = peg$literalExpectation(\"9(b5)\", false);\n  const peg$c1327 = \"9(-5)\";\n  const peg$c1328 = peg$literalExpectation(\"9(-5)\", false);\n  const peg$c1329 = \"9sus4\";\n  const peg$c1330 = peg$literalExpectation(\"9sus4\", false);\n  const peg$c1331 = \"m9sus\";\n  const peg$c1332 = peg$literalExpectation(\"m9sus\", false);\n  const peg$c1333 = \"b9sus\";\n  const peg$c1334 = peg$literalExpectation(\"b9sus\", false);\n  const peg$c1335 = \"m(b5)\";\n  const peg$c1336 = peg$literalExpectation(\"m(b5)\", false);\n  const peg$c1337 = \"m(-5)\";\n  const peg$c1338 = peg$literalExpectation(\"m(-5)\", false);\n  const peg$c1339 = \"-(b5)\";\n  const peg$c1340 = peg$literalExpectation(\"-(b5)\", false);\n  const peg$c1341 = \"minor\";\n  const peg$c1342 = peg$literalExpectation(\"minor\", false);\n  const peg$c1343 = \"m(11)\";\n  const peg$c1344 = peg$literalExpectation(\"m(11)\", false);\n  const peg$c1345 = \"m(M7)\";\n  const peg$c1346 = peg$literalExpectation(\"m(M7)\", false);\n  const peg$c1347 = \"m(+7)\";\n  const peg$c1348 = peg$literalExpectation(\"m(+7)\", false);\n  const peg$c1349 = \"mmaj7\";\n  const peg$c1350 = peg$literalExpectation(\"mmaj7\", false);\n  const peg$c1351 = \"m(M9)\";\n  const peg$c1352 = peg$literalExpectation(\"m(M9)\", false);\n  const peg$c1353 = \"m(+9)\";\n  const peg$c1354 = peg$literalExpectation(\"m(+9)\", false);\n  const peg$c1355 = \"min11\";\n  const peg$c1356 = peg$literalExpectation(\"min11\", false);\n  const peg$c1357 = \"m11#5\";\n  const peg$c1358 = peg$literalExpectation(\"m11#5\", false);\n  const peg$c1359 = \"m11+5\";\n  const peg$c1360 = peg$literalExpectation(\"m11+5\", false);\n  const peg$c1361 = \"-11#5\";\n  const peg$c1362 = peg$literalExpectation(\"-11#5\", false);\n  const peg$c1363 = \"m11#9\";\n  const peg$c1364 = peg$literalExpectation(\"m11#9\", false);\n  const peg$c1365 = \"m11+9\";\n  const peg$c1366 = peg$literalExpectation(\"m11+9\", false);\n  const peg$c1367 = \"-11#9\";\n  const peg$c1368 = peg$literalExpectation(\"-11#9\", false);\n  const peg$c1369 = \"-11+9\";\n  const peg$c1370 = peg$literalExpectation(\"-11+9\", false);\n  const peg$c1371 = \"m11b5\";\n  const peg$c1372 = peg$literalExpectation(\"m11b5\", false);\n  const peg$c1373 = \"m11-5\";\n  const peg$c1374 = peg$literalExpectation(\"m11-5\", false);\n  const peg$c1375 = \"-11b5\";\n  const peg$c1376 = peg$literalExpectation(\"-11b5\", false);\n  const peg$c1377 = \"m11b9\";\n  const peg$c1378 = peg$literalExpectation(\"m11b9\", false);\n  const peg$c1379 = \"m11-9\";\n  const peg$c1380 = peg$literalExpectation(\"m11-9\", false);\n  const peg$c1381 = \"-11b9\";\n  const peg$c1382 = peg$literalExpectation(\"-11b9\", false);\n  const peg$c1383 = \"-11-9\";\n  const peg$c1384 = peg$literalExpectation(\"-11-9\", false);\n  const peg$c1385 = \"min13\";\n  const peg$c1386 = peg$literalExpectation(\"min13\", false);\n  const peg$c1387 = \"m13#5\";\n  const peg$c1388 = peg$literalExpectation(\"m13#5\", false);\n  const peg$c1389 = \"m13+5\";\n  const peg$c1390 = peg$literalExpectation(\"m13+5\", false);\n  const peg$c1391 = \"-13#5\";\n  const peg$c1392 = peg$literalExpectation(\"-13#5\", false);\n  const peg$c1393 = \"m13#9\";\n  const peg$c1394 = peg$literalExpectation(\"m13#9\", false);\n  const peg$c1395 = \"m13+9\";\n  const peg$c1396 = peg$literalExpectation(\"m13+9\", false);\n  const peg$c1397 = \"-13#9\";\n  const peg$c1398 = peg$literalExpectation(\"-13#9\", false);\n  const peg$c1399 = \"-13+9\";\n  const peg$c1400 = peg$literalExpectation(\"-13+9\", false);\n  const peg$c1401 = \"m13b5\";\n  const peg$c1402 = peg$literalExpectation(\"m13b5\", false);\n  const peg$c1403 = \"m13-5\";\n  const peg$c1404 = peg$literalExpectation(\"m13-5\", false);\n  const peg$c1405 = \"-13b5\";\n  const peg$c1406 = peg$literalExpectation(\"-13b5\", false);\n  const peg$c1407 = \"-13-5\";\n  const peg$c1408 = peg$literalExpectation(\"-13-5\", false);\n  const peg$c1409 = \"m13b9\";\n  const peg$c1410 = peg$literalExpectation(\"m13b9\", false);\n  const peg$c1411 = \"m13-9\";\n  const peg$c1412 = peg$literalExpectation(\"m13-9\", false);\n  const peg$c1413 = \"madd2\";\n  const peg$c1414 = peg$literalExpectation(\"madd2\", false);\n  const peg$c1415 = \"m6(9)\";\n  const peg$c1416 = peg$literalExpectation(\"m6(9)\", false);\n  const peg$c1417 = \"m7#11\";\n  const peg$c1418 = peg$literalExpectation(\"m7#11\", false);\n  const peg$c1419 = \"m7+11\";\n  const peg$c1420 = peg$literalExpectation(\"m7+11\", false);\n  const peg$c1421 = \"-7#11\";\n  const peg$c1422 = peg$literalExpectation(\"-7#11\", false);\n  const peg$c1423 = \"-7+11\";\n  const peg$c1424 = peg$literalExpectation(\"-7+11\", false);\n  const peg$c1425 = \"m7(4)\";\n  const peg$c1426 = peg$literalExpectation(\"m7(4)\", false);\n  const peg$c1427 = \"m7(6)\";\n  const peg$c1428 = peg$literalExpectation(\"m7(6)\", false);\n  const peg$c1429 = \"m7b13\";\n  const peg$c1430 = peg$literalExpectation(\"m7b13\", false);\n  const peg$c1431 = \"m7-13\";\n  const peg$c1432 = peg$literalExpectation(\"m7-13\", false);\n  const peg$c1433 = \"-7b13\";\n  const peg$c1434 = peg$literalExpectation(\"-7b13\", false);\n  const peg$c1435 = \"-7-13\";\n  const peg$c1436 = peg$literalExpectation(\"-7-13\", false);\n  const peg$c1437 = \"m7sus\";\n  const peg$c1438 = peg$literalExpectation(\"m7sus\", false);\n  const peg$c1439 = \"m9#11\";\n  const peg$c1440 = peg$literalExpectation(\"m9#11\", false);\n  const peg$c1441 = \"m9+11\";\n  const peg$c1442 = peg$literalExpectation(\"m9+11\", false);\n  const peg$c1443 = \"-9#11\";\n  const peg$c1444 = peg$literalExpectation(\"-9#11\", false);\n  const peg$c1445 = \"-9+11\";\n  const peg$c1446 = peg$literalExpectation(\"-9+11\", false);\n  const peg$c1447 = \"m9b13\";\n  const peg$c1448 = peg$literalExpectation(\"m9b13\", false);\n  const peg$c1449 = \"m9-13\";\n  const peg$c1450 = peg$literalExpectation(\"m9-13\", false);\n  const peg$c1451 = \"-9b13\";\n  const peg$c1452 = peg$literalExpectation(\"-9b13\", false);\n  const peg$c1453 = \"-9-13\";\n  const peg$c1454 = peg$literalExpectation(\"-9-13\", false);\n  const peg$c1455 = \"+11#5\";\n  const peg$c1456 = peg$literalExpectation(\"+11#5\", false);\n  const peg$c1457 = \"M11+5\";\n  const peg$c1458 = peg$literalExpectation(\"M11+5\", false);\n  const peg$c1459 = \"+11#9\";\n  const peg$c1460 = peg$literalExpectation(\"+11#9\", false);\n  const peg$c1461 = \"M11+9\";\n  const peg$c1462 = peg$literalExpectation(\"M11+9\", false);\n  const peg$c1463 = \"+11b5\";\n  const peg$c1464 = peg$literalExpectation(\"+11b5\", false);\n  const peg$c1465 = \"M11-5\";\n  const peg$c1466 = peg$literalExpectation(\"M11-5\", false);\n  const peg$c1467 = \"+11b9\";\n  const peg$c1468 = peg$literalExpectation(\"+11b9\", false);\n  const peg$c1469 = \"+11-9\";\n  const peg$c1470 = peg$literalExpectation(\"+11-9\", false);\n  const peg$c1471 = \"maj13\";\n  const peg$c1472 = peg$literalExpectation(\"maj13\", false);\n  const peg$c1473 = \"Maj13\";\n  const peg$c1474 = peg$literalExpectation(\"Maj13\", false);\n  const peg$c1475 = \"+13#5\";\n  const peg$c1476 = peg$literalExpectation(\"+13#5\", false);\n  const peg$c1477 = \"M13+5\";\n  const peg$c1478 = peg$literalExpectation(\"M13+5\", false);\n  const peg$c1479 = \"+13#9\";\n  const peg$c1480 = peg$literalExpectation(\"+13#9\", false);\n  const peg$c1481 = \"+13+9\";\n  const peg$c1482 = peg$literalExpectation(\"+13+9\", false);\n  const peg$c1483 = \"+13b5\";\n  const peg$c1484 = peg$literalExpectation(\"+13b5\", false);\n  const peg$c1485 = \"M13-5\";\n  const peg$c1486 = peg$literalExpectation(\"M13-5\", false);\n  const peg$c1487 = \"+13b9\";\n  const peg$c1488 = peg$literalExpectation(\"+13b9\", false);\n  const peg$c1489 = \"M13-9\";\n  const peg$c1490 = peg$literalExpectation(\"M13-9\", false);\n  const peg$c1491 = \"+7#11\";\n  const peg$c1492 = peg$literalExpectation(\"+7#11\", false);\n  const peg$c1493 = \"M7+11\";\n  const peg$c1494 = peg$literalExpectation(\"M7+11\", false);\n  const peg$c1495 = \"ma7#5\";\n  const peg$c1496 = peg$literalExpectation(\"ma7#5\", false);\n  const peg$c1497 = \"ma7+5\";\n  const peg$c1498 = peg$literalExpectation(\"ma7+5\", false);\n  const peg$c1499 = \"ma7#9\";\n  const peg$c1500 = peg$literalExpectation(\"ma7#9\", false);\n  const peg$c1501 = \"ma7+9\";\n  const peg$c1502 = peg$literalExpectation(\"ma7+9\", false);\n  const peg$c1503 = \"+7b13\";\n  const peg$c1504 = peg$literalExpectation(\"+7b13\", false);\n  const peg$c1505 = \"M7-13\";\n  const peg$c1506 = peg$literalExpectation(\"M7-13\", false);\n  const peg$c1507 = \"ma7b5\";\n  const peg$c1508 = peg$literalExpectation(\"ma7b5\", false);\n  const peg$c1509 = \"ma7-5\";\n  const peg$c1510 = peg$literalExpectation(\"ma7-5\", false);\n  const peg$c1511 = \"ma7b9\";\n  const peg$c1512 = peg$literalExpectation(\"ma7b9\", false);\n  const peg$c1513 = \"ma7-9\";\n  const peg$c1514 = peg$literalExpectation(\"ma7-9\", false);\n  const peg$c1515 = \"9(#7)\";\n  const peg$c1516 = peg$literalExpectation(\"9(#7)\", false);\n  const peg$c1517 = \"+9#11\";\n  const peg$c1518 = peg$literalExpectation(\"+9#11\", false);\n  const peg$c1519 = \"M9+11\";\n  const peg$c1520 = peg$literalExpectation(\"M9+11\", false);\n  const peg$c1521 = \"ma9#5\";\n  const peg$c1522 = peg$literalExpectation(\"ma9#5\", false);\n  const peg$c1523 = \"ma9+5\";\n  const peg$c1524 = peg$literalExpectation(\"ma9+5\", false);\n  const peg$c1525 = \"+9b13\";\n  const peg$c1526 = peg$literalExpectation(\"+9b13\", false);\n  const peg$c1527 = \"M9-13\";\n  const peg$c1528 = peg$literalExpectation(\"M9-13\", false);\n  const peg$c1529 = \"ma9b5\";\n  const peg$c1530 = peg$literalExpectation(\"ma9b5\", false);\n  const peg$c1531 = \"ma9-5\";\n  const peg$c1532 = peg$literalExpectation(\"ma9-5\", false);\n  const peg$c1533 = \"(#4)\";\n  const peg$c1534 = peg$literalExpectation(\"(#4)\", false);\n  const peg$c1535 = \"(+4)\";\n  const peg$c1536 = peg$literalExpectation(\"(+4)\", false);\n  const peg$c1537 = \"(11)\";\n  const peg$c1538 = peg$literalExpectation(\"(11)\", false);\n  const peg$c1539 = \"(13)\";\n  const peg$c1540 = peg$literalExpectation(\"(13)\", false);\n  const peg$c1541 = \"add2\";\n  const peg$c1542 = peg$literalExpectation(\"add2\", false);\n  const peg$c1543 = \"add4\";\n  const peg$c1544 = peg$literalExpectation(\"add4\", false);\n  const peg$c1545 = \"add6\";\n  const peg$c1546 = peg$literalExpectation(\"add6\", false);\n  const peg$c1547 = \"add9\";\n  const peg$c1548 = peg$literalExpectation(\"add9\", false);\n  const peg$c1549 = \"(b5)\";\n  const peg$c1550 = peg$literalExpectation(\"(b5)\", false);\n  const peg$c1551 = \"(-5)\";\n  const peg$c1552 = peg$literalExpectation(\"(-5)\", false);\n  const peg$c1553 = \"2(6)\";\n  const peg$c1554 = peg$literalExpectation(\"2(6)\", false);\n  const peg$c1555 = \"(b6)\";\n  const peg$c1556 = peg$literalExpectation(\"(b6)\", false);\n  const peg$c1557 = \"unis\";\n  const peg$c1558 = peg$literalExpectation(\"unis\", false);\n  const peg$c1559 = \"Majj\";\n  const peg$c1560 = peg$literalExpectation(\"Majj\", false);\n  const peg$c1561 = \"(#5)\";\n  const peg$c1562 = peg$literalExpectation(\"(#5)\", false);\n  const peg$c1563 = \"(+5)\";\n  const peg$c1564 = peg$literalExpectation(\"(+5)\", false);\n  const peg$c1565 = \"11#5\";\n  const peg$c1566 = peg$literalExpectation(\"11#5\", false);\n  const peg$c1567 = \"11+5\";\n  const peg$c1568 = peg$literalExpectation(\"11+5\", false);\n  const peg$c1569 = \"11#9\";\n  const peg$c1570 = peg$literalExpectation(\"11#9\", false);\n  const peg$c1571 = \"11+9\";\n  const peg$c1572 = peg$literalExpectation(\"11+9\", false);\n  const peg$c1573 = \"11b5\";\n  const peg$c1574 = peg$literalExpectation(\"11b5\", false);\n  const peg$c1575 = \"11-5\";\n  const peg$c1576 = peg$literalExpectation(\"11-5\", false);\n  const peg$c1577 = \"11b9\";\n  const peg$c1578 = peg$literalExpectation(\"11b9\", false);\n  const peg$c1579 = \"11-9\";\n  const peg$c1580 = peg$literalExpectation(\"11-9\", false);\n  const peg$c1581 = \"13#5\";\n  const peg$c1582 = peg$literalExpectation(\"13#5\", false);\n  const peg$c1583 = \"13+5\";\n  const peg$c1584 = peg$literalExpectation(\"13+5\", false);\n  const peg$c1585 = \"13#9\";\n  const peg$c1586 = peg$literalExpectation(\"13#9\", false);\n  const peg$c1587 = \"13+9\";\n  const peg$c1588 = peg$literalExpectation(\"13+9\", false);\n  const peg$c1589 = \"13b5\";\n  const peg$c1590 = peg$literalExpectation(\"13b5\", false);\n  const peg$c1591 = \"13-5\";\n  const peg$c1592 = peg$literalExpectation(\"13-5\", false);\n  const peg$c1593 = \"13b9\";\n  const peg$c1594 = peg$literalExpectation(\"13b9\", false);\n  const peg$c1595 = \"13-9\";\n  const peg$c1596 = peg$literalExpectation(\"13-9\", false);\n  const peg$c1597 = \"sus2\";\n  const peg$c1598 = peg$literalExpectation(\"sus2\", false);\n  const peg$c1599 = \"2(4)\";\n  const peg$c1600 = peg$literalExpectation(\"2(4)\", false);\n  const peg$c1601 = \"4(2)\";\n  const peg$c1602 = peg$literalExpectation(\"4(2)\", false);\n  const peg$c1603 = \"6(2)\";\n  const peg$c1604 = peg$literalExpectation(\"6(2)\", false);\n  const peg$c1605 = \"6(9)\";\n  const peg$c1606 = peg$literalExpectation(\"6(9)\", false);\n  const peg$c1607 = \"dom7\";\n  const peg$c1608 = peg$literalExpectation(\"dom7\", false);\n  const peg$c1609 = \"7#11\";\n  const peg$c1610 = peg$literalExpectation(\"7#11\", false);\n  const peg$c1611 = \"7+11\";\n  const peg$c1612 = peg$literalExpectation(\"7+11\", false);\n  const peg$c1613 = \"aug7\";\n  const peg$c1614 = peg$literalExpectation(\"aug7\", false);\n  const peg$c1615 = \"7(6)\";\n  const peg$c1616 = peg$literalExpectation(\"7(6)\", false);\n  const peg$c1617 = \"7b13\";\n  const peg$c1618 = peg$literalExpectation(\"7b13\", false);\n  const peg$c1619 = \"7-13\";\n  const peg$c1620 = peg$literalExpectation(\"7-13\", false);\n  const peg$c1621 = \"7sus\";\n  const peg$c1622 = peg$literalExpectation(\"7sus\", false);\n  const peg$c1623 = \"dom9\";\n  const peg$c1624 = peg$literalExpectation(\"dom9\", false);\n  const peg$c1625 = \"9#11\";\n  const peg$c1626 = peg$literalExpectation(\"9#11\", false);\n  const peg$c1627 = \"9+11\";\n  const peg$c1628 = peg$literalExpectation(\"9+11\", false);\n  const peg$c1629 = \"aug9\";\n  const peg$c1630 = peg$literalExpectation(\"aug9\", false);\n  const peg$c1631 = \"9b13\";\n  const peg$c1632 = peg$literalExpectation(\"9b13\", false);\n  const peg$c1633 = \"9-13\";\n  const peg$c1634 = peg$literalExpectation(\"9-13\", false);\n  const peg$c1635 = \"9aug\";\n  const peg$c1636 = peg$literalExpectation(\"9aug\", false);\n  const peg$c1637 = \"9sus\";\n  const peg$c1638 = peg$literalExpectation(\"9sus\", false);\n  const peg$c1639 = \"dim7\";\n  const peg$c1640 = peg$literalExpectation(\"dim7\", false);\n  const peg$c1641 = \"m(4)\";\n  const peg$c1642 = peg$literalExpectation(\"m(4)\", false);\n  const peg$c1643 = \"m(9)\";\n  const peg$c1644 = peg$literalExpectation(\"m(9)\", false);\n  const peg$c1645 = \"mi11\";\n  const peg$c1646 = peg$literalExpectation(\"mi11\", false);\n  const peg$c1647 = \"m9+5\";\n  const peg$c1648 = peg$literalExpectation(\"m9+5\", false);\n  const peg$c1649 = \"-9-5\";\n  const peg$c1650 = peg$literalExpectation(\"-9-5\", false);\n  const peg$c1651 = \"mi13\";\n  const peg$c1652 = peg$literalExpectation(\"mi13\", false);\n  const peg$c1653 = \"min2\";\n  const peg$c1654 = peg$literalExpectation(\"min2\", false);\n  const peg$c1655 = \"min6\";\n  const peg$c1656 = peg$literalExpectation(\"min6\", false);\n  const peg$c1657 = \"m6M7\";\n  const peg$c1658 = peg$literalExpectation(\"m6M7\", false);\n  const peg$c1659 = \"m6+7\";\n  const peg$c1660 = peg$literalExpectation(\"m6+7\", false);\n  const peg$c1661 = \"min7\";\n  const peg$c1662 = peg$literalExpectation(\"min7\", false);\n  const peg$c1663 = \"m7#5\";\n  const peg$c1664 = peg$literalExpectation(\"m7#5\", false);\n  const peg$c1665 = \"m7+5\";\n  const peg$c1666 = peg$literalExpectation(\"m7+5\", false);\n  const peg$c1667 = \"-7#5\";\n  const peg$c1668 = peg$literalExpectation(\"-7#5\", false);\n  const peg$c1669 = \"m7#9\";\n  const peg$c1670 = peg$literalExpectation(\"m7#9\", false);\n  const peg$c1671 = \"m7+9\";\n  const peg$c1672 = peg$literalExpectation(\"m7+9\", false);\n  const peg$c1673 = \"-7#9\";\n  const peg$c1674 = peg$literalExpectation(\"-7#9\", false);\n  const peg$c1675 = \"m7b5\";\n  const peg$c1676 = peg$literalExpectation(\"m7b5\", false);\n  const peg$c1677 = \"m7-5\";\n  const peg$c1678 = peg$literalExpectation(\"m7-5\", false);\n  const peg$c1679 = \"-7b5\";\n  const peg$c1680 = peg$literalExpectation(\"-7b5\", false);\n  const peg$c1681 = \"m7b9\";\n  const peg$c1682 = peg$literalExpectation(\"m7b9\", false);\n  const peg$c1683 = \"m7-9\";\n  const peg$c1684 = peg$literalExpectation(\"m7-9\", false);\n  const peg$c1685 = \"-7b9\";\n  const peg$c1686 = peg$literalExpectation(\"-7b9\", false);\n  const peg$c1687 = \"min9\";\n  const peg$c1688 = peg$literalExpectation(\"min9\", false);\n  const peg$c1689 = \"m9#5\";\n  const peg$c1690 = peg$literalExpectation(\"m9#5\", false);\n  const peg$c1691 = \"-9#5\";\n  const peg$c1692 = peg$literalExpectation(\"-9#5\", false);\n  const peg$c1693 = \"m9b5\";\n  const peg$c1694 = peg$literalExpectation(\"m9b5\", false);\n  const peg$c1695 = \"m9-5\";\n  const peg$c1696 = peg$literalExpectation(\"m9-5\", false);\n  const peg$c1697 = \"-9b5\";\n  const peg$c1698 = peg$literalExpectation(\"-9b5\", false);\n  const peg$c1699 = \"m9M7\";\n  const peg$c1700 = peg$literalExpectation(\"m9M7\", false);\n  const peg$c1701 = \"maj9\";\n  const peg$c1702 = peg$literalExpectation(\"maj9\", false);\n  const peg$c1703 = \"ma11\";\n  const peg$c1704 = peg$literalExpectation(\"ma11\", false);\n  const peg$c1705 = \"11#7\";\n  const peg$c1706 = peg$literalExpectation(\"11#7\", false);\n  const peg$c1707 = \"11+7\";\n  const peg$c1708 = peg$literalExpectation(\"11+7\", false);\n  const peg$c1709 = \"ma13\";\n  const peg$c1710 = peg$literalExpectation(\"ma13\", false);\n  const peg$c1711 = \"ma69\";\n  const peg$c1712 = peg$literalExpectation(\"ma69\", false);\n  const peg$c1713 = \"Maj7\";\n  const peg$c1714 = peg$literalExpectation(\"Maj7\", false);\n  const peg$c1715 = \"maj7\";\n  const peg$c1716 = peg$literalExpectation(\"maj7\", false);\n  const peg$c1717 = \"+7#5\";\n  const peg$c1718 = peg$literalExpectation(\"+7#5\", false);\n  const peg$c1719 = \"M7+5\";\n  const peg$c1720 = peg$literalExpectation(\"M7+5\", false);\n  const peg$c1721 = \"+7#9\";\n  const peg$c1722 = peg$literalExpectation(\"+7#9\", false);\n  const peg$c1723 = \"M7+9\";\n  const peg$c1724 = peg$literalExpectation(\"M7+9\", false);\n  const peg$c1725 = \"+7b5\";\n  const peg$c1726 = peg$literalExpectation(\"+7b5\", false);\n  const peg$c1727 = \"M7-5\";\n  const peg$c1728 = peg$literalExpectation(\"M7-5\", false);\n  const peg$c1729 = \"+7b9\";\n  const peg$c1730 = peg$literalExpectation(\"+7b9\", false);\n  const peg$c1731 = \"M7-9\";\n  const peg$c1732 = peg$literalExpectation(\"M7-9\", false);\n  const peg$c1733 = \"+9#5\";\n  const peg$c1734 = peg$literalExpectation(\"+9#5\", false);\n  const peg$c1735 = \"M9+5\";\n  const peg$c1736 = peg$literalExpectation(\"M9+5\", false);\n  const peg$c1737 = \"+9b5\";\n  const peg$c1738 = peg$literalExpectation(\"+9b5\", false);\n  const peg$c1739 = \"M9-5\";\n  const peg$c1740 = peg$literalExpectation(\"M9-5\", false);\n  const peg$c1741 = \"sus4\";\n  const peg$c1742 = peg$literalExpectation(\"sus4\", false);\n  const peg$c1743 = \"(2)\";\n  const peg$c1744 = peg$literalExpectation(\"(2)\", false);\n  const peg$c1745 = \"(4)\";\n  const peg$c1746 = peg$literalExpectation(\"(4)\", false);\n  const peg$c1747 = \"(6)\";\n  const peg$c1748 = peg$literalExpectation(\"(6)\", false);\n  const peg$c1749 = \"(7)\";\n  const peg$c1750 = peg$literalExpectation(\"(7)\", false);\n  const peg$c1751 = \"(9)\";\n  const peg$c1752 = peg$literalExpectation(\"(9)\", false);\n  const peg$c1753 = \"maj\";\n  const peg$c1754 = peg$literalExpectation(\"maj\", false);\n  const peg$c1755 = \"aug\";\n  const peg$c1756 = peg$literalExpectation(\"aug\", false);\n  const peg$c1757 = \"2+4\";\n  const peg$c1758 = peg$literalExpectation(\"2+4\", false);\n  const peg$c1759 = \"2#4\";\n  const peg$c1760 = peg$literalExpectation(\"2#4\", false);\n  const peg$c1761 = \"no3\";\n  const peg$c1762 = peg$literalExpectation(\"no3\", false);\n  const peg$c1763 = \"7#5\";\n  const peg$c1764 = peg$literalExpectation(\"7#5\", false);\n  const peg$c1765 = \"7+5\";\n  const peg$c1766 = peg$literalExpectation(\"7+5\", false);\n  const peg$c1767 = \"7#9\";\n  const peg$c1768 = peg$literalExpectation(\"7#9\", false);\n  const peg$c1769 = \"7+9\";\n  const peg$c1770 = peg$literalExpectation(\"7+9\", false);\n  const peg$c1771 = \"7b5\";\n  const peg$c1772 = peg$literalExpectation(\"7b5\", false);\n  const peg$c1773 = \"7-5\";\n  const peg$c1774 = peg$literalExpectation(\"7-5\", false);\n  const peg$c1775 = \"7b9\";\n  const peg$c1776 = peg$literalExpectation(\"7b9\", false);\n  const peg$c1777 = \"7-9\";\n  const peg$c1778 = peg$literalExpectation(\"7-9\", false);\n  const peg$c1779 = \"9#5\";\n  const peg$c1780 = peg$literalExpectation(\"9#5\", false);\n  const peg$c1781 = \"9+5\";\n  const peg$c1782 = peg$literalExpectation(\"9+5\", false);\n  const peg$c1783 = \"9b5\";\n  const peg$c1784 = peg$literalExpectation(\"9b5\", false);\n  const peg$c1785 = \"9-5\";\n  const peg$c1786 = peg$literalExpectation(\"9-5\", false);\n  const peg$c1787 = \"dim\";\n  const peg$c1788 = peg$literalExpectation(\"dim\", false);\n  const peg$c1789 = \"mb5\";\n  const peg$c1790 = peg$literalExpectation(\"mb5\", false);\n  const peg$c1791 = \"m-5\";\n  const peg$c1792 = peg$literalExpectation(\"m-5\", false);\n  const peg$c1793 = \"-b5\";\n  const peg$c1794 = peg$literalExpectation(\"-b5\", false);\n  const peg$c1795 = \"min\";\n  const peg$c1796 = peg$literalExpectation(\"min\", false);\n  const peg$c1797 = \"mM7\";\n  const peg$c1798 = peg$literalExpectation(\"mM7\", false);\n  const peg$c1799 = \"m+7\";\n  const peg$c1800 = peg$literalExpectation(\"m+7\", false);\n  const peg$c1801 = \"mM9\";\n  const peg$c1802 = peg$literalExpectation(\"mM9\", false);\n  const peg$c1803 = \"m+9\";\n  const peg$c1804 = peg$literalExpectation(\"m+9\", false);\n  const peg$c1805 = \"m11\";\n  const peg$c1806 = peg$literalExpectation(\"m11\", false);\n  const peg$c1807 = \"-11\";\n  const peg$c1808 = peg$literalExpectation(\"-11\", false);\n  const peg$c1809 = \"m13\";\n  const peg$c1810 = peg$literalExpectation(\"m13\", false);\n  const peg$c1811 = \"-13\";\n  const peg$c1812 = peg$literalExpectation(\"-13\", false);\n  const peg$c1813 = \"mi2\";\n  const peg$c1814 = peg$literalExpectation(\"mi2\", false);\n  const peg$c1815 = \"mi6\";\n  const peg$c1816 = peg$literalExpectation(\"mi6\", false);\n  const peg$c1817 = \"m69\";\n  const peg$c1818 = peg$literalExpectation(\"m69\", false);\n  const peg$c1819 = \"mi7\";\n  const peg$c1820 = peg$literalExpectation(\"mi7\", false);\n  const peg$c1821 = \"m74\";\n  const peg$c1822 = peg$literalExpectation(\"m74\", false);\n  const peg$c1823 = \"mi9\";\n  const peg$c1824 = peg$literalExpectation(\"mi9\", false);\n  const peg$c1825 = \"ma9\";\n  const peg$c1826 = peg$literalExpectation(\"ma9\", false);\n  const peg$c1827 = \"+11\";\n  const peg$c1828 = peg$literalExpectation(\"+11\", false);\n  const peg$c1829 = \"M11\";\n  const peg$c1830 = peg$literalExpectation(\"M11\", false);\n  const peg$c1831 = \"+13\";\n  const peg$c1832 = peg$literalExpectation(\"+13\", false);\n  const peg$c1833 = \"M13\";\n  const peg$c1834 = peg$literalExpectation(\"M13\", false);\n  const peg$c1835 = \"ma6\";\n  const peg$c1836 = peg$literalExpectation(\"ma6\", false);\n  const peg$c1837 = \"ma7\";\n  const peg$c1838 = peg$literalExpectation(\"ma7\", false);\n  const peg$c1839 = \"sus\";\n  const peg$c1840 = peg$literalExpectation(\"sus\", false);\n  const peg$c1841 = \"#4\";\n  const peg$c1842 = peg$literalExpectation(\"#4\", false);\n  const peg$c1843 = \"+4\";\n  const peg$c1844 = peg$literalExpectation(\"+4\", false);\n  const peg$c1845 = \"-5\";\n  const peg$c1846 = peg$literalExpectation(\"-5\", false);\n  const peg$c1847 = \"b5\";\n  const peg$c1848 = peg$literalExpectation(\"b5\", false);\n  const peg$c1849 = \"ma\";\n  const peg$c1850 = peg$literalExpectation(\"ma\", false);\n  const peg$c1851 = \"Ma\";\n  const peg$c1852 = peg$literalExpectation(\"Ma\", false);\n  const peg$c1853 = \"#5\";\n  const peg$c1854 = peg$literalExpectation(\"#5\", false);\n  const peg$c1855 = \"+5\";\n  const peg$c1856 = peg$literalExpectation(\"+5\", false);\n  const peg$c1857 = \"11\";\n  const peg$c1858 = peg$literalExpectation(\"11\", false);\n  const peg$c1859 = \"13\";\n  const peg$c1860 = peg$literalExpectation(\"13\", false);\n  const peg$c1861 = \"42\";\n  const peg$c1862 = peg$literalExpectation(\"42\", false);\n  const peg$c1863 = \"69\";\n  const peg$c1864 = peg$literalExpectation(\"69\", false);\n  const peg$c1865 = \"x7\";\n  const peg$c1866 = peg$literalExpectation(\"x7\", false);\n  const peg$c1867 = \"x9\";\n  const peg$c1868 = peg$literalExpectation(\"x9\", false);\n  const peg$c1869 = \"o7\";\n  const peg$c1870 = peg$literalExpectation(\"o7\", false);\n  const peg$c1871 = peg$literalExpectation(\"mi\", false);\n  const peg$c1872 = \"m2\";\n  const peg$c1873 = peg$literalExpectation(\"m2\", false);\n  const peg$c1874 = \"m4\";\n  const peg$c1875 = peg$literalExpectation(\"m4\", false);\n  const peg$c1876 = \"m6\";\n  const peg$c1877 = peg$literalExpectation(\"m6\", false);\n  const peg$c1878 = \"-6\";\n  const peg$c1879 = peg$literalExpectation(\"-6\", false);\n  const peg$c1880 = \"m7\";\n  const peg$c1881 = peg$literalExpectation(\"m7\", false);\n  const peg$c1882 = \"-7\";\n  const peg$c1883 = peg$literalExpectation(\"-7\", false);\n  const peg$c1884 = \"m9\";\n  const peg$c1885 = peg$literalExpectation(\"m9\", false);\n  const peg$c1886 = \"-9\";\n  const peg$c1887 = peg$literalExpectation(\"-9\", false);\n  const peg$c1888 = \"+7\";\n  const peg$c1889 = peg$literalExpectation(\"+7\", false);\n  const peg$c1890 = \"#7\";\n  const peg$c1891 = peg$literalExpectation(\"#7\", false);\n  const peg$c1892 = \"M7\";\n  const peg$c1893 = peg$literalExpectation(\"M7\", false);\n  const peg$c1894 = \"+9\";\n  const peg$c1895 = peg$literalExpectation(\"+9\", false);\n  const peg$c1896 = \"M9\";\n  const peg$c1897 = peg$literalExpectation(\"M9\", false);\n  const peg$c1898 = /^[+\\-24-79Mmx]/;\n  const peg$c1899 = peg$classExpectation([\"+\", \"-\", \"2\", [\"4\", \"7\"], \"9\", \"M\", \"m\", \"x\"], false, false);\n  const peg$c1900 = /^[\\n\\r]/;\n  const peg$c1901 = peg$classExpectation([\"\\n\", \"\\r\"], false, false);\n  const peg$c1902 = \"\\n\";\n  const peg$c1903 = peg$literalExpectation(\"\\n\", false);\n  const peg$c1904 = \"\\r\";\n  const peg$c1905 = peg$literalExpectation(\"\\r\", false);\n\n  let peg$currPos = 0;\n  let peg$savedPos = 0;\n  const peg$posDetailsCache = [{ line: 1, column: 1 }];\n  let peg$maxFailPos = 0;\n  let peg$maxFailExpected: Expectation[] = [];\n  let peg$silentFails = 0;\n\n  let peg$result;\n\n  if (options.startRule !== undefined) {\n    if (!(options.startRule in peg$startRuleFunctions)) {\n      throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n    }\n\n    peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n  }\n\n  function text(): string {\n    return input.substring(peg$savedPos, peg$currPos);\n  }\n\n  function location(): FileRange {\n    return peg$computeLocation(peg$savedPos, peg$currPos);\n  }\n\n  function expected(description: string, location1?: FileRange) {\n    location1 = location1 !== undefined\n      ? location1\n      : peg$computeLocation(peg$savedPos, peg$currPos);\n\n    throw peg$buildStructuredError(\n      [peg$otherExpectation(description)],\n      input.substring(peg$savedPos, peg$currPos),\n      location1\n    );\n  }\n\n  function error(message: string, location1?: FileRange) {\n    location1 = location1 !== undefined\n      ? location1\n      : peg$computeLocation(peg$savedPos, peg$currPos);\n\n    throw peg$buildSimpleError(message, location1);\n  }\n\n  function peg$literalExpectation(text1: string, ignoreCase: boolean): LiteralExpectation {\n    return { type: \"literal\", text: text1, ignoreCase: ignoreCase };\n  }\n\n  function peg$classExpectation(parts: ClassParts, inverted: boolean, ignoreCase: boolean): ClassExpectation {\n    return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n  }\n\n  function peg$anyExpectation(): AnyExpectation {\n    return { type: \"any\" };\n  }\n\n  function peg$endExpectation(): EndExpectation {\n    return { type: \"end\" };\n  }\n\n  function peg$otherExpectation(description: string): OtherExpectation {\n    return { type: \"other\", description: description };\n  }\n\n  function peg$computePosDetails(pos: number) {\n    let details = peg$posDetailsCache[pos];\n    let p;\n\n    if (details) {\n      return details;\n    } else {\n      p = pos - 1;\n      while (!peg$posDetailsCache[p]) {\n        p--;\n      }\n\n      details = peg$posDetailsCache[p];\n      details = {\n        line: details.line,\n        column: details.column\n      };\n\n      while (p < pos) {\n        if (input.charCodeAt(p) === 10) {\n          details.line++;\n          details.column = 1;\n        } else {\n          details.column++;\n        }\n\n        p++;\n      }\n\n      peg$posDetailsCache[pos] = details;\n\n      return details;\n    }\n  }\n\n  function peg$computeLocation(startPos: number, endPos: number): FileRange {\n    const startPosDetails = peg$computePosDetails(startPos);\n    const endPosDetails = peg$computePosDetails(endPos);\n\n    return {\n      source: peg$source,\n      start: {\n        offset: startPos,\n        line: startPosDetails.line,\n        column: startPosDetails.column\n      },\n      end: {\n        offset: endPos,\n        line: endPosDetails.line,\n        column: endPosDetails.column\n      }\n    };\n  }\n\n  function peg$fail(expected1: Expectation) {\n    if (peg$currPos < peg$maxFailPos) { return; }\n\n    if (peg$currPos > peg$maxFailPos) {\n      peg$maxFailPos = peg$currPos;\n      peg$maxFailExpected = [];\n    }\n\n    peg$maxFailExpected.push(expected1);\n  }\n\n  function peg$buildSimpleError(message: string, location1: FileRange) {\n    return new PeggySyntaxError(message, [], \"\", location1);\n  }\n\n  function peg$buildStructuredError(expected1: Expectation[], found: string | null, location1: FileRange) {\n    return new PeggySyntaxError(\n      PeggySyntaxError.buildMessage(expected1, found),\n      expected1,\n      found,\n      location1\n    );\n  }\n\n  function peg$parseChordSheet(): any {\n    let s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = peg$parseMetadata();\n    if (s1 as any === peg$FAILED) {\n      s1 = null;\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseChordSheetContents();\n      if (s2 as any === peg$FAILED) {\n        s2 = null;\n      }\n      if (s2 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c0(s1, s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordSheetContents(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$parseNewLine();\n    if (s1 as any === peg$FAILED) {\n      s1 = null;\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$parseChordSheetLineWithNewLine();\n      while (s3 as any !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$parseChordSheetLineWithNewLine();\n      }\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseChordSheetLine();\n        if (s3 as any === peg$FAILED) {\n          s3 = null;\n        }\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c1(s1, s2, s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordSheetLineWithNewLine(): any {\n    let s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = peg$parseChordSheetLine();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseNewLine();\n      if (s2 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c2(s1);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordSheetLine(): any {\n    let s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    s1 = peg$parseDirectionLine();\n    if (s1 as any !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c3(s1);\n    }\n    s0 = s1;\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parseInlineMetadata();\n      if (s1 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c3(s1);\n      }\n      s0 = s1;\n      if (s0 as any === peg$FAILED) {\n        s0 = peg$currPos;\n        s1 = peg$currPos;\n        peg$silentFails++;\n        s2 = peg$currPos;\n        s3 = peg$parseChordsLine();\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$currPos;\n          peg$silentFails++;\n          s5 = peg$parseWordChar();\n          peg$silentFails--;\n          if (s5 as any === peg$FAILED) {\n            s4 = undefined;\n          } else {\n            peg$currPos = s4;\n            s4 = peg$FAILED;\n          }\n          if (s4 as any !== peg$FAILED) {\n            s3 = [s3, s4];\n            s2 = s3;\n          } else {\n            peg$currPos = s2;\n            s2 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n        peg$silentFails--;\n        if (s2 as any !== peg$FAILED) {\n          peg$currPos = s1;\n          s1 = undefined;\n        } else {\n          s1 = peg$FAILED;\n        }\n        if (s1 as any !== peg$FAILED) {\n          s2 = peg$parseChordsLine();\n          if (s2 as any !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c3(s2);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n        if (s0 as any === peg$FAILED) {\n          s0 = peg$currPos;\n          s1 = peg$parseLyricsLine();\n          if (s1 as any !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c3(s1);\n          }\n          s0 = s1;\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordsLine(): any {\n    let s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = [];\n    s2 = peg$parseChordWithSpacing();\n    if (s2 as any === peg$FAILED) {\n      s2 = peg$parseNoChordWithSpacing();\n      if (s2 as any === peg$FAILED) {\n        s2 = peg$parseRhythmSymbolWithSpacing();\n      }\n    }\n    if (s2 as any !== peg$FAILED) {\n      while (s2 as any !== peg$FAILED) {\n        s1.push(s2);\n        s2 = peg$parseChordWithSpacing();\n        if (s2 as any === peg$FAILED) {\n          s2 = peg$parseNoChordWithSpacing();\n          if (s2 as any === peg$FAILED) {\n            s2 = peg$parseRhythmSymbolWithSpacing();\n          }\n        }\n      }\n    } else {\n      s1 = peg$FAILED;\n    }\n    if (s1 as any !== peg$FAILED) {\n      peg$savedPos = peg$currPos;\n      s2 = peg$c4(s1);\n      if (s2) {\n        s2 = undefined;\n      } else {\n        s2 = peg$FAILED;\n      }\n      if (s2 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c5(s1);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseRhythmSymbolWithSpacing(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = peg$parse_S_();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseRhythmSymbol();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parse_S_();\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c6(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseRhythmSymbol(): any {\n    let s0, s1;\n\n    s0 = peg$currPos;\n    if (peg$c7.test(input.charAt(peg$currPos))) {\n      s1 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c8); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c9(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parseLyricsLine(): any {\n    let s0, s1;\n\n    s0 = peg$currPos;\n    s1 = peg$parseLyrics();\n    if (s1 as any !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c10(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parseLyrics(): any {\n    let s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = [];\n    s2 = peg$parseWordChar();\n    while (s2 as any !== peg$FAILED) {\n      s1.push(s2);\n      s2 = peg$parseWordChar();\n    }\n    if (s1 as any !== peg$FAILED) {\n      s0 = input.substring(s0, peg$currPos);\n    } else {\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseNoChordWithSpacing(): any {\n    let s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$parse_S_();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseNoChord();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$currPos;\n        peg$silentFails++;\n        if (peg$c11.test(input.charAt(peg$currPos))) {\n          s4 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s4 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c12); }\n        }\n        peg$silentFails--;\n        if (s4 as any === peg$FAILED) {\n          s3 = undefined;\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parse_S_();\n          if (s4 as any !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c13(s2);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseNoChord(): any {\n    let s0, s1;\n\n    s0 = peg$currPos;\n    if (input.substr(peg$currPos, 4).toLowerCase() === peg$c14) {\n      s1 = input.substr(peg$currPos, 4);\n      peg$currPos += 4;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c15); }\n    }\n    if (s1 as any === peg$FAILED) {\n      if (input.substr(peg$currPos, 3).toLowerCase() === peg$c16) {\n        s1 = input.substr(peg$currPos, 3);\n        peg$currPos += 3;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c17); }\n      }\n      if (s1 as any === peg$FAILED) {\n        if (input.substr(peg$currPos, 3).toLowerCase() === peg$c18) {\n          s1 = input.substr(peg$currPos, 3);\n          peg$currPos += 3;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c19); }\n        }\n        if (s1 as any === peg$FAILED) {\n          if (input.substr(peg$currPos, 2).toLowerCase() === peg$c20) {\n            s1 = input.substr(peg$currPos, 2);\n            peg$currPos += 2;\n          } else {\n            s1 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c21); }\n          }\n        }\n      }\n    }\n    if (s1 as any !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c22();\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parseChordWithSpacing(): any {\n    let s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$parse_S_();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseChord();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$currPos;\n        peg$silentFails++;\n        if (peg$c11.test(input.charAt(peg$currPos))) {\n          s4 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s4 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c12); }\n        }\n        peg$silentFails--;\n        if (s4 as any === peg$FAILED) {\n          s3 = undefined;\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parse_S_();\n          if (s4 as any !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c23(s2);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseDirectionLine(): any {\n    let s0, s1, s2, s3, s4, s5, s6, s7;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    s2 = peg$currPos;\n    s3 = peg$parse_S_();\n    if (s3 as any !== peg$FAILED) {\n      s4 = peg$parseKeyword();\n      if (s4 as any !== peg$FAILED) {\n        s5 = peg$parse_S_();\n        if (s5 as any !== peg$FAILED) {\n          s6 = [];\n          s7 = peg$parseWordChar();\n          while (s7 as any !== peg$FAILED) {\n            s6.push(s7);\n            s7 = peg$parseWordChar();\n          }\n          if (s6 as any !== peg$FAILED) {\n            s7 = peg$parse_S_();\n            if (s7 as any !== peg$FAILED) {\n              s3 = [s3, s4, s5, s6, s7];\n              s2 = s3;\n            } else {\n              peg$currPos = s2;\n              s2 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s2;\n            s2 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s2;\n        s2 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s2;\n      s2 = peg$FAILED;\n    }\n    if (s2 as any !== peg$FAILED) {\n      s1 = input.substring(s1, peg$currPos);\n    } else {\n      s1 = s2;\n    }\n    if (s1 as any !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c24(s1);\n    }\n    s0 = s1;\n\n    return s0;\n  }\n\n  function peg$parseKeyword(): any {\n    let s0;\n\n    if (input.substr(peg$currPos, 5).toLowerCase() === peg$c25) {\n      s0 = input.substr(peg$currPos, 5);\n      peg$currPos += 5;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c26); }\n    }\n    if (s0 as any === peg$FAILED) {\n      if (input.substr(peg$currPos, 6).toLowerCase() === peg$c27) {\n        s0 = input.substr(peg$currPos, 6);\n        peg$currPos += 6;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c28); }\n      }\n      if (s0 as any === peg$FAILED) {\n        if (input.substr(peg$currPos, 6).toLowerCase() === peg$c29) {\n          s0 = input.substr(peg$currPos, 6);\n          peg$currPos += 6;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c30); }\n        }\n        if (s0 as any === peg$FAILED) {\n          if (input.substr(peg$currPos, 3).toLowerCase() === peg$c31) {\n            s0 = input.substr(peg$currPos, 3);\n            peg$currPos += 3;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c32); }\n          }\n          if (s0 as any === peg$FAILED) {\n            if (input.substr(peg$currPos, 9).toLowerCase() === peg$c33) {\n              s0 = input.substr(peg$currPos, 9);\n              peg$currPos += 9;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c34); }\n            }\n            if (s0 as any === peg$FAILED) {\n              if (input.substr(peg$currPos, 12).toLowerCase() === peg$c35) {\n                s0 = input.substr(peg$currPos, 12);\n                peg$currPos += 12;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c36); }\n              }\n              if (s0 as any === peg$FAILED) {\n                if (input.substr(peg$currPos, 5).toLowerCase() === peg$c37) {\n                  s0 = input.substr(peg$currPos, 5);\n                  peg$currPos += 5;\n                } else {\n                  s0 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c38); }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseWordChar(): any {\n    let s0;\n\n    if (peg$c39.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c40); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseMetadata(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    s1 = [];\n    s2 = peg$parseMetadataPairWithNewLine();\n    while (s2 as any !== peg$FAILED) {\n      s1.push(s2);\n      s2 = peg$parseMetadataPairWithNewLine();\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseMetadataPair();\n      if (s2 as any === peg$FAILED) {\n        s2 = null;\n      }\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseMetadataSeparator();\n        if (s3 as any === peg$FAILED) {\n          s3 = null;\n        }\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c41(s1, s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseInlineMetadata(): any {\n    let s0, s1, s2, s3, s4, s5, s6;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    s2 = peg$parseMetadataKey();\n    if (s2 as any !== peg$FAILED) {\n      s1 = input.substring(s1, peg$currPos);\n    } else {\n      s1 = s2;\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parse_S_();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseColon();\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parse_S_();\n          if (s4 as any !== peg$FAILED) {\n            s5 = peg$currPos;\n            s6 = peg$parseMetadataValue();\n            if (s6 as any !== peg$FAILED) {\n              s5 = input.substring(s5, peg$currPos);\n            } else {\n              s5 = s6;\n            }\n            if (s5 as any !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c42(s1, s5);\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseMetadataPairWithNewLine(): any {\n    let s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = peg$parseMetadataPair();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseNewLine();\n      if (s2 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c43(s1);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseMetadataPair(): any {\n    let s0;\n\n    s0 = peg$parseMetadataPairWithBrackets();\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$parseMetadataPairWithoutBrackets();\n    }\n\n    return s0;\n  }\n\n  function peg$parseMetadataPairWithBrackets(): any {\n    let s0, s1, s2, s3, s4, s5;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 123) {\n      s1 = peg$c44;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c45); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parse_S_();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseMetadataPairWithoutBrackets();\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parse_S_();\n          if (s4 as any !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 125) {\n              s5 = peg$c46;\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c47); }\n            }\n            if (s5 as any !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c48(s3);\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseMetadataPairWithoutBrackets(): any {\n    let s0, s1, s2, s3, s4, s5, s6;\n\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    s2 = peg$parseMetadataKey();\n    if (s2 as any !== peg$FAILED) {\n      s1 = input.substring(s1, peg$currPos);\n    } else {\n      s1 = s2;\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parse_S_();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseColon();\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parse_S_();\n          if (s4 as any !== peg$FAILED) {\n            s5 = peg$currPos;\n            s6 = peg$parseMetadataValue();\n            if (s6 as any !== peg$FAILED) {\n              s5 = input.substring(s5, peg$currPos);\n            } else {\n              s5 = s6;\n            }\n            if (s5 as any !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c49(s1, s5);\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseColon(): any {\n    let s0;\n\n    if (input.charCodeAt(peg$currPos) === 58) {\n      s0 = peg$c50;\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c51); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseMetadataKey(): any {\n    let s0, s1;\n\n    s0 = [];\n    if (peg$c52.test(input.charAt(peg$currPos))) {\n      s1 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c53); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      while (s1 as any !== peg$FAILED) {\n        s0.push(s1);\n        if (peg$c52.test(input.charAt(peg$currPos))) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c53); }\n        }\n      }\n    } else {\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseMetadataValue(): any {\n    let s0, s1;\n\n    s0 = [];\n    if (peg$c54.test(input.charAt(peg$currPos))) {\n      s1 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c55); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      while (s1 as any !== peg$FAILED) {\n        s0.push(s1);\n        if (peg$c54.test(input.charAt(peg$currPos))) {\n          s1 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c55); }\n        }\n      }\n    } else {\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseMetadataSeparator(): any {\n    let s0, s1, s2;\n\n    s0 = peg$currPos;\n    if (input.substr(peg$currPos, 3) === peg$c56) {\n      s1 = peg$c56;\n      peg$currPos += 3;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c57); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseNewLine();\n      if (s2 as any !== peg$FAILED) {\n        s1 = [s1, s2];\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parse_S_(): any {\n    let s0, s1;\n\n    peg$silentFails++;\n    s0 = [];\n    if (peg$c59.test(input.charAt(peg$currPos))) {\n      s1 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c60); }\n    }\n    while (s1 as any !== peg$FAILED) {\n      s0.push(s1);\n      if (peg$c59.test(input.charAt(peg$currPos))) {\n        s1 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c60); }\n      }\n    }\n    peg$silentFails--;\n    if (s0 as any === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c58); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseChord(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 40) {\n      s1 = peg$c61;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c62); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseNumeral();\n      if (s2 as any === peg$FAILED) {\n        s2 = peg$parseNumeric();\n        if (s2 as any === peg$FAILED) {\n          s2 = peg$parseChordSolfege();\n          if (s2 as any === peg$FAILED) {\n            s2 = peg$parseChordSymbol();\n          }\n        }\n      }\n      if (s2 as any !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 41) {\n          s3 = peg$c63;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c64); }\n        }\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c65(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parseNumeral();\n      if (s1 as any === peg$FAILED) {\n        s1 = peg$parseNumeric();\n        if (s1 as any === peg$FAILED) {\n          s1 = peg$parseChordSolfege();\n          if (s1 as any === peg$FAILED) {\n            s1 = peg$parseChordSymbol();\n          }\n        }\n      }\n      if (s1 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c66(s1);\n      }\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordAccidental(): any {\n    let s0;\n\n    if (peg$c67.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c68); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordSymbol(): any {\n    let s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$parseChordSymbolRoot();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseChordAccidental();\n      if (s2 as any === peg$FAILED) {\n        s2 = null;\n      }\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseChordSuffix();\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parseChordSymbolBass();\n          if (s4 as any === peg$FAILED) {\n            s4 = null;\n          }\n          if (s4 as any !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c69(s1, s2, s3, s4);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parseChordSymbolBass();\n      if (s1 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c70(s1);\n      }\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordSymbolRoot(): any {\n    let s0;\n\n    if (peg$c71.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c72); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordSymbolBass(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 47) {\n      s1 = peg$c73;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c74); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseChordSymbolRoot();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseChordAccidental();\n        if (s3 as any === peg$FAILED) {\n          s3 = null;\n        }\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c75(s2, s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordSolfege(): any {\n    let s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$parseChordSolfegeRoot();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseChordAccidental();\n      if (s2 as any === peg$FAILED) {\n        s2 = null;\n      }\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseChordSuffix();\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parseChordSolfegeBass();\n          if (s4 as any === peg$FAILED) {\n            s4 = null;\n          }\n          if (s4 as any !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c76(s1, s2, s3, s4);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parseChordSolfegeBass();\n      if (s1 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c77(s1);\n      }\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordSolfegeRoot(): any {\n    let s0;\n\n    if (input.substr(peg$currPos, 2).toLowerCase() === peg$c78) {\n      s0 = input.substr(peg$currPos, 2);\n      peg$currPos += 2;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c79); }\n    }\n    if (s0 as any === peg$FAILED) {\n      if (input.substr(peg$currPos, 2).toLowerCase() === peg$c80) {\n        s0 = input.substr(peg$currPos, 2);\n        peg$currPos += 2;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c81); }\n      }\n      if (s0 as any === peg$FAILED) {\n        if (input.substr(peg$currPos, 2).toLowerCase() === peg$c82) {\n          s0 = input.substr(peg$currPos, 2);\n          peg$currPos += 2;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c83); }\n        }\n        if (s0 as any === peg$FAILED) {\n          s0 = peg$parseSolfegeFa();\n          if (s0 as any === peg$FAILED) {\n            if (input.substr(peg$currPos, 3).toLowerCase() === peg$c84) {\n              s0 = input.substr(peg$currPos, 3);\n              peg$currPos += 3;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c85); }\n            }\n            if (s0 as any === peg$FAILED) {\n              if (input.substr(peg$currPos, 2).toLowerCase() === peg$c86) {\n                s0 = input.substr(peg$currPos, 2);\n                peg$currPos += 2;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c87); }\n              }\n              if (s0 as any === peg$FAILED) {\n                if (input.substr(peg$currPos, 2).toLowerCase() === peg$c88) {\n                  s0 = input.substr(peg$currPos, 2);\n                  peg$currPos += 2;\n                } else {\n                  s0 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c89); }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseSolfegeFa(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (input.substr(peg$currPos, 2) === peg$c90) {\n      s1 = peg$c90;\n      peg$currPos += 2;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c91); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$currPos;\n      peg$silentFails++;\n      if (input.substr(peg$currPos, 2).toLowerCase() === peg$c92) {\n        s3 = input.substr(peg$currPos, 2);\n        peg$currPos += 2;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c93); }\n      }\n      if (s3 as any === peg$FAILED) {\n        if (input.substr(peg$currPos, 2).toLowerCase() === peg$c94) {\n          s3 = input.substr(peg$currPos, 2);\n          peg$currPos += 2;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c95); }\n        }\n      }\n      peg$silentFails--;\n      if (s3 as any === peg$FAILED) {\n        s2 = undefined;\n      } else {\n        peg$currPos = s2;\n        s2 = peg$FAILED;\n      }\n      if (s2 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c96();\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$currPos;\n      if (input.substr(peg$currPos, 2) === peg$c97) {\n        s1 = peg$c97;\n        peg$currPos += 2;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c98); }\n      }\n      if (s1 as any !== peg$FAILED) {\n        s2 = peg$currPos;\n        peg$silentFails++;\n        if (input.substr(peg$currPos, 2).toLowerCase() === peg$c92) {\n          s3 = input.substr(peg$currPos, 2);\n          peg$currPos += 2;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c93); }\n        }\n        if (s3 as any === peg$FAILED) {\n          if (input.substr(peg$currPos, 2).toLowerCase() === peg$c94) {\n            s3 = input.substr(peg$currPos, 2);\n            peg$currPos += 2;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c95); }\n          }\n        }\n        peg$silentFails--;\n        if (s3 as any === peg$FAILED) {\n          s2 = undefined;\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n        if (s2 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c99();\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordSolfegeBass(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 47) {\n      s1 = peg$c73;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c74); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseChordSolfegeRoot();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseChordAccidental();\n        if (s3 as any === peg$FAILED) {\n          s3 = null;\n        }\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c75(s2, s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseNumeral(): any {\n    let s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$parseChordAccidental();\n    if (s1 as any === peg$FAILED) {\n      s1 = null;\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseNumeralRoot();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseChordSuffix();\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parseNumeralBass();\n          if (s4 as any === peg$FAILED) {\n            s4 = null;\n          }\n          if (s4 as any !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c100(s1, s2, s3, s4);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parseNumeralBass();\n      if (s1 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c101(s1);\n      }\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseNumeralRoot(): any {\n    let s0;\n\n    if (input.substr(peg$currPos, 3).toLowerCase() === peg$c102) {\n      s0 = input.substr(peg$currPos, 3);\n      peg$currPos += 3;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c103); }\n    }\n    if (s0 as any === peg$FAILED) {\n      if (input.substr(peg$currPos, 3).toLowerCase() === peg$c104) {\n        s0 = input.substr(peg$currPos, 3);\n        peg$currPos += 3;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c105); }\n      }\n      if (s0 as any === peg$FAILED) {\n        if (input.substr(peg$currPos, 2).toLowerCase() === peg$c106) {\n          s0 = input.substr(peg$currPos, 2);\n          peg$currPos += 2;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c107); }\n        }\n        if (s0 as any === peg$FAILED) {\n          if (input.substr(peg$currPos, 2).toLowerCase() === peg$c108) {\n            s0 = input.substr(peg$currPos, 2);\n            peg$currPos += 2;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c109); }\n          }\n          if (s0 as any === peg$FAILED) {\n            if (input.substr(peg$currPos, 2).toLowerCase() === peg$c110) {\n              s0 = input.substr(peg$currPos, 2);\n              peg$currPos += 2;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c111); }\n            }\n            if (s0 as any === peg$FAILED) {\n              if (peg$c112.test(input.charAt(peg$currPos))) {\n                s0 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c113); }\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseNumeralBass(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 47) {\n      s1 = peg$c73;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c74); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseChordAccidental();\n      if (s2 as any === peg$FAILED) {\n        s2 = null;\n      }\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseNumeralRoot();\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c114(s2, s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseNumeric(): any {\n    let s0, s1, s2, s3, s4;\n\n    s0 = peg$currPos;\n    s1 = peg$parseChordAccidental();\n    if (s1 as any === peg$FAILED) {\n      s1 = null;\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseNumericRoot();\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseChordSuffix();\n        if (s3 as any !== peg$FAILED) {\n          s4 = peg$parseNumericBass();\n          if (s4 as any === peg$FAILED) {\n            s4 = null;\n          }\n          if (s4 as any !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c115(s1, s2, s3, s4);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$parseNumericBass();\n      if (s1 as any !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c116(s1);\n      }\n      s0 = s1;\n    }\n\n    return s0;\n  }\n\n  function peg$parseNumericRoot(): any {\n    let s0;\n\n    if (peg$c117.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c118); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseNumericBass(): any {\n    let s0, s1, s2, s3;\n\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 47) {\n      s1 = peg$c73;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c74); }\n    }\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseChordAccidental();\n      if (s2 as any === peg$FAILED) {\n        s2 = null;\n      }\n      if (s2 as any !== peg$FAILED) {\n        s3 = peg$parseNumericRoot();\n        if (s3 as any !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c114(s2, s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordSuffix(): any {\n    let s0;\n\n    s0 = peg$parseChordSuffix0();\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$parseChordSuffix1();\n      if (s0 as any === peg$FAILED) {\n        s0 = peg$parseChordSuffix2();\n        if (s0 as any === peg$FAILED) {\n          s0 = peg$parseChordSuffix3();\n          if (s0 as any === peg$FAILED) {\n            s0 = peg$parseChordSuffix4();\n            if (s0 as any === peg$FAILED) {\n              s0 = peg$parseChordSuffix5();\n              if (s0 as any === peg$FAILED) {\n                s0 = peg$parseChordSuffix6();\n                if (s0 as any === peg$FAILED) {\n                  s0 = peg$parseChordSuffix7();\n                  if (s0 as any === peg$FAILED) {\n                    s0 = peg$parseChordSuffix8();\n                    if (s0 as any === peg$FAILED) {\n                      s0 = peg$parseChordSuffix9();\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    if (s0 as any === peg$FAILED) {\n      s0 = null;\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordSuffix0(): any {\n    let s0;\n\n    if (input.substr(peg$currPos, 15) === peg$c119) {\n      s0 = peg$c119;\n      peg$currPos += 15;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c120); }\n    }\n    if (s0 as any === peg$FAILED) {\n      if (input.substr(peg$currPos, 12) === peg$c121) {\n        s0 = peg$c121;\n        peg$currPos += 12;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c122); }\n      }\n      if (s0 as any === peg$FAILED) {\n        if (input.substr(peg$currPos, 12) === peg$c123) {\n          s0 = peg$c123;\n          peg$currPos += 12;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c124); }\n        }\n        if (s0 as any === peg$FAILED) {\n          if (input.substr(peg$currPos, 11) === peg$c125) {\n            s0 = peg$c125;\n            peg$currPos += 11;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c126); }\n          }\n          if (s0 as any === peg$FAILED) {\n            if (input.substr(peg$currPos, 11) === peg$c127) {\n              s0 = peg$c127;\n              peg$currPos += 11;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c128); }\n            }\n            if (s0 as any === peg$FAILED) {\n              if (input.substr(peg$currPos, 11) === peg$c129) {\n                s0 = peg$c129;\n                peg$currPos += 11;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c130); }\n              }\n              if (s0 as any === peg$FAILED) {\n                if (input.substr(peg$currPos, 11) === peg$c131) {\n                  s0 = peg$c131;\n                  peg$currPos += 11;\n                } else {\n                  s0 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c132); }\n                }\n                if (s0 as any === peg$FAILED) {\n                  if (input.substr(peg$currPos, 11) === peg$c133) {\n                    s0 = peg$c133;\n                    peg$currPos += 11;\n                  } else {\n                    s0 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c134); }\n                  }\n                  if (s0 as any === peg$FAILED) {\n                    if (input.substr(peg$currPos, 11) === peg$c135) {\n                      s0 = peg$c135;\n                      peg$currPos += 11;\n                    } else {\n                      s0 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$c136); }\n                    }\n                    if (s0 as any === peg$FAILED) {\n                      if (input.substr(peg$currPos, 11) === peg$c137) {\n                        s0 = peg$c137;\n                        peg$currPos += 11;\n                      } else {\n                        s0 = peg$FAILED;\n                        if (peg$silentFails === 0) { peg$fail(peg$c138); }\n                      }\n                      if (s0 as any === peg$FAILED) {\n                        if (input.substr(peg$currPos, 11) === peg$c139) {\n                          s0 = peg$c139;\n                          peg$currPos += 11;\n                        } else {\n                          s0 = peg$FAILED;\n                          if (peg$silentFails === 0) { peg$fail(peg$c140); }\n                        }\n                        if (s0 as any === peg$FAILED) {\n                          if (input.substr(peg$currPos, 11) === peg$c141) {\n                            s0 = peg$c141;\n                            peg$currPos += 11;\n                          } else {\n                            s0 = peg$FAILED;\n                            if (peg$silentFails === 0) { peg$fail(peg$c142); }\n                          }\n                          if (s0 as any === peg$FAILED) {\n                            if (input.substr(peg$currPos, 11) === peg$c143) {\n                              s0 = peg$c143;\n                              peg$currPos += 11;\n                            } else {\n                              s0 = peg$FAILED;\n                              if (peg$silentFails === 0) { peg$fail(peg$c144); }\n                            }\n                            if (s0 as any === peg$FAILED) {\n                              if (input.substr(peg$currPos, 10) === peg$c145) {\n                                s0 = peg$c145;\n                                peg$currPos += 10;\n                              } else {\n                                s0 = peg$FAILED;\n                                if (peg$silentFails === 0) { peg$fail(peg$c146); }\n                              }\n                              if (s0 as any === peg$FAILED) {\n                                if (input.substr(peg$currPos, 10) === peg$c147) {\n                                  s0 = peg$c147;\n                                  peg$currPos += 10;\n                                } else {\n                                  s0 = peg$FAILED;\n                                  if (peg$silentFails === 0) { peg$fail(peg$c148); }\n                                }\n                                if (s0 as any === peg$FAILED) {\n                                  if (input.substr(peg$currPos, 10) === peg$c149) {\n                                    s0 = peg$c149;\n                                    peg$currPos += 10;\n                                  } else {\n                                    s0 = peg$FAILED;\n                                    if (peg$silentFails === 0) { peg$fail(peg$c150); }\n                                  }\n                                  if (s0 as any === peg$FAILED) {\n                                    if (input.substr(peg$currPos, 10) === peg$c151) {\n                                      s0 = peg$c151;\n                                      peg$currPos += 10;\n                                    } else {\n                                      s0 = peg$FAILED;\n                                      if (peg$silentFails === 0) { peg$fail(peg$c152); }\n                                    }\n                                    if (s0 as any === peg$FAILED) {\n                                      if (input.substr(peg$currPos, 10) === peg$c153) {\n                                        s0 = peg$c153;\n                                        peg$currPos += 10;\n                                      } else {\n                                        s0 = peg$FAILED;\n                                        if (peg$silentFails === 0) { peg$fail(peg$c154); }\n                                      }\n                                      if (s0 as any === peg$FAILED) {\n                                        if (input.substr(peg$currPos, 10) === peg$c155) {\n                                          s0 = peg$c155;\n                                          peg$currPos += 10;\n                                        } else {\n                                          s0 = peg$FAILED;\n                                          if (peg$silentFails === 0) { peg$fail(peg$c156); }\n                                        }\n                                        if (s0 as any === peg$FAILED) {\n                                          if (input.substr(peg$currPos, 10) === peg$c157) {\n                                            s0 = peg$c157;\n                                            peg$currPos += 10;\n                                          } else {\n                                            s0 = peg$FAILED;\n                                            if (peg$silentFails === 0) { peg$fail(peg$c158); }\n                                          }\n                                          if (s0 as any === peg$FAILED) {\n                                            if (input.substr(peg$currPos, 10) === peg$c159) {\n                                              s0 = peg$c159;\n                                              peg$currPos += 10;\n                                            } else {\n                                              s0 = peg$FAILED;\n                                              if (peg$silentFails === 0) { peg$fail(peg$c160); }\n                                            }\n                                            if (s0 as any === peg$FAILED) {\n                                              if (input.substr(peg$currPos, 10) === peg$c161) {\n                                                s0 = peg$c161;\n                                                peg$currPos += 10;\n                                              } else {\n                                                s0 = peg$FAILED;\n                                                if (peg$silentFails === 0) { peg$fail(peg$c162); }\n                                              }\n                                              if (s0 as any === peg$FAILED) {\n                                                if (input.substr(peg$currPos, 10) === peg$c163) {\n                                                  s0 = peg$c163;\n                                                  peg$currPos += 10;\n                                                } else {\n                                                  s0 = peg$FAILED;\n                                                  if (peg$silentFails === 0) { peg$fail(peg$c164); }\n                                                }\n                                                if (s0 as any === peg$FAILED) {\n                                                  if (input.substr(peg$currPos, 10) === peg$c165) {\n                                                    s0 = peg$c165;\n                                                    peg$currPos += 10;\n                                                  } else {\n                                                    s0 = peg$FAILED;\n                                                    if (peg$silentFails === 0) { peg$fail(peg$c166); }\n                                                  }\n                                                  if (s0 as any === peg$FAILED) {\n                                                    if (input.substr(peg$currPos, 10) === peg$c167) {\n                                                      s0 = peg$c167;\n                                                      peg$currPos += 10;\n                                                    } else {\n                                                      s0 = peg$FAILED;\n                                                      if (peg$silentFails === 0) { peg$fail(peg$c168); }\n                                                    }\n                                                    if (s0 as any === peg$FAILED) {\n                                                      if (input.substr(peg$currPos, 10) === peg$c169) {\n                                                        s0 = peg$c169;\n                                                        peg$currPos += 10;\n                                                      } else {\n                                                        s0 = peg$FAILED;\n                                                        if (peg$silentFails === 0) { peg$fail(peg$c170); }\n                                                      }\n                                                      if (s0 as any === peg$FAILED) {\n                                                        if (input.substr(peg$currPos, 10) === peg$c171) {\n                                                          s0 = peg$c171;\n                                                          peg$currPos += 10;\n                                                        } else {\n                                                          s0 = peg$FAILED;\n                                                          if (peg$silentFails === 0) { peg$fail(peg$c172); }\n                                                        }\n                                                        if (s0 as any === peg$FAILED) {\n                                                          if (input.substr(peg$currPos, 10) === peg$c173) {\n                                                            s0 = peg$c173;\n                                                            peg$currPos += 10;\n                                                          } else {\n                                                            s0 = peg$FAILED;\n                                                            if (peg$silentFails === 0) { peg$fail(peg$c174); }\n                                                          }\n                                                          if (s0 as any === peg$FAILED) {\n                                                            if (input.substr(peg$currPos, 10) === peg$c175) {\n                                                              s0 = peg$c175;\n                                                              peg$currPos += 10;\n                                                            } else {\n                                                              s0 = peg$FAILED;\n                                                              if (peg$silentFails === 0) { peg$fail(peg$c176); }\n                                                            }\n                                                            if (s0 as any === peg$FAILED) {\n                                                              if (input.substr(peg$currPos, 10) === peg$c177) {\n                                                                s0 = peg$c177;\n                                                                peg$currPos += 10;\n                                                              } else {\n                                                                s0 = peg$FAILED;\n                                                                if (peg$silentFails === 0) { peg$fail(peg$c178); }\n                                                              }\n                                                              if (s0 as any === peg$FAILED) {\n                                                                if (input.substr(peg$currPos, 10) === peg$c179) {\n                                                                  s0 = peg$c179;\n                                                                  peg$currPos += 10;\n                                                                } else {\n                                                                  s0 = peg$FAILED;\n                                                                  if (peg$silentFails === 0) { peg$fail(peg$c180); }\n                                                                }\n                                                                if (s0 as any === peg$FAILED) {\n                                                                  if (input.substr(peg$currPos, 10) === peg$c181) {\n                                                                    s0 = peg$c181;\n                                                                    peg$currPos += 10;\n                                                                  } else {\n                                                                    s0 = peg$FAILED;\n                                                                    if (peg$silentFails === 0) { peg$fail(peg$c182); }\n                                                                  }\n                                                                  if (s0 as any === peg$FAILED) {\n                                                                    if (input.substr(peg$currPos, 10) === peg$c183) {\n                                                                      s0 = peg$c183;\n                                                                      peg$currPos += 10;\n                                                                    } else {\n                                                                      s0 = peg$FAILED;\n                                                                      if (peg$silentFails === 0) { peg$fail(peg$c184); }\n                                                                    }\n                                                                    if (s0 as any === peg$FAILED) {\n                                                                      if (input.substr(peg$currPos, 10) === peg$c185) {\n                                                                        s0 = peg$c185;\n                                                                        peg$currPos += 10;\n                                                                      } else {\n                                                                        s0 = peg$FAILED;\n                                                                        if (peg$silentFails === 0) { peg$fail(peg$c186); }\n                                                                      }\n                                                                      if (s0 as any === peg$FAILED) {\n                                                                        if (input.substr(peg$currPos, 10) === peg$c187) {\n                                                                          s0 = peg$c187;\n                                                                          peg$currPos += 10;\n                                                                        } else {\n                                                                          s0 = peg$FAILED;\n                                                                          if (peg$silentFails === 0) { peg$fail(peg$c188); }\n                                                                        }\n                                                                        if (s0 as any === peg$FAILED) {\n                                                                          if (input.substr(peg$currPos, 10) === peg$c189) {\n                                                                            s0 = peg$c189;\n                                                                            peg$currPos += 10;\n                                                                          } else {\n                                                                            s0 = peg$FAILED;\n                                                                            if (peg$silentFails === 0) { peg$fail(peg$c190); }\n                                                                          }\n                                                                          if (s0 as any === peg$FAILED) {\n                                                                            if (input.substr(peg$currPos, 10) === peg$c191) {\n                                                                              s0 = peg$c191;\n                                                                              peg$currPos += 10;\n                                                                            } else {\n                                                                              s0 = peg$FAILED;\n                                                                              if (peg$silentFails === 0) { peg$fail(peg$c192); }\n                                                                            }\n                                                                            if (s0 as any === peg$FAILED) {\n                                                                              if (input.substr(peg$currPos, 10) === peg$c193) {\n                                                                                s0 = peg$c193;\n                                                                                peg$currPos += 10;\n                                                                              } else {\n                                                                                s0 = peg$FAILED;\n                                                                                if (peg$silentFails === 0) { peg$fail(peg$c194); }\n                                                                              }\n                                                                              if (s0 as any === peg$FAILED) {\n                                                                                if (input.substr(peg$currPos, 10) === peg$c195) {\n                                                                                  s0 = peg$c195;\n                                                                                  peg$currPos += 10;\n                                                                                } else {\n                                                                                  s0 = peg$FAILED;\n                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c196); }\n                                                                                }\n                                                                                if (s0 as any === peg$FAILED) {\n                                                                                  if (input.substr(peg$currPos, 10) === peg$c197) {\n                                                                                    s0 = peg$c197;\n                                                                                    peg$currPos += 10;\n                                                                                  } else {\n                                                                                    s0 = peg$FAILED;\n                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c198); }\n                                                                                  }\n                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                    if (input.substr(peg$currPos, 10) === peg$c199) {\n                                                                                      s0 = peg$c199;\n                                                                                      peg$currPos += 10;\n                                                                                    } else {\n                                                                                      s0 = peg$FAILED;\n                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c200); }\n                                                                                    }\n                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                      if (input.substr(peg$currPos, 10) === peg$c201) {\n                                                                                        s0 = peg$c201;\n                                                                                        peg$currPos += 10;\n                                                                                      } else {\n                                                                                        s0 = peg$FAILED;\n                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c202); }\n                                                                                      }\n                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                        if (input.substr(peg$currPos, 10) === peg$c203) {\n                                                                                          s0 = peg$c203;\n                                                                                          peg$currPos += 10;\n                                                                                        } else {\n                                                                                          s0 = peg$FAILED;\n                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c204); }\n                                                                                        }\n                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                          if (input.substr(peg$currPos, 10) === peg$c205) {\n                                                                                            s0 = peg$c205;\n                                                                                            peg$currPos += 10;\n                                                                                          } else {\n                                                                                            s0 = peg$FAILED;\n                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c206); }\n                                                                                          }\n                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                            if (input.substr(peg$currPos, 10) === peg$c207) {\n                                                                                              s0 = peg$c207;\n                                                                                              peg$currPos += 10;\n                                                                                            } else {\n                                                                                              s0 = peg$FAILED;\n                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c208); }\n                                                                                            }\n                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                              if (input.substr(peg$currPos, 10) === peg$c209) {\n                                                                                                s0 = peg$c209;\n                                                                                                peg$currPos += 10;\n                                                                                              } else {\n                                                                                                s0 = peg$FAILED;\n                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c210); }\n                                                                                              }\n                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                if (input.substr(peg$currPos, 10) === peg$c211) {\n                                                                                                  s0 = peg$c211;\n                                                                                                  peg$currPos += 10;\n                                                                                                } else {\n                                                                                                  s0 = peg$FAILED;\n                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c212); }\n                                                                                                }\n                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                  if (input.substr(peg$currPos, 9) === peg$c213) {\n                                                                                                    s0 = peg$c213;\n                                                                                                    peg$currPos += 9;\n                                                                                                  } else {\n                                                                                                    s0 = peg$FAILED;\n                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c214); }\n                                                                                                  }\n                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                    if (input.substr(peg$currPos, 9) === peg$c215) {\n                                                                                                      s0 = peg$c215;\n                                                                                                      peg$currPos += 9;\n                                                                                                    } else {\n                                                                                                      s0 = peg$FAILED;\n                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c216); }\n                                                                                                    }\n                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                      if (input.substr(peg$currPos, 9) === peg$c217) {\n                                                                                                        s0 = peg$c217;\n                                                                                                        peg$currPos += 9;\n                                                                                                      } else {\n                                                                                                        s0 = peg$FAILED;\n                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c218); }\n                                                                                                      }\n                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                        if (input.substr(peg$currPos, 9) === peg$c219) {\n                                                                                                          s0 = peg$c219;\n                                                                                                          peg$currPos += 9;\n                                                                                                        } else {\n                                                                                                          s0 = peg$FAILED;\n                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c220); }\n                                                                                                        }\n                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                          if (input.substr(peg$currPos, 9) === peg$c221) {\n                                                                                                            s0 = peg$c221;\n                                                                                                            peg$currPos += 9;\n                                                                                                          } else {\n                                                                                                            s0 = peg$FAILED;\n                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c222); }\n                                                                                                          }\n                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                            if (input.substr(peg$currPos, 9) === peg$c223) {\n                                                                                                              s0 = peg$c223;\n                                                                                                              peg$currPos += 9;\n                                                                                                            } else {\n                                                                                                              s0 = peg$FAILED;\n                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c224); }\n                                                                                                            }\n                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                              if (input.substr(peg$currPos, 9) === peg$c225) {\n                                                                                                                s0 = peg$c225;\n                                                                                                                peg$currPos += 9;\n                                                                                                              } else {\n                                                                                                                s0 = peg$FAILED;\n                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c226); }\n                                                                                                              }\n                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                if (input.substr(peg$currPos, 9) === peg$c227) {\n                                                                                                                  s0 = peg$c227;\n                                                                                                                  peg$currPos += 9;\n                                                                                                                } else {\n                                                                                                                  s0 = peg$FAILED;\n                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c228); }\n                                                                                                                }\n                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                  if (input.substr(peg$currPos, 9) === peg$c229) {\n                                                                                                                    s0 = peg$c229;\n                                                                                                                    peg$currPos += 9;\n                                                                                                                  } else {\n                                                                                                                    s0 = peg$FAILED;\n                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c230); }\n                                                                                                                  }\n                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                    if (input.substr(peg$currPos, 9) === peg$c231) {\n                                                                                                                      s0 = peg$c231;\n                                                                                                                      peg$currPos += 9;\n                                                                                                                    } else {\n                                                                                                                      s0 = peg$FAILED;\n                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c232); }\n                                                                                                                    }\n                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                      if (input.substr(peg$currPos, 9) === peg$c233) {\n                                                                                                                        s0 = peg$c233;\n                                                                                                                        peg$currPos += 9;\n                                                                                                                      } else {\n                                                                                                                        s0 = peg$FAILED;\n                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c234); }\n                                                                                                                      }\n                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                        if (input.substr(peg$currPos, 9) === peg$c235) {\n                                                                                                                          s0 = peg$c235;\n                                                                                                                          peg$currPos += 9;\n                                                                                                                        } else {\n                                                                                                                          s0 = peg$FAILED;\n                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c236); }\n                                                                                                                        }\n                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                          if (input.substr(peg$currPos, 9) === peg$c237) {\n                                                                                                                            s0 = peg$c237;\n                                                                                                                            peg$currPos += 9;\n                                                                                                                          } else {\n                                                                                                                            s0 = peg$FAILED;\n                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c238); }\n                                                                                                                          }\n                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                            if (input.substr(peg$currPos, 9) === peg$c239) {\n                                                                                                                              s0 = peg$c239;\n                                                                                                                              peg$currPos += 9;\n                                                                                                                            } else {\n                                                                                                                              s0 = peg$FAILED;\n                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c240); }\n                                                                                                                            }\n                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                              if (input.substr(peg$currPos, 9) === peg$c241) {\n                                                                                                                                s0 = peg$c241;\n                                                                                                                                peg$currPos += 9;\n                                                                                                                              } else {\n                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c242); }\n                                                                                                                              }\n                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                if (input.substr(peg$currPos, 9) === peg$c243) {\n                                                                                                                                  s0 = peg$c243;\n                                                                                                                                  peg$currPos += 9;\n                                                                                                                                } else {\n                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c244); }\n                                                                                                                                }\n                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                  if (input.substr(peg$currPos, 9) === peg$c245) {\n                                                                                                                                    s0 = peg$c245;\n                                                                                                                                    peg$currPos += 9;\n                                                                                                                                  } else {\n                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c246); }\n                                                                                                                                  }\n                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                    if (input.substr(peg$currPos, 9) === peg$c247) {\n                                                                                                                                      s0 = peg$c247;\n                                                                                                                                      peg$currPos += 9;\n                                                                                                                                    } else {\n                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c248); }\n                                                                                                                                    }\n                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                      if (input.substr(peg$currPos, 9) === peg$c249) {\n                                                                                                                                        s0 = peg$c249;\n                                                                                                                                        peg$currPos += 9;\n                                                                                                                                      } else {\n                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c250); }\n                                                                                                                                      }\n                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                        if (input.substr(peg$currPos, 9) === peg$c251) {\n                                                                                                                                          s0 = peg$c251;\n                                                                                                                                          peg$currPos += 9;\n                                                                                                                                        } else {\n                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c252); }\n                                                                                                                                        }\n                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                          if (input.substr(peg$currPos, 9) === peg$c253) {\n                                                                                                                                            s0 = peg$c253;\n                                                                                                                                            peg$currPos += 9;\n                                                                                                                                          } else {\n                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c254); }\n                                                                                                                                          }\n                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                            if (input.substr(peg$currPos, 9) === peg$c255) {\n                                                                                                                                              s0 = peg$c255;\n                                                                                                                                              peg$currPos += 9;\n                                                                                                                                            } else {\n                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c256); }\n                                                                                                                                            }\n                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                              if (input.substr(peg$currPos, 9) === peg$c257) {\n                                                                                                                                                s0 = peg$c257;\n                                                                                                                                                peg$currPos += 9;\n                                                                                                                                              } else {\n                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c258); }\n                                                                                                                                              }\n                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                if (input.substr(peg$currPos, 9) === peg$c259) {\n                                                                                                                                                  s0 = peg$c259;\n                                                                                                                                                  peg$currPos += 9;\n                                                                                                                                                } else {\n                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c260); }\n                                                                                                                                                }\n                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                  if (input.substr(peg$currPos, 9) === peg$c261) {\n                                                                                                                                                    s0 = peg$c261;\n                                                                                                                                                    peg$currPos += 9;\n                                                                                                                                                  } else {\n                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c262); }\n                                                                                                                                                  }\n                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                    if (input.substr(peg$currPos, 9) === peg$c263) {\n                                                                                                                                                      s0 = peg$c263;\n                                                                                                                                                      peg$currPos += 9;\n                                                                                                                                                    } else {\n                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c264); }\n                                                                                                                                                    }\n                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                      if (input.substr(peg$currPos, 9) === peg$c265) {\n                                                                                                                                                        s0 = peg$c265;\n                                                                                                                                                        peg$currPos += 9;\n                                                                                                                                                      } else {\n                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c266); }\n                                                                                                                                                      }\n                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                        if (input.substr(peg$currPos, 9) === peg$c267) {\n                                                                                                                                                          s0 = peg$c267;\n                                                                                                                                                          peg$currPos += 9;\n                                                                                                                                                        } else {\n                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c268); }\n                                                                                                                                                        }\n                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                          if (input.substr(peg$currPos, 9) === peg$c269) {\n                                                                                                                                                            s0 = peg$c269;\n                                                                                                                                                            peg$currPos += 9;\n                                                                                                                                                          } else {\n                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c270); }\n                                                                                                                                                          }\n                                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                                            if (input.substr(peg$currPos, 9) === peg$c271) {\n                                                                                                                                                              s0 = peg$c271;\n                                                                                                                                                              peg$currPos += 9;\n                                                                                                                                                            } else {\n                                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c272); }\n                                                                                                                                                            }\n                                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                                              if (input.substr(peg$currPos, 9) === peg$c273) {\n                                                                                                                                                                s0 = peg$c273;\n                                                                                                                                                                peg$currPos += 9;\n                                                                                                                                                              } else {\n                                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c274); }\n                                                                                                                                                              }\n                                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                                if (input.substr(peg$currPos, 9) === peg$c275) {\n                                                                                                                                                                  s0 = peg$c275;\n                                                                                                                                                                  peg$currPos += 9;\n                                                                                                                                                                } else {\n                                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c276); }\n                                                                                                                                                                }\n                                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                                  if (input.substr(peg$currPos, 9) === peg$c277) {\n                                                                                                                                                                    s0 = peg$c277;\n                                                                                                                                                                    peg$currPos += 9;\n                                                                                                                                                                  } else {\n                                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c278); }\n                                                                                                                                                                  }\n                                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                                    if (input.substr(peg$currPos, 9) === peg$c279) {\n                                                                                                                                                                      s0 = peg$c279;\n                                                                                                                                                                      peg$currPos += 9;\n                                                                                                                                                                    } else {\n                                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c280); }\n                                                                                                                                                                    }\n                                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                                      if (input.substr(peg$currPos, 9) === peg$c281) {\n                                                                                                                                                                        s0 = peg$c281;\n                                                                                                                                                                        peg$currPos += 9;\n                                                                                                                                                                      } else {\n                                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c282); }\n                                                                                                                                                                      }\n                                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                                        if (input.substr(peg$currPos, 9) === peg$c283) {\n                                                                                                                                                                          s0 = peg$c283;\n                                                                                                                                                                          peg$currPos += 9;\n                                                                                                                                                                        } else {\n                                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c284); }\n                                                                                                                                                                        }\n                                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                                          if (input.substr(peg$currPos, 9) === peg$c285) {\n                                                                                                                                                                            s0 = peg$c285;\n                                                                                                                                                                            peg$currPos += 9;\n                                                                                                                                                                          } else {\n                                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c286); }\n                                                                                                                                                                          }\n                                                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                                                            if (input.substr(peg$currPos, 9) === peg$c287) {\n                                                                                                                                                                              s0 = peg$c287;\n                                                                                                                                                                              peg$currPos += 9;\n                                                                                                                                                                            } else {\n                                                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c288); }\n                                                                                                                                                                            }\n                                                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                                                              if (input.substr(peg$currPos, 9) === peg$c289) {\n                                                                                                                                                                                s0 = peg$c289;\n                                                                                                                                                                                peg$currPos += 9;\n                                                                                                                                                                              } else {\n                                                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c290); }\n                                                                                                                                                                              }\n                                                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                if (input.substr(peg$currPos, 9) === peg$c291) {\n                                                                                                                                                                                  s0 = peg$c291;\n                                                                                                                                                                                  peg$currPos += 9;\n                                                                                                                                                                                } else {\n                                                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c292); }\n                                                                                                                                                                                }\n                                                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                  if (input.substr(peg$currPos, 9) === peg$c293) {\n                                                                                                                                                                                    s0 = peg$c293;\n                                                                                                                                                                                    peg$currPos += 9;\n                                                                                                                                                                                  } else {\n                                                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c294); }\n                                                                                                                                                                                  }\n                                                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                    if (input.substr(peg$currPos, 9) === peg$c295) {\n                                                                                                                                                                                      s0 = peg$c295;\n                                                                                                                                                                                      peg$currPos += 9;\n                                                                                                                                                                                    } else {\n                                                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c296); }\n                                                                                                                                                                                    }\n                                                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                      if (input.substr(peg$currPos, 9) === peg$c297) {\n                                                                                                                                                                                        s0 = peg$c297;\n                                                                                                                                                                                        peg$currPos += 9;\n                                                                                                                                                                                      } else {\n                                                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c298); }\n                                                                                                                                                                                      }\n                                                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                        if (input.substr(peg$currPos, 9) === peg$c299) {\n                                                                                                                                                                                          s0 = peg$c299;\n                                                                                                                                                                                          peg$currPos += 9;\n                                                                                                                                                                                        } else {\n                                                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c300); }\n                                                                                                                                                                                        }\n                                                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                          if (input.substr(peg$currPos, 9) === peg$c301) {\n                                                                                                                                                                                            s0 = peg$c301;\n                                                                                                                                                                                            peg$currPos += 9;\n                                                                                                                                                                                          } else {\n                                                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c302); }\n                                                                                                                                                                                          }\n                                                                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                            if (input.substr(peg$currPos, 9) === peg$c303) {\n                                                                                                                                                                                              s0 = peg$c303;\n                                                                                                                                                                                              peg$currPos += 9;\n                                                                                                                                                                                            } else {\n                                                                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c304); }\n                                                                                                                                                                                            }\n                                                                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                              if (input.substr(peg$currPos, 9) === peg$c305) {\n                                                                                                                                                                                                s0 = peg$c305;\n                                                                                                                                                                                                peg$currPos += 9;\n                                                                                                                                                                                              } else {\n                                                                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c306); }\n                                                                                                                                                                                              }\n                                                                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                if (input.substr(peg$currPos, 9) === peg$c307) {\n                                                                                                                                                                                                  s0 = peg$c307;\n                                                                                                                                                                                                  peg$currPos += 9;\n                                                                                                                                                                                                } else {\n                                                                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c308); }\n                                                                                                                                                                                                }\n                                                                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                  if (input.substr(peg$currPos, 9) === peg$c309) {\n                                                                                                                                                                                                    s0 = peg$c309;\n                                                                                                                                                                                                    peg$currPos += 9;\n                                                                                                                                                                                                  } else {\n                                                                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c310); }\n                                                                                                                                                                                                  }\n                                                                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                    if (input.substr(peg$currPos, 9) === peg$c311) {\n                                                                                                                                                                                                      s0 = peg$c311;\n                                                                                                                                                                                                      peg$currPos += 9;\n                                                                                                                                                                                                    } else {\n                                                                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c312); }\n                                                                                                                                                                                                    }\n                                                                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                      if (input.substr(peg$currPos, 9) === peg$c313) {\n                                                                                                                                                                                                        s0 = peg$c313;\n                                                                                                                                                                                                        peg$currPos += 9;\n                                                                                                                                                                                                      } else {\n                                                                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c314); }\n                                                                                                                                                                                                      }\n                                                                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                        if (input.substr(peg$currPos, 9) === peg$c315) {\n                                                                                                                                                                                                          s0 = peg$c315;\n                                                                                                                                                                                                          peg$currPos += 9;\n                                                                                                                                                                                                        } else {\n                                                                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c316); }\n                                                                                                                                                                                                        }\n                                                                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                          if (input.substr(peg$currPos, 9) === peg$c317) {\n                                                                                                                                                                                                            s0 = peg$c317;\n                                                                                                                                                                                                            peg$currPos += 9;\n                                                                                                                                                                                                          } else {\n                                                                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c318); }\n                                                                                                                                                                                                          }\n                                                                                                                                                                                                        }\n                                                                                                                                                                                                      }\n                                                                                                                                                                                                    }\n                                                                                                                                                                                                  }\n                                                                                                                                                                                                }\n                                                                                                                                                                                              }\n                                                                                                                                                                                            }\n                                                                                                                                                                                          }\n                                                                                                                                                                                        }\n                                                                                                                                                                                      }\n                                                                                                                                                                                    }\n                                                                                                                                                                                  }\n                                                                                                                                                                                }\n                                                                                                                                                                              }\n                                                                                                                                                                            }\n                                                                                                                                                                          }\n                                                                                                                                                                        }\n                                                                                                                                                                      }\n                                                                                                                                                                    }\n                                                                                                                                                                  }\n                                                                                                                                                                }\n                                                                                                                                                              }\n                                                                                                                                                            }\n                                                                                                                                                          }\n                                                                                                                                                        }\n                                                                                                                                                      }\n                                                                                                                                                    }\n                                                                                                                                                  }\n                                                                                                                                                }\n                                                                                                                                              }\n                                                                                                                                            }\n                                                                                                                                          }\n                                                                                                                                        }\n                                                                                                                                      }\n                                                                                                                                    }\n                                                                                                                                  }\n                                                                                                                                }\n                                                                                                                              }\n                                                                                                                            }\n                                                                                                                          }\n                                                                                                                        }\n                                                                                                                      }\n                                                                                                                    }\n                                                                                                                  }\n                                                                                                                }\n                                                                                                              }\n                                                                                                            }\n                                                                                                          }\n                                                                                                        }\n                                                                                                      }\n                                                                                                    }\n                                                                                                  }\n                                                                                                }\n                                                                                              }\n                                                                                            }\n                                                                                          }\n                                                                                        }\n                                                                                      }\n                                                                                    }\n                                                                                  }\n                                                                                }\n                                                                              }\n                                                                            }\n                                                                          }\n                                                                        }\n                                                                      }\n                                                                    }\n                                                                  }\n                                                                }\n                                                              }\n                                                            }\n                                                          }\n                                                        }\n                                                      }\n                                                    }\n                                                  }\n                                                }\n                                              }\n                                            }\n                                          }\n                                        }\n                                      }\n                                    }\n                                  }\n                                }\n                              }\n                            }\n                          }\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordSuffix1(): any {\n    let s0;\n\n    if (input.substr(peg$currPos, 9) === peg$c319) {\n      s0 = peg$c319;\n      peg$currPos += 9;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c320); }\n    }\n    if (s0 as any === peg$FAILED) {\n      if (input.substr(peg$currPos, 9) === peg$c321) {\n        s0 = peg$c321;\n        peg$currPos += 9;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c322); }\n      }\n      if (s0 as any === peg$FAILED) {\n        if (input.substr(peg$currPos, 9) === peg$c323) {\n          s0 = peg$c323;\n          peg$currPos += 9;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c324); }\n        }\n        if (s0 as any === peg$FAILED) {\n          if (input.substr(peg$currPos, 9) === peg$c325) {\n            s0 = peg$c325;\n            peg$currPos += 9;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c326); }\n          }\n          if (s0 as any === peg$FAILED) {\n            if (input.substr(peg$currPos, 9) === peg$c327) {\n              s0 = peg$c327;\n              peg$currPos += 9;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c328); }\n            }\n            if (s0 as any === peg$FAILED) {\n              if (input.substr(peg$currPos, 9) === peg$c329) {\n                s0 = peg$c329;\n                peg$currPos += 9;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c330); }\n              }\n              if (s0 as any === peg$FAILED) {\n                if (input.substr(peg$currPos, 9) === peg$c331) {\n                  s0 = peg$c331;\n                  peg$currPos += 9;\n                } else {\n                  s0 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c332); }\n                }\n                if (s0 as any === peg$FAILED) {\n                  if (input.substr(peg$currPos, 9) === peg$c333) {\n                    s0 = peg$c333;\n                    peg$currPos += 9;\n                  } else {\n                    s0 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c334); }\n                  }\n                  if (s0 as any === peg$FAILED) {\n                    if (input.substr(peg$currPos, 9) === peg$c335) {\n                      s0 = peg$c335;\n                      peg$currPos += 9;\n                    } else {\n                      s0 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$c336); }\n                    }\n                    if (s0 as any === peg$FAILED) {\n                      if (input.substr(peg$currPos, 9) === peg$c337) {\n                        s0 = peg$c337;\n                        peg$currPos += 9;\n                      } else {\n                        s0 = peg$FAILED;\n                        if (peg$silentFails === 0) { peg$fail(peg$c338); }\n                      }\n                      if (s0 as any === peg$FAILED) {\n                        if (input.substr(peg$currPos, 9) === peg$c339) {\n                          s0 = peg$c339;\n                          peg$currPos += 9;\n                        } else {\n                          s0 = peg$FAILED;\n                          if (peg$silentFails === 0) { peg$fail(peg$c340); }\n                        }\n                        if (s0 as any === peg$FAILED) {\n                          if (input.substr(peg$currPos, 9) === peg$c341) {\n                            s0 = peg$c341;\n                            peg$currPos += 9;\n                          } else {\n                            s0 = peg$FAILED;\n                            if (peg$silentFails === 0) { peg$fail(peg$c342); }\n                          }\n                          if (s0 as any === peg$FAILED) {\n                            if (input.substr(peg$currPos, 9) === peg$c343) {\n                              s0 = peg$c343;\n                              peg$currPos += 9;\n                            } else {\n                              s0 = peg$FAILED;\n                              if (peg$silentFails === 0) { peg$fail(peg$c344); }\n                            }\n                            if (s0 as any === peg$FAILED) {\n                              if (input.substr(peg$currPos, 9) === peg$c345) {\n                                s0 = peg$c345;\n                                peg$currPos += 9;\n                              } else {\n                                s0 = peg$FAILED;\n                                if (peg$silentFails === 0) { peg$fail(peg$c346); }\n                              }\n                              if (s0 as any === peg$FAILED) {\n                                if (input.substr(peg$currPos, 9) === peg$c347) {\n                                  s0 = peg$c347;\n                                  peg$currPos += 9;\n                                } else {\n                                  s0 = peg$FAILED;\n                                  if (peg$silentFails === 0) { peg$fail(peg$c348); }\n                                }\n                                if (s0 as any === peg$FAILED) {\n                                  if (input.substr(peg$currPos, 9) === peg$c349) {\n                                    s0 = peg$c349;\n                                    peg$currPos += 9;\n                                  } else {\n                                    s0 = peg$FAILED;\n                                    if (peg$silentFails === 0) { peg$fail(peg$c350); }\n                                  }\n                                  if (s0 as any === peg$FAILED) {\n                                    if (input.substr(peg$currPos, 8) === peg$c351) {\n                                      s0 = peg$c351;\n                                      peg$currPos += 8;\n                                    } else {\n                                      s0 = peg$FAILED;\n                                      if (peg$silentFails === 0) { peg$fail(peg$c352); }\n                                    }\n                                    if (s0 as any === peg$FAILED) {\n                                      if (input.substr(peg$currPos, 8) === peg$c353) {\n                                        s0 = peg$c353;\n                                        peg$currPos += 8;\n                                      } else {\n                                        s0 = peg$FAILED;\n                                        if (peg$silentFails === 0) { peg$fail(peg$c354); }\n                                      }\n                                      if (s0 as any === peg$FAILED) {\n                                        if (input.substr(peg$currPos, 8) === peg$c355) {\n                                          s0 = peg$c355;\n                                          peg$currPos += 8;\n                                        } else {\n                                          s0 = peg$FAILED;\n                                          if (peg$silentFails === 0) { peg$fail(peg$c356); }\n                                        }\n                                        if (s0 as any === peg$FAILED) {\n                                          if (input.substr(peg$currPos, 8) === peg$c357) {\n                                            s0 = peg$c357;\n                                            peg$currPos += 8;\n                                          } else {\n                                            s0 = peg$FAILED;\n                                            if (peg$silentFails === 0) { peg$fail(peg$c358); }\n                                          }\n                                          if (s0 as any === peg$FAILED) {\n                                            if (input.substr(peg$currPos, 8) === peg$c359) {\n                                              s0 = peg$c359;\n                                              peg$currPos += 8;\n                                            } else {\n                                              s0 = peg$FAILED;\n                                              if (peg$silentFails === 0) { peg$fail(peg$c360); }\n                                            }\n                                            if (s0 as any === peg$FAILED) {\n                                              if (input.substr(peg$currPos, 8) === peg$c361) {\n                                                s0 = peg$c361;\n                                                peg$currPos += 8;\n                                              } else {\n                                                s0 = peg$FAILED;\n                                                if (peg$silentFails === 0) { peg$fail(peg$c362); }\n                                              }\n                                              if (s0 as any === peg$FAILED) {\n                                                if (input.substr(peg$currPos, 8) === peg$c363) {\n                                                  s0 = peg$c363;\n                                                  peg$currPos += 8;\n                                                } else {\n                                                  s0 = peg$FAILED;\n                                                  if (peg$silentFails === 0) { peg$fail(peg$c364); }\n                                                }\n                                                if (s0 as any === peg$FAILED) {\n                                                  if (input.substr(peg$currPos, 8) === peg$c365) {\n                                                    s0 = peg$c365;\n                                                    peg$currPos += 8;\n                                                  } else {\n                                                    s0 = peg$FAILED;\n                                                    if (peg$silentFails === 0) { peg$fail(peg$c366); }\n                                                  }\n                                                  if (s0 as any === peg$FAILED) {\n                                                    if (input.substr(peg$currPos, 8) === peg$c367) {\n                                                      s0 = peg$c367;\n                                                      peg$currPos += 8;\n                                                    } else {\n                                                      s0 = peg$FAILED;\n                                                      if (peg$silentFails === 0) { peg$fail(peg$c368); }\n                                                    }\n                                                    if (s0 as any === peg$FAILED) {\n                                                      if (input.substr(peg$currPos, 8) === peg$c369) {\n                                                        s0 = peg$c369;\n                                                        peg$currPos += 8;\n                                                      } else {\n                                                        s0 = peg$FAILED;\n                                                        if (peg$silentFails === 0) { peg$fail(peg$c370); }\n                                                      }\n                                                      if (s0 as any === peg$FAILED) {\n                                                        if (input.substr(peg$currPos, 8) === peg$c371) {\n                                                          s0 = peg$c371;\n                                                          peg$currPos += 8;\n                                                        } else {\n                                                          s0 = peg$FAILED;\n                                                          if (peg$silentFails === 0) { peg$fail(peg$c372); }\n                                                        }\n                                                        if (s0 as any === peg$FAILED) {\n                                                          if (input.substr(peg$currPos, 8) === peg$c373) {\n                                                            s0 = peg$c373;\n                                                            peg$currPos += 8;\n                                                          } else {\n                                                            s0 = peg$FAILED;\n                                                            if (peg$silentFails === 0) { peg$fail(peg$c374); }\n                                                          }\n                                                          if (s0 as any === peg$FAILED) {\n                                                            if (input.substr(peg$currPos, 8) === peg$c375) {\n                                                              s0 = peg$c375;\n                                                              peg$currPos += 8;\n                                                            } else {\n                                                              s0 = peg$FAILED;\n                                                              if (peg$silentFails === 0) { peg$fail(peg$c376); }\n                                                            }\n                                                            if (s0 as any === peg$FAILED) {\n                                                              if (input.substr(peg$currPos, 8) === peg$c377) {\n                                                                s0 = peg$c377;\n                                                                peg$currPos += 8;\n                                                              } else {\n                                                                s0 = peg$FAILED;\n                                                                if (peg$silentFails === 0) { peg$fail(peg$c378); }\n                                                              }\n                                                              if (s0 as any === peg$FAILED) {\n                                                                if (input.substr(peg$currPos, 8) === peg$c379) {\n                                                                  s0 = peg$c379;\n                                                                  peg$currPos += 8;\n                                                                } else {\n                                                                  s0 = peg$FAILED;\n                                                                  if (peg$silentFails === 0) { peg$fail(peg$c380); }\n                                                                }\n                                                                if (s0 as any === peg$FAILED) {\n                                                                  if (input.substr(peg$currPos, 8) === peg$c381) {\n                                                                    s0 = peg$c381;\n                                                                    peg$currPos += 8;\n                                                                  } else {\n                                                                    s0 = peg$FAILED;\n                                                                    if (peg$silentFails === 0) { peg$fail(peg$c382); }\n                                                                  }\n                                                                  if (s0 as any === peg$FAILED) {\n                                                                    if (input.substr(peg$currPos, 8) === peg$c383) {\n                                                                      s0 = peg$c383;\n                                                                      peg$currPos += 8;\n                                                                    } else {\n                                                                      s0 = peg$FAILED;\n                                                                      if (peg$silentFails === 0) { peg$fail(peg$c384); }\n                                                                    }\n                                                                    if (s0 as any === peg$FAILED) {\n                                                                      if (input.substr(peg$currPos, 8) === peg$c385) {\n                                                                        s0 = peg$c385;\n                                                                        peg$currPos += 8;\n                                                                      } else {\n                                                                        s0 = peg$FAILED;\n                                                                        if (peg$silentFails === 0) { peg$fail(peg$c386); }\n                                                                      }\n                                                                      if (s0 as any === peg$FAILED) {\n                                                                        if (input.substr(peg$currPos, 8) === peg$c387) {\n                                                                          s0 = peg$c387;\n                                                                          peg$currPos += 8;\n                                                                        } else {\n                                                                          s0 = peg$FAILED;\n                                                                          if (peg$silentFails === 0) { peg$fail(peg$c388); }\n                                                                        }\n                                                                        if (s0 as any === peg$FAILED) {\n                                                                          if (input.substr(peg$currPos, 8) === peg$c389) {\n                                                                            s0 = peg$c389;\n                                                                            peg$currPos += 8;\n                                                                          } else {\n                                                                            s0 = peg$FAILED;\n                                                                            if (peg$silentFails === 0) { peg$fail(peg$c390); }\n                                                                          }\n                                                                          if (s0 as any === peg$FAILED) {\n                                                                            if (input.substr(peg$currPos, 8) === peg$c391) {\n                                                                              s0 = peg$c391;\n                                                                              peg$currPos += 8;\n                                                                            } else {\n                                                                              s0 = peg$FAILED;\n                                                                              if (peg$silentFails === 0) { peg$fail(peg$c392); }\n                                                                            }\n                                                                            if (s0 as any === peg$FAILED) {\n                                                                              if (input.substr(peg$currPos, 8) === peg$c393) {\n                                                                                s0 = peg$c393;\n                                                                                peg$currPos += 8;\n                                                                              } else {\n                                                                                s0 = peg$FAILED;\n                                                                                if (peg$silentFails === 0) { peg$fail(peg$c394); }\n                                                                              }\n                                                                              if (s0 as any === peg$FAILED) {\n                                                                                if (input.substr(peg$currPos, 8) === peg$c395) {\n                                                                                  s0 = peg$c395;\n                                                                                  peg$currPos += 8;\n                                                                                } else {\n                                                                                  s0 = peg$FAILED;\n                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c396); }\n                                                                                }\n                                                                                if (s0 as any === peg$FAILED) {\n                                                                                  if (input.substr(peg$currPos, 8) === peg$c397) {\n                                                                                    s0 = peg$c397;\n                                                                                    peg$currPos += 8;\n                                                                                  } else {\n                                                                                    s0 = peg$FAILED;\n                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c398); }\n                                                                                  }\n                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                    if (input.substr(peg$currPos, 8) === peg$c399) {\n                                                                                      s0 = peg$c399;\n                                                                                      peg$currPos += 8;\n                                                                                    } else {\n                                                                                      s0 = peg$FAILED;\n                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c400); }\n                                                                                    }\n                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                      if (input.substr(peg$currPos, 8) === peg$c401) {\n                                                                                        s0 = peg$c401;\n                                                                                        peg$currPos += 8;\n                                                                                      } else {\n                                                                                        s0 = peg$FAILED;\n                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c402); }\n                                                                                      }\n                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                        if (input.substr(peg$currPos, 8) === peg$c403) {\n                                                                                          s0 = peg$c403;\n                                                                                          peg$currPos += 8;\n                                                                                        } else {\n                                                                                          s0 = peg$FAILED;\n                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c404); }\n                                                                                        }\n                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                          if (input.substr(peg$currPos, 8) === peg$c405) {\n                                                                                            s0 = peg$c405;\n                                                                                            peg$currPos += 8;\n                                                                                          } else {\n                                                                                            s0 = peg$FAILED;\n                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c406); }\n                                                                                          }\n                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                            if (input.substr(peg$currPos, 8) === peg$c407) {\n                                                                                              s0 = peg$c407;\n                                                                                              peg$currPos += 8;\n                                                                                            } else {\n                                                                                              s0 = peg$FAILED;\n                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c408); }\n                                                                                            }\n                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                              if (input.substr(peg$currPos, 8) === peg$c409) {\n                                                                                                s0 = peg$c409;\n                                                                                                peg$currPos += 8;\n                                                                                              } else {\n                                                                                                s0 = peg$FAILED;\n                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c410); }\n                                                                                              }\n                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                if (input.substr(peg$currPos, 8) === peg$c411) {\n                                                                                                  s0 = peg$c411;\n                                                                                                  peg$currPos += 8;\n                                                                                                } else {\n                                                                                                  s0 = peg$FAILED;\n                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c412); }\n                                                                                                }\n                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                  if (input.substr(peg$currPos, 8) === peg$c413) {\n                                                                                                    s0 = peg$c413;\n                                                                                                    peg$currPos += 8;\n                                                                                                  } else {\n                                                                                                    s0 = peg$FAILED;\n                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c414); }\n                                                                                                  }\n                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                    if (input.substr(peg$currPos, 8) === peg$c415) {\n                                                                                                      s0 = peg$c415;\n                                                                                                      peg$currPos += 8;\n                                                                                                    } else {\n                                                                                                      s0 = peg$FAILED;\n                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c416); }\n                                                                                                    }\n                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                      if (input.substr(peg$currPos, 8) === peg$c417) {\n                                                                                                        s0 = peg$c417;\n                                                                                                        peg$currPos += 8;\n                                                                                                      } else {\n                                                                                                        s0 = peg$FAILED;\n                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c418); }\n                                                                                                      }\n                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                        if (input.substr(peg$currPos, 8) === peg$c419) {\n                                                                                                          s0 = peg$c419;\n                                                                                                          peg$currPos += 8;\n                                                                                                        } else {\n                                                                                                          s0 = peg$FAILED;\n                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c420); }\n                                                                                                        }\n                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                          if (input.substr(peg$currPos, 8) === peg$c421) {\n                                                                                                            s0 = peg$c421;\n                                                                                                            peg$currPos += 8;\n                                                                                                          } else {\n                                                                                                            s0 = peg$FAILED;\n                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c422); }\n                                                                                                          }\n                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                            if (input.substr(peg$currPos, 8) === peg$c423) {\n                                                                                                              s0 = peg$c423;\n                                                                                                              peg$currPos += 8;\n                                                                                                            } else {\n                                                                                                              s0 = peg$FAILED;\n                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c424); }\n                                                                                                            }\n                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                              if (input.substr(peg$currPos, 8) === peg$c425) {\n                                                                                                                s0 = peg$c425;\n                                                                                                                peg$currPos += 8;\n                                                                                                              } else {\n                                                                                                                s0 = peg$FAILED;\n                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c426); }\n                                                                                                              }\n                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                if (input.substr(peg$currPos, 8) === peg$c427) {\n                                                                                                                  s0 = peg$c427;\n                                                                                                                  peg$currPos += 8;\n                                                                                                                } else {\n                                                                                                                  s0 = peg$FAILED;\n                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c428); }\n                                                                                                                }\n                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                  if (input.substr(peg$currPos, 8) === peg$c429) {\n                                                                                                                    s0 = peg$c429;\n                                                                                                                    peg$currPos += 8;\n                                                                                                                  } else {\n                                                                                                                    s0 = peg$FAILED;\n                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c430); }\n                                                                                                                  }\n                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                    if (input.substr(peg$currPos, 8) === peg$c431) {\n                                                                                                                      s0 = peg$c431;\n                                                                                                                      peg$currPos += 8;\n                                                                                                                    } else {\n                                                                                                                      s0 = peg$FAILED;\n                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c432); }\n                                                                                                                    }\n                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                      if (input.substr(peg$currPos, 8) === peg$c433) {\n                                                                                                                        s0 = peg$c433;\n                                                                                                                        peg$currPos += 8;\n                                                                                                                      } else {\n                                                                                                                        s0 = peg$FAILED;\n                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c434); }\n                                                                                                                      }\n                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                        if (input.substr(peg$currPos, 8) === peg$c435) {\n                                                                                                                          s0 = peg$c435;\n                                                                                                                          peg$currPos += 8;\n                                                                                                                        } else {\n                                                                                                                          s0 = peg$FAILED;\n                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c436); }\n                                                                                                                        }\n                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                          if (input.substr(peg$currPos, 8) === peg$c437) {\n                                                                                                                            s0 = peg$c437;\n                                                                                                                            peg$currPos += 8;\n                                                                                                                          } else {\n                                                                                                                            s0 = peg$FAILED;\n                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c438); }\n                                                                                                                          }\n                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                            if (input.substr(peg$currPos, 8) === peg$c439) {\n                                                                                                                              s0 = peg$c439;\n                                                                                                                              peg$currPos += 8;\n                                                                                                                            } else {\n                                                                                                                              s0 = peg$FAILED;\n                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c440); }\n                                                                                                                            }\n                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                              if (input.substr(peg$currPos, 8) === peg$c441) {\n                                                                                                                                s0 = peg$c441;\n                                                                                                                                peg$currPos += 8;\n                                                                                                                              } else {\n                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c442); }\n                                                                                                                              }\n                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                if (input.substr(peg$currPos, 8) === peg$c443) {\n                                                                                                                                  s0 = peg$c443;\n                                                                                                                                  peg$currPos += 8;\n                                                                                                                                } else {\n                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c444); }\n                                                                                                                                }\n                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                  if (input.substr(peg$currPos, 8) === peg$c445) {\n                                                                                                                                    s0 = peg$c445;\n                                                                                                                                    peg$currPos += 8;\n                                                                                                                                  } else {\n                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c446); }\n                                                                                                                                  }\n                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                    if (input.substr(peg$currPos, 8) === peg$c447) {\n                                                                                                                                      s0 = peg$c447;\n                                                                                                                                      peg$currPos += 8;\n                                                                                                                                    } else {\n                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c448); }\n                                                                                                                                    }\n                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                      if (input.substr(peg$currPos, 8) === peg$c449) {\n                                                                                                                                        s0 = peg$c449;\n                                                                                                                                        peg$currPos += 8;\n                                                                                                                                      } else {\n                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c450); }\n                                                                                                                                      }\n                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                        if (input.substr(peg$currPos, 8) === peg$c451) {\n                                                                                                                                          s0 = peg$c451;\n                                                                                                                                          peg$currPos += 8;\n                                                                                                                                        } else {\n                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c452); }\n                                                                                                                                        }\n                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                          if (input.substr(peg$currPos, 8) === peg$c453) {\n                                                                                                                                            s0 = peg$c453;\n                                                                                                                                            peg$currPos += 8;\n                                                                                                                                          } else {\n                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c454); }\n                                                                                                                                          }\n                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                            if (input.substr(peg$currPos, 8) === peg$c455) {\n                                                                                                                                              s0 = peg$c455;\n                                                                                                                                              peg$currPos += 8;\n                                                                                                                                            } else {\n                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c456); }\n                                                                                                                                            }\n                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                              if (input.substr(peg$currPos, 8) === peg$c457) {\n                                                                                                                                                s0 = peg$c457;\n                                                                                                                                                peg$currPos += 8;\n                                                                                                                                              } else {\n                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c458); }\n                                                                                                                                              }\n                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                if (input.substr(peg$currPos, 8) === peg$c459) {\n                                                                                                                                                  s0 = peg$c459;\n                                                                                                                                                  peg$currPos += 8;\n                                                                                                                                                } else {\n                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c460); }\n                                                                                                                                                }\n                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                  if (input.substr(peg$currPos, 8) === peg$c461) {\n                                                                                                                                                    s0 = peg$c461;\n                                                                                                                                                    peg$currPos += 8;\n                                                                                                                                                  } else {\n                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c462); }\n                                                                                                                                                  }\n                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                    if (input.substr(peg$currPos, 8) === peg$c461) {\n                                                                                                                                                      s0 = peg$c461;\n                                                                                                                                                      peg$currPos += 8;\n                                                                                                                                                    } else {\n                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c462); }\n                                                                                                                                                    }\n                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                      if (input.substr(peg$currPos, 8) === peg$c463) {\n                                                                                                                                                        s0 = peg$c463;\n                                                                                                                                                        peg$currPos += 8;\n                                                                                                                                                      } else {\n                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c464); }\n                                                                                                                                                      }\n                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                        if (input.substr(peg$currPos, 8) === peg$c465) {\n                                                                                                                                                          s0 = peg$c465;\n                                                                                                                                                          peg$currPos += 8;\n                                                                                                                                                        } else {\n                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c466); }\n                                                                                                                                                        }\n                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                          if (input.substr(peg$currPos, 8) === peg$c467) {\n                                                                                                                                                            s0 = peg$c467;\n                                                                                                                                                            peg$currPos += 8;\n                                                                                                                                                          } else {\n                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c468); }\n                                                                                                                                                          }\n                                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                                            if (input.substr(peg$currPos, 8) === peg$c469) {\n                                                                                                                                                              s0 = peg$c469;\n                                                                                                                                                              peg$currPos += 8;\n                                                                                                                                                            } else {\n                                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c470); }\n                                                                                                                                                            }\n                                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                                              if (input.substr(peg$currPos, 8) === peg$c471) {\n                                                                                                                                                                s0 = peg$c471;\n                                                                                                                                                                peg$currPos += 8;\n                                                                                                                                                              } else {\n                                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c472); }\n                                                                                                                                                              }\n                                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                                if (input.substr(peg$currPos, 8) === peg$c473) {\n                                                                                                                                                                  s0 = peg$c473;\n                                                                                                                                                                  peg$currPos += 8;\n                                                                                                                                                                } else {\n                                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c474); }\n                                                                                                                                                                }\n                                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                                  if (input.substr(peg$currPos, 8) === peg$c475) {\n                                                                                                                                                                    s0 = peg$c475;\n                                                                                                                                                                    peg$currPos += 8;\n                                                                                                                                                                  } else {\n                                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c476); }\n                                                                                                                                                                  }\n                                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                                    if (input.substr(peg$currPos, 8) === peg$c477) {\n                                                                                                                                                                      s0 = peg$c477;\n                                                                                                                                                                      peg$currPos += 8;\n                                                                                                                                                                    } else {\n                                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c478); }\n                                                                                                                                                                    }\n                                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                                      if (input.substr(peg$currPos, 8) === peg$c479) {\n                                                                                                                                                                        s0 = peg$c479;\n                                                                                                                                                                        peg$currPos += 8;\n                                                                                                                                                                      } else {\n                                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c480); }\n                                                                                                                                                                      }\n                                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                                        if (input.substr(peg$currPos, 8) === peg$c481) {\n                                                                                                                                                                          s0 = peg$c481;\n                                                                                                                                                                          peg$currPos += 8;\n                                                                                                                                                                        } else {\n                                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c482); }\n                                                                                                                                                                        }\n                                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                                          if (input.substr(peg$currPos, 8) === peg$c483) {\n                                                                                                                                                                            s0 = peg$c483;\n                                                                                                                                                                            peg$currPos += 8;\n                                                                                                                                                                          } else {\n                                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c484); }\n                                                                                                                                                                          }\n                                                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                                                            if (input.substr(peg$currPos, 8) === peg$c485) {\n                                                                                                                                                                              s0 = peg$c485;\n                                                                                                                                                                              peg$currPos += 8;\n                                                                                                                                                                            } else {\n                                                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c486); }\n                                                                                                                                                                            }\n                                                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                                                              if (input.substr(peg$currPos, 8) === peg$c487) {\n                                                                                                                                                                                s0 = peg$c487;\n                                                                                                                                                                                peg$currPos += 8;\n                                                                                                                                                                              } else {\n                                                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c488); }\n                                                                                                                                                                              }\n                                                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                if (input.substr(peg$currPos, 8) === peg$c489) {\n                                                                                                                                                                                  s0 = peg$c489;\n                                                                                                                                                                                  peg$currPos += 8;\n                                                                                                                                                                                } else {\n                                                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c490); }\n                                                                                                                                                                                }\n                                                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                  if (input.substr(peg$currPos, 8) === peg$c491) {\n                                                                                                                                                                                    s0 = peg$c491;\n                                                                                                                                                                                    peg$currPos += 8;\n                                                                                                                                                                                  } else {\n                                                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c492); }\n                                                                                                                                                                                  }\n                                                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                    if (input.substr(peg$currPos, 8) === peg$c493) {\n                                                                                                                                                                                      s0 = peg$c493;\n                                                                                                                                                                                      peg$currPos += 8;\n                                                                                                                                                                                    } else {\n                                                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c494); }\n                                                                                                                                                                                    }\n                                                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                      if (input.substr(peg$currPos, 8) === peg$c495) {\n                                                                                                                                                                                        s0 = peg$c495;\n                                                                                                                                                                                        peg$currPos += 8;\n                                                                                                                                                                                      } else {\n                                                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c496); }\n                                                                                                                                                                                      }\n                                                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                        if (input.substr(peg$currPos, 8) === peg$c497) {\n                                                                                                                                                                                          s0 = peg$c497;\n                                                                                                                                                                                          peg$currPos += 8;\n                                                                                                                                                                                        } else {\n                                                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c498); }\n                                                                                                                                                                                        }\n                                                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                          if (input.substr(peg$currPos, 8) === peg$c499) {\n                                                                                                                                                                                            s0 = peg$c499;\n                                                                                                                                                                                            peg$currPos += 8;\n                                                                                                                                                                                          } else {\n                                                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c500); }\n                                                                                                                                                                                          }\n                                                                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                            if (input.substr(peg$currPos, 8) === peg$c501) {\n                                                                                                                                                                                              s0 = peg$c501;\n                                                                                                                                                                                              peg$currPos += 8;\n                                                                                                                                                                                            } else {\n                                                                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c502); }\n                                                                                                                                                                                            }\n                                                                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                              if (input.substr(peg$currPos, 8) === peg$c503) {\n                                                                                                                                                                                                s0 = peg$c503;\n                                                                                                                                                                                                peg$currPos += 8;\n                                                                                                                                                                                              } else {\n                                                                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c504); }\n                                                                                                                                                                                              }\n                                                                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                if (input.substr(peg$currPos, 8) === peg$c505) {\n                                                                                                                                                                                                  s0 = peg$c505;\n                                                                                                                                                                                                  peg$currPos += 8;\n                                                                                                                                                                                                } else {\n                                                                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c506); }\n                                                                                                                                                                                                }\n                                                                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                  if (input.substr(peg$currPos, 8) === peg$c507) {\n                                                                                                                                                                                                    s0 = peg$c507;\n                                                                                                                                                                                                    peg$currPos += 8;\n                                                                                                                                                                                                  } else {\n                                                                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c508); }\n                                                                                                                                                                                                  }\n                                                                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                    if (input.substr(peg$currPos, 8) === peg$c509) {\n                                                                                                                                                                                                      s0 = peg$c509;\n                                                                                                                                                                                                      peg$currPos += 8;\n                                                                                                                                                                                                    } else {\n                                                                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c510); }\n                                                                                                                                                                                                    }\n                                                                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                      if (input.substr(peg$currPos, 8) === peg$c511) {\n                                                                                                                                                                                                        s0 = peg$c511;\n                                                                                                                                                                                                        peg$currPos += 8;\n                                                                                                                                                                                                      } else {\n                                                                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c512); }\n                                                                                                                                                                                                      }\n                                                                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                        if (input.substr(peg$currPos, 8) === peg$c513) {\n                                                                                                                                                                                                          s0 = peg$c513;\n                                                                                                                                                                                                          peg$currPos += 8;\n                                                                                                                                                                                                        } else {\n                                                                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c514); }\n                                                                                                                                                                                                        }\n                                                                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                          if (input.substr(peg$currPos, 8) === peg$c515) {\n                                                                                                                                                                                                            s0 = peg$c515;\n                                                                                                                                                                                                            peg$currPos += 8;\n                                                                                                                                                                                                          } else {\n                                                                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c516); }\n                                                                                                                                                                                                          }\n                                                                                                                                                                                                        }\n                                                                                                                                                                                                      }\n                                                                                                                                                                                                    }\n                                                                                                                                                                                                  }\n                                                                                                                                                                                                }\n                                                                                                                                                                                              }\n                                                                                                                                                                                            }\n                                                                                                                                                                                          }\n                                                                                                                                                                                        }\n                                                                                                                                                                                      }\n                                                                                                                                                                                    }\n                                                                                                                                                                                  }\n                                                                                                                                                                                }\n                                                                                                                                                                              }\n                                                                                                                                                                            }\n                                                                                                                                                                          }\n                                                                                                                                                                        }\n                                                                                                                                                                      }\n                                                                                                                                                                    }\n                                                                                                                                                                  }\n                                                                                                                                                                }\n                                                                                                                                                              }\n                                                                                                                                                            }\n                                                                                                                                                          }\n                                                                                                                                                        }\n                                                                                                                                                      }\n                                                                                                                                                    }\n                                                                                                                                                  }\n                                                                                                                                                }\n                                                                                                                                              }\n                                                                                                                                            }\n                                                                                                                                          }\n                                                                                                                                        }\n                                                                                                                                      }\n                                                                                                                                    }\n                                                                                                                                  }\n                                                                                                                                }\n                                                                                                                              }\n                                                                                                                            }\n                                                                                                                          }\n                                                                                                                        }\n                                                                                                                      }\n                                                                                                                    }\n                                                                                                                  }\n                                                                                                                }\n                                                                                                              }\n                                                                                                            }\n                                                                                                          }\n                                                                                                        }\n                                                                                                      }\n                                                                                                    }\n                                                                                                  }\n                                                                                                }\n                                                                                              }\n                                                                                            }\n                                                                                          }\n                                                                                        }\n                                                                                      }\n                                                                                    }\n                                                                                  }\n                                                                                }\n                                                                              }\n                                                                            }\n                                                                          }\n                                                                        }\n                                                                      }\n                                                                    }\n                                                                  }\n                                                                }\n                                                              }\n                                                            }\n                                                          }\n                                                        }\n                                                      }\n                                                    }\n                                                  }\n                                                }\n                                              }\n                                            }\n                                          }\n                                        }\n                                      }\n                                    }\n                                  }\n                                }\n                              }\n                            }\n                          }\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordSuffix2(): any {\n    let s0;\n\n    if (input.substr(peg$currPos, 8) === peg$c517) {\n      s0 = peg$c517;\n      peg$currPos += 8;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c518); }\n    }\n    if (s0 as any === peg$FAILED) {\n      if (input.substr(peg$currPos, 8) === peg$c519) {\n        s0 = peg$c519;\n        peg$currPos += 8;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c520); }\n      }\n      if (s0 as any === peg$FAILED) {\n        if (input.substr(peg$currPos, 8) === peg$c521) {\n          s0 = peg$c521;\n          peg$currPos += 8;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c522); }\n        }\n        if (s0 as any === peg$FAILED) {\n          if (input.substr(peg$currPos, 8) === peg$c523) {\n            s0 = peg$c523;\n            peg$currPos += 8;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c524); }\n          }\n          if (s0 as any === peg$FAILED) {\n            if (input.substr(peg$currPos, 8) === peg$c525) {\n              s0 = peg$c525;\n              peg$currPos += 8;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c526); }\n            }\n            if (s0 as any === peg$FAILED) {\n              if (input.substr(peg$currPos, 8) === peg$c527) {\n                s0 = peg$c527;\n                peg$currPos += 8;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c528); }\n              }\n              if (s0 as any === peg$FAILED) {\n                if (input.substr(peg$currPos, 8) === peg$c529) {\n                  s0 = peg$c529;\n                  peg$currPos += 8;\n                } else {\n                  s0 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c530); }\n                }\n                if (s0 as any === peg$FAILED) {\n                  if (input.substr(peg$currPos, 8) === peg$c531) {\n                    s0 = peg$c531;\n                    peg$currPos += 8;\n                  } else {\n                    s0 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c532); }\n                  }\n                  if (s0 as any === peg$FAILED) {\n                    if (input.substr(peg$currPos, 8) === peg$c533) {\n                      s0 = peg$c533;\n                      peg$currPos += 8;\n                    } else {\n                      s0 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$c534); }\n                    }\n                    if (s0 as any === peg$FAILED) {\n                      if (input.substr(peg$currPos, 8) === peg$c535) {\n                        s0 = peg$c535;\n                        peg$currPos += 8;\n                      } else {\n                        s0 = peg$FAILED;\n                        if (peg$silentFails === 0) { peg$fail(peg$c536); }\n                      }\n                      if (s0 as any === peg$FAILED) {\n                        if (input.substr(peg$currPos, 8) === peg$c537) {\n                          s0 = peg$c537;\n                          peg$currPos += 8;\n                        } else {\n                          s0 = peg$FAILED;\n                          if (peg$silentFails === 0) { peg$fail(peg$c538); }\n                        }\n                        if (s0 as any === peg$FAILED) {\n                          if (input.substr(peg$currPos, 8) === peg$c539) {\n                            s0 = peg$c539;\n                            peg$currPos += 8;\n                          } else {\n                            s0 = peg$FAILED;\n                            if (peg$silentFails === 0) { peg$fail(peg$c540); }\n                          }\n                          if (s0 as any === peg$FAILED) {\n                            if (input.substr(peg$currPos, 8) === peg$c541) {\n                              s0 = peg$c541;\n                              peg$currPos += 8;\n                            } else {\n                              s0 = peg$FAILED;\n                              if (peg$silentFails === 0) { peg$fail(peg$c542); }\n                            }\n                            if (s0 as any === peg$FAILED) {\n                              if (input.substr(peg$currPos, 8) === peg$c543) {\n                                s0 = peg$c543;\n                                peg$currPos += 8;\n                              } else {\n                                s0 = peg$FAILED;\n                                if (peg$silentFails === 0) { peg$fail(peg$c544); }\n                              }\n                              if (s0 as any === peg$FAILED) {\n                                if (input.substr(peg$currPos, 8) === peg$c545) {\n                                  s0 = peg$c545;\n                                  peg$currPos += 8;\n                                } else {\n                                  s0 = peg$FAILED;\n                                  if (peg$silentFails === 0) { peg$fail(peg$c546); }\n                                }\n                                if (s0 as any === peg$FAILED) {\n                                  if (input.substr(peg$currPos, 8) === peg$c547) {\n                                    s0 = peg$c547;\n                                    peg$currPos += 8;\n                                  } else {\n                                    s0 = peg$FAILED;\n                                    if (peg$silentFails === 0) { peg$fail(peg$c548); }\n                                  }\n                                  if (s0 as any === peg$FAILED) {\n                                    if (input.substr(peg$currPos, 8) === peg$c549) {\n                                      s0 = peg$c549;\n                                      peg$currPos += 8;\n                                    } else {\n                                      s0 = peg$FAILED;\n                                      if (peg$silentFails === 0) { peg$fail(peg$c550); }\n                                    }\n                                    if (s0 as any === peg$FAILED) {\n                                      if (input.substr(peg$currPos, 8) === peg$c551) {\n                                        s0 = peg$c551;\n                                        peg$currPos += 8;\n                                      } else {\n                                        s0 = peg$FAILED;\n                                        if (peg$silentFails === 0) { peg$fail(peg$c552); }\n                                      }\n                                      if (s0 as any === peg$FAILED) {\n                                        if (input.substr(peg$currPos, 8) === peg$c553) {\n                                          s0 = peg$c553;\n                                          peg$currPos += 8;\n                                        } else {\n                                          s0 = peg$FAILED;\n                                          if (peg$silentFails === 0) { peg$fail(peg$c554); }\n                                        }\n                                        if (s0 as any === peg$FAILED) {\n                                          if (input.substr(peg$currPos, 8) === peg$c501) {\n                                            s0 = peg$c501;\n                                            peg$currPos += 8;\n                                          } else {\n                                            s0 = peg$FAILED;\n                                            if (peg$silentFails === 0) { peg$fail(peg$c502); }\n                                          }\n                                          if (s0 as any === peg$FAILED) {\n                                            if (input.substr(peg$currPos, 8) === peg$c555) {\n                                              s0 = peg$c555;\n                                              peg$currPos += 8;\n                                            } else {\n                                              s0 = peg$FAILED;\n                                              if (peg$silentFails === 0) { peg$fail(peg$c556); }\n                                            }\n                                            if (s0 as any === peg$FAILED) {\n                                              if (input.substr(peg$currPos, 8) === peg$c557) {\n                                                s0 = peg$c557;\n                                                peg$currPos += 8;\n                                              } else {\n                                                s0 = peg$FAILED;\n                                                if (peg$silentFails === 0) { peg$fail(peg$c558); }\n                                              }\n                                              if (s0 as any === peg$FAILED) {\n                                                if (input.substr(peg$currPos, 8) === peg$c559) {\n                                                  s0 = peg$c559;\n                                                  peg$currPos += 8;\n                                                } else {\n                                                  s0 = peg$FAILED;\n                                                  if (peg$silentFails === 0) { peg$fail(peg$c560); }\n                                                }\n                                                if (s0 as any === peg$FAILED) {\n                                                  if (input.substr(peg$currPos, 8) === peg$c561) {\n                                                    s0 = peg$c561;\n                                                    peg$currPos += 8;\n                                                  } else {\n                                                    s0 = peg$FAILED;\n                                                    if (peg$silentFails === 0) { peg$fail(peg$c562); }\n                                                  }\n                                                  if (s0 as any === peg$FAILED) {\n                                                    if (input.substr(peg$currPos, 8) === peg$c563) {\n                                                      s0 = peg$c563;\n                                                      peg$currPos += 8;\n                                                    } else {\n                                                      s0 = peg$FAILED;\n                                                      if (peg$silentFails === 0) { peg$fail(peg$c564); }\n                                                    }\n                                                    if (s0 as any === peg$FAILED) {\n                                                      if (input.substr(peg$currPos, 8) === peg$c565) {\n                                                        s0 = peg$c565;\n                                                        peg$currPos += 8;\n                                                      } else {\n                                                        s0 = peg$FAILED;\n                                                        if (peg$silentFails === 0) { peg$fail(peg$c566); }\n                                                      }\n                                                      if (s0 as any === peg$FAILED) {\n                                                        if (input.substr(peg$currPos, 8) === peg$c567) {\n                                                          s0 = peg$c567;\n                                                          peg$currPos += 8;\n                                                        } else {\n                                                          s0 = peg$FAILED;\n                                                          if (peg$silentFails === 0) { peg$fail(peg$c568); }\n                                                        }\n                                                        if (s0 as any === peg$FAILED) {\n                                                          if (input.substr(peg$currPos, 8) === peg$c569) {\n                                                            s0 = peg$c569;\n                                                            peg$currPos += 8;\n                                                          } else {\n                                                            s0 = peg$FAILED;\n                                                            if (peg$silentFails === 0) { peg$fail(peg$c570); }\n                                                          }\n                                                          if (s0 as any === peg$FAILED) {\n                                                            if (input.substr(peg$currPos, 8) === peg$c571) {\n                                                              s0 = peg$c571;\n                                                              peg$currPos += 8;\n                                                            } else {\n                                                              s0 = peg$FAILED;\n                                                              if (peg$silentFails === 0) { peg$fail(peg$c572); }\n                                                            }\n                                                            if (s0 as any === peg$FAILED) {\n                                                              if (input.substr(peg$currPos, 8) === peg$c573) {\n                                                                s0 = peg$c573;\n                                                                peg$currPos += 8;\n                                                              } else {\n                                                                s0 = peg$FAILED;\n                                                                if (peg$silentFails === 0) { peg$fail(peg$c574); }\n                                                              }\n                                                              if (s0 as any === peg$FAILED) {\n                                                                if (input.substr(peg$currPos, 7) === peg$c575) {\n                                                                  s0 = peg$c575;\n                                                                  peg$currPos += 7;\n                                                                } else {\n                                                                  s0 = peg$FAILED;\n                                                                  if (peg$silentFails === 0) { peg$fail(peg$c576); }\n                                                                }\n                                                                if (s0 as any === peg$FAILED) {\n                                                                  if (input.substr(peg$currPos, 7) === peg$c577) {\n                                                                    s0 = peg$c577;\n                                                                    peg$currPos += 7;\n                                                                  } else {\n                                                                    s0 = peg$FAILED;\n                                                                    if (peg$silentFails === 0) { peg$fail(peg$c578); }\n                                                                  }\n                                                                  if (s0 as any === peg$FAILED) {\n                                                                    if (input.substr(peg$currPos, 7) === peg$c579) {\n                                                                      s0 = peg$c579;\n                                                                      peg$currPos += 7;\n                                                                    } else {\n                                                                      s0 = peg$FAILED;\n                                                                      if (peg$silentFails === 0) { peg$fail(peg$c580); }\n                                                                    }\n                                                                    if (s0 as any === peg$FAILED) {\n                                                                      if (input.substr(peg$currPos, 7) === peg$c581) {\n                                                                        s0 = peg$c581;\n                                                                        peg$currPos += 7;\n                                                                      } else {\n                                                                        s0 = peg$FAILED;\n                                                                        if (peg$silentFails === 0) { peg$fail(peg$c582); }\n                                                                      }\n                                                                      if (s0 as any === peg$FAILED) {\n                                                                        if (input.substr(peg$currPos, 7) === peg$c583) {\n                                                                          s0 = peg$c583;\n                                                                          peg$currPos += 7;\n                                                                        } else {\n                                                                          s0 = peg$FAILED;\n                                                                          if (peg$silentFails === 0) { peg$fail(peg$c584); }\n                                                                        }\n                                                                        if (s0 as any === peg$FAILED) {\n                                                                          if (input.substr(peg$currPos, 7) === peg$c585) {\n                                                                            s0 = peg$c585;\n                                                                            peg$currPos += 7;\n                                                                          } else {\n                                                                            s0 = peg$FAILED;\n                                                                            if (peg$silentFails === 0) { peg$fail(peg$c586); }\n                                                                          }\n                                                                          if (s0 as any === peg$FAILED) {\n                                                                            if (input.substr(peg$currPos, 7) === peg$c587) {\n                                                                              s0 = peg$c587;\n                                                                              peg$currPos += 7;\n                                                                            } else {\n                                                                              s0 = peg$FAILED;\n                                                                              if (peg$silentFails === 0) { peg$fail(peg$c588); }\n                                                                            }\n                                                                            if (s0 as any === peg$FAILED) {\n                                                                              if (input.substr(peg$currPos, 7) === peg$c589) {\n                                                                                s0 = peg$c589;\n                                                                                peg$currPos += 7;\n                                                                              } else {\n                                                                                s0 = peg$FAILED;\n                                                                                if (peg$silentFails === 0) { peg$fail(peg$c590); }\n                                                                              }\n                                                                              if (s0 as any === peg$FAILED) {\n                                                                                if (input.substr(peg$currPos, 7) === peg$c591) {\n                                                                                  s0 = peg$c591;\n                                                                                  peg$currPos += 7;\n                                                                                } else {\n                                                                                  s0 = peg$FAILED;\n                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c592); }\n                                                                                }\n                                                                                if (s0 as any === peg$FAILED) {\n                                                                                  if (input.substr(peg$currPos, 7) === peg$c593) {\n                                                                                    s0 = peg$c593;\n                                                                                    peg$currPos += 7;\n                                                                                  } else {\n                                                                                    s0 = peg$FAILED;\n                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c594); }\n                                                                                  }\n                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                    if (input.substr(peg$currPos, 7) === peg$c595) {\n                                                                                      s0 = peg$c595;\n                                                                                      peg$currPos += 7;\n                                                                                    } else {\n                                                                                      s0 = peg$FAILED;\n                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c596); }\n                                                                                    }\n                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                      if (input.substr(peg$currPos, 7) === peg$c597) {\n                                                                                        s0 = peg$c597;\n                                                                                        peg$currPos += 7;\n                                                                                      } else {\n                                                                                        s0 = peg$FAILED;\n                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c598); }\n                                                                                      }\n                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                        if (input.substr(peg$currPos, 7) === peg$c599) {\n                                                                                          s0 = peg$c599;\n                                                                                          peg$currPos += 7;\n                                                                                        } else {\n                                                                                          s0 = peg$FAILED;\n                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c600); }\n                                                                                        }\n                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                          if (input.substr(peg$currPos, 7) === peg$c601) {\n                                                                                            s0 = peg$c601;\n                                                                                            peg$currPos += 7;\n                                                                                          } else {\n                                                                                            s0 = peg$FAILED;\n                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c602); }\n                                                                                          }\n                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                            if (input.substr(peg$currPos, 7) === peg$c603) {\n                                                                                              s0 = peg$c603;\n                                                                                              peg$currPos += 7;\n                                                                                            } else {\n                                                                                              s0 = peg$FAILED;\n                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c604); }\n                                                                                            }\n                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                              if (input.substr(peg$currPos, 7) === peg$c605) {\n                                                                                                s0 = peg$c605;\n                                                                                                peg$currPos += 7;\n                                                                                              } else {\n                                                                                                s0 = peg$FAILED;\n                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c606); }\n                                                                                              }\n                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                if (input.substr(peg$currPos, 7) === peg$c607) {\n                                                                                                  s0 = peg$c607;\n                                                                                                  peg$currPos += 7;\n                                                                                                } else {\n                                                                                                  s0 = peg$FAILED;\n                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c608); }\n                                                                                                }\n                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                  if (input.substr(peg$currPos, 7) === peg$c609) {\n                                                                                                    s0 = peg$c609;\n                                                                                                    peg$currPos += 7;\n                                                                                                  } else {\n                                                                                                    s0 = peg$FAILED;\n                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c610); }\n                                                                                                  }\n                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                    if (input.substr(peg$currPos, 7) === peg$c611) {\n                                                                                                      s0 = peg$c611;\n                                                                                                      peg$currPos += 7;\n                                                                                                    } else {\n                                                                                                      s0 = peg$FAILED;\n                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c612); }\n                                                                                                    }\n                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                      if (input.substr(peg$currPos, 7) === peg$c613) {\n                                                                                                        s0 = peg$c613;\n                                                                                                        peg$currPos += 7;\n                                                                                                      } else {\n                                                                                                        s0 = peg$FAILED;\n                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c614); }\n                                                                                                      }\n                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                        if (input.substr(peg$currPos, 7) === peg$c615) {\n                                                                                                          s0 = peg$c615;\n                                                                                                          peg$currPos += 7;\n                                                                                                        } else {\n                                                                                                          s0 = peg$FAILED;\n                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c616); }\n                                                                                                        }\n                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                          if (input.substr(peg$currPos, 7) === peg$c617) {\n                                                                                                            s0 = peg$c617;\n                                                                                                            peg$currPos += 7;\n                                                                                                          } else {\n                                                                                                            s0 = peg$FAILED;\n                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c618); }\n                                                                                                          }\n                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                            if (input.substr(peg$currPos, 7) === peg$c619) {\n                                                                                                              s0 = peg$c619;\n                                                                                                              peg$currPos += 7;\n                                                                                                            } else {\n                                                                                                              s0 = peg$FAILED;\n                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c620); }\n                                                                                                            }\n                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                              if (input.substr(peg$currPos, 7) === peg$c621) {\n                                                                                                                s0 = peg$c621;\n                                                                                                                peg$currPos += 7;\n                                                                                                              } else {\n                                                                                                                s0 = peg$FAILED;\n                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c622); }\n                                                                                                              }\n                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                if (input.substr(peg$currPos, 7) === peg$c623) {\n                                                                                                                  s0 = peg$c623;\n                                                                                                                  peg$currPos += 7;\n                                                                                                                } else {\n                                                                                                                  s0 = peg$FAILED;\n                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c624); }\n                                                                                                                }\n                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                  if (input.substr(peg$currPos, 7) === peg$c625) {\n                                                                                                                    s0 = peg$c625;\n                                                                                                                    peg$currPos += 7;\n                                                                                                                  } else {\n                                                                                                                    s0 = peg$FAILED;\n                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c626); }\n                                                                                                                  }\n                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                    if (input.substr(peg$currPos, 7) === peg$c627) {\n                                                                                                                      s0 = peg$c627;\n                                                                                                                      peg$currPos += 7;\n                                                                                                                    } else {\n                                                                                                                      s0 = peg$FAILED;\n                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c628); }\n                                                                                                                    }\n                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                      if (input.substr(peg$currPos, 7) === peg$c629) {\n                                                                                                                        s0 = peg$c629;\n                                                                                                                        peg$currPos += 7;\n                                                                                                                      } else {\n                                                                                                                        s0 = peg$FAILED;\n                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c630); }\n                                                                                                                      }\n                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                        if (input.substr(peg$currPos, 7) === peg$c631) {\n                                                                                                                          s0 = peg$c631;\n                                                                                                                          peg$currPos += 7;\n                                                                                                                        } else {\n                                                                                                                          s0 = peg$FAILED;\n                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c632); }\n                                                                                                                        }\n                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                          if (input.substr(peg$currPos, 7) === peg$c633) {\n                                                                                                                            s0 = peg$c633;\n                                                                                                                            peg$currPos += 7;\n                                                                                                                          } else {\n                                                                                                                            s0 = peg$FAILED;\n                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c634); }\n                                                                                                                          }\n                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                            if (input.substr(peg$currPos, 7) === peg$c635) {\n                                                                                                                              s0 = peg$c635;\n                                                                                                                              peg$currPos += 7;\n                                                                                                                            } else {\n                                                                                                                              s0 = peg$FAILED;\n                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c636); }\n                                                                                                                            }\n                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                              if (input.substr(peg$currPos, 7) === peg$c637) {\n                                                                                                                                s0 = peg$c637;\n                                                                                                                                peg$currPos += 7;\n                                                                                                                              } else {\n                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c638); }\n                                                                                                                              }\n                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                if (input.substr(peg$currPos, 7) === peg$c639) {\n                                                                                                                                  s0 = peg$c639;\n                                                                                                                                  peg$currPos += 7;\n                                                                                                                                } else {\n                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c640); }\n                                                                                                                                }\n                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                  if (input.substr(peg$currPos, 7) === peg$c641) {\n                                                                                                                                    s0 = peg$c641;\n                                                                                                                                    peg$currPos += 7;\n                                                                                                                                  } else {\n                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c642); }\n                                                                                                                                  }\n                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                    if (input.substr(peg$currPos, 7) === peg$c643) {\n                                                                                                                                      s0 = peg$c643;\n                                                                                                                                      peg$currPos += 7;\n                                                                                                                                    } else {\n                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c644); }\n                                                                                                                                    }\n                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                      if (input.substr(peg$currPos, 7) === peg$c645) {\n                                                                                                                                        s0 = peg$c645;\n                                                                                                                                        peg$currPos += 7;\n                                                                                                                                      } else {\n                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c646); }\n                                                                                                                                      }\n                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                        if (input.substr(peg$currPos, 7) === peg$c647) {\n                                                                                                                                          s0 = peg$c647;\n                                                                                                                                          peg$currPos += 7;\n                                                                                                                                        } else {\n                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c648); }\n                                                                                                                                        }\n                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                          if (input.substr(peg$currPos, 7) === peg$c649) {\n                                                                                                                                            s0 = peg$c649;\n                                                                                                                                            peg$currPos += 7;\n                                                                                                                                          } else {\n                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c650); }\n                                                                                                                                          }\n                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                            if (input.substr(peg$currPos, 7) === peg$c651) {\n                                                                                                                                              s0 = peg$c651;\n                                                                                                                                              peg$currPos += 7;\n                                                                                                                                            } else {\n                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c652); }\n                                                                                                                                            }\n                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                              if (input.substr(peg$currPos, 7) === peg$c653) {\n                                                                                                                                                s0 = peg$c653;\n                                                                                                                                                peg$currPos += 7;\n                                                                                                                                              } else {\n                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c654); }\n                                                                                                                                              }\n                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                if (input.substr(peg$currPos, 7) === peg$c655) {\n                                                                                                                                                  s0 = peg$c655;\n                                                                                                                                                  peg$currPos += 7;\n                                                                                                                                                } else {\n                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c656); }\n                                                                                                                                                }\n                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                  if (input.substr(peg$currPos, 7) === peg$c657) {\n                                                                                                                                                    s0 = peg$c657;\n                                                                                                                                                    peg$currPos += 7;\n                                                                                                                                                  } else {\n                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c658); }\n                                                                                                                                                  }\n                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                    if (input.substr(peg$currPos, 7) === peg$c659) {\n                                                                                                                                                      s0 = peg$c659;\n                                                                                                                                                      peg$currPos += 7;\n                                                                                                                                                    } else {\n                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c660); }\n                                                                                                                                                    }\n                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                      if (input.substr(peg$currPos, 7) === peg$c661) {\n                                                                                                                                                        s0 = peg$c661;\n                                                                                                                                                        peg$currPos += 7;\n                                                                                                                                                      } else {\n                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c662); }\n                                                                                                                                                      }\n                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                        if (input.substr(peg$currPos, 7) === peg$c663) {\n                                                                                                                                                          s0 = peg$c663;\n                                                                                                                                                          peg$currPos += 7;\n                                                                                                                                                        } else {\n                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c664); }\n                                                                                                                                                        }\n                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                          if (input.substr(peg$currPos, 7) === peg$c665) {\n                                                                                                                                                            s0 = peg$c665;\n                                                                                                                                                            peg$currPos += 7;\n                                                                                                                                                          } else {\n                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c666); }\n                                                                                                                                                          }\n                                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                                            if (input.substr(peg$currPos, 7) === peg$c667) {\n                                                                                                                                                              s0 = peg$c667;\n                                                                                                                                                              peg$currPos += 7;\n                                                                                                                                                            } else {\n                                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c668); }\n                                                                                                                                                            }\n                                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                                              if (input.substr(peg$currPos, 7) === peg$c669) {\n                                                                                                                                                                s0 = peg$c669;\n                                                                                                                                                                peg$currPos += 7;\n                                                                                                                                                              } else {\n                                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c670); }\n                                                                                                                                                              }\n                                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                                if (input.substr(peg$currPos, 7) === peg$c671) {\n                                                                                                                                                                  s0 = peg$c671;\n                                                                                                                                                                  peg$currPos += 7;\n                                                                                                                                                                } else {\n                                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c672); }\n                                                                                                                                                                }\n                                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                                  if (input.substr(peg$currPos, 7) === peg$c673) {\n                                                                                                                                                                    s0 = peg$c673;\n                                                                                                                                                                    peg$currPos += 7;\n                                                                                                                                                                  } else {\n                                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c674); }\n                                                                                                                                                                  }\n                                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                                    if (input.substr(peg$currPos, 7) === peg$c675) {\n                                                                                                                                                                      s0 = peg$c675;\n                                                                                                                                                                      peg$currPos += 7;\n                                                                                                                                                                    } else {\n                                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c676); }\n                                                                                                                                                                    }\n                                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                                      if (input.substr(peg$currPos, 7) === peg$c677) {\n                                                                                                                                                                        s0 = peg$c677;\n                                                                                                                                                                        peg$currPos += 7;\n                                                                                                                                                                      } else {\n                                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c678); }\n                                                                                                                                                                      }\n                                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                                        if (input.substr(peg$currPos, 7) === peg$c679) {\n                                                                                                                                                                          s0 = peg$c679;\n                                                                                                                                                                          peg$currPos += 7;\n                                                                                                                                                                        } else {\n                                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c680); }\n                                                                                                                                                                        }\n                                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                                          if (input.substr(peg$currPos, 7) === peg$c679) {\n                                                                                                                                                                            s0 = peg$c679;\n                                                                                                                                                                            peg$currPos += 7;\n                                                                                                                                                                          } else {\n                                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c680); }\n                                                                                                                                                                          }\n                                                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                                                            if (input.substr(peg$currPos, 7) === peg$c681) {\n                                                                                                                                                                              s0 = peg$c681;\n                                                                                                                                                                              peg$currPos += 7;\n                                                                                                                                                                            } else {\n                                                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c682); }\n                                                                                                                                                                            }\n                                                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                                                              if (input.substr(peg$currPos, 7) === peg$c683) {\n                                                                                                                                                                                s0 = peg$c683;\n                                                                                                                                                                                peg$currPos += 7;\n                                                                                                                                                                              } else {\n                                                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c684); }\n                                                                                                                                                                              }\n                                                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                if (input.substr(peg$currPos, 7) === peg$c685) {\n                                                                                                                                                                                  s0 = peg$c685;\n                                                                                                                                                                                  peg$currPos += 7;\n                                                                                                                                                                                } else {\n                                                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c686); }\n                                                                                                                                                                                }\n                                                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                  if (input.substr(peg$currPos, 7) === peg$c687) {\n                                                                                                                                                                                    s0 = peg$c687;\n                                                                                                                                                                                    peg$currPos += 7;\n                                                                                                                                                                                  } else {\n                                                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c688); }\n                                                                                                                                                                                  }\n                                                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                    if (input.substr(peg$currPos, 7) === peg$c689) {\n                                                                                                                                                                                      s0 = peg$c689;\n                                                                                                                                                                                      peg$currPos += 7;\n                                                                                                                                                                                    } else {\n                                                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c690); }\n                                                                                                                                                                                    }\n                                                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                      if (input.substr(peg$currPos, 7) === peg$c691) {\n                                                                                                                                                                                        s0 = peg$c691;\n                                                                                                                                                                                        peg$currPos += 7;\n                                                                                                                                                                                      } else {\n                                                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c692); }\n                                                                                                                                                                                      }\n                                                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                        if (input.substr(peg$currPos, 7) === peg$c693) {\n                                                                                                                                                                                          s0 = peg$c693;\n                                                                                                                                                                                          peg$currPos += 7;\n                                                                                                                                                                                        } else {\n                                                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c694); }\n                                                                                                                                                                                        }\n                                                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                          if (input.substr(peg$currPos, 7) === peg$c695) {\n                                                                                                                                                                                            s0 = peg$c695;\n                                                                                                                                                                                            peg$currPos += 7;\n                                                                                                                                                                                          } else {\n                                                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c696); }\n                                                                                                                                                                                          }\n                                                                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                            if (input.substr(peg$currPos, 7) === peg$c697) {\n                                                                                                                                                                                              s0 = peg$c697;\n                                                                                                                                                                                              peg$currPos += 7;\n                                                                                                                                                                                            } else {\n                                                                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c698); }\n                                                                                                                                                                                            }\n                                                                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                              if (input.substr(peg$currPos, 7) === peg$c699) {\n                                                                                                                                                                                                s0 = peg$c699;\n                                                                                                                                                                                                peg$currPos += 7;\n                                                                                                                                                                                              } else {\n                                                                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c700); }\n                                                                                                                                                                                              }\n                                                                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                if (input.substr(peg$currPos, 7) === peg$c701) {\n                                                                                                                                                                                                  s0 = peg$c701;\n                                                                                                                                                                                                  peg$currPos += 7;\n                                                                                                                                                                                                } else {\n                                                                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c702); }\n                                                                                                                                                                                                }\n                                                                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                  if (input.substr(peg$currPos, 7) === peg$c703) {\n                                                                                                                                                                                                    s0 = peg$c703;\n                                                                                                                                                                                                    peg$currPos += 7;\n                                                                                                                                                                                                  } else {\n                                                                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c704); }\n                                                                                                                                                                                                  }\n                                                                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                    if (input.substr(peg$currPos, 7) === peg$c705) {\n                                                                                                                                                                                                      s0 = peg$c705;\n                                                                                                                                                                                                      peg$currPos += 7;\n                                                                                                                                                                                                    } else {\n                                                                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c706); }\n                                                                                                                                                                                                    }\n                                                                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                      if (input.substr(peg$currPos, 7) === peg$c707) {\n                                                                                                                                                                                                        s0 = peg$c707;\n                                                                                                                                                                                                        peg$currPos += 7;\n                                                                                                                                                                                                      } else {\n                                                                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c708); }\n                                                                                                                                                                                                      }\n                                                                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                        if (input.substr(peg$currPos, 7) === peg$c709) {\n                                                                                                                                                                                                          s0 = peg$c709;\n                                                                                                                                                                                                          peg$currPos += 7;\n                                                                                                                                                                                                        } else {\n                                                                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c710); }\n                                                                                                                                                                                                        }\n                                                                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                          if (input.substr(peg$currPos, 7) === peg$c711) {\n                                                                                                                                                                                                            s0 = peg$c711;\n                                                                                                                                                                                                            peg$currPos += 7;\n                                                                                                                                                                                                          } else {\n                                                                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c712); }\n                                                                                                                                                                                                          }\n                                                                                                                                                                                                        }\n                                                                                                                                                                                                      }\n                                                                                                                                                                                                    }\n                                                                                                                                                                                                  }\n                                                                                                                                                                                                }\n                                                                                                                                                                                              }\n                                                                                                                                                                                            }\n                                                                                                                                                                                          }\n                                                                                                                                                                                        }\n                                                                                                                                                                                      }\n                                                                                                                                                                                    }\n                                                                                                                                                                                  }\n                                                                                                                                                                                }\n                                                                                                                                                                              }\n                                                                                                                                                                            }\n                                                                                                                                                                          }\n                                                                                                                                                                        }\n                                                                                                                                                                      }\n                                                                                                                                                                    }\n                                                                                                                                                                  }\n                                                                                                                                                                }\n                                                                                                                                                              }\n                                                                                                                                                            }\n                                                                                                                                                          }\n                                                                                                                                                        }\n                                                                                                                                                      }\n                                                                                                                                                    }\n                                                                                                                                                  }\n                                                                                                                                                }\n                                                                                                                                              }\n                                                                                                                                            }\n                                                                                                                                          }\n                                                                                                                                        }\n                                                                                                                                      }\n                                                                                                                                    }\n                                                                                                                                  }\n                                                                                                                                }\n                                                                                                                              }\n                                                                                                                            }\n                                                                                                                          }\n                                                                                                                        }\n                                                                                                                      }\n                                                                                                                    }\n                                                                                                                  }\n                                                                                                                }\n                                                                                                              }\n                                                                                                            }\n                                                                                                          }\n                                                                                                        }\n                                                                                                      }\n                                                                                                    }\n                                                                                                  }\n                                                                                                }\n                                                                                              }\n                                                                                            }\n                                                                                          }\n                                                                                        }\n                                                                                      }\n                                                                                    }\n                                                                                  }\n                                                                                }\n                                                                              }\n                                                                            }\n                                                                          }\n                                                                        }\n                                                                      }\n                                                                    }\n                                                                  }\n                                                                }\n                                                              }\n                                                            }\n                                                          }\n                                                        }\n                                                      }\n                                                    }\n                                                  }\n                                                }\n                                              }\n                                            }\n                                          }\n                                        }\n                                      }\n                                    }\n                                  }\n                                }\n                              }\n                            }\n                          }\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordSuffix3(): any {\n    let s0;\n\n    if (input.substr(peg$currPos, 7) === peg$c713) {\n      s0 = peg$c713;\n      peg$currPos += 7;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c714); }\n    }\n    if (s0 as any === peg$FAILED) {\n      if (input.substr(peg$currPos, 7) === peg$c715) {\n        s0 = peg$c715;\n        peg$currPos += 7;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c716); }\n      }\n      if (s0 as any === peg$FAILED) {\n        if (input.substr(peg$currPos, 7) === peg$c717) {\n          s0 = peg$c717;\n          peg$currPos += 7;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c718); }\n        }\n        if (s0 as any === peg$FAILED) {\n          if (input.substr(peg$currPos, 7) === peg$c719) {\n            s0 = peg$c719;\n            peg$currPos += 7;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c720); }\n          }\n          if (s0 as any === peg$FAILED) {\n            if (input.substr(peg$currPos, 7) === peg$c721) {\n              s0 = peg$c721;\n              peg$currPos += 7;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c722); }\n            }\n            if (s0 as any === peg$FAILED) {\n              if (input.substr(peg$currPos, 7) === peg$c723) {\n                s0 = peg$c723;\n                peg$currPos += 7;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c724); }\n              }\n              if (s0 as any === peg$FAILED) {\n                if (input.substr(peg$currPos, 7) === peg$c725) {\n                  s0 = peg$c725;\n                  peg$currPos += 7;\n                } else {\n                  s0 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c726); }\n                }\n                if (s0 as any === peg$FAILED) {\n                  if (input.substr(peg$currPos, 7) === peg$c727) {\n                    s0 = peg$c727;\n                    peg$currPos += 7;\n                  } else {\n                    s0 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c728); }\n                  }\n                  if (s0 as any === peg$FAILED) {\n                    if (input.substr(peg$currPos, 7) === peg$c729) {\n                      s0 = peg$c729;\n                      peg$currPos += 7;\n                    } else {\n                      s0 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$c730); }\n                    }\n                    if (s0 as any === peg$FAILED) {\n                      if (input.substr(peg$currPos, 7) === peg$c731) {\n                        s0 = peg$c731;\n                        peg$currPos += 7;\n                      } else {\n                        s0 = peg$FAILED;\n                        if (peg$silentFails === 0) { peg$fail(peg$c732); }\n                      }\n                      if (s0 as any === peg$FAILED) {\n                        if (input.substr(peg$currPos, 7) === peg$c733) {\n                          s0 = peg$c733;\n                          peg$currPos += 7;\n                        } else {\n                          s0 = peg$FAILED;\n                          if (peg$silentFails === 0) { peg$fail(peg$c734); }\n                        }\n                        if (s0 as any === peg$FAILED) {\n                          if (input.substr(peg$currPos, 7) === peg$c735) {\n                            s0 = peg$c735;\n                            peg$currPos += 7;\n                          } else {\n                            s0 = peg$FAILED;\n                            if (peg$silentFails === 0) { peg$fail(peg$c736); }\n                          }\n                          if (s0 as any === peg$FAILED) {\n                            if (input.substr(peg$currPos, 7) === peg$c737) {\n                              s0 = peg$c737;\n                              peg$currPos += 7;\n                            } else {\n                              s0 = peg$FAILED;\n                              if (peg$silentFails === 0) { peg$fail(peg$c738); }\n                            }\n                            if (s0 as any === peg$FAILED) {\n                              if (input.substr(peg$currPos, 7) === peg$c739) {\n                                s0 = peg$c739;\n                                peg$currPos += 7;\n                              } else {\n                                s0 = peg$FAILED;\n                                if (peg$silentFails === 0) { peg$fail(peg$c740); }\n                              }\n                              if (s0 as any === peg$FAILED) {\n                                if (input.substr(peg$currPos, 7) === peg$c741) {\n                                  s0 = peg$c741;\n                                  peg$currPos += 7;\n                                } else {\n                                  s0 = peg$FAILED;\n                                  if (peg$silentFails === 0) { peg$fail(peg$c742); }\n                                }\n                                if (s0 as any === peg$FAILED) {\n                                  if (input.substr(peg$currPos, 7) === peg$c741) {\n                                    s0 = peg$c741;\n                                    peg$currPos += 7;\n                                  } else {\n                                    s0 = peg$FAILED;\n                                    if (peg$silentFails === 0) { peg$fail(peg$c742); }\n                                  }\n                                  if (s0 as any === peg$FAILED) {\n                                    if (input.substr(peg$currPos, 7) === peg$c743) {\n                                      s0 = peg$c743;\n                                      peg$currPos += 7;\n                                    } else {\n                                      s0 = peg$FAILED;\n                                      if (peg$silentFails === 0) { peg$fail(peg$c744); }\n                                    }\n                                    if (s0 as any === peg$FAILED) {\n                                      if (input.substr(peg$currPos, 7) === peg$c745) {\n                                        s0 = peg$c745;\n                                        peg$currPos += 7;\n                                      } else {\n                                        s0 = peg$FAILED;\n                                        if (peg$silentFails === 0) { peg$fail(peg$c746); }\n                                      }\n                                      if (s0 as any === peg$FAILED) {\n                                        if (input.substr(peg$currPos, 7) === peg$c747) {\n                                          s0 = peg$c747;\n                                          peg$currPos += 7;\n                                        } else {\n                                          s0 = peg$FAILED;\n                                          if (peg$silentFails === 0) { peg$fail(peg$c748); }\n                                        }\n                                        if (s0 as any === peg$FAILED) {\n                                          if (input.substr(peg$currPos, 7) === peg$c749) {\n                                            s0 = peg$c749;\n                                            peg$currPos += 7;\n                                          } else {\n                                            s0 = peg$FAILED;\n                                            if (peg$silentFails === 0) { peg$fail(peg$c750); }\n                                          }\n                                          if (s0 as any === peg$FAILED) {\n                                            if (input.substr(peg$currPos, 7) === peg$c751) {\n                                              s0 = peg$c751;\n                                              peg$currPos += 7;\n                                            } else {\n                                              s0 = peg$FAILED;\n                                              if (peg$silentFails === 0) { peg$fail(peg$c752); }\n                                            }\n                                            if (s0 as any === peg$FAILED) {\n                                              if (input.substr(peg$currPos, 7) === peg$c753) {\n                                                s0 = peg$c753;\n                                                peg$currPos += 7;\n                                              } else {\n                                                s0 = peg$FAILED;\n                                                if (peg$silentFails === 0) { peg$fail(peg$c754); }\n                                              }\n                                              if (s0 as any === peg$FAILED) {\n                                                if (input.substr(peg$currPos, 7) === peg$c755) {\n                                                  s0 = peg$c755;\n                                                  peg$currPos += 7;\n                                                } else {\n                                                  s0 = peg$FAILED;\n                                                  if (peg$silentFails === 0) { peg$fail(peg$c756); }\n                                                }\n                                                if (s0 as any === peg$FAILED) {\n                                                  if (input.substr(peg$currPos, 7) === peg$c757) {\n                                                    s0 = peg$c757;\n                                                    peg$currPos += 7;\n                                                  } else {\n                                                    s0 = peg$FAILED;\n                                                    if (peg$silentFails === 0) { peg$fail(peg$c758); }\n                                                  }\n                                                  if (s0 as any === peg$FAILED) {\n                                                    if (input.substr(peg$currPos, 7) === peg$c759) {\n                                                      s0 = peg$c759;\n                                                      peg$currPos += 7;\n                                                    } else {\n                                                      s0 = peg$FAILED;\n                                                      if (peg$silentFails === 0) { peg$fail(peg$c760); }\n                                                    }\n                                                    if (s0 as any === peg$FAILED) {\n                                                      if (input.substr(peg$currPos, 7) === peg$c761) {\n                                                        s0 = peg$c761;\n                                                        peg$currPos += 7;\n                                                      } else {\n                                                        s0 = peg$FAILED;\n                                                        if (peg$silentFails === 0) { peg$fail(peg$c762); }\n                                                      }\n                                                      if (s0 as any === peg$FAILED) {\n                                                        if (input.substr(peg$currPos, 7) === peg$c763) {\n                                                          s0 = peg$c763;\n                                                          peg$currPos += 7;\n                                                        } else {\n                                                          s0 = peg$FAILED;\n                                                          if (peg$silentFails === 0) { peg$fail(peg$c764); }\n                                                        }\n                                                        if (s0 as any === peg$FAILED) {\n                                                          if (input.substr(peg$currPos, 7) === peg$c765) {\n                                                            s0 = peg$c765;\n                                                            peg$currPos += 7;\n                                                          } else {\n                                                            s0 = peg$FAILED;\n                                                            if (peg$silentFails === 0) { peg$fail(peg$c766); }\n                                                          }\n                                                          if (s0 as any === peg$FAILED) {\n                                                            if (input.substr(peg$currPos, 7) === peg$c767) {\n                                                              s0 = peg$c767;\n                                                              peg$currPos += 7;\n                                                            } else {\n                                                              s0 = peg$FAILED;\n                                                              if (peg$silentFails === 0) { peg$fail(peg$c768); }\n                                                            }\n                                                            if (s0 as any === peg$FAILED) {\n                                                              if (input.substr(peg$currPos, 7) === peg$c769) {\n                                                                s0 = peg$c769;\n                                                                peg$currPos += 7;\n                                                              } else {\n                                                                s0 = peg$FAILED;\n                                                                if (peg$silentFails === 0) { peg$fail(peg$c770); }\n                                                              }\n                                                              if (s0 as any === peg$FAILED) {\n                                                                if (input.substr(peg$currPos, 7) === peg$c771) {\n                                                                  s0 = peg$c771;\n                                                                  peg$currPos += 7;\n                                                                } else {\n                                                                  s0 = peg$FAILED;\n                                                                  if (peg$silentFails === 0) { peg$fail(peg$c772); }\n                                                                }\n                                                                if (s0 as any === peg$FAILED) {\n                                                                  if (input.substr(peg$currPos, 7) === peg$c773) {\n                                                                    s0 = peg$c773;\n                                                                    peg$currPos += 7;\n                                                                  } else {\n                                                                    s0 = peg$FAILED;\n                                                                    if (peg$silentFails === 0) { peg$fail(peg$c774); }\n                                                                  }\n                                                                  if (s0 as any === peg$FAILED) {\n                                                                    if (input.substr(peg$currPos, 7) === peg$c775) {\n                                                                      s0 = peg$c775;\n                                                                      peg$currPos += 7;\n                                                                    } else {\n                                                                      s0 = peg$FAILED;\n                                                                      if (peg$silentFails === 0) { peg$fail(peg$c776); }\n                                                                    }\n                                                                    if (s0 as any === peg$FAILED) {\n                                                                      if (input.substr(peg$currPos, 7) === peg$c777) {\n                                                                        s0 = peg$c777;\n                                                                        peg$currPos += 7;\n                                                                      } else {\n                                                                        s0 = peg$FAILED;\n                                                                        if (peg$silentFails === 0) { peg$fail(peg$c778); }\n                                                                      }\n                                                                      if (s0 as any === peg$FAILED) {\n                                                                        if (input.substr(peg$currPos, 7) === peg$c779) {\n                                                                          s0 = peg$c779;\n                                                                          peg$currPos += 7;\n                                                                        } else {\n                                                                          s0 = peg$FAILED;\n                                                                          if (peg$silentFails === 0) { peg$fail(peg$c780); }\n                                                                        }\n                                                                        if (s0 as any === peg$FAILED) {\n                                                                          if (input.substr(peg$currPos, 7) === peg$c781) {\n                                                                            s0 = peg$c781;\n                                                                            peg$currPos += 7;\n                                                                          } else {\n                                                                            s0 = peg$FAILED;\n                                                                            if (peg$silentFails === 0) { peg$fail(peg$c782); }\n                                                                          }\n                                                                          if (s0 as any === peg$FAILED) {\n                                                                            if (input.substr(peg$currPos, 7) === peg$c783) {\n                                                                              s0 = peg$c783;\n                                                                              peg$currPos += 7;\n                                                                            } else {\n                                                                              s0 = peg$FAILED;\n                                                                              if (peg$silentFails === 0) { peg$fail(peg$c784); }\n                                                                            }\n                                                                            if (s0 as any === peg$FAILED) {\n                                                                              if (input.substr(peg$currPos, 7) === peg$c785) {\n                                                                                s0 = peg$c785;\n                                                                                peg$currPos += 7;\n                                                                              } else {\n                                                                                s0 = peg$FAILED;\n                                                                                if (peg$silentFails === 0) { peg$fail(peg$c786); }\n                                                                              }\n                                                                              if (s0 as any === peg$FAILED) {\n                                                                                if (input.substr(peg$currPos, 7) === peg$c787) {\n                                                                                  s0 = peg$c787;\n                                                                                  peg$currPos += 7;\n                                                                                } else {\n                                                                                  s0 = peg$FAILED;\n                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c788); }\n                                                                                }\n                                                                                if (s0 as any === peg$FAILED) {\n                                                                                  if (input.substr(peg$currPos, 7) === peg$c789) {\n                                                                                    s0 = peg$c789;\n                                                                                    peg$currPos += 7;\n                                                                                  } else {\n                                                                                    s0 = peg$FAILED;\n                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c790); }\n                                                                                  }\n                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                    if (input.substr(peg$currPos, 7) === peg$c791) {\n                                                                                      s0 = peg$c791;\n                                                                                      peg$currPos += 7;\n                                                                                    } else {\n                                                                                      s0 = peg$FAILED;\n                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c792); }\n                                                                                    }\n                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                      if (input.substr(peg$currPos, 7) === peg$c793) {\n                                                                                        s0 = peg$c793;\n                                                                                        peg$currPos += 7;\n                                                                                      } else {\n                                                                                        s0 = peg$FAILED;\n                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c794); }\n                                                                                      }\n                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                        if (input.substr(peg$currPos, 7) === peg$c795) {\n                                                                                          s0 = peg$c795;\n                                                                                          peg$currPos += 7;\n                                                                                        } else {\n                                                                                          s0 = peg$FAILED;\n                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c796); }\n                                                                                        }\n                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                          if (input.substr(peg$currPos, 7) === peg$c797) {\n                                                                                            s0 = peg$c797;\n                                                                                            peg$currPos += 7;\n                                                                                          } else {\n                                                                                            s0 = peg$FAILED;\n                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c798); }\n                                                                                          }\n                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                            if (input.substr(peg$currPos, 7) === peg$c799) {\n                                                                                              s0 = peg$c799;\n                                                                                              peg$currPos += 7;\n                                                                                            } else {\n                                                                                              s0 = peg$FAILED;\n                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c800); }\n                                                                                            }\n                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                              if (input.substr(peg$currPos, 7) === peg$c801) {\n                                                                                                s0 = peg$c801;\n                                                                                                peg$currPos += 7;\n                                                                                              } else {\n                                                                                                s0 = peg$FAILED;\n                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c802); }\n                                                                                              }\n                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                if (input.substr(peg$currPos, 7) === peg$c803) {\n                                                                                                  s0 = peg$c803;\n                                                                                                  peg$currPos += 7;\n                                                                                                } else {\n                                                                                                  s0 = peg$FAILED;\n                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c804); }\n                                                                                                }\n                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                  if (input.substr(peg$currPos, 7) === peg$c805) {\n                                                                                                    s0 = peg$c805;\n                                                                                                    peg$currPos += 7;\n                                                                                                  } else {\n                                                                                                    s0 = peg$FAILED;\n                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c806); }\n                                                                                                  }\n                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                    if (input.substr(peg$currPos, 7) === peg$c807) {\n                                                                                                      s0 = peg$c807;\n                                                                                                      peg$currPos += 7;\n                                                                                                    } else {\n                                                                                                      s0 = peg$FAILED;\n                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c808); }\n                                                                                                    }\n                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                      if (input.substr(peg$currPos, 7) === peg$c809) {\n                                                                                                        s0 = peg$c809;\n                                                                                                        peg$currPos += 7;\n                                                                                                      } else {\n                                                                                                        s0 = peg$FAILED;\n                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c810); }\n                                                                                                      }\n                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                        if (input.substr(peg$currPos, 7) === peg$c811) {\n                                                                                                          s0 = peg$c811;\n                                                                                                          peg$currPos += 7;\n                                                                                                        } else {\n                                                                                                          s0 = peg$FAILED;\n                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c812); }\n                                                                                                        }\n                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                          if (input.substr(peg$currPos, 7) === peg$c813) {\n                                                                                                            s0 = peg$c813;\n                                                                                                            peg$currPos += 7;\n                                                                                                          } else {\n                                                                                                            s0 = peg$FAILED;\n                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c814); }\n                                                                                                          }\n                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                            if (input.substr(peg$currPos, 7) === peg$c815) {\n                                                                                                              s0 = peg$c815;\n                                                                                                              peg$currPos += 7;\n                                                                                                            } else {\n                                                                                                              s0 = peg$FAILED;\n                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c816); }\n                                                                                                            }\n                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                              if (input.substr(peg$currPos, 7) === peg$c817) {\n                                                                                                                s0 = peg$c817;\n                                                                                                                peg$currPos += 7;\n                                                                                                              } else {\n                                                                                                                s0 = peg$FAILED;\n                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c818); }\n                                                                                                              }\n                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                if (input.substr(peg$currPos, 7) === peg$c819) {\n                                                                                                                  s0 = peg$c819;\n                                                                                                                  peg$currPos += 7;\n                                                                                                                } else {\n                                                                                                                  s0 = peg$FAILED;\n                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c820); }\n                                                                                                                }\n                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                  if (input.substr(peg$currPos, 7) === peg$c821) {\n                                                                                                                    s0 = peg$c821;\n                                                                                                                    peg$currPos += 7;\n                                                                                                                  } else {\n                                                                                                                    s0 = peg$FAILED;\n                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c822); }\n                                                                                                                  }\n                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                    if (input.substr(peg$currPos, 7) === peg$c823) {\n                                                                                                                      s0 = peg$c823;\n                                                                                                                      peg$currPos += 7;\n                                                                                                                    } else {\n                                                                                                                      s0 = peg$FAILED;\n                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c824); }\n                                                                                                                    }\n                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                      if (input.substr(peg$currPos, 7) === peg$c825) {\n                                                                                                                        s0 = peg$c825;\n                                                                                                                        peg$currPos += 7;\n                                                                                                                      } else {\n                                                                                                                        s0 = peg$FAILED;\n                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c826); }\n                                                                                                                      }\n                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                        if (input.substr(peg$currPos, 7) === peg$c827) {\n                                                                                                                          s0 = peg$c827;\n                                                                                                                          peg$currPos += 7;\n                                                                                                                        } else {\n                                                                                                                          s0 = peg$FAILED;\n                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c828); }\n                                                                                                                        }\n                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                          if (input.substr(peg$currPos, 7) === peg$c829) {\n                                                                                                                            s0 = peg$c829;\n                                                                                                                            peg$currPos += 7;\n                                                                                                                          } else {\n                                                                                                                            s0 = peg$FAILED;\n                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c830); }\n                                                                                                                          }\n                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                            if (input.substr(peg$currPos, 7) === peg$c831) {\n                                                                                                                              s0 = peg$c831;\n                                                                                                                              peg$currPos += 7;\n                                                                                                                            } else {\n                                                                                                                              s0 = peg$FAILED;\n                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c832); }\n                                                                                                                            }\n                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                              if (input.substr(peg$currPos, 7) === peg$c833) {\n                                                                                                                                s0 = peg$c833;\n                                                                                                                                peg$currPos += 7;\n                                                                                                                              } else {\n                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c834); }\n                                                                                                                              }\n                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                if (input.substr(peg$currPos, 7) === peg$c835) {\n                                                                                                                                  s0 = peg$c835;\n                                                                                                                                  peg$currPos += 7;\n                                                                                                                                } else {\n                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c836); }\n                                                                                                                                }\n                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                  if (input.substr(peg$currPos, 7) === peg$c837) {\n                                                                                                                                    s0 = peg$c837;\n                                                                                                                                    peg$currPos += 7;\n                                                                                                                                  } else {\n                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c838); }\n                                                                                                                                  }\n                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                    if (input.substr(peg$currPos, 7) === peg$c839) {\n                                                                                                                                      s0 = peg$c839;\n                                                                                                                                      peg$currPos += 7;\n                                                                                                                                    } else {\n                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c840); }\n                                                                                                                                    }\n                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                      if (input.substr(peg$currPos, 7) === peg$c841) {\n                                                                                                                                        s0 = peg$c841;\n                                                                                                                                        peg$currPos += 7;\n                                                                                                                                      } else {\n                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c842); }\n                                                                                                                                      }\n                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                        if (input.substr(peg$currPos, 7) === peg$c843) {\n                                                                                                                                          s0 = peg$c843;\n                                                                                                                                          peg$currPos += 7;\n                                                                                                                                        } else {\n                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c844); }\n                                                                                                                                        }\n                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                          if (input.substr(peg$currPos, 7) === peg$c845) {\n                                                                                                                                            s0 = peg$c845;\n                                                                                                                                            peg$currPos += 7;\n                                                                                                                                          } else {\n                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c846); }\n                                                                                                                                          }\n                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                            if (input.substr(peg$currPos, 7) === peg$c847) {\n                                                                                                                                              s0 = peg$c847;\n                                                                                                                                              peg$currPos += 7;\n                                                                                                                                            } else {\n                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c848); }\n                                                                                                                                            }\n                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                              if (input.substr(peg$currPos, 7) === peg$c849) {\n                                                                                                                                                s0 = peg$c849;\n                                                                                                                                                peg$currPos += 7;\n                                                                                                                                              } else {\n                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c850); }\n                                                                                                                                              }\n                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                if (input.substr(peg$currPos, 7) === peg$c851) {\n                                                                                                                                                  s0 = peg$c851;\n                                                                                                                                                  peg$currPos += 7;\n                                                                                                                                                } else {\n                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c852); }\n                                                                                                                                                }\n                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                  if (input.substr(peg$currPos, 7) === peg$c853) {\n                                                                                                                                                    s0 = peg$c853;\n                                                                                                                                                    peg$currPos += 7;\n                                                                                                                                                  } else {\n                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c854); }\n                                                                                                                                                  }\n                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                    if (input.substr(peg$currPos, 7) === peg$c855) {\n                                                                                                                                                      s0 = peg$c855;\n                                                                                                                                                      peg$currPos += 7;\n                                                                                                                                                    } else {\n                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c856); }\n                                                                                                                                                    }\n                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                      if (input.substr(peg$currPos, 7) === peg$c857) {\n                                                                                                                                                        s0 = peg$c857;\n                                                                                                                                                        peg$currPos += 7;\n                                                                                                                                                      } else {\n                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c858); }\n                                                                                                                                                      }\n                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                        if (input.substr(peg$currPos, 7) === peg$c859) {\n                                                                                                                                                          s0 = peg$c859;\n                                                                                                                                                          peg$currPos += 7;\n                                                                                                                                                        } else {\n                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c860); }\n                                                                                                                                                        }\n                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                          if (input.substr(peg$currPos, 7) === peg$c861) {\n                                                                                                                                                            s0 = peg$c861;\n                                                                                                                                                            peg$currPos += 7;\n                                                                                                                                                          } else {\n                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c862); }\n                                                                                                                                                          }\n                                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                                            if (input.substr(peg$currPos, 7) === peg$c863) {\n                                                                                                                                                              s0 = peg$c863;\n                                                                                                                                                              peg$currPos += 7;\n                                                                                                                                                            } else {\n                                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c864); }\n                                                                                                                                                            }\n                                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                                              if (input.substr(peg$currPos, 7) === peg$c865) {\n                                                                                                                                                                s0 = peg$c865;\n                                                                                                                                                                peg$currPos += 7;\n                                                                                                                                                              } else {\n                                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c866); }\n                                                                                                                                                              }\n                                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                                if (input.substr(peg$currPos, 7) === peg$c867) {\n                                                                                                                                                                  s0 = peg$c867;\n                                                                                                                                                                  peg$currPos += 7;\n                                                                                                                                                                } else {\n                                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c868); }\n                                                                                                                                                                }\n                                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                                  if (input.substr(peg$currPos, 7) === peg$c869) {\n                                                                                                                                                                    s0 = peg$c869;\n                                                                                                                                                                    peg$currPos += 7;\n                                                                                                                                                                  } else {\n                                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c870); }\n                                                                                                                                                                  }\n                                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                                    if (input.substr(peg$currPos, 7) === peg$c871) {\n                                                                                                                                                                      s0 = peg$c871;\n                                                                                                                                                                      peg$currPos += 7;\n                                                                                                                                                                    } else {\n                                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c872); }\n                                                                                                                                                                    }\n                                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                                      if (input.substr(peg$currPos, 7) === peg$c873) {\n                                                                                                                                                                        s0 = peg$c873;\n                                                                                                                                                                        peg$currPos += 7;\n                                                                                                                                                                      } else {\n                                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c874); }\n                                                                                                                                                                      }\n                                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                                        if (input.substr(peg$currPos, 7) === peg$c875) {\n                                                                                                                                                                          s0 = peg$c875;\n                                                                                                                                                                          peg$currPos += 7;\n                                                                                                                                                                        } else {\n                                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c876); }\n                                                                                                                                                                        }\n                                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                                          if (input.substr(peg$currPos, 7) === peg$c877) {\n                                                                                                                                                                            s0 = peg$c877;\n                                                                                                                                                                            peg$currPos += 7;\n                                                                                                                                                                          } else {\n                                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c878); }\n                                                                                                                                                                          }\n                                                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                                                            if (input.substr(peg$currPos, 7) === peg$c879) {\n                                                                                                                                                                              s0 = peg$c879;\n                                                                                                                                                                              peg$currPos += 7;\n                                                                                                                                                                            } else {\n                                                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c880); }\n                                                                                                                                                                            }\n                                                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                                                              if (input.substr(peg$currPos, 7) === peg$c881) {\n                                                                                                                                                                                s0 = peg$c881;\n                                                                                                                                                                                peg$currPos += 7;\n                                                                                                                                                                              } else {\n                                                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c882); }\n                                                                                                                                                                              }\n                                                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                if (input.substr(peg$currPos, 7) === peg$c883) {\n                                                                                                                                                                                  s0 = peg$c883;\n                                                                                                                                                                                  peg$currPos += 7;\n                                                                                                                                                                                } else {\n                                                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c884); }\n                                                                                                                                                                                }\n                                                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                  if (input.substr(peg$currPos, 7) === peg$c885) {\n                                                                                                                                                                                    s0 = peg$c885;\n                                                                                                                                                                                    peg$currPos += 7;\n                                                                                                                                                                                  } else {\n                                                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c886); }\n                                                                                                                                                                                  }\n                                                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                    if (input.substr(peg$currPos, 7) === peg$c887) {\n                                                                                                                                                                                      s0 = peg$c887;\n                                                                                                                                                                                      peg$currPos += 7;\n                                                                                                                                                                                    } else {\n                                                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c888); }\n                                                                                                                                                                                    }\n                                                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                      if (input.substr(peg$currPos, 7) === peg$c889) {\n                                                                                                                                                                                        s0 = peg$c889;\n                                                                                                                                                                                        peg$currPos += 7;\n                                                                                                                                                                                      } else {\n                                                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c890); }\n                                                                                                                                                                                      }\n                                                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                        if (input.substr(peg$currPos, 7) === peg$c891) {\n                                                                                                                                                                                          s0 = peg$c891;\n                                                                                                                                                                                          peg$currPos += 7;\n                                                                                                                                                                                        } else {\n                                                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c892); }\n                                                                                                                                                                                        }\n                                                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                          if (input.substr(peg$currPos, 7) === peg$c893) {\n                                                                                                                                                                                            s0 = peg$c893;\n                                                                                                                                                                                            peg$currPos += 7;\n                                                                                                                                                                                          } else {\n                                                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c894); }\n                                                                                                                                                                                          }\n                                                                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                            if (input.substr(peg$currPos, 7) === peg$c895) {\n                                                                                                                                                                                              s0 = peg$c895;\n                                                                                                                                                                                              peg$currPos += 7;\n                                                                                                                                                                                            } else {\n                                                                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c896); }\n                                                                                                                                                                                            }\n                                                                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                              if (input.substr(peg$currPos, 7) === peg$c897) {\n                                                                                                                                                                                                s0 = peg$c897;\n                                                                                                                                                                                                peg$currPos += 7;\n                                                                                                                                                                                              } else {\n                                                                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c898); }\n                                                                                                                                                                                              }\n                                                                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                if (input.substr(peg$currPos, 7) === peg$c899) {\n                                                                                                                                                                                                  s0 = peg$c899;\n                                                                                                                                                                                                  peg$currPos += 7;\n                                                                                                                                                                                                } else {\n                                                                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c900); }\n                                                                                                                                                                                                }\n                                                                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                  if (input.substr(peg$currPos, 7) === peg$c901) {\n                                                                                                                                                                                                    s0 = peg$c901;\n                                                                                                                                                                                                    peg$currPos += 7;\n                                                                                                                                                                                                  } else {\n                                                                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c902); }\n                                                                                                                                                                                                  }\n                                                                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                    if (input.substr(peg$currPos, 7) === peg$c903) {\n                                                                                                                                                                                                      s0 = peg$c903;\n                                                                                                                                                                                                      peg$currPos += 7;\n                                                                                                                                                                                                    } else {\n                                                                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c904); }\n                                                                                                                                                                                                    }\n                                                                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                      if (input.substr(peg$currPos, 7) === peg$c905) {\n                                                                                                                                                                                                        s0 = peg$c905;\n                                                                                                                                                                                                        peg$currPos += 7;\n                                                                                                                                                                                                      } else {\n                                                                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c906); }\n                                                                                                                                                                                                      }\n                                                                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                        if (input.substr(peg$currPos, 7) === peg$c907) {\n                                                                                                                                                                                                          s0 = peg$c907;\n                                                                                                                                                                                                          peg$currPos += 7;\n                                                                                                                                                                                                        } else {\n                                                                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c908); }\n                                                                                                                                                                                                        }\n                                                                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                          if (input.substr(peg$currPos, 7) === peg$c909) {\n                                                                                                                                                                                                            s0 = peg$c909;\n                                                                                                                                                                                                            peg$currPos += 7;\n                                                                                                                                                                                                          } else {\n                                                                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c910); }\n                                                                                                                                                                                                          }\n                                                                                                                                                                                                        }\n                                                                                                                                                                                                      }\n                                                                                                                                                                                                    }\n                                                                                                                                                                                                  }\n                                                                                                                                                                                                }\n                                                                                                                                                                                              }\n                                                                                                                                                                                            }\n                                                                                                                                                                                          }\n                                                                                                                                                                                        }\n                                                                                                                                                                                      }\n                                                                                                                                                                                    }\n                                                                                                                                                                                  }\n                                                                                                                                                                                }\n                                                                                                                                                                              }\n                                                                                                                                                                            }\n                                                                                                                                                                          }\n                                                                                                                                                                        }\n                                                                                                                                                                      }\n                                                                                                                                                                    }\n                                                                                                                                                                  }\n                                                                                                                                                                }\n                                                                                                                                                              }\n                                                                                                                                                            }\n                                                                                                                                                          }\n                                                                                                                                                        }\n                                                                                                                                                      }\n                                                                                                                                                    }\n                                                                                                                                                  }\n                                                                                                                                                }\n                                                                                                                                              }\n                                                                                                                                            }\n                                                                                                                                          }\n                                                                                                                                        }\n                                                                                                                                      }\n                                                                                                                                    }\n                                                                                                                                  }\n                                                                                                                                }\n                                                                                                                              }\n                                                                                                                            }\n                                                                                                                          }\n                                                                                                                        }\n                                                                                                                      }\n                                                                                                                    }\n                                                                                                                  }\n                                                                                                                }\n                                                                                                              }\n                                                                                                            }\n                                                                                                          }\n                                                                                                        }\n                                                                                                      }\n                                                                                                    }\n                                                                                                  }\n                                                                                                }\n                                                                                              }\n                                                                                            }\n                                                                                          }\n                                                                                        }\n                                                                                      }\n                                                                                    }\n                                                                                  }\n                                                                                }\n                                                                              }\n                                                                            }\n                                                                          }\n                                                                        }\n                                                                      }\n                                                                    }\n                                                                  }\n                                                                }\n                                                              }\n                                                            }\n                                                          }\n                                                        }\n                                                      }\n                                                    }\n                                                  }\n                                                }\n                                              }\n                                            }\n                                          }\n                                        }\n                                      }\n                                    }\n                                  }\n                                }\n                              }\n                            }\n                          }\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordSuffix4(): any {\n    let s0;\n\n    if (input.substr(peg$currPos, 7) === peg$c911) {\n      s0 = peg$c911;\n      peg$currPos += 7;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c912); }\n    }\n    if (s0 as any === peg$FAILED) {\n      if (input.substr(peg$currPos, 7) === peg$c913) {\n        s0 = peg$c913;\n        peg$currPos += 7;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c914); }\n      }\n      if (s0 as any === peg$FAILED) {\n        if (input.substr(peg$currPos, 7) === peg$c915) {\n          s0 = peg$c915;\n          peg$currPos += 7;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c916); }\n        }\n        if (s0 as any === peg$FAILED) {\n          if (input.substr(peg$currPos, 7) === peg$c917) {\n            s0 = peg$c917;\n            peg$currPos += 7;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c918); }\n          }\n          if (s0 as any === peg$FAILED) {\n            if (input.substr(peg$currPos, 6) === peg$c919) {\n              s0 = peg$c919;\n              peg$currPos += 6;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c920); }\n            }\n            if (s0 as any === peg$FAILED) {\n              if (input.substr(peg$currPos, 6) === peg$c921) {\n                s0 = peg$c921;\n                peg$currPos += 6;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c922); }\n              }\n              if (s0 as any === peg$FAILED) {\n                if (input.substr(peg$currPos, 6) === peg$c923) {\n                  s0 = peg$c923;\n                  peg$currPos += 6;\n                } else {\n                  s0 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c924); }\n                }\n                if (s0 as any === peg$FAILED) {\n                  if (input.substr(peg$currPos, 6) === peg$c925) {\n                    s0 = peg$c925;\n                    peg$currPos += 6;\n                  } else {\n                    s0 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c926); }\n                  }\n                  if (s0 as any === peg$FAILED) {\n                    if (input.substr(peg$currPos, 6) === peg$c927) {\n                      s0 = peg$c927;\n                      peg$currPos += 6;\n                    } else {\n                      s0 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$c928); }\n                    }\n                    if (s0 as any === peg$FAILED) {\n                      if (input.substr(peg$currPos, 6) === peg$c929) {\n                        s0 = peg$c929;\n                        peg$currPos += 6;\n                      } else {\n                        s0 = peg$FAILED;\n                        if (peg$silentFails === 0) { peg$fail(peg$c930); }\n                      }\n                      if (s0 as any === peg$FAILED) {\n                        if (input.substr(peg$currPos, 6) === peg$c931) {\n                          s0 = peg$c931;\n                          peg$currPos += 6;\n                        } else {\n                          s0 = peg$FAILED;\n                          if (peg$silentFails === 0) { peg$fail(peg$c932); }\n                        }\n                        if (s0 as any === peg$FAILED) {\n                          if (input.substr(peg$currPos, 6) === peg$c933) {\n                            s0 = peg$c933;\n                            peg$currPos += 6;\n                          } else {\n                            s0 = peg$FAILED;\n                            if (peg$silentFails === 0) { peg$fail(peg$c934); }\n                          }\n                          if (s0 as any === peg$FAILED) {\n                            if (input.substr(peg$currPos, 6) === peg$c935) {\n                              s0 = peg$c935;\n                              peg$currPos += 6;\n                            } else {\n                              s0 = peg$FAILED;\n                              if (peg$silentFails === 0) { peg$fail(peg$c936); }\n                            }\n                            if (s0 as any === peg$FAILED) {\n                              if (input.substr(peg$currPos, 6) === peg$c937) {\n                                s0 = peg$c937;\n                                peg$currPos += 6;\n                              } else {\n                                s0 = peg$FAILED;\n                                if (peg$silentFails === 0) { peg$fail(peg$c938); }\n                              }\n                              if (s0 as any === peg$FAILED) {\n                                if (input.substr(peg$currPos, 6) === peg$c939) {\n                                  s0 = peg$c939;\n                                  peg$currPos += 6;\n                                } else {\n                                  s0 = peg$FAILED;\n                                  if (peg$silentFails === 0) { peg$fail(peg$c940); }\n                                }\n                                if (s0 as any === peg$FAILED) {\n                                  if (input.substr(peg$currPos, 6) === peg$c941) {\n                                    s0 = peg$c941;\n                                    peg$currPos += 6;\n                                  } else {\n                                    s0 = peg$FAILED;\n                                    if (peg$silentFails === 0) { peg$fail(peg$c942); }\n                                  }\n                                  if (s0 as any === peg$FAILED) {\n                                    if (input.substr(peg$currPos, 6) === peg$c943) {\n                                      s0 = peg$c943;\n                                      peg$currPos += 6;\n                                    } else {\n                                      s0 = peg$FAILED;\n                                      if (peg$silentFails === 0) { peg$fail(peg$c944); }\n                                    }\n                                    if (s0 as any === peg$FAILED) {\n                                      if (input.substr(peg$currPos, 6) === peg$c945) {\n                                        s0 = peg$c945;\n                                        peg$currPos += 6;\n                                      } else {\n                                        s0 = peg$FAILED;\n                                        if (peg$silentFails === 0) { peg$fail(peg$c946); }\n                                      }\n                                      if (s0 as any === peg$FAILED) {\n                                        if (input.substr(peg$currPos, 6) === peg$c947) {\n                                          s0 = peg$c947;\n                                          peg$currPos += 6;\n                                        } else {\n                                          s0 = peg$FAILED;\n                                          if (peg$silentFails === 0) { peg$fail(peg$c948); }\n                                        }\n                                        if (s0 as any === peg$FAILED) {\n                                          if (input.substr(peg$currPos, 6) === peg$c949) {\n                                            s0 = peg$c949;\n                                            peg$currPos += 6;\n                                          } else {\n                                            s0 = peg$FAILED;\n                                            if (peg$silentFails === 0) { peg$fail(peg$c950); }\n                                          }\n                                          if (s0 as any === peg$FAILED) {\n                                            if (input.substr(peg$currPos, 6) === peg$c951) {\n                                              s0 = peg$c951;\n                                              peg$currPos += 6;\n                                            } else {\n                                              s0 = peg$FAILED;\n                                              if (peg$silentFails === 0) { peg$fail(peg$c952); }\n                                            }\n                                            if (s0 as any === peg$FAILED) {\n                                              if (input.substr(peg$currPos, 6) === peg$c953) {\n                                                s0 = peg$c953;\n                                                peg$currPos += 6;\n                                              } else {\n                                                s0 = peg$FAILED;\n                                                if (peg$silentFails === 0) { peg$fail(peg$c954); }\n                                              }\n                                              if (s0 as any === peg$FAILED) {\n                                                if (input.substr(peg$currPos, 6) === peg$c955) {\n                                                  s0 = peg$c955;\n                                                  peg$currPos += 6;\n                                                } else {\n                                                  s0 = peg$FAILED;\n                                                  if (peg$silentFails === 0) { peg$fail(peg$c956); }\n                                                }\n                                                if (s0 as any === peg$FAILED) {\n                                                  if (input.substr(peg$currPos, 6) === peg$c957) {\n                                                    s0 = peg$c957;\n                                                    peg$currPos += 6;\n                                                  } else {\n                                                    s0 = peg$FAILED;\n                                                    if (peg$silentFails === 0) { peg$fail(peg$c958); }\n                                                  }\n                                                  if (s0 as any === peg$FAILED) {\n                                                    if (input.substr(peg$currPos, 6) === peg$c959) {\n                                                      s0 = peg$c959;\n                                                      peg$currPos += 6;\n                                                    } else {\n                                                      s0 = peg$FAILED;\n                                                      if (peg$silentFails === 0) { peg$fail(peg$c960); }\n                                                    }\n                                                    if (s0 as any === peg$FAILED) {\n                                                      if (input.substr(peg$currPos, 6) === peg$c961) {\n                                                        s0 = peg$c961;\n                                                        peg$currPos += 6;\n                                                      } else {\n                                                        s0 = peg$FAILED;\n                                                        if (peg$silentFails === 0) { peg$fail(peg$c962); }\n                                                      }\n                                                      if (s0 as any === peg$FAILED) {\n                                                        if (input.substr(peg$currPos, 6) === peg$c963) {\n                                                          s0 = peg$c963;\n                                                          peg$currPos += 6;\n                                                        } else {\n                                                          s0 = peg$FAILED;\n                                                          if (peg$silentFails === 0) { peg$fail(peg$c964); }\n                                                        }\n                                                        if (s0 as any === peg$FAILED) {\n                                                          if (input.substr(peg$currPos, 6) === peg$c965) {\n                                                            s0 = peg$c965;\n                                                            peg$currPos += 6;\n                                                          } else {\n                                                            s0 = peg$FAILED;\n                                                            if (peg$silentFails === 0) { peg$fail(peg$c966); }\n                                                          }\n                                                          if (s0 as any === peg$FAILED) {\n                                                            if (input.substr(peg$currPos, 6) === peg$c967) {\n                                                              s0 = peg$c967;\n                                                              peg$currPos += 6;\n                                                            } else {\n                                                              s0 = peg$FAILED;\n                                                              if (peg$silentFails === 0) { peg$fail(peg$c968); }\n                                                            }\n                                                            if (s0 as any === peg$FAILED) {\n                                                              if (input.substr(peg$currPos, 6) === peg$c969) {\n                                                                s0 = peg$c969;\n                                                                peg$currPos += 6;\n                                                              } else {\n                                                                s0 = peg$FAILED;\n                                                                if (peg$silentFails === 0) { peg$fail(peg$c970); }\n                                                              }\n                                                              if (s0 as any === peg$FAILED) {\n                                                                if (input.substr(peg$currPos, 6) === peg$c971) {\n                                                                  s0 = peg$c971;\n                                                                  peg$currPos += 6;\n                                                                } else {\n                                                                  s0 = peg$FAILED;\n                                                                  if (peg$silentFails === 0) { peg$fail(peg$c972); }\n                                                                }\n                                                                if (s0 as any === peg$FAILED) {\n                                                                  if (input.substr(peg$currPos, 6) === peg$c973) {\n                                                                    s0 = peg$c973;\n                                                                    peg$currPos += 6;\n                                                                  } else {\n                                                                    s0 = peg$FAILED;\n                                                                    if (peg$silentFails === 0) { peg$fail(peg$c974); }\n                                                                  }\n                                                                  if (s0 as any === peg$FAILED) {\n                                                                    if (input.substr(peg$currPos, 6) === peg$c975) {\n                                                                      s0 = peg$c975;\n                                                                      peg$currPos += 6;\n                                                                    } else {\n                                                                      s0 = peg$FAILED;\n                                                                      if (peg$silentFails === 0) { peg$fail(peg$c976); }\n                                                                    }\n                                                                    if (s0 as any === peg$FAILED) {\n                                                                      if (input.substr(peg$currPos, 6) === peg$c977) {\n                                                                        s0 = peg$c977;\n                                                                        peg$currPos += 6;\n                                                                      } else {\n                                                                        s0 = peg$FAILED;\n                                                                        if (peg$silentFails === 0) { peg$fail(peg$c978); }\n                                                                      }\n                                                                      if (s0 as any === peg$FAILED) {\n                                                                        if (input.substr(peg$currPos, 6) === peg$c979) {\n                                                                          s0 = peg$c979;\n                                                                          peg$currPos += 6;\n                                                                        } else {\n                                                                          s0 = peg$FAILED;\n                                                                          if (peg$silentFails === 0) { peg$fail(peg$c980); }\n                                                                        }\n                                                                        if (s0 as any === peg$FAILED) {\n                                                                          if (input.substr(peg$currPos, 6) === peg$c981) {\n                                                                            s0 = peg$c981;\n                                                                            peg$currPos += 6;\n                                                                          } else {\n                                                                            s0 = peg$FAILED;\n                                                                            if (peg$silentFails === 0) { peg$fail(peg$c982); }\n                                                                          }\n                                                                          if (s0 as any === peg$FAILED) {\n                                                                            if (input.substr(peg$currPos, 6) === peg$c983) {\n                                                                              s0 = peg$c983;\n                                                                              peg$currPos += 6;\n                                                                            } else {\n                                                                              s0 = peg$FAILED;\n                                                                              if (peg$silentFails === 0) { peg$fail(peg$c984); }\n                                                                            }\n                                                                            if (s0 as any === peg$FAILED) {\n                                                                              if (input.substr(peg$currPos, 6) === peg$c985) {\n                                                                                s0 = peg$c985;\n                                                                                peg$currPos += 6;\n                                                                              } else {\n                                                                                s0 = peg$FAILED;\n                                                                                if (peg$silentFails === 0) { peg$fail(peg$c986); }\n                                                                              }\n                                                                              if (s0 as any === peg$FAILED) {\n                                                                                if (input.substr(peg$currPos, 6) === peg$c987) {\n                                                                                  s0 = peg$c987;\n                                                                                  peg$currPos += 6;\n                                                                                } else {\n                                                                                  s0 = peg$FAILED;\n                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c988); }\n                                                                                }\n                                                                                if (s0 as any === peg$FAILED) {\n                                                                                  if (input.substr(peg$currPos, 6) === peg$c989) {\n                                                                                    s0 = peg$c989;\n                                                                                    peg$currPos += 6;\n                                                                                  } else {\n                                                                                    s0 = peg$FAILED;\n                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c990); }\n                                                                                  }\n                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                    if (input.substr(peg$currPos, 6) === peg$c991) {\n                                                                                      s0 = peg$c991;\n                                                                                      peg$currPos += 6;\n                                                                                    } else {\n                                                                                      s0 = peg$FAILED;\n                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c992); }\n                                                                                    }\n                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                      if (input.substr(peg$currPos, 6) === peg$c993) {\n                                                                                        s0 = peg$c993;\n                                                                                        peg$currPos += 6;\n                                                                                      } else {\n                                                                                        s0 = peg$FAILED;\n                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c994); }\n                                                                                      }\n                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                        if (input.substr(peg$currPos, 6) === peg$c995) {\n                                                                                          s0 = peg$c995;\n                                                                                          peg$currPos += 6;\n                                                                                        } else {\n                                                                                          s0 = peg$FAILED;\n                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c996); }\n                                                                                        }\n                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                          if (input.substr(peg$currPos, 6) === peg$c997) {\n                                                                                            s0 = peg$c997;\n                                                                                            peg$currPos += 6;\n                                                                                          } else {\n                                                                                            s0 = peg$FAILED;\n                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c998); }\n                                                                                          }\n                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                            if (input.substr(peg$currPos, 6) === peg$c999) {\n                                                                                              s0 = peg$c999;\n                                                                                              peg$currPos += 6;\n                                                                                            } else {\n                                                                                              s0 = peg$FAILED;\n                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1000); }\n                                                                                            }\n                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                              if (input.substr(peg$currPos, 6) === peg$c1001) {\n                                                                                                s0 = peg$c1001;\n                                                                                                peg$currPos += 6;\n                                                                                              } else {\n                                                                                                s0 = peg$FAILED;\n                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1002); }\n                                                                                              }\n                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                if (input.substr(peg$currPos, 6) === peg$c1003) {\n                                                                                                  s0 = peg$c1003;\n                                                                                                  peg$currPos += 6;\n                                                                                                } else {\n                                                                                                  s0 = peg$FAILED;\n                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1004); }\n                                                                                                }\n                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                  if (input.substr(peg$currPos, 6) === peg$c1005) {\n                                                                                                    s0 = peg$c1005;\n                                                                                                    peg$currPos += 6;\n                                                                                                  } else {\n                                                                                                    s0 = peg$FAILED;\n                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1006); }\n                                                                                                  }\n                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                    if (input.substr(peg$currPos, 6) === peg$c1007) {\n                                                                                                      s0 = peg$c1007;\n                                                                                                      peg$currPos += 6;\n                                                                                                    } else {\n                                                                                                      s0 = peg$FAILED;\n                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1008); }\n                                                                                                    }\n                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                      if (input.substr(peg$currPos, 6) === peg$c1009) {\n                                                                                                        s0 = peg$c1009;\n                                                                                                        peg$currPos += 6;\n                                                                                                      } else {\n                                                                                                        s0 = peg$FAILED;\n                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1010); }\n                                                                                                      }\n                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                        if (input.substr(peg$currPos, 6) === peg$c1011) {\n                                                                                                          s0 = peg$c1011;\n                                                                                                          peg$currPos += 6;\n                                                                                                        } else {\n                                                                                                          s0 = peg$FAILED;\n                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1012); }\n                                                                                                        }\n                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                          if (input.substr(peg$currPos, 6) === peg$c1013) {\n                                                                                                            s0 = peg$c1013;\n                                                                                                            peg$currPos += 6;\n                                                                                                          } else {\n                                                                                                            s0 = peg$FAILED;\n                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1014); }\n                                                                                                          }\n                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                            if (input.substr(peg$currPos, 6) === peg$c1013) {\n                                                                                                              s0 = peg$c1013;\n                                                                                                              peg$currPos += 6;\n                                                                                                            } else {\n                                                                                                              s0 = peg$FAILED;\n                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1014); }\n                                                                                                            }\n                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                              if (input.substr(peg$currPos, 6) === peg$c1015) {\n                                                                                                                s0 = peg$c1015;\n                                                                                                                peg$currPos += 6;\n                                                                                                              } else {\n                                                                                                                s0 = peg$FAILED;\n                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1016); }\n                                                                                                              }\n                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                if (input.substr(peg$currPos, 6) === peg$c1017) {\n                                                                                                                  s0 = peg$c1017;\n                                                                                                                  peg$currPos += 6;\n                                                                                                                } else {\n                                                                                                                  s0 = peg$FAILED;\n                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1018); }\n                                                                                                                }\n                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                  if (input.substr(peg$currPos, 6) === peg$c1019) {\n                                                                                                                    s0 = peg$c1019;\n                                                                                                                    peg$currPos += 6;\n                                                                                                                  } else {\n                                                                                                                    s0 = peg$FAILED;\n                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1020); }\n                                                                                                                  }\n                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                    if (input.substr(peg$currPos, 6) === peg$c1021) {\n                                                                                                                      s0 = peg$c1021;\n                                                                                                                      peg$currPos += 6;\n                                                                                                                    } else {\n                                                                                                                      s0 = peg$FAILED;\n                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1022); }\n                                                                                                                    }\n                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                      if (input.substr(peg$currPos, 6) === peg$c1023) {\n                                                                                                                        s0 = peg$c1023;\n                                                                                                                        peg$currPos += 6;\n                                                                                                                      } else {\n                                                                                                                        s0 = peg$FAILED;\n                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1024); }\n                                                                                                                      }\n                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                        if (input.substr(peg$currPos, 6) === peg$c1025) {\n                                                                                                                          s0 = peg$c1025;\n                                                                                                                          peg$currPos += 6;\n                                                                                                                        } else {\n                                                                                                                          s0 = peg$FAILED;\n                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1026); }\n                                                                                                                        }\n                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                          if (input.substr(peg$currPos, 6) === peg$c1027) {\n                                                                                                                            s0 = peg$c1027;\n                                                                                                                            peg$currPos += 6;\n                                                                                                                          } else {\n                                                                                                                            s0 = peg$FAILED;\n                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1028); }\n                                                                                                                          }\n                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                            if (input.substr(peg$currPos, 6) === peg$c1029) {\n                                                                                                                              s0 = peg$c1029;\n                                                                                                                              peg$currPos += 6;\n                                                                                                                            } else {\n                                                                                                                              s0 = peg$FAILED;\n                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1030); }\n                                                                                                                            }\n                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                              if (input.substr(peg$currPos, 6) === peg$c1031) {\n                                                                                                                                s0 = peg$c1031;\n                                                                                                                                peg$currPos += 6;\n                                                                                                                              } else {\n                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1032); }\n                                                                                                                              }\n                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                if (input.substr(peg$currPos, 6) === peg$c1033) {\n                                                                                                                                  s0 = peg$c1033;\n                                                                                                                                  peg$currPos += 6;\n                                                                                                                                } else {\n                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1034); }\n                                                                                                                                }\n                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                  if (input.substr(peg$currPos, 6) === peg$c1035) {\n                                                                                                                                    s0 = peg$c1035;\n                                                                                                                                    peg$currPos += 6;\n                                                                                                                                  } else {\n                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1036); }\n                                                                                                                                  }\n                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                    if (input.substr(peg$currPos, 6) === peg$c1037) {\n                                                                                                                                      s0 = peg$c1037;\n                                                                                                                                      peg$currPos += 6;\n                                                                                                                                    } else {\n                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1038); }\n                                                                                                                                    }\n                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                      if (input.substr(peg$currPos, 6) === peg$c1039) {\n                                                                                                                                        s0 = peg$c1039;\n                                                                                                                                        peg$currPos += 6;\n                                                                                                                                      } else {\n                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1040); }\n                                                                                                                                      }\n                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                        if (input.substr(peg$currPos, 6) === peg$c1041) {\n                                                                                                                                          s0 = peg$c1041;\n                                                                                                                                          peg$currPos += 6;\n                                                                                                                                        } else {\n                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1042); }\n                                                                                                                                        }\n                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                          if (input.substr(peg$currPos, 6) === peg$c1043) {\n                                                                                                                                            s0 = peg$c1043;\n                                                                                                                                            peg$currPos += 6;\n                                                                                                                                          } else {\n                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1044); }\n                                                                                                                                          }\n                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                            if (input.substr(peg$currPos, 6) === peg$c1045) {\n                                                                                                                                              s0 = peg$c1045;\n                                                                                                                                              peg$currPos += 6;\n                                                                                                                                            } else {\n                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1046); }\n                                                                                                                                            }\n                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                              if (input.substr(peg$currPos, 6) === peg$c1047) {\n                                                                                                                                                s0 = peg$c1047;\n                                                                                                                                                peg$currPos += 6;\n                                                                                                                                              } else {\n                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1048); }\n                                                                                                                                              }\n                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                if (input.substr(peg$currPos, 6) === peg$c1049) {\n                                                                                                                                                  s0 = peg$c1049;\n                                                                                                                                                  peg$currPos += 6;\n                                                                                                                                                } else {\n                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1050); }\n                                                                                                                                                }\n                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                  if (input.substr(peg$currPos, 6) === peg$c1051) {\n                                                                                                                                                    s0 = peg$c1051;\n                                                                                                                                                    peg$currPos += 6;\n                                                                                                                                                  } else {\n                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1052); }\n                                                                                                                                                  }\n                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                    if (input.substr(peg$currPos, 6) === peg$c1053) {\n                                                                                                                                                      s0 = peg$c1053;\n                                                                                                                                                      peg$currPos += 6;\n                                                                                                                                                    } else {\n                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1054); }\n                                                                                                                                                    }\n                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                      if (input.substr(peg$currPos, 6) === peg$c1055) {\n                                                                                                                                                        s0 = peg$c1055;\n                                                                                                                                                        peg$currPos += 6;\n                                                                                                                                                      } else {\n                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1056); }\n                                                                                                                                                      }\n                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                        if (input.substr(peg$currPos, 6) === peg$c1057) {\n                                                                                                                                                          s0 = peg$c1057;\n                                                                                                                                                          peg$currPos += 6;\n                                                                                                                                                        } else {\n                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1058); }\n                                                                                                                                                        }\n                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                          if (input.substr(peg$currPos, 6) === peg$c1059) {\n                                                                                                                                                            s0 = peg$c1059;\n                                                                                                                                                            peg$currPos += 6;\n                                                                                                                                                          } else {\n                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1060); }\n                                                                                                                                                          }\n                                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                                            if (input.substr(peg$currPos, 6) === peg$c1061) {\n                                                                                                                                                              s0 = peg$c1061;\n                                                                                                                                                              peg$currPos += 6;\n                                                                                                                                                            } else {\n                                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1062); }\n                                                                                                                                                            }\n                                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                                              if (input.substr(peg$currPos, 6) === peg$c1063) {\n                                                                                                                                                                s0 = peg$c1063;\n                                                                                                                                                                peg$currPos += 6;\n                                                                                                                                                              } else {\n                                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1064); }\n                                                                                                                                                              }\n                                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                                if (input.substr(peg$currPos, 6) === peg$c1065) {\n                                                                                                                                                                  s0 = peg$c1065;\n                                                                                                                                                                  peg$currPos += 6;\n                                                                                                                                                                } else {\n                                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1066); }\n                                                                                                                                                                }\n                                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                                  if (input.substr(peg$currPos, 6) === peg$c1067) {\n                                                                                                                                                                    s0 = peg$c1067;\n                                                                                                                                                                    peg$currPos += 6;\n                                                                                                                                                                  } else {\n                                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1068); }\n                                                                                                                                                                  }\n                                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                                    if (input.substr(peg$currPos, 6) === peg$c1069) {\n                                                                                                                                                                      s0 = peg$c1069;\n                                                                                                                                                                      peg$currPos += 6;\n                                                                                                                                                                    } else {\n                                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1070); }\n                                                                                                                                                                    }\n                                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                                      if (input.substr(peg$currPos, 6) === peg$c1071) {\n                                                                                                                                                                        s0 = peg$c1071;\n                                                                                                                                                                        peg$currPos += 6;\n                                                                                                                                                                      } else {\n                                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1072); }\n                                                                                                                                                                      }\n                                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                                        if (input.substr(peg$currPos, 6) === peg$c1073) {\n                                                                                                                                                                          s0 = peg$c1073;\n                                                                                                                                                                          peg$currPos += 6;\n                                                                                                                                                                        } else {\n                                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1074); }\n                                                                                                                                                                        }\n                                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                                          if (input.substr(peg$currPos, 6) === peg$c1075) {\n                                                                                                                                                                            s0 = peg$c1075;\n                                                                                                                                                                            peg$currPos += 6;\n                                                                                                                                                                          } else {\n                                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1076); }\n                                                                                                                                                                          }\n                                                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                                                            if (input.substr(peg$currPos, 6) === peg$c1077) {\n                                                                                                                                                                              s0 = peg$c1077;\n                                                                                                                                                                              peg$currPos += 6;\n                                                                                                                                                                            } else {\n                                                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1078); }\n                                                                                                                                                                            }\n                                                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                                                              if (input.substr(peg$currPos, 6) === peg$c1079) {\n                                                                                                                                                                                s0 = peg$c1079;\n                                                                                                                                                                                peg$currPos += 6;\n                                                                                                                                                                              } else {\n                                                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1080); }\n                                                                                                                                                                              }\n                                                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                if (input.substr(peg$currPos, 6) === peg$c1081) {\n                                                                                                                                                                                  s0 = peg$c1081;\n                                                                                                                                                                                  peg$currPos += 6;\n                                                                                                                                                                                } else {\n                                                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1082); }\n                                                                                                                                                                                }\n                                                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                  if (input.substr(peg$currPos, 6) === peg$c1083) {\n                                                                                                                                                                                    s0 = peg$c1083;\n                                                                                                                                                                                    peg$currPos += 6;\n                                                                                                                                                                                  } else {\n                                                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1084); }\n                                                                                                                                                                                  }\n                                                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                    if (input.substr(peg$currPos, 6) === peg$c1085) {\n                                                                                                                                                                                      s0 = peg$c1085;\n                                                                                                                                                                                      peg$currPos += 6;\n                                                                                                                                                                                    } else {\n                                                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1086); }\n                                                                                                                                                                                    }\n                                                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                      if (input.substr(peg$currPos, 6) === peg$c1087) {\n                                                                                                                                                                                        s0 = peg$c1087;\n                                                                                                                                                                                        peg$currPos += 6;\n                                                                                                                                                                                      } else {\n                                                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1088); }\n                                                                                                                                                                                      }\n                                                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                        if (input.substr(peg$currPos, 6) === peg$c1089) {\n                                                                                                                                                                                          s0 = peg$c1089;\n                                                                                                                                                                                          peg$currPos += 6;\n                                                                                                                                                                                        } else {\n                                                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1090); }\n                                                                                                                                                                                        }\n                                                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                          if (input.substr(peg$currPos, 6) === peg$c1091) {\n                                                                                                                                                                                            s0 = peg$c1091;\n                                                                                                                                                                                            peg$currPos += 6;\n                                                                                                                                                                                          } else {\n                                                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1092); }\n                                                                                                                                                                                          }\n                                                                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                            if (input.substr(peg$currPos, 6) === peg$c1093) {\n                                                                                                                                                                                              s0 = peg$c1093;\n                                                                                                                                                                                              peg$currPos += 6;\n                                                                                                                                                                                            } else {\n                                                                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1094); }\n                                                                                                                                                                                            }\n                                                                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                              if (input.substr(peg$currPos, 6) === peg$c1095) {\n                                                                                                                                                                                                s0 = peg$c1095;\n                                                                                                                                                                                                peg$currPos += 6;\n                                                                                                                                                                                              } else {\n                                                                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1096); }\n                                                                                                                                                                                              }\n                                                                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                if (input.substr(peg$currPos, 6) === peg$c1097) {\n                                                                                                                                                                                                  s0 = peg$c1097;\n                                                                                                                                                                                                  peg$currPos += 6;\n                                                                                                                                                                                                } else {\n                                                                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1098); }\n                                                                                                                                                                                                }\n                                                                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                  if (input.substr(peg$currPos, 6) === peg$c1099) {\n                                                                                                                                                                                                    s0 = peg$c1099;\n                                                                                                                                                                                                    peg$currPos += 6;\n                                                                                                                                                                                                  } else {\n                                                                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1100); }\n                                                                                                                                                                                                  }\n                                                                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                    if (input.substr(peg$currPos, 6) === peg$c1101) {\n                                                                                                                                                                                                      s0 = peg$c1101;\n                                                                                                                                                                                                      peg$currPos += 6;\n                                                                                                                                                                                                    } else {\n                                                                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1102); }\n                                                                                                                                                                                                    }\n                                                                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                      if (input.substr(peg$currPos, 6) === peg$c1103) {\n                                                                                                                                                                                                        s0 = peg$c1103;\n                                                                                                                                                                                                        peg$currPos += 6;\n                                                                                                                                                                                                      } else {\n                                                                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1104); }\n                                                                                                                                                                                                      }\n                                                                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                        if (input.substr(peg$currPos, 6) === peg$c1105) {\n                                                                                                                                                                                                          s0 = peg$c1105;\n                                                                                                                                                                                                          peg$currPos += 6;\n                                                                                                                                                                                                        } else {\n                                                                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1106); }\n                                                                                                                                                                                                        }\n                                                                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                          if (input.substr(peg$currPos, 6) === peg$c1107) {\n                                                                                                                                                                                                            s0 = peg$c1107;\n                                                                                                                                                                                                            peg$currPos += 6;\n                                                                                                                                                                                                          } else {\n                                                                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1108); }\n                                                                                                                                                                                                          }\n                                                                                                                                                                                                        }\n                                                                                                                                                                                                      }\n                                                                                                                                                                                                    }\n                                                                                                                                                                                                  }\n                                                                                                                                                                                                }\n                                                                                                                                                                                              }\n                                                                                                                                                                                            }\n                                                                                                                                                                                          }\n                                                                                                                                                                                        }\n                                                                                                                                                                                      }\n                                                                                                                                                                                    }\n                                                                                                                                                                                  }\n                                                                                                                                                                                }\n                                                                                                                                                                              }\n                                                                                                                                                                            }\n                                                                                                                                                                          }\n                                                                                                                                                                        }\n                                                                                                                                                                      }\n                                                                                                                                                                    }\n                                                                                                                                                                  }\n                                                                                                                                                                }\n                                                                                                                                                              }\n                                                                                                                                                            }\n                                                                                                                                                          }\n                                                                                                                                                        }\n                                                                                                                                                      }\n                                                                                                                                                    }\n                                                                                                                                                  }\n                                                                                                                                                }\n                                                                                                                                              }\n                                                                                                                                            }\n                                                                                                                                          }\n                                                                                                                                        }\n                                                                                                                                      }\n                                                                                                                                    }\n                                                                                                                                  }\n                                                                                                                                }\n                                                                                                                              }\n                                                                                                                            }\n                                                                                                                          }\n                                                                                                                        }\n                                                                                                                      }\n                                                                                                                    }\n                                                                                                                  }\n                                                                                                                }\n                                                                                                              }\n                                                                                                            }\n                                                                                                          }\n                                                                                                        }\n                                                                                                      }\n                                                                                                    }\n                                                                                                  }\n                                                                                                }\n                                                                                              }\n                                                                                            }\n                                                                                          }\n                                                                                        }\n                                                                                      }\n                                                                                    }\n                                                                                  }\n                                                                                }\n                                                                              }\n                                                                            }\n                                                                          }\n                                                                        }\n                                                                      }\n                                                                    }\n                                                                  }\n                                                                }\n                                                              }\n                                                            }\n                                                          }\n                                                        }\n                                                      }\n                                                    }\n                                                  }\n                                                }\n                                              }\n                                            }\n                                          }\n                                        }\n                                      }\n                                    }\n                                  }\n                                }\n                              }\n                            }\n                          }\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordSuffix5(): any {\n    let s0;\n\n    if (input.substr(peg$currPos, 6) === peg$c1109) {\n      s0 = peg$c1109;\n      peg$currPos += 6;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c1110); }\n    }\n    if (s0 as any === peg$FAILED) {\n      if (input.substr(peg$currPos, 6) === peg$c1111) {\n        s0 = peg$c1111;\n        peg$currPos += 6;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c1112); }\n      }\n      if (s0 as any === peg$FAILED) {\n        if (input.substr(peg$currPos, 6) === peg$c1113) {\n          s0 = peg$c1113;\n          peg$currPos += 6;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c1114); }\n        }\n        if (s0 as any === peg$FAILED) {\n          if (input.substr(peg$currPos, 6) === peg$c1115) {\n            s0 = peg$c1115;\n            peg$currPos += 6;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c1116); }\n          }\n          if (s0 as any === peg$FAILED) {\n            if (input.substr(peg$currPos, 6) === peg$c1117) {\n              s0 = peg$c1117;\n              peg$currPos += 6;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c1118); }\n            }\n            if (s0 as any === peg$FAILED) {\n              if (input.substr(peg$currPos, 6) === peg$c1119) {\n                s0 = peg$c1119;\n                peg$currPos += 6;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c1120); }\n              }\n              if (s0 as any === peg$FAILED) {\n                if (input.substr(peg$currPos, 6) === peg$c1121) {\n                  s0 = peg$c1121;\n                  peg$currPos += 6;\n                } else {\n                  s0 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c1122); }\n                }\n                if (s0 as any === peg$FAILED) {\n                  if (input.substr(peg$currPos, 6) === peg$c1123) {\n                    s0 = peg$c1123;\n                    peg$currPos += 6;\n                  } else {\n                    s0 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c1124); }\n                  }\n                  if (s0 as any === peg$FAILED) {\n                    if (input.substr(peg$currPos, 6) === peg$c1125) {\n                      s0 = peg$c1125;\n                      peg$currPos += 6;\n                    } else {\n                      s0 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$c1126); }\n                    }\n                    if (s0 as any === peg$FAILED) {\n                      if (input.substr(peg$currPos, 6) === peg$c1127) {\n                        s0 = peg$c1127;\n                        peg$currPos += 6;\n                      } else {\n                        s0 = peg$FAILED;\n                        if (peg$silentFails === 0) { peg$fail(peg$c1128); }\n                      }\n                      if (s0 as any === peg$FAILED) {\n                        if (input.substr(peg$currPos, 6) === peg$c1129) {\n                          s0 = peg$c1129;\n                          peg$currPos += 6;\n                        } else {\n                          s0 = peg$FAILED;\n                          if (peg$silentFails === 0) { peg$fail(peg$c1130); }\n                        }\n                        if (s0 as any === peg$FAILED) {\n                          if (input.substr(peg$currPos, 6) === peg$c1131) {\n                            s0 = peg$c1131;\n                            peg$currPos += 6;\n                          } else {\n                            s0 = peg$FAILED;\n                            if (peg$silentFails === 0) { peg$fail(peg$c1132); }\n                          }\n                          if (s0 as any === peg$FAILED) {\n                            if (input.substr(peg$currPos, 6) === peg$c1133) {\n                              s0 = peg$c1133;\n                              peg$currPos += 6;\n                            } else {\n                              s0 = peg$FAILED;\n                              if (peg$silentFails === 0) { peg$fail(peg$c1134); }\n                            }\n                            if (s0 as any === peg$FAILED) {\n                              if (input.substr(peg$currPos, 6) === peg$c1135) {\n                                s0 = peg$c1135;\n                                peg$currPos += 6;\n                              } else {\n                                s0 = peg$FAILED;\n                                if (peg$silentFails === 0) { peg$fail(peg$c1136); }\n                              }\n                              if (s0 as any === peg$FAILED) {\n                                if (input.substr(peg$currPos, 6) === peg$c1137) {\n                                  s0 = peg$c1137;\n                                  peg$currPos += 6;\n                                } else {\n                                  s0 = peg$FAILED;\n                                  if (peg$silentFails === 0) { peg$fail(peg$c1138); }\n                                }\n                                if (s0 as any === peg$FAILED) {\n                                  if (input.substr(peg$currPos, 6) === peg$c1139) {\n                                    s0 = peg$c1139;\n                                    peg$currPos += 6;\n                                  } else {\n                                    s0 = peg$FAILED;\n                                    if (peg$silentFails === 0) { peg$fail(peg$c1140); }\n                                  }\n                                  if (s0 as any === peg$FAILED) {\n                                    if (input.substr(peg$currPos, 6) === peg$c1141) {\n                                      s0 = peg$c1141;\n                                      peg$currPos += 6;\n                                    } else {\n                                      s0 = peg$FAILED;\n                                      if (peg$silentFails === 0) { peg$fail(peg$c1142); }\n                                    }\n                                    if (s0 as any === peg$FAILED) {\n                                      if (input.substr(peg$currPos, 6) === peg$c1143) {\n                                        s0 = peg$c1143;\n                                        peg$currPos += 6;\n                                      } else {\n                                        s0 = peg$FAILED;\n                                        if (peg$silentFails === 0) { peg$fail(peg$c1144); }\n                                      }\n                                      if (s0 as any === peg$FAILED) {\n                                        if (input.substr(peg$currPos, 6) === peg$c1145) {\n                                          s0 = peg$c1145;\n                                          peg$currPos += 6;\n                                        } else {\n                                          s0 = peg$FAILED;\n                                          if (peg$silentFails === 0) { peg$fail(peg$c1146); }\n                                        }\n                                        if (s0 as any === peg$FAILED) {\n                                          if (input.substr(peg$currPos, 6) === peg$c1147) {\n                                            s0 = peg$c1147;\n                                            peg$currPos += 6;\n                                          } else {\n                                            s0 = peg$FAILED;\n                                            if (peg$silentFails === 0) { peg$fail(peg$c1148); }\n                                          }\n                                          if (s0 as any === peg$FAILED) {\n                                            if (input.substr(peg$currPos, 6) === peg$c1149) {\n                                              s0 = peg$c1149;\n                                              peg$currPos += 6;\n                                            } else {\n                                              s0 = peg$FAILED;\n                                              if (peg$silentFails === 0) { peg$fail(peg$c1150); }\n                                            }\n                                            if (s0 as any === peg$FAILED) {\n                                              if (input.substr(peg$currPos, 6) === peg$c1151) {\n                                                s0 = peg$c1151;\n                                                peg$currPos += 6;\n                                              } else {\n                                                s0 = peg$FAILED;\n                                                if (peg$silentFails === 0) { peg$fail(peg$c1152); }\n                                              }\n                                              if (s0 as any === peg$FAILED) {\n                                                if (input.substr(peg$currPos, 6) === peg$c1153) {\n                                                  s0 = peg$c1153;\n                                                  peg$currPos += 6;\n                                                } else {\n                                                  s0 = peg$FAILED;\n                                                  if (peg$silentFails === 0) { peg$fail(peg$c1154); }\n                                                }\n                                                if (s0 as any === peg$FAILED) {\n                                                  if (input.substr(peg$currPos, 6) === peg$c1155) {\n                                                    s0 = peg$c1155;\n                                                    peg$currPos += 6;\n                                                  } else {\n                                                    s0 = peg$FAILED;\n                                                    if (peg$silentFails === 0) { peg$fail(peg$c1156); }\n                                                  }\n                                                  if (s0 as any === peg$FAILED) {\n                                                    if (input.substr(peg$currPos, 6) === peg$c1157) {\n                                                      s0 = peg$c1157;\n                                                      peg$currPos += 6;\n                                                    } else {\n                                                      s0 = peg$FAILED;\n                                                      if (peg$silentFails === 0) { peg$fail(peg$c1158); }\n                                                    }\n                                                    if (s0 as any === peg$FAILED) {\n                                                      if (input.substr(peg$currPos, 6) === peg$c1159) {\n                                                        s0 = peg$c1159;\n                                                        peg$currPos += 6;\n                                                      } else {\n                                                        s0 = peg$FAILED;\n                                                        if (peg$silentFails === 0) { peg$fail(peg$c1160); }\n                                                      }\n                                                      if (s0 as any === peg$FAILED) {\n                                                        if (input.substr(peg$currPos, 6) === peg$c1161) {\n                                                          s0 = peg$c1161;\n                                                          peg$currPos += 6;\n                                                        } else {\n                                                          s0 = peg$FAILED;\n                                                          if (peg$silentFails === 0) { peg$fail(peg$c1162); }\n                                                        }\n                                                        if (s0 as any === peg$FAILED) {\n                                                          if (input.substr(peg$currPos, 6) === peg$c1163) {\n                                                            s0 = peg$c1163;\n                                                            peg$currPos += 6;\n                                                          } else {\n                                                            s0 = peg$FAILED;\n                                                            if (peg$silentFails === 0) { peg$fail(peg$c1164); }\n                                                          }\n                                                          if (s0 as any === peg$FAILED) {\n                                                            if (input.substr(peg$currPos, 6) === peg$c1165) {\n                                                              s0 = peg$c1165;\n                                                              peg$currPos += 6;\n                                                            } else {\n                                                              s0 = peg$FAILED;\n                                                              if (peg$silentFails === 0) { peg$fail(peg$c1166); }\n                                                            }\n                                                            if (s0 as any === peg$FAILED) {\n                                                              if (input.substr(peg$currPos, 6) === peg$c1167) {\n                                                                s0 = peg$c1167;\n                                                                peg$currPos += 6;\n                                                              } else {\n                                                                s0 = peg$FAILED;\n                                                                if (peg$silentFails === 0) { peg$fail(peg$c1168); }\n                                                              }\n                                                              if (s0 as any === peg$FAILED) {\n                                                                if (input.substr(peg$currPos, 6) === peg$c1169) {\n                                                                  s0 = peg$c1169;\n                                                                  peg$currPos += 6;\n                                                                } else {\n                                                                  s0 = peg$FAILED;\n                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1170); }\n                                                                }\n                                                                if (s0 as any === peg$FAILED) {\n                                                                  if (input.substr(peg$currPos, 6) === peg$c1171) {\n                                                                    s0 = peg$c1171;\n                                                                    peg$currPos += 6;\n                                                                  } else {\n                                                                    s0 = peg$FAILED;\n                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1172); }\n                                                                  }\n                                                                  if (s0 as any === peg$FAILED) {\n                                                                    if (input.substr(peg$currPos, 6) === peg$c1173) {\n                                                                      s0 = peg$c1173;\n                                                                      peg$currPos += 6;\n                                                                    } else {\n                                                                      s0 = peg$FAILED;\n                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1174); }\n                                                                    }\n                                                                    if (s0 as any === peg$FAILED) {\n                                                                      if (input.substr(peg$currPos, 6) === peg$c1175) {\n                                                                        s0 = peg$c1175;\n                                                                        peg$currPos += 6;\n                                                                      } else {\n                                                                        s0 = peg$FAILED;\n                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1176); }\n                                                                      }\n                                                                      if (s0 as any === peg$FAILED) {\n                                                                        if (input.substr(peg$currPos, 6) === peg$c1177) {\n                                                                          s0 = peg$c1177;\n                                                                          peg$currPos += 6;\n                                                                        } else {\n                                                                          s0 = peg$FAILED;\n                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1178); }\n                                                                        }\n                                                                        if (s0 as any === peg$FAILED) {\n                                                                          if (input.substr(peg$currPos, 6) === peg$c1179) {\n                                                                            s0 = peg$c1179;\n                                                                            peg$currPos += 6;\n                                                                          } else {\n                                                                            s0 = peg$FAILED;\n                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1180); }\n                                                                          }\n                                                                          if (s0 as any === peg$FAILED) {\n                                                                            if (input.substr(peg$currPos, 6) === peg$c1181) {\n                                                                              s0 = peg$c1181;\n                                                                              peg$currPos += 6;\n                                                                            } else {\n                                                                              s0 = peg$FAILED;\n                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1182); }\n                                                                            }\n                                                                            if (s0 as any === peg$FAILED) {\n                                                                              if (input.substr(peg$currPos, 6) === peg$c1183) {\n                                                                                s0 = peg$c1183;\n                                                                                peg$currPos += 6;\n                                                                              } else {\n                                                                                s0 = peg$FAILED;\n                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1184); }\n                                                                              }\n                                                                              if (s0 as any === peg$FAILED) {\n                                                                                if (input.substr(peg$currPos, 6) === peg$c1185) {\n                                                                                  s0 = peg$c1185;\n                                                                                  peg$currPos += 6;\n                                                                                } else {\n                                                                                  s0 = peg$FAILED;\n                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1186); }\n                                                                                }\n                                                                                if (s0 as any === peg$FAILED) {\n                                                                                  if (input.substr(peg$currPos, 6) === peg$c1187) {\n                                                                                    s0 = peg$c1187;\n                                                                                    peg$currPos += 6;\n                                                                                  } else {\n                                                                                    s0 = peg$FAILED;\n                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1188); }\n                                                                                  }\n                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                    if (input.substr(peg$currPos, 6) === peg$c1169) {\n                                                                                      s0 = peg$c1169;\n                                                                                      peg$currPos += 6;\n                                                                                    } else {\n                                                                                      s0 = peg$FAILED;\n                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1170); }\n                                                                                    }\n                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                      if (input.substr(peg$currPos, 6) === peg$c1189) {\n                                                                                        s0 = peg$c1189;\n                                                                                        peg$currPos += 6;\n                                                                                      } else {\n                                                                                        s0 = peg$FAILED;\n                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1190); }\n                                                                                      }\n                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                        if (input.substr(peg$currPos, 6) === peg$c1191) {\n                                                                                          s0 = peg$c1191;\n                                                                                          peg$currPos += 6;\n                                                                                        } else {\n                                                                                          s0 = peg$FAILED;\n                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1192); }\n                                                                                        }\n                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                          if (input.substr(peg$currPos, 6) === peg$c1193) {\n                                                                                            s0 = peg$c1193;\n                                                                                            peg$currPos += 6;\n                                                                                          } else {\n                                                                                            s0 = peg$FAILED;\n                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1194); }\n                                                                                          }\n                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                            if (input.substr(peg$currPos, 6) === peg$c1195) {\n                                                                                              s0 = peg$c1195;\n                                                                                              peg$currPos += 6;\n                                                                                            } else {\n                                                                                              s0 = peg$FAILED;\n                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1196); }\n                                                                                            }\n                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                              if (input.substr(peg$currPos, 6) === peg$c1197) {\n                                                                                                s0 = peg$c1197;\n                                                                                                peg$currPos += 6;\n                                                                                              } else {\n                                                                                                s0 = peg$FAILED;\n                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1198); }\n                                                                                              }\n                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                if (input.substr(peg$currPos, 6) === peg$c1199) {\n                                                                                                  s0 = peg$c1199;\n                                                                                                  peg$currPos += 6;\n                                                                                                } else {\n                                                                                                  s0 = peg$FAILED;\n                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1200); }\n                                                                                                }\n                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                  if (input.substr(peg$currPos, 6) === peg$c1201) {\n                                                                                                    s0 = peg$c1201;\n                                                                                                    peg$currPos += 6;\n                                                                                                  } else {\n                                                                                                    s0 = peg$FAILED;\n                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1202); }\n                                                                                                  }\n                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                    if (input.substr(peg$currPos, 6) === peg$c1203) {\n                                                                                                      s0 = peg$c1203;\n                                                                                                      peg$currPos += 6;\n                                                                                                    } else {\n                                                                                                      s0 = peg$FAILED;\n                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1204); }\n                                                                                                    }\n                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                      if (input.substr(peg$currPos, 6) === peg$c1205) {\n                                                                                                        s0 = peg$c1205;\n                                                                                                        peg$currPos += 6;\n                                                                                                      } else {\n                                                                                                        s0 = peg$FAILED;\n                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1206); }\n                                                                                                      }\n                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                        if (input.substr(peg$currPos, 6) === peg$c1207) {\n                                                                                                          s0 = peg$c1207;\n                                                                                                          peg$currPos += 6;\n                                                                                                        } else {\n                                                                                                          s0 = peg$FAILED;\n                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1208); }\n                                                                                                        }\n                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                          if (input.substr(peg$currPos, 6) === peg$c1209) {\n                                                                                                            s0 = peg$c1209;\n                                                                                                            peg$currPos += 6;\n                                                                                                          } else {\n                                                                                                            s0 = peg$FAILED;\n                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1210); }\n                                                                                                          }\n                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                            if (input.substr(peg$currPos, 6) === peg$c1211) {\n                                                                                                              s0 = peg$c1211;\n                                                                                                              peg$currPos += 6;\n                                                                                                            } else {\n                                                                                                              s0 = peg$FAILED;\n                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1212); }\n                                                                                                            }\n                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                              if (input.substr(peg$currPos, 6) === peg$c1213) {\n                                                                                                                s0 = peg$c1213;\n                                                                                                                peg$currPos += 6;\n                                                                                                              } else {\n                                                                                                                s0 = peg$FAILED;\n                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1214); }\n                                                                                                              }\n                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                if (input.substr(peg$currPos, 6) === peg$c1215) {\n                                                                                                                  s0 = peg$c1215;\n                                                                                                                  peg$currPos += 6;\n                                                                                                                } else {\n                                                                                                                  s0 = peg$FAILED;\n                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1216); }\n                                                                                                                }\n                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                  if (input.substr(peg$currPos, 6) === peg$c1217) {\n                                                                                                                    s0 = peg$c1217;\n                                                                                                                    peg$currPos += 6;\n                                                                                                                  } else {\n                                                                                                                    s0 = peg$FAILED;\n                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1218); }\n                                                                                                                  }\n                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                    if (input.substr(peg$currPos, 6) === peg$c1219) {\n                                                                                                                      s0 = peg$c1219;\n                                                                                                                      peg$currPos += 6;\n                                                                                                                    } else {\n                                                                                                                      s0 = peg$FAILED;\n                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1220); }\n                                                                                                                    }\n                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                      if (input.substr(peg$currPos, 6) === peg$c1221) {\n                                                                                                                        s0 = peg$c1221;\n                                                                                                                        peg$currPos += 6;\n                                                                                                                      } else {\n                                                                                                                        s0 = peg$FAILED;\n                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1222); }\n                                                                                                                      }\n                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                        if (input.substr(peg$currPos, 6) === peg$c1223) {\n                                                                                                                          s0 = peg$c1223;\n                                                                                                                          peg$currPos += 6;\n                                                                                                                        } else {\n                                                                                                                          s0 = peg$FAILED;\n                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1224); }\n                                                                                                                        }\n                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                          if (input.substr(peg$currPos, 6) === peg$c1225) {\n                                                                                                                            s0 = peg$c1225;\n                                                                                                                            peg$currPos += 6;\n                                                                                                                          } else {\n                                                                                                                            s0 = peg$FAILED;\n                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1226); }\n                                                                                                                          }\n                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                            if (input.substr(peg$currPos, 6) === peg$c1169) {\n                                                                                                                              s0 = peg$c1169;\n                                                                                                                              peg$currPos += 6;\n                                                                                                                            } else {\n                                                                                                                              s0 = peg$FAILED;\n                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1170); }\n                                                                                                                            }\n                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                              if (input.substr(peg$currPos, 6) === peg$c1227) {\n                                                                                                                                s0 = peg$c1227;\n                                                                                                                                peg$currPos += 6;\n                                                                                                                              } else {\n                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1228); }\n                                                                                                                              }\n                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                if (input.substr(peg$currPos, 6) === peg$c1229) {\n                                                                                                                                  s0 = peg$c1229;\n                                                                                                                                  peg$currPos += 6;\n                                                                                                                                } else {\n                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1230); }\n                                                                                                                                }\n                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                  if (input.substr(peg$currPos, 6) === peg$c1231) {\n                                                                                                                                    s0 = peg$c1231;\n                                                                                                                                    peg$currPos += 6;\n                                                                                                                                  } else {\n                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1232); }\n                                                                                                                                  }\n                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                    if (input.substr(peg$currPos, 6) === peg$c1233) {\n                                                                                                                                      s0 = peg$c1233;\n                                                                                                                                      peg$currPos += 6;\n                                                                                                                                    } else {\n                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1234); }\n                                                                                                                                    }\n                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                      if (input.substr(peg$currPos, 6) === peg$c1235) {\n                                                                                                                                        s0 = peg$c1235;\n                                                                                                                                        peg$currPos += 6;\n                                                                                                                                      } else {\n                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1236); }\n                                                                                                                                      }\n                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                        if (input.substr(peg$currPos, 6) === peg$c1207) {\n                                                                                                                                          s0 = peg$c1207;\n                                                                                                                                          peg$currPos += 6;\n                                                                                                                                        } else {\n                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1208); }\n                                                                                                                                        }\n                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                          if (input.substr(peg$currPos, 6) === peg$c1237) {\n                                                                                                                                            s0 = peg$c1237;\n                                                                                                                                            peg$currPos += 6;\n                                                                                                                                          } else {\n                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1238); }\n                                                                                                                                          }\n                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                            if (input.substr(peg$currPos, 6) === peg$c1239) {\n                                                                                                                                              s0 = peg$c1239;\n                                                                                                                                              peg$currPos += 6;\n                                                                                                                                            } else {\n                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1240); }\n                                                                                                                                            }\n                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                              if (input.substr(peg$currPos, 6) === peg$c1241) {\n                                                                                                                                                s0 = peg$c1241;\n                                                                                                                                                peg$currPos += 6;\n                                                                                                                                              } else {\n                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1242); }\n                                                                                                                                              }\n                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                if (input.substr(peg$currPos, 6) === peg$c1243) {\n                                                                                                                                                  s0 = peg$c1243;\n                                                                                                                                                  peg$currPos += 6;\n                                                                                                                                                } else {\n                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1244); }\n                                                                                                                                                }\n                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                  if (input.substr(peg$currPos, 6) === peg$c1245) {\n                                                                                                                                                    s0 = peg$c1245;\n                                                                                                                                                    peg$currPos += 6;\n                                                                                                                                                  } else {\n                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1246); }\n                                                                                                                                                  }\n                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                    if (input.substr(peg$currPos, 6) === peg$c1247) {\n                                                                                                                                                      s0 = peg$c1247;\n                                                                                                                                                      peg$currPos += 6;\n                                                                                                                                                    } else {\n                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1248); }\n                                                                                                                                                    }\n                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                      if (input.substr(peg$currPos, 5) === peg$c1249) {\n                                                                                                                                                        s0 = peg$c1249;\n                                                                                                                                                        peg$currPos += 5;\n                                                                                                                                                      } else {\n                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1250); }\n                                                                                                                                                      }\n                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                        if (input.substr(peg$currPos, 5) === peg$c1251) {\n                                                                                                                                                          s0 = peg$c1251;\n                                                                                                                                                          peg$currPos += 5;\n                                                                                                                                                        } else {\n                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1252); }\n                                                                                                                                                        }\n                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                          if (input.substr(peg$currPos, 5) === peg$c1253) {\n                                                                                                                                                            s0 = peg$c1253;\n                                                                                                                                                            peg$currPos += 5;\n                                                                                                                                                          } else {\n                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1254); }\n                                                                                                                                                          }\n                                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                                            if (input.substr(peg$currPos, 5) === peg$c1255) {\n                                                                                                                                                              s0 = peg$c1255;\n                                                                                                                                                              peg$currPos += 5;\n                                                                                                                                                            } else {\n                                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1256); }\n                                                                                                                                                            }\n                                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                                              if (input.substr(peg$currPos, 5) === peg$c1257) {\n                                                                                                                                                                s0 = peg$c1257;\n                                                                                                                                                                peg$currPos += 5;\n                                                                                                                                                              } else {\n                                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1258); }\n                                                                                                                                                              }\n                                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                                if (input.substr(peg$currPos, 5) === peg$c1259) {\n                                                                                                                                                                  s0 = peg$c1259;\n                                                                                                                                                                  peg$currPos += 5;\n                                                                                                                                                                } else {\n                                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1260); }\n                                                                                                                                                                }\n                                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                                  if (input.substr(peg$currPos, 5) === peg$c1261) {\n                                                                                                                                                                    s0 = peg$c1261;\n                                                                                                                                                                    peg$currPos += 5;\n                                                                                                                                                                  } else {\n                                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1262); }\n                                                                                                                                                                  }\n                                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                                    if (input.substr(peg$currPos, 5) === peg$c1263) {\n                                                                                                                                                                      s0 = peg$c1263;\n                                                                                                                                                                      peg$currPos += 5;\n                                                                                                                                                                    } else {\n                                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1264); }\n                                                                                                                                                                    }\n                                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                                      if (input.substr(peg$currPos, 5) === peg$c1265) {\n                                                                                                                                                                        s0 = peg$c1265;\n                                                                                                                                                                        peg$currPos += 5;\n                                                                                                                                                                      } else {\n                                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1266); }\n                                                                                                                                                                      }\n                                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                                        if (input.substr(peg$currPos, 5) === peg$c1267) {\n                                                                                                                                                                          s0 = peg$c1267;\n                                                                                                                                                                          peg$currPos += 5;\n                                                                                                                                                                        } else {\n                                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1268); }\n                                                                                                                                                                        }\n                                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                                          if (input.substr(peg$currPos, 5) === peg$c1269) {\n                                                                                                                                                                            s0 = peg$c1269;\n                                                                                                                                                                            peg$currPos += 5;\n                                                                                                                                                                          } else {\n                                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1270); }\n                                                                                                                                                                          }\n                                                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                                                            if (input.substr(peg$currPos, 5) === peg$c1271) {\n                                                                                                                                                                              s0 = peg$c1271;\n                                                                                                                                                                              peg$currPos += 5;\n                                                                                                                                                                            } else {\n                                                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1272); }\n                                                                                                                                                                            }\n                                                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                                                              if (input.substr(peg$currPos, 5) === peg$c1273) {\n                                                                                                                                                                                s0 = peg$c1273;\n                                                                                                                                                                                peg$currPos += 5;\n                                                                                                                                                                              } else {\n                                                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1274); }\n                                                                                                                                                                              }\n                                                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                if (input.substr(peg$currPos, 5) === peg$c1271) {\n                                                                                                                                                                                  s0 = peg$c1271;\n                                                                                                                                                                                  peg$currPos += 5;\n                                                                                                                                                                                } else {\n                                                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1272); }\n                                                                                                                                                                                }\n                                                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                  if (input.substr(peg$currPos, 5) === peg$c1275) {\n                                                                                                                                                                                    s0 = peg$c1275;\n                                                                                                                                                                                    peg$currPos += 5;\n                                                                                                                                                                                  } else {\n                                                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1276); }\n                                                                                                                                                                                  }\n                                                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                    if (input.substr(peg$currPos, 5) === peg$c1277) {\n                                                                                                                                                                                      s0 = peg$c1277;\n                                                                                                                                                                                      peg$currPos += 5;\n                                                                                                                                                                                    } else {\n                                                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1278); }\n                                                                                                                                                                                    }\n                                                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                      if (input.substr(peg$currPos, 5) === peg$c1279) {\n                                                                                                                                                                                        s0 = peg$c1279;\n                                                                                                                                                                                        peg$currPos += 5;\n                                                                                                                                                                                      } else {\n                                                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1280); }\n                                                                                                                                                                                      }\n                                                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                        if (input.substr(peg$currPos, 5) === peg$c1281) {\n                                                                                                                                                                                          s0 = peg$c1281;\n                                                                                                                                                                                          peg$currPos += 5;\n                                                                                                                                                                                        } else {\n                                                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1282); }\n                                                                                                                                                                                        }\n                                                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                          if (input.substr(peg$currPos, 5) === peg$c1283) {\n                                                                                                                                                                                            s0 = peg$c1283;\n                                                                                                                                                                                            peg$currPos += 5;\n                                                                                                                                                                                          } else {\n                                                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1284); }\n                                                                                                                                                                                          }\n                                                                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                            if (input.substr(peg$currPos, 5) === peg$c1285) {\n                                                                                                                                                                                              s0 = peg$c1285;\n                                                                                                                                                                                              peg$currPos += 5;\n                                                                                                                                                                                            } else {\n                                                                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1286); }\n                                                                                                                                                                                            }\n                                                                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                              if (input.substr(peg$currPos, 5) === peg$c1287) {\n                                                                                                                                                                                                s0 = peg$c1287;\n                                                                                                                                                                                                peg$currPos += 5;\n                                                                                                                                                                                              } else {\n                                                                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1288); }\n                                                                                                                                                                                              }\n                                                                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                if (input.substr(peg$currPos, 5) === peg$c1289) {\n                                                                                                                                                                                                  s0 = peg$c1289;\n                                                                                                                                                                                                  peg$currPos += 5;\n                                                                                                                                                                                                } else {\n                                                                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1290); }\n                                                                                                                                                                                                }\n                                                                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                  if (input.substr(peg$currPos, 5) === peg$c1291) {\n                                                                                                                                                                                                    s0 = peg$c1291;\n                                                                                                                                                                                                    peg$currPos += 5;\n                                                                                                                                                                                                  } else {\n                                                                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1292); }\n                                                                                                                                                                                                  }\n                                                                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                    if (input.substr(peg$currPos, 5) === peg$c1293) {\n                                                                                                                                                                                                      s0 = peg$c1293;\n                                                                                                                                                                                                      peg$currPos += 5;\n                                                                                                                                                                                                    } else {\n                                                                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1294); }\n                                                                                                                                                                                                    }\n                                                                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                      if (input.substr(peg$currPos, 5) === peg$c1295) {\n                                                                                                                                                                                                        s0 = peg$c1295;\n                                                                                                                                                                                                        peg$currPos += 5;\n                                                                                                                                                                                                      } else {\n                                                                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1296); }\n                                                                                                                                                                                                      }\n                                                                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                        if (input.substr(peg$currPos, 5) === peg$c1297) {\n                                                                                                                                                                                                          s0 = peg$c1297;\n                                                                                                                                                                                                          peg$currPos += 5;\n                                                                                                                                                                                                        } else {\n                                                                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1298); }\n                                                                                                                                                                                                        }\n                                                                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                          if (input.substr(peg$currPos, 5) === peg$c1299) {\n                                                                                                                                                                                                            s0 = peg$c1299;\n                                                                                                                                                                                                            peg$currPos += 5;\n                                                                                                                                                                                                          } else {\n                                                                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1300); }\n                                                                                                                                                                                                          }\n                                                                                                                                                                                                        }\n                                                                                                                                                                                                      }\n                                                                                                                                                                                                    }\n                                                                                                                                                                                                  }\n                                                                                                                                                                                                }\n                                                                                                                                                                                              }\n                                                                                                                                                                                            }\n                                                                                                                                                                                          }\n                                                                                                                                                                                        }\n                                                                                                                                                                                      }\n                                                                                                                                                                                    }\n                                                                                                                                                                                  }\n                                                                                                                                                                                }\n                                                                                                                                                                              }\n                                                                                                                                                                            }\n                                                                                                                                                                          }\n                                                                                                                                                                        }\n                                                                                                                                                                      }\n                                                                                                                                                                    }\n                                                                                                                                                                  }\n                                                                                                                                                                }\n                                                                                                                                                              }\n                                                                                                                                                            }\n                                                                                                                                                          }\n                                                                                                                                                        }\n                                                                                                                                                      }\n                                                                                                                                                    }\n                                                                                                                                                  }\n                                                                                                                                                }\n                                                                                                                                              }\n                                                                                                                                            }\n                                                                                                                                          }\n                                                                                                                                        }\n                                                                                                                                      }\n                                                                                                                                    }\n                                                                                                                                  }\n                                                                                                                                }\n                                                                                                                              }\n                                                                                                                            }\n                                                                                                                          }\n                                                                                                                        }\n                                                                                                                      }\n                                                                                                                    }\n                                                                                                                  }\n                                                                                                                }\n                                                                                                              }\n                                                                                                            }\n                                                                                                          }\n                                                                                                        }\n                                                                                                      }\n                                                                                                    }\n                                                                                                  }\n                                                                                                }\n                                                                                              }\n                                                                                            }\n                                                                                          }\n                                                                                        }\n                                                                                      }\n                                                                                    }\n                                                                                  }\n                                                                                }\n                                                                              }\n                                                                            }\n                                                                          }\n                                                                        }\n                                                                      }\n                                                                    }\n                                                                  }\n                                                                }\n                                                              }\n                                                            }\n                                                          }\n                                                        }\n                                                      }\n                                                    }\n                                                  }\n                                                }\n                                              }\n                                            }\n                                          }\n                                        }\n                                      }\n                                    }\n                                  }\n                                }\n                              }\n                            }\n                          }\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordSuffix6(): any {\n    let s0;\n\n    if (input.substr(peg$currPos, 5) === peg$c1301) {\n      s0 = peg$c1301;\n      peg$currPos += 5;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c1302); }\n    }\n    if (s0 as any === peg$FAILED) {\n      if (input.substr(peg$currPos, 5) === peg$c1303) {\n        s0 = peg$c1303;\n        peg$currPos += 5;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c1304); }\n      }\n      if (s0 as any === peg$FAILED) {\n        if (input.substr(peg$currPos, 5) === peg$c1305) {\n          s0 = peg$c1305;\n          peg$currPos += 5;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c1306); }\n        }\n        if (s0 as any === peg$FAILED) {\n          if (input.substr(peg$currPos, 5) === peg$c1307) {\n            s0 = peg$c1307;\n            peg$currPos += 5;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c1308); }\n          }\n          if (s0 as any === peg$FAILED) {\n            if (input.substr(peg$currPos, 5) === peg$c1309) {\n              s0 = peg$c1309;\n              peg$currPos += 5;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c1310); }\n            }\n            if (s0 as any === peg$FAILED) {\n              if (input.substr(peg$currPos, 5) === peg$c1311) {\n                s0 = peg$c1311;\n                peg$currPos += 5;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c1312); }\n              }\n              if (s0 as any === peg$FAILED) {\n                if (input.substr(peg$currPos, 5) === peg$c1313) {\n                  s0 = peg$c1313;\n                  peg$currPos += 5;\n                } else {\n                  s0 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c1314); }\n                }\n                if (s0 as any === peg$FAILED) {\n                  if (input.substr(peg$currPos, 5) === peg$c1315) {\n                    s0 = peg$c1315;\n                    peg$currPos += 5;\n                  } else {\n                    s0 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c1316); }\n                  }\n                  if (s0 as any === peg$FAILED) {\n                    if (input.substr(peg$currPos, 5) === peg$c1317) {\n                      s0 = peg$c1317;\n                      peg$currPos += 5;\n                    } else {\n                      s0 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$c1318); }\n                    }\n                    if (s0 as any === peg$FAILED) {\n                      if (input.substr(peg$currPos, 5) === peg$c1319) {\n                        s0 = peg$c1319;\n                        peg$currPos += 5;\n                      } else {\n                        s0 = peg$FAILED;\n                        if (peg$silentFails === 0) { peg$fail(peg$c1320); }\n                      }\n                      if (s0 as any === peg$FAILED) {\n                        if (input.substr(peg$currPos, 5) === peg$c1321) {\n                          s0 = peg$c1321;\n                          peg$currPos += 5;\n                        } else {\n                          s0 = peg$FAILED;\n                          if (peg$silentFails === 0) { peg$fail(peg$c1322); }\n                        }\n                        if (s0 as any === peg$FAILED) {\n                          if (input.substr(peg$currPos, 5) === peg$c1323) {\n                            s0 = peg$c1323;\n                            peg$currPos += 5;\n                          } else {\n                            s0 = peg$FAILED;\n                            if (peg$silentFails === 0) { peg$fail(peg$c1324); }\n                          }\n                          if (s0 as any === peg$FAILED) {\n                            if (input.substr(peg$currPos, 5) === peg$c1325) {\n                              s0 = peg$c1325;\n                              peg$currPos += 5;\n                            } else {\n                              s0 = peg$FAILED;\n                              if (peg$silentFails === 0) { peg$fail(peg$c1326); }\n                            }\n                            if (s0 as any === peg$FAILED) {\n                              if (input.substr(peg$currPos, 5) === peg$c1327) {\n                                s0 = peg$c1327;\n                                peg$currPos += 5;\n                              } else {\n                                s0 = peg$FAILED;\n                                if (peg$silentFails === 0) { peg$fail(peg$c1328); }\n                              }\n                              if (s0 as any === peg$FAILED) {\n                                if (input.substr(peg$currPos, 5) === peg$c1329) {\n                                  s0 = peg$c1329;\n                                  peg$currPos += 5;\n                                } else {\n                                  s0 = peg$FAILED;\n                                  if (peg$silentFails === 0) { peg$fail(peg$c1330); }\n                                }\n                                if (s0 as any === peg$FAILED) {\n                                  if (input.substr(peg$currPos, 5) === peg$c1331) {\n                                    s0 = peg$c1331;\n                                    peg$currPos += 5;\n                                  } else {\n                                    s0 = peg$FAILED;\n                                    if (peg$silentFails === 0) { peg$fail(peg$c1332); }\n                                  }\n                                  if (s0 as any === peg$FAILED) {\n                                    if (input.substr(peg$currPos, 5) === peg$c1333) {\n                                      s0 = peg$c1333;\n                                      peg$currPos += 5;\n                                    } else {\n                                      s0 = peg$FAILED;\n                                      if (peg$silentFails === 0) { peg$fail(peg$c1334); }\n                                    }\n                                    if (s0 as any === peg$FAILED) {\n                                      if (input.substr(peg$currPos, 5) === peg$c1335) {\n                                        s0 = peg$c1335;\n                                        peg$currPos += 5;\n                                      } else {\n                                        s0 = peg$FAILED;\n                                        if (peg$silentFails === 0) { peg$fail(peg$c1336); }\n                                      }\n                                      if (s0 as any === peg$FAILED) {\n                                        if (input.substr(peg$currPos, 5) === peg$c1337) {\n                                          s0 = peg$c1337;\n                                          peg$currPos += 5;\n                                        } else {\n                                          s0 = peg$FAILED;\n                                          if (peg$silentFails === 0) { peg$fail(peg$c1338); }\n                                        }\n                                        if (s0 as any === peg$FAILED) {\n                                          if (input.substr(peg$currPos, 5) === peg$c1339) {\n                                            s0 = peg$c1339;\n                                            peg$currPos += 5;\n                                          } else {\n                                            s0 = peg$FAILED;\n                                            if (peg$silentFails === 0) { peg$fail(peg$c1340); }\n                                          }\n                                          if (s0 as any === peg$FAILED) {\n                                            if (input.substr(peg$currPos, 5) === peg$c1341) {\n                                              s0 = peg$c1341;\n                                              peg$currPos += 5;\n                                            } else {\n                                              s0 = peg$FAILED;\n                                              if (peg$silentFails === 0) { peg$fail(peg$c1342); }\n                                            }\n                                            if (s0 as any === peg$FAILED) {\n                                              if (input.substr(peg$currPos, 5) === peg$c1343) {\n                                                s0 = peg$c1343;\n                                                peg$currPos += 5;\n                                              } else {\n                                                s0 = peg$FAILED;\n                                                if (peg$silentFails === 0) { peg$fail(peg$c1344); }\n                                              }\n                                              if (s0 as any === peg$FAILED) {\n                                                if (input.substr(peg$currPos, 5) === peg$c1345) {\n                                                  s0 = peg$c1345;\n                                                  peg$currPos += 5;\n                                                } else {\n                                                  s0 = peg$FAILED;\n                                                  if (peg$silentFails === 0) { peg$fail(peg$c1346); }\n                                                }\n                                                if (s0 as any === peg$FAILED) {\n                                                  if (input.substr(peg$currPos, 5) === peg$c1347) {\n                                                    s0 = peg$c1347;\n                                                    peg$currPos += 5;\n                                                  } else {\n                                                    s0 = peg$FAILED;\n                                                    if (peg$silentFails === 0) { peg$fail(peg$c1348); }\n                                                  }\n                                                  if (s0 as any === peg$FAILED) {\n                                                    if (input.substr(peg$currPos, 5) === peg$c1349) {\n                                                      s0 = peg$c1349;\n                                                      peg$currPos += 5;\n                                                    } else {\n                                                      s0 = peg$FAILED;\n                                                      if (peg$silentFails === 0) { peg$fail(peg$c1350); }\n                                                    }\n                                                    if (s0 as any === peg$FAILED) {\n                                                      if (input.substr(peg$currPos, 5) === peg$c1351) {\n                                                        s0 = peg$c1351;\n                                                        peg$currPos += 5;\n                                                      } else {\n                                                        s0 = peg$FAILED;\n                                                        if (peg$silentFails === 0) { peg$fail(peg$c1352); }\n                                                      }\n                                                      if (s0 as any === peg$FAILED) {\n                                                        if (input.substr(peg$currPos, 5) === peg$c1353) {\n                                                          s0 = peg$c1353;\n                                                          peg$currPos += 5;\n                                                        } else {\n                                                          s0 = peg$FAILED;\n                                                          if (peg$silentFails === 0) { peg$fail(peg$c1354); }\n                                                        }\n                                                        if (s0 as any === peg$FAILED) {\n                                                          if (input.substr(peg$currPos, 5) === peg$c1355) {\n                                                            s0 = peg$c1355;\n                                                            peg$currPos += 5;\n                                                          } else {\n                                                            s0 = peg$FAILED;\n                                                            if (peg$silentFails === 0) { peg$fail(peg$c1356); }\n                                                          }\n                                                          if (s0 as any === peg$FAILED) {\n                                                            if (input.substr(peg$currPos, 5) === peg$c1357) {\n                                                              s0 = peg$c1357;\n                                                              peg$currPos += 5;\n                                                            } else {\n                                                              s0 = peg$FAILED;\n                                                              if (peg$silentFails === 0) { peg$fail(peg$c1358); }\n                                                            }\n                                                            if (s0 as any === peg$FAILED) {\n                                                              if (input.substr(peg$currPos, 5) === peg$c1359) {\n                                                                s0 = peg$c1359;\n                                                                peg$currPos += 5;\n                                                              } else {\n                                                                s0 = peg$FAILED;\n                                                                if (peg$silentFails === 0) { peg$fail(peg$c1360); }\n                                                              }\n                                                              if (s0 as any === peg$FAILED) {\n                                                                if (input.substr(peg$currPos, 5) === peg$c1361) {\n                                                                  s0 = peg$c1361;\n                                                                  peg$currPos += 5;\n                                                                } else {\n                                                                  s0 = peg$FAILED;\n                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1362); }\n                                                                }\n                                                                if (s0 as any === peg$FAILED) {\n                                                                  if (input.substr(peg$currPos, 5) === peg$c1363) {\n                                                                    s0 = peg$c1363;\n                                                                    peg$currPos += 5;\n                                                                  } else {\n                                                                    s0 = peg$FAILED;\n                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1364); }\n                                                                  }\n                                                                  if (s0 as any === peg$FAILED) {\n                                                                    if (input.substr(peg$currPos, 5) === peg$c1365) {\n                                                                      s0 = peg$c1365;\n                                                                      peg$currPos += 5;\n                                                                    } else {\n                                                                      s0 = peg$FAILED;\n                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1366); }\n                                                                    }\n                                                                    if (s0 as any === peg$FAILED) {\n                                                                      if (input.substr(peg$currPos, 5) === peg$c1367) {\n                                                                        s0 = peg$c1367;\n                                                                        peg$currPos += 5;\n                                                                      } else {\n                                                                        s0 = peg$FAILED;\n                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1368); }\n                                                                      }\n                                                                      if (s0 as any === peg$FAILED) {\n                                                                        if (input.substr(peg$currPos, 5) === peg$c1369) {\n                                                                          s0 = peg$c1369;\n                                                                          peg$currPos += 5;\n                                                                        } else {\n                                                                          s0 = peg$FAILED;\n                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1370); }\n                                                                        }\n                                                                        if (s0 as any === peg$FAILED) {\n                                                                          if (input.substr(peg$currPos, 5) === peg$c1371) {\n                                                                            s0 = peg$c1371;\n                                                                            peg$currPos += 5;\n                                                                          } else {\n                                                                            s0 = peg$FAILED;\n                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1372); }\n                                                                          }\n                                                                          if (s0 as any === peg$FAILED) {\n                                                                            if (input.substr(peg$currPos, 5) === peg$c1373) {\n                                                                              s0 = peg$c1373;\n                                                                              peg$currPos += 5;\n                                                                            } else {\n                                                                              s0 = peg$FAILED;\n                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1374); }\n                                                                            }\n                                                                            if (s0 as any === peg$FAILED) {\n                                                                              if (input.substr(peg$currPos, 5) === peg$c1375) {\n                                                                                s0 = peg$c1375;\n                                                                                peg$currPos += 5;\n                                                                              } else {\n                                                                                s0 = peg$FAILED;\n                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1376); }\n                                                                              }\n                                                                              if (s0 as any === peg$FAILED) {\n                                                                                if (input.substr(peg$currPos, 5) === peg$c1377) {\n                                                                                  s0 = peg$c1377;\n                                                                                  peg$currPos += 5;\n                                                                                } else {\n                                                                                  s0 = peg$FAILED;\n                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1378); }\n                                                                                }\n                                                                                if (s0 as any === peg$FAILED) {\n                                                                                  if (input.substr(peg$currPos, 5) === peg$c1379) {\n                                                                                    s0 = peg$c1379;\n                                                                                    peg$currPos += 5;\n                                                                                  } else {\n                                                                                    s0 = peg$FAILED;\n                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1380); }\n                                                                                  }\n                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                    if (input.substr(peg$currPos, 5) === peg$c1381) {\n                                                                                      s0 = peg$c1381;\n                                                                                      peg$currPos += 5;\n                                                                                    } else {\n                                                                                      s0 = peg$FAILED;\n                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1382); }\n                                                                                    }\n                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                      if (input.substr(peg$currPos, 5) === peg$c1383) {\n                                                                                        s0 = peg$c1383;\n                                                                                        peg$currPos += 5;\n                                                                                      } else {\n                                                                                        s0 = peg$FAILED;\n                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1384); }\n                                                                                      }\n                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                        if (input.substr(peg$currPos, 5) === peg$c1385) {\n                                                                                          s0 = peg$c1385;\n                                                                                          peg$currPos += 5;\n                                                                                        } else {\n                                                                                          s0 = peg$FAILED;\n                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1386); }\n                                                                                        }\n                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                          if (input.substr(peg$currPos, 5) === peg$c1387) {\n                                                                                            s0 = peg$c1387;\n                                                                                            peg$currPos += 5;\n                                                                                          } else {\n                                                                                            s0 = peg$FAILED;\n                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1388); }\n                                                                                          }\n                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                            if (input.substr(peg$currPos, 5) === peg$c1389) {\n                                                                                              s0 = peg$c1389;\n                                                                                              peg$currPos += 5;\n                                                                                            } else {\n                                                                                              s0 = peg$FAILED;\n                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1390); }\n                                                                                            }\n                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                              if (input.substr(peg$currPos, 5) === peg$c1391) {\n                                                                                                s0 = peg$c1391;\n                                                                                                peg$currPos += 5;\n                                                                                              } else {\n                                                                                                s0 = peg$FAILED;\n                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1392); }\n                                                                                              }\n                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                if (input.substr(peg$currPos, 5) === peg$c1389) {\n                                                                                                  s0 = peg$c1389;\n                                                                                                  peg$currPos += 5;\n                                                                                                } else {\n                                                                                                  s0 = peg$FAILED;\n                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1390); }\n                                                                                                }\n                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                  if (input.substr(peg$currPos, 5) === peg$c1393) {\n                                                                                                    s0 = peg$c1393;\n                                                                                                    peg$currPos += 5;\n                                                                                                  } else {\n                                                                                                    s0 = peg$FAILED;\n                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1394); }\n                                                                                                  }\n                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                    if (input.substr(peg$currPos, 5) === peg$c1395) {\n                                                                                                      s0 = peg$c1395;\n                                                                                                      peg$currPos += 5;\n                                                                                                    } else {\n                                                                                                      s0 = peg$FAILED;\n                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1396); }\n                                                                                                    }\n                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                      if (input.substr(peg$currPos, 5) === peg$c1397) {\n                                                                                                        s0 = peg$c1397;\n                                                                                                        peg$currPos += 5;\n                                                                                                      } else {\n                                                                                                        s0 = peg$FAILED;\n                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1398); }\n                                                                                                      }\n                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                        if (input.substr(peg$currPos, 5) === peg$c1399) {\n                                                                                                          s0 = peg$c1399;\n                                                                                                          peg$currPos += 5;\n                                                                                                        } else {\n                                                                                                          s0 = peg$FAILED;\n                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1400); }\n                                                                                                        }\n                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                          if (input.substr(peg$currPos, 5) === peg$c1401) {\n                                                                                                            s0 = peg$c1401;\n                                                                                                            peg$currPos += 5;\n                                                                                                          } else {\n                                                                                                            s0 = peg$FAILED;\n                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1402); }\n                                                                                                          }\n                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                            if (input.substr(peg$currPos, 5) === peg$c1403) {\n                                                                                                              s0 = peg$c1403;\n                                                                                                              peg$currPos += 5;\n                                                                                                            } else {\n                                                                                                              s0 = peg$FAILED;\n                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1404); }\n                                                                                                            }\n                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                              if (input.substr(peg$currPos, 5) === peg$c1405) {\n                                                                                                                s0 = peg$c1405;\n                                                                                                                peg$currPos += 5;\n                                                                                                              } else {\n                                                                                                                s0 = peg$FAILED;\n                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1406); }\n                                                                                                              }\n                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                if (input.substr(peg$currPos, 5) === peg$c1407) {\n                                                                                                                  s0 = peg$c1407;\n                                                                                                                  peg$currPos += 5;\n                                                                                                                } else {\n                                                                                                                  s0 = peg$FAILED;\n                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1408); }\n                                                                                                                }\n                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                  if (input.substr(peg$currPos, 5) === peg$c1409) {\n                                                                                                                    s0 = peg$c1409;\n                                                                                                                    peg$currPos += 5;\n                                                                                                                  } else {\n                                                                                                                    s0 = peg$FAILED;\n                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1410); }\n                                                                                                                  }\n                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                    if (input.substr(peg$currPos, 5) === peg$c1411) {\n                                                                                                                      s0 = peg$c1411;\n                                                                                                                      peg$currPos += 5;\n                                                                                                                    } else {\n                                                                                                                      s0 = peg$FAILED;\n                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1412); }\n                                                                                                                    }\n                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                      if (input.substr(peg$currPos, 5) === peg$c1413) {\n                                                                                                                        s0 = peg$c1413;\n                                                                                                                        peg$currPos += 5;\n                                                                                                                      } else {\n                                                                                                                        s0 = peg$FAILED;\n                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1414); }\n                                                                                                                      }\n                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                        if (input.substr(peg$currPos, 5) === peg$c1415) {\n                                                                                                                          s0 = peg$c1415;\n                                                                                                                          peg$currPos += 5;\n                                                                                                                        } else {\n                                                                                                                          s0 = peg$FAILED;\n                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1416); }\n                                                                                                                        }\n                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                          if (input.substr(peg$currPos, 5) === peg$c1417) {\n                                                                                                                            s0 = peg$c1417;\n                                                                                                                            peg$currPos += 5;\n                                                                                                                          } else {\n                                                                                                                            s0 = peg$FAILED;\n                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1418); }\n                                                                                                                          }\n                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                            if (input.substr(peg$currPos, 5) === peg$c1419) {\n                                                                                                                              s0 = peg$c1419;\n                                                                                                                              peg$currPos += 5;\n                                                                                                                            } else {\n                                                                                                                              s0 = peg$FAILED;\n                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1420); }\n                                                                                                                            }\n                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                              if (input.substr(peg$currPos, 5) === peg$c1421) {\n                                                                                                                                s0 = peg$c1421;\n                                                                                                                                peg$currPos += 5;\n                                                                                                                              } else {\n                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1422); }\n                                                                                                                              }\n                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                if (input.substr(peg$currPos, 5) === peg$c1423) {\n                                                                                                                                  s0 = peg$c1423;\n                                                                                                                                  peg$currPos += 5;\n                                                                                                                                } else {\n                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1424); }\n                                                                                                                                }\n                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                  if (input.substr(peg$currPos, 5) === peg$c1425) {\n                                                                                                                                    s0 = peg$c1425;\n                                                                                                                                    peg$currPos += 5;\n                                                                                                                                  } else {\n                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1426); }\n                                                                                                                                  }\n                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                    if (input.substr(peg$currPos, 5) === peg$c1425) {\n                                                                                                                                      s0 = peg$c1425;\n                                                                                                                                      peg$currPos += 5;\n                                                                                                                                    } else {\n                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1426); }\n                                                                                                                                    }\n                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                      if (input.substr(peg$currPos, 5) === peg$c1427) {\n                                                                                                                                        s0 = peg$c1427;\n                                                                                                                                        peg$currPos += 5;\n                                                                                                                                      } else {\n                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1428); }\n                                                                                                                                      }\n                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                        if (input.substr(peg$currPos, 5) === peg$c1429) {\n                                                                                                                                          s0 = peg$c1429;\n                                                                                                                                          peg$currPos += 5;\n                                                                                                                                        } else {\n                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1430); }\n                                                                                                                                        }\n                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                          if (input.substr(peg$currPos, 5) === peg$c1431) {\n                                                                                                                                            s0 = peg$c1431;\n                                                                                                                                            peg$currPos += 5;\n                                                                                                                                          } else {\n                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1432); }\n                                                                                                                                          }\n                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                            if (input.substr(peg$currPos, 5) === peg$c1433) {\n                                                                                                                                              s0 = peg$c1433;\n                                                                                                                                              peg$currPos += 5;\n                                                                                                                                            } else {\n                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1434); }\n                                                                                                                                            }\n                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                              if (input.substr(peg$currPos, 5) === peg$c1435) {\n                                                                                                                                                s0 = peg$c1435;\n                                                                                                                                                peg$currPos += 5;\n                                                                                                                                              } else {\n                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1436); }\n                                                                                                                                              }\n                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                if (input.substr(peg$currPos, 5) === peg$c1437) {\n                                                                                                                                                  s0 = peg$c1437;\n                                                                                                                                                  peg$currPos += 5;\n                                                                                                                                                } else {\n                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1438); }\n                                                                                                                                                }\n                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                  if (input.substr(peg$currPos, 5) === peg$c1439) {\n                                                                                                                                                    s0 = peg$c1439;\n                                                                                                                                                    peg$currPos += 5;\n                                                                                                                                                  } else {\n                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1440); }\n                                                                                                                                                  }\n                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                    if (input.substr(peg$currPos, 5) === peg$c1441) {\n                                                                                                                                                      s0 = peg$c1441;\n                                                                                                                                                      peg$currPos += 5;\n                                                                                                                                                    } else {\n                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1442); }\n                                                                                                                                                    }\n                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                      if (input.substr(peg$currPos, 5) === peg$c1443) {\n                                                                                                                                                        s0 = peg$c1443;\n                                                                                                                                                        peg$currPos += 5;\n                                                                                                                                                      } else {\n                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1444); }\n                                                                                                                                                      }\n                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                        if (input.substr(peg$currPos, 5) === peg$c1445) {\n                                                                                                                                                          s0 = peg$c1445;\n                                                                                                                                                          peg$currPos += 5;\n                                                                                                                                                        } else {\n                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1446); }\n                                                                                                                                                        }\n                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                          if (input.substr(peg$currPos, 5) === peg$c1447) {\n                                                                                                                                                            s0 = peg$c1447;\n                                                                                                                                                            peg$currPos += 5;\n                                                                                                                                                          } else {\n                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1448); }\n                                                                                                                                                          }\n                                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                                            if (input.substr(peg$currPos, 5) === peg$c1449) {\n                                                                                                                                                              s0 = peg$c1449;\n                                                                                                                                                              peg$currPos += 5;\n                                                                                                                                                            } else {\n                                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1450); }\n                                                                                                                                                            }\n                                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                                              if (input.substr(peg$currPos, 5) === peg$c1451) {\n                                                                                                                                                                s0 = peg$c1451;\n                                                                                                                                                                peg$currPos += 5;\n                                                                                                                                                              } else {\n                                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1452); }\n                                                                                                                                                              }\n                                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                                if (input.substr(peg$currPos, 5) === peg$c1453) {\n                                                                                                                                                                  s0 = peg$c1453;\n                                                                                                                                                                  peg$currPos += 5;\n                                                                                                                                                                } else {\n                                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1454); }\n                                                                                                                                                                }\n                                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                                  if (input.substr(peg$currPos, 5) === peg$c1455) {\n                                                                                                                                                                    s0 = peg$c1455;\n                                                                                                                                                                    peg$currPos += 5;\n                                                                                                                                                                  } else {\n                                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1456); }\n                                                                                                                                                                  }\n                                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                                    if (input.substr(peg$currPos, 5) === peg$c1457) {\n                                                                                                                                                                      s0 = peg$c1457;\n                                                                                                                                                                      peg$currPos += 5;\n                                                                                                                                                                    } else {\n                                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1458); }\n                                                                                                                                                                    }\n                                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                                      if (input.substr(peg$currPos, 5) === peg$c1459) {\n                                                                                                                                                                        s0 = peg$c1459;\n                                                                                                                                                                        peg$currPos += 5;\n                                                                                                                                                                      } else {\n                                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1460); }\n                                                                                                                                                                      }\n                                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                                        if (input.substr(peg$currPos, 5) === peg$c1461) {\n                                                                                                                                                                          s0 = peg$c1461;\n                                                                                                                                                                          peg$currPos += 5;\n                                                                                                                                                                        } else {\n                                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1462); }\n                                                                                                                                                                        }\n                                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                                          if (input.substr(peg$currPos, 5) === peg$c1463) {\n                                                                                                                                                                            s0 = peg$c1463;\n                                                                                                                                                                            peg$currPos += 5;\n                                                                                                                                                                          } else {\n                                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1464); }\n                                                                                                                                                                          }\n                                                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                                                            if (input.substr(peg$currPos, 5) === peg$c1465) {\n                                                                                                                                                                              s0 = peg$c1465;\n                                                                                                                                                                              peg$currPos += 5;\n                                                                                                                                                                            } else {\n                                                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1466); }\n                                                                                                                                                                            }\n                                                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                                                              if (input.substr(peg$currPos, 5) === peg$c1467) {\n                                                                                                                                                                                s0 = peg$c1467;\n                                                                                                                                                                                peg$currPos += 5;\n                                                                                                                                                                              } else {\n                                                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1468); }\n                                                                                                                                                                              }\n                                                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                if (input.substr(peg$currPos, 5) === peg$c1469) {\n                                                                                                                                                                                  s0 = peg$c1469;\n                                                                                                                                                                                  peg$currPos += 5;\n                                                                                                                                                                                } else {\n                                                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1470); }\n                                                                                                                                                                                }\n                                                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                  if (input.substr(peg$currPos, 5) === peg$c1471) {\n                                                                                                                                                                                    s0 = peg$c1471;\n                                                                                                                                                                                    peg$currPos += 5;\n                                                                                                                                                                                  } else {\n                                                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1472); }\n                                                                                                                                                                                  }\n                                                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                    if (input.substr(peg$currPos, 5) === peg$c1473) {\n                                                                                                                                                                                      s0 = peg$c1473;\n                                                                                                                                                                                      peg$currPos += 5;\n                                                                                                                                                                                    } else {\n                                                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1474); }\n                                                                                                                                                                                    }\n                                                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                      if (input.substr(peg$currPos, 5) === peg$c1475) {\n                                                                                                                                                                                        s0 = peg$c1475;\n                                                                                                                                                                                        peg$currPos += 5;\n                                                                                                                                                                                      } else {\n                                                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1476); }\n                                                                                                                                                                                      }\n                                                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                        if (input.substr(peg$currPos, 5) === peg$c1477) {\n                                                                                                                                                                                          s0 = peg$c1477;\n                                                                                                                                                                                          peg$currPos += 5;\n                                                                                                                                                                                        } else {\n                                                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1478); }\n                                                                                                                                                                                        }\n                                                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                          if (input.substr(peg$currPos, 5) === peg$c1479) {\n                                                                                                                                                                                            s0 = peg$c1479;\n                                                                                                                                                                                            peg$currPos += 5;\n                                                                                                                                                                                          } else {\n                                                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1480); }\n                                                                                                                                                                                          }\n                                                                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                            if (input.substr(peg$currPos, 5) === peg$c1481) {\n                                                                                                                                                                                              s0 = peg$c1481;\n                                                                                                                                                                                              peg$currPos += 5;\n                                                                                                                                                                                            } else {\n                                                                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1482); }\n                                                                                                                                                                                            }\n                                                                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                              if (input.substr(peg$currPos, 5) === peg$c1483) {\n                                                                                                                                                                                                s0 = peg$c1483;\n                                                                                                                                                                                                peg$currPos += 5;\n                                                                                                                                                                                              } else {\n                                                                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1484); }\n                                                                                                                                                                                              }\n                                                                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                if (input.substr(peg$currPos, 5) === peg$c1485) {\n                                                                                                                                                                                                  s0 = peg$c1485;\n                                                                                                                                                                                                  peg$currPos += 5;\n                                                                                                                                                                                                } else {\n                                                                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1486); }\n                                                                                                                                                                                                }\n                                                                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                  if (input.substr(peg$currPos, 5) === peg$c1487) {\n                                                                                                                                                                                                    s0 = peg$c1487;\n                                                                                                                                                                                                    peg$currPos += 5;\n                                                                                                                                                                                                  } else {\n                                                                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1488); }\n                                                                                                                                                                                                  }\n                                                                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                    if (input.substr(peg$currPos, 5) === peg$c1489) {\n                                                                                                                                                                                                      s0 = peg$c1489;\n                                                                                                                                                                                                      peg$currPos += 5;\n                                                                                                                                                                                                    } else {\n                                                                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1490); }\n                                                                                                                                                                                                    }\n                                                                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                      if (input.substr(peg$currPos, 5) === peg$c1491) {\n                                                                                                                                                                                                        s0 = peg$c1491;\n                                                                                                                                                                                                        peg$currPos += 5;\n                                                                                                                                                                                                      } else {\n                                                                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1492); }\n                                                                                                                                                                                                      }\n                                                                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                        if (input.substr(peg$currPos, 5) === peg$c1493) {\n                                                                                                                                                                                                          s0 = peg$c1493;\n                                                                                                                                                                                                          peg$currPos += 5;\n                                                                                                                                                                                                        } else {\n                                                                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1494); }\n                                                                                                                                                                                                        }\n                                                                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                          if (input.substr(peg$currPos, 5) === peg$c1495) {\n                                                                                                                                                                                                            s0 = peg$c1495;\n                                                                                                                                                                                                            peg$currPos += 5;\n                                                                                                                                                                                                          } else {\n                                                                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1496); }\n                                                                                                                                                                                                          }\n                                                                                                                                                                                                        }\n                                                                                                                                                                                                      }\n                                                                                                                                                                                                    }\n                                                                                                                                                                                                  }\n                                                                                                                                                                                                }\n                                                                                                                                                                                              }\n                                                                                                                                                                                            }\n                                                                                                                                                                                          }\n                                                                                                                                                                                        }\n                                                                                                                                                                                      }\n                                                                                                                                                                                    }\n                                                                                                                                                                                  }\n                                                                                                                                                                                }\n                                                                                                                                                                              }\n                                                                                                                                                                            }\n                                                                                                                                                                          }\n                                                                                                                                                                        }\n                                                                                                                                                                      }\n                                                                                                                                                                    }\n                                                                                                                                                                  }\n                                                                                                                                                                }\n                                                                                                                                                              }\n                                                                                                                                                            }\n                                                                                                                                                          }\n                                                                                                                                                        }\n                                                                                                                                                      }\n                                                                                                                                                    }\n                                                                                                                                                  }\n                                                                                                                                                }\n                                                                                                                                              }\n                                                                                                                                            }\n                                                                                                                                          }\n                                                                                                                                        }\n                                                                                                                                      }\n                                                                                                                                    }\n                                                                                                                                  }\n                                                                                                                                }\n                                                                                                                              }\n                                                                                                                            }\n                                                                                                                          }\n                                                                                                                        }\n                                                                                                                      }\n                                                                                                                    }\n                                                                                                                  }\n                                                                                                                }\n                                                                                                              }\n                                                                                                            }\n                                                                                                          }\n                                                                                                        }\n                                                                                                      }\n                                                                                                    }\n                                                                                                  }\n                                                                                                }\n                                                                                              }\n                                                                                            }\n                                                                                          }\n                                                                                        }\n                                                                                      }\n                                                                                    }\n                                                                                  }\n                                                                                }\n                                                                              }\n                                                                            }\n                                                                          }\n                                                                        }\n                                                                      }\n                                                                    }\n                                                                  }\n                                                                }\n                                                              }\n                                                            }\n                                                          }\n                                                        }\n                                                      }\n                                                    }\n                                                  }\n                                                }\n                                              }\n                                            }\n                                          }\n                                        }\n                                      }\n                                    }\n                                  }\n                                }\n                              }\n                            }\n                          }\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordSuffix7(): any {\n    let s0;\n\n    if (input.substr(peg$currPos, 5) === peg$c1497) {\n      s0 = peg$c1497;\n      peg$currPos += 5;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c1498); }\n    }\n    if (s0 as any === peg$FAILED) {\n      if (input.substr(peg$currPos, 5) === peg$c1499) {\n        s0 = peg$c1499;\n        peg$currPos += 5;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c1500); }\n      }\n      if (s0 as any === peg$FAILED) {\n        if (input.substr(peg$currPos, 5) === peg$c1501) {\n          s0 = peg$c1501;\n          peg$currPos += 5;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c1502); }\n        }\n        if (s0 as any === peg$FAILED) {\n          if (input.substr(peg$currPos, 5) === peg$c1503) {\n            s0 = peg$c1503;\n            peg$currPos += 5;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c1504); }\n          }\n          if (s0 as any === peg$FAILED) {\n            if (input.substr(peg$currPos, 5) === peg$c1505) {\n              s0 = peg$c1505;\n              peg$currPos += 5;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c1506); }\n            }\n            if (s0 as any === peg$FAILED) {\n              if (input.substr(peg$currPos, 5) === peg$c1507) {\n                s0 = peg$c1507;\n                peg$currPos += 5;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c1508); }\n              }\n              if (s0 as any === peg$FAILED) {\n                if (input.substr(peg$currPos, 5) === peg$c1509) {\n                  s0 = peg$c1509;\n                  peg$currPos += 5;\n                } else {\n                  s0 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c1510); }\n                }\n                if (s0 as any === peg$FAILED) {\n                  if (input.substr(peg$currPos, 5) === peg$c1511) {\n                    s0 = peg$c1511;\n                    peg$currPos += 5;\n                  } else {\n                    s0 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c1512); }\n                  }\n                  if (s0 as any === peg$FAILED) {\n                    if (input.substr(peg$currPos, 5) === peg$c1513) {\n                      s0 = peg$c1513;\n                      peg$currPos += 5;\n                    } else {\n                      s0 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$c1514); }\n                    }\n                    if (s0 as any === peg$FAILED) {\n                      if (input.substr(peg$currPos, 5) === peg$c1515) {\n                        s0 = peg$c1515;\n                        peg$currPos += 5;\n                      } else {\n                        s0 = peg$FAILED;\n                        if (peg$silentFails === 0) { peg$fail(peg$c1516); }\n                      }\n                      if (s0 as any === peg$FAILED) {\n                        if (input.substr(peg$currPos, 5) === peg$c1517) {\n                          s0 = peg$c1517;\n                          peg$currPos += 5;\n                        } else {\n                          s0 = peg$FAILED;\n                          if (peg$silentFails === 0) { peg$fail(peg$c1518); }\n                        }\n                        if (s0 as any === peg$FAILED) {\n                          if (input.substr(peg$currPos, 5) === peg$c1519) {\n                            s0 = peg$c1519;\n                            peg$currPos += 5;\n                          } else {\n                            s0 = peg$FAILED;\n                            if (peg$silentFails === 0) { peg$fail(peg$c1520); }\n                          }\n                          if (s0 as any === peg$FAILED) {\n                            if (input.substr(peg$currPos, 5) === peg$c1521) {\n                              s0 = peg$c1521;\n                              peg$currPos += 5;\n                            } else {\n                              s0 = peg$FAILED;\n                              if (peg$silentFails === 0) { peg$fail(peg$c1522); }\n                            }\n                            if (s0 as any === peg$FAILED) {\n                              if (input.substr(peg$currPos, 5) === peg$c1523) {\n                                s0 = peg$c1523;\n                                peg$currPos += 5;\n                              } else {\n                                s0 = peg$FAILED;\n                                if (peg$silentFails === 0) { peg$fail(peg$c1524); }\n                              }\n                              if (s0 as any === peg$FAILED) {\n                                if (input.substr(peg$currPos, 5) === peg$c1525) {\n                                  s0 = peg$c1525;\n                                  peg$currPos += 5;\n                                } else {\n                                  s0 = peg$FAILED;\n                                  if (peg$silentFails === 0) { peg$fail(peg$c1526); }\n                                }\n                                if (s0 as any === peg$FAILED) {\n                                  if (input.substr(peg$currPos, 5) === peg$c1527) {\n                                    s0 = peg$c1527;\n                                    peg$currPos += 5;\n                                  } else {\n                                    s0 = peg$FAILED;\n                                    if (peg$silentFails === 0) { peg$fail(peg$c1528); }\n                                  }\n                                  if (s0 as any === peg$FAILED) {\n                                    if (input.substr(peg$currPos, 5) === peg$c1529) {\n                                      s0 = peg$c1529;\n                                      peg$currPos += 5;\n                                    } else {\n                                      s0 = peg$FAILED;\n                                      if (peg$silentFails === 0) { peg$fail(peg$c1530); }\n                                    }\n                                    if (s0 as any === peg$FAILED) {\n                                      if (input.substr(peg$currPos, 5) === peg$c1531) {\n                                        s0 = peg$c1531;\n                                        peg$currPos += 5;\n                                      } else {\n                                        s0 = peg$FAILED;\n                                        if (peg$silentFails === 0) { peg$fail(peg$c1532); }\n                                      }\n                                      if (s0 as any === peg$FAILED) {\n                                        if (input.substr(peg$currPos, 4) === peg$c1533) {\n                                          s0 = peg$c1533;\n                                          peg$currPos += 4;\n                                        } else {\n                                          s0 = peg$FAILED;\n                                          if (peg$silentFails === 0) { peg$fail(peg$c1534); }\n                                        }\n                                        if (s0 as any === peg$FAILED) {\n                                          if (input.substr(peg$currPos, 4) === peg$c1535) {\n                                            s0 = peg$c1535;\n                                            peg$currPos += 4;\n                                          } else {\n                                            s0 = peg$FAILED;\n                                            if (peg$silentFails === 0) { peg$fail(peg$c1536); }\n                                          }\n                                          if (s0 as any === peg$FAILED) {\n                                            if (input.substr(peg$currPos, 4) === peg$c1537) {\n                                              s0 = peg$c1537;\n                                              peg$currPos += 4;\n                                            } else {\n                                              s0 = peg$FAILED;\n                                              if (peg$silentFails === 0) { peg$fail(peg$c1538); }\n                                            }\n                                            if (s0 as any === peg$FAILED) {\n                                              if (input.substr(peg$currPos, 4) === peg$c1539) {\n                                                s0 = peg$c1539;\n                                                peg$currPos += 4;\n                                              } else {\n                                                s0 = peg$FAILED;\n                                                if (peg$silentFails === 0) { peg$fail(peg$c1540); }\n                                              }\n                                              if (s0 as any === peg$FAILED) {\n                                                if (input.substr(peg$currPos, 4) === peg$c1541) {\n                                                  s0 = peg$c1541;\n                                                  peg$currPos += 4;\n                                                } else {\n                                                  s0 = peg$FAILED;\n                                                  if (peg$silentFails === 0) { peg$fail(peg$c1542); }\n                                                }\n                                                if (s0 as any === peg$FAILED) {\n                                                  if (input.substr(peg$currPos, 4) === peg$c1543) {\n                                                    s0 = peg$c1543;\n                                                    peg$currPos += 4;\n                                                  } else {\n                                                    s0 = peg$FAILED;\n                                                    if (peg$silentFails === 0) { peg$fail(peg$c1544); }\n                                                  }\n                                                  if (s0 as any === peg$FAILED) {\n                                                    if (input.substr(peg$currPos, 4) === peg$c1545) {\n                                                      s0 = peg$c1545;\n                                                      peg$currPos += 4;\n                                                    } else {\n                                                      s0 = peg$FAILED;\n                                                      if (peg$silentFails === 0) { peg$fail(peg$c1546); }\n                                                    }\n                                                    if (s0 as any === peg$FAILED) {\n                                                      if (input.substr(peg$currPos, 4) === peg$c1547) {\n                                                        s0 = peg$c1547;\n                                                        peg$currPos += 4;\n                                                      } else {\n                                                        s0 = peg$FAILED;\n                                                        if (peg$silentFails === 0) { peg$fail(peg$c1548); }\n                                                      }\n                                                      if (s0 as any === peg$FAILED) {\n                                                        if (input.substr(peg$currPos, 4) === peg$c1549) {\n                                                          s0 = peg$c1549;\n                                                          peg$currPos += 4;\n                                                        } else {\n                                                          s0 = peg$FAILED;\n                                                          if (peg$silentFails === 0) { peg$fail(peg$c1550); }\n                                                        }\n                                                        if (s0 as any === peg$FAILED) {\n                                                          if (input.substr(peg$currPos, 4) === peg$c1551) {\n                                                            s0 = peg$c1551;\n                                                            peg$currPos += 4;\n                                                          } else {\n                                                            s0 = peg$FAILED;\n                                                            if (peg$silentFails === 0) { peg$fail(peg$c1552); }\n                                                          }\n                                                          if (s0 as any === peg$FAILED) {\n                                                            if (input.substr(peg$currPos, 4) === peg$c1553) {\n                                                              s0 = peg$c1553;\n                                                              peg$currPos += 4;\n                                                            } else {\n                                                              s0 = peg$FAILED;\n                                                              if (peg$silentFails === 0) { peg$fail(peg$c1554); }\n                                                            }\n                                                            if (s0 as any === peg$FAILED) {\n                                                              if (input.substr(peg$currPos, 4) === peg$c1555) {\n                                                                s0 = peg$c1555;\n                                                                peg$currPos += 4;\n                                                              } else {\n                                                                s0 = peg$FAILED;\n                                                                if (peg$silentFails === 0) { peg$fail(peg$c1556); }\n                                                              }\n                                                              if (s0 as any === peg$FAILED) {\n                                                                if (input.substr(peg$currPos, 4) === peg$c1557) {\n                                                                  s0 = peg$c1557;\n                                                                  peg$currPos += 4;\n                                                                } else {\n                                                                  s0 = peg$FAILED;\n                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1558); }\n                                                                }\n                                                                if (s0 as any === peg$FAILED) {\n                                                                  if (input.substr(peg$currPos, 4) === peg$c1559) {\n                                                                    s0 = peg$c1559;\n                                                                    peg$currPos += 4;\n                                                                  } else {\n                                                                    s0 = peg$FAILED;\n                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1560); }\n                                                                  }\n                                                                  if (s0 as any === peg$FAILED) {\n                                                                    if (input.substr(peg$currPos, 4) === peg$c1561) {\n                                                                      s0 = peg$c1561;\n                                                                      peg$currPos += 4;\n                                                                    } else {\n                                                                      s0 = peg$FAILED;\n                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1562); }\n                                                                    }\n                                                                    if (s0 as any === peg$FAILED) {\n                                                                      if (input.substr(peg$currPos, 4) === peg$c1563) {\n                                                                        s0 = peg$c1563;\n                                                                        peg$currPos += 4;\n                                                                      } else {\n                                                                        s0 = peg$FAILED;\n                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1564); }\n                                                                      }\n                                                                      if (s0 as any === peg$FAILED) {\n                                                                        if (input.substr(peg$currPos, 4) === peg$c1565) {\n                                                                          s0 = peg$c1565;\n                                                                          peg$currPos += 4;\n                                                                        } else {\n                                                                          s0 = peg$FAILED;\n                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1566); }\n                                                                        }\n                                                                        if (s0 as any === peg$FAILED) {\n                                                                          if (input.substr(peg$currPos, 4) === peg$c1567) {\n                                                                            s0 = peg$c1567;\n                                                                            peg$currPos += 4;\n                                                                          } else {\n                                                                            s0 = peg$FAILED;\n                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1568); }\n                                                                          }\n                                                                          if (s0 as any === peg$FAILED) {\n                                                                            if (input.substr(peg$currPos, 4) === peg$c1569) {\n                                                                              s0 = peg$c1569;\n                                                                              peg$currPos += 4;\n                                                                            } else {\n                                                                              s0 = peg$FAILED;\n                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1570); }\n                                                                            }\n                                                                            if (s0 as any === peg$FAILED) {\n                                                                              if (input.substr(peg$currPos, 4) === peg$c1571) {\n                                                                                s0 = peg$c1571;\n                                                                                peg$currPos += 4;\n                                                                              } else {\n                                                                                s0 = peg$FAILED;\n                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1572); }\n                                                                              }\n                                                                              if (s0 as any === peg$FAILED) {\n                                                                                if (input.substr(peg$currPos, 4) === peg$c1573) {\n                                                                                  s0 = peg$c1573;\n                                                                                  peg$currPos += 4;\n                                                                                } else {\n                                                                                  s0 = peg$FAILED;\n                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1574); }\n                                                                                }\n                                                                                if (s0 as any === peg$FAILED) {\n                                                                                  if (input.substr(peg$currPos, 4) === peg$c1575) {\n                                                                                    s0 = peg$c1575;\n                                                                                    peg$currPos += 4;\n                                                                                  } else {\n                                                                                    s0 = peg$FAILED;\n                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1576); }\n                                                                                  }\n                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                    if (input.substr(peg$currPos, 4) === peg$c1577) {\n                                                                                      s0 = peg$c1577;\n                                                                                      peg$currPos += 4;\n                                                                                    } else {\n                                                                                      s0 = peg$FAILED;\n                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1578); }\n                                                                                    }\n                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                      if (input.substr(peg$currPos, 4) === peg$c1579) {\n                                                                                        s0 = peg$c1579;\n                                                                                        peg$currPos += 4;\n                                                                                      } else {\n                                                                                        s0 = peg$FAILED;\n                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1580); }\n                                                                                      }\n                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                        if (input.substr(peg$currPos, 4) === peg$c1581) {\n                                                                                          s0 = peg$c1581;\n                                                                                          peg$currPos += 4;\n                                                                                        } else {\n                                                                                          s0 = peg$FAILED;\n                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1582); }\n                                                                                        }\n                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                          if (input.substr(peg$currPos, 4) === peg$c1583) {\n                                                                                            s0 = peg$c1583;\n                                                                                            peg$currPos += 4;\n                                                                                          } else {\n                                                                                            s0 = peg$FAILED;\n                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1584); }\n                                                                                          }\n                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                            if (input.substr(peg$currPos, 4) === peg$c1585) {\n                                                                                              s0 = peg$c1585;\n                                                                                              peg$currPos += 4;\n                                                                                            } else {\n                                                                                              s0 = peg$FAILED;\n                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1586); }\n                                                                                            }\n                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                              if (input.substr(peg$currPos, 4) === peg$c1587) {\n                                                                                                s0 = peg$c1587;\n                                                                                                peg$currPos += 4;\n                                                                                              } else {\n                                                                                                s0 = peg$FAILED;\n                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1588); }\n                                                                                              }\n                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                if (input.substr(peg$currPos, 4) === peg$c1589) {\n                                                                                                  s0 = peg$c1589;\n                                                                                                  peg$currPos += 4;\n                                                                                                } else {\n                                                                                                  s0 = peg$FAILED;\n                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1590); }\n                                                                                                }\n                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                  if (input.substr(peg$currPos, 4) === peg$c1591) {\n                                                                                                    s0 = peg$c1591;\n                                                                                                    peg$currPos += 4;\n                                                                                                  } else {\n                                                                                                    s0 = peg$FAILED;\n                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1592); }\n                                                                                                  }\n                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                    if (input.substr(peg$currPos, 4) === peg$c1593) {\n                                                                                                      s0 = peg$c1593;\n                                                                                                      peg$currPos += 4;\n                                                                                                    } else {\n                                                                                                      s0 = peg$FAILED;\n                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1594); }\n                                                                                                    }\n                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                      if (input.substr(peg$currPos, 4) === peg$c1595) {\n                                                                                                        s0 = peg$c1595;\n                                                                                                        peg$currPos += 4;\n                                                                                                      } else {\n                                                                                                        s0 = peg$FAILED;\n                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1596); }\n                                                                                                      }\n                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                        if (input.substr(peg$currPos, 4) === peg$c1597) {\n                                                                                                          s0 = peg$c1597;\n                                                                                                          peg$currPos += 4;\n                                                                                                        } else {\n                                                                                                          s0 = peg$FAILED;\n                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1598); }\n                                                                                                        }\n                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                          if (input.substr(peg$currPos, 4) === peg$c1599) {\n                                                                                                            s0 = peg$c1599;\n                                                                                                            peg$currPos += 4;\n                                                                                                          } else {\n                                                                                                            s0 = peg$FAILED;\n                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1600); }\n                                                                                                          }\n                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                            if (input.substr(peg$currPos, 4) === peg$c1601) {\n                                                                                                              s0 = peg$c1601;\n                                                                                                              peg$currPos += 4;\n                                                                                                            } else {\n                                                                                                              s0 = peg$FAILED;\n                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1602); }\n                                                                                                            }\n                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                              if (input.substr(peg$currPos, 4) === peg$c1603) {\n                                                                                                                s0 = peg$c1603;\n                                                                                                                peg$currPos += 4;\n                                                                                                              } else {\n                                                                                                                s0 = peg$FAILED;\n                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1604); }\n                                                                                                              }\n                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                if (input.substr(peg$currPos, 4) === peg$c1605) {\n                                                                                                                  s0 = peg$c1605;\n                                                                                                                  peg$currPos += 4;\n                                                                                                                } else {\n                                                                                                                  s0 = peg$FAILED;\n                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1606); }\n                                                                                                                }\n                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                  if (input.substr(peg$currPos, 4) === peg$c1607) {\n                                                                                                                    s0 = peg$c1607;\n                                                                                                                    peg$currPos += 4;\n                                                                                                                  } else {\n                                                                                                                    s0 = peg$FAILED;\n                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1608); }\n                                                                                                                  }\n                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                    if (input.substr(peg$currPos, 4) === peg$c1609) {\n                                                                                                                      s0 = peg$c1609;\n                                                                                                                      peg$currPos += 4;\n                                                                                                                    } else {\n                                                                                                                      s0 = peg$FAILED;\n                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1610); }\n                                                                                                                    }\n                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                      if (input.substr(peg$currPos, 4) === peg$c1611) {\n                                                                                                                        s0 = peg$c1611;\n                                                                                                                        peg$currPos += 4;\n                                                                                                                      } else {\n                                                                                                                        s0 = peg$FAILED;\n                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1612); }\n                                                                                                                      }\n                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                        if (input.substr(peg$currPos, 4) === peg$c1613) {\n                                                                                                                          s0 = peg$c1613;\n                                                                                                                          peg$currPos += 4;\n                                                                                                                        } else {\n                                                                                                                          s0 = peg$FAILED;\n                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1614); }\n                                                                                                                        }\n                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                          if (input.substr(peg$currPos, 4) === peg$c1615) {\n                                                                                                                            s0 = peg$c1615;\n                                                                                                                            peg$currPos += 4;\n                                                                                                                          } else {\n                                                                                                                            s0 = peg$FAILED;\n                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1616); }\n                                                                                                                          }\n                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                            if (input.substr(peg$currPos, 4) === peg$c1617) {\n                                                                                                                              s0 = peg$c1617;\n                                                                                                                              peg$currPos += 4;\n                                                                                                                            } else {\n                                                                                                                              s0 = peg$FAILED;\n                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1618); }\n                                                                                                                            }\n                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                              if (input.substr(peg$currPos, 4) === peg$c1619) {\n                                                                                                                                s0 = peg$c1619;\n                                                                                                                                peg$currPos += 4;\n                                                                                                                              } else {\n                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1620); }\n                                                                                                                              }\n                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                if (input.substr(peg$currPos, 4) === peg$c1621) {\n                                                                                                                                  s0 = peg$c1621;\n                                                                                                                                  peg$currPos += 4;\n                                                                                                                                } else {\n                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1622); }\n                                                                                                                                }\n                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                  if (input.substr(peg$currPos, 4) === peg$c1623) {\n                                                                                                                                    s0 = peg$c1623;\n                                                                                                                                    peg$currPos += 4;\n                                                                                                                                  } else {\n                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1624); }\n                                                                                                                                  }\n                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                    if (input.substr(peg$currPos, 4) === peg$c1625) {\n                                                                                                                                      s0 = peg$c1625;\n                                                                                                                                      peg$currPos += 4;\n                                                                                                                                    } else {\n                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1626); }\n                                                                                                                                    }\n                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                      if (input.substr(peg$currPos, 4) === peg$c1627) {\n                                                                                                                                        s0 = peg$c1627;\n                                                                                                                                        peg$currPos += 4;\n                                                                                                                                      } else {\n                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1628); }\n                                                                                                                                      }\n                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                        if (input.substr(peg$currPos, 4) === peg$c1629) {\n                                                                                                                                          s0 = peg$c1629;\n                                                                                                                                          peg$currPos += 4;\n                                                                                                                                        } else {\n                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1630); }\n                                                                                                                                        }\n                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                          if (input.substr(peg$currPos, 4) === peg$c1631) {\n                                                                                                                                            s0 = peg$c1631;\n                                                                                                                                            peg$currPos += 4;\n                                                                                                                                          } else {\n                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1632); }\n                                                                                                                                          }\n                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                            if (input.substr(peg$currPos, 4) === peg$c1633) {\n                                                                                                                                              s0 = peg$c1633;\n                                                                                                                                              peg$currPos += 4;\n                                                                                                                                            } else {\n                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1634); }\n                                                                                                                                            }\n                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                              if (input.substr(peg$currPos, 4) === peg$c1635) {\n                                                                                                                                                s0 = peg$c1635;\n                                                                                                                                                peg$currPos += 4;\n                                                                                                                                              } else {\n                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1636); }\n                                                                                                                                              }\n                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                if (input.substr(peg$currPos, 4) === peg$c1637) {\n                                                                                                                                                  s0 = peg$c1637;\n                                                                                                                                                  peg$currPos += 4;\n                                                                                                                                                } else {\n                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1638); }\n                                                                                                                                                }\n                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                  if (input.substr(peg$currPos, 4) === peg$c1639) {\n                                                                                                                                                    s0 = peg$c1639;\n                                                                                                                                                    peg$currPos += 4;\n                                                                                                                                                  } else {\n                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1640); }\n                                                                                                                                                  }\n                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                    if (input.substr(peg$currPos, 4) === peg$c1641) {\n                                                                                                                                                      s0 = peg$c1641;\n                                                                                                                                                      peg$currPos += 4;\n                                                                                                                                                    } else {\n                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1642); }\n                                                                                                                                                    }\n                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                      if (input.substr(peg$currPos, 4) === peg$c1643) {\n                                                                                                                                                        s0 = peg$c1643;\n                                                                                                                                                        peg$currPos += 4;\n                                                                                                                                                      } else {\n                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1644); }\n                                                                                                                                                      }\n                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                        if (input.substr(peg$currPos, 4) === peg$c1645) {\n                                                                                                                                                          s0 = peg$c1645;\n                                                                                                                                                          peg$currPos += 4;\n                                                                                                                                                        } else {\n                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1646); }\n                                                                                                                                                        }\n                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                          if (input.substr(peg$currPos, 4) === peg$c1647) {\n                                                                                                                                                            s0 = peg$c1647;\n                                                                                                                                                            peg$currPos += 4;\n                                                                                                                                                          } else {\n                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1648); }\n                                                                                                                                                          }\n                                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                                            if (input.substr(peg$currPos, 4) === peg$c1649) {\n                                                                                                                                                              s0 = peg$c1649;\n                                                                                                                                                              peg$currPos += 4;\n                                                                                                                                                            } else {\n                                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1650); }\n                                                                                                                                                            }\n                                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                                              if (input.substr(peg$currPos, 4) === peg$c1651) {\n                                                                                                                                                                s0 = peg$c1651;\n                                                                                                                                                                peg$currPos += 4;\n                                                                                                                                                              } else {\n                                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1652); }\n                                                                                                                                                              }\n                                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                                if (input.substr(peg$currPos, 4) === peg$c1653) {\n                                                                                                                                                                  s0 = peg$c1653;\n                                                                                                                                                                  peg$currPos += 4;\n                                                                                                                                                                } else {\n                                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1654); }\n                                                                                                                                                                }\n                                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                                  if (input.substr(peg$currPos, 4) === peg$c1655) {\n                                                                                                                                                                    s0 = peg$c1655;\n                                                                                                                                                                    peg$currPos += 4;\n                                                                                                                                                                  } else {\n                                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1656); }\n                                                                                                                                                                  }\n                                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                                    if (input.substr(peg$currPos, 4) === peg$c1657) {\n                                                                                                                                                                      s0 = peg$c1657;\n                                                                                                                                                                      peg$currPos += 4;\n                                                                                                                                                                    } else {\n                                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1658); }\n                                                                                                                                                                    }\n                                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                                      if (input.substr(peg$currPos, 4) === peg$c1659) {\n                                                                                                                                                                        s0 = peg$c1659;\n                                                                                                                                                                        peg$currPos += 4;\n                                                                                                                                                                      } else {\n                                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1660); }\n                                                                                                                                                                      }\n                                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                                        if (input.substr(peg$currPos, 4) === peg$c1661) {\n                                                                                                                                                                          s0 = peg$c1661;\n                                                                                                                                                                          peg$currPos += 4;\n                                                                                                                                                                        } else {\n                                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1662); }\n                                                                                                                                                                        }\n                                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                                          if (input.substr(peg$currPos, 4) === peg$c1663) {\n                                                                                                                                                                            s0 = peg$c1663;\n                                                                                                                                                                            peg$currPos += 4;\n                                                                                                                                                                          } else {\n                                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1664); }\n                                                                                                                                                                          }\n                                                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                                                            if (input.substr(peg$currPos, 4) === peg$c1665) {\n                                                                                                                                                                              s0 = peg$c1665;\n                                                                                                                                                                              peg$currPos += 4;\n                                                                                                                                                                            } else {\n                                                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1666); }\n                                                                                                                                                                            }\n                                                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                                                              if (input.substr(peg$currPos, 4) === peg$c1667) {\n                                                                                                                                                                                s0 = peg$c1667;\n                                                                                                                                                                                peg$currPos += 4;\n                                                                                                                                                                              } else {\n                                                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1668); }\n                                                                                                                                                                              }\n                                                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                if (input.substr(peg$currPos, 4) === peg$c1665) {\n                                                                                                                                                                                  s0 = peg$c1665;\n                                                                                                                                                                                  peg$currPos += 4;\n                                                                                                                                                                                } else {\n                                                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1666); }\n                                                                                                                                                                                }\n                                                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                  if (input.substr(peg$currPos, 4) === peg$c1669) {\n                                                                                                                                                                                    s0 = peg$c1669;\n                                                                                                                                                                                    peg$currPos += 4;\n                                                                                                                                                                                  } else {\n                                                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1670); }\n                                                                                                                                                                                  }\n                                                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                    if (input.substr(peg$currPos, 4) === peg$c1671) {\n                                                                                                                                                                                      s0 = peg$c1671;\n                                                                                                                                                                                      peg$currPos += 4;\n                                                                                                                                                                                    } else {\n                                                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1672); }\n                                                                                                                                                                                    }\n                                                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                      if (input.substr(peg$currPos, 4) === peg$c1673) {\n                                                                                                                                                                                        s0 = peg$c1673;\n                                                                                                                                                                                        peg$currPos += 4;\n                                                                                                                                                                                      } else {\n                                                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1674); }\n                                                                                                                                                                                      }\n                                                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                        if (input.substr(peg$currPos, 4) === peg$c1671) {\n                                                                                                                                                                                          s0 = peg$c1671;\n                                                                                                                                                                                          peg$currPos += 4;\n                                                                                                                                                                                        } else {\n                                                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1672); }\n                                                                                                                                                                                        }\n                                                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                          if (input.substr(peg$currPos, 4) === peg$c1675) {\n                                                                                                                                                                                            s0 = peg$c1675;\n                                                                                                                                                                                            peg$currPos += 4;\n                                                                                                                                                                                          } else {\n                                                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1676); }\n                                                                                                                                                                                          }\n                                                                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                            if (input.substr(peg$currPos, 4) === peg$c1677) {\n                                                                                                                                                                                              s0 = peg$c1677;\n                                                                                                                                                                                              peg$currPos += 4;\n                                                                                                                                                                                            } else {\n                                                                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1678); }\n                                                                                                                                                                                            }\n                                                                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                              if (input.substr(peg$currPos, 4) === peg$c1679) {\n                                                                                                                                                                                                s0 = peg$c1679;\n                                                                                                                                                                                                peg$currPos += 4;\n                                                                                                                                                                                              } else {\n                                                                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1680); }\n                                                                                                                                                                                              }\n                                                                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                if (input.substr(peg$currPos, 4) === peg$c1677) {\n                                                                                                                                                                                                  s0 = peg$c1677;\n                                                                                                                                                                                                  peg$currPos += 4;\n                                                                                                                                                                                                } else {\n                                                                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1678); }\n                                                                                                                                                                                                }\n                                                                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                  if (input.substr(peg$currPos, 4) === peg$c1681) {\n                                                                                                                                                                                                    s0 = peg$c1681;\n                                                                                                                                                                                                    peg$currPos += 4;\n                                                                                                                                                                                                  } else {\n                                                                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1682); }\n                                                                                                                                                                                                  }\n                                                                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                    if (input.substr(peg$currPos, 4) === peg$c1683) {\n                                                                                                                                                                                                      s0 = peg$c1683;\n                                                                                                                                                                                                      peg$currPos += 4;\n                                                                                                                                                                                                    } else {\n                                                                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1684); }\n                                                                                                                                                                                                    }\n                                                                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                      if (input.substr(peg$currPos, 4) === peg$c1685) {\n                                                                                                                                                                                                        s0 = peg$c1685;\n                                                                                                                                                                                                        peg$currPos += 4;\n                                                                                                                                                                                                      } else {\n                                                                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1686); }\n                                                                                                                                                                                                      }\n                                                                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                        if (input.substr(peg$currPos, 4) === peg$c1683) {\n                                                                                                                                                                                                          s0 = peg$c1683;\n                                                                                                                                                                                                          peg$currPos += 4;\n                                                                                                                                                                                                        } else {\n                                                                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1684); }\n                                                                                                                                                                                                        }\n                                                                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                          if (input.substr(peg$currPos, 4) === peg$c1687) {\n                                                                                                                                                                                                            s0 = peg$c1687;\n                                                                                                                                                                                                            peg$currPos += 4;\n                                                                                                                                                                                                          } else {\n                                                                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1688); }\n                                                                                                                                                                                                          }\n                                                                                                                                                                                                        }\n                                                                                                                                                                                                      }\n                                                                                                                                                                                                    }\n                                                                                                                                                                                                  }\n                                                                                                                                                                                                }\n                                                                                                                                                                                              }\n                                                                                                                                                                                            }\n                                                                                                                                                                                          }\n                                                                                                                                                                                        }\n                                                                                                                                                                                      }\n                                                                                                                                                                                    }\n                                                                                                                                                                                  }\n                                                                                                                                                                                }\n                                                                                                                                                                              }\n                                                                                                                                                                            }\n                                                                                                                                                                          }\n                                                                                                                                                                        }\n                                                                                                                                                                      }\n                                                                                                                                                                    }\n                                                                                                                                                                  }\n                                                                                                                                                                }\n                                                                                                                                                              }\n                                                                                                                                                            }\n                                                                                                                                                          }\n                                                                                                                                                        }\n                                                                                                                                                      }\n                                                                                                                                                    }\n                                                                                                                                                  }\n                                                                                                                                                }\n                                                                                                                                              }\n                                                                                                                                            }\n                                                                                                                                          }\n                                                                                                                                        }\n                                                                                                                                      }\n                                                                                                                                    }\n                                                                                                                                  }\n                                                                                                                                }\n                                                                                                                              }\n                                                                                                                            }\n                                                                                                                          }\n                                                                                                                        }\n                                                                                                                      }\n                                                                                                                    }\n                                                                                                                  }\n                                                                                                                }\n                                                                                                              }\n                                                                                                            }\n                                                                                                          }\n                                                                                                        }\n                                                                                                      }\n                                                                                                    }\n                                                                                                  }\n                                                                                                }\n                                                                                              }\n                                                                                            }\n                                                                                          }\n                                                                                        }\n                                                                                      }\n                                                                                    }\n                                                                                  }\n                                                                                }\n                                                                              }\n                                                                            }\n                                                                          }\n                                                                        }\n                                                                      }\n                                                                    }\n                                                                  }\n                                                                }\n                                                              }\n                                                            }\n                                                          }\n                                                        }\n                                                      }\n                                                    }\n                                                  }\n                                                }\n                                              }\n                                            }\n                                          }\n                                        }\n                                      }\n                                    }\n                                  }\n                                }\n                              }\n                            }\n                          }\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordSuffix8(): any {\n    let s0;\n\n    if (input.substr(peg$currPos, 4) === peg$c1689) {\n      s0 = peg$c1689;\n      peg$currPos += 4;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c1690); }\n    }\n    if (s0 as any === peg$FAILED) {\n      if (input.substr(peg$currPos, 4) === peg$c1647) {\n        s0 = peg$c1647;\n        peg$currPos += 4;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c1648); }\n      }\n      if (s0 as any === peg$FAILED) {\n        if (input.substr(peg$currPos, 4) === peg$c1691) {\n          s0 = peg$c1691;\n          peg$currPos += 4;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c1692); }\n        }\n        if (s0 as any === peg$FAILED) {\n          if (input.substr(peg$currPos, 4) === peg$c1647) {\n            s0 = peg$c1647;\n            peg$currPos += 4;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c1648); }\n          }\n          if (s0 as any === peg$FAILED) {\n            if (input.substr(peg$currPos, 4) === peg$c1693) {\n              s0 = peg$c1693;\n              peg$currPos += 4;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c1694); }\n            }\n            if (s0 as any === peg$FAILED) {\n              if (input.substr(peg$currPos, 4) === peg$c1695) {\n                s0 = peg$c1695;\n                peg$currPos += 4;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c1696); }\n              }\n              if (s0 as any === peg$FAILED) {\n                if (input.substr(peg$currPos, 4) === peg$c1697) {\n                  s0 = peg$c1697;\n                  peg$currPos += 4;\n                } else {\n                  s0 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c1698); }\n                }\n                if (s0 as any === peg$FAILED) {\n                  if (input.substr(peg$currPos, 4) === peg$c1649) {\n                    s0 = peg$c1649;\n                    peg$currPos += 4;\n                  } else {\n                    s0 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c1650); }\n                  }\n                  if (s0 as any === peg$FAILED) {\n                    if (input.substr(peg$currPos, 4) === peg$c1699) {\n                      s0 = peg$c1699;\n                      peg$currPos += 4;\n                    } else {\n                      s0 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$c1700); }\n                    }\n                    if (s0 as any === peg$FAILED) {\n                      if (input.substr(peg$currPos, 4) === peg$c1701) {\n                        s0 = peg$c1701;\n                        peg$currPos += 4;\n                      } else {\n                        s0 = peg$FAILED;\n                        if (peg$silentFails === 0) { peg$fail(peg$c1702); }\n                      }\n                      if (s0 as any === peg$FAILED) {\n                        if (input.substr(peg$currPos, 4) === peg$c1703) {\n                          s0 = peg$c1703;\n                          peg$currPos += 4;\n                        } else {\n                          s0 = peg$FAILED;\n                          if (peg$silentFails === 0) { peg$fail(peg$c1704); }\n                        }\n                        if (s0 as any === peg$FAILED) {\n                          if (input.substr(peg$currPos, 4) === peg$c1705) {\n                            s0 = peg$c1705;\n                            peg$currPos += 4;\n                          } else {\n                            s0 = peg$FAILED;\n                            if (peg$silentFails === 0) { peg$fail(peg$c1706); }\n                          }\n                          if (s0 as any === peg$FAILED) {\n                            if (input.substr(peg$currPos, 4) === peg$c1707) {\n                              s0 = peg$c1707;\n                              peg$currPos += 4;\n                            } else {\n                              s0 = peg$FAILED;\n                              if (peg$silentFails === 0) { peg$fail(peg$c1708); }\n                            }\n                            if (s0 as any === peg$FAILED) {\n                              if (input.substr(peg$currPos, 4) === peg$c1703) {\n                                s0 = peg$c1703;\n                                peg$currPos += 4;\n                              } else {\n                                s0 = peg$FAILED;\n                                if (peg$silentFails === 0) { peg$fail(peg$c1704); }\n                              }\n                              if (s0 as any === peg$FAILED) {\n                                if (input.substr(peg$currPos, 4) === peg$c1709) {\n                                  s0 = peg$c1709;\n                                  peg$currPos += 4;\n                                } else {\n                                  s0 = peg$FAILED;\n                                  if (peg$silentFails === 0) { peg$fail(peg$c1710); }\n                                }\n                                if (s0 as any === peg$FAILED) {\n                                  if (input.substr(peg$currPos, 4) === peg$c1709) {\n                                    s0 = peg$c1709;\n                                    peg$currPos += 4;\n                                  } else {\n                                    s0 = peg$FAILED;\n                                    if (peg$silentFails === 0) { peg$fail(peg$c1710); }\n                                  }\n                                  if (s0 as any === peg$FAILED) {\n                                    if (input.substr(peg$currPos, 4) === peg$c1711) {\n                                      s0 = peg$c1711;\n                                      peg$currPos += 4;\n                                    } else {\n                                      s0 = peg$FAILED;\n                                      if (peg$silentFails === 0) { peg$fail(peg$c1712); }\n                                    }\n                                    if (s0 as any === peg$FAILED) {\n                                      if (input.substr(peg$currPos, 4) === peg$c1713) {\n                                        s0 = peg$c1713;\n                                        peg$currPos += 4;\n                                      } else {\n                                        s0 = peg$FAILED;\n                                        if (peg$silentFails === 0) { peg$fail(peg$c1714); }\n                                      }\n                                      if (s0 as any === peg$FAILED) {\n                                        if (input.substr(peg$currPos, 4) === peg$c1715) {\n                                          s0 = peg$c1715;\n                                          peg$currPos += 4;\n                                        } else {\n                                          s0 = peg$FAILED;\n                                          if (peg$silentFails === 0) { peg$fail(peg$c1716); }\n                                        }\n                                        if (s0 as any === peg$FAILED) {\n                                          if (input.substr(peg$currPos, 4) === peg$c1717) {\n                                            s0 = peg$c1717;\n                                            peg$currPos += 4;\n                                          } else {\n                                            s0 = peg$FAILED;\n                                            if (peg$silentFails === 0) { peg$fail(peg$c1718); }\n                                          }\n                                          if (s0 as any === peg$FAILED) {\n                                            if (input.substr(peg$currPos, 4) === peg$c1719) {\n                                              s0 = peg$c1719;\n                                              peg$currPos += 4;\n                                            } else {\n                                              s0 = peg$FAILED;\n                                              if (peg$silentFails === 0) { peg$fail(peg$c1720); }\n                                            }\n                                            if (s0 as any === peg$FAILED) {\n                                              if (input.substr(peg$currPos, 4) === peg$c1721) {\n                                                s0 = peg$c1721;\n                                                peg$currPos += 4;\n                                              } else {\n                                                s0 = peg$FAILED;\n                                                if (peg$silentFails === 0) { peg$fail(peg$c1722); }\n                                              }\n                                              if (s0 as any === peg$FAILED) {\n                                                if (input.substr(peg$currPos, 4) === peg$c1723) {\n                                                  s0 = peg$c1723;\n                                                  peg$currPos += 4;\n                                                } else {\n                                                  s0 = peg$FAILED;\n                                                  if (peg$silentFails === 0) { peg$fail(peg$c1724); }\n                                                }\n                                                if (s0 as any === peg$FAILED) {\n                                                  if (input.substr(peg$currPos, 4) === peg$c1725) {\n                                                    s0 = peg$c1725;\n                                                    peg$currPos += 4;\n                                                  } else {\n                                                    s0 = peg$FAILED;\n                                                    if (peg$silentFails === 0) { peg$fail(peg$c1726); }\n                                                  }\n                                                  if (s0 as any === peg$FAILED) {\n                                                    if (input.substr(peg$currPos, 4) === peg$c1727) {\n                                                      s0 = peg$c1727;\n                                                      peg$currPos += 4;\n                                                    } else {\n                                                      s0 = peg$FAILED;\n                                                      if (peg$silentFails === 0) { peg$fail(peg$c1728); }\n                                                    }\n                                                    if (s0 as any === peg$FAILED) {\n                                                      if (input.substr(peg$currPos, 4) === peg$c1729) {\n                                                        s0 = peg$c1729;\n                                                        peg$currPos += 4;\n                                                      } else {\n                                                        s0 = peg$FAILED;\n                                                        if (peg$silentFails === 0) { peg$fail(peg$c1730); }\n                                                      }\n                                                      if (s0 as any === peg$FAILED) {\n                                                        if (input.substr(peg$currPos, 4) === peg$c1731) {\n                                                          s0 = peg$c1731;\n                                                          peg$currPos += 4;\n                                                        } else {\n                                                          s0 = peg$FAILED;\n                                                          if (peg$silentFails === 0) { peg$fail(peg$c1732); }\n                                                        }\n                                                        if (s0 as any === peg$FAILED) {\n                                                          if (input.substr(peg$currPos, 4) === peg$c1701) {\n                                                            s0 = peg$c1701;\n                                                            peg$currPos += 4;\n                                                          } else {\n                                                            s0 = peg$FAILED;\n                                                            if (peg$silentFails === 0) { peg$fail(peg$c1702); }\n                                                          }\n                                                          if (s0 as any === peg$FAILED) {\n                                                            if (input.substr(peg$currPos, 4) === peg$c1733) {\n                                                              s0 = peg$c1733;\n                                                              peg$currPos += 4;\n                                                            } else {\n                                                              s0 = peg$FAILED;\n                                                              if (peg$silentFails === 0) { peg$fail(peg$c1734); }\n                                                            }\n                                                            if (s0 as any === peg$FAILED) {\n                                                              if (input.substr(peg$currPos, 4) === peg$c1735) {\n                                                                s0 = peg$c1735;\n                                                                peg$currPos += 4;\n                                                              } else {\n                                                                s0 = peg$FAILED;\n                                                                if (peg$silentFails === 0) { peg$fail(peg$c1736); }\n                                                              }\n                                                              if (s0 as any === peg$FAILED) {\n                                                                if (input.substr(peg$currPos, 4) === peg$c1737) {\n                                                                  s0 = peg$c1737;\n                                                                  peg$currPos += 4;\n                                                                } else {\n                                                                  s0 = peg$FAILED;\n                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1738); }\n                                                                }\n                                                                if (s0 as any === peg$FAILED) {\n                                                                  if (input.substr(peg$currPos, 4) === peg$c1739) {\n                                                                    s0 = peg$c1739;\n                                                                    peg$currPos += 4;\n                                                                  } else {\n                                                                    s0 = peg$FAILED;\n                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1740); }\n                                                                  }\n                                                                  if (s0 as any === peg$FAILED) {\n                                                                    if (input.substr(peg$currPos, 4) === peg$c1741) {\n                                                                      s0 = peg$c1741;\n                                                                      peg$currPos += 4;\n                                                                    } else {\n                                                                      s0 = peg$FAILED;\n                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1742); }\n                                                                    }\n                                                                    if (s0 as any === peg$FAILED) {\n                                                                      if (input.substr(peg$currPos, 3) === peg$c1743) {\n                                                                        s0 = peg$c1743;\n                                                                        peg$currPos += 3;\n                                                                      } else {\n                                                                        s0 = peg$FAILED;\n                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1744); }\n                                                                      }\n                                                                      if (s0 as any === peg$FAILED) {\n                                                                        if (input.substr(peg$currPos, 3) === peg$c1745) {\n                                                                          s0 = peg$c1745;\n                                                                          peg$currPos += 3;\n                                                                        } else {\n                                                                          s0 = peg$FAILED;\n                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1746); }\n                                                                        }\n                                                                        if (s0 as any === peg$FAILED) {\n                                                                          if (input.substr(peg$currPos, 3) === peg$c1747) {\n                                                                            s0 = peg$c1747;\n                                                                            peg$currPos += 3;\n                                                                          } else {\n                                                                            s0 = peg$FAILED;\n                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1748); }\n                                                                          }\n                                                                          if (s0 as any === peg$FAILED) {\n                                                                            if (input.substr(peg$currPos, 3) === peg$c1749) {\n                                                                              s0 = peg$c1749;\n                                                                              peg$currPos += 3;\n                                                                            } else {\n                                                                              s0 = peg$FAILED;\n                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1750); }\n                                                                            }\n                                                                            if (s0 as any === peg$FAILED) {\n                                                                              if (input.substr(peg$currPos, 3) === peg$c1751) {\n                                                                                s0 = peg$c1751;\n                                                                                peg$currPos += 3;\n                                                                              } else {\n                                                                                s0 = peg$FAILED;\n                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1752); }\n                                                                              }\n                                                                              if (s0 as any === peg$FAILED) {\n                                                                                if (input.substr(peg$currPos, 3) === peg$c1753) {\n                                                                                  s0 = peg$c1753;\n                                                                                  peg$currPos += 3;\n                                                                                } else {\n                                                                                  s0 = peg$FAILED;\n                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1754); }\n                                                                                }\n                                                                                if (s0 as any === peg$FAILED) {\n                                                                                  if (input.substr(peg$currPos, 3) === peg$c1755) {\n                                                                                    s0 = peg$c1755;\n                                                                                    peg$currPos += 3;\n                                                                                  } else {\n                                                                                    s0 = peg$FAILED;\n                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1756); }\n                                                                                  }\n                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                    if (input.substr(peg$currPos, 3) === peg$c1757) {\n                                                                                      s0 = peg$c1757;\n                                                                                      peg$currPos += 3;\n                                                                                    } else {\n                                                                                      s0 = peg$FAILED;\n                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1758); }\n                                                                                    }\n                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                      if (input.substr(peg$currPos, 3) === peg$c1759) {\n                                                                                        s0 = peg$c1759;\n                                                                                        peg$currPos += 3;\n                                                                                      } else {\n                                                                                        s0 = peg$FAILED;\n                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1760); }\n                                                                                      }\n                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                        if (input.substr(peg$currPos, 3) === peg$c1761) {\n                                                                                          s0 = peg$c1761;\n                                                                                          peg$currPos += 3;\n                                                                                        } else {\n                                                                                          s0 = peg$FAILED;\n                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1762); }\n                                                                                        }\n                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                          if (input.substr(peg$currPos, 3) === peg$c1763) {\n                                                                                            s0 = peg$c1763;\n                                                                                            peg$currPos += 3;\n                                                                                          } else {\n                                                                                            s0 = peg$FAILED;\n                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1764); }\n                                                                                          }\n                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                            if (input.substr(peg$currPos, 3) === peg$c1765) {\n                                                                                              s0 = peg$c1765;\n                                                                                              peg$currPos += 3;\n                                                                                            } else {\n                                                                                              s0 = peg$FAILED;\n                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1766); }\n                                                                                            }\n                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                              if (input.substr(peg$currPos, 3) === peg$c1767) {\n                                                                                                s0 = peg$c1767;\n                                                                                                peg$currPos += 3;\n                                                                                              } else {\n                                                                                                s0 = peg$FAILED;\n                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1768); }\n                                                                                              }\n                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                if (input.substr(peg$currPos, 3) === peg$c1769) {\n                                                                                                  s0 = peg$c1769;\n                                                                                                  peg$currPos += 3;\n                                                                                                } else {\n                                                                                                  s0 = peg$FAILED;\n                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1770); }\n                                                                                                }\n                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                  if (input.substr(peg$currPos, 3) === peg$c1771) {\n                                                                                                    s0 = peg$c1771;\n                                                                                                    peg$currPos += 3;\n                                                                                                  } else {\n                                                                                                    s0 = peg$FAILED;\n                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1772); }\n                                                                                                  }\n                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                    if (input.substr(peg$currPos, 3) === peg$c1773) {\n                                                                                                      s0 = peg$c1773;\n                                                                                                      peg$currPos += 3;\n                                                                                                    } else {\n                                                                                                      s0 = peg$FAILED;\n                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1774); }\n                                                                                                    }\n                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                      if (input.substr(peg$currPos, 3) === peg$c1775) {\n                                                                                                        s0 = peg$c1775;\n                                                                                                        peg$currPos += 3;\n                                                                                                      } else {\n                                                                                                        s0 = peg$FAILED;\n                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1776); }\n                                                                                                      }\n                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                        if (input.substr(peg$currPos, 3) === peg$c1777) {\n                                                                                                          s0 = peg$c1777;\n                                                                                                          peg$currPos += 3;\n                                                                                                        } else {\n                                                                                                          s0 = peg$FAILED;\n                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1778); }\n                                                                                                        }\n                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                          if (input.substr(peg$currPos, 3) === peg$c1779) {\n                                                                                                            s0 = peg$c1779;\n                                                                                                            peg$currPos += 3;\n                                                                                                          } else {\n                                                                                                            s0 = peg$FAILED;\n                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1780); }\n                                                                                                          }\n                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                            if (input.substr(peg$currPos, 3) === peg$c1781) {\n                                                                                                              s0 = peg$c1781;\n                                                                                                              peg$currPos += 3;\n                                                                                                            } else {\n                                                                                                              s0 = peg$FAILED;\n                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1782); }\n                                                                                                            }\n                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                              if (input.substr(peg$currPos, 3) === peg$c1783) {\n                                                                                                                s0 = peg$c1783;\n                                                                                                                peg$currPos += 3;\n                                                                                                              } else {\n                                                                                                                s0 = peg$FAILED;\n                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1784); }\n                                                                                                              }\n                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                if (input.substr(peg$currPos, 3) === peg$c1785) {\n                                                                                                                  s0 = peg$c1785;\n                                                                                                                  peg$currPos += 3;\n                                                                                                                } else {\n                                                                                                                  s0 = peg$FAILED;\n                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1786); }\n                                                                                                                }\n                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                  if (input.substr(peg$currPos, 3) === peg$c1787) {\n                                                                                                                    s0 = peg$c1787;\n                                                                                                                    peg$currPos += 3;\n                                                                                                                  } else {\n                                                                                                                    s0 = peg$FAILED;\n                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1788); }\n                                                                                                                  }\n                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                    if (input.substr(peg$currPos, 3) === peg$c1789) {\n                                                                                                                      s0 = peg$c1789;\n                                                                                                                      peg$currPos += 3;\n                                                                                                                    } else {\n                                                                                                                      s0 = peg$FAILED;\n                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1790); }\n                                                                                                                    }\n                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                      if (input.substr(peg$currPos, 3) === peg$c1791) {\n                                                                                                                        s0 = peg$c1791;\n                                                                                                                        peg$currPos += 3;\n                                                                                                                      } else {\n                                                                                                                        s0 = peg$FAILED;\n                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1792); }\n                                                                                                                      }\n                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                        if (input.substr(peg$currPos, 3) === peg$c1793) {\n                                                                                                                          s0 = peg$c1793;\n                                                                                                                          peg$currPos += 3;\n                                                                                                                        } else {\n                                                                                                                          s0 = peg$FAILED;\n                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1794); }\n                                                                                                                        }\n                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                          if (input.substr(peg$currPos, 3) === peg$c1795) {\n                                                                                                                            s0 = peg$c1795;\n                                                                                                                            peg$currPos += 3;\n                                                                                                                          } else {\n                                                                                                                            s0 = peg$FAILED;\n                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1796); }\n                                                                                                                          }\n                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                            if (input.substr(peg$currPos, 3) === peg$c1797) {\n                                                                                                                              s0 = peg$c1797;\n                                                                                                                              peg$currPos += 3;\n                                                                                                                            } else {\n                                                                                                                              s0 = peg$FAILED;\n                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1798); }\n                                                                                                                            }\n                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                              if (input.substr(peg$currPos, 3) === peg$c1799) {\n                                                                                                                                s0 = peg$c1799;\n                                                                                                                                peg$currPos += 3;\n                                                                                                                              } else {\n                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1800); }\n                                                                                                                              }\n                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                if (input.substr(peg$currPos, 3) === peg$c1801) {\n                                                                                                                                  s0 = peg$c1801;\n                                                                                                                                  peg$currPos += 3;\n                                                                                                                                } else {\n                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1802); }\n                                                                                                                                }\n                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                  if (input.substr(peg$currPos, 3) === peg$c1803) {\n                                                                                                                                    s0 = peg$c1803;\n                                                                                                                                    peg$currPos += 3;\n                                                                                                                                  } else {\n                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1804); }\n                                                                                                                                  }\n                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                    if (input.substr(peg$currPos, 3) === peg$c1805) {\n                                                                                                                                      s0 = peg$c1805;\n                                                                                                                                      peg$currPos += 3;\n                                                                                                                                    } else {\n                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1806); }\n                                                                                                                                    }\n                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                      if (input.substr(peg$currPos, 3) === peg$c1807) {\n                                                                                                                                        s0 = peg$c1807;\n                                                                                                                                        peg$currPos += 3;\n                                                                                                                                      } else {\n                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1808); }\n                                                                                                                                      }\n                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                        if (input.substr(peg$currPos, 3) === peg$c1809) {\n                                                                                                                                          s0 = peg$c1809;\n                                                                                                                                          peg$currPos += 3;\n                                                                                                                                        } else {\n                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1810); }\n                                                                                                                                        }\n                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                          if (input.substr(peg$currPos, 3) === peg$c1811) {\n                                                                                                                                            s0 = peg$c1811;\n                                                                                                                                            peg$currPos += 3;\n                                                                                                                                          } else {\n                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1812); }\n                                                                                                                                          }\n                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                            if (input.substr(peg$currPos, 3) === peg$c1813) {\n                                                                                                                                              s0 = peg$c1813;\n                                                                                                                                              peg$currPos += 3;\n                                                                                                                                            } else {\n                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1814); }\n                                                                                                                                            }\n                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                              if (input.substr(peg$currPos, 3) === peg$c1815) {\n                                                                                                                                                s0 = peg$c1815;\n                                                                                                                                                peg$currPos += 3;\n                                                                                                                                              } else {\n                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1816); }\n                                                                                                                                              }\n                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                if (input.substr(peg$currPos, 3) === peg$c1817) {\n                                                                                                                                                  s0 = peg$c1817;\n                                                                                                                                                  peg$currPos += 3;\n                                                                                                                                                } else {\n                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1818); }\n                                                                                                                                                }\n                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                  if (input.substr(peg$currPos, 3) === peg$c1819) {\n                                                                                                                                                    s0 = peg$c1819;\n                                                                                                                                                    peg$currPos += 3;\n                                                                                                                                                  } else {\n                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1820); }\n                                                                                                                                                  }\n                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                    if (input.substr(peg$currPos, 3) === peg$c1821) {\n                                                                                                                                                      s0 = peg$c1821;\n                                                                                                                                                      peg$currPos += 3;\n                                                                                                                                                    } else {\n                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1822); }\n                                                                                                                                                    }\n                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                      if (input.substr(peg$currPos, 3) === peg$c1823) {\n                                                                                                                                                        s0 = peg$c1823;\n                                                                                                                                                        peg$currPos += 3;\n                                                                                                                                                      } else {\n                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1824); }\n                                                                                                                                                      }\n                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                        if (input.substr(peg$currPos, 3) === peg$c1825) {\n                                                                                                                                                          s0 = peg$c1825;\n                                                                                                                                                          peg$currPos += 3;\n                                                                                                                                                        } else {\n                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1826); }\n                                                                                                                                                        }\n                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                          if (input.substr(peg$currPos, 3) === peg$c1827) {\n                                                                                                                                                            s0 = peg$c1827;\n                                                                                                                                                            peg$currPos += 3;\n                                                                                                                                                          } else {\n                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1828); }\n                                                                                                                                                          }\n                                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                                            if (input.substr(peg$currPos, 3) === peg$c1829) {\n                                                                                                                                                              s0 = peg$c1829;\n                                                                                                                                                              peg$currPos += 3;\n                                                                                                                                                            } else {\n                                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1830); }\n                                                                                                                                                            }\n                                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                                              if (input.substr(peg$currPos, 3) === peg$c1831) {\n                                                                                                                                                                s0 = peg$c1831;\n                                                                                                                                                                peg$currPos += 3;\n                                                                                                                                                              } else {\n                                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1832); }\n                                                                                                                                                              }\n                                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                                if (input.substr(peg$currPos, 3) === peg$c1833) {\n                                                                                                                                                                  s0 = peg$c1833;\n                                                                                                                                                                  peg$currPos += 3;\n                                                                                                                                                                } else {\n                                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1834); }\n                                                                                                                                                                }\n                                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                                  if (input.substr(peg$currPos, 3) === peg$c1835) {\n                                                                                                                                                                    s0 = peg$c1835;\n                                                                                                                                                                    peg$currPos += 3;\n                                                                                                                                                                  } else {\n                                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1836); }\n                                                                                                                                                                  }\n                                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                                    if (input.substr(peg$currPos, 3) === peg$c1837) {\n                                                                                                                                                                      s0 = peg$c1837;\n                                                                                                                                                                      peg$currPos += 3;\n                                                                                                                                                                    } else {\n                                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1838); }\n                                                                                                                                                                    }\n                                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                                      if (input.substr(peg$currPos, 3) === peg$c1825) {\n                                                                                                                                                                        s0 = peg$c1825;\n                                                                                                                                                                        peg$currPos += 3;\n                                                                                                                                                                      } else {\n                                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1826); }\n                                                                                                                                                                      }\n                                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                                        if (input.substr(peg$currPos, 3) === peg$c1825) {\n                                                                                                                                                                          s0 = peg$c1825;\n                                                                                                                                                                          peg$currPos += 3;\n                                                                                                                                                                        } else {\n                                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1826); }\n                                                                                                                                                                        }\n                                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                                          if (input.substr(peg$currPos, 3) === peg$c1839) {\n                                                                                                                                                                            s0 = peg$c1839;\n                                                                                                                                                                            peg$currPos += 3;\n                                                                                                                                                                          } else {\n                                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1840); }\n                                                                                                                                                                          }\n                                                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                                                            if (input.substr(peg$currPos, 2) === peg$c1841) {\n                                                                                                                                                                              s0 = peg$c1841;\n                                                                                                                                                                              peg$currPos += 2;\n                                                                                                                                                                            } else {\n                                                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1842); }\n                                                                                                                                                                            }\n                                                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                                                              if (input.substr(peg$currPos, 2) === peg$c1843) {\n                                                                                                                                                                                s0 = peg$c1843;\n                                                                                                                                                                                peg$currPos += 2;\n                                                                                                                                                                              } else {\n                                                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1844); }\n                                                                                                                                                                              }\n                                                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                if (input.substr(peg$currPos, 2) === peg$c1845) {\n                                                                                                                                                                                  s0 = peg$c1845;\n                                                                                                                                                                                  peg$currPos += 2;\n                                                                                                                                                                                } else {\n                                                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1846); }\n                                                                                                                                                                                }\n                                                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                  if (input.substr(peg$currPos, 2) === peg$c1847) {\n                                                                                                                                                                                    s0 = peg$c1847;\n                                                                                                                                                                                    peg$currPos += 2;\n                                                                                                                                                                                  } else {\n                                                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1848); }\n                                                                                                                                                                                  }\n                                                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                    if (input.substr(peg$currPos, 2) === peg$c1849) {\n                                                                                                                                                                                      s0 = peg$c1849;\n                                                                                                                                                                                      peg$currPos += 2;\n                                                                                                                                                                                    } else {\n                                                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1850); }\n                                                                                                                                                                                    }\n                                                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                      if (input.substr(peg$currPos, 2) === peg$c1851) {\n                                                                                                                                                                                        s0 = peg$c1851;\n                                                                                                                                                                                        peg$currPos += 2;\n                                                                                                                                                                                      } else {\n                                                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1852); }\n                                                                                                                                                                                      }\n                                                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                        if (input.substr(peg$currPos, 2) === peg$c1853) {\n                                                                                                                                                                                          s0 = peg$c1853;\n                                                                                                                                                                                          peg$currPos += 2;\n                                                                                                                                                                                        } else {\n                                                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1854); }\n                                                                                                                                                                                        }\n                                                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                          if (input.substr(peg$currPos, 2) === peg$c1855) {\n                                                                                                                                                                                            s0 = peg$c1855;\n                                                                                                                                                                                            peg$currPos += 2;\n                                                                                                                                                                                          } else {\n                                                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1856); }\n                                                                                                                                                                                          }\n                                                                                                                                                                                          if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                            if (input.substr(peg$currPos, 2) === peg$c1857) {\n                                                                                                                                                                                              s0 = peg$c1857;\n                                                                                                                                                                                              peg$currPos += 2;\n                                                                                                                                                                                            } else {\n                                                                                                                                                                                              s0 = peg$FAILED;\n                                                                                                                                                                                              if (peg$silentFails === 0) { peg$fail(peg$c1858); }\n                                                                                                                                                                                            }\n                                                                                                                                                                                            if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                              if (input.substr(peg$currPos, 2) === peg$c1859) {\n                                                                                                                                                                                                s0 = peg$c1859;\n                                                                                                                                                                                                peg$currPos += 2;\n                                                                                                                                                                                              } else {\n                                                                                                                                                                                                s0 = peg$FAILED;\n                                                                                                                                                                                                if (peg$silentFails === 0) { peg$fail(peg$c1860); }\n                                                                                                                                                                                              }\n                                                                                                                                                                                              if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                if (input.substr(peg$currPos, 2) === peg$c1859) {\n                                                                                                                                                                                                  s0 = peg$c1859;\n                                                                                                                                                                                                  peg$currPos += 2;\n                                                                                                                                                                                                } else {\n                                                                                                                                                                                                  s0 = peg$FAILED;\n                                                                                                                                                                                                  if (peg$silentFails === 0) { peg$fail(peg$c1860); }\n                                                                                                                                                                                                }\n                                                                                                                                                                                                if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                  if (input.substr(peg$currPos, 2) === peg$c1861) {\n                                                                                                                                                                                                    s0 = peg$c1861;\n                                                                                                                                                                                                    peg$currPos += 2;\n                                                                                                                                                                                                  } else {\n                                                                                                                                                                                                    s0 = peg$FAILED;\n                                                                                                                                                                                                    if (peg$silentFails === 0) { peg$fail(peg$c1862); }\n                                                                                                                                                                                                  }\n                                                                                                                                                                                                  if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                    if (input.substr(peg$currPos, 2) === peg$c1863) {\n                                                                                                                                                                                                      s0 = peg$c1863;\n                                                                                                                                                                                                      peg$currPos += 2;\n                                                                                                                                                                                                    } else {\n                                                                                                                                                                                                      s0 = peg$FAILED;\n                                                                                                                                                                                                      if (peg$silentFails === 0) { peg$fail(peg$c1864); }\n                                                                                                                                                                                                    }\n                                                                                                                                                                                                    if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                      if (input.substr(peg$currPos, 2) === peg$c1865) {\n                                                                                                                                                                                                        s0 = peg$c1865;\n                                                                                                                                                                                                        peg$currPos += 2;\n                                                                                                                                                                                                      } else {\n                                                                                                                                                                                                        s0 = peg$FAILED;\n                                                                                                                                                                                                        if (peg$silentFails === 0) { peg$fail(peg$c1866); }\n                                                                                                                                                                                                      }\n                                                                                                                                                                                                      if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                        if (input.substr(peg$currPos, 2) === peg$c1867) {\n                                                                                                                                                                                                          s0 = peg$c1867;\n                                                                                                                                                                                                          peg$currPos += 2;\n                                                                                                                                                                                                        } else {\n                                                                                                                                                                                                          s0 = peg$FAILED;\n                                                                                                                                                                                                          if (peg$silentFails === 0) { peg$fail(peg$c1868); }\n                                                                                                                                                                                                        }\n                                                                                                                                                                                                        if (s0 as any === peg$FAILED) {\n                                                                                                                                                                                                          if (input.substr(peg$currPos, 2) === peg$c1869) {\n                                                                                                                                                                                                            s0 = peg$c1869;\n                                                                                                                                                                                                            peg$currPos += 2;\n                                                                                                                                                                                                          } else {\n                                                                                                                                                                                                            s0 = peg$FAILED;\n                                                                                                                                                                                                            if (peg$silentFails === 0) { peg$fail(peg$c1870); }\n                                                                                                                                                                                                          }\n                                                                                                                                                                                                        }\n                                                                                                                                                                                                      }\n                                                                                                                                                                                                    }\n                                                                                                                                                                                                  }\n                                                                                                                                                                                                }\n                                                                                                                                                                                              }\n                                                                                                                                                                                            }\n                                                                                                                                                                                          }\n                                                                                                                                                                                        }\n                                                                                                                                                                                      }\n                                                                                                                                                                                    }\n                                                                                                                                                                                  }\n                                                                                                                                                                                }\n                                                                                                                                                                              }\n                                                                                                                                                                            }\n                                                                                                                                                                          }\n                                                                                                                                                                        }\n                                                                                                                                                                      }\n                                                                                                                                                                    }\n                                                                                                                                                                  }\n                                                                                                                                                                }\n                                                                                                                                                              }\n                                                                                                                                                            }\n                                                                                                                                                          }\n                                                                                                                                                        }\n                                                                                                                                                      }\n                                                                                                                                                    }\n                                                                                                                                                  }\n                                                                                                                                                }\n                                                                                                                                              }\n                                                                                                                                            }\n                                                                                                                                          }\n                                                                                                                                        }\n                                                                                                                                      }\n                                                                                                                                    }\n                                                                                                                                  }\n                                                                                                                                }\n                                                                                                                              }\n                                                                                                                            }\n                                                                                                                          }\n                                                                                                                        }\n                                                                                                                      }\n                                                                                                                    }\n                                                                                                                  }\n                                                                                                                }\n                                                                                                              }\n                                                                                                            }\n                                                                                                          }\n                                                                                                        }\n                                                                                                      }\n                                                                                                    }\n                                                                                                  }\n                                                                                                }\n                                                                                              }\n                                                                                            }\n                                                                                          }\n                                                                                        }\n                                                                                      }\n                                                                                    }\n                                                                                  }\n                                                                                }\n                                                                              }\n                                                                            }\n                                                                          }\n                                                                        }\n                                                                      }\n                                                                    }\n                                                                  }\n                                                                }\n                                                              }\n                                                            }\n                                                          }\n                                                        }\n                                                      }\n                                                    }\n                                                  }\n                                                }\n                                              }\n                                            }\n                                          }\n                                        }\n                                      }\n                                    }\n                                  }\n                                }\n                              }\n                            }\n                          }\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseChordSuffix9(): any {\n    let s0;\n\n    if (input.substr(peg$currPos, 2) === peg$c82) {\n      s0 = peg$c82;\n      peg$currPos += 2;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c1871); }\n    }\n    if (s0 as any === peg$FAILED) {\n      if (input.substr(peg$currPos, 2) === peg$c1872) {\n        s0 = peg$c1872;\n        peg$currPos += 2;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) { peg$fail(peg$c1873); }\n      }\n      if (s0 as any === peg$FAILED) {\n        if (input.substr(peg$currPos, 2) === peg$c1874) {\n          s0 = peg$c1874;\n          peg$currPos += 2;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) { peg$fail(peg$c1875); }\n        }\n        if (s0 as any === peg$FAILED) {\n          if (input.substr(peg$currPos, 2) === peg$c1876) {\n            s0 = peg$c1876;\n            peg$currPos += 2;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) { peg$fail(peg$c1877); }\n          }\n          if (s0 as any === peg$FAILED) {\n            if (input.substr(peg$currPos, 2) === peg$c1878) {\n              s0 = peg$c1878;\n              peg$currPos += 2;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) { peg$fail(peg$c1879); }\n            }\n            if (s0 as any === peg$FAILED) {\n              if (input.substr(peg$currPos, 2) === peg$c1880) {\n                s0 = peg$c1880;\n                peg$currPos += 2;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) { peg$fail(peg$c1881); }\n              }\n              if (s0 as any === peg$FAILED) {\n                if (input.substr(peg$currPos, 2) === peg$c1882) {\n                  s0 = peg$c1882;\n                  peg$currPos += 2;\n                } else {\n                  s0 = peg$FAILED;\n                  if (peg$silentFails === 0) { peg$fail(peg$c1883); }\n                }\n                if (s0 as any === peg$FAILED) {\n                  if (input.substr(peg$currPos, 2) === peg$c1884) {\n                    s0 = peg$c1884;\n                    peg$currPos += 2;\n                  } else {\n                    s0 = peg$FAILED;\n                    if (peg$silentFails === 0) { peg$fail(peg$c1885); }\n                  }\n                  if (s0 as any === peg$FAILED) {\n                    if (input.substr(peg$currPos, 2) === peg$c1886) {\n                      s0 = peg$c1886;\n                      peg$currPos += 2;\n                    } else {\n                      s0 = peg$FAILED;\n                      if (peg$silentFails === 0) { peg$fail(peg$c1887); }\n                    }\n                    if (s0 as any === peg$FAILED) {\n                      if (input.substr(peg$currPos, 2) === peg$c1888) {\n                        s0 = peg$c1888;\n                        peg$currPos += 2;\n                      } else {\n                        s0 = peg$FAILED;\n                        if (peg$silentFails === 0) { peg$fail(peg$c1889); }\n                      }\n                      if (s0 as any === peg$FAILED) {\n                        if (input.substr(peg$currPos, 2) === peg$c1890) {\n                          s0 = peg$c1890;\n                          peg$currPos += 2;\n                        } else {\n                          s0 = peg$FAILED;\n                          if (peg$silentFails === 0) { peg$fail(peg$c1891); }\n                        }\n                        if (s0 as any === peg$FAILED) {\n                          if (input.substr(peg$currPos, 2) === peg$c1892) {\n                            s0 = peg$c1892;\n                            peg$currPos += 2;\n                          } else {\n                            s0 = peg$FAILED;\n                            if (peg$silentFails === 0) { peg$fail(peg$c1893); }\n                          }\n                          if (s0 as any === peg$FAILED) {\n                            if (input.substr(peg$currPos, 2) === peg$c1894) {\n                              s0 = peg$c1894;\n                              peg$currPos += 2;\n                            } else {\n                              s0 = peg$FAILED;\n                              if (peg$silentFails === 0) { peg$fail(peg$c1895); }\n                            }\n                            if (s0 as any === peg$FAILED) {\n                              if (input.substr(peg$currPos, 2) === peg$c1896) {\n                                s0 = peg$c1896;\n                                peg$currPos += 2;\n                              } else {\n                                s0 = peg$FAILED;\n                                if (peg$silentFails === 0) { peg$fail(peg$c1897); }\n                              }\n                              if (s0 as any === peg$FAILED) {\n                                if (peg$c1898.test(input.charAt(peg$currPos))) {\n                                  s0 = input.charAt(peg$currPos);\n                                  peg$currPos++;\n                                } else {\n                                  s0 = peg$FAILED;\n                                  if (peg$silentFails === 0) { peg$fail(peg$c1899); }\n                                }\n                              }\n                            }\n                          }\n                        }\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n\n    return s0;\n  }\n\n  function peg$parseNewLine(): any {\n    let s0;\n\n    if (peg$c1900.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c1901); }\n    }\n    if (s0 as any === peg$FAILED) {\n      s0 = peg$parseCarriageReturnLineFeed();\n    }\n\n    return s0;\n  }\n\n  function peg$parseCarriageReturnLineFeed(): any {\n    let s0, s1, s2;\n\n    s0 = peg$currPos;\n    s1 = peg$parseCarriageReturn();\n    if (s1 as any !== peg$FAILED) {\n      s2 = peg$parseLineFeed();\n      if (s2 as any !== peg$FAILED) {\n        s1 = [s1, s2];\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n\n    return s0;\n  }\n\n  function peg$parseLineFeed(): any {\n    let s0;\n\n    if (input.charCodeAt(peg$currPos) === 10) {\n      s0 = peg$c1902;\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c1903); }\n    }\n\n    return s0;\n  }\n\n  function peg$parseCarriageReturn(): any {\n    let s0;\n\n    if (input.charCodeAt(peg$currPos) === 13) {\n      s0 = peg$c1904;\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) { peg$fail(peg$c1905); }\n    }\n\n    return s0;\n  }\n\n  peg$result = peg$startRuleFunction();\n\n  if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n    return peg$result;\n  } else {\n    if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n      peg$fail(peg$endExpectation());\n    }\n\n    throw peg$buildStructuredError(\n      peg$maxFailExpected,\n      peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n      peg$maxFailPos < input.length\n        ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n        : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n    );\n  }\n}\n\nexport interface ParseOptions {\n  filename?: string;\n  startRule?: string;\n  tracer?: any;\n  [key: string]: any;\n}\nexport type ParseFunction = (input: string, options?: ParseOptions) => any;\nexport const parse: ParseFunction = peg$parse;\n\n","import ChordSheetSerializer from '../chord_sheet_serializer';\nimport NullTracer from './null_tracer';\nimport ParserWarning from './parser_warning';\nimport Song from '../chord_sheet/song';\n\nimport { normalizeLineEndings } from '../utilities';\nimport { ParseOptions, parse } from './chords_over_words/peg_parser';\n\nexport type ChordsOverWordsParserOptions = ParseOptions & {\n  softLineBreaks?: boolean;\n  chopFirstWord?: boolean;\n};\n\n/**\n * Parses a chords over words sheet into a song\n *\n * It support \"regular\" chord sheets:\n *\n *            Am         C/G        F          C\n *     Let it be, let it be, let it be, let it be\n *     C                G              F  C/E Dm C\n *     Whisper words of wisdom, let it be\n *\n * Additionally, some chordpro features have been \"ported back\". For example, you can use chordpro directives:\n *\n *     {title: Let it be}\n *     {key: C}\n *     Chorus 1:\n *            Am\n *     Let it be\n *\n * For convenience, you can leave out the brackets:\n *\n *     title: Let it be\n *     Chorus 1:\n *            Am\n *     Let it be\n *\n * You can even use a markdown style frontmatter separator to separate the header from the song:\n *\n *     title: Let it be\n *     key: C\n *     ---\n *     Chorus 1:\n *            Am         C/G        F          C\n *     Let it be, let it be, let it be, let it be\n *     C                G              F  C/E Dm C\n *     Whisper words of wisdom, let it be\n *\n * `ChordsOverWordsParser` is the better version of `ChordSheetParser`, which is deprecated.\n */\nclass ChordsOverWordsParser {\n  song?: Song;\n\n  /**\n   * All warnings raised during parsing the chord sheet\n   * @member\n   * @type {ParserWarning[]}\n   */\n  get warnings(): ParserWarning[] {\n    return this.song?.warnings || [];\n  }\n\n  /**\n   * Parses a chords over words sheet into a song\n   * @param {string} chordSheet the chords over words sheet\n   * @param {ChordsOverWordsParserOptions} options Parser options.\n   * @param {ChordsOverWordsParserOptions.softLineBreaks} options.softLineBreaks=false If true, a backslash\n   * followed by a space is treated as a soft line break\n   * @param {ChordsOverWordsParserOptions.chopFirstWord} options.chopFirstWord=true If true, only the first lyric\n   * word is paired with the chord, the rest of the lyric is put in a separate chord lyric pair\n   * @see https://peggyjs.org/documentation.html#using-the-parser\n   * @returns {Song} The parsed song\n   */\n  parse(chordSheet: string, options?: ChordsOverWordsParserOptions): Song {\n    const ast = parse(\n      normalizeLineEndings(chordSheet),\n      { tracer: new NullTracer(), ...options },\n    );\n    this.song = new ChordSheetSerializer().deserialize(ast);\n    return this.song;\n  }\n}\n\nexport default ChordsOverWordsParser;\n","import Formatter from './formatter';\nimport Metadata from '../chord_sheet/metadata';\nimport Paragraph from '../chord_sheet/paragraph';\nimport Song from '../chord_sheet/song';\nimport { getHTMLDefaultConfig } from './configuration';\nimport { scopeCss } from '../utilities';\nimport { HTMLFormatterConfiguration, HtmlTemplateCssClasses } from './configuration';\n\nexport interface HtmlTemplateArgs {\n  configuration: HTMLFormatterConfiguration;\n  song: Song;\n  metadata: Metadata;\n  renderBlankLines?: boolean;\n  bodyParagraphs: Paragraph[],\n}\n\nexport type Template = (_args: HtmlTemplateArgs) => string;\nexport type CSS = Record<string, Record<string, string>>;\n\nexport const defaultCssClasses: HtmlTemplateCssClasses = {\n  annotation: 'annotation',\n  chord: 'chord',\n  chordSheet: 'chord-sheet',\n  column: 'column',\n  comment: 'comment',\n  emptyLine: 'empty-line',\n  image: 'image',\n  label: 'label',\n  labelWrapper: 'label-wrapper',\n  line: 'line',\n  literal: 'literal',\n  literalContents: 'contents',\n  lyrics: 'lyrics',\n  paragraph: 'paragraph',\n  rhythmSymbol: 'rhythm-symbol',\n  row: 'row',\n  subtitle: 'subtitle',\n  title: 'title',\n};\n\n/**\n * Acts as a base class for HTML formatters\n */\nabstract class HtmlFormatter extends Formatter<HTMLFormatterConfiguration> {\n  /**\n   * Get the default configuration for HTML formatter\n   * Uses the HTML-specific default configuration from the configuration manager\n   */\n  protected getDefaultConfiguration(): HTMLFormatterConfiguration {\n    return getHTMLDefaultConfig();\n  }\n\n  /**\n   * Formats a song into HTML.\n   * @param {Song} song The song to be formatted\n   * @returns {string} The HTML string\n   */\n  format(song: Song): string {\n    const { bodyParagraphs, expandedBodyParagraphs } = song;\n    const paragraphs = this.configuration.expandChorusDirective ? expandedBodyParagraphs : bodyParagraphs;\n\n    return this.template(\n      {\n        song,\n        metadata: song.getMetadata(this.configuration),\n        configuration: this.configuration,\n        bodyParagraphs: song.filterParagraphs(paragraphs, this.configuration),\n      },\n    );\n  }\n\n  /**\n   * Generates basic CSS, optionally scoped within the provided selector, to use with the HTML output\n   *\n   * For example, execute cssString('.chordSheetViewer') will result in CSS like:\n   *\n   *     .chordSheetViewer .paragraph {\n   *       margin-bottom: 1em;\n   *     }\n   *\n   * @param scope the CSS scope to use, for example `.chordSheetViewer`\n   * @returns {string} the CSS string\n   */\n  cssString(scope = ''): string {\n    return scopeCss(this.cssObject, scope);\n  }\n\n  /**\n   * Basic CSS, in object style à la useStyles, to use with the HTML output\n   * For a CSS string see {@link cssString}\n   *\n   * Example:\n   *\n   *     '.paragraph': {\n   *       marginBottom: '1em'\n   *     }\n   *\n   * @return {Object.<string, Object.<string, string>>} the CSS object\n   */\n  get cssObject(): CSS {\n    return this.defaultCss;\n  }\n\n  abstract get defaultCss(): CSS;\n\n  abstract get template(): Template;\n}\n\nexport default HtmlFormatter;\n","import { HtmlTemplateArgs } from '../html_formatter';\nimport { defaultPangoRenderer } from '../../pango/pango_helpers';\nimport { isPresent } from '../../utilities';\nimport { renderChord } from '../../helpers';\n\nimport {\n  each,\n  evaluate,\n  fontStyleTag,\n  imageTag,\n  isChordLyricsPair,\n  isComment,\n  isEvaluatable,\n  isImage,\n  isRhythmSymbol,\n  isTag,\n  lineClasses,\n  lineHasContents, newlinesToBreaks,\n  paragraphClasses, renderSection,\n  stripHTML,\n  when,\n} from '../../template_helpers';\n\nexport default (\n  {\n    configuration,\n    configuration: {\n      key,\n      cssClasses: c,\n    },\n    song,\n    metadata,\n    renderBlankLines = false,\n    song: {\n      title,\n      subtitle,\n    },\n    bodyParagraphs,\n  }: HtmlTemplateArgs,\n): string => {\n  const pango = configuration.pangoRenderer || defaultPangoRenderer;\n\n  return stripHTML(`\n  ${ when(title, () => `<h1 class=\"${ c.title }\">${ title }</h1>`) }\n  ${ when(subtitle, () => `<h2 class=\"${ c.subtitle }\">${ subtitle }</h2>`) }\n\n  <div class=\"${ c.chordSheet }\">\n    ${ each(bodyParagraphs, (paragraph) => `\n      <div class=\"${ paragraphClasses(paragraph, c) }\">\n        ${ when(paragraph.isLiteral(), () => `\n          ${ when(isPresent(paragraph.label), () => `\n            <div class=\"${ c.row }\">\n              <h3 class=\"${ c.label }\">${ paragraph.label }</h3>\n            </div>\n          `) }\n\n          <div class=\"${ c.row }\">\n            <div class=\"${ c.literal }\">${ newlinesToBreaks(renderSection(paragraph, configuration)) }</div>\n          </div>\n        `).else(() => `\n          ${ each(paragraph.lines, (line) => `\n            ${ when(renderBlankLines || lineHasContents(line), () => `\n              <div class=\"${ lineClasses(line, c) }\">\n                ${ each(line.items, (item) => `\n                  ${ when(isChordLyricsPair(item), () => `\n                    <div class=\"${ c.column }\">\n                     ${ when(item.annotation).then(() => `\n                       <div class=\"${ c.annotation }\"${ fontStyleTag(line.chordFont) }>${ item.annotation }</div>\n                     `).else(() => {\n                       const cls = isRhythmSymbol(item) ? c.rhythmSymbol : c.chord;\n                       return `\n                        <div class=\"${ cls }\"${ fontStyleTag(line.chordFont) }>\n                          ${ renderChord(\n                            item.chords,\n                            line,\n                            song,\n                            {\n                              renderKey: key,\n                              useUnicodeModifier: configuration.useUnicodeModifiers,\n                              normalizeChords: configuration.normalizeChords,\n                              decapo: configuration.decapo,\n                            },\n                          ) }\n                        </div>\n                     `;\n                     }) }\n                      <div class=\"${ c.lyrics }\"${ fontStyleTag(line.textFont) }>\n                        ${ pango.convert(item.lyrics || '') }\n                      </div>\n                    </div>\n                  `).elseWhen(isTag(item), () => `\n                    ${ when(isComment(item), () => `\n                      <div class=\"${ c.comment }\">${ pango.convert(item.value || '') }</div>\n                    `) }\n\n                    ${ when(isImage(item), () => `\n                      <div class=\"${ c.image }\">${ imageTag(item) }</div>\n                    `) }\n\n                    ${ when(item.hasRenderableLabel(), () => `\n                      <h3 class=\"${ c.label }\">${ item.label }</h3>\n                    `) }\n                  `).elseWhen(isEvaluatable(item), () => `\n                    <div class=\"${ c.column }\">\n                      <div class=\"${ c.chord }\"></div>\n                      <div class=\"${ c.lyrics }\"${ fontStyleTag(line.textFont) }>\n                        ${ evaluate(item, metadata, configuration) }\n                      </div>\n                    </div>\n                  `) }\n                `) }\n              </div>\n            `) }\n          `) }\n        `) }\n      </div>\n    `) }\n  </div>\n`);\n};\n","import { HtmlTemplateCssClasses } from './configuration';\nimport template from './templates/html_div_formatter';\n\nimport HtmlFormatter, { CSS, Template } from './html_formatter';\n\nfunction defaultCss(cssClasses: HtmlTemplateCssClasses): CSS {\n  const {\n    chord,\n    lyrics,\n    paragraph,\n    row,\n  } = cssClasses;\n\n  return {\n    [`.${chord}:not(:last-child)`]: {\n      paddingRight: '10px',\n    },\n\n    [`.${paragraph}`]: {\n      marginBottom: '1em',\n    },\n\n    [`.${row}`]: {\n      display: 'flex',\n    },\n\n    [`.${chord}:after`]: {\n      content: '\\'\\\\200b\\'',\n    },\n\n    [`.${lyrics}:after`]: {\n      content: '\\'\\\\200b\\'',\n    },\n  };\n}\n\n/**\n * Formats a song into HTML. It uses DIVs to align lyrics with chords, which makes it useful for responsive web pages.\n */\nclass HtmlDivFormatter extends HtmlFormatter {\n  get template(): Template {\n    return template;\n  }\n\n  get defaultCss(): CSS {\n    return defaultCss(this.configuration.cssClasses);\n  }\n}\n\nexport default HtmlDivFormatter;\n","import { HtmlTemplateArgs } from '../html_formatter';\nimport { defaultPangoRenderer } from '../../pango/pango_helpers';\nimport { renderChord } from '../../helpers';\nimport { hasChordContents, isEvaluatable, isPresent } from '../../utilities';\n\nimport {\n  each,\n  evaluate,\n  fontStyleTag,\n  hasTextContents,\n  imageTag,\n  isChordLyricsPair,\n  isComment,\n  isImage,\n  isLiteral,\n  isRhythmSymbol,\n  isTag,\n  lineClasses,\n  lineHasContents, newlinesToBreaks,\n  paragraphClasses, renderSection,\n  stripHTML,\n  when,\n} from '../../template_helpers';\n\nexport default (\n  {\n    configuration,\n    configuration: {\n      key,\n      cssClasses: c,\n    },\n    song,\n    metadata,\n    renderBlankLines = false,\n    song: {\n      title,\n      subtitle,\n      bodyLines,\n    },\n    bodyParagraphs,\n  }: HtmlTemplateArgs,\n): string => {\n  const pango = configuration.pangoRenderer || defaultPangoRenderer;\n\n  return stripHTML(`\n  ${ when(title, () => `<h1 class=\"${ c.title }\">${ title }</h1>`) }\n  ${ when(subtitle, () => `<h2 class=\"${ c.subtitle }\">${ subtitle }</h2>`) }\n\n  ${ when(bodyLines.length > 0, () => `\n    <div class=\"${ c.chordSheet }\">\n      ${ each(bodyParagraphs, (paragraph) => `\n        <div class=\"${ paragraphClasses(paragraph, c) }\">\n          ${ when(paragraph.isLiteral(), () => `\n            ${ when(isPresent(paragraph.label), () => `\n              <table class=\"${ c.row }\">\n                <tr>\n                  <td class=\"${ c.labelWrapper }\">\n                    <h3 class=\"${ c.label }\">${ paragraph.label }</h3>\n                  </td>\n                </tr>\n              </table>\n            `) }\n\n            <table class=\"${ c.literal }\">\n              <tr>\n                <td class=\"${ c.literalContents }\">${ newlinesToBreaks(renderSection(paragraph, configuration)) }</td>\n              </tr>\n            </table>\n          `).else(() => `\n            ${ each(paragraph.lines, (line) => `\n              ${ when(renderBlankLines || lineHasContents(line), () => `\n                <table class=\"${ lineClasses(line, c) }\">\n                  ${ when(hasChordContents(line), () => `\n                    <tr>\n                      ${ each(line.items, (item) => `\n                        ${ when(isChordLyricsPair(item), () => `\n                          ${ when(item.annotation).then(() => `\n                            <td class=\"${ c.annotation }\"${ fontStyleTag(line.chordFont) }>${ item.annotation }</td>\n                          `).else(() => {\n                            const cls = isRhythmSymbol(item) ? c.rhythmSymbol : c.chord;\n                            return `\n                            <td class=\"${ cls }\"${ fontStyleTag(line.chordFont) }>${\n                              renderChord(\n                                item.chords,\n                                line,\n                                song,\n                                {\n                                  renderKey: key,\n                                  useUnicodeModifier: configuration.useUnicodeModifiers,\n                                  normalizeChords: configuration.normalizeChords,\n                                  decapo: configuration.decapo,\n                                },\n                              )\n                            }</td>\n                          `;\n                          }) }\n                        `) }\n                      `) }\n                    </tr>\n                  `) }\n                  ${ when(hasTextContents(line), () => `\n                    <tr>\n                      ${ each(line.items, (item) => `\n                        ${ when(isChordLyricsPair(item), () => `\n                          <td class=\"${ c.lyrics }\"${ fontStyleTag(line.textFont) }>\n                            ${ pango.convert(item.lyrics || '') }\n                          </td>\n                        `).elseWhen(isTag(item), () => `\n                          ${ when(isComment(item), () => `\n                            <td class=\"${ c.comment }\"${ fontStyleTag(line.textFont) }>\n                              ${ pango.convert(item.value || '') }\n                            </td>\n                          `) }\n\n                          ${ when(isImage(item), () => `\n                            <td class=\"${ c.image }\">${ imageTag(item) }</td>\n                          `) }\n\n                          ${ when(item.hasRenderableLabel(), () => `\n                            <td class=\"${ c.labelWrapper }\">\n                              <h3 class=\"${ c.label }\"${ fontStyleTag(line.textFont) }>${ item.label }</h3>\n                            </td>\n                          `) }\n                        `).elseWhen(isLiteral(item), () => `\n                          <td class=\"${ c.literal }\">${ item.string }</td>\n                        `).elseWhen(isEvaluatable(item), () => `\n                          <td class=\"${ c.lyrics }\"${ fontStyleTag(line.textFont) }>\n                            ${ evaluate(item, metadata, configuration) }\n                          </td>\n                        `) }\n                      `) }\n                    </tr>\n                  `) }\n                </table>\n              `) }\n            `) }\n          `) }\n        </div>\n      `) }\n    </div>\n  `) }\n`);\n};\n","import { HtmlTemplateCssClasses } from './configuration';\nimport template from './templates/html_table_formatter';\nimport HtmlFormatter, { CSS, Template } from './html_formatter';\n\n// eslint-disable-next-line max-lines-per-function\nfunction defaultCss(cssClasses: HtmlTemplateCssClasses): CSS {\n  const {\n    annotation,\n    chord,\n    comment,\n    labelWrapper,\n    line,\n    literal,\n    literalContents,\n    lyrics,\n    paragraph,\n    row,\n    subtitle,\n    title,\n  } = cssClasses;\n\n  return {\n    [`.${title}`]: {\n      fontSize: '1.5em',\n    },\n    [`.${subtitle}`]: {\n      fontSize: '1.1em',\n    },\n    [`.${row}, .${line}, .${literal}`]: {\n      borderSpacing: '0',\n      color: 'inherit',\n    },\n    [`.${annotation}, .${chord}, .${comment}, .${literalContents}, .${labelWrapper}, .${literal}, .${lyrics}`]: {\n      padding: '3px 0',\n    },\n    [`.${chord}:not(:last-child)`]: {\n      paddingRight: '10px',\n    },\n    [`.${paragraph}`]: {\n      marginBottom: '1em',\n    },\n  };\n}\n\n/**\n * Formats a song into HTML. It uses TABLEs to align lyrics with chords, which makes the HTML for things like\n * PDF conversion.\n */\nclass HtmlTableFormatter extends HtmlFormatter {\n  get template(): Template {\n    return template;\n  }\n\n  get defaultCss(): CSS {\n    return defaultCss(this.configuration.cssClasses);\n  }\n}\n\nexport default HtmlTableFormatter;\n","import { FontConfiguration } from '../../formatter/configuration';\n\nexport interface TextDimensions {\n  width: number;\n  height: number;\n}\n\nexport interface Measurer {\n  /**\n   * Measures the dimensions of text with the given font configuration\n   * @param text The text to measure\n   * @param fontConfig The font configuration to apply\n   * @returns The dimensions of the text\n   */\n  measureText(text: string, fontConfig: FontConfiguration): TextDimensions;\n\n  /**\n   * Measures the width of text with the given font configuration\n   * @param text The text to measure\n   * @param fontConfig The font configuration to apply\n   * @returns The width of the text\n   */\n  measureTextWidth(text: string, fontConfig: FontConfiguration): number;\n\n  /**\n   * Measures the height of text with the given font configuration\n   * @param text The text to measure\n   * @param fontConfig The font configuration to apply\n   * @returns The height of the text\n   */\n  measureTextHeight(text: string, fontConfig: FontConfiguration): number;\n\n  /**\n   * Splits text into lines that fit within the given width\n   * @param text The text to split\n   * @param maxWidth The maximum width of each line\n   * @param fontConfig The font configuration to apply\n   * @returns The lines of text\n   */\n  splitTextToSize(text: string, maxWidth: number, fontConfig: FontConfiguration): string[];\n}\n\n/**\n * Base class for implementing measurers with common functionality\n */\nexport abstract class BaseMeasurer implements Measurer {\n  abstract measureText(text: string, fontConfig: FontConfiguration): TextDimensions;\n\n  measureTextWidth(text: string, fontConfig: FontConfiguration): number {\n    return this.measureText(text, fontConfig).width;\n  }\n\n  measureTextHeight(text: string, fontConfig: FontConfiguration): number {\n    return this.measureText(text, fontConfig).height;\n  }\n\n  abstract splitTextToSize(text: string, maxWidth: number, fontConfig: FontConfiguration): string[];\n\n  protected splitTextWithMeasure(\n    text: string,\n    maxWidth: number,\n    measure: (value: string) => number,\n  ): string[] {\n    if (!text) return [];\n\n    const normalizedText = text.replace(/\\r\\n|\\r/g, '\\n');\n\n    return normalizedText\n      .split('\\n')\n      .reduce<string[]>((acc, paragraph) => {\n        acc.push(...this.wrapParagraph(paragraph, maxWidth, measure));\n        return acc;\n      }, []);\n  }\n\n  protected wrapParagraph(\n    paragraph: string,\n    maxWidth: number,\n    measure: (value: string) => number,\n  ): string[] {\n    if (paragraph.length === 0) return [''];\n\n    const { lines, currentLine } = this.accumulateWords(\n      paragraph.split(' '),\n      maxWidth,\n      measure,\n    );\n\n    return currentLine.length === 0 ? lines : [...lines, currentLine];\n  }\n\n  protected splitWord(\n    word: string,\n    maxWidth: number,\n    measure: (value: string) => number,\n  ): { lines: string[]; remainder: string } {\n    const result = [...word].reduce<{ lines: string[]; partial: string }>((acc, char) => {\n      const testChar = `${acc.partial}${char}`;\n\n      if (measure(testChar) <= maxWidth) {\n        acc.partial = testChar;\n      } else if (acc.partial.length > 0) {\n        acc.lines.push(acc.partial);\n        acc.partial = char;\n      } else {\n        acc.lines.push(char);\n        acc.partial = '';\n      }\n\n      return acc;\n    }, { lines: [], partial: '' });\n\n    return { lines: result.lines, remainder: result.partial };\n  }\n\n  private accumulateWords(\n    words: string[],\n    maxWidth: number,\n    measure: (value: string) => number,\n  ): { lines: string[]; currentLine: string } {\n    return words.reduce<{ lines: string[]; currentLine: string }>((acc, word) => {\n      const testLine = acc.currentLine.length === 0 ? word : `${acc.currentLine} ${word}`;\n\n      if (measure(testLine) <= maxWidth) {\n        acc.currentLine = testLine;\n      } else if (acc.currentLine.length > 0) {\n        acc.lines.push(acc.currentLine);\n        acc.currentLine = word;\n      } else {\n        const { lines: wordLines, remainder } = this.splitWord(word, maxWidth, measure);\n        acc.lines.push(...wordLines);\n        acc.currentLine = remainder;\n      }\n\n      return acc;\n    }, { lines: [], currentLine: '' });\n  }\n}\n","import DocWrapper from '../../formatter/pdf_formatter/doc_wrapper';\nimport { FontConfiguration } from '../../formatter/configuration';\nimport { BaseMeasurer, TextDimensions } from './measurer';\n\n/**\n * Measures text using jsPDF\n */\nexport class JsPdfMeasurer extends BaseMeasurer {\n  constructor(private doc: DocWrapper) {\n    super();\n  }\n\n  measureText(text: string, fontConfig: FontConfiguration): TextDimensions {\n    let result: TextDimensions;\n\n    this.doc.withFontConfiguration(fontConfig, () => {\n      const dimensions = this.doc.getTextDimensions(text);\n      result = {\n        width: dimensions.w,\n        height: dimensions.h,\n      };\n    });\n\n    return result!;\n  }\n\n  splitTextToSize(text: string, maxWidth: number, fontConfig: FontConfiguration) {\n    let lines: string[] = [];\n\n    this.doc.withFontConfiguration(fontConfig, () => {\n      lines = this.doc.splitTextToSize(text, maxWidth);\n    });\n\n    return lines;\n  }\n}\n","import { FontConfiguration } from '../../formatter/configuration';\nimport { BaseMeasurer, TextDimensions } from './measurer';\n\ndeclare const document: any;\ndeclare type CanvasRenderingContext2D = any;\ndeclare type HTMLCanvasElement = any;\n\n/**\n * Measures text using Canvas API\n */\nexport class CanvasMeasurer extends BaseMeasurer {\n  private canvas: HTMLCanvasElement;\n\n  private context: CanvasRenderingContext2D;\n\n  constructor() {\n    super();\n    // Create canvas element in memory (no need to add to DOM)\n    this.canvas = document.createElement('canvas');\n    const ctx = this.canvas.getContext('2d');\n    if (!ctx) {\n      throw new Error('Canvas 2D context not available');\n    }\n    this.context = ctx;\n  }\n\n  /**\n   * Sets font configuration on the canvas context\n   * @param fontConfig The font configuration to apply\n   */\n  private setFont(fontConfig: FontConfiguration): void {\n    const {\n      name, size, weight = 'normal', style = 'normal', letterSpacing,\n    } = fontConfig;\n\n    // Set basic font properties\n    this.context.font = `${style} ${weight} ${size}px ${name}`;\n\n    // Set additional text properties if supported\n    if (letterSpacing !== undefined) {\n      this.context.letterSpacing = letterSpacing;\n    }\n  }\n\n  measureText(text: string, fontConfig: FontConfiguration): TextDimensions {\n    this.setFont(fontConfig);\n\n    const metrics = this.context.measureText(text);\n\n    // Get width from metrics\n    const { width } = metrics;\n\n    // Calculate height based on font metrics or size\n    // Note: For more accurate height calculation, we need font metrics\n    let height: number;\n\n    if (metrics.fontBoundingBoxAscent && metrics.fontBoundingBoxDescent) {\n      // Modern browsers provide these metrics\n      height = metrics.fontBoundingBoxAscent + metrics.fontBoundingBoxDescent;\n    } else if (metrics.actualBoundingBoxAscent && metrics.actualBoundingBoxDescent) {\n      // Alternative metrics for this specific text\n      height = metrics.actualBoundingBoxAscent + metrics.actualBoundingBoxDescent;\n    } else {\n      // Fallback to approximation based on font size\n      height = fontConfig.size * 1.2; // Common approximation\n    }\n\n    return { width, height };\n  }\n\n  splitTextToSize(text: string, maxWidth: number, fontConfig: FontConfiguration): string[] {\n    this.setFont(fontConfig);\n\n    return this.splitTextWithMeasure(text, maxWidth, (value) => this.measureWidth(value));\n  }\n\n  private measureWidth(text: string): number {\n    return this.context.measureText(text).width;\n  }\n}\n","import { FontConfiguration } from '../../formatter/configuration';\nimport { BaseMeasurer, TextDimensions } from './measurer';\n\ndeclare const document: any;\ndeclare type HTMLElement = any;\n\n/**\n * Measures text using DOM elements\n */\nexport class DomMeasurer extends BaseMeasurer {\n  private measureElement: HTMLElement;\n\n  constructor() {\n    super();\n    // Create an offscreen span element for measuring\n    this.measureElement = document.createElement('span');\n\n    // Set styles needed for accurate measurement\n    Object.assign(this.measureElement.style, {\n      position: 'absolute',\n      visibility: 'hidden',\n      whiteSpace: 'pre',\n      padding: '0',\n      margin: '0',\n      border: 'none',\n      left: '-9999px',\n      top: '-9999px',\n    });\n\n    // Add to DOM for measuring\n    document.body.appendChild(this.measureElement);\n  }\n\n  /**\n   * Cleans up the DOM element when no longer needed\n   */\n  public dispose(): void {\n    if (this.measureElement.parentNode) {\n      this.measureElement.parentNode.removeChild(this.measureElement);\n    }\n  }\n\n  /**\n   * Sets font configuration on the measurement element\n   * @param fontConfig The font configuration to apply\n   */\n  private setFont(fontConfig: FontConfiguration): void {\n    const {\n      name,\n      size,\n      weight = 'normal',\n      style = 'normal',\n      lineHeight = 1,\n      textTransform = 'none',\n      textDecoration = 'none',\n      letterSpacing = 'normal',\n    } = fontConfig;\n\n    Object.assign(this.measureElement.style, {\n      fontFamily: name,\n      fontSize: `${size}px`,\n      fontWeight: weight,\n      fontStyle: style,\n      lineHeight,\n      textTransform,\n      textDecoration,\n      letterSpacing,\n    });\n  }\n\n  measureText(text: string, fontConfig: FontConfiguration): TextDimensions {\n    this.setFont(fontConfig);\n\n    // Set the text content\n    this.measureElement.textContent = text || '';\n\n    // Get accurate measurements from the DOM\n    const rect = this.measureElement.getBoundingClientRect();\n\n    return {\n      width: rect.width,\n      height: rect.height,\n    };\n  }\n\n  splitTextToSize(text: string, maxWidth: number, fontConfig: FontConfiguration): string[] {\n    this.setFont(fontConfig);\n\n    return this.splitTextWithMeasure(text, maxWidth, (value) => this.measureWidth(value));\n  }\n\n  private measureWidth(text: string): number {\n    this.measureElement.textContent = text;\n    return this.measureElement.getBoundingClientRect().width;\n  }\n}\n","export * from './measurer';\nexport * from './js_pdf_measurer';\nexport * from './canvas_measurer';\nexport * from './dom_measurer';\n","import { DeepPartial } from '../utilities';\nimport Formatter from './formatter';\nimport { MeasurementBasedFormatterConfiguration } from './configuration';\nimport { getMeasurementDefaultConfig } from './configuration/default_config_manager';\n\n/**\n * Base formatter for formatters that need measurements to position elements\n */\nabstract class MeasurementBasedFormatter<\n  T extends MeasurementBasedFormatterConfiguration = MeasurementBasedFormatterConfiguration\n> extends Formatter<T> {\n  /**\n   * Instantiate a measurement-based formatter.\n   * @param configuration - The formatter configuration.\n   */\n  constructor(configuration: DeepPartial<T> = {} as DeepPartial<T>) {\n    super(configuration);\n  }\n\n  /**\n   * Get the default configuration for this formatter type\n   * Uses the measurement-based default configuration\n   */\n  protected getDefaultConfiguration(): T {\n    return getMeasurementDefaultConfig() as T;\n  }\n}\n\nexport default MeasurementBasedFormatter;\n","import { ColumnConfig, Margins, MeasurementBasedLayoutConfig } from '../../formatter/configuration';\n\nclass Dimensions {\n  pageWidth: number;\n\n  pageHeight: number;\n\n  layoutConfig: MeasurementBasedLayoutConfig;\n\n  columns: ColumnConfig;\n\n  constructor(\n    pageWidth: number,\n    pageHeight: number,\n    layoutConfig: MeasurementBasedLayoutConfig,\n    columns: ColumnConfig,\n  ) {\n    this.pageWidth = pageWidth;\n    this.pageHeight = pageHeight;\n    this.layoutConfig = layoutConfig;\n    this.columns = columns;\n  }\n\n  get margins(): Margins {\n    return this.layoutConfig.global.margins;\n  }\n\n  get minX() {\n    return this.margins.left;\n  }\n\n  get maxX() {\n    return this.pageWidth - this.margins.right;\n  }\n\n  get minY() {\n    return this.margins.top + this.layoutConfig.header.height;\n  }\n\n  get maxY() {\n    return this.pageHeight - this.margins.bottom;\n  }\n\n  /**\n   * Calculates the optimal number of columns based on available width and column constraints\n   */\n  calculateOptimalColumnCount(\n    availableWidth: number,\n    columnSpacing: number,\n    minColumnWidth?: number,\n    maxColumnWidth?: number,\n  ): number {\n    // If no constraints are provided, default to single column\n    if (!minColumnWidth && !maxColumnWidth) {\n      return 1;\n    }\n\n    // If only maxColumnWidth is provided, fit as many columns as possible\n    if (maxColumnWidth && !minColumnWidth) {\n      return this.fitMaxColumns(availableWidth, columnSpacing, maxColumnWidth);\n    }\n\n    // If only minColumnWidth is provided, fit as many columns as possible\n    // while ensuring each column meets the minimum width requirement\n    if (minColumnWidth && !maxColumnWidth) {\n      return this.fitMaxColumnsWithMinWidth(availableWidth, columnSpacing, minColumnWidth);\n    }\n\n    // Both constraints provided - find the optimal column count\n    if (minColumnWidth && maxColumnWidth) {\n      return this.findMaxColumnsWithinBounds(availableWidth, columnSpacing, minColumnWidth, maxColumnWidth);\n    }\n\n    return 1;\n  }\n\n  private findMaxColumnsWithinBounds(\n    availableWidth: number,\n    columnSpacing: number,\n    minColumnWidth: number,\n    maxColumnWidth: number,\n  ) {\n    // Start with the minimum number of columns that respect minColumnWidth\n    const maxPossibleColumns = Math.floor(\n      (availableWidth + columnSpacing) / (minColumnWidth + columnSpacing),\n    );\n\n    // Test each possible column count to find the best fit\n    for (let columnCount = 1; columnCount <= maxPossibleColumns; columnCount += 1) {\n      const result = this.evaluateColumnCount(\n        columnCount,\n        availableWidth,\n        columnSpacing,\n        minColumnWidth,\n        maxColumnWidth,\n      );\n      if (result !== null) return result;\n    }\n\n    return Math.max(1, maxPossibleColumns);\n  }\n\n  private evaluateColumnCount(\n    columnCount: number,\n    availableWidth: number,\n    columnSpacing: number,\n    minColumnWidth: number,\n    maxColumnWidth: number,\n  ): number | null {\n    const totalSpacing = (columnCount - 1) * columnSpacing;\n    const columnWidth = (availableWidth - totalSpacing) / columnCount;\n\n    // If column width is below minimum, this and higher counts are too narrow\n    if (columnWidth < minColumnWidth) {\n      return Math.max(1, columnCount - 1);\n    }\n\n    // If this column width fits within our constraints, check if we should stop here\n    if (columnWidth >= minColumnWidth && columnWidth <= maxColumnWidth) {\n      const nextColumnCount = columnCount + 1;\n      const nextTotalSpacing = (nextColumnCount - 1) * columnSpacing;\n      const nextColumnWidth = (availableWidth - nextTotalSpacing) / nextColumnCount;\n\n      // If the next column count would be too narrow, use current count\n      if (nextColumnWidth < minColumnWidth) return columnCount;\n    }\n\n    return null;\n  }\n\n  private fitMaxColumnsWithMinWidth(availableWidth: number, columnSpacing: number, minColumnWidth: number) {\n    // For n columns, we need: n * minColumnWidth + (n-1) * columnSpacing <= availableWidth\n    // Solving for n: n <= (availableWidth + columnSpacing) / (minColumnWidth + columnSpacing)\n    const maxColumns = Math.floor((availableWidth + columnSpacing) / (minColumnWidth + columnSpacing));\n\n    // Verify the calculation by checking if the columns actually fit\n    const actualColumns = Math.max(1, maxColumns);\n    const totalSpacingNeeded = (actualColumns - 1) * columnSpacing;\n    const totalWidthNeeded = actualColumns * minColumnWidth + totalSpacingNeeded;\n\n    // If our calculation is correct, this should always be true, but let's be safe\n    if (totalWidthNeeded <= availableWidth) {\n      return actualColumns;\n    }\n\n    // Fallback: try one less column\n    return Math.max(1, actualColumns - 1);\n  }\n\n  private fitMaxColumns(availableWidth: number, columnSpacing: number, maxColumnWidth: number) {\n    return Math.max(\n      1,\n      Math.floor((availableWidth + columnSpacing) / (maxColumnWidth + columnSpacing)),\n    );\n  }\n\n  /**\n   * Calculates the effective column spacing, adjusting it when columns would exceed maxColumnWidth\n   * Note: Single columns are not constrained by maxColumnWidth and use full available width\n   * When only minColumnWidth is specified, columns expand to fill available space equally\n   */\n  calculateEffectiveColumnSpacing(\n    columnCount: number,\n    availableWidth: number,\n    baseColumnSpacing: number,\n    maxColumnWidth?: number,\n    minColumnWidth?: number,\n  ): number {\n    // Single columns or only minColumnWidth specified: use base spacing\n    if (columnCount <= 1 || (minColumnWidth && !maxColumnWidth)) {\n      return baseColumnSpacing;\n    }\n\n    // When maxColumnWidth is specified, adjust spacing if columns would be too wide\n    if (maxColumnWidth) {\n      return this.calculateAdjustedSpacing(\n        columnCount,\n        availableWidth,\n        baseColumnSpacing,\n        maxColumnWidth,\n      );\n    }\n\n    return baseColumnSpacing;\n  }\n\n  private calculateAdjustedSpacing(\n    columnCount: number,\n    availableWidth: number,\n    baseColumnSpacing: number,\n    maxColumnWidth: number,\n  ): number {\n    const baseTotalSpacing = (columnCount - 1) * baseColumnSpacing;\n    const baseColumnWidth = (availableWidth - baseTotalSpacing) / columnCount;\n\n    // If columns would be larger than maxColumnWidth, add the difference to spacing\n    if (baseColumnWidth > maxColumnWidth) {\n      const excessWidth = baseColumnWidth - maxColumnWidth;\n      const totalExcessWidth = excessWidth * columnCount;\n      const additionalSpacingPerGap = totalExcessWidth / (columnCount - 1);\n      return baseColumnSpacing + additionalSpacingPerGap;\n    }\n\n    return baseColumnSpacing;\n  }\n\n  get effectiveColumnCount(): number {\n    const {\n      columnCount,\n      columnSpacing,\n      minColumnWidth,\n      maxColumnWidth,\n    } = this.columns;\n\n    // Calculate available space for columns\n    const { left, right } = this.margins;\n    const availableSpace = this.pageWidth - left - right;\n\n    // If min/max constraints are provided, always calculate optimal column count\n    // This ensures we maximize columns when only minColumnWidth is specified\n    if (minColumnWidth || maxColumnWidth) {\n      return this.calculateOptimalColumnCount(\n        availableSpace,\n        columnSpacing,\n        minColumnWidth,\n        maxColumnWidth,\n      );\n    }\n\n    // If columnCount is explicitly set and no constraints, use it directly\n    if (columnCount) {\n      return columnCount;\n    }\n\n    // Fallback to configured column count\n    return columnCount || 1;\n  }\n\n  get effectiveColumnSpacing(): number {\n    const effectiveCount = this.effectiveColumnCount;\n    const { left, right } = this.margins;\n    const availableSpace = this.pageWidth - left - right;\n    const baseSpacing = this.columns.columnSpacing;\n    const { maxColumnWidth, minColumnWidth } = this.columns;\n\n    return this.calculateEffectiveColumnSpacing(\n      effectiveCount,\n      availableSpace,\n      baseSpacing,\n      maxColumnWidth,\n      minColumnWidth,\n    );\n  }\n\n  get availableSpace(): number {\n    const { left, right } = this.margins;\n    return this.pageWidth - left - right;\n  }\n\n  get columnWidth(): number {\n    const effectiveCount = this.effectiveColumnCount;\n    const spacing = this.effectiveColumnSpacing;\n\n    const totalColumnSpacing = (effectiveCount - 1) * spacing;\n    const columnWidth = (this.availableSpace - totalColumnSpacing) / effectiveCount;\n\n    const { maxColumnWidth, minColumnWidth } = this.columns;\n\n    // Single columns should use the full available width\n    if (effectiveCount === 1) {\n      return columnWidth;\n    }\n\n    // When only minColumnWidth is specified, columns expand to fill space equally\n    if (minColumnWidth && !maxColumnWidth) {\n      return columnWidth; // Let columns expand beyond minColumnWidth to fill space\n    }\n\n    // When maxColumnWidth is specified, enforce the constraint for multiple columns\n    if (maxColumnWidth && columnWidth > maxColumnWidth && effectiveCount > 1) {\n      return maxColumnWidth;\n    }\n\n    return columnWidth;\n  }\n}\n\nexport default Dimensions;\n","import { DomMeasurer } from '../../layout/measurement';\nimport { FontConfiguration } from '../../formatter/configuration';\n\ndeclare const document: any;\ndeclare type HTMLElement = any;\n\n/**\n * HtmlWrapper is responsible for managing the DOM elements for the chord sheet\n */\nclass HtmlDocWrapper {\n  container: HTMLElement;\n\n  pages: HTMLElement[] = [];\n\n  currentPage = 1;\n\n  totalPages = 1;\n\n  pageSize: { width: number; height: number };\n\n  measurer: DomMeasurer;\n\n  constructor(container: HTMLElement, pageSize: { width: number; height: number }) {\n    this.container = container;\n    this.container.style.width = '100%';\n    this.container.style.margin = '0 auto';\n    this.pageSize = pageSize;\n    this.measurer = new DomMeasurer();\n\n    // Create the first page\n    this.createPage();\n  }\n\n  /**\n   * Creates a new page in the container\n   */\n  createPage(): HTMLElement {\n    const page = document.createElement('div');\n    page.className = 'chord-sheet-page';\n    page.style.position = 'relative';\n\n    Object.entries(this.pageStyles).forEach(([key, value]) => {\n      page.style[key] = value;\n    });\n\n    this.container.appendChild(page);\n    this.pages.push(page);\n    this.totalPages = this.pages.length;\n\n    return page;\n  }\n\n  get pageStyles(): Record<string, string> {\n    return {\n      width: `${this.pageSize.width}px`,\n      height: `${this.pageSize.height}px`,\n      overflow: 'hidden',\n      boxSizing: 'border-box',\n      backgroundColor: 'var(--studio-display-background-color)',\n    };\n  }\n\n  /**\n   * Creates a new page and advances to it\n   */\n  newPage(): void {\n    this.currentPage += 1;\n    if (this.currentPage > this.pages.length) {\n      this.createPage();\n    }\n  }\n\n  /**\n   * Sets the current page\n   */\n  setPage(pageNumber: number): void {\n    this.currentPage = pageNumber;\n    while (this.pages.length < pageNumber) {\n      this.createPage();\n    }\n  }\n\n  /**\n   * Gets the current page element\n   */\n  getCurrentPage(): HTMLElement {\n    return this.pages[this.currentPage - 1];\n  }\n\n  /**\n   * Adds an element to the current page at the specified position\n   */\n  addElement(element: HTMLElement, x: number, y: number): void {\n    const page = this.getCurrentPage();\n\n    // Apply positioning styles in one operation\n    Object.assign(element.style, {\n      position: 'absolute',\n      left: `${x}px`,\n      top: `${y}px`,\n    });\n\n    page.appendChild(element);\n  }\n\n  /**\n   * Gets text dimensions using the DOM measurer\n   */\n  getTextDimensions(text: string, font: FontConfiguration): { w: number; h: number } {\n    const { width, height } = this.measurer.measureText(text, font);\n    return { w: width, h: height };\n  }\n\n  /**\n   * Gets text width using the DOM measurer\n   */\n  getTextWidth(text: string, font: FontConfiguration): number {\n    const { width } = this.measurer.measureText(text, font);\n    return width;\n  }\n\n  /**\n   * Splits text to fit within a maximum width\n   */\n  splitTextToSize(text: string, maxWidth: number, font: FontConfiguration): string[] {\n    return this.measurer.splitTextToSize(text, maxWidth, font);\n  }\n\n  /**\n   * Sets the font style (no-op in HTML renderer)\n   */\n  setFontStyle(_font: FontConfiguration): void {\n    // No-op for HTML, styles are applied directly to elements\n  }\n\n  /**\n   * Sets line style for drawing (no-op in HTML renderer)\n   */\n  setLineStyle(_style: any): void {\n    // No-op for HTML, styles are applied directly to elements\n  }\n\n  /**\n   * Resets line dash style (no-op in HTML renderer)\n   */\n  resetDash(): void {\n    // No-op for HTML\n  }\n\n  /**\n   * Executes a callback for each page\n   */\n  eachPage(callback: (page: HTMLElement, index: number) => void): void {\n    this.pages.forEach((page, index) => {\n      this.currentPage = index + 1;\n      callback(page, index);\n    });\n  }\n\n  /**\n   * Gets the container element\n   */\n  getContainer(): HTMLElement {\n    return this.container;\n  }\n\n  /**\n   * Clean up resources\n   */\n  dispose(): void {\n    if (this.measurer) {\n      this.measurer.dispose();\n    }\n  }\n}\nexport default HtmlDocWrapper;\n","import ChordLyricsPair from '../../chord_sheet/chord_lyrics_pair';\nimport { FontConfiguration } from '../../formatter/configuration';\nimport Line from '../../chord_sheet/line';\nimport SoftLineBreak from '../../chord_sheet/soft_line_break';\nimport Tag from '../../chord_sheet/tag';\n\nexport interface Measurer {\n  measureTextWidth(text: string, font: { size: number; lineHeight?: number }): number;\n  measureTextHeight(text: string, font: { size: number; lineHeight?: number }): number;\n  splitTextToSize(text: string, maxWidth: number, font: { size: number; lineHeight?: number }): string[];\n}\n\n/**\n * Represents a break point in text for line wrapping\n */\nexport interface BreakPoint {\n  index: number;\n  type: 'space' | 'hyphen' | 'comma' | 'other';\n}\n\n/**\n * Represents a measured chord-lyrics pair with position information\n */\nexport interface MeasuredItem {\n  item: ChordLyricsPair | Tag | SoftLineBreak | null;\n  width: number;\n  chordHeight?: number;\n  chordLyricWidthDifference?: number;\n}\n\n/**\n * Represents a single line in the layout\n */\nexport interface LineLayout {\n  type: 'ChordLyricsPair' | 'Comment' | 'SectionLabel' | 'Tag' | 'Empty';\n  lineHeight: number;\n  items: MeasuredItem[];\n  line: Line;\n}\n\n/**\n * Represents a paragraph in the layout\n */\n// export interface ParagraphLayout {\n//   paragraphIndex: number;\n//   lines: LineLayout[];\n//   totalHeight: number;\n// }\n\n/**\n * Complete layout for a song\n */\n// export interface SongLayout {\n//   paragraphs: ParagraphLayout[];\n//   totalHeight: number;\n// }\n\n/**\n * Configuration for the layout engine\n */\nexport interface LayoutConfig {\n  width: number;\n  fonts: {\n    chord: FontConfiguration;\n    lyrics: FontConfiguration;\n    comment: FontConfiguration;\n    sectionLabel: FontConfiguration;\n  };\n  chordSpacing: number;\n  chordLyricSpacing: number;\n  linePadding: number;\n  useUnicodeModifiers: boolean;\n  normalizeChords: boolean;\n\n  // Add column and page layout information\n  minY: number;\n  columnWidth: number;\n  columnCount?: number;\n  columnSpacing: number;\n  minColumnWidth?: number;\n  maxColumnWidth?: number;\n  paragraphSpacing: number;\n  columnBottomY: number;\n  displayLyricsOnly?: boolean;\n  decapo: boolean;\n  repeatedSections?: 'hide' | 'title_only' | 'lyrics_only' | 'full';\n}\n\nexport interface ParagraphLayoutResult {\n  units: LineLayout[][];\n  addSpacing: boolean;\n  sectionType: string;\n}\n\n/**\n * Strategy interface for paragraph splitting\n */\nexport interface ParagraphSplitStrategy {\n  /**\n   * Split a paragraph into parts that fit within column constraints\n   *\n   * @param lineLayouts - The layout of the paragraph to split\n   * @param currentY - Current vertical position in the column\n   * @param columnStartY - The starting Y position of columns\n   * @param columnBottomY - The bottom Y position of columns\n   * @returns The layout with column breaks inserted as needed\n   */\n  splitParagraph(\n    lineLayouts: LineLayout[][],\n    currentY: number,\n    columnStartY: number,\n    columnBottomY: number\n  ): LineLayout[][];\n}\n","import ChordLyricsPair from '../../chord_sheet/chord_lyrics_pair';\nimport { FontConfiguration } from '../../formatter/configuration';\nimport Line from '../../chord_sheet/line';\nimport { Measurer } from '../measurement';\nimport SoftLineBreak from '../../chord_sheet/soft_line_break';\nimport Song from '../../chord_sheet/song';\nimport Tag from '../../chord_sheet/tag';\nimport { LayoutConfig, MeasuredItem } from './types';\n\nimport {\n  isChordLyricsPair,\n  isComment,\n  isSoftLineBreak,\n  isTag,\n  renderChord,\n} from '../../template_helpers';\n\n/**\n * Processes and measures different types of items in a chord sheet\n */\nexport class ItemProcessor {\n  // Use property declaration instead of constructor assignment\n  public readonly measurer: Measurer;\n\n  public readonly config: LayoutConfig;\n\n  private readonly song: Song;\n\n  // Use parameter properties to initialize class properties\n  constructor(measurer: Measurer, config: LayoutConfig, song: Song) {\n    this.measurer = measurer;\n    this.config = config;\n    this.song = song;\n  }\n\n  /**\n   * Measure all items in a line\n   */\n  measureLineItems(line: Line, lyricsOnly = false): MeasuredItem[] {\n    const items: MeasuredItem[] = [];\n\n    for (let index = 0; index < line.items.length; index += 1) {\n      const item = line.items[index];\n      const nextItem = line.items[index + 1] ?? null;\n\n      if (isChordLyricsPair(item)) {\n        // Process chord-lyrics pair\n        const processedItems = this.processChordLyricsPair(item as ChordLyricsPair, nextItem, line, lyricsOnly);\n        items.push(...processedItems);\n      } else if (isSoftLineBreak(item)) {\n        // Process soft line break\n        items.push(this.processSoftLineBreak(item as SoftLineBreak));\n      } else if (isTag(item)) {\n        // Process tag\n        const processedTags = this.processTag(item as Tag);\n        items.push(...processedTags);\n      } else {\n        // For now, add a placeholder for unsupported item types\n        items.push({ item: null, width: 0 });\n      }\n    }\n\n    return items;\n  }\n\n  /**\n   * Process a chord-lyrics pair\n   */\n  processChordLyricsPair(pair: ChordLyricsPair, nextItemParam: any, line: Line, lyricsOnly = false): MeasuredItem[] {\n    const lyricsOnlyResult = this.handleLyricsOnlyMode(pair, nextItemParam, lyricsOnly);\n    if (lyricsOnlyResult) return lyricsOnlyResult;\n\n    const splitItems = this.splitChordLyricsPair(pair, lyricsOnly);\n    return this.processSplitItems(splitItems, nextItemParam, line, lyricsOnly);\n  }\n\n  private handleLyricsOnlyMode(\n    pair: ChordLyricsPair,\n    nextItem: any,\n    lyricsOnly: boolean,\n  ): MeasuredItem[] | null {\n    if (!lyricsOnly) return null;\n\n    let lyrics = this.removeHyphens(pair.lyrics || '');\n    this.cleanNextItemHyphens(nextItem, () => { lyrics = lyrics.trimEnd(); });\n\n    if (lyrics === '') return [{ item: null, width: 0 }];\n    return null;\n  }\n\n  private cleanNextItemHyphens(nextItem: any, trimCallback: () => void): void {\n    if (!nextItem || !isChordLyricsPair(nextItem)) return;\n\n    const nextPair = nextItem as ChordLyricsPair;\n    const nextLyrics = nextPair.lyrics || '';\n    const hasHyphen = nextLyrics.startsWith(' -') || nextLyrics.startsWith('-');\n    if (!hasHyphen) return;\n\n    trimCallback();\n    nextPair.lyrics = this.removeHyphens(nextLyrics);\n  }\n\n  private processSplitItems(\n    splitItems: (ChordLyricsPair | SoftLineBreak)[],\n    nextItem: any,\n    line: Line,\n    lyricsOnly: boolean,\n  ): MeasuredItem[] {\n    return splitItems\n      .map((splitItem) => this.processSingleSplitItem(splitItem, nextItem, line, lyricsOnly))\n      .filter((item): item is MeasuredItem => item !== null);\n  }\n\n  private processSingleSplitItem(\n    splitItem: ChordLyricsPair | SoftLineBreak,\n    nextItem: any,\n    line: Line,\n    lyricsOnly: boolean,\n  ): MeasuredItem | null {\n    if (splitItem instanceof SoftLineBreak) {\n      return this.processSoftLineBreak(splitItem);\n    }\n    if (splitItem instanceof ChordLyricsPair) {\n      return this.measureChordLyricsPair(splitItem, nextItem, line, lyricsOnly);\n    }\n    return null;\n  }\n\n  private measureChordLyricsPair(\n    splitItem: ChordLyricsPair,\n    nextItem: any,\n    line: Line,\n    lyricsOnly: boolean,\n  ): MeasuredItem | null {\n    const { chords, lyrics } = this.getAdjustedChordsAndLyrics(splitItem, lyricsOnly);\n    if (lyricsOnly && lyrics === '') return { item: null, width: 0 };\n\n    const renderedChords = this.renderChordText(chords, line);\n    const measurements = this.calculateMeasurements(renderedChords, lyrics, nextItem, lyricsOnly);\n\n    return {\n      item: new ChordLyricsPair(chords, lyrics),\n      width: measurements.totalWidth,\n      chordHeight: measurements.chordHeight,\n    };\n  }\n\n  private getAdjustedChordsAndLyrics(\n    splitItem: ChordLyricsPair,\n    lyricsOnly: boolean,\n  ): { chords: string; lyrics: string } {\n    if (lyricsOnly) {\n      return { chords: '', lyrics: this.removeHyphens(splitItem.lyrics || '') };\n    }\n    return { chords: splitItem.chords || '', lyrics: splitItem.lyrics || '' };\n  }\n\n  private renderChordText(chords: string, line: Line): string {\n    return renderChord(chords, line, this.song, {\n      renderKey: null,\n      useUnicodeModifier: this.config.useUnicodeModifiers,\n      normalizeChords: this.config.normalizeChords,\n      decapo: this.config.decapo,\n    });\n  }\n\n  private calculateMeasurements(\n    renderedChords: string,\n    lyrics: string,\n    nextItem: any,\n    lyricsOnly: boolean,\n  ): { totalWidth: number; chordHeight: number } {\n    const chordFont = this.config.fonts.chord;\n    const lyricsFont = this.config.fonts.lyrics;\n\n    const chordWidth = renderedChords ? this.measurer.measureTextWidth(renderedChords, chordFont) : 0;\n    const lyricsWidth = lyrics ? this.measurer.measureTextWidth(lyrics, lyricsFont) : 0;\n    const adjustedChordWidth = this.getAdjustedChordWidth(\n      chordWidth,\n      lyricsWidth,\n      renderedChords,\n      nextItem,\n      lyricsOnly,\n    );\n\n    return {\n      totalWidth: Math.max(adjustedChordWidth, lyricsWidth),\n      chordHeight: renderedChords ? this.measurer.measureTextHeight(renderedChords, chordFont) : 0,\n    };\n  }\n\n  private getAdjustedChordWidth(\n    chordWidth: number,\n    lyricsWidth: number,\n    renderedChords: string,\n    nextItem: any,\n    lyricsOnly: boolean,\n  ): number {\n    const nextItemHasChords = nextItem &&\n      isChordLyricsPair(nextItem) &&\n      (nextItem as ChordLyricsPair).chords?.trim() !== '';\n\n    const spaceWidth = this.getSpaceWidth(this.config.fonts.lyrics);\n    const needsSpacing = !lyricsOnly && nextItemHasChords && chordWidth >= (lyricsWidth - spaceWidth);\n\n    if (needsSpacing) {\n      const spacing = this.getChordSpacingAsSpaces();\n      return this.measurer.measureTextWidth(renderedChords + spacing, this.config.fonts.chord);\n    }\n\n    return chordWidth;\n  }\n\n  /**\n   * Process a soft line break\n   */\n  processSoftLineBreak(softLineBreak: SoftLineBreak): MeasuredItem {\n    const width = this.measurer.measureTextWidth(softLineBreak.content, this.config.fonts.lyrics);\n    return { item: softLineBreak, width };\n  }\n\n  /**\n   * Process a tag (comment or section delimiter)\n   */\n  processTag(tag: Tag): MeasuredItem[] {\n    const items: MeasuredItem[] = [];\n\n    if (isComment(tag) || tag.isSectionDelimiter()) {\n      const font = isComment(tag) ? this.config.fonts.comment : this.config.fonts.sectionLabel;\n      const columnWidth = this.config.width;\n      const tagText = tag.label || tag.value || '';\n      const tagLines = this.measurer.splitTextToSize(tagText, columnWidth, font);\n\n      tagLines.forEach((tagLine) => {\n        const width = this.measurer.measureTextWidth(tagLine, font);\n        items.push(this.createMeasuredTagItem(tag, tagLine, width));\n      });\n    } else {\n      // For other types of tags (like column_break)\n      items.push({ item: tag, width: 0 });\n    }\n\n    return items;\n  }\n\n  private createMeasuredTagItem(tag: Tag, tagLine: string, width: number): MeasuredItem {\n    const tagItem = new Tag(tag.name, tagLine);\n\n    if (tag.attributes.__titleSeparator === 'true') {\n      (tagItem as any)._value = ' > ';\n      tagItem.attributes.__titleSeparator = 'true';\n      Object.defineProperty(tagItem, 'value', {\n        configurable: true,\n        get: () => ' > ',\n        set: (newValue: string) => {\n          (tagItem as any)._value = newValue;\n        },\n      });\n    }\n\n    return { item: tagItem, width };\n  }\n\n  /**\n   * Split a measured item if it doesn't fit in the available width\n   */\n  splitMeasuredItem(item: MeasuredItem, availableWidth: number): [MeasuredItem, MeasuredItem | null] {\n    if (!(item.item instanceof ChordLyricsPair) || !item.item.lyrics) return [item, null];\n    const { lyrics } = item.item;\n    const lyricsFont = this.config.fonts.lyrics;\n    const splitLines = this.measurer.splitTextToSize(lyrics, availableWidth, lyricsFont);\n    if (splitLines.length === 1) return [item, null];\n\n    const firstLyrics = splitLines[0];\n    const secondLyrics = splitLines.slice(1).join(' ');\n    return [\n      {\n        item: new ChordLyricsPair(item.item.chords, firstLyrics),\n        width: this.measurer.measureTextWidth(firstLyrics, lyricsFont),\n        chordHeight: item.chordHeight,\n      },\n      {\n        item: new ChordLyricsPair('', secondLyrics),\n        width: this.measurer.measureTextWidth(secondLyrics, lyricsFont),\n        chordHeight: 0,\n      },\n    ];\n  }\n\n  /**\n   * Removes hyphens from lyrics for lyrics-only mode\n   */\n  removeHyphens(lyrics: string): string {\n    let cleanedLyrics = lyrics.replace(/\\b(\\w+)\\s*-\\s*(\\w+)\\b/g, '$1$2');\n    cleanedLyrics = cleanedLyrics.replace(/(?:\\b(\\w+)\\s*-\\s*$)|(?:-\\s*$)|(?:\\s+-\\s+$)/g, '$1');\n    if (/^\\s*-\\s*$/.test(cleanedLyrics)) {\n      return '';\n    }\n    return cleanedLyrics;\n  }\n\n  /**\n   * Split a chord-lyrics pair at natural break points (commas)\n   */\n  splitChordLyricsPair(pair: ChordLyricsPair, lyricsOnly = false): (ChordLyricsPair | SoftLineBreak)[] {\n    const { chords, lyrics, annotation } = pair;\n\n    if (!lyrics || lyrics.trim() === '') {\n      return [pair];\n    }\n\n    const lyricFragments = lyrics.split(/,\\s*/);\n    const items: (ChordLyricsPair | SoftLineBreak)[] = [];\n\n    lyricFragments.forEach((fragment, index) => {\n      if (index > 0 && index !== 0) {\n        items.push(new SoftLineBreak(' '));\n        if (fragment.trim() !== '') {\n          // In lyricsOnly mode, remove leading space from fragments after line breaks\n          const adjustedFragment = lyricsOnly ? fragment.trimStart() : fragment;\n          items.push(new ChordLyricsPair('', adjustedFragment, ''));\n        }\n      }\n\n      if (index === 0 && lyricFragments.length === 1) {\n        items.push(new ChordLyricsPair(chords, fragment, annotation));\n      } else if (index === 0 && lyricFragments.length > 1) {\n        let commaAdjustedFragment = fragment;\n        commaAdjustedFragment += ',';\n        items.push(new ChordLyricsPair(chords, commaAdjustedFragment, annotation));\n      }\n    });\n\n    return items;\n  }\n\n  /**\n   * Find the next item with lyrics\n   */\n  findNextItemWithLyrics(\n    currentLine: MeasuredItem[],\n    items: MeasuredItem[],\n    index: number,\n  ): MeasuredItem | null {\n    const remainingItems = [...currentLine, ...items.slice(index)];\n    return remainingItems.find((mi) => mi.item instanceof ChordLyricsPair && mi.item.lyrics?.trim()) || null;\n  }\n\n  /**\n   * Capitalize the first word of lyrics\n   */\n  capitalizeFirstWord(lyrics: string): string {\n    return lyrics.replace(/^\\s*\\w/, (c) => c.toUpperCase());\n  }\n\n  /**\n   * Get the width of a space character\n   */\n  private getSpaceWidth(fontConfig: FontConfiguration): number {\n    return this.measurer.measureTextWidth(' ', fontConfig);\n  }\n\n  /**\n   * Get chord spacing as a string of spaces\n   */\n  private getChordSpacingAsSpaces(): string {\n    return ' '.repeat(this.config.chordSpacing);\n  }\n}\n","import ChordLyricsPair from '../../chord_sheet/chord_lyrics_pair';\nimport Line from '../../chord_sheet/line';\nimport Tag from '../../chord_sheet/tag';\nimport { isComment } from '../../template_helpers';\nimport { LayoutConfig, LineLayout, MeasuredItem } from './types';\n\ninterface LineContentFlags {\n  hasChords: boolean;\n  hasLyrics: boolean;\n  hasComments: boolean;\n  hasSectionLabel: boolean;\n  hasTag: boolean;\n}\n\n/**\n * Factory for creating different types of layouts\n */\nexport class LayoutFactory {\n  private readonly config: LayoutConfig;\n\n  constructor(config: LayoutConfig) {\n    this.config = config;\n  }\n\n  /**\n   * Create a line layout from measured items\n   */\n  createLineLayout(items: MeasuredItem[], line: Line): LineLayout {\n    const flags = this.analyzeLineContent(items);\n    const type = this.determineLineType(flags);\n    const maxChordHeight = Math.max(...items.map((mi) => mi.chordHeight || 0));\n    const lineHeight = this.calculateLineHeight(flags, maxChordHeight);\n\n    return {\n      type, items, lineHeight, line,\n    };\n  }\n\n  private analyzeLineContent(items: MeasuredItem[]): LineContentFlags {\n    return {\n      hasChords: items.some((mi) => mi.item instanceof ChordLyricsPair && mi.item.chords),\n      hasLyrics: items.some((mi) => mi.item instanceof ChordLyricsPair && mi.item.lyrics?.trim()),\n      hasComments: items.some((mi) => mi.item instanceof Tag && isComment(mi.item)),\n      hasSectionLabel: items.some((mi) => mi.item instanceof Tag && (mi.item as Tag).isSectionDelimiter()),\n      hasTag: items.some((mi) => mi.item instanceof Tag),\n    };\n  }\n\n  private determineLineType(flags: LineContentFlags): LineLayout['type'] {\n    if (flags.hasChords || flags.hasLyrics) return 'ChordLyricsPair';\n    if (flags.hasComments) return 'Comment';\n    if (flags.hasSectionLabel) return 'SectionLabel';\n    if (flags.hasTag) return 'Tag';\n    return 'Empty';\n  }\n\n  private calculateLineHeight(flags: LineContentFlags, maxChordHeight: number): number {\n    const { baseHeight, fontConfig } = this.getBaseHeightAndFont(flags, maxChordHeight);\n    const lineHeightFactor = fontConfig?.lineHeight || 1;\n    return baseHeight * lineHeightFactor;\n  }\n\n  private getBaseHeightAndFont(\n    flags: LineContentFlags,\n    maxChordHeight: number,\n  ): { baseHeight: number; fontConfig: { size: number; lineHeight?: number } | null } {\n    let baseHeight = this.config.linePadding;\n\n    if (flags.hasChords && flags.hasLyrics) {\n      const fontConfig = this.config.fonts.lyrics;\n      baseHeight += maxChordHeight + this.config.chordLyricSpacing + fontConfig.size;\n      return { baseHeight, fontConfig };\n    }\n    if (flags.hasChords) return { baseHeight: baseHeight + maxChordHeight, fontConfig: null };\n    if (flags.hasLyrics) return this.addFontHeight(baseHeight, this.config.fonts.lyrics);\n    if (flags.hasComments) return this.addFontHeight(baseHeight, this.config.fonts.comment);\n    if (flags.hasSectionLabel) return this.addFontHeight(baseHeight, this.config.fonts.sectionLabel);\n\n    return { baseHeight, fontConfig: null };\n  }\n\n  private addFontHeight(\n    baseHeight: number,\n    fontConfig: { size: number; lineHeight?: number },\n  ): { baseHeight: number; fontConfig: { size: number; lineHeight?: number } } {\n    return { baseHeight: baseHeight + fontConfig.size, fontConfig };\n  }\n\n  /**\n   * Create a column break line layout\n   */\n  createColumnBreakLayout(): LineLayout {\n    return {\n      type: 'Tag',\n      line: new Line(),\n      items: [{ item: new Tag('column_break'), width: 0 }],\n      lineHeight: 0,\n    };\n  }\n}\n","import ChordLyricsPair from '../../chord_sheet/chord_lyrics_pair';\nimport { ItemProcessor } from './item_processor';\nimport { LayoutFactory } from './layout_factory';\nimport Line from '../../chord_sheet/line';\nimport SoftLineBreak from '../../chord_sheet/soft_line_break';\nimport { LineLayout, MeasuredItem } from './types';\n\n/**\n * Handles breaking lines into layouts based on available width\n */\nexport class LineBreaker {\n  private readonly itemProcessor: ItemProcessor;\n\n  private readonly layoutFactory: LayoutFactory;\n\n  constructor(itemProcessor: ItemProcessor, layoutFactory: LayoutFactory) {\n    this.itemProcessor = itemProcessor;\n    this.layoutFactory = layoutFactory;\n  }\n\n  /**\n   * Break a line into layouts that fit within the available width\n   */\n  breakLineIntoLayouts(line: Line, availableWidth: number, lyricsOnly = false): LineLayout[] {\n    const rawMeasuredItems = this.itemProcessor.measureLineItems(line, lyricsOnly);\n    const measuredItems = this.consolidateConsecutiveSoftBreaks(rawMeasuredItems);\n    return this.breakContent(measuredItems, availableWidth, line);\n  }\n\n  /**\n   * Recursively break content into layouts that fit within the available width\n   */\n  private breakContent(items: MeasuredItem[], availableWidth: number, line: Line | null): LineLayout[] {\n    if (items.length === 0) {\n      return [];\n    }\n\n    const { totalWidth, softBreakIndices } = this.analyzeContent(items);\n\n    if (this.shouldReturnSingleLayout(totalWidth, availableWidth)) {\n      return [this.layoutFactory.createLineLayout(items, line as Line)];\n    }\n\n    if (softBreakIndices.length === 0) {\n      return this.handleNoSoftBreaks(items, availableWidth, line);\n    }\n\n    const { firstChunk, secondChunk } = this.splitAtBestSoftBreak(items, softBreakIndices, totalWidth);\n\n    if (firstChunk.length === 0) {\n      return this.breakContent(secondChunk, availableWidth, line);\n    }\n\n    const firstLayout = this.layoutFactory.createLineLayout(firstChunk, line as Line);\n\n    return [\n      firstLayout,\n      ...this.breakContent(secondChunk, availableWidth, line),\n    ];\n  }\n\n  /**\n   * Handle content with no soft breaks\n   */\n  private handleNoSoftBreaks(items: MeasuredItem[], availableWidth: number, line: Line | null): LineLayout[] {\n    const breakIndex = this.findBreakIndex(items, availableWidth);\n\n    if (breakIndex === -1) {\n      return [this.layoutFactory.createLineLayout(items, line as Line)];\n    }\n\n    if (breakIndex === 0) {\n      return this.handleOversizedFirstItem(items, availableWidth, line);\n    }\n\n    const firstChunk = items.slice(0, breakIndex);\n    const secondChunk = items.slice(breakIndex);\n\n    this.removeTrailingComma(firstChunk);\n\n    return [\n      this.layoutFactory.createLineLayout(firstChunk, line as Line),\n      ...this.breakContent(secondChunk, availableWidth, line),\n    ];\n  }\n\n  /**\n   * Consolidate consecutive soft line breaks into single breaks\n   */\n  private consolidateConsecutiveSoftBreaks(items: MeasuredItem[]): MeasuredItem[] {\n    const consolidated: MeasuredItem[] = [];\n\n    for (let index = 0; index < items.length; index += 1) {\n      const item = items[index];\n      consolidated.push(item);\n\n      if (item.item instanceof SoftLineBreak) {\n        index = this.skipConsecutiveSoftBreaks(items, index);\n      }\n    }\n\n    return consolidated;\n  }\n\n  private skipConsecutiveSoftBreaks(items: MeasuredItem[], startIndex: number): number {\n    let index = startIndex;\n\n    while (index + 1 < items.length && items[index + 1].item instanceof SoftLineBreak) {\n      index += 1;\n    }\n\n    return index;\n  }\n\n  private findBreakIndex(items: MeasuredItem[], availableWidth: number): number {\n    let currentWidth = 0;\n\n    for (let i = 0; i < items.length; i += 1) {\n      if (currentWidth + items[i].width > availableWidth) {\n        return i;\n      }\n      currentWidth += items[i].width;\n    }\n\n    return -1;\n  }\n\n  private handleOversizedFirstItem(\n    items: MeasuredItem[],\n    availableWidth: number,\n    line: Line | null,\n  ): LineLayout[] {\n    const [firstPart, secondPart] = this.itemProcessor.splitMeasuredItem(items[0], availableWidth);\n    const remainingItems = secondPart ? [secondPart, ...items.slice(1)] : items.slice(1);\n\n    return [\n      this.layoutFactory.createLineLayout([firstPart], line as Line),\n      ...this.breakContent(remainingItems, availableWidth, line),\n    ];\n  }\n\n  private analyzeContent(items: MeasuredItem[]): {\n    totalWidth: number;\n    softBreakIndices: number[];\n  } {\n    const softBreakIndices: number[] = [];\n    const totalWidth = items.reduce((sum, measuredItem, index) => {\n      if (measuredItem.item instanceof SoftLineBreak) {\n        softBreakIndices.push(index);\n      }\n      return sum + measuredItem.width;\n    }, 0);\n\n    return { totalWidth, softBreakIndices };\n  }\n\n  private shouldReturnSingleLayout(\n    totalWidth: number,\n    availableWidth: number,\n  ): boolean {\n    return totalWidth <= availableWidth;\n  }\n\n  private splitAtBestSoftBreak(\n    items: MeasuredItem[],\n    softBreakIndices: number[],\n    totalWidth: number,\n  ): { firstChunk: MeasuredItem[]; secondChunk: MeasuredItem[] } {\n    const targetWidth = totalWidth / 2;\n    const breakOptions = softBreakIndices.map((idx) => ({\n      index: idx,\n      widthUpToBreak: this.getWidthUpToIndex(items, idx),\n    }));\n    const bestBreak = breakOptions.reduce((best, current) => {\n      const currentDistance = Math.abs(current.widthUpToBreak - targetWidth);\n      const bestDistance = Math.abs(best.widthUpToBreak - targetWidth);\n\n      if (currentDistance === bestDistance) {\n        return current.index > best.index ? current : best;\n      }\n\n      return currentDistance < bestDistance ? current : best;\n    });\n\n    const firstChunk = items.slice(0, bestBreak.index);\n    const secondChunk = items.slice(bestBreak.index + 1);\n\n    this.removeTrailingComma(firstChunk);\n    this.capitalizeNextItem(secondChunk, secondChunk, 0);\n\n    return { firstChunk, secondChunk };\n  }\n\n  private removeTrailingComma(items: MeasuredItem[]): void {\n    const lastItem = items[items.length - 1];\n    if (lastItem?.item instanceof ChordLyricsPair && lastItem.item.lyrics?.endsWith(',')) {\n      lastItem.item.lyrics = lastItem.item.lyrics.slice(0, -1) || '';\n      lastItem.width = this.remeasureLyrics(lastItem);\n    }\n  }\n\n  /**\n   * Calculate the total width of items up to (but not including) the given index\n   */\n  private getWidthUpToIndex(items: MeasuredItem[], index: number): number {\n    let width = 0;\n    for (let i = 0; i < index && i < items.length; i += 1) {\n      width += items[i].width;\n    }\n    return width;\n  }\n\n  /**\n   * Remeasure the width of lyrics after modification\n   */\n  private remeasureLyrics(item: MeasuredItem): number {\n    if (item.item instanceof ChordLyricsPair) {\n      return this.itemProcessor.measurer.measureTextWidth(\n        item.item.lyrics || '',\n        this.itemProcessor.config.fonts.lyrics,\n      );\n    }\n    return item.width;\n  }\n\n  /**\n   * Recalculate the full chord-lyric pair width (similar to ItemProcessor logic)\n   */\n  private recalculateChordLyricWidth(item: MeasuredItem, nextItem: MeasuredItem | null = null): number {\n    if (!(item.item instanceof ChordLyricsPair)) {\n      return item.width;\n    }\n\n    const pair = item.item;\n    const widths = this.measureChordAndLyricWidths(pair);\n    const adjustedChordWidth = this.adjustChordWidth(pair, widths, nextItem);\n\n    return Math.max(adjustedChordWidth, widths.lyricsWidth);\n  }\n\n  private measureChordAndLyricWidths(pair: ChordLyricsPair): { chordWidth: number; lyricsWidth: number } {\n    const chordFont = this.itemProcessor.config.fonts.chord;\n    const lyricsFont = this.itemProcessor.config.fonts.lyrics;\n\n    const chordWidth = pair.chords ? this.itemProcessor.measurer.measureTextWidth(pair.chords, chordFont) : 0;\n    const lyricsWidth = pair.lyrics ? this.itemProcessor.measurer.measureTextWidth(pair.lyrics, lyricsFont) : 0;\n\n    return { chordWidth, lyricsWidth };\n  }\n\n  private adjustChordWidth(\n    pair: ChordLyricsPair,\n    widths: { chordWidth: number; lyricsWidth: number },\n    nextItem: MeasuredItem | null,\n  ): number {\n    if (this.shouldSkipChordSpacing(widths.chordWidth, nextItem)) {\n      return widths.chordWidth;\n    }\n\n    const lyricsFont = this.itemProcessor.config.fonts.lyrics;\n    const spaceWidth = this.itemProcessor.measurer.measureTextWidth(' ', lyricsFont);\n\n    if (widths.chordWidth < (widths.lyricsWidth - spaceWidth)) {\n      return widths.chordWidth;\n    }\n\n    const chordFont = this.itemProcessor.config.fonts.chord;\n    const spacing = ' '.repeat(this.itemProcessor.config.chordSpacing);\n    const chordsWithSpacing = `${pair.chords || ''}${spacing}`;\n\n    return this.itemProcessor.measurer.measureTextWidth(chordsWithSpacing, chordFont);\n  }\n\n  private shouldSkipChordSpacing(chordWidth: number, nextItem: MeasuredItem | null): boolean {\n    if (this.itemProcessor.config.displayLyricsOnly || chordWidth === 0) {\n      return true;\n    }\n\n    if (!nextItem || !(nextItem.item instanceof ChordLyricsPair)) {\n      return true;\n    }\n\n    return (nextItem.item.chords || '').trim() === '';\n  }\n\n  /**\n   * Capitalize the first letter of the next item with lyrics\n   */\n  private capitalizeNextItem(currentLine: MeasuredItem[], measuredItems: MeasuredItem[], index: number): void {\n    const nextItemWithLyrics = this.itemProcessor.findNextItemWithLyrics(currentLine, measuredItems, index);\n    if (nextItemWithLyrics && nextItemWithLyrics.item instanceof ChordLyricsPair) {\n      const currentLyrics = nextItemWithLyrics.item.lyrics ?? '';\n      nextItemWithLyrics.item.lyrics = this.itemProcessor.capitalizeFirstWord(currentLyrics);\n\n      // Find the next item after this one to determine if it has chords (for spacing logic)\n      const nextItemIndex = measuredItems.indexOf(nextItemWithLyrics);\n      const itemAfterNext = nextItemIndex >= 0 && nextItemIndex < measuredItems.length - 1 ?\n        measuredItems[nextItemIndex + 1] :\n        null;\n\n      // Recalculate the full chord-lyric pair width, considering spacing\n      nextItemWithLyrics.width = this.recalculateChordLyricWidth(nextItemWithLyrics, itemAfterNext);\n    }\n  }\n}\n","import Line from '../../chord_sheet/line';\nimport Tag from '../../chord_sheet/tag';\nimport { isColumnBreak } from '../../template_helpers';\nimport { LayoutConfig, LineLayout } from './types';\n\n/**\n * Create a column break line layout\n */\nexport function createColumnBreakLineLayout(): LineLayout {\n  return {\n    type: 'Tag',\n    line: new Line(),\n    items: [{ item: new Tag('column_break'), width: 0 }],\n    lineHeight: 0,\n  };\n}\n\n/**\n * Calculate the total height of a set of line layouts\n */\nexport function calculateTotalHeight(lineLayouts: LineLayout[][]): number {\n  return lineLayouts.reduce((sum, layouts) => {\n    const layoutHeight = layouts.reduce((lineSum, layout) => lineSum + layout.lineHeight, 0);\n    return sum + layoutHeight;\n  }, 0);\n}\n\n/**\n * Check if a line layout represents a column break\n */\nexport function isColumnBreakLayout(lineLayout: LineLayout[]): boolean {\n  return lineLayout.length === 1 &&\n         lineLayout[0].items.length === 1 &&\n         lineLayout[0].items[0].item instanceof Tag &&\n         isColumnBreak(lineLayout[0].items[0].item);\n}\n\n/**\n * Update the position based on layout content\n */\nexport function updatePosition(\n  layout: LineLayout[],\n  currentY: number,\n  currentColumn: number,\n  config: LayoutConfig,\n): { newY: number; newColumn: number } {\n  if (isColumnBreakLayout(layout)) {\n    // Column break\n    const newColumn = currentColumn + 1 > (config.columnCount || 1) ? 1 : currentColumn + 1;\n    return {\n      newY: config.minY,\n      newColumn,\n    };\n  }\n  // Normal layout\n  const linesHeight = layout.reduce((sum, l) => sum + l.lineHeight, 0);\n  return {\n    newY: currentY + linesHeight,\n    newColumn: currentColumn,\n  };\n}\n\n/**\n * Count different types of lines within layouts\n */\nexport function countLineTypes(lineLayouts: LineLayout[][]) {\n  const flattened = lineLayouts.flat();\n\n  return {\n    chordLyricPairLines: flattened.filter((ll) => ll.type === 'ChordLyricsPair').length,\n    commentLines: flattened.filter((ll) => ll.type === 'Comment').length,\n    sectionLabelLines: flattened.filter((ll) => ll.type === 'SectionLabel').length,\n    tagLines: flattened.filter((ll) => ll.type === 'Tag').length,\n    emptyLines: flattened.filter((ll) => ll.type === 'Empty').length,\n    nonLyricLines: flattened.filter((ll) => ll.type === 'Comment' || ll.type === 'SectionLabel').length,\n  };\n}\n\n/**\n * Determine if a paragraph should be skipped in lyrics-only mode\n */\nexport function shouldSkipParagraph(lineLayouts: LineLayout[][], lyricsOnly = false): boolean {\n  if (!lyricsOnly) return false;\n\n  const counts = countLineTypes(lineLayouts);\n\n  return counts.nonLyricLines === 1 && counts.chordLyricPairLines === 0;\n}\n","import { createColumnBreakLineLayout } from '../../layout_helpers';\nimport { LineLayout, ParagraphSplitStrategy } from '../../types';\n\ninterface PartitionAccumulator {\n  firstPart: LineLayout[][];\n  secondPart: LineLayout[][];\n  processed: number;\n}\n\nexport class FiveOrMoreLinesParagraphSplitStrategy implements ParagraphSplitStrategy {\n  private totalChordLyricPairLines!: number;\n\n  constructor(\n    private chordLyricLineCount: number,\n  ) {\n    this.totalChordLyricPairLines = chordLyricLineCount;\n  }\n\n  splitParagraph(\n    lineLayouts: LineLayout[][],\n    currentY: number,\n    columnStartY: number,\n    columnBottomY: number,\n  ): LineLayout[][] {\n    const flatLineLayouts = this.flattenLineLayouts(lineLayouts);\n    const splitResult = this.trySplitParagraph(\n      lineLayouts,\n      flatLineLayouts,\n      currentY,\n      columnBottomY,\n    );\n\n    if (splitResult) {\n      return splitResult;\n    }\n\n    if (currentY !== columnStartY) {\n      return [[createColumnBreakLineLayout()], ...lineLayouts];\n    }\n\n    return lineLayouts;\n  }\n\n  private trySplitParagraph(\n    lineLayouts: LineLayout[][],\n    flatLineLayouts: LineLayout[],\n    currentY: number,\n    columnBottomY: number,\n  ): LineLayout[][] | null {\n    const acceptableSplits = this.findAcceptableSplits(flatLineLayouts);\n    const selectedSplit = this.selectSplit(acceptableSplits, currentY, columnBottomY);\n\n    if (selectedSplit) {\n      return this.buildSplitResult(lineLayouts, selectedSplit.index);\n    }\n\n    return null;\n  }\n\n  private selectSplit(\n    acceptableSplits: { index: number; heightFirstPart: number }[],\n    currentY: number,\n    columnBottomY: number,\n  ): { index: number; heightFirstPart: number } | null {\n    for (let i = acceptableSplits.length - 1; i >= 0; i -= 1) {\n      const split = acceptableSplits[i];\n\n      if (currentY + split.heightFirstPart <= columnBottomY) {\n        return split;\n      }\n    }\n\n    return null;\n  }\n\n  private buildSplitResult(\n    lineLayouts: LineLayout[][],\n    splitIndex: number,\n  ): LineLayout[][] {\n    const { firstPart, secondPart } = this.partitionLineLayouts(lineLayouts, splitIndex);\n    return [...firstPart, [createColumnBreakLineLayout()], ...secondPart];\n  }\n\n  private flattenLineLayouts(lineLayouts: LineLayout[][]): LineLayout[] {\n    const flatLineLayouts: LineLayout[] = [];\n\n    lineLayouts.forEach((unit) => {\n      unit.forEach((lineLayout) => {\n        flatLineLayouts.push(lineLayout);\n      });\n    });\n\n    return flatLineLayouts;\n  }\n\n  private findAcceptableSplits(flatLineLayouts: LineLayout[]): { index: number; heightFirstPart: number }[] {\n    let heightFirstPart = 0;\n    let chordCount = 0;\n\n    return flatLineLayouts\n      .slice(0, -1)\n      .reduce<{ index: number; heightFirstPart: number }[]>((splits, lineLayout, index) => {\n        heightFirstPart += lineLayout.lineHeight;\n        chordCount += lineLayout.type === 'ChordLyricsPair' ? 1 : 0;\n\n        const remaining = this.totalChordLyricPairLines - chordCount;\n        if (chordCount >= 2 && remaining >= 2) {\n          splits.push({ index: index + 1, heightFirstPart });\n        }\n\n        return splits;\n      }, []);\n  }\n\n  private partitionLineLayouts(\n    lineLayouts: LineLayout[][],\n    splitIndex: number,\n  ): { firstPart: LineLayout[][]; secondPart: LineLayout[][] } {\n    const result = lineLayouts.reduce<PartitionAccumulator>(\n      (accumulator, unit) => this.partitionReducer(accumulator, unit, splitIndex),\n      { firstPart: [], secondPart: [], processed: 0 },\n    );\n\n    return { firstPart: result.firstPart, secondPart: result.secondPart };\n  }\n\n  private partitionReducer(\n    accumulator: PartitionAccumulator,\n    unit: LineLayout[],\n    splitIndex: number,\n  ): PartitionAccumulator {\n    const unitLength = unit.length;\n    const fitsBeforeSplit = accumulator.processed + unitLength <= splitIndex;\n    const isAfterSplit = accumulator.processed >= splitIndex;\n\n    if (fitsBeforeSplit) {\n      accumulator.firstPart.push(unit);\n    } else if (isAfterSplit) {\n      accumulator.secondPart.push(unit);\n    } else {\n      const splitPoint = splitIndex - accumulator.processed;\n      accumulator.firstPart.push(unit.slice(0, splitPoint));\n      accumulator.secondPart.push(unit.slice(splitPoint));\n    }\n\n    accumulator.processed += unitLength;\n    return accumulator;\n  }\n}\n","import { createColumnBreakLineLayout } from '../../layout_helpers';\nimport { LineLayout, ParagraphSplitStrategy } from '../../types';\n\nexport class FourLinesParagraphSplitStrategy implements ParagraphSplitStrategy {\n  splitParagraph(\n    lineLayouts: LineLayout[][],\n    currentY: number,\n    columnStartY: number,\n    columnBottomY: number,\n  ): LineLayout[][] {\n    if (lineLayouts.length === 0) {\n      return [];\n    }\n\n    const { splitIndex, heightFirstPart } = this.findSplitMetadata(lineLayouts);\n\n    if (splitIndex === null) {\n      return this.prependColumnBreakIfNeeded(lineLayouts, currentY, columnStartY);\n    }\n\n    if (currentY + heightFirstPart <= columnBottomY) {\n      return this.buildSplitResult(lineLayouts, splitIndex);\n    }\n\n    return this.prependColumnBreakIfNeeded(lineLayouts, currentY, columnStartY);\n  }\n\n  private findSplitMetadata(lineLayouts: LineLayout[][]): { splitIndex: number | null; heightFirstPart: number } {\n    let chordLyricPairLinesSeen = 0;\n    let heightFirstPart = 0;\n\n    for (let i = 0; i < lineLayouts.length; i += 1) {\n      const { height, chordCount } = this.summarizeLineLayout(lineLayouts[i]);\n\n      chordLyricPairLinesSeen += chordCount;\n      heightFirstPart += height;\n\n      if (chordLyricPairLinesSeen >= 2) {\n        return { splitIndex: i + 1, heightFirstPart };\n      }\n    }\n\n    return { splitIndex: null, heightFirstPart };\n  }\n\n  private summarizeLineLayout(lines: LineLayout[]): { height: number; chordCount: number } {\n    return lines.reduce<{ height: number; chordCount: number }>((acc, lineLayout) => ({\n      height: acc.height + lineLayout.lineHeight,\n      chordCount: acc.chordCount + (lineLayout.type === 'ChordLyricsPair' ? 1 : 0),\n    }), { height: 0, chordCount: 0 });\n  }\n\n  private buildSplitResult(lineLayouts: LineLayout[][], splitIndex: number): LineLayout[][] {\n    const firstPart = lineLayouts.slice(0, splitIndex);\n    const secondPart = lineLayouts.slice(splitIndex);\n\n    return firstPart\n      .concat([[createColumnBreakLineLayout()]])\n      .concat(secondPart);\n  }\n\n  private prependColumnBreakIfNeeded(\n    lineLayouts: LineLayout[][],\n    currentY: number,\n    columnStartY: number,\n  ): LineLayout[][] {\n    if (currentY === columnStartY) {\n      return lineLayouts;\n    }\n\n    return [[createColumnBreakLineLayout()]].concat(lineLayouts);\n  }\n}\n","import { createColumnBreakLineLayout } from '../../layout_helpers';\nimport { LineLayout, ParagraphSplitStrategy } from '../../types';\n\nexport class ThreeOrLessLinesParagraphSplitStrategy implements ParagraphSplitStrategy {\n  splitParagraph(\n    lineLayouts: LineLayout[][],\n    currentY: number,\n    columnStartY: number,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    columnBottomY: number,\n  ): LineLayout[][] {\n    const newLineLayouts: LineLayout[][] = [];\n\n    // Insert column break before the paragraph if not at the top of the column\n    if (currentY !== columnStartY) {\n      newLineLayouts.push([createColumnBreakLineLayout()]);\n    }\n\n    return newLineLayouts.concat(lineLayouts);\n  }\n}\n","import { FiveOrMoreLinesParagraphSplitStrategy } from './strategies/five_or_more_lines_paragraph_split_strategy';\nimport { FourLinesParagraphSplitStrategy } from './strategies/four_lines_paragraph_split_strategy';\nimport { ThreeOrLessLinesParagraphSplitStrategy } from './strategies/three_or_less_lines_paragraph_split_strategy';\nimport { LineLayout, ParagraphSplitStrategy } from '../types';\n\nexport class ParagraphSplitter {\n  splitParagraph(\n    lineLayouts: LineLayout[][],\n    currentY: number,\n    columnStartY: number,\n    columnBottomY: number,\n    chordLyricLineCount: number,\n  ): LineLayout[][] {\n    const strategy = this.createStrategy(chordLyricLineCount);\n    return strategy.splitParagraph(lineLayouts, currentY, columnStartY, columnBottomY);\n  }\n\n  private createStrategy(chordLyricLineCount: number): ParagraphSplitStrategy {\n    if (chordLyricLineCount <= 3) {\n      return new ThreeOrLessLinesParagraphSplitStrategy();\n    } if (chordLyricLineCount === 4) {\n      return new FourLinesParagraphSplitStrategy();\n    }\n    return new FiveOrMoreLinesParagraphSplitStrategy(chordLyricLineCount);\n  }\n}\n","export { ParagraphSplitter } from './paragraph_splitter';\nexport { ParagraphSplitStrategy } from '../types';\nexport { ThreeOrLessLinesParagraphSplitStrategy } from './strategies/three_or_less_lines_paragraph_split_strategy';\nexport { FourLinesParagraphSplitStrategy } from './strategies/four_lines_paragraph_split_strategy';\nexport { FiveOrMoreLinesParagraphSplitStrategy } from './strategies/five_or_more_lines_paragraph_split_strategy';\n","import Tag from '../../chord_sheet/tag';\n\nclass TitleSeparatorTag extends Tag {\n  constructor() {\n    super('comment', ' > ');\n    this.attributes.__titleSeparator = 'true';\n  }\n\n  override get value(): string {\n    return ' > ';\n  }\n\n  override set value(newValue: string) {\n    super.value = newValue;\n  }\n\n  override clone(): Tag {\n    const clone = new TitleSeparatorTag();\n    clone.attributes = { ...this.attributes };\n    (clone as any).selector = (this as any).selector;\n    (clone as any).isNegated = (this as any).isNegated;\n    return clone;\n  }\n}\n\nexport default TitleSeparatorTag;\n","import Item from '../../chord_sheet/item';\nimport { ItemProcessor } from './item_processor';\nimport { LayoutFactory } from './layout_factory';\nimport Line from '../../chord_sheet/line';\nimport { LineBreaker } from './line_breaker';\nimport { Measurer } from '../measurement';\nimport Paragraph from '../../chord_sheet/paragraph';\nimport { ParagraphSplitter } from './paragraph_splitter';\nimport SoftLineBreak from '../../chord_sheet/soft_line_break';\nimport Song from '../../chord_sheet/song';\nimport Tag from '../../chord_sheet/tag';\nimport TitleSeparatorTag from './title_separator_tag';\nimport { LayoutConfig, LineLayout, ParagraphLayoutResult } from './types';\nimport { calculateTotalHeight, isColumnBreakLayout } from './layout_helpers';\nimport { isComment, isTag, lineHasContents } from '../../template_helpers';\n\ninterface ProcessParagraphParams {\n  paragraph: Paragraph;\n  index: number;\n  processedParagraphs: Paragraph[];\n  skipIndices: Set<number>;\n  bodyParagraphs: Paragraph[];\n}\n\ninterface HandleRepeatedSectionParams {\n  cachedParagraph: Paragraph;\n  currentParagraph: Paragraph;\n  processedParagraphs: Paragraph[];\n  skipIndices: Set<number>;\n  startIndex: number;\n  bodyParagraphs: Paragraph[];\n}\n\ninterface LayoutSimulationState {\n  currentY: number;\n  currentColumn: number;\n}\n\ninterface LineTypeCounts {\n  chordLyricLineCount: number;\n  nonLyricLineCount: number;\n}\n\n/**\n * Engine for layout calculations\n */\nexport class LayoutEngine {\n  private paragraphSplitter: ParagraphSplitter;\n\n  private itemProcessor: ItemProcessor;\n\n  private layoutFactory: LayoutFactory;\n\n  private lineBreaker: LineBreaker;\n\n  private sectionCache: Map<string, Paragraph> = new Map<string, Paragraph>();\n\n  constructor(\n    private song: Song,\n    private measurer: Measurer,\n    private config: LayoutConfig,\n  ) {\n    // Process repeated sections before layout computation\n    this.processRepeatedSections();\n\n    // Initialize component classes\n    this.itemProcessor = new ItemProcessor(this.measurer, this.config, this.song);\n    this.layoutFactory = new LayoutFactory(config);\n    this.lineBreaker = new LineBreaker(this.itemProcessor, this.layoutFactory);\n    this.paragraphSplitter = new ParagraphSplitter();\n  }\n\n  /**\n   * Normalize section label by removing repeat indicators like \"(2x)\", \"(3x)\", etc.\n   * @param label The section label to normalize\n   * @returns The normalized label\n   */\n  private normalizeSectionLabel(label: string | null): string | null {\n    if (!label) return null;\n\n    // Remove patterns like \"(2x)\", \"(3x)\", \"(repeat)\", etc.\n    return label\n      .replace(/\\s*\\([^)]*(?:x|\\d+|repeat|rep)\\s*[^)]*\\)\\s*$/i, '')\n      .trim()\n      .toLowerCase()\n      .replace(/\\s+/g, '_');\n  }\n\n  /**\n   * Get the cache key for a section based on its normalized label\n   * @param paragraph The paragraph to get the cache key for\n   * @returns The cache key or null if the paragraph doesn't have a label\n   */\n  private getSectionCacheKey(paragraph: Paragraph): string | null {\n    let label: string | null = null;\n\n    // First check if paragraph has a label\n    if (paragraph.label) {\n      label = paragraph.label;\n    } else if (paragraph.lines.length > 0) {\n      label = this.extractLabelFromFirstItem(paragraph.lines[0].items[0]);\n    }\n\n    const normalizedLabel = this.normalizeSectionLabel(label);\n    return normalizedLabel ?? null;\n  }\n\n  private extractLabelFromFirstItem(firstItem: Item | undefined): string | null {\n    if (!firstItem || !isTag(firstItem)) {\n      return null;\n    }\n\n    const tag = firstItem as Tag;\n\n    if (!isComment(tag) && !tag.isSectionDelimiter()) {\n      return null;\n    }\n\n    return tag.label || tag.value || null;\n  }\n\n  /**\n   * Process repeated sections by modifying the song's bodyParagraphs array\n   * This is called in the constructor to preprocess the song before layout computation\n   */\n  private processRepeatedSections(): void {\n    if (!this.config.repeatedSections) {\n      return;\n    }\n\n    this.sectionCache.clear();\n\n    const processedParagraphs: Paragraph[] = [];\n    const skipIndices = new Set<number>();\n    const { bodyParagraphs } = this.song.clone();\n\n    bodyParagraphs.forEach((paragraph, index) => {\n      this.processParagraph({\n        paragraph,\n        index,\n        processedParagraphs,\n        skipIndices,\n        bodyParagraphs,\n      });\n    });\n\n    (this.song as any).renderParagraphs = processedParagraphs;\n    this.sectionCache.clear();\n  }\n\n  private processParagraph(params: ProcessParagraphParams): void {\n    const {\n      paragraph,\n      index,\n      skipIndices,\n      processedParagraphs,\n    } = params;\n\n    if (this.shouldSkipParagraphIndex(index, skipIndices)) {\n      return;\n    }\n\n    const cacheKey = this.getSectionCacheKey(paragraph);\n\n    if (!cacheKey) {\n      this.addUncachedParagraph(processedParagraphs, paragraph);\n      return;\n    }\n\n    this.handleParagraphWithCacheKey(cacheKey, params);\n  }\n\n  private shouldSkipParagraphIndex(index: number, skipIndices: Set<number>): boolean {\n    return skipIndices.has(index);\n  }\n\n  private addUncachedParagraph(processedParagraphs: Paragraph[], paragraph: Paragraph): void {\n    processedParagraphs.push(this.cloneParagraph(paragraph));\n  }\n\n  private handleParagraphWithCacheKey(cacheKey: string, params: ProcessParagraphParams): void {\n    const paragraphClone = this.cloneParagraph(params.paragraph);\n\n    if (this.cacheFirstOccurrence(cacheKey, paragraphClone, params.processedParagraphs)) {\n      return;\n    }\n\n    const cachedParagraph = this.sectionCache.get(cacheKey);\n\n    if (!cachedParagraph) {\n      return;\n    }\n\n    this.handleRepeatedSection({\n      cachedParagraph,\n      currentParagraph: paragraphClone,\n      processedParagraphs: params.processedParagraphs,\n      skipIndices: params.skipIndices,\n      startIndex: params.index,\n      bodyParagraphs: params.bodyParagraphs,\n    });\n  }\n\n  private cacheFirstOccurrence(\n    cacheKey: string,\n    paragraph: Paragraph,\n    processedParagraphs: Paragraph[],\n  ): boolean {\n    if (this.sectionCache.has(cacheKey)) {\n      return false;\n    }\n\n    this.sectionCache.set(cacheKey, paragraph);\n    processedParagraphs.push(paragraph);\n    return true;\n  }\n\n  private handleRepeatedSection(params: HandleRepeatedSectionParams): void {\n    switch (this.config.repeatedSections) {\n      case 'hide':\n        return;\n      case 'title_only':\n        this.handleTitleOnlyMode(params);\n        return;\n      case 'lyrics_only':\n        params.processedParagraphs.push(params.currentParagraph);\n        return;\n      case 'full':\n        this.handleFullMode(params);\n        return;\n      default:\n        params.processedParagraphs.push(params.currentParagraph);\n    }\n  }\n\n  private handleTitleOnlyMode(params: HandleRepeatedSectionParams): void {\n    const titleParagraphs = this.collectTitleParagraphs(params);\n    // Note: We intentionally do NOT call appendTitlesToCachedParagraph here\n    // as it would corrupt the cached paragraph for subsequent renders\n    params.processedParagraphs.push(this.resolveTitleOnlyParagraph(titleParagraphs));\n  }\n\n  private collectTitleParagraphs(params: HandleRepeatedSectionParams): Paragraph[] {\n    const {\n      currentParagraph,\n      skipIndices,\n      startIndex,\n      bodyParagraphs,\n    } = params;\n    const titles: Paragraph[] = [this.createTitleOnlyParagraph(currentParagraph)];\n\n    for (let nextIndex = startIndex + 1; nextIndex < bodyParagraphs.length; nextIndex += 1) {\n      const nextParagraph = bodyParagraphs[nextIndex];\n\n      if (skipIndices.has(nextIndex)) {\n        // Already consolidated earlier\n      } else if (!this.shouldIncludeTitle(nextParagraph)) {\n        break;\n      } else {\n        titles.push(this.createTitleOnlyParagraph(nextParagraph));\n        skipIndices.add(nextIndex);\n      }\n    }\n\n    return titles;\n  }\n\n  private shouldIncludeTitle(paragraph: Paragraph): boolean {\n    const cacheKey = this.getSectionCacheKey(paragraph);\n    return Boolean(cacheKey && this.sectionCache.has(cacheKey));\n  }\n\n  private resolveTitleOnlyParagraph(titles: Paragraph[]): Paragraph {\n    if (titles.length === 1) {\n      return titles[0];\n    }\n\n    return this.consolidateTitles(titles);\n  }\n\n  private handleFullMode(params: HandleRepeatedSectionParams): void {\n    const { cachedParagraph, currentParagraph, processedParagraphs } = params;\n    const mergedParagraph = new Paragraph();\n\n    this.buildFullModeLines(currentParagraph, cachedParagraph).forEach((line) => {\n      mergedParagraph.addLine(line);\n    });\n\n    processedParagraphs.push(mergedParagraph);\n  }\n\n  private buildFullModeLines(currentParagraph: Paragraph, cachedParagraph: Paragraph): Line[] {\n    if (currentParagraph.lines.length === 0) {\n      return cachedParagraph.lines.map((line) => line.clone());\n    }\n\n    const firstLine = currentParagraph.lines[0];\n    const firstItem = firstLine.items[0];\n\n    if (firstItem && isTag(firstItem)) {\n      return [\n        firstLine.clone(),\n        ...cachedParagraph.lines.slice(1).map((line) => line.clone()),\n      ];\n    }\n\n    return [\n      ...currentParagraph.lines.map((line) => line.clone()),\n      ...cachedParagraph.lines.slice(1).map((line) => line.clone()),\n    ];\n  }\n\n  private consolidateTitles(titleParagraphs: Paragraph[]): Paragraph {\n    const consolidated = this.cloneParagraph(titleParagraphs[0]);\n\n    if (consolidated.lines.length === 0) {\n      return consolidated;\n    }\n\n    const consolidatedLine = consolidated.lines[0];\n\n    titleParagraphs.slice(1).forEach((titleParagraph) => {\n      if (titleParagraph.lines.length === 0) {\n        return;\n      }\n\n      const titleLine = titleParagraph.lines[0];\n      this.addTitleSeparator(consolidatedLine);\n      titleLine.items.forEach((item) => {\n        consolidatedLine.items.push(this.cloneItem(item));\n      });\n    });\n\n    return consolidated;\n  }\n\n  private addTitleSeparator(line: Line): void {\n    line.items.push(...this.buildTitleSeparatorItems());\n  }\n\n  private buildTitleSeparatorItems(): Item[] {\n    return [\n      new SoftLineBreak(' '),\n      new TitleSeparatorTag() as unknown as Item,\n      new SoftLineBreak(' '),\n    ] as unknown as Item[];\n  }\n\n  private createTitleOnlyParagraph(originalParagraph: Paragraph): Paragraph {\n    const titleParagraph = new Paragraph();\n\n    if (originalParagraph.lines.length === 0) {\n      return titleParagraph;\n    }\n\n    const firstLine = originalParagraph.lines[0];\n    const titleLine = new Line({ type: firstLine.type, items: [] });\n\n    firstLine.items.forEach((item) => {\n      if (isTag(item)) {\n        titleLine.addItem(this.cloneItem(item));\n      }\n    });\n\n    if (titleLine.items.length === 0) {\n      titleLine.items = [\n        ...firstLine.items.map((item) => this.cloneItem(item)),\n      ];\n    }\n\n    titleParagraph.addLine(titleLine);\n    return titleParagraph;\n  }\n\n  private cloneParagraph(paragraph: Paragraph): Paragraph {\n    const clonedParagraph = new Paragraph();\n    paragraph.lines.forEach((line) => clonedParagraph.addLine(line.clone()));\n    return clonedParagraph;\n  }\n\n  private cloneItem(item: Item): Item {\n    if (item instanceof SoftLineBreak) {\n      return new SoftLineBreak(item.content) as unknown as Item;\n    }\n\n    if (typeof (item as { clone?: () => Item }).clone === 'function') {\n      return (item as { clone: () => Item }).clone();\n    }\n\n    return item;\n  }\n\n  /**\n   * Compute layouts for all paragraphs in the song\n   */\n  public computeParagraphLayouts(): ParagraphLayoutResult[] {\n    const layouts: ParagraphLayoutResult[] = [];\n    let state: LayoutSimulationState = {\n      currentY: this.config.minY,\n      currentColumn: 1,\n    };\n\n    this.song.renderParagraphs.forEach((paragraph) => {\n      state = this.processParagraphLayout(paragraph, layouts, state);\n    });\n\n    return layouts;\n  }\n\n  private processParagraphLayout(\n    paragraph: Paragraph,\n    layouts: ParagraphLayoutResult[],\n    state: LayoutSimulationState,\n  ): LayoutSimulationState {\n    const lineLayouts = this.computeParagraphLayout(\n      paragraph,\n      this.config.columnWidth,\n      this.config.displayLyricsOnly,\n    );\n    const counts = this.computeLineTypeCounts(lineLayouts);\n    if (this.shouldSkipParagraphLayout(counts)) {\n      return state;\n    }\n    const adjustedLayouts = this.adjustParagraphLayouts(\n      lineLayouts,\n      state,\n      counts.chordLyricLineCount,\n    );\n    const updatedState = this.calculateNextSimulationState(adjustedLayouts, state);\n    this.addParagraphLayout(layouts, paragraph, adjustedLayouts);\n    return updatedState;\n  }\n\n  private computeLineTypeCounts(lineLayouts: LineLayout[][]): LineTypeCounts {\n    let chordLyricLineCount = 0;\n    let nonLyricLineCount = 0;\n\n    lineLayouts.forEach((lines) => {\n      lines.forEach((layout) => {\n        if (layout.type === 'ChordLyricsPair') {\n          chordLyricLineCount += 1;\n        } else if (layout.type === 'Comment' || layout.type === 'SectionLabel') {\n          nonLyricLineCount += 1;\n        }\n      });\n    });\n\n    return { chordLyricLineCount, nonLyricLineCount };\n  }\n\n  private shouldSkipParagraphLayout(counts: LineTypeCounts): boolean {\n    const lyricsOnly = Boolean(this.config.displayLyricsOnly);\n    return lyricsOnly &&\n      counts.nonLyricLineCount === 1 &&\n      counts.chordLyricLineCount === 0;\n  }\n\n  private adjustParagraphLayouts(\n    lineLayouts: LineLayout[][],\n    state: LayoutSimulationState,\n    chordLyricLineCount: number,\n  ): LineLayout[][] {\n    const totalHeight = calculateTotalHeight(lineLayouts);\n\n    if (state.currentY + totalHeight <= this.config.columnBottomY) {\n      return lineLayouts;\n    }\n\n    return this.paragraphSplitter.splitParagraph(\n      lineLayouts,\n      state.currentY,\n      this.config.minY,\n      this.config.columnBottomY,\n      chordLyricLineCount,\n    );\n  }\n\n  private calculateNextSimulationState(\n    layouts: LineLayout[][],\n    state: LayoutSimulationState,\n  ): LayoutSimulationState {\n    let { currentY, currentColumn } = state;\n\n    layouts.forEach((lines) => {\n      if (isColumnBreakLayout(lines)) {\n        currentColumn += 1;\n        if (currentColumn > (this.config.columnCount || 1)) {\n          currentColumn = 1;\n        }\n        currentY = this.config.minY;\n      } else {\n        const linesHeight = lines.reduce((sum, line) => sum + line.lineHeight, 0);\n        currentY += linesHeight;\n      }\n    });\n\n    currentY += this.config.paragraphSpacing;\n\n    return {\n      currentY,\n      currentColumn,\n    };\n  }\n\n  private addParagraphLayout(\n    layouts: ParagraphLayoutResult[],\n    paragraph: Paragraph,\n    units: LineLayout[][],\n  ): void {\n    layouts.push({\n      units,\n      addSpacing: true,\n      sectionType: paragraph.type,\n    });\n  }\n\n  /**\n   * Compute layout for a single paragraph\n   */\n  private computeParagraphLayout(\n    paragraph: Paragraph,\n    availableWidth: number,\n    lyricsOnly = false,\n  ): LineLayout[][] {\n    const paragraphLineLayouts: LineLayout[][] = [];\n\n    paragraph.lines.forEach((line) => {\n      if (lineHasContents(line)) {\n        // Delegate to LineBreaker\n        const lineLayouts = this.lineBreaker.breakLineIntoLayouts(line, availableWidth, lyricsOnly);\n        paragraphLineLayouts.push(lineLayouts);\n      }\n    });\n\n    return paragraphLineLayouts;\n  }\n}\n","// Main components\nexport { LayoutEngine } from './layout_engine';\nexport { ItemProcessor } from './item_processor';\nexport { LayoutFactory } from './layout_factory';\nexport { LineBreaker } from './line_breaker';\n\n// Helpers and utilities\nexport * from './layout_helpers';\n\n// Types\nexport {\n  BreakPoint,\n  MeasuredItem,\n  LineLayout,\n  // ParagraphLayout,\n  // SongLayout,\n  LayoutConfig,\n  ParagraphLayoutResult,\n} from './types';\n\n// Paragraph splitter\nexport { ParagraphSplitter } from './paragraph_splitter';\n","import Dimensions from '../layout/engine/dimensions';\nimport Line from '../chord_sheet/line';\nimport Song from '../chord_sheet/song';\nimport { ChordLyricsPair, SoftLineBreak, Tag } from '../index';\nimport { LineLayout, MeasuredItem } from '../layout/engine';\nimport { isColumnBreak, isComment, renderChord } from '../template_helpers';\n\nimport {\n  FontConfiguration,\n  LayoutItem,\n  MeasurementBasedFormatterConfiguration,\n} from '../formatter/configuration';\n\n/**\n * Interface representing paragraph layouts from the layout engine\n */\nexport interface ParagraphLayout {\n  units: LineLayout[][];\n  addSpacing: boolean;\n  sectionType: string;\n}\n\n/**\n * PositionedElement represents an element with absolute positioning\n */\nexport interface PositionedElement {\n  x: number;\n  y: number;\n  width: number;\n  height: number;\n  content: any;\n  type: string;\n  style?: any;\n  page: number;\n  column: number;\n}\n\n/**\n * Abstract renderer class for absolute-positioned rendering\n */\nabstract class Renderer {\n  protected song: Song;\n\n  protected startTime = 0;\n\n  protected renderTime = 0;\n\n  // Absolute positioning coordinates\n  protected x = 0;\n\n  protected y = 0;\n\n  protected currentColumn = 1;\n\n  // Column/page management\n  protected elements: PositionedElement[] = [];\n\n  protected currentPage = 1;\n\n  constructor(song: Song) {\n    this.song = song;\n    this.startTime = performance.now();\n  }\n\n  //\n  // PUBLIC API - Methods that formatters will call\n  //\n\n  /**\n   * Initialize the renderer with the song\n   */\n  initialize(): void {\n    this.x = this.getMinX();\n    this.y = this.getMinY();\n    this.currentColumn = 1;\n    this.currentPage = 1;\n    this.elements = [];\n    this.initializeBackend();\n  }\n\n  /**\n   * Main render method - the only method that formatters should call\n   * @param paragraphLayouts The layouts to render\n   * @param config Additional configuration options\n   */\n  render(paragraphLayouts: ParagraphLayout[], _config?: any): void {\n    this.initialize();\n\n    // Render the main content\n    this.renderParagraphs(paragraphLayouts);\n\n    // Render supplementary content\n    this.renderChordDiagrams();\n\n    // Render headers and footers\n    this.renderHeadersAndFooters();\n\n    // Finalize the rendering (commit elements to output)\n    this.finalizeRendering();\n\n    // Record rendering time\n    this.recordRenderingTime();\n  }\n\n  /**\n   * Get the bottom Y position available for content\n   */\n  getContentBottomY(): number {\n    return this.getColumnBottomY();\n  }\n\n  /**\n   * Get metadata about the rendered document\n   */\n  abstract getDocumentMetadata(): Record<string, any>;\n\n  /**\n   * Get the font configuration for a specific object type\n   */\n  abstract getFontConfiguration(objectType: string): FontConfiguration;\n\n  /**\n   * Get the current rendering time in seconds\n   */\n  getRenderTime(): number {\n    return this.renderTime;\n  }\n\n  //\n  // PROTECTED METHODS - Core rendering logic for absolute positioned elements\n  //\n\n  /**\n   * Renders all paragraph layouts\n   */\n  protected renderParagraphs(paragraphLayouts: ParagraphLayout[]): void {\n    paragraphLayouts.forEach((layout) => {\n      layout.units.forEach((lines) => {\n        this.renderLines(lines);\n      });\n\n      if (layout.addSpacing) {\n        this.y += this.getParagraphSpacing();\n      }\n    });\n  }\n\n  /**\n   * Render lines of content with chords, lyrics, and other elements\n   */\n  protected renderLines(lines: LineLayout[]): void {\n    lines.forEach((lineLayout) => {\n      this.renderLineLayout(lineLayout);\n    });\n  }\n\n  private renderLineLayout(lineLayout: LineLayout) {\n    const { items, lineHeight, line } = lineLayout;\n\n    // Filter items that are column breaks and handle them first\n    if (this.hasColumnBreak(lineLayout)) {\n      this.moveToNextColumn();\n      return; // Skip to the next iteration of lines\n    }\n\n    // Check if the line will fit in the current column\n    if (this.y + lineHeight > this.getColumnBottomY()) {\n      this.moveToNextColumn();\n    }\n\n    const yOffset = this.y;\n    const { chordsYOffset, lyricsYOffset } = this.calculateChordLyricYOffsets(items, yOffset);\n\n    let currentX = this.x;\n\n    // Process each item in the line\n    items.forEach((measuredItem) => {\n      const { item, width } = measuredItem;\n      this.renderItem(item, line, currentX, chordsYOffset, lyricsYOffset, items, yOffset);\n      currentX += width;\n    });\n\n    // Update the vertical position after rendering the line\n    this.y += lineHeight;\n\n    // Reset x to the left margin for the next line\n    this.x = this.getColumnStartX();\n  }\n\n  protected hasColumnBreak(lineLayout: LineLayout) {\n    const { items } = lineLayout;\n\n    return items.length === 1 && items[0].item instanceof Tag && isColumnBreak(items[0].item);\n  }\n\n  private renderItem(\n    item: ChordLyricsPair | Tag | SoftLineBreak | null,\n    line: Line,\n    currentX: number,\n    chordsYOffset: number,\n    lyricsYOffset: number,\n    items: MeasuredItem[],\n    yOffset: number,\n  ) {\n    if (item instanceof ChordLyricsPair) {\n      this.renderChordLyricsPair(item, line, currentX, chordsYOffset, lyricsYOffset, items);\n    } else if (item instanceof Tag) {\n      if (item.isSectionDelimiter()) {\n        this.addSectionLabel(item.label, currentX, yOffset);\n      } else if (isComment(item)) {\n        this.addComment(item.value, currentX, yOffset);\n      }\n    } else if (item instanceof SoftLineBreak) {\n      this.addTextElement(item.content, currentX, lyricsYOffset, 'lyrics');\n    }\n  }\n\n  private renderChordLyricsPair(\n    item: ChordLyricsPair,\n    line: Line,\n    currentX: number,\n    chordsYOffset: number,\n    lyricsYOffset: number,\n    items: MeasuredItem[],\n  ) {\n    let { chords } = item;\n    const { lyrics } = item;\n\n    if (chords) {\n      chords = this.processChords(chords, line);\n    }\n\n    // Add chord element if not lyrics-only mode\n    if (!this.isLyricsOnly() && chords) {\n      const chordBaseline = this.calculateChordBaseline(chordsYOffset, items, chords);\n      this.addTextElement(chords, currentX, chordBaseline, 'chord');\n    }\n\n    // Always add lyrics if present\n    if (lyrics && lyrics.trim() !== '') {\n      this.addTextElement(lyrics, currentX, lyricsYOffset, 'lyrics');\n    }\n  }\n\n  /**\n   * Move to the next column or page\n   */\n  protected moveToNextColumn(): void {\n    this.currentColumn += 1;\n\n    if (this.currentColumn > this.getColumnCount()) {\n      this.startNewPage();\n      this.currentColumn = 1;\n    }\n\n    this.x = this.getColumnStartX();\n    this.y = this.getMinY();\n  }\n\n  /**\n   * Start a new page\n   */\n  protected startNewPage(): void {\n    this.currentPage += 1;\n    this.createNewPage();\n  }\n\n  /**\n   * Calculate chord and lyrics Y offsets based on the line content\n   */\n  protected calculateChordLyricYOffsets(\n    items: MeasuredItem[],\n    yOffset: number,\n  ): { chordsYOffset: number; lyricsYOffset: number } {\n    // Determine line types\n    const hasChords = items.some(({ item }) => item instanceof ChordLyricsPair && item.chords);\n    const hasLyrics = items.some(\n      ({ item }) => item instanceof ChordLyricsPair && item.hasLyrics(),\n    );\n\n    let chordsYOffset = yOffset;\n    let lyricsYOffset = yOffset;\n    const chordLyricSpacing = this.getChordLyricSpacing();\n\n    if (hasChords && hasLyrics) {\n      chordsYOffset = yOffset;\n      lyricsYOffset = chordsYOffset + this.getMaxChordHeight(items) + chordLyricSpacing;\n    } else if (hasChords && !hasLyrics) {\n      chordsYOffset = yOffset;\n    } else if (!hasChords && hasLyrics) {\n      lyricsYOffset = yOffset;\n    }\n\n    return { chordsYOffset, lyricsYOffset };\n  }\n\n  /**\n   * Get the maximum chord height for a line\n   */\n  protected getMaxChordHeight(items: MeasuredItem[]): number {\n    return items.reduce((maxHeight, { chordHeight }) => Math.max(maxHeight, chordHeight || 0), 0);\n  }\n\n  /**\n   * Process chords for display (handle modifiers, normalization)\n   */\n  protected processChords(chords: string, line: Line): string {\n    return renderChord(\n      chords,\n      line,\n      this.song,\n      {\n        renderKey: null,\n        useUnicodeModifier: this.useUnicodeModifiers(),\n        normalizeChords: this.normalizeChords(),\n        decapo: this.getConfiguration().decapo,\n      },\n    );\n  }\n\n  /**\n   * Add a text element to the elements array\n   */\n  protected addTextElement(text: string, x: number, y: number, type: string): void {\n    const font = this.getFontForType(type);\n    const { width, height } = this.measureText(text, font);\n\n    this.elements.push({\n      x,\n      y,\n      width,\n      height,\n      content: text,\n      type,\n      style: font,\n      page: this.currentPage,\n      column: this.currentColumn,\n    });\n  }\n\n  /**\n   * Add a section label element\n   */\n  protected addSectionLabel(label: string, x: number, y: number): void {\n    this.addTextElement(label, x, y, 'sectionLabel');\n  }\n\n  /**\n   * Add a comment element\n   */\n  protected addComment(comment: string, x: number, y: number): void {\n    this.addTextElement(comment, x, y, 'comment');\n  }\n\n  /**\n   * Get the font configuration for a specific element type\n   */\n  protected getFontForType(type: string): FontConfiguration {\n    switch (type) {\n      case 'chord':\n        return this.getFontConfiguration('chord');\n      case 'lyrics':\n        return this.getFontConfiguration('text');\n      case 'sectionLabel':\n        return this.getFontConfiguration('sectionLabel');\n      case 'comment':\n        return this.getFontConfiguration('comment');\n      default:\n        return this.getFontConfiguration('text');\n    }\n  }\n\n  /**\n   * Get the total number of pages in the document\n   */\n  protected getTotalPages(): number {\n    return this.currentPage;\n  }\n\n  /**\n   * Get the starting X position for the current column\n   */\n  protected getColumnStartX(): number {\n    const marginLeft = this.getLeftMargin();\n    const columnWidth = this.getColumnWidth();\n    const columnSpacing = this.getColumnSpacing();\n\n    return marginLeft + (this.currentColumn - 1) * (columnWidth + columnSpacing);\n  }\n\n  /**\n   * Get the bottom Y position for the current column\n   */\n  protected getColumnBottomY(): number {\n    return this.getPageHeight() - this.getBottomMargin() - this.getFooterHeight();\n  }\n\n  /**\n   * Get the width of a column\n   */\n  protected getColumnWidth(): number {\n    const availableWidth = this.getPageWidth() - this.getLeftMargin() - this.getRightMargin();\n    const columnCount = this.getColumnCount();\n    const columnSpacing = this.getColumnSpacing();\n\n    return (availableWidth - (columnCount - 1) * columnSpacing) / columnCount;\n  }\n\n  /**\n   * Get the minimum X coordinate (left margin)\n   */\n  protected getMinX(): number {\n    return this.getLeftMargin();\n  }\n\n  /**\n   * Get the minimum Y coordinate (top margin + header)\n   */\n  protected getMinY(): number {\n    return this.getTopMargin() + this.getHeaderHeight();\n  }\n\n  /**\n   * Record the rendering time\n   */\n  protected recordRenderingTime(): void {\n    const endTime = performance.now();\n    this.renderTime = (endTime - this.startTime) / 1000;\n  }\n\n  /**\n   * Get the elements for a specific page\n   */\n  protected getElementsForPage(page: number): PositionedElement[] {\n    return this.elements.filter((element) => element.page === page);\n  }\n\n  //\n  // ABSTRACT METHODS - Must be implemented by concrete renderers\n  //\n\n  /**\n   * Initialize the backend rendering system\n   */\n  protected abstract initializeBackend(): void;\n\n  /**\n   * Create a new page in the backend\n   */\n  protected abstract createNewPage(): void;\n\n  /**\n   * Render chord diagrams\n   */\n  protected abstract renderChordDiagrams(): void;\n\n  /**\n   * Render headers and footers\n   */\n  protected abstract renderHeadersAndFooters(): void;\n\n  /**\n   * Measure text with the given font\n   */\n  protected abstract measureText(text: string, font: FontConfiguration): { width: number; height: number };\n\n  /**\n   * Calculate chord baseline position\n   */\n  protected abstract calculateChordBaseline(yOffset: number, items: MeasuredItem[], chordText: string): number;\n\n  /**\n   * Finalize the rendering process\n   */\n  protected abstract finalizeRendering(): void;\n\n  //\n  // ABSTRACT ACCESSORS - Must be provided by concrete renderers\n  //\n\n  /**\n   * Get the renderer configuration\n   */\n  protected abstract getConfiguration(): MeasurementBasedFormatterConfiguration | any;\n\n  /**\n   * Get the dimensions object for layout calculations\n   */\n  protected abstract get dimensions(): Dimensions;\n\n  /**\n   * Get the page size from the document wrapper\n   */\n  protected abstract getDocPageSize(): { width: number; height: number };\n\n  /**\n   * Get the layout configuration\n   */\n  protected getLayout(): MeasurementBasedFormatterConfiguration['layout'] {\n    return this.getConfiguration().layout;\n  }\n\n  /**\n   * Get the header configuration\n   */\n  protected getHeaderConfig(): LayoutItem | undefined {\n    return this.getLayout().header;\n  }\n\n  /**\n   * Get the footer configuration\n   */\n  protected getFooterConfig(): LayoutItem | undefined {\n    return this.getLayout().footer;\n  }\n\n  //\n  // CONFIGURATION GETTERS - Common implementations using dimensions\n  //\n\n  /**\n   * Get the page width\n   */\n  protected getPageWidth(): number {\n    return this.getDocPageSize().width;\n  }\n\n  /**\n   * Get the page height\n   */\n  protected getPageHeight(): number {\n    return this.getDocPageSize().height;\n  }\n\n  /**\n   * Get the left margin\n   */\n  protected getLeftMargin(): number {\n    return this.dimensions.margins.left;\n  }\n\n  /**\n   * Get the right margin\n   */\n  protected getRightMargin(): number {\n    return this.dimensions.margins.right;\n  }\n\n  /**\n   * Get the top margin\n   */\n  protected getTopMargin(): number {\n    return this.dimensions.margins.top;\n  }\n\n  /**\n   * Get the bottom margin\n   */\n  protected getBottomMargin(): number {\n    return this.dimensions.margins.bottom;\n  }\n\n  /**\n   * Get the header height\n   */\n  protected getHeaderHeight(): number {\n    return this.getHeaderConfig()?.height ?? 0;\n  }\n\n  /**\n   * Get the footer height\n   */\n  protected getFooterHeight(): number {\n    return this.getFooterConfig()?.height ?? 0;\n  }\n\n  /**\n   * Get the column count\n   */\n  protected getColumnCount(): number {\n    return this.dimensions.effectiveColumnCount;\n  }\n\n  /**\n   * Get the sections configuration with defaults\n   */\n  protected getSectionsConfig() {\n    const { sections } = this.getLayout();\n    if (!sections) {\n      throw new Error('Configuration must include sections');\n    }\n    return sections;\n  }\n\n  /**\n   * Get the column spacing\n   */\n  protected getColumnSpacing(): number {\n    return this.getSectionsConfig().global.columnSpacing;\n  }\n\n  /**\n   * Get the chord-to-lyrics spacing\n   */\n  protected getChordLyricSpacing(): number {\n    return this.getSectionsConfig().global.chordLyricSpacing;\n  }\n\n  /**\n   * Get the paragraph spacing\n   */\n  protected getParagraphSpacing(): number {\n    return this.getSectionsConfig().global.paragraphSpacing || 0;\n  }\n\n  /**\n   * Whether to use Unicode modifiers for chord rendering\n   */\n  protected useUnicodeModifiers(): boolean {\n    return this.getConfiguration().useUnicodeModifiers;\n  }\n\n  /**\n   * Whether to normalize chords\n   */\n  protected normalizeChords(): boolean {\n    return this.getConfiguration().normalizeChords;\n  }\n\n  /**\n   * Whether to render lyrics only (no chords)\n   */\n  protected isLyricsOnly(): boolean {\n    return !!this.getSectionsConfig()?.base?.display?.lyricsOnly;\n  }\n}\n\nexport default Renderer;\n","import { FontConfiguration } from '../../formatter/configuration';\nimport { PositionedElement } from '../renderer';\n\ndeclare type HTMLElement = any;\ndeclare type CSSStyleDeclaration = any;\n\n/**\n * Configuration for HTML element styling\n */\nexport interface HtmlStylerConfig {\n  cssClassPrefix?: string;\n  cssClasses?: Record<string, string>;\n}\n\n/**\n * Handles styling of HTML elements for the positioned HTML renderer.\n * Extracted to improve modularity and reduce file size.\n */\nexport class HtmlElementStyler {\n  private config: HtmlStylerConfig;\n\n  constructor(config: HtmlStylerConfig) {\n    this.config = config;\n  }\n\n  /**\n   * Gets the CSS class prefix\n   */\n  get prefix(): string {\n    return this.config.cssClassPrefix || 'chord-sheet-';\n  }\n\n  /**\n   * Applies styles to an HTML element based on its positioned element data\n   */\n  applyElementStyle(htmlElement: HTMLElement, element: PositionedElement): void {\n    const { style } = element;\n\n    if (!style) return;\n\n    const baseStyles = {\n      whiteSpace: 'pre',\n      lineHeight: style.lineHeight || 1,\n    };\n\n    const conditionalStyles = this.getConditionalStyles(style);\n    const typeSpecificStyles = this.getTypeSpecificStyles(element);\n\n    Object.assign(\n      htmlElement.style,\n      baseStyles,\n      conditionalStyles,\n      typeSpecificStyles,\n    );\n  }\n\n  /**\n   * Gets conditional CSS styles from font configuration\n   */\n  getConditionalStyles(style: FontConfiguration): Partial<CSSStyleDeclaration> {\n    const normalizedFontStyles = this.getNormalizedFontStyles(style);\n\n    return {\n      ...(style.name && { fontFamily: style.name }),\n      ...(style.size && { fontSize: `${style.size}px` }),\n      ...normalizedFontStyles,\n      ...(style.underline && { textDecoration: 'underline' }),\n      ...(style.textTransform && { textTransform: style.textTransform }),\n      ...(style.textDecoration && { textDecoration: style.textDecoration }),\n      ...(style.letterSpacing && { letterSpacing: style.letterSpacing }),\n    };\n  }\n\n  /**\n   * Gets type-specific styles for different element types\n   */\n  getTypeSpecificStyles(element: PositionedElement): Partial<CSSStyleDeclaration> {\n    switch (element.type) {\n      case 'chord':\n        return this.chordStyles(element);\n      case 'sectionLabel':\n        return { fontWeight: element.style?.weight || 'bold' };\n      case 'comment':\n        return {\n          fontStyle: element.style?.style || 'italic',\n          color: element.style?.color || '#666666',\n        };\n      default:\n        return {};\n    }\n  }\n\n  /**\n   * Gets chord-specific styles\n   */\n  chordStyles(element: PositionedElement): Partial<CSSStyleDeclaration> {\n    const { style } = element;\n    const contentIsRhythm = element.content === '|' || element.content === '/';\n    const chordStyles: Partial<CSSStyleDeclaration> = { color: style?.color || '#0066cc' };\n\n    if (contentIsRhythm && style?.weight && style.weight > 500) {\n      chordStyles.fontWeight = '500';\n    }\n\n    return chordStyles;\n  }\n\n  /**\n   * Applies font styles to an HTML element\n   */\n  applyFontStyle(element: HTMLElement, style: FontConfiguration): void {\n    const normalizedFontStyles = this.getNormalizedFontStyles(style);\n\n    const styles = {\n      whiteSpace: 'pre',\n      ...(style.name && { fontFamily: `${style.name}` }),\n      ...(style.size && { fontSize: `${style.size}px` }),\n      ...normalizedFontStyles,\n      ...(style.underline && { textDecoration: 'underline' }),\n      ...(style.lineHeight && { lineHeight: `${style.lineHeight}` }),\n    };\n\n    Object.assign(element.style, styles);\n  }\n\n  /**\n   * Applies ellipsis styling to an element\n   */\n  applyEllipsisStyle(element: HTMLElement, width: number): void {\n    Object.assign(element.style, {\n      whiteSpace: 'nowrap',\n      overflow: 'hidden',\n      textOverflow: 'ellipsis',\n      width: `${width}px`,\n    });\n  }\n\n  /**\n   * Creates a class name string with the configured prefix\n   */\n  createClassName(...classes: (string | undefined)[]): string {\n    return classes.filter((clazz) => clazz).join(' ');\n  }\n\n  /**\n   * Gets the custom CSS class for an element type if configured\n   */\n  getCustomClass(elementType: string): string | undefined {\n    return this.config.cssClasses?.[elementType];\n  }\n\n  private getNormalizedFontStyles(style: FontConfiguration): Partial<CSSStyleDeclaration> {\n    const fontWeight = style.weight ?? (style.style === 'bold' ? 'bold' : undefined);\n    const fontStyle = style.style && style.style !== 'bold' ? style.style : undefined;\n    const color = this.normalizeColor(style.color);\n\n    return {\n      ...(fontWeight && { fontWeight }),\n      ...(fontStyle && { fontStyle }),\n      ...(color && { color }),\n    };\n  }\n\n  private normalizeColor(color: FontConfiguration['color']): string | undefined {\n    if (typeof color === 'number') {\n      return `rgb(${color}, ${color}, ${color})`;\n    }\n\n    if (typeof color === 'string' && /^\\d+$/.test(color)) {\n      return `rgb(${color}, ${color}, ${color})`;\n    }\n\n    return color;\n  }\n}\n\nexport default HtmlElementStyler;\n","import { ConditionRule, ConditionalRule, SingleCondition } from '../../formatter/configuration';\n\nfunction isNumber(value: any): boolean {\n  return !Number.isNaN(parseInt(value, 10));\n}\n\nfunction toNumber(value: any): number {\n  return parseInt(value, 10);\n}\n\nclass Condition {\n  rule: ConditionalRule;\n\n  metadata: Record<string, any>;\n\n  constructor(rule: ConditionalRule, metadata: Record<string, any>) {\n    this.rule = rule;\n    this.metadata = metadata;\n  }\n\n  evaluate(): boolean {\n    if ('and' in this.rule && Array.isArray(this.rule.and)) {\n      return this.and(this.rule.and);\n    }\n\n    if ('or' in this.rule && Array.isArray(this.rule.or)) {\n      return this.or(this.rule.or);\n    }\n\n    const [field, rule]: [string, SingleCondition] = Object.entries(this.rule)[0];\n\n    if (!rule) {\n      return false;\n    }\n\n    const value = this.metadata[field];\n\n    return this.evaluateSingleCondition(value, field, rule);\n  }\n\n  private evaluateSingleCondition(value: any, field: string, rule: ConditionRule): boolean {\n    const methodMapping: Record<string, (value: any, field: string, rule: ConditionRule) => boolean> = {\n      'all': this.all,\n      'contains': this.contains,\n      'equals': this.equals,\n      'exists': this.exists,\n      'first': this.firstPage,\n      'greater_than': this.greaterThan,\n      'greater_than_equal': this.greaterThanEqual,\n      'in': this.in,\n      'last': this.lastPage,\n      'less_than': this.lessThan,\n      'less_than_equal': this.lessThanEqual,\n      'like': this.like,\n      'not_equals': this.notEquals,\n      'not_in': this.notIn,\n    };\n\n    const ruleName = Object.keys(methodMapping).find((name) => name in rule);\n\n    if (!ruleName) {\n      return false;\n    }\n\n    const method = methodMapping[ruleName];\n    return method.call(this, value, field, rule);\n  }\n\n  private all(value: any, _field: string, rule: ConditionRule): boolean {\n    return Array.isArray(value) &&\n      Array.isArray(rule.all) &&\n      rule.all.every((item: any) => value.includes(item));\n  }\n\n  private and(rule: SingleCondition[]): boolean {\n    return rule.every((subCondition: ConditionalRule) => new Condition(subCondition, this.metadata).evaluate());\n  }\n\n  private contains(value: any, _field: string, rule: ConditionRule): boolean {\n    return typeof value === 'string' &&\n      typeof rule.contains === 'string' &&\n      value.toLowerCase().includes(rule.contains.toLowerCase());\n  }\n\n  private equals(value: any, _field: string, rule: ConditionRule): boolean {\n    return value == rule.equals; // eslint-disable-line eqeqeq\n  }\n\n  private exists(value: any, _field: string, rule: ConditionRule): boolean {\n    return !!rule.exists && value !== undefined;\n  }\n\n  private firstPage(_value: any, field: string, rule: ConditionRule): boolean {\n    if (field !== 'page') {\n      throw new Error('First page condition must be on the page field');\n    }\n\n    return !!rule.first && this.metadata.page === 1;\n  }\n\n  private greaterThan(value: any, _field: string, rule: ConditionRule): boolean {\n    const greaterThan = rule.greater_than;\n\n    if (!isNumber(value)) {\n      return false;\n    }\n\n    return typeof greaterThan === 'number' && toNumber(value) > greaterThan;\n  }\n\n  private greaterThanEqual(value: any, _field: string, rule: ConditionRule): boolean {\n    const greaterThanEqual = rule.greater_than_equal;\n\n    if (!isNumber(value)) {\n      return false;\n    }\n\n    return typeof greaterThanEqual === 'number' && toNumber(value) >= greaterThanEqual;\n  }\n\n  private in(value: any, _field: string, rule: ConditionRule): boolean {\n    const inArray = rule.in;\n\n    return Array.isArray(inArray) && inArray.includes(value);\n  }\n\n  private lastPage(_value: any, field: string, rule: ConditionRule): boolean {\n    if (field !== 'page') {\n      throw new Error('Last page condition must be on the page field');\n    }\n\n    return !!rule.last && this.metadata.page === this.metadata.pages;\n  }\n\n  private lessThan(value: any, _field: string, rule: ConditionRule): boolean {\n    const lessThan = rule.less_than;\n\n    if (!isNumber(value)) {\n      return false;\n    }\n\n    return typeof lessThan === 'number' && toNumber(value) < lessThan;\n  }\n\n  private lessThanEqual(value: any, _field: string, rule: ConditionRule): boolean {\n    const lessThanEqual = rule.less_than_equal;\n\n    if (!isNumber(value)) {\n      return false;\n    }\n\n    return typeof lessThanEqual === 'number' && toNumber(value) <= lessThanEqual;\n  }\n\n  private like(value: any, _field: string, rule: ConditionRule): boolean {\n    const { like } = rule;\n\n    return typeof value === 'string' &&\n      typeof like === 'string' &&\n      value.toLowerCase().includes(like.toLowerCase());\n  }\n\n  private notEquals(value: any, _field: string, rule: ConditionRule): boolean {\n    return value != rule.not_equals; // eslint-disable-line eqeqeq\n  }\n\n  private notIn(value: any, _field: string, rule: ConditionRule): boolean {\n    return Array.isArray(rule.not_in) && !rule.not_in.includes(value);\n  }\n\n  private or(rule: ConditionalRule[]) {\n    return rule.some((subCondition: ConditionalRule) => new Condition(subCondition, this.metadata).evaluate());\n  }\n}\n\nexport default Condition;\n","import ChordLyricsPair from '../chord_sheet/chord_lyrics_pair';\nimport Formatter from './formatter';\nimport Item from '../chord_sheet/item';\nimport Line from '../chord_sheet/line';\nimport Metadata from '../chord_sheet/metadata';\nimport Paragraph from '../chord_sheet/paragraph';\nimport Song from '../chord_sheet/song';\nimport Tag from '../chord_sheet/tag';\n\nimport { renderChord } from '../helpers';\nimport { stripPangoMarkup } from '../pango/pango_helpers';\nimport { evaluate, hasTextContents, renderSection } from '../template_helpers';\nimport { hasRemarkContents, isEmptyString, padLeft } from '../utilities';\n\n/**\n * Formats a song into a plain text chord sheet\n */\nclass TextFormatter extends Formatter {\n  song: Song = new Song();\n\n  metadata: Metadata = new Metadata();\n\n  /**\n   * Formats a song into a plain text chord sheet\n   * @param {Song} song The song to be formatted\n   * @param {Metadata} metadata Optional override of metadata used for formatting\n   * @returns {string} the chord sheet\n   */\n  format(song: Song, metadata?: Metadata): string {\n    this.song = song;\n    this.metadata = metadata || song.getMetadata(this.configuration);\n\n    return [\n      this.formatHeader(),\n      this.formatParagraphs(),\n    ].join('');\n  }\n\n  formatHeader(): string {\n    const { title, subtitle } = this.song;\n    const separator = (title || subtitle) ? '\\n' : '';\n\n    return [\n      this.formatTitle(title),\n      this.formatSubTitle(subtitle),\n      separator,\n    ].join('');\n  }\n\n  formatParagraphs(): string {\n    const { bodyParagraphs, expandedBodyParagraphs } = this.song;\n    const { expandChorusDirective } = this.configuration;\n    const paragraphs = expandChorusDirective ? expandedBodyParagraphs : bodyParagraphs;\n\n    return this.song.filterParagraphs(paragraphs, this.configuration)\n      .map((paragraph: Paragraph) => this.formatParagraph(paragraph, this.metadata))\n      .join('\\n\\n');\n  }\n\n  formatParagraph(paragraph: Paragraph, metadata: Metadata): string {\n    if (paragraph.isLiteral()) {\n      return [paragraph.label, renderSection(paragraph, this.configuration)]\n        .filter((part) => part)\n        .join('\\n');\n    }\n\n    return paragraph.lines\n      .filter((line) => line.hasRenderableItems())\n      .map((line) => this.formatLine(line, metadata))\n      .join('\\n');\n  }\n\n  formatLine(line: Line, metadata: Metadata): string {\n    const parts = [\n      this.formatLineTop(line, metadata),\n      this.formatLineBottom(line, metadata),\n    ];\n\n    return parts\n      .filter((p) => !isEmptyString(p))\n      .map((part) => (part || '').trimEnd())\n      .join('\\n');\n  }\n\n  formatTitle(title: string | null): string {\n    if (title) {\n      return `${title.toUpperCase()}\\n`;\n    }\n\n    return '';\n  }\n\n  formatSubTitle(subtitle: string | null): string {\n    if (subtitle) {\n      return `${subtitle}\\n`;\n    }\n\n    return '';\n  }\n\n  formatLineTop(line: Line, metadata: Metadata): string | null {\n    if (hasRemarkContents(line)) {\n      return this.formatLineWithFormatter(line, this.formatItemTop, metadata);\n    }\n\n    return null;\n  }\n\n  chordLyricsPairLength(chordLyricsPair: ChordLyricsPair, line: Line): number {\n    const content = chordLyricsPair.annotation || this.renderChords(chordLyricsPair, line);\n    const { lyrics } = chordLyricsPair;\n    const contentLength = (content || '').length;\n    const lyricsLength = stripPangoMarkup(lyrics || '').length;\n\n    if (contentLength >= lyricsLength) {\n      return contentLength + 1;\n    }\n\n    return Math.max(contentLength, lyricsLength);\n  }\n\n  private renderChords(chordLyricsPair: ChordLyricsPair, line: Line) {\n    const chords = renderChord(\n      chordLyricsPair.chords,\n      line,\n      this.song,\n      {\n        renderKey: this.configuration.key,\n        useUnicodeModifier: this.configuration.useUnicodeModifiers,\n        normalizeChords: this.configuration.normalizeChords,\n        decapo: this.configuration.decapo,\n      },\n    );\n    return chords;\n  }\n\n  formatItemTop(item: Item, _metadata: Metadata, line: Line): string {\n    if (item instanceof Tag && item.isRenderable()) {\n      return item.label;\n    }\n\n    if (item instanceof ChordLyricsPair) {\n      const content = item.annotation || this.renderChords(item, line);\n      return padLeft(content, this.chordLyricsPairLength(item, line));\n    }\n\n    return '';\n  }\n\n  formatLineBottom(line: Line, metadata: Metadata): string {\n    if (hasTextContents(line)) {\n      return this.formatLineWithFormatter(line, this.formatItemBottom, metadata);\n    }\n\n    return '';\n  }\n\n  formatLineWithFormatter(\n    line: Line,\n    formatter: (_item: Item, _metadata: Metadata, _line: Line) => string,\n    metadata: Metadata,\n  ): string {\n    return line\n      .items\n      .map((item) => formatter.call(this, item, metadata, line))\n      .join('');\n  }\n\n  formatItemBottom(item: Item, metadata: Metadata, line: Line): string {\n    if (item instanceof Tag && item.isRenderable()) {\n      return item.label;\n    }\n\n    if (item instanceof ChordLyricsPair) {\n      return padLeft(stripPangoMarkup(item.lyrics || ''), this.chordLyricsPairLength(item, line));\n    }\n\n    if ('evaluate' in item) {\n      return evaluate(item, metadata, this.configuration);\n    }\n\n    return '';\n  }\n}\n\nexport default TextFormatter;\n","import type { ImageCompression } from 'jspdf';\n\nimport ChordProParser from '../../parser/chord_pro_parser';\nimport Condition from '../../layout/engine/condition';\nimport Metadata from '../../chord_sheet/metadata';\nimport TextFormatter from '../../formatter/text_formatter';\n\nimport {\n  Alignment,\n  ConditionalRule,\n  FontConfiguration,\n  LayoutContentItem,\n  LayoutContentItemWithImage,\n  LayoutContentItemWithLine,\n  LayoutContentItemWithText,\n  LayoutItem,\n  LayoutSection,\n  Margins,\n} from '../../formatter/configuration';\n\n/**\n * Backend abstraction for layout rendering operations.\n * Both PDF and HTML renderers implement this interface.\n */\nexport interface LayoutRenderingBackend {\n  pageSize: { width: number; height: number };\n  currentPage: number;\n  totalPages: number;\n\n  // Text operations\n  text(content: string, x: number, y: number): void;\n  getTextWidth(text: string, font?: FontConfiguration): number;\n  splitTextToSize(text: string, maxWidth: number, font?: FontConfiguration): string[];\n  setFontStyle(style: FontConfiguration): void;\n  setTextItem?(item: LayoutContentItemWithText): void;\n\n  // Element operations (HTML-specific, PDF uses text directly)\n  addElement?(element: any, x: number, y: number): void;\n\n  // Image operations\n  addImage(\n    src: string,\n    format: string,\n    x: number,\n    y: number,\n    width: number,\n    height: number,\n    alias?: string,\n    compression?: ImageCompression,\n    rotation?: number\n  ): void;\n\n  // Line operations\n  line(x1: number, y1: number, x2: number, y2: number): void;\n  setLineStyle(style: any): void;\n  resetDash(): void;\n  setDrawColor?(color: number): void;\n  setLineWidth?(width: number): void;\n}\n\n/**\n * Context for rendering layout sections (headers/footers)\n */\nexport interface LayoutRenderingContext {\n  metadata: Metadata;\n  margins: Margins;\n  extraMetadata: Record<string, string | string[]>;\n}\n\n/**\n * Renders layout sections (headers and footers) for both PDF and HTML backends.\n * This extracts the common layout rendering logic that was duplicated across renderers.\n */\nexport class LayoutSectionRenderer {\n  private backend: LayoutRenderingBackend;\n\n  private context: LayoutRenderingContext;\n\n  constructor(backend: LayoutRenderingBackend, context: LayoutRenderingContext) {\n    this.backend = backend;\n    this.context = context;\n  }\n\n  /**\n   * Renders a layout section (header or footer)\n   */\n  renderLayout(layoutConfig: LayoutItem, section: LayoutSection): void {\n    const { height } = layoutConfig;\n    const { height: pageHeight } = this.backend.pageSize;\n    const sectionY = section === 'header' ?\n      this.context.margins.top :\n      pageHeight - height - this.context.margins.bottom;\n\n    layoutConfig.content.forEach((contentItem) => {\n      const item = contentItem as LayoutContentItem;\n\n      if (this.shouldRenderContent(item)) {\n        if (item.type === 'text') {\n          this.renderTextItem(item as LayoutContentItemWithText, sectionY);\n        } else if (item.type === 'image') {\n          this.renderImage(item as LayoutContentItemWithImage, sectionY);\n        } else if (item.type === 'line') {\n          this.renderLine(item as LayoutContentItemWithLine, sectionY);\n        }\n      }\n    });\n  }\n\n  /**\n   * Determines if a content item should be rendered based on conditions\n   */\n  private shouldRenderContent(contentItem: LayoutContentItem): boolean {\n    if (!contentItem.condition) {\n      return true;\n    }\n\n    const { metadata: songMetadata, extraMetadata } = this.context;\n    const metadata = new Proxy({} as Record<string, any>, {\n      get: (_, prop: string) => {\n        const value = extraMetadata?.[prop] ?? songMetadata.get(prop);\n\n        if ((prop === 'page' || prop === 'pages' || prop === 'renderTime') && typeof value === 'string') {\n          const numericValue = Number(value);\n          if (!Number.isNaN(numericValue)) {\n            return numericValue;\n          }\n        }\n\n        return value;\n      },\n    });\n    return new Condition(contentItem.condition as ConditionalRule, metadata).evaluate();\n  }\n\n  /**\n   * Renders a text item\n   */\n  private renderTextItem(textItem: LayoutContentItemWithText, sectionY: number): void {\n    const {\n      value, template = '', style, position,\n    } = textItem;\n\n    const mergedMetadata = this.context.metadata.merge(this.context.extraMetadata);\n    const textValue = value || this.evaluateTemplate(template, mergedMetadata);\n\n    if (!textValue) {\n      return;\n    }\n\n    this.backend.setFontStyle(style);\n    const availableWidth = position.width || this.getAvailableWidth();\n    const y = sectionY + position.y;\n\n    if (position.clip) {\n      this.renderClippedText(textValue, textItem, availableWidth, y, style);\n    } else {\n      this.renderMultilineText(textValue, textItem, availableWidth, y, style);\n    }\n  }\n\n  /**\n   * Renders clipped text with optional ellipsis\n   */\n  private renderClippedText(\n    textValue: string,\n    textItem: LayoutContentItemWithText,\n    availableWidth: number,\n    y: number,\n    style: FontConfiguration,\n  ): void {\n    const { position } = textItem;\n    const clippedText = position.ellipsis ?\n      this.clipTextWithEllipsis(textValue, availableWidth, style) :\n      this.clipText(textValue, availableWidth, style);\n    const textWidth = this.backend.getTextWidth(clippedText, style);\n    const alignmentWidth = position.width ?? textWidth;\n    this.backend.setTextItem?.(textItem);\n    const x = this.calculateX(position.x, alignmentWidth, position.offsetX);\n    this.backend.text(clippedText, x, y);\n  }\n\n  /**\n   * Clips text with ellipsis if it exceeds the maximum width\n   */\n  private clipTextWithEllipsis(text: string, maxWidth: number, style: FontConfiguration): string {\n    let clipped = text;\n    while (this.backend.getTextWidth(`${clipped}...`, style) > maxWidth && clipped.length > 0) {\n      clipped = clipped.slice(0, -1);\n    }\n    return clipped !== text ? `${clipped}...` : text;\n  }\n\n  /**\n   * Clips text to fit within the maximum width\n   */\n  clipText(text: string, maxWidth: number, style?: FontConfiguration): string {\n    let clipped = text;\n    while (this.backend.getTextWidth(clipped, style) > maxWidth && clipped.length > 0) {\n      clipped = clipped.slice(0, -1);\n    }\n    return clipped;\n  }\n\n  /**\n   * Renders multiline text\n   */\n  private renderMultilineText(\n    textValue: string,\n    textItem: LayoutContentItemWithText,\n    availableWidth: number,\n    y: number,\n    style: FontConfiguration,\n  ): void {\n    const { position } = textItem;\n    const lines = this.backend.splitTextToSize(textValue, availableWidth, style);\n    let tempY = y;\n\n    lines.forEach((line: string) => {\n      const lineWidth = this.backend.getTextWidth(line, style);\n      const alignmentWidth = position.width ?? lineWidth;\n      this.backend.setTextItem?.(textItem);\n      const x = this.calculateX(position.x, alignmentWidth, position.offsetX);\n      this.backend.text(line, x, tempY);\n      tempY += style.size * (style.lineHeight ?? 1.2);\n    });\n  }\n\n  /**\n   * Renders an image\n   */\n  private renderImage(imageItem: LayoutContentItemWithImage, sectionY: number): void {\n    const {\n      src, position, size, alias, compression, rotation,\n    } = imageItem;\n\n    const x = this.calculateX(position.x, size.width, position.offsetX);\n    const y = sectionY + position.y;\n    const format = src.split('.').pop()?.toUpperCase() as string;\n\n    this.backend.addImage(src, format, x, y, size.width, size.height, alias, compression, rotation);\n  }\n\n  /**\n   * Renders a line\n   */\n  private renderLine(lineItem: LayoutContentItemWithLine, sectionY: number): void {\n    const { style, position } = lineItem;\n    this.backend.setLineStyle(style);\n\n    const x = this.context.margins.left + (position.x || 0);\n    const y = sectionY + position.y;\n    const lineWidth = position.width === 'auto' ? this.getAvailableWidth() : position.width;\n\n    this.backend.line(x, y, x + lineWidth, y + (position.height || 0));\n    this.backend.resetDash();\n  }\n\n  /**\n   * Evaluates a template with metadata\n   */\n  private evaluateTemplate(template: string, metadata: Metadata): string {\n    try {\n      const parsed = new ChordProParser().parse(template);\n      return new TextFormatter().format(parsed, metadata);\n    } catch (e) {\n      throw new Error(`Error evaluating template\\n\\n${template}\\n\\n: ${(e as Error).message}`, { cause: e });\n    }\n  }\n\n  /**\n   * Calculates the X position based on alignment\n   */\n  calculateX(alignment: Alignment | number, width = 0, offsetX = 0): number {\n    switch (alignment) {\n      case 'center':\n        return this.backend.pageSize.width / 2 - width / 2 + offsetX;\n      case 'right':\n        return this.backend.pageSize.width - this.context.margins.right - width + offsetX;\n      case 'left':\n      default:\n        if (typeof alignment === 'number') {\n          return this.context.margins.left + alignment + offsetX;\n        }\n        return this.context.margins.left + offsetX;\n    }\n  }\n\n  /**\n   * Gets the available width for content\n   */\n  private getAvailableWidth(): number {\n    return this.backend.pageSize.width - this.context.margins.left - this.context.margins.right;\n  }\n}\n\nexport default LayoutSectionRenderer;\n","import ChordLyricsPair from '../../chord_sheet/chord_lyrics_pair';\nimport Dimensions from '../../layout/engine/dimensions';\nimport HtmlDocWrapper from './html_doc_wrapper';\nimport HtmlElementStyler from './html_element_styler';\nimport Line from '../../chord_sheet/line';\nimport SoftLineBreak from '../../chord_sheet/soft_line_break';\nimport Song from '../../chord_sheet/song';\nimport Tag from '../../chord_sheet/tag';\nimport { getCapos } from '../../helpers';\nimport { isComment } from '../../template_helpers';\nimport { LineLayout, MeasuredItem } from '../../layout/engine';\n\nimport LayoutSectionRenderer, { LayoutRenderingBackend } from '../shared/layout_section_renderer';\nimport Renderer, { ParagraphLayout, PositionedElement } from '../renderer';\n\nimport {\n  FontConfiguration,\n  LayoutContentItemWithText,\n  LayoutItem,\n  LineStyle,\n  MeasuredHtmlFormatterConfiguration,\n} from '../../formatter/configuration';\n\ndeclare const document: any;\n\ninterface Bounds {\n  minX: number;\n  minY: number;\n  maxX: number;\n  maxY: number;\n}\n\n/**\n * HtmlRenderer renders a song as HTML with absolute positioning\n */\nclass PositionedHtmlRenderer extends Renderer {\n  private configuration: MeasuredHtmlFormatterConfiguration;\n\n  private currentLayoutFontStyle: FontConfiguration | null = null;\n\n  private currentLayoutSection: 'header' | 'footer' | null = null;\n\n  private currentLayoutTextItem: LayoutContentItemWithText | null = null;\n\n  private currentLineStyle: LineStyle | null = null;\n\n  private _dimensions: Dimensions | null = null;\n\n  private _dimensionCacheKey: string | null = null;\n\n  private styler: HtmlElementStyler;\n\n  container: HTMLElement;\n\n  doc: HtmlDocWrapper;\n\n  /**\n   * Creates a new HtmlRenderer\n   */\n  constructor(\n    song: Song,\n    container: HTMLElement,\n    configuration: MeasuredHtmlFormatterConfiguration,\n  ) {\n    super(song);\n    this.container = container;\n    this.configuration = configuration;\n    this.styler = new HtmlElementStyler({\n      cssClassPrefix: configuration.cssClassPrefix,\n      cssClasses: configuration.cssClasses,\n    });\n\n    if (!container) {\n      throw new Error('Container element is required');\n    }\n\n    this.doc = new HtmlDocWrapper(container, {\n      width: this.configuration.pageSize.width,\n      height: this.configuration.pageSize.height,\n    });\n  }\n\n  //\n  // PUBLIC API\n  //\n\n  getFontConfiguration(objectType: string): FontConfiguration {\n    return this.configuration.fonts[objectType];\n  }\n\n  getDocumentMetadata(): Record<string, any> {\n    return {\n      pageWidth: this.getPageWidth(),\n      pageHeight: this.getPageHeight(),\n      marginLeft: this.getLeftMargin(),\n      marginRight: this.getRightMargin(),\n      marginTop: this.getTopMargin(),\n      marginBottom: this.getBottomMargin(),\n      columnWidth: this.getColumnWidth(),\n      columnCount: this.getColumnCount(),\n      currentPage: this.doc.currentPage,\n      totalPages: this.doc.totalPages,\n      renderTime: this.renderTime,\n      dimensions: this.dimensions,\n    };\n  }\n\n  getDoc(): HtmlDocWrapper {\n    return this.doc;\n  }\n\n  getHTML(): HTMLElement {\n    return this.container;\n  }\n\n  dispose(): void {\n    if (this.doc) {\n      this.doc.dispose();\n    }\n  }\n\n  //\n  // ABSTRACT METHOD IMPLEMENTATIONS\n  //\n\n  protected initializeBackend(): void {\n    if (this.configuration.additionalCss) {\n      const styleElement = document.createElement('style');\n      styleElement.textContent = this.configuration.additionalCss;\n      document.head.appendChild(styleElement);\n    }\n  }\n\n  protected createNewPage(): void {\n    this.doc.newPage();\n  }\n\n  protected renderChordDiagrams(): void {\n    // eslint-disable-next-line no-console\n    console.log('Chord diagram rendering is stubbed out');\n  }\n\n  protected renderHeadersAndFooters(): void {\n    const headerConfig = this.getHeaderConfig();\n    const footerConfig = this.getFooterConfig();\n\n    if (headerConfig) {\n      this.renderLayoutForEachPage(headerConfig, 'header');\n    }\n\n    if (footerConfig) {\n      this.renderLayoutForEachPage(footerConfig, 'footer');\n    }\n\n    this.resetLayoutRenderingState();\n  }\n\n  private renderLayoutForEachPage(layoutConfig: LayoutItem, section: 'header' | 'footer'): void {\n    this.doc.eachPage((_page, index) => {\n      this.currentLayoutSection = section;\n      this.resetLayoutRenderingState(section);\n      this.createLayoutRenderer(index + 1, this.doc.totalPages).renderLayout(layoutConfig, section);\n    });\n  }\n\n  private resetLayoutRenderingState(section: 'header' | 'footer' | null = null): void {\n    this.currentLayoutSection = section;\n    this.currentLayoutFontStyle = null;\n    this.currentLayoutTextItem = null;\n    this.currentLineStyle = null;\n  }\n\n  private createLayoutRenderer(page: number, totalPages: number): LayoutSectionRenderer {\n    const backend = this.createLayoutBackend(page, totalPages);\n    return new LayoutSectionRenderer(backend, {\n      metadata: this.song.metadata,\n      margins: this.dimensions.margins,\n      extraMetadata: this.getExtraMetadata(page, totalPages),\n    });\n  }\n\n  private createLayoutBackend(page: number, totalPages: number): LayoutRenderingBackend {\n    return {\n      pageSize: this.doc.pageSize,\n      currentPage: page,\n      totalPages,\n      text: (content, x, y) => this.renderHtmlText(content, x, y),\n      getTextWidth: (text, font) => this.doc.getTextWidth(text, font!),\n      splitTextToSize: (text, maxWidth, font) => this.doc.splitTextToSize(text, maxWidth, font!),\n      setFontStyle: (style) => {\n        this.currentLayoutFontStyle = style;\n      },\n      setTextItem: (item) => {\n        this.currentLayoutTextItem = item;\n      },\n      addElement: (element, x, y) => this.doc.addElement(element, x, y),\n      addImage: (src, _format, x, y, width, height) => this.renderHtmlImage(src, x, y, width, height),\n      line: (x1, y1, x2, y2) => this.renderHtmlLine(x1, y1, x2, y2),\n      setLineStyle: (style) => {\n        this.currentLineStyle = style;\n      },\n      resetDash: () => { /* no-op for HTML */ },\n    };\n  }\n\n  private renderHtmlText(content: string, x: number, y: number): void {\n    const element = document.createElement('div');\n    element.className = `${this.styler.prefix}header-text`;\n    this.applyLayoutTextClasses(element);\n\n    element.textContent = content;\n    this.applyLayoutTextStyles(element);\n\n    this.doc.addElement(element, x, y);\n  }\n\n  private applyLayoutTextClasses(element: HTMLDivElement): void {\n    const sectionClass = this.currentLayoutSection ? this.styler.getCustomClass(this.currentLayoutSection) : undefined;\n    if (sectionClass) {\n      element.classList.add(sectionClass);\n    }\n\n    if (this.currentLayoutTextItem?.cssClass) {\n      element.classList.add(this.currentLayoutTextItem.cssClass);\n    }\n  }\n\n  private applyLayoutTextStyles(element: HTMLDivElement): void {\n    if (this.currentLayoutTextItem?.elementStyle) {\n      Object.assign(element.style, this.currentLayoutTextItem.elementStyle);\n    }\n\n    if (this.currentLayoutFontStyle) {\n      this.styler.applyFontStyle(element, this.currentLayoutFontStyle);\n    }\n  }\n\n  private renderHtmlImage(src: string, x: number, y: number, width: number, height: number): void {\n    const img = document.createElement('img');\n    img.className = `${this.styler.prefix}image`;\n    img.src = src;\n    img.style.width = `${width}px`;\n    img.style.height = `${height}px`;\n    this.doc.addElement(img, x, y);\n  }\n\n  private renderHtmlLine(x1: number, y1: number, x2: number, _y2: number): void {\n    const lineElement = document.createElement('div');\n    lineElement.className = `${this.styler.prefix}line`;\n    const lineStyle = this.currentLineStyle;\n    lineElement.style.width = `${x2 - x1}px`;\n    lineElement.style.height = '0';\n    lineElement.style.borderBottomWidth = `${lineStyle?.width ?? 1}px`;\n    lineElement.style.borderBottomStyle = lineStyle?.dash?.length ? 'dashed' : 'solid';\n    lineElement.style.borderBottomColor = lineStyle?.color ?? '#000000';\n    this.doc.addElement(lineElement, x1, y1);\n  }\n\n  protected renderParagraphs(paragraphLayouts: ParagraphLayout[]): void {\n    paragraphLayouts.forEach((layout, index) => {\n      this.renderParagraph(layout, index, paragraphLayouts);\n    });\n  }\n\n  private renderParagraph(layout: ParagraphLayout, paragraphIndex: number, paragraphLayouts: ParagraphLayout[]) {\n    const paragraphElements: PositionedElement[] = [];\n    const originalElements = this.elements;\n    this.elements = paragraphElements;\n\n    layout.units.forEach((lines) => {\n      this.renderLineItems(lines);\n    });\n\n    const groups = this.groupElementsByPageAndColumn(paragraphElements);\n\n    Object.values(groups).forEach((group, groupIndex) => {\n      this.renderElementGroup(group, paragraphIndex, groupIndex, layout);\n    });\n\n    if (layout.addSpacing && paragraphIndex < paragraphLayouts.length - 1) {\n      this.y += this.getParagraphSpacing();\n    }\n\n    this.x = this.getColumnStartX();\n    this.elements = originalElements;\n  }\n\n  private groupElementsByPageAndColumn(elements: PositionedElement[]): Record<string, PositionedElement[]> {\n    const groups: Record<string, PositionedElement[]> = {};\n    elements.forEach((el) => {\n      const key = `${el.page}-${el.column}`;\n      if (!groups[key]) groups[key] = [];\n      groups[key].push(el);\n    });\n    return groups;\n  }\n\n  protected renderLineItems(lines: LineLayout[]): void {\n    let ctx = { column: this.currentColumn, page: this.currentPage };\n    lines.forEach((lineLayout) => { ctx = this.renderSingleLine(lineLayout, ctx); });\n  }\n\n  private renderSingleLine(\n    lineLayout: LineLayout,\n    ctx: { column: number; page: number },\n  ): { column: number; page: number } {\n    if (this.hasColumnBreak(lineLayout)) {\n      this.moveToNextColumn();\n      return this.getCurrentContext();\n    }\n\n    const currentCtx = this.handleColumnOverflow(lineLayout.lineHeight, ctx);\n    this.renderLineContent(lineLayout, currentCtx);\n    return currentCtx;\n  }\n\n  private getCurrentContext(): { column: number; page: number } {\n    return { column: this.currentColumn, page: this.currentPage };\n  }\n\n  private handleColumnOverflow(\n    lineHeight: number,\n    ctx: { column: number; page: number },\n  ): { column: number; page: number } {\n    if (this.y + lineHeight > this.getColumnBottomY()) {\n      this.moveToNextColumn();\n      return this.getCurrentContext();\n    }\n    return ctx;\n  }\n\n  private renderLineContent(lineLayout: LineLayout, ctx: { column: number; page: number }): void {\n    const { items, lineHeight, line } = lineLayout;\n    const yOffset = this.y;\n    const { chordsYOffset, lyricsYOffset } = this.calculateChordLyricYOffsets(items, yOffset);\n\n    let currentX = this.x;\n    items.forEach((measuredItem) => {\n      this.renderMeasuredItem(measuredItem, currentX, yOffset, chordsYOffset, lyricsYOffset, items, line, ctx);\n      currentX += measuredItem.width;\n    });\n\n    this.y += lineHeight;\n    this.x = this.getColumnStartX();\n  }\n\n  private renderMeasuredItem(\n    measuredItem: MeasuredItem,\n    currentX: number,\n    yOffset: number,\n    chordsYOffset: number,\n    lyricsYOffset: number,\n    items: MeasuredItem[],\n    line: Line | null,\n    ctx: { column: number; page: number },\n  ): void {\n    const { item } = measuredItem;\n    if (item instanceof ChordLyricsPair) {\n      this.renderChordLyricsPairItem(item, currentX, chordsYOffset, lyricsYOffset, items, line as Line, ctx);\n    } else if (item instanceof Tag) {\n      this.renderTagItem(item, currentX, yOffset, ctx);\n    } else if (item instanceof SoftLineBreak) {\n      this.addTextElement(item.content, currentX, lyricsYOffset, 'lyrics');\n      this.updatePosition(ctx.column, ctx.page);\n    }\n  }\n\n  private renderChordLyricsPairItem(\n    item: ChordLyricsPair,\n    currentX: number,\n    chordsYOffset: number,\n    lyricsYOffset: number,\n    items: MeasuredItem[],\n    line: Line,\n    ctx: { column: number; page: number },\n  ): void {\n    let { chords } = item;\n    const { lyrics } = item;\n    if (chords) chords = this.processChords(chords, line);\n\n    if (!this.isLyricsOnly() && chords) {\n      const chordBaseline = this.calculateChordBaseline(chordsYOffset, items, chords);\n      this.addTextElement(chords, currentX, chordBaseline, 'chord');\n      this.updatePosition(ctx.column, ctx.page);\n    }\n\n    if (lyrics && lyrics.trim() !== '') {\n      this.addTextElement(lyrics, currentX, lyricsYOffset, 'lyrics');\n      this.updatePosition(ctx.column, ctx.page);\n    }\n  }\n\n  private renderTagItem(\n    item: Tag,\n    currentX: number,\n    yOffset: number,\n    ctx: { column: number; page: number },\n  ): void {\n    const isTitleSeparator = item.attributes.__titleSeparator === 'true';\n\n    if (item.isSectionDelimiter()) {\n      this.addSectionLabel(item.label, currentX, yOffset, { noUnderline: isTitleSeparator });\n      this.updatePosition(ctx.column, ctx.page);\n    } else if (isComment(item)) {\n      this.addComment(item.value, currentX, yOffset, { noUnderline: isTitleSeparator });\n      this.updatePosition(ctx.column, ctx.page);\n    }\n  }\n\n  private updatePosition(column: number, page: number) {\n    const lastElement = this.elements[this.elements.length - 1];\n    lastElement.column = column;\n    lastElement.page = page;\n  }\n\n  protected addSectionLabel(\n    label: string,\n    x: number,\n    y: number,\n    options: { noUnderline?: boolean } = {},\n  ): void {\n    this.addTextElementWithOptions(label, x, y, 'sectionLabel', options);\n  }\n\n  protected addComment(\n    comment: string,\n    x: number,\n    y: number,\n    options: { noUnderline?: boolean } = {},\n  ): void {\n    this.addTextElementWithOptions(comment, x, y, 'comment', options);\n  }\n\n  private addTextElementWithOptions(\n    text: string,\n    x: number,\n    y: number,\n    type: string,\n    options: { noUnderline?: boolean } = {},\n  ): void {\n    const font = this.getFontForType(type);\n    const { width, height } = this.measureText(text, font);\n    const style = options.noUnderline ? { ...font, underline: false } : font;\n\n    this.elements.push({\n      x,\n      y,\n      width,\n      height,\n      content: text,\n      type,\n      style,\n      page: this.currentPage,\n      column: this.currentColumn,\n    });\n  }\n\n  protected measureText(text: string, font: FontConfiguration): { width: number; height: number } {\n    const { w, h } = this.doc.getTextDimensions(text, font);\n    return { width: w, height: h };\n  }\n\n  protected calculateChordBaseline(yOffset: number, items: MeasuredItem[], chordText: string): number {\n    const chordFont = this.getFontConfiguration('chord');\n    const { height } = this.measureText(chordText, chordFont);\n    return yOffset + this.getMaxChordHeight(items) - height;\n  }\n\n  protected finalizeRendering(): void {\n    const pageCount = Math.max(this.currentPage, this.doc.totalPages);\n\n    while (this.doc.totalPages < pageCount) {\n      this.doc.createPage();\n    }\n\n    for (let page = 1; page <= pageCount; page += 1) {\n      const pageElements = this.getElementsForPage(page);\n      if (pageElements.length > 0) {\n        this.doc.setPage(page);\n        pageElements.forEach((element) => {\n          this.drawElement(element);\n        });\n      }\n    }\n  }\n\n  //\n  // ABSTRACT ACCESSOR IMPLEMENTATIONS\n  //\n\n  protected getConfiguration() {\n    return this.configuration;\n  }\n\n  public get dimensions(): Dimensions {\n    const currentKey = this.generateDimensionCacheKey();\n    if (this._dimensionCacheKey !== currentKey || this._dimensions === null) {\n      this._dimensions = this.buildDimensions();\n      this._dimensionCacheKey = currentKey;\n    }\n    return this._dimensions;\n  }\n\n  protected getDocPageSize(): { width: number; height: number } {\n    return this.doc.pageSize;\n  }\n\n  //\n  // PRIVATE HELPERS\n  //\n\n  private calculateBounds(group: PositionedElement[]): Bounds {\n    let minX = Number.MAX_VALUE;\n    let minY = Number.MAX_VALUE;\n    let maxX = Number.MIN_VALUE;\n    let maxY = Number.MIN_VALUE;\n\n    group.forEach((element) => {\n      minX = Math.min(minX, element.x);\n      minY = Math.min(minY, element.y);\n      maxX = Math.max(maxX, element.x + element.width);\n      maxY = Math.max(maxY, element.y + element.height);\n    });\n\n    return {\n      minX, minY, maxX, maxY,\n    };\n  }\n\n  private createParagraphDiv(bounds: Bounds, classes: (string | undefined)[]) {\n    const width = bounds.maxX - bounds.minX;\n    const height = bounds.maxY - bounds.minY;\n    const div = document.createElement('div');\n    div.className = this.styler.createClassName(...classes);\n\n    Object.assign(div.style, {\n      position: 'absolute',\n      left: `${bounds.minX}px`,\n      top: `${bounds.minY}px`,\n      width: `${width}px`,\n      height: `${height}px`,\n    });\n\n    return div;\n  }\n\n  private createElementGroupDiv(\n    x: number,\n    y: number,\n    content: string,\n    classes: (string | undefined)[],\n  ): HTMLElement {\n    const div = document.createElement('div');\n    div.className = this.styler.createClassName(...classes);\n\n    Object.assign(div.style, {\n      position: 'absolute',\n      left: `${x}px`,\n      top: `${y}px`,\n    });\n\n    div.textContent = content;\n    return div;\n  }\n\n  private renderElementGroup(\n    group: PositionedElement[],\n    paragraphIndex: number,\n    groupIndex: number,\n    layout: ParagraphLayout,\n  ) {\n    const { page } = group[0];\n    this.doc.setPage(page);\n\n    const bounds = this.calculateBounds(group);\n    const { prefix } = this.styler;\n\n    const paragraphDiv = this.createParagraphDiv(bounds, [\n      `${prefix}paragraph`,\n      `paragraph-${paragraphIndex}-${groupIndex}`,\n      `${prefix}${layout.sectionType}`,\n    ]);\n\n    group.forEach((element) => {\n      this.renderElement(element, bounds, paragraphDiv);\n    });\n\n    this.doc.addElement(paragraphDiv, bounds.minX, bounds.minY);\n  }\n\n  private renderElement(element: PositionedElement, bounds: Bounds, paragraphDiv: any) {\n    const { prefix } = this.styler;\n    const htmlElement = this.createElementGroupDiv(\n      element.x - bounds.minX,\n      element.y - bounds.minY,\n      element.content,\n      [\n        `${prefix}element ${prefix}${element.type}`,\n        this.styler.getCustomClass(element.type),\n      ],\n    );\n\n    this.styler.applyElementStyle(htmlElement, element);\n    paragraphDiv.appendChild(htmlElement);\n  }\n\n  private drawElement(element: PositionedElement): void {\n    switch (element.type) {\n      case 'chord':\n      case 'lyrics':\n      case 'sectionLabel':\n      case 'comment':\n        this.drawTextElement(element);\n        break;\n      default:\n        // eslint-disable-next-line no-console\n        console.warn(`Unknown element type: ${element.type}`);\n        break;\n    }\n  }\n\n  private drawTextElement(element: PositionedElement): void {\n    const htmlElement = document.createElement('div');\n    const { prefix } = this.styler;\n    htmlElement.className = `${prefix}element ${prefix}${element.type}`;\n\n    const customClass = this.styler.getCustomClass(element.type);\n    if (customClass) {\n      htmlElement.classList.add(customClass);\n    }\n\n    htmlElement.textContent = element.content;\n\n    if (element.style) {\n      this.styler.applyElementStyle(htmlElement, element);\n    }\n\n    this.doc.addElement(htmlElement, element.x, element.y);\n  }\n\n  private buildDimensions(): Dimensions {\n    const { width, height } = this.doc.pageSize;\n    const {\n      columnCount,\n      columnSpacing,\n      minColumnWidth,\n      maxColumnWidth,\n    } = this.configuration.layout.sections.global;\n\n    return new Dimensions(width, height, this.configuration.layout, {\n      columnCount,\n      columnSpacing,\n      minColumnWidth,\n      maxColumnWidth,\n    });\n  }\n\n  private generateDimensionCacheKey(): string {\n    const { width, height } = this.doc.pageSize;\n    const { layout } = this.configuration;\n    const { global } = layout.sections;\n\n    return [\n      width,\n      height,\n      layout.global.margins.left,\n      layout.global.margins.right,\n      layout.global.margins.top,\n      layout.global.margins.bottom,\n      layout.header?.height || 0,\n      global.columnCount,\n      global.columnSpacing,\n      global.minColumnWidth || 0,\n      global.maxColumnWidth || 0,\n    ].join('-');\n  }\n\n  protected getExtraMetadata(page: number, totalPages: number): Record<string, string | string[]> {\n    const baseMetadata: Record<string, string | string[]> = {\n      page: page.toString(),\n      pages: totalPages.toString(),\n      renderTime: this.renderTime.toString(),\n    };\n\n    const capo = this.song.metadata.getSingle('capo');\n    const key = this.song.metadata.getSingle('key');\n\n    if (capo && key) {\n      const capoInt = parseInt(capo, 10);\n      baseMetadata.capoKey = getCapos(key)[capoInt];\n    }\n\n    return baseMetadata;\n  }\n}\n\nexport default PositionedHtmlRenderer;\n","import { DomMeasurer } from '../layout/measurement';\nimport { MeasuredHtmlFormatterConfiguration } from './configuration';\nimport MeasurementBasedFormatter from './measurement_based_formatter';\nimport PositionedHtmlRenderer from '../rendering/html/positioned_html_renderer';\nimport Song from '../chord_sheet/song';\nimport { getMeasuredHtmlDefaultConfig } from './configuration/default_config_manager';\nimport { LayoutConfig, LayoutEngine } from '../layout/engine';\n\ndeclare type HTMLElement = any;\n\n/**\n * MeasuredHtmlFormatter formats a song into HTML with absolute positioning.\n */\nclass MeasuredHtmlFormatter extends MeasurementBasedFormatter<MeasuredHtmlFormatterConfiguration> {\n  private song: Song = new Song();\n\n  private renderer: PositionedHtmlRenderer | null = null;\n\n  private readonly container: HTMLElement;\n\n  /**\n   * Creates a new HTML formatter\n   * @param container The HTML container element to render into\n   */\n  constructor(container: HTMLElement) {\n    super();\n    this.container = container;\n  }\n\n  /**\n   * Get the default configuration for HTML formatter\n   */\n  protected getDefaultConfiguration(): MeasuredHtmlFormatterConfiguration {\n    return getMeasuredHtmlDefaultConfig();\n  }\n\n  /**\n   * Formats a song into HTML with absolute positioning.\n   * @param song - The song to format.\n   */\n  format(song: Song): void {\n    this.song = song;\n\n    // Clear the container\n    while (this.container.firstChild) {\n      this.container.removeChild(this.container.firstChild);\n    }\n\n    // Create the HTML renderer\n    this.renderer = new PositionedHtmlRenderer(\n      song,\n      this.container,\n      this.configuration,\n    );\n\n    // Initialize the renderer\n    this.renderer.initialize();\n\n    // Create the layout engine\n    const layoutEngine = this.createLayoutEngine();\n\n    // Compute paragraph layouts\n    const paragraphLayouts = layoutEngine.computeParagraphLayouts();\n\n    // Render everything with a single call\n    this.renderer.render(paragraphLayouts);\n  }\n\n  /**\n   * Create the layout engine with the appropriate configuration\n   */\n  // eslint-disable-next-line max-lines-per-function\n  private createLayoutEngine(): LayoutEngine {\n    if (!this.renderer) {\n      throw new Error('Renderer not initialized');\n    }\n\n    // Get dimensions and metadata from the renderer\n    const rendererMetadata = this.renderer.getDocumentMetadata();\n    const { dimensions } = rendererMetadata;\n\n    // Create the layout configuration\n    const layoutConfig: LayoutConfig = {\n      width: dimensions.columnWidth,\n      fonts: {\n        chord: this.configuration.fonts.chord,\n        lyrics: this.configuration.fonts.text,\n        comment: this.configuration.fonts.comment,\n        sectionLabel: this.configuration.fonts.sectionLabel,\n      },\n      chordSpacing: this.configuration.layout.sections.global.chordSpacing,\n      chordLyricSpacing: this.configuration.layout.sections.global.chordLyricSpacing,\n      linePadding: this.configuration.layout.sections.global.linePadding,\n      useUnicodeModifiers: this.configuration.useUnicodeModifiers,\n      normalizeChords: this.configuration.normalizeChords,\n\n      // Column and page layout information\n      minY: dimensions.minY,\n      columnWidth: dimensions.columnWidth,\n      columnCount: this.configuration.layout.sections.global.columnCount,\n      columnSpacing: this.configuration.layout.sections.global.columnSpacing,\n      minColumnWidth: this.configuration.layout.sections.global.minColumnWidth,\n      maxColumnWidth: this.configuration.layout.sections.global.maxColumnWidth,\n      paragraphSpacing: this.configuration.layout.sections.global.paragraphSpacing || 0,\n      columnBottomY: this.renderer.getContentBottomY(),\n      displayLyricsOnly: !!this.configuration.layout.sections?.base?.display?.lyricsOnly,\n      decapo: this.configuration.decapo,\n      repeatedSections: this.configuration.layout.sections?.base?.display?.repeatedSections,\n    };\n\n    // Return the layout engine\n    return new LayoutEngine(\n      this.song,\n      new DomMeasurer(),\n      layoutConfig,\n    );\n  }\n\n  /**\n   * Gets the HTML output\n   */\n  getHTML(): HTMLElement {\n    if (!this.renderer) {\n      throw new Error('Renderer not initialized');\n    }\n    return this.renderer.getHTML();\n  }\n\n  /**\n   * Generates HTML as a string\n   */\n  getHTMLString(): string {\n    if (!this.renderer) {\n      throw new Error('Renderer not initialized');\n    }\n    return this.renderer.getHTML().outerHTML;\n  }\n\n  /**\n   * Clean up resources when the formatter is no longer needed\n   */\n  dispose(): void {\n    if (this.renderer) {\n      this.renderer.dispose();\n      this.renderer = null;\n    }\n  }\n}\n\nexport default MeasuredHtmlFormatter;\n","import ChordSheetParser from './chord_sheet_parser';\nimport { buildVisualColumnMap } from './parser_helpers';\nimport Tag, { META_TAGS } from '../chord_sheet/tag';\n\nimport {\n  BRIDGE, CHORUS, NONE, PART, VERSE,\n} from '../constants';\n\nimport {\n  CAPO,\n  COMMENT,\n  END_OF_BRIDGE,\n  END_OF_CHORUS,\n  END_OF_PART,\n  END_OF_VERSE,\n  START_OF_BRIDGE,\n  START_OF_CHORUS,\n  START_OF_PART,\n  START_OF_VERSE,\n} from '../chord_sheet/tags';\n\nconst VERSE_LINE_REGEX = /^\\[(Verse.*)]/i;\nconst CHORUS_LINE_REGEX = /^\\[(Chorus.*)]/i;\nconst BRIDGE_LINE_REGEX = /^\\[(Bridge.*)]/i;\nconst PART_LINE_REGEX = /^\\[(Intro|Outro|Instrumental|Interlude|Solo|Pre-Chorus)( \\d+)?]/i;\nconst UG_METADATA_REGEX = /^(\\w+):\\s*(.+)$/;\nconst OTHER_METADATA_LINE_REGEX = /^\\[([^\\]]+)]/;\nconst REPEAT_NOTATION_REGEX = /\\s+(x\\d+)\\s*$/i;\n// eslint-disable-next-line max-len\nconst CHORD_LINE_REGEX = /^\\s*((([A-G|Do|Re|Mi|Fa|Sol|La|Si])(#|b)?([^/\\s]*)(\\/([A-G|Do|Re|Mi|Fa|Sol|La|Si])(#|b)?)?)(\\s|$)+)+(\\s|$)+/;\n\nconst startSectionTags: Record<string, string> = {\n  [VERSE]: START_OF_VERSE,\n  [CHORUS]: START_OF_CHORUS,\n  [BRIDGE]: START_OF_BRIDGE,\n  [PART]: START_OF_PART,\n};\n\nconst endSectionTags: Record<string, string> = {\n  [VERSE]: END_OF_VERSE,\n  [CHORUS]: END_OF_CHORUS,\n  [BRIDGE]: END_OF_BRIDGE,\n  [PART]: END_OF_PART,\n};\n\n/**\n * Parses an Ultimate Guitar chord sheet with metadata\n * Inherits from {@link ChordSheetParser}\n */\nclass UltimateGuitarParser extends ChordSheetParser {\n  currentSectionType: string | null = null;\n\n  pendingRepeatNotation: string | null = null;\n\n  /**\n   * Instantiate a chord sheet parser\n   * @param {Object} [options={}] options\n   * @param {boolean} [options.preserveWhitespace=true] whether to preserve trailing whitespace for chords\n   */\n  constructor({ preserveWhitespace = true }: { preserveWhitespace?: boolean } = {}) {\n    super({ preserveWhitespace }, false);\n  }\n\n  parseLine(line: string): void {\n    if (this.isSectionEnd()) {\n      this.endSection();\n    }\n\n    const { cleanLine, repeatNotation } = this.extractRepeatNotation(line);\n    this.pendingRepeatNotation = repeatNotation;\n\n    if (!(\n      this.parseVerseDirective(cleanLine) ||\n      this.parseChorusDirective(cleanLine) ||\n      this.parseBridgeDirective(cleanLine) ||\n      this.parsePartDirective(cleanLine) ||\n      this.parseUGMetadata(cleanLine) ||\n      this.parseMetadata(cleanLine)\n    )) {\n      this.parseRegularLine(cleanLine);\n    }\n  }\n\n  private parseRegularLine(line: string): void {\n    this.songLine = this.songBuilder.addLine();\n\n    if (line.trim().length === 0) {\n      this.chordLyricsPair = null;\n    } else {\n      this.parseNonEmptyLine(line);\n    }\n  }\n\n  parseNonEmptyLine(line: string): void {\n    if (!this.songLine) throw new Error('Expected this.songLine to be present');\n\n    this.chordLyricsPair = this.songLine.addChordLyricsPair();\n    const isChordLine = CHORD_LINE_REGEX.test(line);\n\n    if (isChordLine && this.hasNextLine()) {\n      this.parseChordLineWithNextLine(line);\n    } else if (isChordLine) {\n      this.parseChordsOnly(line);\n    } else {\n      this.chordLyricsPair.lyrics = `${line}`;\n    }\n  }\n\n  private parseChordLineWithNextLine(chordsLine: string): void {\n    const nextLine = this.readLine();\n\n    if (this.isNonLyricsLine(nextLine)) {\n      this.parseChordsOnly(chordsLine);\n      this.unreadLine();\n    } else {\n      this.parseLyricsWithChords(chordsLine, nextLine);\n    }\n  }\n\n  private unreadLine(): void {\n    this.currentLine -= 1;\n  }\n\n  private isNonLyricsLine(line: string): boolean {\n    return VERSE_LINE_REGEX.test(line) ||\n      CHORUS_LINE_REGEX.test(line) ||\n      BRIDGE_LINE_REGEX.test(line) ||\n      PART_LINE_REGEX.test(line) ||\n      OTHER_METADATA_LINE_REGEX.test(line) ||\n      CHORD_LINE_REGEX.test(line) ||\n      line.trim().length === 0;\n  }\n\n  private parseChordsOnly(chordsLine: string): void {\n    this.parseLyricsWithChords(chordsLine, '');\n    this.applyRepeatNotation();\n  }\n\n  parseLyricsWithChords(chordsLine: string, lyricsLine: string): void {\n    const consumedLyrics = this.processCharacters(chordsLine, lyricsLine);\n\n    if (!this.chordLyricsPair) throw new Error('Expected this.chordLyricsPair to be present');\n\n    this.chordLyricsPair.lyrics += lyricsLine.substring(consumedLyrics);\n    this.chordLyricsPair.chords = this.chordLyricsPair.chords.trim();\n\n    if (this.chordLyricsPair.lyrics) {\n      this.chordLyricsPair.lyrics = this.chordLyricsPair.lyrics.trim();\n    }\n\n    this.applyRepeatNotation();\n  }\n\n  processCharacters(chordsLine: string, lyricsLine: string): number {\n    const columnToLyricsIndex = buildVisualColumnMap(lyricsLine);\n    let lastLyricsIndex = -1;\n\n    for (let c = 0, charCount = chordsLine.length; c < charCount; c += 1) {\n      this.addCharacter(chordsLine[c], chordsLine[c + 1]);\n      lastLyricsIndex = this.mapLyricsCharacter(columnToLyricsIndex, c, lyricsLine, lastLyricsIndex);\n      this.processingText = !/\\s/.test(chordsLine[c]);\n    }\n\n    return lastLyricsIndex >= 0 ? lastLyricsIndex + 1 : 0;\n  }\n\n  addCharacter(chr: string, nextChar: string): void {\n    const isWhiteSpace = /\\s/.test(chr);\n\n    if (!isWhiteSpace) {\n      this.ensureChordLyricsPairInitialized();\n    }\n\n    if (!isWhiteSpace || this.shouldAddCharacterToChords(nextChar)) {\n      if (!this.chordLyricsPair) throw new Error('Expected this.chordLyricsPair to be present');\n      this.chordLyricsPair.chords += chr;\n    }\n  }\n\n  shouldAddCharacterToChords(nextChar: string): boolean {\n    return !!(nextChar && /\\s/.test(nextChar) && this.preserveWhitespace);\n  }\n\n  ensureChordLyricsPairInitialized(): void {\n    if (!this.processingText) {\n      if (!this.songLine) throw new Error('Expected this.songLine to be present');\n      this.chordLyricsPair = this.songLine.addChordLyricsPair();\n      this.processingText = true;\n    }\n  }\n\n  private extractRepeatNotation(line: string): { cleanLine: string; repeatNotation: string | null } {\n    const match = line.match(REPEAT_NOTATION_REGEX);\n    if (match) {\n      return {\n        cleanLine: line.replace(REPEAT_NOTATION_REGEX, ''),\n        repeatNotation: match[1],\n      };\n    }\n    return { cleanLine: line, repeatNotation: null };\n  }\n\n  private applyRepeatNotation(): void {\n    if (!this.pendingRepeatNotation || !this.songLine) return;\n\n    const lastItem = this.songLine.items[this.songLine.items.length - 1];\n    if (lastItem && 'lyrics' in lastItem) {\n      lastItem.lyrics = (lastItem.lyrics || '') + this.pendingRepeatNotation;\n    }\n    this.pendingRepeatNotation = null;\n  }\n\n  parseUGMetadata(line: string): boolean {\n    const match = line.match(UG_METADATA_REGEX);\n    if (!match) return false;\n\n    const tagName = match[1].toLowerCase();\n    if (!META_TAGS.includes(tagName)) return false;\n\n    const value = tagName === CAPO ? this.extractCapoValue(match[2]) : match[2].trim();\n    this.startNewLine();\n    this.songBuilder.addTag(new Tag(tagName, value));\n    return true;\n  }\n\n  private extractCapoValue(rawValue: string): string {\n    const [, capoNumber] = rawValue.match(/^(\\d+)/) || [];\n    return capoNumber || rawValue.trim();\n  }\n\n  parseVerseDirective(line: string): boolean {\n    const match = line.match(VERSE_LINE_REGEX);\n\n    if (!match) {\n      return false;\n    }\n\n    this.startNewLine();\n    const label = match[1];\n    this.startSection(VERSE, label);\n    return true;\n  }\n\n  parseChorusDirective(line: string): boolean {\n    const match = line.match(CHORUS_LINE_REGEX);\n\n    if (!match) {\n      return false;\n    }\n\n    this.startNewLine();\n    const label = match[1];\n    this.startSection(CHORUS, label);\n    return true;\n  }\n\n  parseBridgeDirective(line: string): boolean {\n    const match = line.match(BRIDGE_LINE_REGEX);\n\n    if (!match) {\n      return false;\n    }\n\n    this.startNewLine();\n    const label = match[1];\n    this.startSection(BRIDGE, label);\n    return true;\n  }\n\n  parsePartDirective(line: string): boolean {\n    const match = line.match(PART_LINE_REGEX);\n\n    if (!match) {\n      return false;\n    }\n\n    this.startNewLine();\n    const label = match[1] + (match[2] || '');\n    this.startSection(PART, label);\n    return true;\n  }\n\n  parseMetadata(line: string): boolean {\n    const match = line.match(OTHER_METADATA_LINE_REGEX);\n\n    if (!match) {\n      return false;\n    }\n\n    this.startNewLine();\n    this.endSection();\n    if (!this.songLine) throw new Error('Expected this.songLine to be present');\n\n    this.songLine.addTag(new Tag(COMMENT, match[1]));\n\n    return true;\n  }\n\n  isSectionEnd(): boolean {\n    return this.songLine !== null &&\n      this.songLine.isEmpty() &&\n      this.songBuilder.previousLine !== null &&\n      !this.songBuilder.previousLine.isEmpty();\n  }\n\n  endOfSong() {\n    super.endOfSong();\n    if (this.currentSectionType !== null && this.currentSectionType in endSectionTags) {\n      this.startNewLine();\n    }\n    this.endSection({ addNewLine: false });\n  }\n\n  startSection(sectionType: string, label: string) {\n    if (this.currentSectionType) {\n      this.endSection();\n    }\n\n    this.currentSectionType = sectionType;\n    this.songBuilder.setCurrentProperties(sectionType);\n\n    if (sectionType in startSectionTags) {\n      this.songBuilder.addTag(new Tag(startSectionTags[sectionType], label));\n    }\n  }\n\n  endSection({ addNewLine = true } = {}) {\n    if (this.currentSectionType !== null && this.currentSectionType in endSectionTags) {\n      if (this.songLine && this.songLine.isEmpty()) {\n        this.songLine.addTag(new Tag(endSectionTags[this.currentSectionType]));\n      } else {\n        const endTagLine = this.songBuilder.addLine();\n        endTagLine.addTag(new Tag(endSectionTags[this.currentSectionType]));\n      }\n\n      if (addNewLine) {\n        this.startNewLine();\n      }\n    }\n\n    this.songBuilder.setCurrentProperties(NONE);\n    this.currentSectionType = null;\n  }\n\n  startNewLine() {\n    this.songLine = this.songBuilder.addLine();\n  }\n}\n\nexport default UltimateGuitarParser;\n","export default '15.2.0';\n","import { mergeConfigs } from './utilities';\n\nimport {\n  configure,\n  getDefaultConfig,\n  getHTMLDefaultConfig,\n  getMeasuredHtmlDefaultConfig,\n  getPDFDefaultConfig,\n} from './formatter/configuration';\n\nexport {\n  configure,\n  getDefaultConfig,\n  getHTMLDefaultConfig,\n  getMeasuredHtmlDefaultConfig,\n  getPDFDefaultConfig,\n  mergeConfigs,\n};\n\nexport interface FormatterConfigurationHelpers {\n  configure: typeof configure;\n  getDefaultConfig: typeof getDefaultConfig;\n  getHTMLDefaultConfig: typeof getHTMLDefaultConfig;\n  getMeasuredHtmlDefaultConfig: typeof getMeasuredHtmlDefaultConfig;\n  getPDFDefaultConfig: typeof getPDFDefaultConfig;\n  mergeConfigs: typeof mergeConfigs;\n}\n\nexport const formatterConfiguration: FormatterConfigurationHelpers = {\n  configure,\n  getDefaultConfig,\n  getHTMLDefaultConfig,\n  getMeasuredHtmlDefaultConfig,\n  getPDFDefaultConfig,\n  mergeConfigs,\n};\n\nexport default formatterConfiguration;\n","import { getCapos, getKeys } from './helpers';\n\nexport { getCapos, getKeys };\n\nexport interface KeyHelpers {\n  getCapos: typeof getCapos;\n  getKeys: typeof getKeys;\n}\n\nexport const keyHelpers: KeyHelpers = {\n  getCapos,\n  getKeys,\n};\n\nexport default keyHelpers;\n","import Chord from './chord';\nimport ChordDefinition from './chord_definition/chord_definition';\nimport ChordLyricsPair from './chord_sheet/chord_lyrics_pair';\nimport ChordProFormatter from './formatter/chord_pro_formatter';\nimport ChordProParser from './parser/chord_pro_parser';\nimport ChordSheetParser from './parser/chord_sheet_parser';\nimport ChordSheetSerializer from './chord_sheet_serializer';\nimport ChordsOverWordsFormatter from './formatter/chords_over_words_formatter';\nimport ChordsOverWordsParser from './parser/chords_over_words_parser';\nimport Comment from './chord_sheet/comment';\nimport Composite from './chord_sheet/chord_pro/composite';\nimport HtmlDivFormatter from './formatter/html_div_formatter';\nimport HtmlTableFormatter from './formatter/html_table_formatter';\nimport Line from './chord_sheet/line';\nimport Literal from './chord_sheet/chord_pro/literal';\nimport MeasuredHtmlFormatter from './formatter/measured_html_formatter';\nimport Metadata from './chord_sheet/metadata';\nimport Paragraph from './chord_sheet/paragraph';\nimport SoftLineBreak from './chord_sheet/soft_line_break';\nimport Song from './chord_sheet/song';\nimport Tag from './chord_sheet/tag';\nimport Ternary from './chord_sheet/chord_pro/ternary';\nimport TextFormatter from './formatter/text_formatter';\nimport UltimateGuitarParser from './parser/ultimate_guitar_parser';\nimport version from './version';\n\nimport formatterConfiguration from './formatter_configuration';\nimport keyHelpers from './key_helpers';\n\nimport {\n  each,\n  evaluate,\n  fontStyleTag,\n  hasChordContents,\n  hasTextContents,\n  isChordLyricsPair,\n  isComment,\n  isEvaluatable,\n  isImage,\n  isTag,\n  lineClasses,\n  lineHasContents,\n  pangoToHtml,\n  paragraphClasses,\n  renderChord,\n  stripHTML,\n  stripPangoMarkup,\n  when,\n} from './template_helpers';\n\nimport {\n  CHORUS,\n  INDETERMINATE,\n  NONE,\n  PART,\n  TAB,\n  TEXTBLOCK,\n  VERSE,\n} from './constants';\n\nimport { BaseMeasurer } from './layout/measurement';\nimport { CanvasMeasurer } from './layout/measurement';\nimport { DomMeasurer } from './layout/measurement';\nimport { LayoutEngine } from './layout/engine';\n\nexport { default as Chord } from './chord';\nexport { default as ChordDefinition } from './chord_definition/chord_definition';\nexport { default as ChordLyricsPair } from './chord_sheet/chord_lyrics_pair';\nexport { default as ChordProFormatter } from './formatter/chord_pro_formatter';\nexport { default as MeasuredHtmlFormatter } from './formatter/measured_html_formatter';\nexport { default as ChordProParser } from './parser/chord_pro_parser';\nexport { default as ChordSheetParser } from './parser/chord_sheet_parser';\nexport { default as ChordSheetSerializer } from './chord_sheet_serializer';\nexport { default as ChordsOverWordsFormatter } from './formatter/chords_over_words_formatter';\nexport { default as ChordsOverWordsParser } from './parser/chords_over_words_parser';\nexport { default as Comment } from './chord_sheet/comment';\nexport { default as Composite } from './chord_sheet/chord_pro/composite';\nexport { default as Formatter } from './formatter/formatter';\nexport { default as HtmlDivFormatter } from './formatter/html_div_formatter';\nexport { default as HtmlFormatter } from './formatter/html_formatter';\nexport { default as HtmlTableFormatter } from './formatter/html_table_formatter';\nexport { default as Key } from './key';\nexport { default as Line } from './chord_sheet/line';\nexport { default as Literal } from './chord_sheet/chord_pro/literal';\nexport { default as Metadata } from './chord_sheet/metadata';\nexport { default as Paragraph } from './chord_sheet/paragraph';\nexport { default as SoftLineBreak } from './chord_sheet/soft_line_break';\nexport { default as Song } from './chord_sheet/song';\nexport { default as Tag } from './chord_sheet/tag';\nexport { default as Ternary } from './chord_sheet/chord_pro/ternary';\nexport { default as TextFormatter } from './formatter/text_formatter';\nexport { default as UltimateGuitarParser } from './parser/ultimate_guitar_parser';\nexport { default as templateHelpers } from './template_helpers';\nexport { default as version } from './version';\nexport { default as formatterConfiguration } from './formatter_configuration';\nexport { default as keyHelpers } from './key_helpers';\n\nexport { IMAGE } from './chord_sheet/tags';\nexport { defaultPangoRenderer, pangoToHtml, stripPangoMarkup } from './pango/pango_helpers';\nexport type { PangoRenderer } from './pango/pango_helpers';\n\nexport * from './serialized_types';\n\nexport { BaseMeasurer } from './layout/measurement/measurer';\nexport { DomMeasurer } from './layout/measurement';\nexport { CanvasMeasurer } from './layout/measurement';\nexport { LayoutEngine } from './layout/engine/layout_engine';\n\nexport {\n  ABC,\n  CHORUS,\n  INDETERMINATE,\n  LILYPOND,\n  NONE,\n  SVG,\n  NUMERIC,\n  SOLFEGE,\n  SYMBOL,\n  TAB,\n  TEXTBLOCK,\n  VERSE,\n  PART,\n  NUMERAL,\n} from './constants';\n\nexport default {\n  CHORUS,\n  Chord,\n  ChordDefinition,\n  ChordLyricsPair,\n  ChordProFormatter,\n  MeasuredHtmlFormatter,\n  ChordProParser,\n  ChordSheetParser,\n  ChordSheetSerializer,\n  ChordsOverWordsFormatter,\n  ChordsOverWordsParser,\n  Comment,\n  Composite,\n  HtmlDivFormatter,\n  HtmlTableFormatter,\n  INDETERMINATE,\n  Line,\n  Literal,\n  Metadata,\n  NONE,\n  Paragraph,\n  PART,\n  SoftLineBreak,\n  Song,\n  TAB,\n  TEXTBLOCK,\n  Tag,\n  Ternary,\n  TextFormatter,\n  UltimateGuitarParser,\n  VERSE,\n  BaseMeasurer,\n  DomMeasurer,\n  CanvasMeasurer,\n  LayoutEngine,\n  formatterConfiguration,\n  keyHelpers,\n  version,\n  templateHelpers: {\n    isEvaluatable,\n    isChordLyricsPair,\n    lineHasContents,\n    isTag,\n    isComment,\n    isImage,\n    stripHTML,\n    each,\n    when,\n    hasTextContents,\n    lineClasses,\n    paragraphClasses,\n    evaluate,\n    fontStyleTag,\n    renderChord,\n    hasChordContents,\n    pangoToHtml,\n    stripPangoMarkup,\n  },\n};\n","import type { ImageCompression } from 'jspdf';\n\nimport { ChordDiagramRenderingConfig } from '../../chord_diagram/chord_diagram';\nimport Item from '../../chord_sheet/item';\nimport { ParagraphType } from '../../constants';\nimport { BaseFormatterConfiguration, ConfigurationProperties } from './base_configuration';\n\nimport {\n  ChordLyricsPair,\n  Comment,\n  Line,\n  SoftLineBreak,\n  Tag,\n} from '../../index';\n\nexport interface Margins {\n  top: number;\n  bottom: number;\n  left: number;\n  right: number;\n}\n\n// Font and layout types\nexport type FontSection =\n  'title' |\n  'subtitle' |\n  'metadata' |\n  'text' |\n  'chord' |\n  'comment' |\n  'annotation' |\n  'sectionLabel';\n\nexport type LayoutSection = 'header' | 'footer';\nexport type Alignment = 'left' | 'center' | 'right' | number;\nexport type MeasurerType = 'canvas' | 'dom' | 'jspdf';\n\n// Condition rules for conditional rendering\nexport type ConditionRule = Partial<{\n  equals: any;\n  not_equals: any;\n  greater_than: number;\n  greater_than_equal: number;\n  less_than: number;\n  less_than_equal: number;\n  like: string;\n  contains: string;\n  in: any[];\n  not_in: any[];\n  all: any[];\n  exists: boolean;\n  first: boolean;\n  last: boolean;\n}>;\n\nexport type SingleCondition = Record<string, ConditionRule>;\n\nexport type ConditionalRule = Partial<{\n  and: SingleCondition[];\n  or: SingleCondition[];\n}> | SingleCondition;\n\n// Basic layout types\nexport interface Position {\n  x: Alignment,\n  y: number,\n  width?: number,\n  height?: number,\n  offsetX?: number,\n  clip?: boolean,\n  ellipsis?: boolean,\n}\n\nexport interface Dimension {\n  width: number,\n  height: number,\n}\n\n// Font configuration\nexport interface FontConfiguration {\n  name: string;\n  style: string;\n  weight?: string | number;\n  size: number;\n  lineHeight?: number;\n  color: string | number;\n  underline?: boolean;\n  inherit?: string;\n  textTransform?: string;\n  textDecoration?: string;\n  letterSpacing?: string;\n}\n\nexport type FontConfigurations = Record<FontSection, FontConfiguration>;\nexport type ChordDiagramFontConfigurations = Record<'title' | 'fingerings' | 'baseFret', FontConfiguration>;\n\nexport const defaultFontConfigurations: FontConfigurations = {\n  title: {\n    name: 'Helvetica',\n    style: 'bold',\n    size: 18,\n    color: '#000000',\n  },\n  subtitle: {\n    name: 'Helvetica',\n    style: 'normal',\n    size: 14,\n    color: '#000000',\n  },\n  chord: {\n    name: 'Helvetica',\n    style: 'bold',\n    size: 13,\n    color: '#000000',\n  },\n  comment: {\n    name: 'Helvetica',\n    style: 'italic',\n    size: 13,\n    color: '#666666',\n  },\n  metadata: {\n    name: 'Helvetica',\n    style: 'normal',\n    size: 11,\n    color: '#555555',\n  },\n  text: {\n    name: 'Helvetica',\n    style: 'normal',\n    size: 12,\n    color: '#000000',\n  },\n  annotation: {\n    name: 'Helvetica',\n    style: 'normal',\n    size: 10,\n    color: '#000000',\n  },\n  sectionLabel: {\n    name: 'Helvetica',\n    style: 'bold',\n    size: 14,\n    color: '#000000',\n  },\n};\n\n// Section display configuration\nexport interface SectionDisplay {\n  labelStyle?: 'uppercase';\n  showLabel?: boolean;\n  lyricsOnly?: boolean;\n  indent?: number;\n  compact?: boolean;\n  repeatedSections?: 'hide' | 'title_only' | 'lyrics_only' | 'full';\n}\n\nexport interface SectionTypeConfig {\n  fonts?: FontConfigurations;\n  display?: SectionDisplay;\n  overrides?: {\n    condition: ConditionalRule;\n    display: Partial<SectionDisplay>;\n  }[];\n}\n\n// Column configuration\nexport interface ColumnConfig {\n  columnCount?: number;\n  columnSpacing: number;\n  minColumnWidth?: number;\n  maxColumnWidth?: number;\n}\n\n// Sections configuration\nexport interface SectionsConfig {\n  global: {\n    columnWidth: number;\n    spacingBottom?: number;\n    spacingAfter?: number;\n    chordLyricSpacing: number;\n    linePadding: number;\n    paragraphSpacing?: number;\n    chordSpacing: number;\n  } & ColumnConfig;\n  base: SectionTypeConfig;\n  types?: Record<ParagraphType, SectionTypeConfig | undefined>;\n}\n\n// Layout content items\nexport interface ILayoutContentItem {\n  type: string,\n  position: Position,\n  condition?: ConditionalRule,\n}\n\nexport interface LayoutContentItemWithText extends ILayoutContentItem {\n  type: 'text',\n  style: FontConfiguration,\n  value?: string,\n  template?: string,\n  cssClass?: string,\n  elementStyle?: Record<string, string>,\n}\n\nexport interface LayoutContentItemWithValue extends LayoutContentItemWithText {\n  value: string,\n}\n\nexport interface LayoutContentItemWithTemplate extends LayoutContentItemWithText {\n  template: string,\n}\n\nexport interface LayoutContentItemWithImage extends ILayoutContentItem {\n  type: 'image',\n  src: string,\n  position: Position,\n  compression: ImageCompression,\n  size: Dimension,\n  alias?: string,\n  rotation?: number,\n}\n\nexport interface LineStyle {\n  color: string;\n  width: number;\n  dash?: number[];\n}\n\nexport interface LayoutContentItemWithLine {\n  type: 'line';\n  style: LineStyle;\n  position: {\n    x?: number;\n    y: number;\n    width: number | 'auto';\n    height?: number;\n  };\n  condition?: ConditionalRule;\n}\n\nexport type LayoutContentItem =\n  | LayoutContentItemWithValue\n  | LayoutContentItemWithTemplate\n  | LayoutContentItemWithImage\n  | LayoutContentItemWithLine;\n\nexport interface LayoutItem {\n  height: number,\n  content: LayoutContentItem[],\n}\n\n// Chord diagram configuration\nexport interface ChordDiagramOverrides {\n  hide?: boolean;\n  definition?: string;\n}\n\nexport interface ChordDiagramsConfig {\n  enabled: boolean;\n  renderingConfig?: ChordDiagramRenderingConfig;\n  definitions?: {\n    hiddenChords: string[];\n  };\n  overrides?: {\n    global?: Record<string, ChordDiagramOverrides>;\n    byKey?: Record<string, Record<string, ChordDiagramOverrides>>;\n  };\n  fonts: ChordDiagramFontConfigurations;\n}\n\n// Measurement items\nexport interface MeasuredItem {\n  item: ChordLyricsPair | Comment | SoftLineBreak | Tag | Item | null,\n  width: number,\n  chordLyricWidthDifference?: number,\n  chordHeight?: number,\n  adjustedChord?: string,\n}\n\nexport interface LineLayout {\n  type: 'ChordLyricsPair' | 'Comment' | 'Tag' | 'ColumnBreak' | 'SectionLabel'\n  items: MeasuredItem[];\n  lineHeight: number;\n  line?: Line\n}\n\n// Combined layout configuration\nexport interface MeasurementBasedLayoutConfig {\n  // Common layout settings\n  global: {\n    margins: Margins;\n  };\n\n  // // Line breaking settings\n  // lineBreaking: {\n  //   enabled: boolean;\n  //   preferredBreakPoints: string[];\n  //   capitalizeFirstWord: boolean;\n  // };\n\n  // // Paragraph splitting settings\n  // paragraphSplitting: {\n  //   enabled: boolean;\n  // };\n\n  // Optional header and footer\n  header: LayoutItem;\n  footer: LayoutItem;\n\n  // Optional sections configuration\n  sections?: SectionsConfig;\n\n  // Optional chord diagrams configuration\n  chordDiagrams?: ChordDiagramsConfig;\n}\n\n// Default layout configuration for measurement-based formatters\nexport const defaultMeasurementBasedLayout: MeasurementBasedLayoutConfig = {\n  global: {\n    margins: {\n      top: 40, right: 40, bottom: 40, left: 40,\n    },\n  },\n  header: {\n    height: 0,\n    content: [],\n  },\n  footer: {\n    height: 0,\n    content: [],\n  },\n};\n\nexport const measurementSpecificDefaults = {\n  fonts: defaultFontConfigurations,\n  measurer: 'canvas',\n  layout: defaultMeasurementBasedLayout,\n};\n\n// Base measurement-based formatter configuration\nexport interface MeasurementBasedFormatterConfiguration extends BaseFormatterConfiguration {\n  fonts: FontConfigurations;\n  measurer: MeasurerType;\n  layout: MeasurementBasedLayoutConfig;\n}\n\n// Configuration properties type for measurement-based formatters\nexport interface MeasurementBasedConfigurationProperties extends ConfigurationProperties {\n  fonts?: Partial<FontConfigurations>;\n  measurer?: MeasurerType;\n  layout?: Partial<MeasurementBasedLayoutConfig>;\n}\n","import {\n  BaseFormatterConfiguration,\n  ConfigurationProperties,\n  Delegate,\n  DelegatesConfiguration,\n  InstrumentConfiguration,\n  MetadataConfiguration,\n  UserConfigurationProperties,\n  defaultBaseConfiguration,\n  defaultDelegate,\n  defaultDelegatesConfiguration,\n  defaultMetadataConfiguration,\n} from './base_configuration';\n\nimport {\n  CSS,\n  HTMLConfigurationProperties,\n  HTMLFormatterConfiguration,\n  HtmlTemplateCssClasses,\n  defaultCssClasses,\n  htmlSpecificDefaults,\n} from './html_configuration';\n\nimport {\n  Alignment,\n  ChordDiagramFontConfigurations,\n  ChordDiagramOverrides,\n  ChordDiagramsConfig,\n  ColumnConfig,\n  ConditionRule,\n  ConditionalRule,\n  Dimension,\n  FontConfiguration,\n  FontConfigurations,\n  FontSection,\n  ILayoutContentItem,\n  LayoutContentItem,\n  LayoutContentItemWithImage,\n  LayoutContentItemWithLine,\n  LayoutContentItemWithTemplate,\n  LayoutContentItemWithText,\n  LayoutContentItemWithValue,\n  LayoutItem,\n  LayoutSection,\n  LineLayout,\n  LineStyle,\n  Margins,\n  MeasuredItem,\n  MeasurementBasedFormatterConfiguration,\n  MeasurementBasedLayoutConfig,\n  MeasurerType,\n  Position,\n  SectionDisplay,\n  SectionTypeConfig,\n  SectionsConfig,\n  SingleCondition,\n  defaultFontConfigurations,\n  defaultMeasurementBasedLayout,\n  measurementSpecificDefaults,\n} from './measurement_based_configuration';\n\nimport {\n  MeasuredHtmlConfigurationProperties,\n  MeasuredHtmlFormatterConfiguration,\n  MeasuredHtmlLayoutConfig,\n  measuredHtmlSpecificDefaults,\n} from './measured_html_configuration';\n\nimport {\n  PDFConfigurationProperties,\n  PDFFormatterConfiguration,\n  PDFLayoutConfig,\n  pdfSpecificDefaults,\n} from './pdf_configuration';\n\nimport {\n  getBaseDefaultConfig,\n  getDefaultConfig,\n  getHTMLDefaultConfig,\n  getMeasuredHtmlDefaultConfig,\n  getPDFDefaultConfig,\n} from './default_config_manager';\n\nimport { mergeConfigs } from '../../utilities';\n\nexport { mergeConfigs } from '../../utilities';\n\ntype Configuration = BaseFormatterConfiguration;\n\n/**\n * Legacy configuration function for backward compatibility\n */\nexport function configure(config: ConfigurationProperties): Configuration {\n  const defautlBaseConfig = getBaseDefaultConfig();\n  return mergeConfigs(defautlBaseConfig, config);\n}\n\nexport {\n  Delegate,\n  defaultDelegate,\n  MetadataConfiguration,\n  InstrumentConfiguration,\n  UserConfigurationProperties,\n  defaultMetadataConfiguration,\n  DelegatesConfiguration,\n  defaultDelegatesConfiguration,\n  ConfigurationProperties,\n  defaultBaseConfiguration,\n\n  Margins,\n  FontSection,\n  LayoutSection,\n  Alignment,\n  MeasurerType,\n  ConditionRule,\n  SingleCondition,\n  ConditionalRule,\n  Position,\n  Dimension,\n  FontConfiguration,\n  FontConfigurations,\n  ChordDiagramFontConfigurations,\n  defaultFontConfigurations,\n  SectionDisplay,\n  SectionTypeConfig,\n  ColumnConfig,\n  SectionsConfig,\n  ILayoutContentItem,\n  LayoutContentItem,\n  LayoutContentItemWithText,\n  LayoutContentItemWithValue,\n  LayoutContentItemWithTemplate,\n  LayoutContentItemWithImage,\n  LineStyle,\n  LayoutContentItemWithLine,\n  LayoutItem,\n  ChordDiagramOverrides,\n  ChordDiagramsConfig,\n  MeasuredItem,\n  LineLayout,\n  MeasurementBasedLayoutConfig,\n  defaultMeasurementBasedLayout,\n  measurementSpecificDefaults,\n  MeasurementBasedFormatterConfiguration,\n\n  MeasuredHtmlLayoutConfig,\n  MeasuredHtmlFormatterConfiguration,\n  MeasuredHtmlConfigurationProperties,\n  measuredHtmlSpecificDefaults,\n\n  CSS,\n  HtmlTemplateCssClasses,\n  HTMLFormatterConfiguration,\n  defaultCssClasses,\n  HTMLConfigurationProperties,\n  htmlSpecificDefaults,\n\n  PDFLayoutConfig,\n  PDFFormatterConfiguration,\n  PDFConfigurationProperties,\n  pdfSpecificDefaults,\n\n  BaseFormatterConfiguration,\n  Configuration,\n  getDefaultConfig,\n  getHTMLDefaultConfig,\n  getMeasuredHtmlDefaultConfig,\n  getPDFDefaultConfig,\n};\n\nexport default Configuration;\n","export const NimbusSansLRegNormal = `AAEAAAAPAIAAAwBwRkZUTX4y/nsAAWeMAAAAHEdERUYAJQAAAAElQAAAABhHUE9T3zkIDwABJoAA\nAEEKR1NVQjf5Jh4AASVYAAABKE9TLzJrS8JmAAABeAAAAGBjbWFwlCMf9gAADbwAAAZMZ2FzcP//\nAAMAASU4AAAACGdseWbmPYSCAAAZ/AAA7qRoZWFkBm+odwAAAPwAAAA2aGhlYQcVBZYAAAE0AAAA\nJGhtdHj4Go/JAAAB2AAAC+Jsb2NhTSeIjAAAFAgAAAX0bWF4cANtAMsAAAFYAAAAIG5hbWUR3VYA\nAAEIoAAABKdwb3N0odmragABDUgAABfuAAEAAAABAAAXuYYEXw889QALA+gAAAAA0e+yRQAAAADR\n77JF/2n+1QQIBDMAAAAIAAIAAAAAAAAAAQAAAtn+8QDIBEb/af9mBAgAAQAAAAAAAAAAAAAAAAAA\nAvgAAQAAAvkAyAAyAAAAAAACAAAAAQABAAAAQAAAAAAAAAADAloBkAAFAAgCigJYAAAASwKKAlgA\nAAFeADIBNQAAAAAFAAAAAAAAAAAAAocAAAAAAAAAAAAAAABVUlcgAEAAIPsEAtn+8QDIBDMBK2AA\nAJ8AAAAAAgQCzgAAACAAAwEWAAAAAAAAAU0AAAEWAAABFgB8AWMANAIsAA4CLAAjA3kAHQKbADQA\nvwAwAU0ASQFNACYBhQAoAkgAMgEWAFcBTQAuARYAVwEW//gCLAArAiwAZgIsACICLAAgAiwAHAIs\nACMCLAArAiwALgIsACUCLAAmARYAbgEWAG4CSAAtAkgAMgJIADICLABNA/cAIgKbABECmwBPAtIA\nMALSAFkCmwBaAmMAWgMKACwC0gBTARYAZAH0ABECmwBPAiwAUANBAEsC0gBMAwoAJgKbAFsDCgAm\nAtIAXQKbADACYwAVAtIAVQKbAB4DsAAWApsAFgKbAA0CYwAcARYAQAEW//gBFgAXAdUALAIs/+oB\nTQAWAiwAKgIsADYB9AAfAiwAGgIsACgBFgASAiwAIwIsAEYA3gBCAN7/7gH0ADoA3gBEA0EARgIs\nAEYCLAAkAiwANgIsABoBTQBFAfQAIgEWAA4CLABBAfQACgLSAAYB9AARAfQAFAH0AB8BTgArAQQA\nZAFOAB0CSABLARYAAAFNAHkCLAA0AiwAGgIsAEMCLAALAQQAZAIsACwBTQAeAuH/8wFyACUCLABi\nAkgAKAFNAC4C4f/zAU0AHAGQADACSAAyAU0ACgFNAAcBTQBcAiwAQQIZADABFgBXAU0AJwFNADQB\nbQAoAiwAYgNCABoDQgAZA0IAGQJjAF8CmwARApsAEQKbABECmwARApsAEQKbABED6AALAtIAMAKb\nAFoCmwBaApsAWgKbAFoBFgABARYARwEW//8BFgAJAtIAFALSAEwDCgAmAwoAJgMKACYDCgAmAwoA\nJgJIAF8DCgAeAtIAVQLSAFUC0gBVAtIAVQKbAA0CmwBbAmMARgIsACoCLAAqAiwAKgIsACoCLAAq\nAiwAKgN5ACIB9AAfAiwAKAIsACgCLAAoAiwAKAEW//sBFgBBARb/+QEWAAMCLAAkAiwARgIsACQC\nLAAkAiwAJAIsACQCLAAkAkgAMgJjABICLABBAiwAQQIsAEECLABBAfQAFAIsADYB9AAUApsAEQIs\nACoCmwARAiwAKgKbABECLAArAtIAMAH0AB8C0gAwAfQAHwLSADAB9AAfAtIAMAH0AB8C0gBZAoMA\nGgLSABQCLAAaApsAWgIsACgCmwBaAiwAKAKbAFoCLAAoApsAWgIsACgCmwBaAiwAKAMKACwCLAAj\nAwoALAIsACMDCgAsAiwAIwMKACwCLAAjAtIAUwIs/+IC0gAIAiwACgEW/+kBFv/pARYAFAEWAA8B\nFv/0ARb/9AEWAEIA3gAZARYAXAEWAF4C3wBmAbwAVwH0ABEA3v/cApsATwH0ADoB9AApAiwARgDe\nAD8CLABQAN4APwIsAFABKwBEAiwAUAFOAEsCLAAAAN4AAALSAEwCLABGAtIATAIsAEYC0gBMAiwA\nRgJcAAoC0wBeAiwARwMKACYCLAAkAwoAJgIsACQDCgAmAiwAJAPoACsDsAAoAtIAXQFNAEUC0gBd\nAU0AQQLSAF0BTQAwApsAMAH0ACICmwAwAfQAIgKbADEB9AAiApsAMAH0ACICYwAVARYADgJjABUB\nPQAOAmMAFQEWAA4C0gBVAiwAQQLSAFUCLABBAtIAVQIsAEEC0gBVAiwAQQLSAFUCLABBAtIAVQIs\nAEEDsAAWAtIABgKbAA0B9AAUApsADQJjABwB9AAfAmMAHAH0AB8CYwAcAfQAHwDe//YCLAALApsA\nEQIsACoD6AALA3kAIgMKAB4CYwASApsAMAH0ACICYwAVARYADgFNABQBTQATAU0AHAFNAA8BTQBz\nAU0ATwFNADkBTQAFAU3/3QFNAH4BTQAiApsAEQEWAFcDEAAbA0YAFAGAABoDBv/oA1cAIQLw/+oA\n3v/qApsAEQKbAE8CJwBOApz/9AKbAFoCYwAcAtIAUwMKACUBFgBkApsATwKcABADQQBLAtIATAKK\nAEADCgAmAtIAUQKbAFsCagAsAmMAFQKbAA0DHgBNApsAFgNDAEEC7AAcARYABgKbAA0CQgAGAb4A\nFAIsAEYA3gBFAiMAQQJCACACPwBPAfQADAItACoBvgAUAbkAKAIsAEYCLAAwAN4ARQH0ADkB9AAW\nAkAAUAH0AAwBwAAeAiwAKQKyAEICOQA7AeIAGgJpADwBi//uAiMAQQKIAB4CDQAdAskAVQMNAFgA\n3v/mAiMAQQIsACkCIwBBAw0AWAIjAAQCMAANAw0ARQKbAFoCmwBVA2EAGQIeAFYCzwAPApsAMAEW\nAFwBFgAGAfQADwQhABkD8gA4A1YAEQJHAD8CzwBNAnsAEwLPAE8CmwAQApAATAKbAFECHgBTAqUA\nCgKbAFUDm//0AlwAOALPAE0CzwBNAkcAPwKQAAADQQBKAtIAUQMKACUCzwBPApsAXALSACoCYwAU\nAnsAEwL4ABwCmwAUAuQAUwKbAC8DlQAzA6oANQMY/+IDdQBVApAATgLPAA8D8gBGAtIANQIsACoC\nPQAyAhMAOgFtADsCRwAQAiwAKgKd//ABygArAi8AUQIvAFEBtgAlAkcAHQKwACoCKABIAiwAKQIe\nAEcCLAA6AfQAHgHKACIB9AAWAzcASAH0ABoCPQBXAgkAOQMiAEADNwBGAnH/6gLPAFECCQBFAf4A\nFQLuADMCHgAtAiwAKAIsACsCLP/lAW0AQAH+ABYB9AAiAN4ARQEWAAYA3v/tA4oAHQMtADQCLP/l\nAbYAJQIvAFEB9AAWAigAUwMKAAkCZQA3AwoAJQIsACkDIwBVAncATwHpADgBmwBXAhoAIwGFACMD\n/QABAzMAAgKaAFACGwBHAmoAUAH5AEcC0gBRAiYARwKiAA0B9AAWAqIADQH0ABYCxQAUAg8AFgK3\nAD0B/AAyArcAPQH8ADMCtwA9AjcAUgEWAFwBFgBcAwoAJQIrACkCmwAQAiwAKgMKACUCLAApApEA\nUAIrACkDsAAWAtIABgOwABYC0gAGA7AAFgLSAAYCmwANAfQAFAH0AAACLP/7A+j/9wPo//cCKP/o\nAN4AQQDeAEEA3gBAAN4AQQFNADABTQAxAU0ALwIsACYCLAAmAV4AMgPoAHMD6AAJALwAIQFiADIB\nTQBbAU0AVQH0AG8BTf96ARb/iQFNAA8BTQAFAU0ACQFNAA8BTQASAU0ACwFNAAwBbQAyAiwAKgIs\nABoERgByAiwAAgN1AYMC0gB4AUP/2wQxADECiABCAwoASAL3AJ4D6AA/AwAAHAJYADcB9AAcA0IA\nNwNCACMDQgAlA0IANwPoAFUB9ABIA+gAVQH0AEgD6AB6AfQAUQLSAFsC0gBbAtIAWwLSAFsB9ABR\nA+gAogLSAAgC0gCLAtIACQLSAIsC0gABARb/aQHcABYBqv/SA+gAaAJk/+YC5QBFA+gA6QPoAOkD\n6ADpAzcAGAJYAAECSAAoA+gA7AEW/4kD6AFlARYAVwHF/9sD6ADFAskAGQPTADID6ADTAtIBSALS\nAPsD6ADzA+gA8wLPAHcD6AEYARIADwPoASYD6ADEA+gAqAPoAMQBFv+aAiUAIAIlACACRwAyAiUA\nHAIlABwD6ADpA+gA6QPoAOkD6ADQA+gA6QPoAOkD6AC5A+gAugPoAMkCXAApAkgAKAJcAQoCXACm\nAU0AOgFNADoCxP9uAnEBGALEAUECxP9uAsQBQQLE/24CxAFBAsT/bgLE/24CxP9uAsT/bgLE/24C\nxAD/AsQBQQLEAP8CxAD/AsT/bgLE/24CxP9uAsQBQQLEAP8CxAD/AsT/bgLE/24CxP9uAsQBQQLE\nAP8CxAD/AsT/bgLE/24CxP9uAsT/bgLE/24CxP9uAsT/bgLE/24CxP9uAsT/bgLE/24CxP9uAsT/\nbgLE/24CxP9uAsT/bgLEAWICxP9uAsT/bgLZ/3gCXP/BAlwAKwFiADEBYgAxA+gAiAPeAMMD3gDo\nA94AwwPeAMEB1wAHAlwAFwJcACsCXP/4Alz/wQFiADQD/QCSBBwAogOVAE0C7gC9Au4AZwITAAQC\nkP/bAlL/5gH+//gB9AAzAu4AUgIsABQB9AAMAfQAEQMKABIAEgAAAAAAAwAAAAMAAAAcAAEAAAAA\nBEIAAwABAAAAHAAEBCYAAACmAIAABgAmAH4BfwGSAf8CGwLJAt0DigOMA6EDzgPWBF8EYwR1BJ0E\nowSzBLsEwATPBNkE4wTpBO8ehR7zIAIgFSAeICYgMyA+IEQgcCB5IH8gpyCsIQUhJiEuITUhXiGZ\nIaghtSHUIgMiCSIlIisiLiI3IkgiZSKHIpcipSMCIxAjISMqJQIlHCUkJSwlNCU8JWwlkyWhJawl\nsiW8JcQlzyXZJeYmQiZr+wT//wAAACAAoAGSAfoCGALGAtgDhAOMA44DowPRBAAEYgRyBJAEogSu\nBLYEwATPBNgE4gToBO4egB7yIAIgEyAXICAgMCA5IEQgcCB0IH8goyCsIQUhESEuITUhWyGQIagh\ntSHQIgAiBSILIiciLiI0IkUiYCKCIpUipSMCIxAjICMpJQAlDCUkJSwlNCU8JVAlgCWgJaolsiW6\nJcQlyiXYJeYmOiZg+wD////j/8L/sP9J/zEAAP54/dL90f3Q/c8AAP2h/Z/9kQAA/W/9Zf1j/V/9\nUf1J/UH9Pf0546njPeIv4h/iHgAAAAAAAOIE4dnh1uHRAADhqOFQAADhMOEq4QXg1ODG4LrgoAAA\n4HMAAOBl4GMAAAAAAADgGQAA3/7fot+V34bffwAAAADdjd2G3X/deN1lAADdOt0y3S0AAN0eAADd\nDt0CAAAAAAAAAAEAAAAAAAAAAAAAAJwAAAAAAAAAAAAAAJgAAAAAAAAAnAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAmgCmAKwAAAAAAAAAAACuAAAAAACyAAAAAAAAAAAAAAAAAAAAzgAAANIA\nAAAAAQIBCAEOAAABFgAAAAAAAAAAAAABEAEUAAAAAAAAAAAAAAEqAAAAAAAAAUoAAAFMAAAAAAFS\nAWIBeAAAAU0BTgAAAU8BngAAAAAAAAGfAaACBwIIAgkCCgAAAAACCwIMAAAAAAINAg4CDwIQAj0C\nPgI/AAAAAAAAAkACQQAAAkICQwJEAkUAAAJGAAACRwJRAlIAAAAAAlMCVgAAAlcAAAAAAlgAAAJZ\nAAAAAAAAAloAAAJbAAAAAAAAAlwAAAAAAAACXQJ1AAACdgJ3An0AAAAAAAACfgAAAn8CgAKBAAAC\nggAAAoMAAAKEAoUAAAAAAoYChwKIAokAAAAAAooAAAKLApICkwAAApQClQAAAAAClgKXApgAAAAA\nApkCmgKhAAACogKqAAACqwKsAAAAAAAAAq0AAAAAAAACrgAAAAAAAAKvAAAAAAAAArAC0gAAAAAA\nAALTAAAAAAAAAtQAAAAAAAAC1QAAAAAAAALWAtcC2ALZAuAAAALhAuMC5AAAAAAAAALlAukC6gLr\nAAAAAAAAAuwAAALtAu4AAAAAAu8AAALwAvEAAAAAAAAC8gLzAvQC9QL2AvcC+AAGAgoAAAAAAQAA\nAQAAAAAAAAAAAAAAAAAAAAEAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAEAAAAAAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsA\nHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4\nADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQA\nVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQAAAIYAhwCJAIsAkwCYAJ4AowCiAKQApgClAKcAqQCr\nAKoArACtAK8ArgCwALEAswC1ALQAtgC4ALcAvAC7AL0AvgI9AHIAZABlAGkCPwB4AKEAcABrAlwA\ndgBqApcAiACaAocAcwKZApoAZwB3AnYCfwJ+AY8CkABsAHwBeACoALoAgQBjAG4ChQFCApYCeQBt\nAH0CQABiAIIAhQCXARQBFQIyAjMCOgI7AjYCNwC5AuMAwQE6AkgCVAJEAkUC9QL2Aj4AeQI4AjwC\nQQCEAIwAgwCNAIoAjwCQAJEAjgCVAJYAAACUAJwAnQCbAPMBTQFUAHEBUAFRAVIAegFVAVMBTgAA\nAAAAAAAAAAAAFgAuAF4ArgD6AUgBWAFuAYQBogG4Ac4B3AHoAfYCHAIwAmICngK6AuoDJAM8A3wD\ntAPGA+ID9AQIBBwESgSqBMYE+gUoBUYFXgV0BagFwAXOBe4GCgYaBjQGTAZ2BpgGyAb+B0QHVgd2\nB4gHpAfCB9gH8AgCCBAIIgg0CEIIUAiaCMQI7AkYCUYJZgmkCcYJ2gn4ChIKIApSCnIKmArCCuoL\nBAs+C14LfguQC6wLxgvqDAIMOAxGDHoMogyiDLgM7A08DXgNnA2uDg4OIA5oDq4OyA7YDuYPNg9E\nD2gPhA+yD+gP9hAeEDwQSBBuEIQQsBDMEPwRQBGQEb4R4BICEigSXBKCErwS4hMyE1ITcBOSE7YT\nyhPeE/YUDhQ4FGgUmBTIFPwVPhVyFYwVxhXqFg4WNhZeFnwWnhbcFy4XfhfSGDYYjBj0GVgZoBnW\nGgwaRhqAGpQaqBrAGtgbFhtOG3obphvWHBQcRBxeHJgcvhzkHQ4dOh1kHY4dvB3eHi4eWh62HuQf\nOh9uH54f1iAKID4gbCCkINYg/iE4IWIhlCGyIegiECJQIm4ioiLOIxQjNiNuI6wj9CQ4JIYkwCUE\nJUYllCW4JeYmDCY2JlwmgiaWJqomyibqJwwnNCdIJ1YnfCemJ9An8igcKEQoXChyKIYopCjAKN4o\n+CkQKSQpPilWKXQpnCnCKfAqEio+KmwqpCrWKwYrMitsK6Ir2CwKLEQsjCzILOgtLC1ULZQtuC4E\nLkQuli7aL0Avmi/qMC4wUDB+MJowyDDiMQgxQDF4MZ4xxDH2MiYyZDKiMtAy/DMyM2ozkDO2M9g0\nBjQoNEY0ZDSCNKA0wjTkNP41MjVyNeA2DDZ2Nrg2+DdMN5Q3tjfkN/Y4CDgWOC44OjhgOH44njiy\nOMI43DkAOQw5LjlQOWY5mDm4Ofw6HDo4Omw6fDqSOqo6wjraOwo7GDs0O0o7ZDt8O5Y7wDvUO/Y8\nEjwkPDo8dDySPMY9AD0YPTo9dD28Peg9/j48PnA+tD7KPvo/OD9yP5Q/1j/iP/pADkAyQERAkEC2\nQM5A+EE2QWBBckGcQd5B+kIkQl5CdkKsQtpDDkNQQ5RD0kQMRCpETkSCRJhEykUORRxFNEVWRYxF\nvEXiRgJGIkZQRmZGgkaoRt5G7kcSRypHUkeUR6xH1kfwSA5IKEhASGpIfkigSMxI3kj6STJJUElm\nSYRJnEm4Sd5KCEosSl5KjErCSwpLTEt6S4pLsEveTAJMPkxWTH5MlkyyTMxM4E0GTRhNQk1qTXxN\noE3eTfhODk4sTkJOXE5+TqROwk7sTxpPTE+CT7xP7FACUC5QaFB8UJRQslDgUQpRMFFOUWxRolG4\nUeRSDFJSUpZSuFLYUuxTAFMaUzJTXlOEU6JTvlPgU/5UGlQyVEhUXlR8VJpUulTYVPpVHFVEVWhV\nhlWkVbJVwFXuVhxWSFakVtJW/lcoV2hXjFewV9JX9FgcWERYYliMWIxYmlioWLZYyljeWPRZCFke\nWUBZZlmKWaBZvlnSWepaUFpeWnRahFqWWr5azFraWvhbEls+W3RbilvGW/pcGFxAXJhc/l1AXU5d\nql3sXipejl8SX0RfbF+gX9hgLmCCYPhhZGG6YeZiEmI+YmpitmMCYxhjLGNCY1ZjqGPCY95j+mQW\nZDJkWmR0ZLRkzGUGZRxlMGVYZZZlvGXyZiBmLmZKZlhmemaGZpxm2GcaZypnPGdKZ1xncGeCZ65n\n2mgSaGhommjOaQppPGmGaaZpwmnaafRqGGo8anBqpGrOavhrMGtqa35rmGuoa8xr8GwObCxsOGxG\nbFZsZmx2bIZsmmysbL5s0mzqbP5tEm0obT5tWG1ubYRtnm20bcpt5G36bhBuKm5CblxufG6Ubqxu\nzG7mbv5vHm82b05vbm+Qb7Jv3m/sb/pwCHAWcCRwsHHUclxyanJ+coxyoHKucrxyynLYcuZzAnMm\ncz5zXHOKc6x0BnRSdKB01HUidVR1oHXKdeR2DnY+dnh2pHbMdxJ3UgACAHwAAADQAtkABQAJAAAT\nEQcjJxETFSM10BYnFlNUAtn+rt/fAVL9j2hoAAIANAHQATECxQAFAAsAABMzFQcjJzczFQcjJzRd\nGycboF0bJxsCxW+Ghm9vhoYAAAIADv/sAh4CuQAbAB8AAAEHMxUjBzMVIwcjNyMHIzcjNTM3IzUz\nNzMHMzcDIwczAeUkXWofaXUnTCZ8J0wmZXIfbHkkTCR9IzB8IH0CucRErkTT09PTRK5ExMTE/viu\nAAMAI/+CAg0DAgAmACwANAAAEzMVHgEVIy4BJxUWFxYVFAYHBgcVIzUuATczFhcWFxEmJyY1NDY3\nETUOARUUFxE2NzY1NCb6O1tnTwFAMmUeVTErMUs7am0FTwcSI0deIUZlYDg8rz0fKjkDAjYHaVU3\nRgL5HxEwajthGx0GZ2cHeGhOGzAJARAdFzReVWcM/snwCD4xWn/++QceKDwxNgAFAB3/7ANbAsUA\nCgAVABkAJQAxAAATMhYVFAYjIiY0NhciBhQWMzI2NTQmJTMBIwEyFhUUBiMiJjU0NhciBhUUFjMy\nNjU0JsdIY2RGR2RkRio7PCopPDsBb0L+dUIB2khjZEZHZGRGKjs7Kyk8OwKtZElFZGSOZEY7VDs7\nKSs7Xv0nAVZkSEZjZEdGZEY7KSo7OygrOwAAAAMANP/pAn0CxQAeACoAMwAAATMUBxcjJwYHBiMi\nJjU0NjcuATU0NjMyFhUUBgcXNic+ATU0JiMiBhUUFhMnDgEVFBYzMgHtUDp6bT4wHTdNXHFEXi8i\nY0hHXDxOhSHSOS4xJicvGLOgRDZNNkkBTl5Zl04uFCNtWkVaNjtFI0JbWEU2TCyjOZ8jNyElMC8n\n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\nIicmJzMGFxYzMjc+ATU0Ji8BJjU0NjMyFx4BAzMHIwJUWAFeV0pZNkK3SlErJUmEqksqAVgBJzN1\nWysXHUFFtY+LeLs9DAfqcZU8AgNITEQ3KjASMRRgQy9bHThoOV5BLz0fETcdKzkSMCWFY3OAGiMB\ng5QAAgAi/+kBywLkACUAKQAAASMmIyIGFRQWHwEeARUUBiMiJzMWFxYzMjY1NCYvAS4BNTQ2MhYD\nMwcjAbZYA2YzPC4zUE5GdWPLBlgGEiFHN0MmK05dSW62YqJxlTwBelQqJRwjDBMTRTpMWrMvFCMu\nJRwiChMWQz5JV1QBHZQAAAACADD/6QJtA6wALgA1AAABIy4BIyIGFRQWHwEeARUUBgcGIyInJicz\nBhcWMzI3PgE1NCYvASY1NDYzMhceAQEzFyMnByMCVFgBXldKWTZCt0pRKyVJhKpLKgFYASczdVsr\nFx1BRbWPi3i7PQwH/sdfYD9RT0ACA0hMRDcqMBIxFGBDL1sdOGg5XkEvPR8RNx0rORIwJYVjc4Aa\nIwGElmBgAAAAAAIAIv/pAcsC5QAlACwAAAEjJiMiBhUUFh8BHgEVFAYjIiczFhcWMzI2NTQmLwEu\nATU0NjIWAzMXIycHIwG2WANmMzwuM1BORnVjywZYBhIhRzdDJitOXUlutmLrX2A/UE9BAXpUKiUc\nIwwTE0U6TFqzLxQjLiUcIgoTFkM+SVdUAR6WYGAAAAABADH/KgJwAuUASAAABQc2MzIWFRQGIyIn\nNxcWMzI2NTQjIgcnNyYjJy4BNzMGFxYzMjc+ATU0Ji8BJjU0NjMyFx4BFSMuASMiBhUUFh8BHgEV\nFAYHBgFSDw0PJilCOTFMFQk6HxcfLg4RCx8JAixbZwJYASczdVsrFx1BRbWPi3i7PQwHWAFeV0pZ\nNkK3SlFJPTgYIAIjICsyIigEHRoTJQcGRQMHE4VdQS89HxE3HSs5EjAlhWNzgBojJUhMRDcqMBIx\nFGBDQWwZFgABACL/KgHLAhsAPwAAFwc2MzIWFRQGIyInNxcWMzI2NTQjIgcnNyYnMxYXFjMyNjU0\nJi8BLgE1NDYyFhcjJiMiBhUUFh8BHgEVFAYHBvQODQ8mKUI5MksVCTofFx8uDhELH6gDWAYSIUc3\nQyYrTl1JbrZiAVgDZjM8LjNQTkY0LiYYIAIjICsyIigEHRoTJQcGRxGgLxQjLiUcIgoTFkM+SVdU\n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\nIRgZICAyICEYGSAgMiAAAAADAKgAAANAAlYACwAWACEAACUyFhUUBiMiJjU0NgMyFhUUBiMiJjQ2\nITIWFRQGIyImNDYB9RojIhscIyTzGiMjGhwjIwI4GiMjGhwjI3wkGhsjIhwbIwHaJBobIyM2IyQa\nGyMjNiMAAAQAxAAAAyMCVwAJABMAHAAlAAAlMhYVFAYiJjQ2ITIWFRQGIiY0NgEyFhQGIiY0NiEy\nFhQGIiY0NgEDGiMjNiMjAf8aIyM2IyP+ORojIzYjIwH/GiMjNiMjfCQaGyMjNiMkGhsjIzYjAdsj\nNiMjNiMjNiMjNiMAAAP/mgBhAXsBswADAAcAHAAAARUhNQUVITUBFwYjIiYnJiMiBgcnNjMyFxYz\nMjYBe/4fAeH+HwG2JCxYFhw2UxQaICAoNU8fU0gTGyUBETMzfjIyASAfTgYRGBUkH00ZFhcAAAAC\nACAARgIFAYQAFwAvAAABFwYHBiMiJicmIgYHJzY3NjMyFxYzMjYfAQYHBiMiJicmIgYHJzY3NjMy\nFxYzMjYB3yYgESIvFCE/TDwrFyUbECg1IVpDHh0oFiYgESIvFCE/TDwrFyUbECg1IVpDHh0oAYQk\nLhUqChgdIykkKhY0JBsdeCQuFSoKGB0jKSQqFjQkGx0AAQAg/+cCBAHmABMAADcjNTM3IzUhNxcH\nMxUjBzMVIQcnnX2kOd0BBEwyO53EOf3+3Ewzb0ZmRoUcaUZmRogdAAMAMgAZAhYBtwADAAcACwAA\nARUhNQUVITUBFSE1Ahb+HAHk/hwB5P4cAQtGRqxGRgFYRkYAAAAAAgAc//UCBQJ/AAMACgAAJRUh\nNRE1JRUNARUCBf4XAen+dgGKOENDATNFz0+hpE8AAgAc//UCBQJ/AAMACgAAJRUhNQEVBTUtATUC\nBf4XAen+FwGK/nY4Q0MBeEXPT6GkTwAAAAEA6QAAAv8B7gAUAAAlFSEiJy4BNTQ3PgEzIRUhIgYU\nFjMC//7oViw7QWMcQT4BGP7dW1JSWz4+Ehp5VpJBEw0+WMJYAAAAAAEA6QAAAv8B7gAUAAA3ITI2\nNCYjITUhMhceARUUBw4BIyHpASNbUlJb/t0BGFYsOkJiHEI+/ug+WMJYPhIZeVOWQRMNAAAAAAIA\n6f/BAv8CNwAYAB8AACUHJzcuATU0Nz4BOwE3FwczFSMDMyEVISITIyIGFRQXAakmKRxESWIcQj6q\n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\nAAT/bv8GA1YC7gAFAAsAEQAXAAABIRUhETMDETMRITUFESMRIRUpATUhESMBxQGR/i1CxkL+LQJX\nQgHT/an+bwHTQgFdQgHT/m8Bkf4tQsb+bwHTQkL+LQAB/24A+gNWAu4AAwAAJxEhEZID6PoB9P4M\nAAAAAf9u/wYDVgD6AAMAAAcRIRGSA+j6AfT+DAAAAAH/bv8GA1YC7gADAAAHESERkgPo+gPo/BgA\nAAAB/27/BgFiAu4AAwAABxEhEZIB9PoD6PwYAAAAAQFi/wYDVgLuAAMAAAURIREBYgH0+gPo/BgA\nABn/bv9qAvIC7gADAAcACwAPABMAFwAbAB8AIwAnACsALwAzADcAOwA/AEMARwBLAE8AUwBXAFsA\nXwBjAAADMxUjNzMVIyUzFSMlMxUjNzMVIwUzFSMVMxUjFTMVIxUzFSMTMxUjFTMVIxUzFSMVMxUj\nEzMVIxUzFSMVMxUjFTMVIxMzFSMVMxUjFTMVIxUzFSMTMxUjFTMVIxUzFSMVMxUjkmRkyGRkAlhk\nZP5wZGTIZGT9qGRkZGRkZGRkyGRkZGRkZGRkyGRkZGRkZGRkyGRkZGRkZGRkyGRkZGRkZGRkAu5k\nZGRkZGRkZGRkZGRkZGRkZAK8ZGRkZGRkZAK8ZGRkZGRkZAK8ZGRkZGRkZAK8ZGRkZGRkZAAy/27/\nBgNWAu4AAwAHAAsADwATABcAGwAfACMAJwArAC8AMwA3ADsAPwBDAEcASwBPAFMAVwBbAF8AYwBn\nAGsAbwBzAHcAewB/AIMAhwCLAI8AkwCXAJsAnwCjAKcAqwCvALMAtwC7AL8AwwDHAAADMxUjNzMV\nIyUzFSMlMxUjNzMVIyEzFSM3MxUjNzMVIzczFSM3MxUjATMVIzczFSMlMxUjJTMVIzczFSMhMxUj\nNzMVIzczFSM3MxUjNzMVIwEzFSM3MxUjJTMVIyUzFSM3MxUjITMVIzczFSM3MxUjNzMVIzczFSMB\nMxUjNzMVIyUzFSMlMxUjNzMVIyEzFSM3MxUjNzMVIzczFSM3MxUjATMVIzczFSMlMxUjJTMVIzcz\nFSMhMxUjNzMVIzczFSM3MxUjNzMVI5JkZMhkZAJYZGT+cGRkyGRk/gxkZMhkZMhkZMhkZMhkZPx8\nZGTIZGQCWGRk/nBkZMhkZP4MZGTIZGTIZGTIZGTIZGT8fGRkyGRkAlhkZP5wZGTIZGT+DGRkyGRk\nyGRkyGRkyGRk/HxkZMhkZAJYZGT+cGRkyGRk/gxkZMhkZMhkZMhkZMhkZPx8ZGTIZGQCWGRk/nBk\nZMhkZP4MZGTIZGTIZGTIZGTIZGQC7mRkZGRkZGRkZGRkZGRkZGRkZP2oZGRkZGRkZGRkZGRkZGRk\nZGRkAZBkZGRkZGRkZGRkZGRkZGRkZGQBkGRkZGRkZGRkZGRkZGRkZGRkZAGQZGRkZGRkZGRkZGRk\nZGRkZGRkAAAAABH/eP8GA2AC7gAlACkALQAxADUAOQA9AEEARQBJAE0AUQBVAFkAXQBhAGUAAAUh\nNTM1IzUzNSM1MzUjNTM1IzUzNTMVMzUzFTM1MxUzNTMVMzUzByMVMycjFTMnIxUzJyMVMwUjFTMn\nIxUzJyMVMycjFTMFIxUzJyMVMycjFTMnIxUzBSMVMycjFTMnIxUzJyMVMwNg/BhkZGRkZGRkZGRk\nZGRkZGRkZGRkZGTIZGTIZGTIZGQCWGRkyGRkyGRkyGRkAlhkZMhkZMhkZMhkZAJYZGTIZGTIZGTI\nZGT6ZGRkZGRkZGRkZGRkZGRkZGRkyGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGQAAf/B\nAAACmgLZAAMAAAMhESE/Atn9JwLZ/ScAAAIAKwAAAjICBwADAAcAADMRIREnESERKwIHNP5hAgf9\n+TQBn/5hAAABADEAgwExAYMAAwAANxEhETEBAIMBAP8AAAAAAgAxAIMBMQGEAAMABwAANxEhESc1\nIxUxAQA0mIMBAf7/NJmZAAAAAAEAiAAAA2EBbQADAAAzESERiALZAW3+kwAAAAABAMMAQwMbAnQA\nAgAAJSEBAxv9qAEsQwIxAAAAAQDoAIkDHgIZAAIAAAEFEQMe/coBUcgBkAAAAAEAwwAnAxsCWAAC\nAAATIQHDAlj+1AJY/c8AAAABAMEAiQL3AhkAAgAAEyURwQI2AVHI/nAAAAAAAgAHAAABxQLoAAUA\nCQAAARMDIwMbAgsBAQXAwD7AwCCgoKEC6P6M/owBdAF0/VQBOAE4/sgAAAACABcAVgJFAoQACgAV\nAAABMhYUBiMiJjU0NhciBhUUFjMyNjQmAS5ypaV0cqOmcV6IhV9hh4cChKTmpKd0b6QxhlxhiYe+\nhwABACsAAAIyAgcACwAAATIWFRQGIyImNTQ2ATNol5hrbZeaAgeZamyYmG5rlgAAAAAC//gAAAJk\nAmwAAwAPAAAjESERASIGFRQWMzI2NTQmCAJs/skzTEkxNVFNAmz9lAG2TzUySk40M0sAAAAD/8EA\nAAKaAtkACwAPABsAAAEiBhUUFjMyNjU0JhMhESEFMhYVFAYjIiY1NDYBLnGmo3J0paX6/ScC2f6U\nX4eHYV+FiAKEpG90p6RzcqX9fALZhodfYIaJYVyGAAIANAC2AS4BtAAJABIAABMyFhUUBiImNDYX\nIgYUFjI2NCazMklJaElKMiIwMUQxMQG0SzQ1SkpqSisxRjExRjEAAAAABQCSAAADbALaAAsAFwAg\nADIAOwAAATIWFRQGIyImNTQ2FyIGFRQWMzI2NTQmBDIWFAYiJjU0Bx4BFxYyNz4BNw4BBwYjIicm\nJDIWFAYiJjU0Af+X1taal9PYlYK6t4OFubn+/CgeHigeTggUFEfsRxQUCAUaGz90fj8nAT0oHh4o\nHgLa1peY1dibktUxt4CGu7iEg7mjHigeHhUUTyUqF1FRFyolRVAkUV863R4oHh4VFAAABACiAAAD\nfALaAAsAFQAnADEAAAEyFhUUBiMiJjU0NhYiBhUUFjMyNjQHHgEXFjMyNzY3DgEHBiInLgEkIgYV\nFBYzMjY0Ag+X1taal9PYPiwhIBcWIbcFGhs/dH4/JwkIFBRH7EcUFAFoLCEgFxYhAtrWl5jV2JuS\n1c8gFhchISxQRVAkUV86cSUqF1FRFyqWIBYXISEsAAACAE3/7wNJAuoAJwAzAAABJzcXNjc1MxUW\nFzcXBxYXMxUjBgcXBycGBxUjNSYnByc3JicjNTM2NyIGFRQWMzI2NTQmAQBYKlc7STtOOFcpVy4J\ne3sJLlcpVz1JO0Y+VypXLgh8fAn7T21sTk1ubQIPVylXLwl6ewkuVylXOEw8SzpXKVcvCHt7CC9X\nKVc5TDxIWGxNT21uTUxuAAACAL0AMwIxAtkAFgAiAAABNS4BNTQ2MzIWFRQGBxUzFSMVIzUjNRMi\nBhUUFjMyNjU0JgFgRFtsSUptWkOhoTCjvjdNSzc1TEsBBGgKZkFMcGxKRGkKaCumpisBn0s1N0xM\nNjVMAAAAAAIAZwCeAogC2QArADYAAAE3JicmNTQzMhcWMzI3NjMyFRQHBhUUFxYVFCInJicHFhUU\nBiMiJjU0NjMyByIGFBYzMjY1NCYBgJkOLkIOAxArJjsgDwcKBQoJAxgOIAiWNWxKS25uSiwqOU9O\nODdPTgHumQMRGRUNAwkKBQoFESQ5KikQBA0aQCiWNUZMb2pIS24vTXBPTjg3TwAAAAEABAAAAlgC\n9QAfAAAzNT4BJwYHBiMiJjU0NzY3HgEXHgEVFAYjIiYnBhYXFTx3fQQVGjJBN09znRgdOFJQNUw0\nN0shAnN5FwGJfS0ZL1E4W2CAiFdSTElSMzhQNj5/ggYXAAAB/9sAAAK1AtkAMwAAKQE1PgE3PgE1\nNCcGIyImNTQ2MzIXLgE1NDYzMhYVFAc+ATMyFhUUBiMiJicmJx4BFx4BFwJD/g5GOBgpMwFGfEVg\nVTgoPBkQXkZEYCcsHRY9VV5EKFUdDhsBHSMjQk0UDxQTIW42EBCNYEZBYh4oKRtEXF1CNDkWCV9D\nR2EqIxAwSFonJB8PAAAAAAH/5v/kAmwC2QAYAAAFLgEnLgE1NDYzMhcWFzY3NjMyFhUUBgcGASgT\nVHI/KldAVzQQEBEcM0o/WzhIpxxNkJhWWjJDWk8YMD4fO1k+O3Zb0QAAAAH/+P/kAiIC9QAKAAAT\nJzY3FhIXBgcuAQUNyEwZwTywZhyfAV0Q/Iwz/u9E0rc44gAAAAABADMAEgHBAtkAGwAANxEzFRYf\nARYVFAcjNjU0JicRFAYjIiY1NDYzMuswCwQ4XzwdIkEuWUYiJ00yHr8CGkAPBENxe2FKUE1Eawf+\nwExhIh0xSQABAFL/4wJ+AoUAHQAAAQURFAcGIyImNTQ2MzIXESURFAcGIyImNTQ2MzIXAQEBfR0t\nTCEmSTEcGf7fHS1MISZJMRwZAoU4/kJEKEAhHC5FCwFvLP6kRChAIRwuRQsAAAACABQAAAIRAtwA\nFAApAAABFSMRIxEjNTM1NDYzMhcVJiMiHQEhFSMRIxEjNTM1NDYzMhcVJiMiHQEBBFdTRkZBOhcY\nEwo6AWRXU0ZGQToXGBMKOgIMRP44AchEWTg/BUUBNVJE/jgByERZOD8FRQE1UgAAAAMADAAAAbQC\n3AAUABgAHAAAExUjESMRIzUzNTQ2MzIXFSYjIh0BIREjETcVIzX8V1NGRkE6FxgTCjoBD1NTUwIM\nRP44AchEWTg/BUUBNVL99AIMzWlpAAACABEAAAGuAtwAFAAYAAABFSMRIxEjNTM1NDYzMhcVJiMi\nHQElESMRAQFXU0ZGQToXGBMKOgEEUwIMRP44AchEWTg/BUUBNVLN/ScC2QAAAAQAEgAAAsIC3AAU\nACkALQAxAAABFSMRIxEjNTM1NDYzMhcVJiMiHQEhFSMRIxEjNTM1NDYzMhcVJiMiHQEhESMRNxUj\nNQECV1NGRkE6FxgTCjoBbVdTRkZBOhcYEwo6AQFTU1QCDET+OAHIRFk4PwVFATVSRP44AchEWTg/\nBUUBNVL99AIMzWlpAAAAAwASAAACxALcABQAKQAtAAABFSMRIxEjNTM1NDYzMhcVJiMiHQEhFSMR\nIxEjNTM1NDYzMhcVJiMiHQElESMRAQJXU0ZGQToXGBMKOgFtV1NGRkE6FxgTCjoBA1QCDET+OAHI\nRFk4PwVFATVSRP44AchEWTg/BUUBNVLN/ScC2QAAABoBPgABAAAAAAAAADMAaAABAAAAAAABAAoA\nsgABAAAAAAACAAcAzQABAAAAAAADABkBCQABAAAAAAAEAA4BQQABAAAAAAAFADkBxAABAAAAAAAG\nAA4CHAABAAAAAAAIABwCZQABAAAAAAALABMCqgABAAAAAAAMABQC6AABAAAAAAAQAA0DGQABAAAA\nAAARAAcDNwABAAAAAAASAA0DWwADAAEECQAAAGYAAAADAAEECQABABQAnAADAAEECQACAA4AvQAD\nAAEECQADADIA1QADAAEECQAEABwBIwADAAEECQAFAHIBUAADAAEECQAGABwB/gADAAEECQAIADgC\nKwADAAEECQALACYCggADAAEECQAMACgCvgADAAEECQAQABoC/QADAAEECQARAA4DJwADAAEECQAS\nABoDPwBDAG8AcAB5AHIAaQBnAGgAdAAgADIAMAAxADQAIABiAHkAIAAoAFUAUgBXACkAKwArACAA\nRABlAHMAaQBnAG4AIAAmACAARABlAHYAZQBsAG8AcABtAGUAbgB0ACAARwBtAGIASAAAQ29weXJp\nZ2h0IDIwMTQgYnkgKFVSVykrKyBEZXNpZ24gJiBEZXZlbG9wbWVudCBHbWJIAABOAGkAbQBiAHUA\ncwBTAGEAbgBMAABOaW1idXNTYW5MAABSAGUAZwB1AGwAYQByAABSZWd1bGFyAAAxAC4AMAAwADAA\nOwBVAFIAVwAgADsATgBpAG0AYgB1AHMAUwBhAG4ATAAtAFIAZQBnAAAxLjAwMDtVUlcgO05pbWJ1\nc1NhbkwtUmVnAABOAGkAbQBiAHUAcwBTAGEAbgBMAC0AUgBlAGcAAE5pbWJ1c1NhbkwtUmVnAABW\nAGUAcgBzAGkAbwBuACAAMQAuADAAMAAwADsAUABTACAAMQAuADAAMAA7AGgAbwB0AGMAbwBuAHYA\nIAAxAC4AMAAuADUANwA7AG0AYQBrAGUAbwB0AGYALgBsAGkAYgAyAC4AMAAuADIAMQA4ADkANQAA\nVmVyc2lvbiAxLjAwMDtQUyAxLjAwO2hvdGNvbnYgMS4wLjU3O21ha2VvdGYubGliMi4wLjIxODk1\nAABOAGkAbQBiAHUAcwBTAGEAbgBMAC0AUgBlAGcAAE5pbWJ1c1NhbkwtUmVnAAAoAFUAUgBXACkA\nKwArACAARABlAHMAaQBnAG4AIAAmACAARABlAHYAZQBsAG8AcABtAGUAbgB0AAAoVVJXKSsrIERl\nc2lnbiAmIERldmVsb3BtZW50AABoAHQAdABwADoALwAvAHcAdwB3AC4AdQByAHcAcABwAC4AZABl\nAABodHRwOi8vd3d3LnVyd3BwLmRlAABoAHQAdABwADoALwAvAHcAdwB3AC4AdQByAHcAcABwAC4A\nYwBvAG0AAGh0dHA6Ly93d3cudXJ3cHAuY29tAABOAGkAbQBiAHUAcwAgAFMAYQBuAHMAIABMAABO\naW1idXMgU2FucyBMAABSAGUAZwB1AGwAYQByAABSZWd1bGFyAABOAGkAbQBiAHUAcwBTAGEAbgBM\nAFIAZQBnAABOaW1idXNTYW5MUmVnAAAAAgAAAAAAAP+CADIAAAAAAAAAAAAAAAAAAAAAAAAAAAL5\nAAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsA\nHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4\nADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQA\nVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQECAKMAhACFAL0AlgDoAIYAjgCLAJ0AqQCkAQMAigDa\nAIMAkwDyAPMAjQCXAIgAwwDeAPEAngCqAPUA9AD2AKIArQDJAMcArgBiAGMAkABkAMsAZQDIAMoA\nzwDMAM0AzgDpAGYA0wDQANEArwBnAPAAkQDWANQA1QBoAOsA7QCJAGoAaQBrAG0AbABuAKAAbwBx\nAHAAcgBzAHUAdAB2AHcA6gB4AHoAeQB7AH0AfAC4AKEAfwB+AIAAgQDsAO4AugEEAQUBBgEHAQgB\nCQD9AP4BCgELAQwBDQD/AQABDgEPARABAQERARIBEwEUARUBFgEXARgBGQEaARsBHAD4APkBHQEe\nAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAD6ANcBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgB\nOQE6ATsA4gDjATwBPQE+AT8BQAFBAUIBQwFEAUUBRgFHAUgBSQFKALAAsQFLAUwBTQFOAU8BUAFR\nAVIBUwFUAPsA/ADkAOUBVQFWAVcBWAFZAVoBWwFcAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkB\nagC7AWsBbAFtAW4A5gDnAW8ApgFwAXEBcgFzAXQBdQF2AXcBeAF5ANgA4QF6ANsA3ADdAOAA2QDf\nAXsBfAF9AX4BfwGAAYEBggGDAYQBhQGGAYcBiAGJAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYB\nlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUBpgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGz\nAJsBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHBAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4B\nzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHr\nAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6AfsB/AH9Af4B/wIAAgECAgIDAgQCBQIGAgcC\nCAIJAgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYCFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIk\nAiUCJgInAigCKQIqAisCLAItAi4CLwIwAjECMgIzAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkAC\nQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8CUAJRAlICUwJUAlUAsgCzAlYCVwC2ALcAxAJY\nALQAtQDFAIIAwgCHAKsAxgJZAloAvgC/AlsCXAC8Al0CXgJfAmACYQJiAmMCZAD3AmUCZgJnAmgC\naQJqAmsCbAJtAm4AjAJvAnACcQJyAnMCdAJ1AnYCdwJ4AnkCegJ7AnwCfQJ+An8CgAKBAoICgwKE\nAoUChgKHAJgCiAKJAKgCigKLAowCjQCaAJkA7wKOAo8CkAKRAKUCkgCSApMClAKVApYClwKYApkC\nmgCcApsCnAKdAp4CnwCnAI8CoACUAJUCoQKiAqMCpAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKx\nArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLAAsECwgLDAsQCxQLGAscCyALJAsoCywLMAs0C\nzgLPAtAC0QLSAtMC1ALVAtYC1wLYAtkC2gLbAtwC3QLeAt8C4ALhAuIC4wLkAuUC5gLnAugAuQLp\nAuoC6wLsAu0C7gLvAvAC8QLyAvMC9AL1AvYC9wL4AvkAwADBAvoC+wd1bmkwMEEwB3VuaTAwQUQH\nQW1hY3JvbgdhbWFjcm9uBkFicmV2ZQZhYnJldmUHQW9nb25lawdhb2dvbmVrC0NjaXJjdW1mbGV4\nC2NjaXJjdW1mbGV4CkNkb3RhY2NlbnQKY2RvdGFjY2VudAZEY2Fyb24GZGNhcm9uBkRjcm9hdAdF\nbWFjcm9uB2VtYWNyb24GRWJyZXZlBmVicmV2ZQpFZG90YWNjZW50CmVkb3RhY2NlbnQHRW9nb25l\nawdlb2dvbmVrBkVjYXJvbgZlY2Fyb24LR2NpcmN1bWZsZXgLZ2NpcmN1bWZsZXgKR2RvdGFjY2Vu\ndApnZG90YWNjZW50DEdjb21tYWFjY2VudAxnY29tbWFhY2NlbnQLSGNpcmN1bWZsZXgLaGNpcmN1\nbWZsZXgESGJhcgRoYmFyBkl0aWxkZQZpdGlsZGUHSW1hY3JvbgdpbWFjcm9uBklicmV2ZQZpYnJl\ndmUHSW9nb25lawdpb2dvbmVrAklKAmlqC0pjaXJjdW1mbGV4C2pjaXJjdW1mbGV4DEtjb21tYWFj\nY2VudAxrY29tbWFhY2NlbnQMa2dyZWVubGFuZGljBkxhY3V0ZQZsYWN1dGUMTGNvbW1hYWNjZW50\nDGxjb21tYWFjY2VudAZMY2Fyb24GbGNhcm9uBExkb3QEbGRvdAZOYWN1dGUGbmFjdXRlDE5jb21t\nYWFjY2VudAxuY29tbWFhY2NlbnQGTmNhcm9uBm5jYXJvbgtuYXBvc3Ryb3BoZQNFbmcDZW5nB09t\nYWNyb24Hb21hY3JvbgZPYnJldmUGb2JyZXZlDU9odW5nYXJ1bWxhdXQNb2h1bmdhcnVtbGF1dAZS\nYWN1dGUGcmFjdXRlDFJjb21tYWFjY2VudAxyY29tbWFhY2NlbnQGUmNhcm9uBnJjYXJvbgZTYWN1\ndGUGc2FjdXRlC1NjaXJjdW1mbGV4C3NjaXJjdW1mbGV4DFRjb21tYWFjY2VudAx0Y29tbWFhY2Nl\nbnQGVGNhcm9uBnRjYXJvbgRUYmFyBHRiYXIGVXRpbGRlBnV0aWxkZQdVbWFjcm9uB3VtYWNyb24G\nVWJyZXZlBnVicmV2ZQVVcmluZwV1cmluZw1VaHVuZ2FydW1sYXV0DXVodW5nYXJ1bWxhdXQHVW9n\nb25lawd1b2dvbmVrC1djaXJjdW1mbGV4C3djaXJjdW1mbGV4C1ljaXJjdW1mbGV4C3ljaXJjdW1m\nbGV4BlphY3V0ZQZ6YWN1dGUKWmRvdGFjY2VudAp6ZG90YWNjZW50BWxvbmdzCkFyaW5nYWN1dGUK\nYXJpbmdhY3V0ZQdBRWFjdXRlB2FlYWN1dGULT3NsYXNoYWN1dGULb3NsYXNoYWN1dGUMU2NvbW1h\nYWNjZW50DHNjb21tYWFjY2VudAd1bmkwMjFBB3VuaTAyMUIHdW5pMDJDOQV0b25vcw1kaWVyZXNp\nc3Rvbm9zCkFscGhhdG9ub3MHdW5pMDM4NwxFcHNpbG9udG9ub3MIRXRhdG9ub3MJSW90YXRvbm9z\nDE9taWNyb250b25vcwxVcHNpbG9udG9ub3MKT21lZ2F0b25vcxFpb3RhZGllcmVzaXN0b25vcwVB\nbHBoYQRCZXRhBUdhbW1hB3VuaTAzOTQHRXBzaWxvbgRaZXRhA0V0YQVUaGV0YQRJb3RhBUthcHBh\nBkxhbWJkYQJNdQJOdQJYaQdPbWljcm9uAlBpA1JobwVTaWdtYQNUYXUHVXBzaWxvbgNQaGkDQ2hp\nA1BzaQd1bmkwM0E5DElvdGFkaWVyZXNpcw9VcHNpbG9uZGllcmVzaXMKYWxwaGF0b25vcwxlcHNp\nbG9udG9ub3MIZXRhdG9ub3MJaW90YXRvbm9zFHVwc2lsb25kaWVyZXNpc3Rvbm9zBWFscGhhBGJl\ndGEFZ2FtbWEFZGVsdGEHZXBzaWxvbgR6ZXRhA2V0YQV0aGV0YQRpb3RhBWthcHBhBmxhbWJkYQd1\nbmkwM0JDAm51AnhpB29taWNyb24DcmhvB3VuaTAzQzIFc2lnbWEDdGF1B3Vwc2lsb24DcGhpA2No\naQNwc2kFb21lZ2EMaW90YWRpZXJlc2lzD3Vwc2lsb25kaWVyZXNpcwxvbWljcm9udG9ub3MMdXBz\naWxvbnRvbm9zCm9tZWdhdG9ub3MGdGhldGExBHBoaTEGb21lZ2ExB3VuaTA0MDAJYWZpaTEwMDIz\nCWFmaWkxMDA1MQlhZmlpMTAwNTIJYWZpaTEwMDUzCWFmaWkxMDA1NAlhZmlpMTAwNTUJYWZpaTEw\nMDU2CWFmaWkxMDA1NwlhZmlpMTAwNTgJYWZpaTEwMDU5CWFmaWkxMDA2MAlhZmlpMTAwNjEHdW5p\nMDQwRAlhZmlpMTAwNjIJYWZpaTEwMTQ1CWFmaWkxMDAxNwlhZmlpMTAwMTgJYWZpaTEwMDE5CWFm\naWkxMDAyMAlhZmlpMTAwMjEJYWZpaTEwMDIyCWFmaWkxMDAyNAlhZmlpMTAwMjUJYWZpaTEwMDI2\nCWFmaWkxMDAyNwlhZmlpMTAwMjgJYWZpaTEwMDI5CWFmaWkxMDAzMAlhZmlpMTAwMzEJYWZpaTEw\nMDMyCWFmaWkxMDAzMwlhZmlpMTAwMzQJYWZpaTEwMDM1CWFmaWkxMDAzNglhZmlpMTAwMzcJYWZp\naTEwMDM4CWFmaWkxMDAzOQlhZmlpMTAwNDAJYWZpaTEwMDQxCWFmaWkxMDA0MglhZmlpMTAwNDMJ\nYWZpaTEwMDQ0CWFmaWkxMDA0NQlhZmlpMTAwNDYJYWZpaTEwMDQ3CWFmaWkxMDA0OAlhZmlpMTAw\nNDkJYWZpaTEwMDY1CWFmaWkxMDA2NglhZmlpMTAwNjcJYWZpaTEwMDY4CWFmaWkxMDA2OQlhZmlp\nMTAwNzAJYWZpaTEwMDcyCWFmaWkxMDA3MwlhZmlpMTAwNzQJYWZpaTEwMDc1CWFmaWkxMDA3Nglh\nZmlpMTAwNzcJYWZpaTEwMDc4CWFmaWkxMDA3OQlhZmlpMTAwODAJYWZpaTEwMDgxCWFmaWkxMDA4\nMglhZmlpMTAwODMJYWZpaTEwMDg0CWFmaWkxMDA4NQlhZmlpMTAwODYJYWZpaTEwMDg3CWFmaWkx\nMDA4OAlhZmlpMTAwODkJYWZpaTEwMDkwCWFmaWkxMDA5MQlhZmlpMTAwOTIJYWZpaTEwMDkzCWFm\naWkxMDA5NAlhZmlpMTAwOTUJYWZpaTEwMDk2CWFmaWkxMDA5Nwd1bmkwNDUwCWFmaWkxMDA3MQlh\nZmlpMTAwOTkJYWZpaTEwMTAwCWFmaWkxMDEwMQlhZmlpMTAxMDIJYWZpaTEwMTAzCWFmaWkxMDEw\nNAlhZmlpMTAxMDUJYWZpaTEwMTA2CWFmaWkxMDEwNwlhZmlpMTAxMDgJYWZpaTEwMTA5B3VuaTA0\nNUQJYWZpaTEwMTEwCWFmaWkxMDE5Mwd1bmkwNDYyB3VuaTA0NjMHdW5pMDQ3Mgd1bmkwNDczB3Vu\naTA0NzQHdW5pMDQ3NQlhZmlpMTAwNTAJYWZpaTEwMDk4B3VuaTA0OTIHdW5pMDQ5Mwd1bmkwNDk2\nB3VuaTA0OTcHdW5pMDQ5QQd1bmkwNDlCB3VuaTA0OUMHdW5pMDQ5RAd1bmkwNEEyB3VuaTA0QTMH\ndW5pMDRBRQd1bmkwNEFGB3VuaTA0QjAHdW5pMDRCMQd1bmkwNEIyB3VuaTA0QjMHdW5pMDRCNgd1\nbmkwNEI3B3VuaTA0QjgHdW5pMDRCOQd1bmkwNEJBB3VuaTA0QkIHdW5pMDRDMAd1bmkwNENGB3Vu\naTA0RDgJYWZpaTEwODQ2B3VuaTA0RTIHdW5pMDRFMwd1bmkwNEU4B3VuaTA0RTkHdW5pMDRFRQd1\nbmkwNEVGBldncmF2ZQZ3Z3JhdmUGV2FjdXRlBndhY3V0ZQlXZGllcmVzaXMJd2RpZXJlc2lzBlln\ncmF2ZQZ5Z3JhdmUHdW5pMjAwMglhZmlpMDAyMDgNdW5kZXJzY29yZWRibA1xdW90ZXJldmVyc2Vk\nBm1pbnV0ZQZzZWNvbmQJZXhjbGFtZGJsB3VuaTIwM0UMemVyb3N1cGVyaW9yDGZvdXJzdXBlcmlv\ncgxmaXZlc3VwZXJpb3ILc2l4c3VwZXJpb3INc2V2ZW5zdXBlcmlvcg1laWdodHN1cGVyaW9yDG5p\nbmVzdXBlcmlvcgluc3VwZXJpb3IEbGlyYQZwZXNldGEERXVybwlhZmlpNjEyNDgISWZyYWt0dXIJ\nYWZpaTYxMjg5CWFmaWk2MTM1Mgt3ZWllcnN0cmFzcwhSZnJha3R1cgd1bmkyMTFFB3VuaTIxMjYJ\nZXN0aW1hdGVkBWFsZXBoCW9uZWVpZ2h0aAx0aHJlZWVpZ2h0aHMLZml2ZWVpZ2h0aHMMc2V2ZW5l\naWdodGhzCWFycm93bGVmdAdhcnJvd3VwCmFycm93cmlnaHQJYXJyb3dkb3duCWFycm93Ym90aAlh\ncnJvd3VwZG4HdW5pMjE5Ngd1bmkyMTk3B3VuaTIxOTgHdW5pMjE5OQxhcnJvd3VwZG5ic2UOY2Fy\ncmlhZ2VyZXR1cm4MYXJyb3dkYmxsZWZ0CmFycm93ZGJsdXANYXJyb3dkYmxyaWdodAxhcnJvd2Ri\nbGRvd24MYXJyb3dkYmxib3RoCXVuaXZlcnNhbAtleGlzdGVudGlhbAhlbXB0eXNldAhncmFkaWVu\ndAdlbGVtZW50Cm5vdGVsZW1lbnQIc3VjaHRoYXQHdW5pMjIxMwd1bmkyMjE1DGFzdGVyaXNrbWF0\naAd1bmkyMjE5DHByb3BvcnRpb25hbApvcnRob2dvbmFsBWFuZ2xlB3VuaTIyMjMHdW5pMjIyNQd1\nbmkyMjI3B3VuaTIyMjgMaW50ZXJzZWN0aW9uBXVuaW9uB3VuaTIyMkUJdGhlcmVmb3JlB3VuaTIy\nMzUHdW5pMjIzNwljb25ncnVlbnQLZXF1aXZhbGVuY2UMcHJvcGVyc3Vic2V0DnByb3BlcnN1cGVy\nc2V0CW5vdHN1YnNldAd1bmkyMjg1DHJlZmxleHN1YnNldA5yZWZsZXhzdXBlcnNldAd1bmkyMjk1\nDmNpcmNsZW11bHRpcGx5DXBlcnBlbmRpY3VsYXIFaG91c2UNcmV2bG9naWNhbG5vdAppbnRlZ3Jh\nbHRwCmludGVncmFsYnQJYW5nbGVsZWZ0CmFuZ2xlcmlnaHQIU0YxMDAwMDAIU0YxMTAwMDAIU0Yw\nMTAwMDAIU0YwMzAwMDAIU0YwMjAwMDAIU0YwNDAwMDAIU0YwODAwMDAIU0YwOTAwMDAIU0YwNjAw\nMDAIU0YwNzAwMDAIU0YwNTAwMDAIU0Y0MzAwMDAIU0YyNDAwMDAIU0Y1MTAwMDAIU0Y1MjAwMDAI\nU0YzOTAwMDAIU0YyMjAwMDAIU0YyMTAwMDAIU0YyNTAwMDAIU0Y1MDAwMDAIU0Y0OTAwMDAIU0Yz\nODAwMDAIU0YyODAwMDAIU0YyNzAwMDAIU0YyNjAwMDAIU0YzNjAwMDAIU0YzNzAwMDAIU0Y0MjAw\nMDAIU0YxOTAwMDAIU0YyMDAwMDAIU0YyMzAwMDAIU0Y0NzAwMDAIU0Y0ODAwMDAIU0Y0MTAwMDAI\nU0Y0NTAwMDAIU0Y0NjAwMDAIU0Y0MDAwMDAIU0Y1NDAwMDAIU0Y1MzAwMDAIU0Y0NDAwMDAHdXBi\nbG9jawdkbmJsb2NrBWJsb2NrB2xmYmxvY2sHcnRibG9jawdsdHNoYWRlBXNoYWRlB2Rrc2hhZGUJ\nZmlsbGVkYm94B3VuaTI1QTEGSDE4NTQzBkgxODU1MQpmaWxsZWRyZWN0B3RyaWFndXAHdHJpYWdy\ndAd0cmlhZ2RuB3RyaWFnbGYGY2lyY2xlBkgxODUzMwlpbnZidWxsZXQJaW52Y2lyY2xlCm9wZW5i\ndWxsZXQJc21pbGVmYWNlDGludnNtaWxlZmFjZQNzdW4GZmVtYWxlBG1hbGUFc3BhZGUEY2x1YgVo\nZWFydAdkaWFtb25kC211c2ljYWxub3RlDm11c2ljYWxub3RlZGJsAmZmA2ZmaQNmZmwAAAAAAAH/\n/wACAAEAAAAMAAAAEAAAAAIAAAAEAAAAAgAAAAEAAAAKAGwAoAACREZMVAAObGF0bgAaAAQAAAAA\n//8AAQAAACgABkFaRSAAMkNSVCAAMkRFVSAAKE1PTCAAPFJPTSAAPFRSSyAAMgAA//8AAgAAAAEA\nAP//AAIAAAACAAD//wADAAAAAQADAARhYWx0ABpsaWdhACBsaWdhAChsb2NsAC4AAAABAAAAAAAC\nAAIAAwAAAAEAAwAAAAEAAQAEAAoAEgAaACIAAQAAAAEAIAABAAAAAQAmAAQAAAABACwABAAAAAEA\nRgABAAYAKQABAAIBIAEhAAEABgApAAEAAgEgASEAAQAcAAEACAACAAYADgL3AAMASQBMAvUAAgBM\nAAEAAQBJAAEAGgABAAgAAgAGAAwC9AACAEkC9gACAE8AAQABAEkAAQAAAAoAVABiAAJERkxUAA5s\nYXRuABoABAAAAAD//wABAAAAKAAGQVpFIAAoQ1JUIAAoREVVIAAoTU9MIAAoUk9NIAAoVFJLIAAo\nAAD//wABAAAAAWtlcm4ACAAAAAEAAAABAAQAAgAAAAEACAABPsoABAAAAOcB2AHiAgACVgJcAm4C\n8AMWA5gDpgSsBQ4FqAYOBsAHiggMCDIIXAh6CXQKLgpYCtILYAxyDJQNfg4MD8oQNBFmEswTUhR4\nFP4VWBXeFhQWQha4FvIXYBgeGLAYyhkAGSYZ5BoCGiAaRhqkGsoa4BvWHDAc2h0AHYYeLB56Hwgf\nSh+gH+4gFCBCILwgFCECIXQh6iH8IgIiECICIgIiOiJkImoicCJqIo4isCL6IwwjDBXeIwwjGiMs\nI34jjCOSI6AjsiO4I/YkICQuJEwkeiSAJIok4CTmJQwldiW0Jcol0CX2JkAmRiZQJrYnOCeSJ6An\nuifMJ94n5CfqJ/AoOihMKJ4owCjWKOwpKil0KXoplCmiKdAp4io0KlIqyCsCKzgrZit4K7Ir4Cvm\nLDwsRiyALIYs2C0GLUwtli3gLgYuJC5GLmgubi7ALtIu2C8GLyAvJi88LwYvVi/0MBIwMDB2MRAx\nijHEMgIytDK6MvwzUjOYM9o0PDSGNUQ1/jY4NnY2lDayNuQ3Jjc8N143fDe2N9g3+jggOCY4SDhu\nOKg42jkwOX45tDnWOfQ6DjosOk46cDqGOqg6zjsAO6I7xDw6PMw9Ij1sPfo+ID52PpwAAgI3AAcC\nOwAPAAcAJP/CADcAAQA5AAUAOgAQADv/8QA8//4APf/wABUAJP/zAC3/6QA3AAUAOgAEADv/+wA8\nAAcAPf/0AEUACwBJAAIASgAGAEsAAwBMAAUATQAYAE4ACQBPAAQAUwALAFz/9QCI/+wCNgAkAvUA\nEwL2ABAAAQAR/8cABAAQ/+sCMgAEAjf/yAI7/9MAIAAk//wAJgAWACoAGAAtABcAMgAaADQAGwA2\nAAUAN/+yADn/1QA6/+8AO//NADz/pgA9/94ARP/wAEn/+gBKABIAVv/8AFf//ABZ//UAW//TAFz/\n8ABd/8cAg//8AIb//ACH//wAiP/1AKb/8AGx//wBw/+yAcT/wQHj/8oB5P/vAAkACv/HAA3/ywAQ\n/+sAdP/5AHX/8gB7/8gCMgAEAjf/yAI7/9IAIAASABIAJQAmACcAIQAoACEAKQAhACsAJAAsABwA\nLf/8AC4AJgAvACYAMAAoADEAKAA1AB8ANwAdADgAIAA5ABcAOgAcADsAEwA8AB8APQALAEUAHABJ\nABEASgASAEsAFABMABIATQARAE4AGgBPABUAVwATAFwAAwL1ACcC9gAkAAMACgAPAjcACwI7ABMA\nQQAK/8gADP/2AA8ABQAQ//4AEQAFACQAFAAl//YAJv/dACr/3wAtAAEAMv/eADT/4gA2/+kAN/+j\nADj/3QA5/7kAOv/QADsAEgA8/6IAPQAPAEAAAQBE//sARQAEAEb/9gBH//kASP/yAEr/9ABS//QA\nVP/5AFb//QBX//AAWP/1AFn/4gBa/+0AXP/dAF0ADwBgAAcAbf/TAIn/3QCY/94Am//dAJz/3QCd\n/90Anv/dAJ//ogCp//YAvv/1AL//3QEk/6EBJv+jAWj/3wFv/94Bc/+jAXT/ogF1/8QBd//MAYL/\n2QGM/+EBkv/oAZT/8gGV//MBnP/yAjf/vwI7/8wCRP/XABgAJP/qACb/9wAtAAYAMv/6ADb/9wA3\n/+cAOf/XADr/6wA8/9MAPf/wAFz/9QCD/+oAhP/qAIX/6gCG/+oAh//qAIj/6gCU//oAlf/6AJb/\n+gCY//oBFP/9AYr/6gJ5//4AJgAK//8AD//uABAAEwAR/+4AHf/7AB7//gAk/98AJv/zACf/8QAq\n//UAK//0AC0AAwAu//YAMv/4ADb/9AA3/+EAOf/VADr/4wA8/84APf/jAET/8QBI//wAUv/+AFb/\n9gBc//wAg//fAIb/3wCH/98AiP/fAJX/+ACY//gApv/xAKj/9AC4//4BFP/3ARX//AI3//kCOwAC\nABkAEAAUACT/2QAo//QALf/6ADf/0wA5/84AOv/lADv/zgA8/8EAPf/RAET/8gBI//0AUv//AFz/\n9wCC/9kAg//ZAIT/2QCF/9kAhv/ZAIf/2QCI/9IApv/yAKj/9gC4//8BFf/9ACwACv/pABD/8QAk\nAAEAJv/hACn/4AAy/+YANv/dADf/9gA5//EAOv/1ADv//wA8//kAPf/8AET/9ABF//EARv/pAEf/\n7ABI/+UASv/oAEv/6QBM/+oATf/pAE7/7wBP/+oAUv/nAFT/7ABW//UAV//iAFn/5ABa/+kAXP/e\nAF3//ACV/+YAmP/mAM7/4QFo/+cBb//mAXX/0wGC/94Bg//kAYz/4wGT//ICN//hAjv/6AAyAAr/\n/QAP/5kAEP/yABH/mQAk/7oAJv/lACr/5wAt/8cAMv/qADb/4gA3AAoAOgAJADwADAA9//kARP/e\nAEj/6ABL//QATP/2AE3/9ABP//UAUv/rAFX/3ABY/94AXP/hAIL/ugCD/7oAhP+6AIX/ugCG/7oA\nh/+6AIj/tQCY/+oAo//eAKb/3gCn/94AqP/iAKv/6AC1/+sAuP/rALr/6wC8/94Avv/eAMT/ugDG\n/7wBE//rART/5wEV/+kBMf/eAjf/9AI7//wAIAAK//UAD//7ABAAEAAR//sAHQAHAB4ADAAk//oA\nK//7ADb/8wA3/9QAOf/PADr/5QA7//cAPP/BAD3/9ABE//oAUgADAFr/+wBc//IAgv/6AIP/+gCE\n//oAhf/6AIb/+gCH//oAiP/9AKb/+gCo//4AuAADARUAAQI3/+8CO//3AAkAJP/1ACz/8wA3//MA\nPP/2AET/+QBc//UAiP/4AKb/+QCo//0ACgAk//IALf/yADf/8AA5/+sAOv/vADv/8AA8//MAPf/t\nAFz/8gCI//UABwAk/+IALv//ADz/+ABc//cAhv/iAIf/4gCI/+IAPgAK//oADAAKABD/0wAkABYA\nJf/3ACb/zgAn//IAKP/yACn/8gAq/9AAK//1ACz/7QAt//gAL//3ADD/+QAx//kAMv/TADP/8QA0\n/9MANf/wADb/2gA3ABQAOP/0ADkADgA6ABMAOwATADwAFgA9ABAAQAATAET/9QBI/+IAS//+AE3/\n/gBP//8AUv/jAFj/7ABa/9QAXP+/AGAAEACIABkAlf/TAJj/0wCm//UAp//1AKj/+gC1/+MAuP/j\nAL7/7ADH//EBFP/VARX/4wFv/9MBdf+yAXv/8QF8//oBjv/hAZT/5wGY/9MBm//hAZz/5wI3//4C\nO//6AC4ACv91AAz/1QAQ/3wAJAAQACb/1wAq/9YAMP/0ADL/1wA2/+0AN/+XADj/3QA5/5cAOv+8\nADz/hgA9AAsAQP/aAEQAAwBI//QATP/6AE3/+ABS//YAWP/5AFz/xgBg/+MAgwAQAIYAEACHABAA\niAATAIn/1wCU/9cAlf/XAJb/1wCX/9cAmP/XAJ7/2wCf/4cApgADALj/9gC+//kAv//GAM7/1wEU\n/94BJP+XASb/lwI3/20CO/91AAoAJP/4ADEAAQA3//YAOv/1ADz/+QA9//MATQABAFz/+ACI//sB\nhAALAB4AD//4ABH/+AAk//YAJv/9ACr//wA3//QAOv/zADz/9wA9//EARP/6AFIAAwBY//8AXP/2\nAIP/9gCG//YAh//2AIj/+QCJ//0Ao//6AKb/+gCn//oAqP/+ALUAAwC4AAMAugAFAL7//wFh//YB\nfAAJAYQACQGY/+sAIwAP/+gAEAAdABH/6AAdAAgAHgALACT/3gAm//4ALQACADP/+QA2//YAN//V\nADn/0wA6/+sAO//TADz/xQA9/9gAWQADAFoABgBb//kAXP/9AF3/9wCD/94Ahv/eAIf/3gCI/9kB\nFAACAWH/3gFm/9gBa//fAXP/1QF0/8UBdv/TAXf/8AGK/+kCef/vAEQACgAOAA//fAAQ/9gAEf98\nACT/swAl/+QAJv/tACf/3wAo/98AKf/fACr/7wAr/+IALP/aAC3/rAAu/+QAL//kADD/5gAx/+YA\nMv/yADP/3gA0//EANf/dADb/6QA3//EAOP/hADn/4QA6/+sAO//PADz/3QA9/98ARP/lAEj/4gBJ\nAAQAS//rAEz/7ABN/+sAT//sAFL/5gBXAAYAWgAKAFwAAgCD/7MAhP+zAIb/swCH/7MAiP+sAKP/\n5QCm/+UAp//lAKj/6ACr/+IAtf/mALj/5gC6/+YAxP+zAMb/tAEU//EBFf/kAWH/swFv//IBfP/1\nAYD/5AGE//UBjv/jAZv/4wGd/8cCNwAIAjsAEgAIAAwAEQAQAB4ANf/8ADj//ABAABwAWAAIAGAA\nIAC+AAgAOgAKAAQADAAJABD//gAkAAYAJf/6ACb/7wAn//UAKP/0ACn/9AAq//EAK//4ACz/7wAt\n//EALv/6AC//+QAw//wAMf/7ADL/9AAz//QANP/0ADX/8wA2//IAN//pADj/8AA5/9kAOv/oADsA\nBAA8/9UAPQABAEAAGABE//MASP/2AFL/+ABY//cAXP/4AGAAGQCIAAkAif/vAJX/9ACY//QAnv/w\nAJ//1gCj//MApv/zAKf/8wCo//cAq//2ALX/+AC4//gAvP/3AL7/9wC///gBFP/4ARX/9gEk/+YB\nJv/pAjf//gI7AAgAIwAQABQAJP/pACb/9AAq//MALQAFADL/9gA2//UAN//mADn/2AA6/+YAPP/S\nAD3/8ABE//kASP/9AEv/+wBM//sATf/4AE///ABS//8AVAADAFf//ABZ//kAWv/7AFz/+ACD/+kA\nhv/pAIf/6QCI/+kApv/5AKj//ACr//0AuP//ART/+QEV//0CN//7AG8ACgADAAwABwAP/6AAEP+1\nABH/oAAd/60AHv+yACT/oAAl//QAJv/TACf/7wAo/+8AKf/vACr/0wAr//IALP/qAC3/nAAu//QA\nL//0ADD/9gAx//YAMv/VADP/7gA0/9AANf/tADb/6QA3ABEAOP/xADkACwA6ABAAOwAHADwAEwBA\nABAARP+dAEb/pwBI/6MASv+lAEv/+wBM//0ATf/7AE///ABS/6UAVf+kAFb/pgBY/6YAWf+gAFr/\nowBc/5sAYAANAG3/iwCC/6AAg/+gAIT/oACF/6AAhv+gAIf/oACI/58AlP/VAJX/1QCW/9UAl//V\nAJj/1QCa/9YAo/+lAKb/2ACo/6EAqf+nAKv/owCv/+wAtf+oALb/zAC4/9gAuv+pALz/wwC+/9cA\nv//dAMT/oADG/6IAx/+cAMn/pwDb/6MBEv/VARP/xAEU/90BFf+jARf/zwEd/7MBIf+mATH/wwEz\n/8MBYf+gAWv/owFv/9UBcwARAXQAEwF1/60Be/+5AXz/wwGA/6cBhP+tAYX/8wGO/6IBkP+kAZL/\nmQGU/6YBm/+nAZz/wwGd/5ACN//7AjsAAwJE/48AGgAP/+kAEf/pACT/3QA2//YAN//0ADn/7gA6\n//MAO//qADz/9gA9/+IATf/6AFD/+gBR//oAUwACAFX/+wBZ//oAWv/9AFv/8QBc//UAXf/mAIP/\n3QCE/90Ahf/dAIb/3QCH/90AiP/ZAEwADAAFAA//rAAQ/9sAEf+sAB3/0wAe/9cAJP+8ACb/1gAo\n/+0AKv/YACv/8AAs/+gALf+8AC//8gAy/9sANf/rADb/3QA3AA8AOP/vADwAEQBAAA4ARP/GAEb/\n0ABI/8wASv/OAEv/+QBM//sATf/5AE//+gBS/84AVf/WAFj/1gBc/+0AYAALAG3/sACC/7wAg/+8\nAIT/vACF/7wAhv+8AIf/vACI/7UAlP/bAJX/2wCW/9sAl//bAJj/2wCa/+MAo//GAKb/0gCo/8oA\nq//MAK//5gC1/84Atv/OALj/0gC6/9IAvP/YAL7/2AC//+8AxP+8AMb/vADH/8cA0f/TANv/zADd\n/88BEv/bARP/zgEU/9wBFf/MARf/1gEb//8BHf/PATH/2AEz/9gCRP+zAFkACgAWAAwACAAP/8oA\nEP/0ABH/ygAd/+wAHv/wACT/zgAl//YAJv/sACf/8QAo//AAKf/wACr/6wAr//QALP/rAC3/1gAu\n//YAL//1ADD/+AAx//cAMv/uADP/8AA1/+8ANv/pADcAEgA4//MAOQANADoAEQA8ABUAPQABAEAA\nFwBE/9sARv/oAEj/4wBK/+YAS//8AEz//gBN//wAT//9AFL/5QBV/+MAWP/lAFz/+gBgABgAbf/I\nAIL/zgCD/84AhP/OAIX/zgCG/84Ah//OAIj/yACU/+4Alf/uAJb/7gCX/+4AmP/uAJr/9QCj/9sA\npv/bAKj/3wCr/+MAr//vALX/5QC2/+UAuP/lALr/6wC8/+UAvv/lAL///ADE/84Axv/TAMf/2gDR\n/+oA2//jAN3/4wES/+4BE//lART/7wEV/+MBF//jARsAAgEd/+YBMf/lATP/5QI3ABICOwAYAkT/\nzAAhAAr/9QAMAAEAEP/PACQAEQAm/9IAMv/XADT/1wA3AAsAOgAKADwADQBAAAoARP/wAEj/3gBS\n/98AWP/oAFz/xgBgAAcAiAAUAJj/1wCo//UAq//eALj/3wC+/+gBFP/ZAXv/7QF8//UBgP/jAY7/\n3QGT/9YBmP/OAZv/3QI3//UCO//1AEkACgACAAwADQAP/5IAEP+xABH/kgAd/7MAHv+4ACT/pAAm\n/8UAKv/FAC3/mQAy/8gANP/FADb/2AA3ABcAOQARADoAFgA7AA0APQAFAEAAFgBE/6oASP+pAEr/\nqwBMAAIAUv+rAFP/yQBU/7AAWP/BAFn/2wBgABMAbf+HAIL/pACD/6QAhP+kAIX/pACG/6QAh/+k\nAIj/nACU/8gAlf/IAJb/yACX/8gAmP/IAJr/ygCj/6oApv/WAKj/rQCr/6kAr//dALX/qwC4/9YA\nuv+vALz/xAC+/9YAxP+kAMb/pADH/6wA2/+pARP/tgEU/80BF//CATP/xAFh/6QBaP/IAW//yAFz\nABcBdf+pAY//wAGb/60CNwABAjsAAwJE/4oCef+0ACEACgAGAAwAAQAP/+sAEP+bABH/6wAd/+AA\nHv/gACQADgAo/+oALP/lADL/1AA4/+sAOgAKADwADQA9AAgAQAAKAEj/8gBM//cAUv/zAFn/3wBa\n/+EAXP/eAGAABwCIABEAlf/UAKgABAC4//MBFP/cARX/8gGEAAgBjv/xAjcABwI7AAsAFgAk//4A\nLf/6ADcADAA5AAYAOgANADsAAgA8AA4APf/7AEUAHABJABEASgAYAEsAFABMABYATQAhAE4AGgBP\nABUAUwAcAFwABACI//gCNgAoAvUAIgL2AB8AIQAkABsAJQAmACYAHAAnACEAKgAaACsAJAAsABsA\nLQAJAC4AJgAvACUAMAAoADEAJwAyAB0AMwAgADQAHQA1AB8ANgAcADf/1AA4ABgAOf/1ADoACwA7\nABkAPP/eAD0AFgBHADQASQAqAEoALwBMADMATQAwAE8AMgCrAC0C9QAmAvYAJAANAA//+AAR//gA\nSv/5AE3/+wBX//UAWf/sAFr/8wBbABUAXP/lAF0ADgCh//sCMgAYAjf/6AALAA3/9AAP/+sAEf/r\nAB3//QAeAAIASgAHAFn/9QBa//4AXP/wAF3/8wIyAC4AHQAE/+MADf/+AA//+gAQ//0AEf/6AB3/\n/wAeAAQAIv/QAC0AEgBEAAcARgALAEgABgBN//4ATgAGAE8AAQBSAAgAVgAKAFcACABYAAEAXP/6\nAKYABwCoAAoAtQAIALgACAC+AAEBFQAGAjIAFgI3//sCOwAFAA4ADAAJAA//9AAR//QAQAAbAET/\n/ABKAAQATQABAFkABABaAAYAXP//AF3/+wBgAB4Apv/8AjIAIQAbAAT/3gAN/+8AD//pABAADAAR\n/+kAHf/4AB7/+wAi/7wARP/5AEUAAgBJ//YASgABAEv/+wBN//gAT//8AFb//ABX//cAWf/xAFr/\n9wBb/+MAXP/rAF3/8QCh//sApv/5AUD/8QIyACYCN//tAC8ABP/eAAoABAAMAAgADQACAA//3QAQ\n//IAEf/dAB3/9wAe//oAIv/2AEAAEQBE//gARv/4AEf/+wBI//IASQAVAEr/+QBM//4ATf/8AE//\n/QBS//YAVgABAFcAFwBY//4AWgAbAFwAEgBdAAQAYAAQAKP/+ACm//gAp//4AKj//ACr//IAr//w\nALX/9gC4//YAuv/2AL7//gC/ABMAx//5ARX/9QEX//wBMf/+AjIACgI3//8COwAIAlz//QAkAAT/\n4AAMAAIADf/0AA//7QAR/+0AHf//AB4AAgAi/9sAQAAUAET/9QBHAAMASP/7AEn/+gBK//4AS//5\nAE3/+wBO//8AT//6AFL//wBV//kAVv/7AFf//ABZ//0AXP/4AF3/9ABgABcApv/1AKf/9QCo//kA\nq//7ALX//wC4//8BFf/9AjIAGgI3//QCO//+AAYADf/wAFn/8gBc/+wAv//sAjIAHAI3/+4ADQAM\nAAQADf/2ADf/+ABAABYASv//AE3//QBZ//8AWgABAF3/9QBgABkCMgAbAjf/9QI7//4ACQAMAAUA\nDf/3AEAAFwBc//sAYAAaALUAAQC4AAEA2//+AjIAHQAvAAT/6AAN//sAD//7ABD/1AAR//sAHf/y\nAB7/9gAi//EARP/9AEUADQBG/+8AR//yAEj/6wBJABAASv/rAEsABQBMAAYATQAFAE4ACwBPAAYA\nUAAFAFEABQBS/+0AUwANAFT/8ABVAAUAVv/+AFcAEgBY//kAWQATAFoAFgBbAB8AXAANAF0AGACj\n//0Apv/9AKf//QCoAAIAq//rALX/7QC4/+0Avv/5AMf/+gDb/+oCMv/uAjf/9wI7//8ABwAP/+8A\nEf/vAE3//gBaAAIAXP/7AF3/9gIyABwABwBN//oAUwABAFn/8gBa//cAXP/sAF3/9gIyABwACQA3\n/6IATf/7AFMAAgBZ//MAWv/4AFz/7ABd//cCMgAdAjf/7gAXAA3/7QAP/+cAEf/nAB3/9wAe//wA\nN/+eAE3/+gBX//cAWf/uAFr/9ABb/+UAXP/oAF3/7gGAAAIBgv/oAYr/6AGM/+0Bj//dAZMABAGU\n//0Blv/YAjIAKAI3/+sACQAN//QASgAHAFf//QBZ//QAWv/7AFz/7gBd//UAv//uAjIALgAFAAwA\nCQBAABsARgAGAGAAHgIyACEAPQAE/+IACgABAA0AAwAP/7oAEP/PABH/ugAd/+oAHv/pACL/+gBE\n//wARQAHAEb//ABH//8ASP/2AEkAGQBK//0ATAABAE4ABQBS//oAUwAHAFQAAQBWAAUAVwAbAFgA\nAgBZABwAWgAfAFsAEwBcABcAXQAIAKL//ACj//wApP/8AKb//ACn//wAqf/8AKr/9gCr//YArP/2\nALT/+gC1//oAtv/6ALj/+gC6//oAvAACAL4AAgC/ABcAx//9AM///ADR//8A2//1ARP/+gEV//kB\nJQAbAScAGwExAAIBMwACATwACAE+AAgBQAAIAjL/6AI7AAgAFgAE/9oAD//2ABD/9QAR//YAHf/2\nAB7//AAi/8cARP//AEn/+wBK//4ATv/+AFYAAgBX//0AWf/0AFr/+ABc/+4AXf//AKb//wCr//wC\nMgAOAjf/6QI7//MAKgAE/+AADf/+AA//8AAQ//AAEf/wAB3//wAeAAEAIv/0ADb/+ABE//4ARv/2\nAEf/+QBI//IASv/3AEv/+gBM//sATf/6AFD/+gBR//oAUv/0AFMAAgBU//sAVf/7AFcAFQBY//wA\nWQAWAFoAGQBcABAAXQANAKP//gCm//4Ap//+AKgAAwCr//IAtf/0ALj/9AC+//wAx//7ANv/8gIy\nAAgCN//9AjsABgAJAA//7QAR/+0ATf/8AFn//gBb//sAXP/3AF3/9AIyABoCN//0ACEADQACAA//\nuQAQ//IAEf+5AB3/6wAe/+8ARP/vAEb/8QBI/+wASv/wAE3//wBS/+8AVf//AFb/+ABYAAEAXAAV\nAKL/7wCj/+8ApP/vAKX/7wCm/+8Ap//vAKj/8wCq/+wAq//sAKz/7AC0/+8Atf/vALj/7wC6/+8A\nvgABARX/7gIyAAoAKQAE/+EACgADAA0ABwAP/8wAEP/9ABH/zAAd//YAHv/6ACL/+QBE//IARv/4\nAEj/8wBJABgASv/2AE3//wBS//UAUwAGAFX//wBW//sAVwAaAFgAAQBcABUAXQAHAKL/8gCj//IA\npP/yAKX/8gCm//IAp//yAKj/9gCq//MAq//zAKz/8wC0//UAtf/1ALj/9QC6//gAvgABAjIAFgI3\nAAUCOwAPABMABP/aAA3/+QAP/+wAEP/OABH/7AAd/+4AHv/yACL/8ABE/+4ARv/pAEj/5QBS/+cA\nVP/sAFwADACr/+UAuP/nAjL/5wI3//YCO//+ACMABP/dAAr//QAN//8AD/+5ABD/7gAR/7kAHf/n\nAB7/6wAi//UARP/qAEb/7ABI/+cASv/sAE3/+wBP//wAUv/qAFb/8wCi/+oAo//qAKT/6gCl/+oA\npv/qAKf/6gCo/+0Aqv/nAKv/5wCs/+cAtP/qALX/6gC4/+oAuv/rAM//7AEd//MCMgAGAjsABwAQ\nAAT/0wAN//IAD//mABD/yAAR/+YAHf/kAB7/6ABE//kASP/pAEz/8gBS/+sAWP/wAKb/+QC4/+sA\nvv/wAjL/4gAVACT/9AAt/+8AN//9ADn/+AA6AAYAO//zAD3/7ABFABYASQAKAEoAEABLAA4ATAAN\nAE0AEgBOABQATwAPAFMAFgBc//4AiP/yAjYAHgL1ABYC9gAUABMBWP/bAVv/xAFc/8EBYf/bAWv/\n3AFz/5MBdP+OAYz/3wGT/8sBsf/cAbz/2QHD/5MBxP+lAcj/2wHQ/9sB3P/PAeP/sQHk/9kB6P/Y\nAAkAJP/PADf/hgA5/6gAOv/BADz/gACD/88Ahv/PAIf/zwCI/8oACwAPAAUAEQAFACb/3QAq/98A\nMv/eADT/4gA3/6MAOP/dADn/uQA6/9AAPP+iAB4ADwAFABD//gARAAUAJv/dACr/3wAy/94ANP/i\nADf/owA4/90AOf+5ADr/0AA8/6IARP/7AEUABABG//YAR//5AEj/8gBK//QAUv/0AFT/+QBX//AA\nWP/1AFn/4gBa/+0AXP/dAG3/0wEm/6MCN/+/Ajv/zAJE/9cAEQAPAAUAEQAFACb/3QAq/98AMv/e\nADT/4gA3/6MAOP/dADn/uQA6/9AAPP+iAFn/4gBa/+0An/+iAL//3QEk/6EBJv+jABwADwAFABD/\n/gARAAUAJv/dACr/3wAy/94ANP/iADf/owA4/90AOf+5ADr/0AA8/6IARP/7AEUABABG//YAR//5\nAEr/9ABS//QAVP/5AFf/8ABY//UAWf/iAFr/7QBc/90Abf/TAjf/vwI7/8wCRP/XAB0ADwAFABD/\n/gARAAUAJv/dACr/3wAy/94ANP/iADf/owA4/90AOf+5ADr/0AA8/6IARP/7AEUABABG//YAR//5\nAEj/8gBK//QAUv/0AFT/+QBX//AAWP/1AFn/4gBa/+0AXP/dAG3/0wI3/78CO//MAkT/1wAEADf/\n+AA5//MAOv/3AD3//gABACT/3wADADf/1QA5/9MAPP/FAAoAD//oABH/6AAdAAgAHgALACT/3gA3\n/9UAOf/TADr/6wA8/8UAPf/YAAoAD//oABH/6AAdAAgAHgALACT/3gA3/9UAOf/TADr/6wA7/9MA\nPP/FAAEAJP/hAAEAJP/dAAcAD//pABH/6QAk/90AUP/6AFH/+gBTAAIAVf/7AAgAD//pABH/6QAk\n/90ARQACAFD/+gBR//oAUwACAFX/+wASAA//kQAQ/7AAEf+RAB3/sgAe/7gALf+YAIP/pACE/6QA\nhv+kAKP/qQCr/6gAtf+qALz/wwDE/6QAxv+kANv/qAET/7UBIf+yAAQASP/4AE7/+ABX//MAWv/2\nAAMAWf/sAFr/8wBc/+UABABV//sAWf/xAFr/9gBc/+sAFAAE/94AD//pABAADAAR/+kAHf/4AB7/\n+wAi/7wARQACAEYAAwBHAAYASgABAE///ABUAAYAV//3AFn/8QBa//cAXP/rAF3/8QI3/+0CO//3\nAAMAWf/xAFr/9wBc/+sAAQBZ//AAAwBZ/+4AWv/0AFz/6AAEAFn/7gBa//QAXP/oATz/7gABAFf/\n9wAPAA3/7QAP/+cAEf/nAB3/9wAe//wAN//RAE3/+gBX//cAWf/uAFr/9ABb/+UAXP/oAF3/7gIy\nACgCN//rAAoAD//tABH/7QBK//4ATf/8AFn//gBb//sAXP/3AF3/9AIyABoCN//0AAMAD/+5ABH/\nuQDP/+wABwA3/6MAPP+iAFz/3QCf/6IAv//dAST/oQEm/6MACwAPAAMAEQADAB3//AAm/9wAN/+k\nADz/nwBcABgAn/+lAL8AGAEk/68BJv+kAAEAMv/4AAIASAAGAFIACAAVAA//ywAR/8sAHf/ZAB7/\n3ABE/9gASP/YAFD/9QBR//UAUv/aAFX/9gBW/+AAWP/xAFwADABd//gAo//YAKv/2AC1/9oAvP/4\nAL7/+AC/ABEBMf/4AAEBPv/vAAkAMv/XADf/vwA5/7kAPP/BAFn/yQCf/8EAv//GAST/vwEm/78A\nGgAP/8sAEf/LAB3/2QAe/90ARP/YAEf/3wBI/9gASQAPAEr/2wBS/9oAU//+AFb/4QBXABEAWP/y\nAFkADABd//gAo//YAKv/2AC1/9oAtv/qALz/+ADP/+oA0f/fASP/8wEx//gBQP//AA8AD//3ABH/\n9wAd/+wAHv/sADL/4AA3/6AAOf+gADr/xQA8/5AAWf/TAFr/4gCf/5AAv//PAST/oAEm/6AABQA3\nAAMAOf/+ADoAAgA7AAUAPQACAAEAWP/8AAkAD/+7ABH/uwBE//wAR///AFMABwBWAAUAVwAbAFkA\nHABdAAgAEgAP/7kAEf+5AB3/6gAe/+kARP/8AEf//wBI//YATAAEAFL/+gBYAAIAWQAcAKP//ACr\n//YAr//0ALX/+gC8AAIA0f//ATEAAgABAFr/+AACAE7//gBX//0AGQCD/58AhP+fAIb/nwCj/6IA\nq/+jALX/pQC8/74Av//YAMT/nwDG/6AAx/+cANv/owEG/7wBCv/ZARP/wQEX/8wBGwAEAR3/sAEl\n//MBJ//zATH/wQEz/78BPP/FAT7/xQFA/+cAIAAP/6AAEP+1ABH/oAAd/60AHv+yACT/oAAt/5wA\ng/+gAIT/oACG/6AAmP/VAKP/pQCr/6MAtf+oALz/wwC//90AxP+gAMb/ogDH/5wA2/+jAQb/wAEK\n/9YBE//EARf/zwEbAAEBHf+zASX/8wEn//MBM//DATz/yQE+/8kBQP/jABYAD//cABH/3ABE/+sA\nSP/gAFD/5gBR/+YAUv/iAFX/5wBW/+wAVwACAFj/6QBc//0AXf/6AKP/6wCr/+AAtf/iALz/6QC/\n//4BGwARASP/9gEx/+kBQP/6AAMAD//mAB3/5AAe/+gABgAP/+YAHf/kAB7/6ABG/+0ASP/pALX/\n6wAEAA//5gAd/+QAHv/oAEj/6QAEAYL/2QGM/+EBkv/oAZX/8wABAYz/zQABAYr/6gABAZL/gwAS\nAA8ABQARAAUAMv/eADf/owA8/6IAff/eAWj/3wFv/94Bc/+jAXT/ogF1/8QBd//MAYL/2QGM/+EB\nkv/oAZT/8gGV//MBnP/yAAQAJP/qAWH/6gGK/+oCef/+ABQAD/9fABH/XwAk/6cAMv/cADwAGgBS\n/20BYf+nAWv/qgFv/9wBe//AAXz/ygGA/2gBhP91AYn/bwGM/2QBjv9qAZD/ZwGU/2sBnP/KAnn/\nswAIADL/5gFo/+cBb//mAXX/0wGC/94Bg//kAYz/4wGT//IABQAy/9QAUv/zAW//1AGEAAgBjv/x\nAAUAJP/eADz/xAFh/94Ba//eAXT/xAAPAA//9wAR//cAHf/oAB7/6AAy/9MAUv/jAW//0wF1/7IB\ne//xAXz/+gGO/+EBlP/nAZj/0wGb/+EBnP/nABIADwAEABEABAAy/90AN/+iADz/oQBS//MAff/d\nAWj/3gFv/90Bc/+iAXT/oQF7//4BfAABAYQAAQGO//ABlP/xAZv/8AI3/74AAQGEAAsABgAk//YA\nUgADAWH/9gF8AAkBhAAJAZj/6wADAXv/8AGA/+UBnP/iAAsAJP/eADz/xQFh/94BZv/YAWv/3wFz\n/9UBdP/FAXb/0wF3//ABiv/pAnn/7wAEAFIAAQF8AAcBiv/zAY7//wAUAA//fAAR/3wAHf/VACT/\nswA8/90AUv/mAWH/swFo//IBa/+0AW//8gFz//EBdP/dAXX/3QF8//UBgP/kAYT/9QGO/+MBm//j\nAZ3/xwJ5/8QABwAy/80AUv/sAWj/zgFv/80Bjv/qAZP/xAGW/88AHQAP/6AAEf+gAB3/rQAe/7IA\nJP+gADL/1QA3ABEAPAATAFL/pQB9/5YBYf+gAWv/owFv/9UBcwARAXQAEwF1/60Be/+5AXz/wwGA\n/6cBhP+tAYX/8wGO/6IBkP+kAZL/mQGU/6YBm/+nAZz/wwGd/5ACN//7AA4AD/+SABH/kgAk/6QA\nMv/IADcAFwB9/5cBYf+kAWj/yAFv/8gBcwAXAXX/qQGP/8ABm/+tAnn/tAANACT/wQA3/60APP+m\nAFL/7AFh/8EBa//CAXP/rQF0/6YBiv/NAY7/6gGY/9IBm//qAZ3/0gALADL/1wBS/98BaP/XAW//\n1wF7/+0BfP/1AYD/4wGO/90Bk//WAZj/zgGb/90ABAAk/8cAMv/vAWH/xwFv/+8ADgAPAAsAEQAL\nAB0AFAAeABcAUgAMAH3/7AGCACMBgwAJAYQAFwGFAAcBhwARAY0ACQGOAAoBmP/2AAsAHgAJAFIA\nFQGAABcBgwASAYUAFAGHAAsBigAEAY4AEgGTAB4BlQAVAZj//QABAYP//QAVAAT/9wAPAA0AEQAN\nAB0AFQAeABgAUgANAH3/7QGCACQBgwAKAYQAGAGFAAgBhwASAY0ACgGOAAsBjwAMAZIAAQGTADYB\nlQANAZoADgGbAAsBnAAOAAIBgv/yAYr/6gAOAFL/7gF7//kBfP/+AYD/7QGD/+sBhP/+AYr/0AGN\n//4Bjv/sAZD/6AGY/9IBm//sAZwAAgGd/9IAAQGM/+8AFABSABUBewAkAXwAIAGAABcBgwASAYQA\nIAGFABQBhwALAYoABAGNABoBjgASAZIACQGTAB4BlAAKAZUAFQGW//ABmP/9AZsAEgGcAAoBnf/9\nAAsAUv/1AXsAAgF8AAsBgP/5AYQACwGO//MBlP/5AZj/5AGb//MBnP/5AZ3/5AARAA//+wAR//sA\nUv/sAH3/0gF7//oBfAACAYD/8AGD/+oBhAACAYf//wGO/+oBkv/gAZX/6QGY/9sBm//qAZz/+gGd\n/9sAEgAP//sAEf/7AFL/7gB9/9cBe//8AYL/0AGM/9UBjf/zAY7/6wGS/+IBk//XAZT/7AGV/+wB\nmP/ZAZv/6wGc/+wBnf/ZAjf/wQASAA//ugAR/7oAHf/sAB7/8ABS//AAff/fAXv/+gGA/+8Bg//t\nAYr/1AGO/+4Bkv/kAZX/8wGY/9IBm//uAZwAAgGd/9ICNwACAAkAUv/2AXsAAwF8AAsBgP/5AYQA\nCwGO//QBm//0AZz/+QGd/+UABwGAAAQBgv/rAYr/6wGM/+8Bj//fAZMABgGW/9oACABS/+EBe//t\nAYr/1gGO/98Bm//fAZz/5wGd/8cCN//oAAgABP/hAH3/7QGC/+sBiv/qAYz/7wGP/98BkwAFAZb/\n2gABAYr/2QAUAA//xQAR/8UAHf/5AB7/+ABSAAkAff/NAXsADwF8ABsBfgAPAYAABQGK/9gBjgAG\nAZL//QGTADoBlQAJAZj/6wGbAAYBnAARAZ3/6wI3AA8ABAGC//8Biv/sAZMAEQGW//EAAQGTAAIA\nCwBS/9gBe//kAXz/6QGA/9oBhP/pAYf/9gGO/9YBmP++AZv/1gGc//EBnf++AAYBgv/PAYr/1wGM\n/9UBj//HAZP/6wGW/8IAAQGMAAEABQGC/+sBjP/vAY//3wGTAAYBlv/aAAYBgv//AYr/7AGMAAEB\nj//nAZMAEQGW//EAJwGl/+cBqv/aAawAGwGvABsBtf/GAbz/5wG//90Bwv/cAcMAGQHEABkBxf/K\nAcgADAHR/2sB0/91AdX/agHW/3EB1/96Adj/agHZ/2oB2/+AAdz/ZAHd/30B3v9uAd//cQHg/28B\n4f91AeL/dwHj/2EB5P9mAeX/iwHm/2UB5/9nAej/VQHr/30B7/95AfD/bwH1/3sB+v9kAf//8gAH\nAaz/mwGv/8MBw/+XAcT/wQHI/+YBy/+hAev/5QAHAaz/mwGv/8QBw/+XAcT/wgHI/+YBy/+iAev/\n5gARAaX/1QG4/9EBv//KAcL/xwHF/8EB0f/rAdL/1AHW/9gB2P/qAd//2AHi/90B4/+5AeT/twHl\n/70B6P+rAfX/4QH//8wAJgGl/+MBqv/aAawAGgGvABoBsf+qAbX/xgG4/90BvP/mAb//2AHC/9cB\nwwAZAcX/1gHIAAsB0P/fAdH/wwHS/9IB1f+kAdb/vgHX/+gB2P/HAdn/zgHb/+QB3P++Ad3/4gHe\n/9MB3//AAeD/0wHh/9wB4v/FAeP/5gHl/60B5v/oAef/ywHo/9oB7//fAfD/ygH1/8kB+v++AB4A\nDwAEABD//gARAAQAHf//AB4AAQB9/90Bpf/pAaoAEAGs/6QBr//YAbj/5wG8ABwBv//eAcL/4AHD\n/6MBxP/WAcX/2wHI/8gBy/+8Adj/+QHcABAB3//xAeL/9gHj/8QB5P/cAeX/2gHo/9UB6//dAfoA\nEAH//9QADgGs/+kBr//pAbH/8AG3//ABw//oAcT/5wHI/+AByQABAdf/9wHj/8wB5P/iAev/4AH6\n//MB///gAA8BrP/qAa//2gGx/+wBt//sAcP/6QHE/9gByP/qAckACwHX//kB4//wAeT/9QHo//EB\n6wALAfr/8AH///QALAAP/2sAEP9/ABH/awAd/3gAHv94AaX/5gGq/9kBrAAZAa8AGQG1/8UBvP/l\nAb//3AHC/9sBwwAYAcQAFwHF/8gByAAKAdH/aQHT/3QB1f9oAdb/bwHX/3gB2P9pAdn/aAHb/34B\n3P9jAd3/fAHe/20B3/9wAeD/bQHh/3QB4v91AeP/XwHk/2QB5f+JAeb/YwHn/2UB6P9UAev/ewHv\n/3cB8P9uAfX/eQH6/2MB///wAAEBxf/pABABpf/tAbj/5gG//+IBwv/gAcX/2QHS/+kB1v/tAdj/\n/wHf/+0B4v/yAeP/zgHk/80B5f/SAej/wAH1//YB///hABUBqv/qAaz/5gGv/9YBsf/jAbX/8gG3\n/+UBuP/rAbz/9wHD/+QBxP/UAcb/1QHI/+QB0P/qAdz/6wHj/+wB5P/xAeb/7gHo/+gB8P/zAfr/\n6wH///AAEQGl/9cBuP/QAb//zAHC/8oBxf/DAdH/6gHS/9MB1v/XAdj/6QHf/9cB4v/cAeP/uAHk\n/7cB5f+8Aej/qgH1/+AB///LABABqv/iAaz/1gGv/9ABsf/eAbX/3gG3/+QBuP/uAbz/7gHD/9UB\nxP/UAcb/1AHI//kBy//uAdD/8AHc//MB+v/zABgAD/98ABD/2QAR/3wAHf/VAB7/1wGq/8MBsf+0\nAbX/rwG8/88Bwv/xAcj/9QHQ/+UB0f/lAdP/8QHU//EB1f+6Adb/4QHY/+kB3P/WAd//5AHi/+gB\n5f/QAfX/7AH6/9YAEgGq/+UBrP/nAa//3AGx/+YBt//iAbj/9AG8//IBv//6AcL/9wHD/+YBxP/a\nAcX/+gHG/9YB0P/uAeP//AHo//UB+v/rAf///wAvAA//oAAQ/7QAEf+gAB3/rAAe/7IAff+VAaX/\n3wGq/9IBrAASAa8AEgGx/6ABtf++Abj/4wG8/94Bv//VAcL/1AHDABEBxAAQAcX/wQHQ/+YB0f+c\nAdP/rQHU/60B1f+eAdb/oQHX/64B2P+cAdn/ogHb/7gB3P+YAd3/tQHe/6YB3/+iAeD/pwHh/6kB\n4v+nAeP/lQHk/5oB5f+NAeb/mQHn/58B6P+JAev/sQHw/6AB9f+rAfr/mAH//+kALgAP/5YAEP/R\nABH/lgAd/8IAHv/HAH3/sAGl/+EBqv/YAawAGAGx/7UBtf/EAbj/2wG8/+QBv//WAcL/1QHDABcB\nxAAWAcX/1AHIAAkB0P/dAdH/wQHS/9AB1f+kAdb/vAHX/+YB2P/FAdn/zAHb/+IB3P+8Ad3/4AHe\n/9EB3/++AeD/0QHh/9oB4v/DAeP/5AHk/+sB5f+rAeb/5gHn/8kB6P/YAe//3QHw/8gB9f/HAfr/\nvAH//+8ADgGq/9oBr//OAbH/2gG1/9ABt//bAbz/5gHE/8wBxv/LAcj//gHL/9wB0P/qAdX/4QHc\n/+0B+v/tAA8Bpf/hAbj/1QG//9YBwv/UAcX/yQHR/+8B1v/cAdj/7gHf/9wB4v/hAeP/vgHk/8QB\n5f/AAej/sAH1/+UABwGs/5gBr//BAcP/lAHE/78ByP/jAcv/nwHr/+MABwGs/5YBr/+/AcP/kgHE\n/70ByP/hAcv/nQHr/+EADAGq/+0BrP/gAa//2wGx/+oBtf/pAbz/+gHD/98BxP/bAcgABAHL//gB\n0P/7Afr//gAQAar/4wGs/9cBr//PAbH/3AG1/+ABt//hAbj/7AG8/+8Bw//WAcT/0gHG/9UByP/3\nAcv/7wHQ//AB3P/wAfr/8AAFAeP/6wHk/+QB6P/iAfoADwH//+kACAHX//QB2P/2AeP/6gHk/+YB\n5v/iAej/8wHw//gB///qAAcB1wAIAdgABQHj//kB5P/zAeb/8gHo//QB///1AA4AD/+mABD/uwAR\n/6YAHf/1AB7/9QHV/9oB3P/2Ad8AAwHiAAcB5f/tAfAADQH1AAsB+v/2Af8AHgAIAdf/+AHY//kB\n3P/0AeT/6wHm/+MB6P/3AfD/+wH//+4ACAHS//gB1v/1AdgAAwHf//kB4v//AeX/4wH1//8B/wAL\nAAkB1wABAdz//wHj//cB5P/xAeb/6wHo//EB8P/7Afr//gH///AAAQH6//IACAHRAA0B1v/+AdgA\nDAHfAAEB4gADAeX/6wH1AAcB/wATAAkB1//4Adj/+gHc//IB4//tAeT/6QHm/+YB6wAIAfr/7wH/\n/+4ADgAP//AAEAAXABH/8AAd//8AHgAEAdf//gHc//kB4//zAeT/7wHm/+wB6P/9AfAAAQH1AA8B\n///0AAwBr//IAdEABAHXAAIB2AAEAd8AAwHj//8B5P/5AeX/8gHm/+4B6P/+AfAABAH6//8AFQAP\n/7cAEP/LABH/twAd/94AHv/eAH3/sgHR//EB1f/DAdb/6gHY//UB3P/fAd//7AHi//AB4wAGAeQA\nCQHl/9YB6P/7AfD/9gH1//QB+v/fAf8ABwATAA//ugAQ/+8AEf+6AB3/6AAe/+wAff/aAdH/6gHV\n/8oB1v/nAdj/7wHc/+MB3//pAeL/7QHjAAoB5f/WAej//wHw//EB9f/xAfr/4wANAdT/8gHV/94B\n1//jAdj/6AHc/9sB4//ZAeT/2gHm/9IB6P/qAev/9QHw/+0B+v/bAf//2QAIAdH/7wHW/+YB2P/u\nAd//5wHi/+wB5f/QAfX/8AH/AAwABwHWAAcB4gANAeP/wgHk/9wB6P/1Aev/xQH//9sABgHiAAYB\n4/+7AeT/1AHo/+0B6/++Af//0wAHAdz/+wHj//QB5P/yAesAEAHwAAMB+v/4Af//9wAIAdgAAwHc\n//wB4//2AeT/8gHm/+8B6wARAfr/+QH///cACAHV/9wB3P/4Ad8ABQHiAAkB5f/vAfAADwH1AA0B\n+v/4AAUB4/+tAeT/xwHo/+AB6/+wAf//xgAIAdYACAHiAA4B4//DAeT/3AHo//UB6//FAfUAEgH/\n/9sACQHRAAsB0gAFAdYAAwHYAAoB3wADAeIACQHl//EB9QANAf8AEwAMAdH/6AHV/9AB1v/rAdj/\n7QHc/+EB3//rAeL/8QHjAAgB5f/VAej//QHw/+8B9f/1ACgBpf/rAar/3gGsAB4BrwAeAbX/ygG8\n/+oBv//hAcL/4AHDAB0BxAAcAcX/zQHIAA8B0P/yAdH/dQHT/4IB1f91Adb/fAHX/4UB2P90Adn/\ndwHb/40B3P90Ad3/igHe/3sB3/98AeD/fAHh/4IB4v+CAeP/bAHk/3EB5f+OAeb/cAHn/3QB6P9h\nAev/iAHv/4YB8P96AfX/hgH6/3QB///4AAgB1f/TAdz/7QHf//oB4v/+AeX/5AHwAAQB9QACAfr/\n7QAdAEQACgBFACQARgAvAEcAMgBIACoASQAUAEoALQBLABwATAAeAE0AHQBOACIATwAdAFAAHABR\nABwAUgAtAFMAJABUADIAVQAdAFYAFgBXABYAWAAfAFkADwBaABoAW//uAFwACgBd/+IApgAKALgA\nLQC+AB8AJAAk/78AJv/6ACr/+gAy//8ANP/9ADf/+gA5AAIAOgANADv/6QA8//YAPf/pAET/6QBG\n//MAR//4AEj/7wBJAAQASv/0AFL/8QBU//gAVv/7AFcABgBZAAgAWgAMAFv/+ABcAAMAXf/tAIP/\nvwCG/78Ah/+/AIj/tACm/+kAqP/vALj/8QEV//EC9QAFAvYAAgAVAAwAKQAP/78AEf+/ACT/ugBA\nADAAR//rAFL/5gBV/+0AVv/tAFf/9wBZ//sAXP/2AGAAMgCD/7oAhv+6AIf/ugCI/68AuP/mAR3/\n7QEh/+0BI//tABIAJAANACb/8AAq/+8ALQAYADL/8gA0//UANgACADf/qgA5/68AOv/SADz/mgA9\nAA4ASv/2AFYAAgBZ/88AWv/cAFz/ygBdAAcAIwAk/84AJgAIACoACAAyAA0ANAALADYADwA3AAkA\nOQARADoAHAA7//gAPAAFAD3/+ABE//gARgABAEcABgBI//4ASQATAEoAAgBUAAYAVgAJAFcAFQBZ\nABcAWgAbAFsABgBcABIAXf/8AIP/zgCG/84Ah//OAIj/wwCm//gAqP/+ARQADwL1ABQC9gARAAkA\nJP/LADcACgA5ABAAOgAbADwABgCD/8sAhv/LAIf/ywCI/8AAFQAkAB0AKv//AC0AJwAyAAEANAAE\nADYAEQA3/7oAOf+/ADr/4QA7AAkAPP+pAD0AHQBKAAUAVgASAFn/3gBa/+sAXP/ZAF0AFgCIAB4A\nn/+pASb/ugAJACT/1AA3/4wAOf+uADr/xwA8/4UAg//UAIb/1ACH/9QAiP/QAAsAMv/uADz/sABS\nAAQBb//uAXT/sAF7ABABfAAVAYQAFQGOAAEBlAACAZ3/7gABAOcABAAKAAsADQAPABAAEQASACIA\nJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBE\nAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBtAH0A\nggCDAIQAhQCGAIcAiACJAJQAlQCWAJcAmACaAJsAnACdAJ4AnwChAKIAowCmAKcAqACrAKwArwC0\nALUAtgC4AL4AvwDEAMYAzgDPANEA2wD/AQABAwEUARUBFwEbAR0BIwEkASYBJwE8AT4BQAFYAVoB\nXQFeAWEBYgFjAWUBZgFoAWoBawFsAW0BbgFvAXABcQFyAXMBdAF1AXYBdwF7AXwBfgGAAYEBggGD\nAYQBhQGJAYoBjAGNAY4BjwGQAZIBkwGUAZUBlgGYAZoBmwGcAZ0BpAGqAasBrQGvAbEBsgGzAbQB\ntgG3AbgBuwG/AcEBwgHDAcQBxQHGAcsBzQHOAc8B0QHSAdMB1AHWAdcB2AHaAdsB3wHhAeIB4wHk\nAeUB5gHrAe0B7gHvAfQB+gH7Af0B/wIHAggCMgI2AjcCOAI6AjsCPAJFAnkAAAAAAAEAAAAA2lOZ\n8AAAAADR77JFAAAAANHvskU=\n`;\nexport const NimbusSansLBolBold = `AAEAAAAPAIAAAwBwRkZUTX4y/nsAAWR4AAAAHEdERUYAJQAAAAEjNAAAABhHUE9TxIqNkAABJHQA\nAEAER1NVQjf5Jh4AASNMAAABKE9TLzJsmcV1AAABeAAAAGBjbWFwlCMf9gAADbwAAAZMZ2FzcP//\nAAMAASMsAAAACGdseWbCL1YTAAAZ/AAA7KhoZWFkBpWoVgAAAPwAAAA2aGhlYQc6BbUAAAE0AAAA\nJGhtdHg7EYb5AAAB2AAAC+Jsb2Nhfhi41AAAFAgAAAX0bWF4cANtAMsAAAFYAAAAIG5hbWUmIFF2\nAAEGpAAABJVwb3N0od+rfQABCzwAABfuAAEAAAABAACBnp4kXw889QALA+gAAAAA0e+yRQAAAADR\n77JF/2n+uQQtBC4AAQAIAAIAAAAAAAAAAQAAAtn+8QDIBGT/af9nBC0AAQAAAAAAAAAAAAAAAAAA\nAvgAAQAAAvkAyAAyAAAAAAACAAAAAQABAAAAQAAAAAAAAAADAnECvAAFAAgCigJYAAAASwKKAlgA\nAAFeAEUBOwAAAAAIAAAAAAAAAAAAAocAAAAAAAAAAAAAAABVUlcgACAAIPsEAtn+8QDIBC4BR2AA\nAJ8AAAAAAg4CzgAAACAAAwEWAAAAAAAAAU0AAAEWAAABTQBwAdoAMgIsAAMCLAAWA3kAFgLSADcA\n7gAyAU0AKAFNABYBhQAXAkgAMgEWAEABTQAaARYAQAEWAAICLAAdAiwARAIsAB4CLAAdAiwAGAIs\nABsCLAAgAiwAHQIsABYCLAAcAU0AcQFNAHECSAAoAkgAMgJIACgCYwBAA88AGwLSABoC0gBSAtIA\nLALSAE0CmwBPAmMASgMKACoC0gBEARYAPwIsABgC0gBKAmMAUANBAEIC0gBEAwoAKAKbAEwDCgAr\nAtIAUAKbACACYwAOAtIATAKbABgDsAANApsAFgKbABsCYwAeAU0AQgEW//QBTQASAkgAPQIs/+oB\nTQARAiwAHAJjADsCLAAiAmMAHQIsABYBTQAOAmMAKQJjAEMBFgBDARYABAIsADsBFgBDA3kAPAJj\nAD8CYwAjAmMAOgJjABwBhQA/AiwAHQFNAA4CYwA6AiwADgMKAAUCLAAQAiwACQH0ABUBhQAlARgA\nZAGFAEgCSAA8ARYAAAFNAEICLAAlAiwAHwIsABoCLAAFARgAZAIsACEBTQASAuH/8gFyAB4CLABY\nAkgAKAFNABoC4f/yAU0AEAGQADACSAA4AU0ABwFNAAYBTQB5AmMAOgIsABQBFgBAAU0AGwFNAB8B\nbQAXAiwAWANCABcDQgAXA0IAEgJjADMC0gAaAtIAGgLSABoC0gAaAtIAGgLSABoD6AABAtIALAKb\nAE8CmwBPApsATwKbAE8BFv/2ARYAPwEW/+0BFv/3AtIAAALSAEQDCgAoAwoAKAMKACgDCgAoAwoA\nKAJIAE8DCgAfAtIATALSAEwC0gBMAtIATAKbABsCmwBMAmMAQwIsABwCLAAcAiwAHAIsABwCLAAc\nAiwAHAN5ABsCLAAiAiwAFgIsABYCLAAWAiwAFgEW//YBFgBDARb/7QEW//cCYwAjAmMAPwJjACMC\nYwAjAmMAIwJjACMCYwAjAkgAMgJjAAsCYwA6AmMAOgJjADoCYwA6AiwACQJjADoCLAAJAtIAGgIs\nABwC0gAaAiwAHALSABoCLAAcAtIALAIsACIC0gAsAiwAIgLSACwCLAAiAtIALAIsACIC0gBNAucA\nHwLSAAACYwAdApsATwIsABYCmwBPAiwAFgKbAE8CLAAWApsATwIsABUCmwBPAiwAFgMKACoCYwAp\nAwoAKgJjACkDCgAqAmMAKQMKACoCYwApAtIARAJj//IC0gABAmMABQEW/9sBFv/bARYAAgEWAAgB\nFgAHARYAAwEWACIBFgAiARYAPwEWAEMDEQBAAiwAVAIsABgBFv/rAtIASgIsADsCLAA2AmMAUAEW\nAEMCYwBQARYAQwJjAFABkABDAmMAUAHfAE8CYwAAARYAAALSAEQCYwA/AtIARAJjAD8C0gBEAmMA\nPwLEAA8C0wBCAmMAPwMKACgCYwAjAwoAKAJjACMDCgAoAmMAIwPoABwDsAAXAtIAUAGFAD8C0gBQ\nAYUAPwLSAFABhQA2ApsAIAIsAB0CmwAgAiwAHQKbACACLAAdApsAIAIsAB0CYwAOAU0ADgJjAA4B\nhQAOAmMADgFNAA4C0gBMAmMAOgLSAEwCYwA6AtIATAJjADoC0gBMAmMAOgLSAEwCYwA6AtIATAJj\nADoDsAANAwoABQKbABsCLAAJApsAGwJjAB4B9AAVAmMAHgH0ABUCYwAeAfQAFQEW//ICLAAVAtIA\nGgIsABwD6AABA3kAGwMKAB8CYwALApsAIAIsAB0CYwAOAU0ADgFNAAgBTQAJAU0AEAFNACMBTQBw\nAU0ATQFNAC0BTf/3AU3/1AFNAHQB0QBVAtIAGgEWAEADVQA0A4oALQHaADEDOQADA58ATgNGAAkB\nFv/3AtIAGgLSAFICWQBKAs8AAwKbAE8CYwAeAtIARAMKACgBFgA/AtIASgKb//sDQQBCAtIARAKE\nABsDCgAoAtIAQgKbAEwCWAAaAmMADgKbABsDNQA8ApsAFgMpADYDIgAlARb/9wKbABsCZwAYAcMA\nCgJjAEIBFgBFAkYAMgJnABYCYgBCAiwADgJeACQB2wARAcwAGAJjAEICHQARARYARQIuADwCLAAQ\nAmQAQQIsABEBvQAOAmMAJwL+AEYCawBBAggACAKsAEUBvgALAkYAMgLLAB8CQAALAvEAOANNAEgB\nFv/3AkYAMgJjACcCRgAyA00ASAJGAAcC7gAwA00ATAKbAE8CnQBKA3UAMgI3AHcCxwAeApsAIAEW\nAEABFP/2AiwAGwRGABAEJwA0A2sAPwJiACECzwBBAm4ABgLPAE0C0gAXAs8ASgLSAE8CNwB3Asj/\n8wKbAEkDiP/0AnIAOwLPAEECzwBBAmIAOgK+AAUDQQA+AtIAQwMKACYCzwBIApsARQLSACoCYwAN\nAm4ABgNWACMCmwAWAtoARAK/ACED7QAxA/sANANmABAD0wBrAs8AZALHABMEBwA1As8AMgIsABsC\nagAqAmcAVwGhAEkCewAHAiwAHQLF//gB8QAiAmcARgJnAEYB9AAjAnsAJQLkAFECXABAAmMAJwJc\nAEkCYwA8AiwAJAHqABACLAASA2sALwIsABMCZwBHAkUAKANBADwDTAArAtkAGQNWAGUCZwBcAigA\nCQNWADECRwAxAiwAFgIsAB0CYwAkAaEASQIoABYCLAAdARYARQEZ//gBFgAFA8kAIQOKAEYCY//p\nAfQAIwJnAEYCLAASAlwATANlABkCvwA5AwoAKAJjACQDLwBMAoYAPQHnAE8BvwBYAd8AGQGQABcE\nZABCA4AANALYAEICXQBAAqYAQwIvAEAC0gBDAlsAQAKbABsCHwALApsAGwIfAAsCzQAWAkMADALN\nACgCWQAyAs0AKAJZADICzQBDAmcAUgEWAEABFgBAAwoAJgI/ACMC0gAXAiwAGwMKACYCYwAnAo8A\nQwI/ACcDsAANAwoABQOwAA0DCgAFA7AADQMKAAUCmwAbAiwACQH0AAACLP/3A+j/+QPo//kCKP/o\nARYARAEWAEIBFgBCARYATgH0AEgB9ABJAfQASAIsAB8CLAAcAV4AMgPoAFwD6AALAPAAOgHfAHEB\nTQBTAU0AUAJcAGABTf96ARb/igFNAAYBTQADAU0ABgFNAAgBTQAGAU0AAgFNAAYBjAAqAiwAFgIs\nAB8ERgBbAiwABgN1AYgC0gB4Aen//ARbAEcCrQBVAwoASAL3AEUD6ABHAwAAFAJYADUB9AAcA0IA\nEgNCABcDQgATA0IANQPoAFUB9ABIA+gAVQH0AEgD6AB6AfQASALSAFsC0gBbAtIAWwLSAFsB9ABI\nA+gAogLSAAgC0gCLAtIACQLSAIsC0gAGARb/aQHuABoBqv+zA+gAaAJk/80C5QBFA+gA6QPoAOkD\n6ADpAzcAGAJYAAECSAAoA+gA7AEW/4oD6AFlARYAQAIlAAoD6ADFAskAGQPTADID6ADTAtIBSALS\nAPsD6ADzA+gA8wLSAHAD6AEYARIADwPoASQD6ADEA+gAqAPoAMQBFv+aAiUAIAIlADICRwAyAiUA\nHAIlABwD6ADpA+gA6QPoAOkD6ADQA+gA6QPoAOkD6AC5A+gAugPoAMkCXAAbAkgAMgJcARgCXAC0\nAU0AOgFNADoCxP9uAnEBGALEAUECxP9uAsQBQQLE/24CxAFBAsT/bgLE/24CxP9uAsT/bgLE/24C\nxAD/AsQBQQLEAP8CxAD/AsT/bgLE/24CxP9uAsQBQQLEAP8CxAD/AsT/bgLE/24CxP9uAsQBQQLE\nAP8CxAD/AsT/bgLE/24CxP9uAsT/bgLE/24CxP9uAsT/bgLE/24CxP9uAsT/bgLE/24CxP9uAsT/\nbgLE/24CxP9uAsT/bgLEAWICxP9uAsT/bgLZ/3gCXP/BAlwAKwFiADEBYgAxA+gAiAPeAMMD3gDo\nA94AwwPeAMEB7gASAlwAFwJcACsCXP/4Alz/wQFiADQD/QCSBBwAogOVAE0C7gC9Au4AZwITAAQC\nkP/bAlL/5gH+//gB9AAzAu4AUgKaAA4CYwAOAmMADgOvAA4ADgAAAAAAAwAAAAMAAAAcAAEAAAAA\nBEIAAwABAAAAHAAEBCYAAACmAIAABgAmAH4BfwGSAf8CGwLJAt0DigOMA6EDzgPWBF8EYwR1BJ0E\nowSzBLsEwATPBNkE4wTpBO8ehR7zIAIgFSAeICYgMyA+IEQgcCB5IH8gpyCsIQUhJiEuITUhXiGZ\nIaghtSHUIgMiCSIlIisiLiI3IkgiZSKHIpcipSMCIxAjISMqJQIlHCUkJSwlNCU8JWwlkyWhJawl\nsiW8JcQlzyXZJeYmQiZr+wT//wAAACAAoAGSAfoCGALGAtgDhAOMA44DowPRBAAEYgRyBJAEogSu\nBLYEwATPBNgE4gToBO4egB7yIAIgEyAXICAgMCA5IEQgcCB0IH8goyCsIQUhESEuITUhWyGQIagh\ntSHQIgAiBSILIiciLiI0IkUiYCKCIpUipSMCIxAjICMpJQAlDCUkJSwlNCU8JVAlgCWgJaolsiW6\nJcQlyiXYJeYmOiZg+wD////j/8L/sP9J/zEAAP54/dL90f3Q/c8AAP2h/Z/9kQAA/W/9Zf1j/V/9\nUf1J/UH9Pf0546njPeIv4h/iHgAAAAAAAOIE4dnh1uHRAADhqOFQAADhMOEq4QXg1ODG4LrgoAAA\n4HMAAOBl4GMAAAAAAADgGQAA3/7fot+V34bffwAAAADdjd2G3X/deN1lAADdOt0y3S0AAN0eAADd\nDt0CAAAAAAAAAAEAAAAAAAAAAAAAAJwAAAAAAAAAAAAAAJgAAAAAAAAAnAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAmgCmAKwAAAAAAAAAAACuAAAAAACyAAAAAAAAAAAAAAAAAAAAzgAAANIA\nAAAAAQIBCAEOAAABFgAAAAAAAAAAAAABEAEUAAAAAAAAAAAAAAEqAAAAAAAAAUoAAAFMAAAAAAFS\nAWIBeAAAAU0BTgAAAU8BngAAAAAAAAGfAaACBwIIAgkCCgAAAAACCwIMAAAAAAINAg4CDwIQAj0C\nPgI/AAAAAAAAAkACQQAAAkICQwJEAkUAAAJGAAACRwJRAlIAAAAAAlMCVgAAAlcAAAAAAlgAAAJZ\nAAAAAAAAAloAAAJbAAAAAAAAAlwAAAAAAAACXQJ1AAACdgJ3An0AAAAAAAACfgAAAn8CgAKBAAAC\nggAAAoMAAAKEAoUAAAAAAoYChwKIAokAAAAAAooAAAKLApICkwAAApQClQAAAAAClgKXApgAAAAA\nApkCmgKhAAACogKqAAACqwKsAAAAAAAAAq0AAAAAAAACrgAAAAAAAAKvAAAAAAAAArAC0gAAAAAA\nAALTAAAAAAAAAtQAAAAAAAAC1QAAAAAAAALWAtcC2ALZAuAAAALhAuMC5AAAAAAAAALlAukC6gLr\nAAAAAAAAAuwAAALtAu4AAAAAAu8AAALwAvEAAAAAAAAC8gLzAvQC9QL2AvcC+AAGAgoAAAAAAQAA\nAQAAAAAAAAAAAAAAAAAAAAEAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAEAAAAAAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsA\nHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4\nADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQA\nVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQAAAIYAhwCJAIsAkwCYAJ4AowCiAKQApgClAKcAqQCr\nAKoArACtAK8ArgCwALEAswC1ALQAtgC4ALcAvAC7AL0AvgI9AHIAZABlAGkCPwB4AKEAcABrAlwA\ndgBqApcAiACaAocAcwKZApoAZwB3AnYCfwJ+AY8CkABsAHwBeACoALoAgQBjAG4ChQFCApYCeQBt\nAH0CQABiAIIAhQCXARQBFQIyAjMCOgI7AjYCNwC5AuMAwQE6AkgCVAJEAkUC9QL2Aj4AeQI4AjwC\nQQCEAIwAgwCNAIoAjwCQAJEAjgCVAJYAAACUAJwAnQCbAPMBTQFUAHEBUAFRAVIAegFVAVMBTgAA\nAAAAAAAAAAAAGAAwAF4AogDqAT4BTgFoAYIBoAG2AcoB2AHkAfICJAI2AmQCogK+AuoDKgNGA4oD\nxAPWA/AEBAQYBCoEWgTGBOAFEAU4BVgFcAWGBbgF0AXeBf4GGAYoBkIGWgaIBqgG5AciB1wHbgeM\nB54HugfUB+oIAggUCCIINAhICFYIZAiiCM4I+AkiCVAJcAmsCc4J4goCChoKKApYCnYKnArICvQL\nDgtKC2oLiAuaC7YL0AvyDAoMQAxODIQMrAysDMIM9g1IDYYNqg2+DhoOLA5wDrIOzA7cDuoPOg9I\nD2wPiA+8D/QQAhAwEE4QWhB+EJAQuhDWEQIRRhGYEcgR6BIKEjASZhKMEsQS6BMwE04TbBOOE7IT\nxhPaE/IUChQ+FHIUphTcFRQVXhWYFbIV9BYYFjwWZBaOFqoWzBcKF04XkhfaGDYYgBjaGTIZehmu\nGeQaHBpWGmoafhqWGq4a8hsuG1obhhu2G/gcKBxAHHgcnBzAHOgdEB06HWQdkh20HfgeJh52HqQe\n8h8iH1Ifhh+6H+ggGCBKIH4gqCDiIRYhSCFmIZohxiIGIiQiWCKAIsYi6CMgI1wjoiPoJDYkbiSw\nJPAlOiVeJYwlsiXcJgYmMCZEJlgmeCaYJrgm3ibyJwAnJidSJ3wnoCfKJ/AoCCggKDQoVChwKI4o\nqijCKNYo8CkIKSYpTClyKZ4pwCnoKhQqRCpwKqQq0CsSK0orhiu4K+4sPiyCLKQs8C0YLWAthC3G\nLgguTi6ULuovRC+IL84v8DAgMDwwbDCGMK4w6DEiMUYxajGcMcwyBjJAMmwyljLKMvwzIjNIM2gz\nljO4M9Yz9DQSNDA0UjR0NI40wjUCNWI1jjXuNjY2djbANwo3LDdcN243gDeON6g3tDfWN/A4FDgo\nODg4Ujh2OII4pDjGONw5FDkyOW45jjmoOdg56Dn+OhY6LjpGOno6iDqiOrY60DroOwI7MDtCO2I7\nejuMO6I74jv8PC48ZDx8PJ482j0ePUY9XD2UPcY+Cj4gPlA+jD7GPuQ/Gj8oP0A/VD90P4Y/1j/8\nQBRAQkB8QKpAvEDgQRhBNEFiQZpBskHiQhBCPkJ+QshDBkNKQ2hDjEO6Q9BEAkQ6REhEYER+RKxE\n2EUERSZFRkV4RY5FqEXKRfpGCkYyRkpGcka0RsxG+EcSRy5HSEdgR45HoEfAR+hH+kgYSFBIakiA\nSKBItkjSSPRJGkk4SWhJnEnUShJKUEp8SoxKsEreSwJLQEtWS4ZLnku8S9ZL6kwQTCJMTEx2TIhM\npkzuTQhNHk08TVJNbk2QTbZN1E3+Ti5OXk6STsxO/E8STzxPdE+IT6BPwE/wUBhQQFBeUHxQslDI\nUPBRGFFgUZ5RvlHeUfJSBlIeUjZSYlKKUqpSxlLqUwpTJlNAU1ZTbFOKU6RTwlPgVARUJlRMVHJU\nklS0VMJU0FUEVTRVYlW4Ve5WGFZEVopWrFbOVvJXFlc+V2ZXglesV6xXulfIV9ZX6lgAWBZYKlhA\nWGRYiFiqWMBY3ljyWQpZcFl+WZRZpFm2Wd5Z7Fn6WiRaPlpoWqBauFr4WypbSFtsW8hcLFxsXHpc\n1l0cXVZdul4+XnBemF7OXwpfYF+qYBpgfmDOYPphJmFSYX5hymIUYipiPmJUYmhiuGLSYu5jCmMm\nY0JjamOEY8Rj3GQWZCxkQGRoZKZkzGUAZS5lPGVYZWZliGWUZapl5mYoZjhmSmZYZmpmfmaQZrxm\n6GciZ3BnomfWaBJoRGiSaLJozmjoaQBpJGlIaXxpsGnaagRqPGp2aopqpGq0athq/GsaazhrRGtS\na2JrcmuCa5Jrpmu4a8pr3mv2bApsHmw0bEpsZGx6bJBsqmzAbNZs8G0GbRxtNm1ObWhtiG2gbbht\n2G3ybgpuKm5Cblpuem6cbr5u6m74bwZvFG8ibzBvvHDgcWhxdnGKcZhxrHG6cchx1nHkcfJyDnIy\nckpyaHKWcrhzEnNec6xz4HQudGB0rHTWdPB1GnVKdYB1rHXSdhZ2VAACAHAAAAEGAtYABQAJAAAB\nFQMjAzUTFSM1AQYqQymWlgLW0v7LATXS/bySkgAAAAACADIB1gGoAtkABQALAAATFQcjJzUhFQcj\nJzW8KjgoAXYqOCgC2YKBgYKCgYGCAAACAAP/4AIpArkAGwAfAAAXIzcjNTM3IzUzNzMHMzczBzMV\nIwczFSMHIzcjNzM3I5JqKE1hHmN3ImkiZyJpIlptH2R3KGkoZxNnHmcgzGOZY66urq5jmWPMzGOZ\nAAMAFv+CAg8C+wAiACcALAAAASM2JicVHgEVFAcGBxUjNSYnJj0BMxYXNSY1NDY3NTMVHgEFNQYV\nFBcVNjU0AgWAAiomdWNWM09EUjVWgwVVzGthRF9u/u9RlVQB8i47BckgYVN3OCAJaWkIJj9uCWoP\n1S+mVGgJNjYFcKW1EEw/q8QVTEkAAAAFABb/7ANfAsUACQAUABgAIwAtAAATMhYVFAYiJjQ2FyIG\nFRQWMjY1NCYlMwEjATIWFRQGIiY1NDYXIgYUFjI2NTQmzk1rbJhsbEwjMjJGMjEBbEz+dU0B1U1r\nbJhsbEwjMjJGMjECvWtNSmprlmtjMSIjMTEiIzFr/ScBdGtOSmprTEtrYzFGMTEiJDEAAAADADf/\n6QK2AtMAIwAsADcAAAEzHQEOAQcXIycOASMiJjU0NjcmJyYnJjU0NjIWFRQGBxc2NQ8BBhUUFjMy\nNwM2NTQmIyIGFRQWAg5xAiQee6EuPlE0a4JFWAkDChIqbaBiMkN0HvgvK0EpMEhhPB4bGiASAXUL\nBTpvIpo4LiF3YUdbLgwDDBYxOUdgVUU3TC6QOTosHR0zLUg3AUIiNBweGhYTHwAAAAABADIB1gC8\nAtkABQAAExUHIyc1vCo4KALZgoGBggAAAAEAKP84AS8C2QANAAATMw4BFRQWFyMuATU0NstkTz08\nUGRWTU0C2ZnJbm/ImoPadHPaAAABABb/OAEdAtkADQAAFyM+ATU0JiczHgEVFAZ6ZE89PFBkVk1N\nyJnJbm/ImoPadHPaAAAAAQAXAZcBZALZAA4AABMnNxc1MxU3FwcXBycHJ4NsFm1IbBZsQzpDRDoC\nICRFJHR0JEYjXiteXisAAAAAAQAy//YCFQHZAAsAAAEVIxUjNSM1MzUzFQIVtne2tncBI3e2tne2\ntgAAAAABAED/UgDZAJIACQAANzMVFgYHNTYnI0CWA0lQWQNWkolSWQw4EGYAAQAaAM8BKgFWAAMA\nAAEVITUBKv7wAVaHhwAAAAEAQAAAANYAkgADAAA3FSM11paSkpIAAAEAAv/yARMCygADAAATMwMj\n0EPOQwLK/SgAAAACAB3/6QIFAtQADwAfAAABMhcWFRQHBiMiJyY1NDc2FyIHBhUUFxYzMjc2NTQn\nJgERgUEyPEN1gUEyPEJ2PxcSFho4PRkSFhoC1GlRwMVSWmlPvctQW3FDL5KYLzdBL4yeLzkAAQBE\nAAABegLFAAcAABMjNTI3MxEj7qq4IV2MAeldf/07AAAAAQAeAAACAwLUAB0AACUVIT4BNz4BNTQm\nIyIGHQEjNTQ2MzIWFRQGBw4BBwIA/h4ERVp3PzUvMDWHe25vhEJdTTYOfX1jcz5UTTs1PUI7Fxlw\nfXpnSGREODEdAAABAB3/6QIEAtQAKgAAEzUzMjU0JiMiBwYHIzQ3PgEzMhYVFAYHHgEVFAYjIiYn\nMxYzMjY1NCYnJtkMfC4qQRUKAYIRF3FNZ3osMTw4h3FtgQGIBmQuOyojGQE9XmssMTIZMkgsOkBp\nWDFHHx1VPmh7fGtvPC8nOQoHAAAAAgAYAAACCgLFAAoADQAAARUjFSM1ITUBMxEjEQMCCkqM/uQB\nA6WMuQERdJ2ddgGy/kwBL/7RAAABABv/6QIFAsUAGwAAARUhBzYzMhYVFAYjIiYnMxYzMjY1NCYj\nIgcjEwHp/tsXOUJie45yZ4ECigVdNT09NUMXfj8CxX2UK4htc45zXVhIPkBJNgGLAAAAAgAg/+kC\nBwLUAB4AKgAAASMuASMiBwYPAT4BMzIWFRQGIyImJyY1NDc2MzIXFgciBhUUFjMyNjU0JgH7gg4n\nIkocDQIBIUAsW3ODaj9pHzM7Q4h4OxncMDw8MC89OgIkIh1OIlAPIh2AZnSQODFRrrRhblEk+0k6\nOUdKODtGAAABAB0AAAIQAsUADAAAARUGAgcjNjc+ATchNQIQfnYKjRpDFWcg/p8CxW6Y/umozo0u\nnCN9AAAAAAMAFv/pAg0C1AAYACIALQAAAR4BFRQGIyImNTQ2Ny4BNTQ2MzIWFRQHBiYiBhUUFjMy\nNjQHIgYVFBYyNjU0JgGZPjaMb3CMNj4wLIFjYoEuDndeOzsvLjtrMzw8Zj08AYIiVT9kf35lP1Ui\nGkQzVG1tU0krDdAzKSo0NFLlQDY1Pj4zN0EAAAACABz/6AIEAtQAGgAmAAA3Mx4BMzI1BgcGIyIm\nNTQ2MzIXFhUUBwYjIiYTIgYVFBYzMjY1NCYmhwIvJXUfDSQ4XnaFaoNFMTtAilx73y83ODAxOzul\nICXKIwkaiG5vi3RQnrhkbmsCD0g+PUdHOz9JAAAAAAIAcQAAAQcCCAADAAcAACUVIzUTFSM1AQeW\nlpaSkpIBdpKSAAIAcf9SAQoCCAAJAA0AADczFRYGBzU2JyMTFSM1cZYDSVBZA1aWlpKJUlkMOBBm\nAgiSkgABACj/9gIRAdoABgAAARUNARUlNQIR/oIBfv4XAdpthYNvtnkAAAAAAgAyADQCFgGbAAMA\nBwAAARUhNQUVITUCFv4cAeT+HAGbd3fwd3cAAAEAKP/2AhEB2gAGAAAXNS0BNQUVKAF+/oIB6Qpt\nhYNvtnkAAAIAQAAAAiwC6AAaAB4AACUjJjY3PgE1NCYjIgYVIzY3NjMyFhUUBgcOARcVIzUBcXwC\nKjwsGjwsNDuIAS5Bg26LMkYtFhCWyUBTMyQqIjFCTURxPVmAZj9SMSAmaJKSAAIAG/93A7MC6QA+\nAEwAAAEzAwYVFBYzMjc2NTQnJiMiBwYVFBcWMzI3FwYjIicuATU0Njc2MzIXFhUUBwYjIicmJwYj\nIiY1NDc+ATMyFyciBhUUFjMyNz4BNTQmAoRaTggaFzg2M2Joka9tZ3ZojHJdHGaHunhHUExDi86/\ngm9SS10zJhoKPlhEYEoiYTNPI3U7YTMmMCgcIy0B/P7oHQ0WG0hHWnZYXH53nZhcUShJLV84oFZb\ntUWQfWydeV5UGhIfS2RHbFwrMEgBfk0uPS8gWyYvNwAAAAIAGgAAAr8C2QAHAAoAACUhByMBMxMj\nCwIB9f7vMZkBA6b8mllfX5OTAtn9JwEQAR3+4wADAFIAAAKaAtkAEAAXAB4AADMRITIXFhUUBgcW\nFRQGBwYjAxUzMjU0IwMVMzI1NCNSAUVuPkIuNnknIT95sqNqaqOzb28C2TU6US9FIkZrLFUcNQJc\npVNS/t69Xl8AAAABACz/6QKtAuUAGQAAASMmIyIGFRQWMzI2NzMOASMiJjU0NjMyFxYCqo8df1lk\nYVdGUwiSB6iImLK0mqhXKgHig4h5d4ZMRn2TzbCxznM4AAIATQAAAqkC2QALABIAADMRITIWFxYV\nFAcGIyczMjU0KwFNAR1UbiVYWEifh4epqYcC2Sgsa62vaVV97/AAAAABAE8AAAJwAtkACwAAExUh\nFSERIRUhFSEV5QGL/d8CD/6HAV0BOr19Atl9pX0AAAABAEoAAAJKAtkACQAAExEjESEVIRUhFeCW\nAgD+lgE/ATr+xgLZfaV9AAAAAAEAKv/pAscC5QAgAAABESMnDgEjIiY1NDYzMhYXIyYnJiMiBhUU\nFjMyNzY3IzUCx1oSKmhKlMHEnYSrDY0RHDJPYGx1W1w5HwWmAYj+dmA9ONimqtSEcTEYLIZ2cY9G\nJDh9AAABAEQAAAKRAtkACwAAASERIxEzESERMxEjAfv+35aWASCXlgFL/rUC2f7vARH9JwABAD8A\nAADVAtkAAwAAExEjEdWWAtn9JwLZAAAAAQAY/+kB5gLZABIAAAEzERQGIyInJj0BMxUUFjMyNjUB\nUJZ6cGdAPZYmKycqAtn95WZvOjlqSEYyLSwpAAAAAAEASgAAAs0C2QALAAA3FSMRMxEBMwkBIwPg\nlpYBHbH+3QFCs+/09ALZ/sABQP7G/mEBQgABAFAAAAJDAtkABQAAExEhFSER5gFd/g0C2f2kfQLZ\nAAEAQgAAAwgC2QAMAAATESMRMxsBMxEjEQMj2JbghIDiloGWAjj9yALZ/bwCRP0nAjj9yAABAEQA\nAAKVAtkACQAAIQERIxEzAREzEQH//tuWmgEhlgH4/ggC2f4QAfD9JwAAAAACACj/6QLmAuUAEAAb\nAAABMhcWFRQGBwYgJy4BNTQ3NhciBhQWMzI2NTQmAYacXmY3L17+yl4xNWZdnFtubltab20C5WVs\nsk2VMmVlNJNSq25lgIroiopwdowAAAIATAAAAnkC2QAKABIAABMRIxEhMhYVFAYjJzMyNjU0KwHi\nlgFCcnl4ZLuMPDl1jAEE/vwC2XRub4R9NjhtAAACACv/ygLpAuUAFQAlAAAlFwcnBiMiJy4BNTQ2\nNzYgFx4BFRQGJxc2NTQmIyIGFRQWMzI3JwKZUExWU2qbXjA2NTFeATZeMDYr3lIhbVxbbm5aMiZN\nZ0xRUTJlNJRRUpM0ZWU0k1BKi4JOQlx0i4p0c4sTSQAAAAACAFAAAAKlAtkAHgApAAATESMRITIX\nFhUUBx4FFxQXFSMuATU0NzU0JiMnMzI3NjU0JyYrAeaWAYdcMTd7GxobCQkCASChDggBLDGstTgX\nGxsYN7UBIf7fAtkyOVqEMAsNHhhAPj0qEhsaMDMdEx4tKX0TFzczFxMAAAAAAQAg/+kCeQLlACYA\nAAEjJiMiBhUUFh8BHgEVFAYjIiYnMx4BMzI2NTQmLwEuATU0NjMyFgJfjAiROkQ6UHJlXJ6NjJsH\nkgRUTERPPktmb16Rg4qTAftyMSkoJxAWFF9WcHx8dTs+NC4sMA4UFVpVa3V5AAABAA4AAAJWAtkA\nBwAAAREjESM1IRUBgZbdAkgCXP2kAlx9fQABAEz/6QKOAtkADwAAATMRFAcGICcmNREzERQgNQH4\nlkdS/vBSR5YBFgLZ/hJ4QEpKQHgB7v4SgoIAAAABABgAAAKHAtkABgAAISMDMxsBMwGNf/aXop+X\nAtn92wIlAAABAA0AAAOkAtkADAAAISMLASMDMxsBMxsBMwLah3p3h86fcXGUdm2fAjn9xwLZ/d4C\nIv3dAiMAAAEAFgAAAo0C2QALAAABEyMnByMTAzMXNzMBo+qyjIuu5t6ygIauAXT+jP39AW8BavDw\nAAABABsAAAKKAtkACAAAAREjEQMzGwEzAaOW8qeVi6gBDv7yAQ4By/6+AUIAAAEAHgAAAkIC2QAJ\nAAABFQEhFSE1ASE1AkL+jAF0/dwBdf6LAtl9/iF9fQHffQAAAAEAQv84ATQC2QAHAAABFSMRMxUj\nEQE0cHDyAtlm/StmA6EAAAH/9P/yASECygADAAAbASMDN+pD6gLK/SgC2AABABL/OAEEAtkABwAA\nFzUzESM1MxEScHDyyGYC1Wb8XwAAAAABAD0BDgIKArcABgAAASMLASMTMwIKcXlzcKV9AQ4BLP7U\nAakAAAAAAf/q/0MCQv+IAAMAAAUVITUCQv2oeEVFAAAAAAEAEQJfANUC9QADAAATMxcjEX5GRgL1\nlgAAAAACABz/6QIMAiUAHAApAAAlFSMmNQYjIiY1ND8BNjc2NTQjIgYHIzYzMhURFCc1Bg8BDgEV\nFBYzMjYCDJgQSlpKWp84RRMYUTQqBYcN2t2JEygwLCQpIzU6EREUIk1ZSY8bCgsKDhw2ICq7pv7U\nI6kmCQgJCSIfHiNCAAAAAgA7/+kCPwLZABAAGwAAEzMRNjMyFhcWFRQGIyInFSMAIgYVFBYzMjY1\nNDuMMmMxXBw6gmFjMowBNmhCQTU0QgLZ/v1PLyhUc3qkTjcBsF1KTl1eSksAAAEAIv/pAgoCJQAZ\nAAABIy4BIyIHBhQWMzI2NzMOASMiJjU0NjMyFgIKhgwtKz4ZGzw1Ki4Nhgp/YniFhnlmewFSNS0u\nM6BZLDVhcZSGiphwAAAAAAIAHf/pAiEC2QAQABoAACE1BiMiJicmNTQ2MzIXETMRAiIGFRQWMjY1\nNAGVM2IyWxw6gmFiM4zNakFCaEI3Ti4oVHN6pU8BA/0nAbBeTEpeXEpOAAIAFv/pAg0CJQAXABwA\nACUhFhcWMzI3Mw4BIyImNTQ2MzIWFxYVFCUzJiMiAgz+lgMRHz1QG4oXiFtzhIZ0UnsbFf6X1wti\nXeJEGy9EUF+VgoidU0o9UQxRewAAAQAOAAABOQLZABMAAAEVIxEjESM1MzU0MzIXFSYjIh0BATlT\njExMiiMtFRMmAhFd/kwBtF1BhwNpAyo1AAAAAAIAKf8mAhUCJQAcACgAAAEzERQGIyInJiczFjMy\nNj0BDgEjIiY1NDc2MzIXByIGFRQWMzI2NTQmAZCFhXVyQDQBkBFLMj4lPSxheFI8TlI5cS87Oi40\nQUECHP3SXmo0Kjs/PTFJLCKbfZBVP1wZYE1JXFtKS2IAAAEAQwAAAh0C2QAUAAATMxE2MzIXFhUR\nIxE0JyYjIgYVESNDjDllSDE3jBAYLi89jALZ/vVXKS5k/pYBSi0WITwu/rwAAgBDAAAAzwLZAAMA\nBwAAExEjETcVIzXPjIyMAhz95AIcvX19AAAAAAIABP8mANIC2QANABEAABMRFAYjIic1FjMyNjUR\nNxUjNdI6QSYtDA0XEoyMAhz9hkI6BXAEExcCW719fQAAAAABADsAAAIkAtkACwAAEzczBxMjJwcV\nIxEzx7GfuMWkgTiMjAFK0sz+sO49sQLZAAABAEMAAADPAtkAAwAAExEjEc+MAtn9JwLZAAAAAQA8\nAAADOAIlACAAABMzFT4BMzIXNjMyFhURIxE0JiMiBhURIxE0JiMiBhURIzyLIkMvaik8YlFbjCkj\nLTOMKSMtM4wCHEMqIlBQWE/+ggFoICY4Mv68AWggJjgy/rwAAQA/AAACIgIlABEAABMzFTYzMhYV\nESMRNCMiBhURIz+MOWlXXoxaND2MAhxOV2Fa/pYBTWE6MP68AAAAAgAj/+kCOQIlAAoAFQAAATIW\nFRQGIyImEDYXIgYUFjMyNjU0JgEtf42PfH2Ojn05RkY5OEdFAiWZiYOXmQEKmXFfnF9fTFBfAAAA\nAAIAOv8mAj4CJQAQABsAABMVNjMyFhcWFRQGIyInESMRBCIGFRQWMzI2NTTGMmQxXBs6gWFkMowB\nN2pBQTU0QgIcUFkvJlF5e6NY/uYC9mxdTUxdXUpOAAACABz/JgIgAiUAEAAbAAABMxEjEQYjIiYn\nJjU0NjMyFwciBhQWMzI2NTQmAZSMjDFmMFwbOoFhZDJ2NUFBNTRCQAIc/QoBGlgvJk96fKNZHF6Y\nXVxKT14AAQA/AAABcgIlAA4AABMzFT4BMzIXFSYjIhURIz+MF08wCQgZE3uMAhxqNzwBjgR7/uEA\nAAEAHf/pAggCJQAnAAABIyYjIgYVFBYfARYVFAcGIyInMxYXFjMyNjU0Ji8BJicmNTQ2MzIWAfmH\nAWQlLBQdsWpAPHD5BokIExo5MTcVGqdAGB53Z218AW5JGxcQEQkzH2lUMzC0JQ4THBkQFAg0FRgh\nN1NhYQAAAAEADv/pAS0CogAUAAABFSMRFBYzMjcVBiMiNREjNTM1MxUBLU4SHAsVJC2JRUWMAhFd\n/tokFwNiC38BTF2RkQABADr/6QIdAhwAEQAAISM1BiMiJjURMxEUMzI2NREzAh2MOWlXXoxaND2M\nQFdhWgF4/qVhOjABUgAAAAABAA4AAAIYAhwABgAAISMDMxsBMwFek72UdW2UAhz+dQGLAAABAAUA\nAAL+AhwADAAAISMLASMDMxsBMxsBMwJlkVFWkJiRVlKMUVKRAX3+gwIc/oYBev6GAXoAAAEAEAAA\nAhcCHAALAAABEyMnByMTAzMXNzMBY7SoW1yotLCoWFeoARD+8KioARABDKOjAAABAAn/JQIaAhwA\nEgAAATMDDgEHBiMiJzUWMzI2NQMzEwGKkN4RIR0qOxYcGgsnMMmadwIc/YExKgwRBGkGNCoCMv53\nAAEAFQAAAdQCHAAJAAABFQEhFSE1ASM1Acv+9wES/kEBC/kCHHH+xnFxATpxAAAAAAEAJf83AT0C\n2gAjAAABFSMiFxUUBgceAR0BBhY7ARUjBiY3NTYmBzU7ATI2JzUmNhcBPSUuASw1NSwBFRklTDVH\nAQEjLwQMIiABAUc1AtljOcM2MQYHMTbDIx5jAVE80isfAVwfINM8UQEAAAEAZP84ALQC2QADAAAT\nESMRtFAC2fxfA6EAAAABAEj/NwFgAtoAIwAAFzUzMic1NDY3LgE9ATYmKwE1MzYWBxUGFjcVKwEi\nBhcVFgYnSCUuASw1NSwBFRklTDVHAQEjLwQMIiABAUc1yGM5wzYxBgcxNsMjHmMBUTzSKx8BXB8g\n0zxRAQAAAAABADwBCQIHAbUAFwAAATMGIyIvASYjIgcGByM2MzIfARYzMjc2AblOCXYtJjkgHSQM\nBAFOB3gwIzkhHCQMBAGbkhoqGBsLG5EZKhkbCwAAAAIAQv9GANgCHAAFAAkAABc1EzMTFQM1MxVC\nKkMplpa60gE1/svSAkSSkgAAAgAl/4QCCgJ6ABoAHwAAARE+ATczDgEHFSc1LgE1NDY3NTMVHgEX\nIy4BAxEGFRQBLyIoC4YIelksaHZybCxceQaGCihPUgGz/qgFLS5adANmAWYHlH2ClAtWVQF1XS4u\n/rABUxSZjwABAB//6QIZAssAOQAAARUjFhUUBgc2MzIXFjMyNxcGIyImIyIHJz4BNTQnIzUzLgE1\nNDc2MzIXFhcjJy4BJyYjIgYVFBcWFwF3eg80QEslFSslGi86KUxFIoIhNDk3PjAVWTwiE0pAZKI4\nFQeEAQQPEB4vKzcbDw8BczcgGyxNMiULCh1tLSAeZSpCKyE0NzwzIlo8MW4pUAsiIg4bMycXNx4j\nAAIAGgBkAhICXAAcACcAAAE3FwcWFRQHFwcnDgEjIicHJzcmNTQ3JzcXNjMyByIGFRQWMjY1NCYB\nhElFSxsdTUVLIyUcQyxPRE4eHU9FTTM6PT4tPz9YPz8CEElFSzUyOTNMREsTCx9ORU03MzsuT0RN\nH2I+Liw/Py0sPwABAAUAAAIoAsAAFgAAARUjFTMVIxUjNSM1MzUjNTMDMxc3MwMB8Y6OjoyRkZGK\ny4uLhofAAV87NTu0tDs1OwFh/v7+nwAAAAACAGT/OAC0AtkAAwAHAAATESMRExEjEbRQUFAC2f57\nAYX95P57AYUAAgAh/zcCBgLTADIAPgAAASMmIyIGFRQWHwEWFRQGBxYUBiMiJzMVFhcWMzI2NCcm\nLwEmNTQ2NyYnJjU0NjMyFhcWAycGFRQWHwE2NTQmAdl/CkQdIyU1f2EsMkZ4YtECgwMQFigiKhIL\nKatPJjYZCRt2WztcFxeFjysXH5MuGgIgTRsXFiMdRjZjMkEXMapqyQorDxYiNhIKF2QuVi09KRkM\nIzNLYSgkJf7QTBonFx4RUCAhGB8AAAIAEgJtAToC5wADAAcAABMVIzUhFSM1gG4BKG4C53p6enoA\nAAP/8v/qAu8C5wAWACEALAAAASMmIyIGFBYzMjczDgEjIiY0NjMyFxYAIBYVFAYjIiY1NCQiBhUU\nFjMyNjU0AihaEE01PTo1WAhcBGZUXWxtXmc1Gv6vATzg4aKb3wH8/LKye4GzAa9OUIxOVk9afdZ9\nRiMBAOCeoN/inZ6YtoB/uLWCgAAAAAADAB4BBgFJAtkAAwAfACsAAAEVITUlFSMmNQYjIiY1ND8B\nNjc2NTQjIgYHIzYgHQEUJzUGDwEOARUUMzI2AUH+5AEkXAosNi02YCEqCw8xHhoDTwMBClILGR0a\nFi4gIwFUTk5GCgwULjYsVxAGBwYIEB8TGXBksxVlFwUFBgUUEycoAAACAFgASAHUAeEABgANAAA3\nNTcVBxcVNzU3FQcXFVinZWUup2Vl2nKVdVlZcpJylXVZWXIAAQAoAFYCIAF3AAUAABMhESM1ISgB\n+E3+VQF3/t/UAAABABoAzwEqAVYAAwAAARUhNQEq/vABVoeHAAAABP/y/+oC7wLnABoAIgAtADgA\nAAEVIxEzMhYVFAceAxcUFxUjLgE1NDc1NCMnMzI2NCYrASYgFhUUBiMiJjU0JCIGFRQWMzI2NTQB\nIGDtOUBFFRINAwETZgoFAT1bZiUcHCVmTQE84OGim98B/PyysnuBswE5rQG7QDlKIgoMJyw2FwsV\nER0jEQkRMVEXPhfx4J6g3+Kdnpi2gH+4tYKAAAEAEAKAATsCzwADAAABFSE1ATv+1QLPT08AAAAC\nADABfwFfAq4ACgAVAAATMhYVFAYjIiY0NhciBhUUFjMyNjQmyD5ZWUA9WVk/JTQ0IyY0NAKuWT5A\nWFp8WT80JSQ0NEozAAACADj/8AIPAmAAAwAPAAAlFSE1ARUjFSM1IzUzNTMVAg/+KQHXsHewsHdn\nd3cBSXewsHewsAAAAAEABwEcAT8CzgAhAAABFSE+ATc+ATU0JiIGFRQXIyY1NDYzMhYVFAYHDgIH\nBgcBPf7KAiw6SicgOh8CXAFRS0lOKjwMHQ8DDBABbVE9RyUyKyIeIiUiAg4ICkVKRUEtPCkJFQsC\nChQAAQAGAQ8BQALOACUAABM1MzI1NCYjIgYHIzY3NjMyFhUUBxYVFAYiJiczFjMyNjU0JicmfQpM\nHRgfGQFZBBkmUkJPNEJXklABXAM+GyMZFRIB1z46GR0hKUQeMUA1OSAhRj9LS0RCIhoWIAUEAAAA\nAAEAeQJfAT0C9QADAAABByM3AT1+RkYC9ZaWAAABADr/JAI9AhwAHQAAFyMRMxEUFxYyNjURMxEU\nFjMyNxUGIyImJw4BIyInwIaMEhZYOYwMEgcNISUjKhIeNCI9J9wC+P6yMxohPC4BUv56LB0EVxEY\nHh4YJgAAAAEAFP9BAhEC2QAQAAABFSMRIxEjESMRLgE1NDc2MwIRK2I/YlxzMzliAtlI/LADUPyw\nAcoFfmFXRE8AAAEAQACpALwBJAADAAATMxUjQHx8ASR7AAEAG/8kASYAAAAXAAA7AQc2MzIWFRQG\nIyInNxYzMjY1NCYjIgeiKx0VFSMpQj44UxNEJBghHBYZGD8HJiEtMBw0HhgREBMMAAEAHwEcAOkC\nxQAHAAATIzUyNzMRI4prdRVAXwI9PUv+VwAAAAMAFwEGAVcC2QADAA4AGAAAARUhNRMyFhUUBiIm\nNTQ2FyIGFBYyNjU0JgFO/tOWTFRWlFZVSyIqKkQqKQFUTk4BhVxSTltcT1BcRDheOTktMDkAAAIA\nWABIAc4B4QAGAA0AAAEVBzU3JzUFFQc1Nyc1AP+nZWUBdqdlZQFPc5R1WVlyknOUdVlZcgAABAAX\n/+wDJgLLAAcACwAWABkAABMjNTI3MxEjATMBIyUVIxUjNSM1EzMRIzUHgmt1FUBfAb5X/llXAo0u\nX7OlbV9qAj09S/5XAa/9IbxLXV1KAQL+/6SkAAMAF//sAz0CywAHAAsAKwAAEyM1MjczESMBMwEj\nJRUhPgE3PgE1NCYiBhUUFyMmNTQ2MzIWFRQGBwYHBgeCa3UVQF8BuFf+WVcCqP7KAiw6SyYgOh8C\nXAFRS0lOKjw4AwwQAj09S/5XAa/9IWVRPUclMyoiHiIlIgIOCApFSkVBLTwpKQIKFAAEABL/7AMt\nAs4AJQApADQANwAAEzUzMjU0JiMiBgcjNjc2MzIWFRQHFhUUBiImJzMWMzI2NTQmJyYlMwEjJRUj\nFSM1IzUTMxEjNQeJCkwdGB8ZAVkEGSZSQk80QleSUAFcAz4bIxkVEgGzV/5ZVwJ0Ll+zpW1fagHX\nPjoZHSEpRB4xQDU5ICFGP0tLREIiGhYgBQT0/SG8S11dSgEC/v+kpAAAAAIAM/80AiACHAAaAB4A\nABMzFgYHDgEVFBYzMjY1MwYHBiMiJjU0Njc+ASc1MxXvfAIqPCwbPC00O4gBLkGDb4szRi0WEJYB\nU0BTMyQqIjFCTURxPVmAZj9SMSAmaJKSAAMAGgAAAr8DqAAHAAoADgAAJSEHIwEzEyMLAzMXIwH1\n/u8xmQEDpvyaWV9fMX5GRpOTAtn9JwEQAR3+4wKYlgADABoAAAK/A6gABwAKAA4AACUhByMBMxMj\nCwITByM3AfX+7zGZAQOm/JpZX1/wfkZGk5MC2f0nARABHf7jApiWlgAAAAMAGgAAAr8DqAAHAAoA\nEQAAJSEHIwEzEyMLAhMzFyMnByMB9f7vMZkBA6b8mllfXytrZ01SUk2TkwLZ/ScBEAEd/uMCmJZk\nZAAAAAADABoAAAK/A6AABwAKAB8AACUhByMBMxMjCwITMwYjIi8BJiMiByM+ATMyHwEWMzIB9f7v\nMZkBA6b8mllfX9Y/B1gXIEcSDSEHPgIyKhQjSA4UHpOTAtn9JwEQAR3+4wKQfwwaBi06Qg0ZBgAE\nABoAAAK/A5oABwAKAA4AEgAAJSEHIwEzEyMLAhMVIzUhFSM1AfX+7zGZAQOm/JpZX184bgEobpOT\nAtn9JwEQAR3+4wKKenp6egAABAAaAAACvwO1AAcACgAUACAAACUhByMBMxMjCwISMhYVFAYiJjU0\nNyIGFRQWMzI2NTQmAfX+7zGZAQOm/JpZX186TDM1SjVbEhkZEhEYGJOTAtn9JwEQAR3+4wKlNCcl\nNDUlJgQYEhEZGRESGAAAAAIAAQAAA8YC2QAPABMAACUjByMBIRUhFSEVIRUhFSEZASMDAa7fNZkB\nBwKq/pIBU/6tAYL96ENymJgC2X2lfb19ARUBR/65AAEALP8kAq0C5QAyAAAFBzYzMhYVFAYjIic3\nFjMyNjU0JiMiBzcuAScmNTQ2MzIXFhcjJiMiBhUUFjMyNjczDgEBexMUFiMpQj44UxNEJBghGxcY\nGStFSyRvtJqoVyoHjx1/WWRhV0ZTCJIGoxcoByYhLTAcNB4YERATDFMMISJqxLHOczhYg4h5d4ZM\nRnyRAAIATwAAAnADqAALAA8AABMVIRUhESEVIRUhFQEzFyPlAYv93wIP/ocBXf6OfkZGATq9fQLZ\nfaV9Am6WAAIATwAAAnADqAALAA8AABMVIRUhESEVIRUhFQMHIzflAYv93wIP/ocBXWJ+RkYBOr19\nAtl9pX0CbpaWAAIATwAAAnADqAALABIAABMVIRUhESEVIRUhFQEzFyMnByPlAYv93wIP/ocBXf7j\nbGdOUlJMATq9fQLZfaV9Am6WZGQAAwBPAAACcAOaAAsADwATAAATFSEVIREhFSEVIRUBFSM1IRUj\nNeUBi/3fAg/+hwFd/vFuAShuATq9fQLZfaV9AmB6enp6AAAAAv/2AAAA1QOoAAMABwAAExEjEScz\nFyPVlkl+RkYC2f0nAtnPlgAAAAIAPwAAASIDqAADAAcAABMRIxE3ByM31ZbjfkZGAtn9JwLZz5aW\nAAAC/+0AAAErA6gAAwAKAAATESMRNzMXIycHI9WWGmtnTlJSTALZ/ScC2c+WZGQAAAAD//cAAAEf\nA5oAAwAHAAsAABMRIxE3FSM1IRUjNdWWJm4BKG4C2f0nAtnBenp6egACAAAAAAKpAtkAEQAgAAAT\nIzUzESEyFhceARQGBw4BIyETFTMyNzY1NCcmKwEVMxVNTU0BHVZsJSkvLykkbVb+45aHXCUuLiVc\nh5YBU1ABNigsNJOilDMtKAFT1jZBeHlBNrlQAAAAAAIARAAAApUDoAAJAB8AACEBESMRMwERMxED\nMwYjIi8BJiMiBgcjPgEzMh8BFjMyAf/+25aaASGWrz4GWRgeSBENEhIEPwMyKhMkSA4THwH4/ggC\n2f4QAfD9JwOgfwwaBhUYO0ENGQYAAwAo/+kC5gOoABAAGwAfAAABMhcWFRQGBwYgJy4BNTQ3Nhci\nBhQWMzI2NTQmAzMXIwGGnF5mNy9e/speMTVmXZxbbm5bWm9t5X5GRgLlZWyyTZUyZWU0k1KrbmWA\niuiKinB2jAFDlgADACj/6QLmA6gAEAAbAB8AAAEyFxYVFAYHBiAnLgE1NDc2FyIGFBYzMjY1NCYT\nByM3AYacXmY3L17+yl4xNWZdnFtubltab20vfkZGAuVlbLJNlTJlZTSTUqtuZYCK6IqKcHaMAUOW\nlgAAAAADACj/6QLmA6gAEAAbACIAAAEyFxYVFAYHBiAnLgE1NDc2FyIGFBYzMjY1NCYDMxcjJwcj\nAYacXmY3L17+yl4xNWZdnFtubltab22Pa2dOUlJMAuVlbLJNlTJlZTSTUqtuZYCK6IqKcHaMAUOW\nZGQAAwAo/+kC5gOgABAAGwAwAAABMhcWFRQGBwYgJy4BNTQ3NhciBhQWMzI2NTQmEzMGIyIvASYj\nIgcjPgEzMh8BFjMyAYacXmY3L17+yl4xNWZdnFtubltab20dPwdYGB9HEgwiBz4CMioUJEcOFB4C\n5WVssk2VMmVlNJNSq25lgIroiopwdowBO38MGgYtOkINGQYAAAQAKP/pAuYDmgAQABsAHwAjAAAB\nMhcWFRQGBwYgJy4BNTQ3NhciBhQWMzI2NTQmAxUjNSEVIzUBhpxeZjcvXv7KXjE1Zl2cW25uW1pv\nbYJuAShuAuVlbLJNlTJlZTSTUqtuZYCK6IqKcHaMATV6enp6AAAAAQBPABIB+QG8AAsAAAEXBxcH\nJwcnNyc3FwGlVIGAVICAVICBVIEBvFSBgVSBgFSAgFWBAAMAH//ZAvMC7QAXAB8AJwAANwcnNyY1\nNDc2MzIXNxcHHgEVFAYHBiMiCQEWMzI2NTQFASYjIgYVFKVTM1ZSZ16ciV9TNFkiJzYwX5qIATv+\nyTJRXG7+iQE6N1VdbjRbLl9uk61sZVRcLWMuhEZQlDNlAgj+qDCLdUvjAVo6i3ZRAAAAAAIATP/p\nAo4DqAAPABMAAAEzERQHBiAnJjURMxEUIDUBMxcjAfiWR1L+8FJHlgEW/ux+RkYC2f4SeEBKSkB4\nAe7+EoKCAr2WAAIATP/pAo4DqAAPABMAAAEzERQHBiAnJjURMxEUIDURByM3AfiWR1L+8FJHlgEW\nfkZGAtn+EnhASkpAeAHu/hKCggK9lpYAAAIATP/pAo4DqAAPABYAAAEzERQHBiAnJjURMxEUIDUD\nMxcjJwcjAfiWR1L+8FJHlgEWvmtnTlJSTALZ/hJ4QEpKQHgB7v4SgoICvZZkZAAAAwBM/+kCjgOa\nAA8AEwAXAAABMxEUBwYgJyY1ETMRFCA1AxUjNSEVIzUB+JZHUv7wUkeWARaxbgEobgLZ/hJ4QEpK\nQHgB7v4SgoICr3p6enoAAAAAAgAbAAACigOoAAgADAAAAREjEQMzGwEzJwcjNwGjlvKnlYuoqn5G\nRgEO/vIBDgHL/r4BQs+WlgACAEwAAAJ5AtkADQAVAAA3FSMRMxUzMhcWFRQGIyczMjY1NCsB4paW\nrHQ5Pndlu4w8OXWMjIwC2Xg4PW5wgn02OG0AAAEAQ//vAj8C2QAqAAABNTM+ATU0JiMiBhURIxE0\nNzYzMhYVFAcWFxYVFAYjIic1NjsBPgE1NCYjAR0JLjQ0LikujD0/cGWAVywjM3hiFzEGBxQ0QUhB\nAV1fAS8pJywqJf3nAgZxMDJmUGYiCSAvV3KLBnABAUU1OkIAAAADABz/6QIMAvUAHAApAC0AACUV\nIyY1BiMiJjU0PwE2NzY1NCMiBgcjNjMyFREUJzUGDwEOARUUFjMyNgMzFyMCDJgQSlpKWp84RRMY\nUTQqBYcN2t2JEygwLCQpIzU6335GRhERFCJNWUmPGwoLCg4cNiAqu6b+1COpJgkICQkiHx4jQgJZ\nlgAAAwAc/+kCDAL1ABwAKQAtAAAlFSMmNQYjIiY1ND8BNjc2NTQjIgYHIzYzMhURFCc1Bg8BDgEV\nFBYzMjYTByM3AgyYEEpaSlqfOEUTGFE0KgWHDdrdiRMoMCwkKSM1Ojh+RkYRERQiTVlJjxsKCwoO\nHDYgKrum/tQjqSYJCAkJIh8eI0ICWZaWAAMAHP/pAgwC9QAcACkAMAAAJRUjJjUGIyImNTQ/ATY3\nNjU0IyIGByM2MzIVERQnNQYPAQ4BFRQWMzI2AzMXIycHIwIMmBBKWkpanzhFExhRNCoFhw3a3YkT\nKDAsJCkjNTqGa2dOUVNMEREUIk1ZSY8bCgsKDhw2ICq7pv7UI6kmCQgJCSIfHiNCAlmWZGQAAAMA\nHP/pAgwC7QAcACkAPwAAJRUjJjUGIyImNTQ/ATY3NjU0IyIGByM2MzIVERQnNQYPAQ4BFRQWMzI2\nEzMGIyIvASYjIgYHIz4BMzIfARYzMgIMmBBKWkpanzhFExhRNCoFhw3a3YkTKDAsJCkjNTogPgZZ\nGB5IEA4SEgQ/AzIqEyRIDBUfEREUIk1ZSY8bCgsKDhw2ICq7pv7UI6kmCQgJCSIfHiNCAlF/DBoG\nFRg7QQ0ZBgAAAAAEABz/6QIMAucAHAApAC0AMQAAJRUjJjUGIyImNTQ/ATY3NjU0IyIGByM2MzIV\nERQnNQYPAQ4BFRQWMzI2AxUjNSEVIzUCDJgQSlpKWp84RRMYUTQqBYcN2t2JEygwLCQpIzU6eW4B\nKG4RERQiTVlJjxsKCwoOHDYgKrum/tQjqSYJCAkJIh8eI0ICS3p6enoAAAAABAAc/+kCDAMCABwA\nKQAzAD8AACUVIyY1BiMiJjU0PwE2NzY1NCMiBgcjNjMyFREUJzUGDwEOARUUFjMyNgIyFhUUBiMi\nJjQ3IgYVFBYzMjY1NCYCDJgQSlpKWp84RRMYUTQqBYcN2t2JEygwLCQpIzU6eEwzNSUmNFsSGRkS\nERgYEREUIk1ZSY8bCgsKDhw2ICq7pv7UI6kmCQgJCSIfHiNCAmY0JyU0NEwEGBIRGRkREhgAAwAb\n/+gDWQIlACwAOAA8AAAlMw4BIyInBiMiJjU0PwE2NzY1NCMiBgcjNjMyFzYzMhYXFhUUByEUFxYz\nMjYlNQYPAQYVFBYzMjY3MyYiAsiKF4hbiEBYdU1bnzhFExhVLysFgwPhdTo+XVR7HBUB/pYUID4k\nO/6jFiUwUCkjNjmN2AvEmFBfaGlZTJEaCgsKDRs1ISm7MjJTSjpUDAw+HzEmXiYNBgcLPh8jQaV7\nAAABACL/JAIKAiUAMgAABQc2MzIWFRQGIyInNxYzMjY1NCYjIgc3LgE1NDYzMhYXIy4BIyIHBhUU\nFxYzMjY3Mw4BASMREhckKUM+O08TQScYIRwXGBkraG6GeWZ7CIYMLSs+GRsmGjMpLQ2GCIEXKAcm\nIS0wHDQeGBEQEwxVDo97iphwYzUtLjNPXC4gLTRedQADABb/6QINAvUAFwAcACAAACUhFhcWMzI3\nMw4BIyImNTQ2MzIWFxYVFCUzJiMiAzMXIwIM/pYDER89UBuKF4hbc4SGdFJ7GxX+l9cLYl0sf0VF\n4kQbL0RQX5WCiJ1TSj1RDFF7ATuWAAMAFv/pAg0C9QAXABwAIAAAJSEWFxYzMjczDgEjIiY1NDYz\nMhYXFhUUJTMmIyITByM3Agz+lgMRHz1QG4oXiFtzhIZ0UnsbFf6X1wtiXfJ+RkbiRBsvRFBflYKI\nnVNKPVEMUXsBO5aWAAAAAAMAFv/pAg0C9QAXABwAIwAAJSEWFxYzMjczDgEjIiY1NDYzMhYXFhUU\nJTMmIyITMxcjJwcjAgz+lgMRHz1QG4oXiFtzhIZ0UnsbFf6X1wtiXTRrZ05RU0ziRBsvRFBflYKI\nnVNKPVEMUXsBO5ZkZAAEABb/6QINAucAFwAcACAAJAAAJSEWFxYzMjczDgEjIiY1NDYzMhYXFhUU\nJTMmIyITFSM1IRUjNQIM/pYDER89UBuKF4hbc4SGdFJ7GxX+l9cLYl1BbgEobuJEGy9EUF+Vgoid\nU0o9UQxRewEtenp6egAAAAL/9gAAAM8C9QADAAcAABMRIxEnMxcjz4xNfkZGAhz95AIc2ZYAAAAC\nAEMAAAEiAvUAAwAHAAATESMRNwcjN8+M335GRgIc/eQCHNmWlgAAAv/tAAABKwL1AAMACgAAExEj\nETczFyMnByPPjBZrZ05SUkwCHP3kAhzZlmRkAAAAA//3AAABHwLnAAMABwALAAATESMRNxUjNSEV\nIzXPjCJuAShuAhz95AIcy3p6enoAAgAj/+kCOQLoAB8AKgAAAQceARUUBwYjIiY1NDc2MzIXJicH\nJzcmJzcWHwEWFzcCIgYVFBYzMjY1NAGwVHJrPUmFfY5xPEIkMSg3TSpGJjRDHxoeAg1XFXRERDo5\nRQLGMky+fYFMV5mHpUMlE0AgLiUsFxkvCw4RAgU0/sVcTU5cXEtPAAAAAAIAPwAAAiIC7QARACcA\nABMzFTYzMhYVESMRNCMiBhURIwEzBiMiLwEmIyIGByM+ATMyHwEWMzI/jDlpV16MWjQ9jAFhPgZZ\nGB5IEQ0SEgQ/AzIqEyRIDBUfAhxOV2Fa/pYBTWE6MP68Au1/DBoGFRg7QQ0ZBgAAAAMAI//pAjkC\n9QAKABUAGQAAATIWFRQGIyImEDYXIgYUFjMyNjU0JgMzFyMBLX+Nj3x9jo59OUZGOThHRcN+RkYC\nJZmJg5eZAQqZcV+cX19MUF8BQZYAAAADACP/6QI5AvUACgAVABkAAAEyFhUUBiMiJhA2FyIGFBYz\nMjY1NCYTByM3AS1/jY98fY6OfTlGRjk4R0VRfkZGAiWZiYOXmQEKmXFfnF9fTFBfAUGWlgAAAwAj\n/+kCOQL1AAoAFQAcAAABMhYVFAYjIiYQNhciBhQWMzI2NTQmAzMXIycHIwEtf42PfH2Ojn05RkY5\nOEdFbWtnTlJSTAIlmYmDl5kBCplxX5xfX0xQXwFBlmRkAAAAAwAj/+kCOQLtAAoAFQAqAAABMhYV\nFAYjIiYQNhciBhQWMzI2NTQmEzMGIyIvASYjIgcjPgEzMh8BFjMyAS1/jY98fY6OfTlGRjk4R0U8\nPgZZGB5HEg0hBz8DMioTJEgOFB4CJZmJg5eZAQqZcV+cX19MUF8BOX8MGgYtO0ENGQYAAAAABAAj\n/+kCOQLnAAoAFQAZAB0AAAEyFhUUBiMiJhA2FyIGFBYzMjY1NCYDFSM1IRUjNQEtf42PfH2Ojn05\nRkY5OEdFYG4BKG4CJZmJg5eZAQqZcV+cX19MUF8BM3p6enoAAwAy//UCFgHaAAMABwALAAABFSE1\nNzMVIxUzFSMCFv4ctHx8fHwBI3d3t3vvewAAAwAL/9oCVgItABMAGwAjAAA3Byc3JjU0NjMyFzcX\nBxYVFAYjIhMHFjMyNjU0BzcmIyIGFRR+SCtLMo9+a0tEK0gvj3x058kkMjhH88omMzhHI0koTUhw\nhpg+RilJSWuFmQFnzCpfSyh0zi9fTC4AAAIAOv/pAh0C9QARABUAACEjNQYjIiY1ETMRFDMyNjUR\nMyUzFyMCHYw5aVdejFo0PYz+hn5GRkBXYVoBeP6lYTowAVLZlgAAAAIAOv/pAh0C9QARABUAACEj\nNQYjIiY1ETMRFDMyNjURMycHIzcCHYw5aVdejFo0PYxnfkZGQFdhWgF4/qVhOjABUtmWlgAAAAIA\nOv/pAh0C9QARABgAACEjNQYjIiY1ETMRFDMyNjURMyUzFyMnByMCHYw5aVdejFo0PYz+22tnTVJS\nTUBXYVoBeP6lYTowAVLZlmRkAAAAAwA6/+kCHQLnABEAFQAZAAAhIzUGIyImNREzERQzMjY1ETMl\nFSM1IRUjNQIdjDlpV16MWjQ9jP7obgEobkBXYVoBeP6lYTowAVLLenp6egACAAn/JQIaAvUAEgAW\nAAABMwMOAQcGIyInNRYzMjY1AzMbAQcjNwGKkN4RIR0qOxYcGgsnMMmad4J+RkYCHP2BMSoMEQRp\nBjQqAjL+dwJilpYAAAACADr/JgI+AtkADgAZAAATETYzMhYVFAYjIicRIxEAIgYVFBYzMjY1NMYy\nZGGBgGJkMowBN2pBQTU0QgLZ/vNZo3x7olf+5gOz/tddTUtdXEpOAAADAAn/JQIaAucAEgAWABoA\nAAEzAw4BBwYjIic1FjMyNjUDMxMDFSM1IRUjNQGKkN4RIR0qOxYcGgsnMMmady9uAShuAhz9gTEq\nDBEEaQY0KgIy/ncCVHp6enoAAAMAGgAAAr8DggAHAAoADgAAJSEHIwEzEyMLAhMVITUB9f7vMZkB\nA6b8mllfX/T+1ZOTAtn9JwEQAR3+4wJyT08AAAAAAwAc/+kCDALPABwAKQAtAAAlFSMmNQYjIiY1\nND8BNjc2NTQjIgYHIzYzMhURFCc1Bg8BDgEVFBYzMjYTFSE1AgyYEEpaSlqfOEUTGFE0KgWHDdrd\niRMoMCwkKSM1OkP+1RERFCJNWUmPGwoLCg4cNiAqu6b+1COpJgkICQkiHx4jQgIzT08AAAMAGgAA\nAr8DnwAHAAoAGQAAJSEHIwEzEyMLAhMzFhUUBiMiJiczFjMyNgH1/u8xmQEDpvyaWV9fqDcBTDg8\nRwE3CkMiI5OTAtn9JwEQAR3+4wKPBQY4TExDQh8AAwAc/+kCDALsABwAKQA3AAAlFSMmNQYjIiY1\nND8BNjc2NTQjIgYHIzYzMhURFCc1Bg8BDgEVFBYzMjYTFRQGIyImPQEzFjMyNwIMmBBKWkpanzhF\nExhRNCoFhw3a3YkTKDAsJCkjNTo0TDg5SzgJREALEREUIk1ZSY8bCgsKDhw2ICq7pv7UI6kmCQgJ\nCSIfHiNCAlALOExMOQpCQgAAAAIAGv8XAtMC2QAXABoAACUhByMBMxMOARUUMzI3FQYjIiY1NDY3\nIwsCAfX+7zGZAQOm/DQ9SxogKSJHTUE7S1lfX5OTAtn9JxdFJTUFLwkxLixJFQEQAR3+4wAAAgAc\n/xcCJAIlACoANwAAJRUGFRQzMjcVBiMiJjQ2NyMmNQYjIiY1ND8BNjc2NTQjIgYHIzYzMhURFCc1\nBg8BDgEVFBYzMjYCDG1MGSAjKEZOQjpNEEpaSlqfOEUTGFE0KgWHDdrdiRMoMCwkKSM1OhEROUg1\nBS8JMlhLFBQiTVlJjxsKCwoOHDYgKrum/tQjqSYJCAkJIh8eI0IAAgAs/+kCrQOoABkAHQAAASMm\nIyIGFRQWMzI2NzMOASMiJjU0NjMyFxYDByM3AqqPHX9ZZGFXRlMIkgeoiJiytJqoVyqlfkZGAeKD\niHl3hkxGfZPNsLHOczgBbpaWAAAAAgAi/+kCCgL1ABkAHQAAASMuASMiBwYUFjMyNjczDgEjIiY1\nNDYzMhYDByM3AgqGDC0rPhkbPDUqLg2GCn9ieIWGeWZ7V35GRgFSNS0uM6BZLDVhcZSGiphwAUCW\nlgAAAgAs/+kCrQOoABkAIAAAASMmIyIGFRQWMzI2NzMOASMiJjU0NjMyFxYBMxcjJwcjAqqPHX9Z\nZGFXRlMIkgeoiJiytJqoVyr+nGxnTlJSTAHig4h5d4ZMRn2TzbCxznM4AW6WZGQAAAACACL/6QIK\nAvUAGQAgAAABIy4BIyIHBhQWMzI2NzMOASMiJjU0NjMyFgEzFyMnByMCCoYMLSs+GRs8NSouDYYK\nf2J4hYZ5Znv+4WxnTlJSTAFSNS0uM6BZLDVhcZSGiphwAUCWZGQAAAIALP/pAq0DmgAZAB0AAAEj\nJiMiBhUUFjMyNjczDgEjIiY1NDYzMhcWAxUjNQKqjx1/WWRhV0ZTCJIHqIiYsrSaqFcq/24B4oOI\neXeGTEZ9k82wsc5zOAFgenoAAgAi/+kCCgLnABkAHQAAASMuASMiBwYUFjMyNjczDgEjIiY1NDYz\nMhYDFSM1AgqGDC0rPhkbPDUqLg2GCn9ieIWGeWZ7q24BUjUtLjOgWSw1YXGUhoqYcAEyenoAAAAA\nAgAs/+kCrQOoABkAIAAAASMmIyIGFRQWMzI2NzMOASMiJjU0NjMyFxYnIyczFzczAqqPHX9ZZGFX\nRlMIkgeoiJiytJqoVyr4a2dOUVNMAeKDiHl3hkxGfZPNsLHOczjYlmFhAAIAIv/pAgoC9QAZACAA\nAAEjLgEjIgcGFBYzMjY3Mw4BIyImNTQ2MzIWJyMnMxc3MwIKhgwtKz4ZGzw1Ki4Nhgp/YniFhnlm\ne61rZ01SUk0BUjUtLjOgWSw1YXGUhoqYcKqWYWEAAAAAAwBNAAACqQOoAAsAEgAZAAAzESEyFhcW\nFRQHBiMnMzI1NCsBNyMnMxc3M00BHVRuJVhYSJ+Hh6mph6RsZ05SUkwC2Sgsa62vaVV97/C2lmFh\nAAAAAwAf/+kC1ALZABAAGgAkAAAhNQYjIiYnJjU0NjMyFxEzEQIiBhUUFjI2NTQTMxUWBgc1Nicj\nAZczYjJbHDqCYWIzjM1qQUJoQsF6Akc1RQJDN04uKFRzeqVPAQP9JwGwXkxKXlxKTgGHZzpUAi4N\nTAAAAAACAAAAAAKpAtkAEQAgAAATIzUzESEyFhceARQGBw4BIyETFTMyNzY1NCcmKwEVMxVNTU0B\nHVZsJSkvLykkbVb+45aHXCUuLiVch5YBU1ABNigsNJOilDMtKAFT1jZBeHlBNrlQAAAAAAIAHf/p\nAl0C2QAWACEAAAEjNTM1MxUzFSMRIzUGIyImNTQ2MzIXByIGFRQWMjY1NCYBlYWFjDw8jDNiYYKC\nYWIzdjRCQmhCQQJUQ0JCQ/2sN06keXqlTyZfS0peXEpOXgAAAAACAE8AAAJwA4IACwAPAAATFSEV\nIREhFSEVIRUDFSE15QGL/d8CD/6HAV1U/tUBOr19Atl9pX0CSE9PAAADABb/6QINAs8AFwAcACAA\nACUhFhcWMzI3Mw4BIyImNTQ2MzIWFxYVFCUzJiMiExUhNQIM/pYDER89UBuKF4hbc4SGdFJ7GxX+\nl9cLYl39/tXiRBsvRFBflYKInVNKPVEMUXsBFU9PAAIATwAAAnADnwALABoAABMVIRUhESEVIRUh\nFQMVFAYjIiY9ATMWMzI2N+UBi/3fAg/+hwFdZkw4OUs4CUQhIwcBOr19Atl9pX0CZQs4TEw5CkIf\nIwAAAAADABb/6QINAuwAFwAcACoAACUhFhcWMzI3Mw4BIyImNTQ2MzIWFxYVFCUzJiMiExUUBiMi\nJj0BMxYzMjcCDP6WAxEfPVAbiheIW3OEhnRSexsV/pfXC2Jd60w4OUs4CURAC+JEGy9EUF+Vgoid\nU0o9UQxRewEyCzhMTDkKQkIAAAIATwAAAnADmgALAA8AABMVIRUhESEVIRUhFQMVIzXlAYv93wIP\n/ocBXbJuATq9fQLZfaV9AmB6egAAAAMAFv/pAg0C5wAXABwAIAAAJSEWFxYzMjczDgEjIiY1NDYz\nMhYXFhUUJTMmIyITFSM1Agz+lgMRHz1QG4oXiFtzhIZ0UnsbFf6X1wtiXZ5u4kQbL0RQX5WCiJ1T\nSj1RDFF7AS16egAAAQBP/xcCiALZABkAABMVIRUGFRQzMjcVBiMiJjU0NyERIRUhFSEV5QGLbEsb\nHiMnR059/ikCD/6HAV0BOr19O0Y1BS8JMi1ROQLZfaV9AAACABX/FgINAiUAKQAuAAAFFQYjIiY1\nNDY3BiMiJjU0NjMyFhcWFRQHIRYXFjMyNzMOAQcOARUUMzIBMyYjIgHeJyhDTSo1LyNzhIZ0Unwb\nFQH+lgMRHj5PG4oKHiw0JUwd/uHYC2JesS8KNC0iNyUNloKInVNKPFIMDEQcL0UmLi84PyE0AfZ7\nAAAAAAIATwAAAnADqAALABIAABMVIRUhESEVIRUhFQMjJzMXNzPlAYv93wIP/ocBXbZrZ05SUkwB\nOr19Atl9pX0B2JZhYQAAAwAW/+kCDQL1ABcAHAAjAAAlIRYXFjMyNzMOASMiJjU0NjMyFhcWFRQl\nMyYjIjcjJzMXNzMCDP6WAxEfPVAbiheIW3OEhnRSexsV/pfXC2JdmmtnTVJSTeJEGy9EUF+Vgoid\nU0o9UQxRe6WWYWEAAAIAKv/pAscDqAAgACcAAAERIycOASMiJjU0NjMyFhcjJicmIyIGFRQWMzI3\nNjcjNQMzFyMnByMCx1oSKmhKlMHEnYSrDY0RHDJPYGx1W1w5HwWmUWxnTlJSTAGI/nZgPTjYpqrU\nhHExGCyGdnGPRiQ4fQIglmRkAAMAKf8mAhUC9QAcACgALwAAATMRFAYjIicmJzMWMzI2PQEOASMi\nJjU0NzYzMhcHIgYVFBYzMjY1NCYDMxcjJwcjAZCFhXVyQDQBkBFLMj4lPSxheFI8TlI5cS87Oi40\nQUGBa2dOUlJMAhz90l5qNCo7Pz0xSSwim32QVT9cGWBNSVxbSktiAUWWZGQAAgAq/+kCxwOfACAA\nLwAAAREjJw4BIyImNTQ2MzIWFyMmJyYjIgYVFBYzMjc2NyM1ExUUBiMiJj0BMxYzMjY3AsdaEipo\nSpTBxJ2Eqw2NERwyT2BsdVtcOR8Fpm9MODlLOAlDIiMHAYj+dmA9ONimqtSEcTEYLIZ2cY9GJDh9\nAhcLOExMOQpCHyMAAAADACn/JgIVAuwADQAqADYAAAEVFAYjIiY9ATMWMzI3FzMRFAYjIicmJzMW\nMzI2PQEOASMiJjU0NzYzMhcHIgYVFBYzMjY1NCYBtEw4OUs4CURACxSFhXVyQDQBkBFLMj4lPSxh\neFI8TlI5cS87Oi40QUEC7As4TEw5CkJC0P3SXmo0Kjs/PTFJLCKbfZBVP1wZYE1JXFtKS2IAAAAC\nACr/6QLHA5oAIAAkAAABESMnDgEjIiY1NDYzMhYXIyYnJiMiBhUUFjMyNzY3IzUTFSM1AsdaEipo\nSpTBxJ2Eqw2NERwyT2BsdVtcOR8Fpg1uAYj+dmA9ONimqtSEcTEYLIZ2cY9GJDh9AhJ6egAAAwAp\n/yYCFQLnAAMAIAAsAAABFSM1FzMRFAYjIicmJzMWMzI2PQEOASMiJjU0NzYzMhcHIgYVFBYzMjY1\nNCYBX26fhYV1ckA0AZARSzI+JT0sYXhSPE5SOXEvOzouNEFBAud6esv90l5qNCo7Pz0xSSwim32Q\nVT9cGWBNSVxbSktiAAAAAgAq/s0CxwLlACAAKgAAAREjJw4BIyImNTQ2MzIWFyMmJyYjIgYVFBYz\nMjc2NyM1AzMVFgYHNTYnIwLHWhIqaEqUwcSdhKsNjREcMk9gbHVbXDkfBaZXegJHNUUCQwGI/nZg\nPTjYpqrUhHExGCyGdnGPRiQ4ff48ZzpUAi4NTAADACn/JgIVA1UACQAmADIAAAEjNSY2NxUGFzMX\nMxEUBiMiJyYnMxYzMjY9AQ4BIyImNTQ3NjMyFwciBhUUFjMyNjU0JgFmegJHNUUCQyqFhXVyQDQB\nkBFLMj4lPSxheFI8TlI5cS87Oi40QUECXmc6VAIuDUyy/dJeajQqOz89MUksIpt9kFU/XBlgTUlc\nW0pLYgAAAgBEAAACkQOoAAsAEgAAASERIxEzESERMxEjAzMXIycHIwH7/t+WlgEgl5bFbGdOUlJM\nAUv+tQLZ/u8BEf0nA6iWZGQAAAAAAv/yAAACHQOoABQAGwAAEzMRNjMyFxYVESMRNCcmIyIGFREj\nEzMXIycHI0OMOWVIMTeMEBguLz2MG2tnTlJSTALZ/vVXKS5k/pYBSi0WITwu/rwDqJZkZAAAAAAC\nAAEAAALUAtkAEwAXAAABIREjESM1MzUzFSE1MxUzFSMRIxE1IRUB+/7flkNDlgEhlkNDlv7fAUv+\ntQIZUHBwcHBQ/ecByFFRAAAAAQAFAAACHQLZABwAABMzFSMVNjMyFxYVESMRNCcmIyIGFREjESM1\nMzUzz7OzOmNJMTeMERgtLz2MPj6MAqBQglcpLmT+lgFKKhkhPC7+vAJQUDkAAv/bAAABPQOgAAMA\nGQAAExEjETczBiMiLwEmIyIGByM+ATMyHwEWMzLVlr8/B1gXIEcRDRISBD8DMikUJEcQEiAC2f0n\nAtnHfwwaBhUYOkINGQYAAv/bAAABPQLtAAMAGQAAExEjETczBiMiLwEmIyIGByM+ATMyHwEWMzLP\njLs/BlkXIEcQDhISBD8DMikUJEcOFCACHP3kAhzRfwwaBhUYOkINGQYAAgACAAABEgOCAAMABwAA\nExEjETcVITXVltP+8ALZ/ScC2alPTwAAAAIACAAAAQsCzwADAAcAABMRIxE3FSE10IzH/v0CHP3k\nAhyzT08AAAACAAcAAAEPA58AAwASAAATESMRNxUUBiMiJj0BMxYzMjY31ZbQTDg5SzgJRCEjBwLZ\n/ScC2cYLOExMOQpCHyMAAgADAAABCwLkAAMAEgAAExEjETcVFAYjIiY9ATMWMzI2N8+MyEw4OUs4\nCUQhIwcCHP3kAhzICzhMTDkKQh8jAAEAIv8XAO0C2QASAAATEQYVFBYzMjcVBiMiJjU0NyMR1Vkj\nHBcbJx8+R3FUAtn9J0BDFh0FLwk0LUw8AtkAAAACACL/FwDnAtkAEwAXAAATEQYVFBcWMzI3FQYj\nIiY1NDcjETcVIzXPUxUUFg8dKBc+SG5NjIwCHP3kPEQeDQsFLwk0LUdBAhy9fX0AAgA/AAAA1QOa\nAAMABwAAExEjETcVIzXVloJuAtn9JwLZwXp6AAAAAAEAQwAAAM8CHAADAAATESMRz4wCHP3kAhwA\nAAACAED/6QLVAtkAAwAWAAATESMRITMRFAYjIicmPQEzFRQWMzI2NdaWAf+WenBnQD2WJisnKgLZ\n/ScC2f3lZm86OWpIRjItLCkAAAAABABU/yYB3wLZAAMABwAVABkAABMRIxE3FSM1BREUBiMiJzUW\nMzI2NRE3FSM14IyMjAGLOkEmLQwNFxKMjAIc/eQCHL19fb39hkI6BXAEExcCW719fQAAAAIAGP/p\nAjoDqAASABkAAAEzERQGIyInJj0BMxUUFjMyNjUTMxcjJwcjAVCWenBnQD2WJisnKhdsZ05SUkwC\n2f3lZm86OWpIRjItLCkC6pZkZAAAAAL/6/8mASkC9QANABQAABMRFAYjIic1FjMyNjURNzMXIycH\nI9I6QSYtDA0XEhFrZ05SUkwCHP2GQjoFcAQTFwJb2ZZkZAAAAAIASv7NAs0C2QALABUAADcVIxEz\nEQEzCQEjAxMzFRYGBzU2JyPglpYBHbH+3QFCs+8QegJHNUUCQ/T0Atn+wAFA/sb+YQFC/oJnOlQC\nLg1MAAAAAAIAO/7NAiQC2QALABUAABM3MwcTIycHFSMRMxMzFRYGBzU2JyPHsZ+4xaSBOIyMHnoC\nRzVFAkMBStLM/rDuPbEC2fzrZzpUAi4NTAABADYAAAH4Af4ACwAANxUjETMVNzMHEyMnn2lpx33M\n4X6nqqoB/uDg2/7d4QAAAAACAFAAAAJDA6gABQAJAAATESEVIRE3ByM35gFd/g3afkZGAtn9pH0C\n2c+WlgAAAAACAEMAAAEWA6gAAwAHAAATESMRNwcjN8+M035GRgLZ/ScC2c+WlgAAAgBQ/s0CQwLZ\nAAUADwAAExEhFSEREzMVFgYHNTYnI+YBXf4NvXoCRzVFAkMC2f2kfQLZ/OtnOlQCLg1MAAAAAAIA\nQ/7NAM8C2QADAA0AABMRIxETMxUWBgc1Nicjz4wLegJHNUUCQwLZ/ScC2fzrZzpUAi4NTAAAAgBQ\nAAACQwLZAAUADwAAExEhFSEROwEVFgYHNTYnI+YBXf4N+noCRzVFAkMC2f2kfQLZZzpUAi4NTAAA\nAgBDAAABgALZAAMADQAAExEjETsBFRYGBzU2JyPPjMF6Akc1RQJDAtn9JwLZZzpUAi4NTAAAAAAC\nAFAAAAJDAtkABQAJAAATESEVIREBMxUj5gFd/g0BLXx8Atn9pH0C2f7QewAAAAACAE8AAAG4AtkA\nAwAHAAATESMREzMVI9uM7Xx8Atn9JwLZ/tB7AAAAAQAAAAACVQLZAA0AABM3FQcVIRUhEQc1NxEz\n5qWlAW/9+1BQlgGncFhx0X0BAThZOAF/AAEAAAAAAPwC2QALAAATNxUHESMRBzU3ETPEODiMODiM\nAbooTyj+lQEmKE8oAWQAAAIARAAAApUDqAAJAA0AACEBESMRMwERMxEDByM3Af/+25aaASGWoX5G\nRgH4/ggC2f4QAfD9JwOolpYAAAIAPwAAAiIC9QARABUAABMzFTYzMhYVESMRNCMiBhURIwEHIzc/\njDlpV16MWjQ9jAF4fkZGAhxOV2Fa/pYBTWE6MP68AvWWlgAAAAACAET+zQKVAtkACQATAAAhAREj\nETMBETMRBTMVFgYHNTYnIwH//tuWmgEhlv6XegJHNUUCQwH4/ggC2f4QAfD9JzxnOlQCLg1MAAAA\nAgA//s0CIgIlABEAGwAAEzMVNjMyFhURIxE0IyIGFREjFzMVFgYHNTYnIz+MOWlXXoxaND2MtXoC\nRzVFAkMCHE5XYVr+lgFNYTow/rw8ZzpUAi4NTAAAAAIARAAAApUDqAAJABAAACEBESMRMwERMxED\nIyczFzczAf/+25aaASGW9GtnTlFTTAH4/ggC2f4QAfD9JwMSlmFhAAAAAgA/AAACIgL1ABEAGAAA\nEzMVNjMyFhURIxE0IyIGFREjASMnMxc3Mz+MOWlXXoxaND2MASFsZ05SUkwCHE5XYVr+lgFNYTow\n/rwCX5ZhYQACAA8AAAJ1AtkAEQAbAAATMxU2MzIWFREjETQjIgYVESMDMxUWBgc1Nicjkow5aVde\njFo0PYyDegJHNUUCQwIcTldhWv6WAU1hOjD+vALZZzpUAi4NTAAAAQBC/toCjwLlAB8AAAE1FjMy\nNjURNCYiBwYVESMRMxU2MzIXHgEVERQHBiMiAYoiFCIWO44nMJaWSYlgPiYhGSJcMv7hiwYcKwIj\nRzogKEf+PgLZanY4IltH/aVcJTMAAQA//yYCIgIlAB0AAAU1FjMyNjURNCYjIgYVESMRMxU2MzIX\nFhURFAYjIgFUDw0VESwvMz2MjDlpTTE3OEMm1XEFFhsBhjIuOjD+vAIcTlcpLmT+OEQ4AAMAKP/p\nAuYDggAQABsAHwAAATIXFhUUBgcGICcuATU0NzYXIgYUFjMyNjU0JhMVITUBhpxeZjcvXv7KXjE1\nZl2cW25uW1pvbTr+1QLlZWyyTZUyZWU0k1KrbmWAiuiKinB2jAEdT08AAwAj/+kCOQLPAAoAFQAZ\nAAABMhYVFAYjIiYQNhciBhQWMzI2NTQmExUhNQEtf42PfH2Ojn05RkY5OEdFXP7VAiWZiYOXmQEK\nmXFfnF9fTFBfARtPTwAAAAMAKP/pAuYDnwAQABsAKgAAATIXFhUUBgcGICcuATU0NzYXIgYUFjMy\nNjU0JgMzFhUUBiMiJiczFjMyNgGGnF5mNy9e/speMTVmXZxbbm5bWm9tETcBTDg8RwE3CkMiIwLl\nZWyyTZUyZWU0k1KrbmWAiuiKinB2jAE6BQY4TExDQh8AAAMAI//pAjkC7AAKABUAJAAAATIWFRQG\nIyImEDYXIgYUFjMyNjU0JhMVFAYjIiY9ATMWMzI2NwEtf42PfH2Ojn05RkY5OEdFR0w4OUs4CUQh\nIwcCJZmJg5eZAQqZcV+cX19MUF8BOAs4TEw5CkIfIwAEACj/6QLmA6gAEAAbAB8AIwAAATIXFhUU\nBgcGICcuATU0NzYXIgYUFjMyNjU0JgMHIzchByM3AYacXmY3L17+yl4xNWZdnFtubltab20WfkZG\nATp+RkYC5WVssk2VMmVlNJNSq25lgIroiopwdowBQ5OTk5MAAAAEACP/6QI5AvUACgAVABkAHQAA\nATIWFRQGIyImEDYXIgYUFjMyNjU0JhMHIzchByM3AS1/jY98fY6OfTlGRjk4R0ULfkZGATp+RkYC\nJZmJg5eZAQqZcV+cX19MUF8BQZOTk5MAAgAc/+kDygLlABgAIgAAARUhFSE1DgEjIiY1NDYzMhYX\nNSEVIRUhFQURJiMiBhQWMzICcAFa/hYlQzOCp6eGMEMkAdf+uQEr/j8qTFBiYlBMATq9fTsuJNen\nqdUcJDR9pX2IAWpJi+aLAAAAAwAX/+kDmAIlAB8AKgA0AAAlMw4BIyInBiMiJhA2MzIXNjMyFhcW\nFRQHIRYXFjMyNgEiBhQWMzI2NTQmFzMmJyYjIgYHBgMIiheIW3BDTXZ9jo59eklBc1N8GxUB/pYB\nFB1AJTr+JDlGRjk4R0XT1wUSHzYcMQ0NmFBfS0uZAQqZTExTSj1RDAw+IDAmATpfnF9fTFBfdTQa\nLR0ZGgAAAAMAUAAAAqUDqAAeACkALQAAExEjESEyFxYVFAceBRcUFxUjLgE1NDc1NCYjJzMyNzY1\nNCcmKwEBByM35pYBh1wxN3sbGhsJCQIBIKEOCAEsMay1OBcbGxg3tQEIf0VFASH+3wLZMjlahDAL\nDR4YQD49KhIbGjAzHRMeLSl9Exc3MxcTAUyWlgACAD8AAAFyAvUADgASAAATMxU+ATMyFxUmIyIV\nESMBByM3P4wXTzAJCBkTe4wBHX5GRgIcajc8AY4Ee/7hAvWWlgAAAAMAUP7NAqUC2QAeACkAMwAA\nExEjESEyFxYVFAceBRcUFxUjLgE1NDc1NCYjJzMyNzY1NCcmKwETMxUWBgc1Nicj5pYBh1wxN3sb\nGhsJCQIBIKEOCAEsMay1OBcbGxg3tVh6Akc1RQJDASH+3wLZMjlahDALDR4YQD49KhIbGjAzHRMe\nLSl9Exc3MxcT/WhnOlQCLg1MAAAAAgA//s0BcgIlAA4AGAAAEzMVPgEzMhcVJiMiFREjFzMVFgYH\nNTYnIz+MF08wCQgZE3uMC3oCRzVFAkMCHGo3PAGOBHv+4TxnOlQCLg1MAAADAFAAAAKlA6gAHgAp\nADAAABMRIxEhMhcWFRQHHgUXFBcVIy4BNTQ3NTQmIyczMjc2NTQnJisBNyMnMxc3M+aWAYdcMTd7\nGxobCQkCASChDggBLDGstTgXGxsYN7W1bGdOUlJMASH+3wLZMjlahDALDR4YQD49KhIbGjAzHRMe\nLSl9Exc3MxcTtpZhYQAAAAACADYAAAF0AvUADgAVAAATMxU+ATMyFxUmIyIVESMTIyczFzczP4wX\nTzAJCBkTe4zJa2dOUlJMAhxqNzwBjgR7/uECX5ZhYQACACD/6QJ5A6gAJgAqAAABIyYjIgYVFBYf\nAR4BFRQGIyImJzMeATMyNjU0Ji8BLgE1NDYzMhYDByM3Al+MCJE6RDpQcmVcno2MmweSBFRMRE8+\nS2ZvXpGDipOMfkZGAftyMSkoJxAWFF9WcHx8dTs+NC4sMA4UFVpVa3V5ATyWlgAAAAACAB3/6QII\nAvUAJwArAAABIyYjIgYVFBYfARYVFAcGIyInMxYXFjMyNjU0Ji8BJicmNTQ2MzIWAwcjNwH5hwFk\nJSwUHbFqQDxw+QaJCBMaOTE3FRqnQBged2dtfFR/RUUBbkkbFxARCTMfaVQzMLQlDhMcGRAUCDQV\nGCE3U2FhATGWlgACACD/6QJ5A6gAJgAtAAABIyYjIgYVFBYfAR4BFRQGIyImJzMeATMyNjU0Ji8B\nLgE1NDYzMhYBMxcjJwcjAl+MCJE6RDpQcmVcno2MmweSBFRMRE8+S2ZvXpGDipP+rWtnTlJSTAH7\ncjEpKCcQFhRfVnB8fHU7PjQuLDAOFBVaVWt1eQE8lmRkAAAAAAIAHf/pAggC9QAnAC4AAAEjJiMi\nBhUUFh8BFhUUBwYjIiczFhcWMzI2NTQmLwEmJyY1NDYzMhYBMxcjJwcjAfmHAWQlLBQdsWpAPHD5\nBokIExo5MTcVGqdAGB53Z218/u9rZ05RUk0BbkkbFxARCTMfaVQzMLQlDhMcGRAUCDQVGCE3U2Fh\nATGWZGQAAQAg/yQCeQLlADwAAAUHNjMyFhUUBiMiJzcWMzI2NTQmIyIHNy4BJzMeATMyNjU0Ji8B\nLgE1NDYzMhYXIyYjIgYVFBYfAR4BFRQBVBEXEiQpQj46URNDJRghHBYaFyqAgQiSBFRMRE8+S2Zv\nXpGDipMBjAiROkQ6UHJlXBcnBiUiLTAcNB4YERATDFMNdm47PjQuLDAOFBVaVWt1eXFyMSkoJxAW\nFF9V3wAAAAEAHf8kAggCJQA/AAAFBzYzMhYVFAYjIic3FjMyNjU0JiMiBzcuASczFhcWMzI2NTQm\nLwEmJyY1NDYzMhYXIyYjIgYVFBYfARYVFAYjARsTFRUjKUI+OlETQyUYIRsXGRgra2MEiQgTGjkx\nNxUap0AYHndnbXwChwFkJSwUHbFqemEXKAcmIS0wHDQeGBEQEwxUDVRSJQ4THBkQFAg0FRghN1Nh\nYVZJGxcQEQkzH2lRZgAAAAIAIP/pAnkDqAAmAC0AAAEjJiMiBhUUFh8BHgEVFAYjIiYnMx4BMzI2\nNTQmLwEuATU0NjMyFicjJzMXNzMCX4wIkTpEOlByZVyejYybB5IEVExETz5LZm9ekYOKk+FsZ05S\nUkwB+3IxKSgnEBYUX1ZwfHx1Oz40LiwwDhQVWlVrdXmmlmFhAAACAB3/6QIIAvUAJwAuAAABIyYj\nIgYVFBYfARYVFAcGIyInMxYXFjMyNjU0Ji8BJicmNTQ2MzIWJyMnMxc3MwH5hwFkJSwUHbFqQDxw\n+QaJCBMaOTE3FRqnQBged2dtfKpsZ05SUkwBbkkbFxARCTMfaVQzMLQlDhMcGRAUCDQVGCE3U2Fh\nm5ZhYQAAAAIADv7NAlYC2QAHABEAAAERIxEjNSEVATMVFgYHNTYnIwGBlt0CSP6megJHNUUCQwJc\n/aQCXH19/WhnOlQCLg1MAAAAAgAO/s0BLQKiABQAHgAAARUjERQWMzI3FQYjIjURIzUzNTMVAzMV\nFgYHNTYnIwEtThIcCxUkLYlFRYxgegJHNUUCQwIRXf7aJBcDYgt/AUxdkZH9s2c6VAIuDUwAAAAA\nAgAOAAACVgOoAAcADgAAAREjESM1IRUnIyczFzczAYGW3QJI7GxnTlJSTAJc/aQCXH19tpZhYQAC\nAA7/6QGQAz0AFAAeAAABFSMRFBYzMjcVBiMiNREjNTM1MxUTMxUWBgc1NicjAS1OEhwLFSQtiUVF\njDV6Akc1RQJDAhFd/tokFwNiC38BTF2RkQEsZzpUAi4NTAAAAAABAA4AAAJWAtkADwAAATMVIxEj\nESM1MzUjNSEVIwGBk5OWkpLdAkjVAcZQ/ooBdlCWfX0AAQAO/+kBLQKiABwAABMzFSMVFBYzMjcV\nBiMiPQEjNTM1IzUzNTMVMxUj30dHEhsMFSUsiTs7RUWMTk4BUUOAJBcDYgt/pkNjXZGRXQAAAAAC\nAEz/6QKOA6AADwAkAAABMxEUBwYgJyY1ETMRFCA1AzMGIyIvASYjIgcjPgEzMh8BFjMyAfiWR1L+\n8FJHlgEWGz8HWBcgRxINIQc+AjIqFCNIDhQeAtn+EnhASkpAeAHu/hKCggK1fwwaBi06Qg0ZBgAA\nAAIAOv/pAh0C7QARACcAACEjNQYjIiY1ETMRFDMyNjURMyczBiMiLwEmIyIGByM+ATMyHwEWMzIC\nHYw5aVdejFo0PYx4PwZZFyBHEQ0SEgQ/AzIpFCRHDhQfQFdhWgF4/qVhOjABUtF/DBoGFRg6Qg0Z\nBgAAAgBM/+kCjgOCAA8AEwAAATMRFAcGICcmNREzERQgNRMVITUB+JZHUv7wUkeWARYL/tUC2f4S\neEBKSkB4Ae7+EoKCApdPTwAAAgA6/+kCHQLPABEAFQAAISM1BiMiJjURMxEUMzI2NREzJxUhNQId\njDlpV16MWjQ9jFz+1UBXYVoBeP6lYTowAVKzT08AAAAAAgBM/+kCjgOfAA8AHgAAATMRFAcGICcm\nNREzERQgNQMzFhUUBiMiJiczFjMyNgH4lkdS/vBSR5YBFkI3AUw4PEcBNwpDIiMC2f4SeEBKSkB4\nAe7+EoKCArQFBjhMTENCHwAAAAIAOv/pAh0C7AARACAAACEjNQYjIiY1ETMRFDMyNjURMyczFAYj\nIiY1NDczFjMyNgIdjDlpV16MWjQ9jK83SDw5SwE3CkMiI0BXYVoBeP6lYTowAVLQQU5MOQYEQh8A\nAAMATP/pAo4DtQAPABkAJQAAATMRFAcGICcmNREzERQgNQIyFhUUBiImNTQ3IgYVFBYzMjY1NCYB\n+JZHUv7wUkeWARawTDM1SjVbEhkZEhEYGALZ/hJ4QEpKQHgB7v4SgoICyjQnJTQ1JSYEGBIRGRkR\nEhgAAwA6/+kCHQMCABEAGwAnAAAhIzUGIyImNREzERQzMjY1ETMkMhYVFAYjIiY0NyIGFRQWMzI2\nNTQmAh2MOWlXXoxaND2M/upMMzUlJjRbEhkZEhEYGEBXYVoBeP6lYTowAVLmNCclNDRMBBgSERkZ\nERIYAAADAEz/6QKOA6gADwATABcAAAEzERQHBiAnJjURMxEUIDUDByM3IQcjNwH4lkdS/vBSR5YB\nFkd+RkYBOn5GRgLZ/hJ4QEpKQHgB7v4SgoICvZOTk5MAAAAAAwA6/+kCLwL1ABEAFQAZAAAhIzUG\nIyImNREzERQzMjY1ETMnByM3IQcjNwIdjDlpV16MWjQ9jKp+RkYBOn5GRkBXYVoBeP6lYTowAVLZ\nk5OTkwAAAQBM/xYCjgLZACEAAAUVBiMiJyY1NDY3BiMiJyY1ETMRFCA1ETMRDgEHBhUUMzICVScp\nKCRELzk6M4tSR5YBFpYDK1FBTR2xLwoMFj4kOyQQSkB4Ae7+EoKCAe7+ElBVU0UyMwAAAAABADr/\nFwI0AhwAIgAAISM1BiMiJjURMxEUMzI2NREzEQYVFDMyNxUGIyImNTQ2NzYB0UA5aVdejFo0PYxv\nTBogJCdHTiskDkBXYVoBeP6lYTowAVL95DhJNQUvCTItIT8VCQAAAgANAAADpAOoAAwAEwAAISML\nASMDMxsBMxsBMyUzFyMnByMC2od6d4fOn3FxlHZtn/4BbGdOUlJMAjn9xwLZ/d4CIv3dAiPPlmRk\nAAIABQAAAv4C6QAMABMAACEjCwEjAzMbATMbATMlMxcjJwcjAmWRUVaQmJFWUoxRUpH+U2tnTVJS\nTQF9/oMCHP6GAXr+hgF6zZZkZAACABsAAAKKA6gACAAPAAABESMRAzMbATMlMxcjJwcjAaOW8qeV\ni6j+kWtnTlJSTAEO/vIBDgHL/r4BQs+WZGQAAgAJ/yUCGgL1ABIAGQAAATMDDgEHBiMiJzUWMzI2\nNQMzEwMzFyMnByMBipDeESEdKjsWHBoLJzDJmnc4bGdOUlJMAhz9gTEqDBEEaQY0KgIy/ncCYpZk\nZAAAAAADABsAAAKKA5oACAAMABAAAAERIxEDMxsBMyUVIzUhFSM1AaOW8qeVi6j+pm4BKG4BDv7y\nAQ4By/6+AULBenp6egAAAAIAHgAAAkIDqAAJAA0AAAEVASEVITUBITUlByM3AkL+jAF0/dwBdf6L\nAZt+RkYC2X3+IX19Ad99z5aWAAIAFQAAAdQC9QAJAA0AAAEVASEVITUBIzUlByM3Acv+9wES/kEB\nC/kBXH5GRgIccf7GcXEBOnHZlpYAAAIAHgAAAkIDmgAJAA0AAAEVASEVITUBITUlFSM1AkL+jAF0\n/dwBdf6LAUxuAtl9/iF9fQHffcF6egAAAAIAFQAAAdQC5wAJAA0AAAEVASEVITUBIzUlFSM1Acv+\n9wES/kEBC/kBC24CHHH+xnFxATpxy3p6AAAAAAIAHgAAAkIDqAAJABAAAAEVASEVITUBITUlIycz\nFzczAkL+jAF0/dwBdf6LAUlsZ05SUkwC2X3+IX19Ad99OZZhYQAAAgAVAAAB1AL1AAkAEAAAARUB\nIRUhNQEjNSUjJzMXNzMBy/73ARL+QQEL+QEIbGdOUlJMAhxx/sZxcQE6cUOWYWEAAAAB//IAAAEY\nAtkADwAAMyMRIzUzNTQzMhcVJiMiFcuMTU2IIi8VEiYBtF1BhwNpAyoAAAAAAQAV/yQCFwLoAB8A\nAAEVIwMGBwYjIic3FjMyNjcTIzUzNz4BMzIXByYjIg8BAfSJOxMxLk8tLRgiFxsdCjt7iwoSWU8o\nOBQiFToSBwHgYf6CfDEwFnMVMT4BeGE7a2IRcxBrKQAAAAAFABoAAAK/BC4ABwAKABUAIQAlAAAl\nIQcjATMTIwsCEjIWFRQGIyImNTQ3IgYVFBYzMjY1NCY3ByM3AfX+7zGZAQOm/JpZX183TDM1JSY0\nWxIZGRIRGBgNfkZGk5MC2f0nARABHf7jAqU0JyU0NSUmBBgSERkZERIYqZaWAAAAAAUAHP/pAgwD\nfAAcACkAMgA+AEIAACUVIyY1BiMiJjU0PwE2NzY1NCMiBgcjNjMyFREUJzUGDwEOARUUFjMyNgIy\nFhUUBiImNDciBhUUFjMyNjU0JjcHIzcCDJgQSlpKWp84RRMYUTQqBYcN2t2JEygwLCQpIzU6f0wz\nNUo1WxIZGRIRGBgUfkZGEREUIk1ZSY8bCgsKDhw2ICq7pv7UI6kmCQgJCSIfHiNCAmY0JyU0NEwE\nGBIRGRkREhiqlpYAAAMAAQAAA8YDqAAPABMAFwAAJSMHIwEhFSEVIRUhFSEVIRkBIwMBByM3Aa7f\nNZkBBwKq/pIBU/6tAYL96ENyAb1+RkaYmALZfaV9vX0BFQFH/rkCk5aWAAAEABv/6ANZAvUALAA4\nADwAQAAAJTMOASMiJwYjIiY1ND8BNjc2NTQjIgYHIzYzMhc2MzIWFxYVFAchFBcWMzI2JTUGDwEG\nFRQWMzI2NzMmIhMHIzcCyIoXiFuIQFh1TVufOEUTGFUvKwWDA+F1Oj5dVHscFQH+lhQgPiQ7/qMW\nJTBQKSM2OY3YC8QufkZGmFBfaGlZTJEaCgsKDRs1ISm7MjJTSjpUDAw+HzEmXiYNBgcLPh8jQaV7\nATuWlgAAAAAEAB//2QLzA6gAFwAfACcAKwAANwcnNyY1NDc2MzIXNxcHHgEVFAYHBiMiCQEWMzI2\nNTQFASYjIgYVFAEHIzelUzNWUmdenIlfUzRZIic2MF+aiAE7/skyUVxu/okBOjdVXW4BNn5GRjRb\nLl9uk61sZVRcLWMuhEZQlDNlAgj+qDCLdUvjAVo6i3ZRApWWlgAEAAv/2gJWAvUAEwAbACMAJwAA\nNwcnNyY1NDYzMhc3FwcWFRQGIyITBxYzMjY1NAc3JiMiBhUUEwcjN35IK0syj35rS0QrSC+PfHTn\nySQyOEfzyiYzOEfyfkZGI0koTUhwhpg+RilJSWuFmQFnzCpfSyh0zi9fTC4CGZaWAAAAAAIAIP7N\nAnkC5QAmADAAAAEjJiMiBhUUFh8BHgEVFAYjIiYnMx4BMzI2NTQmLwEuATU0NjMyFgEzFRYGBzU2\nJyMCX4wIkTpEOlByZVyejYybB5IEVExETz5LZm9ekYOKk/68egJHNUUCQwH7cjEpKCcQFhRfVnB8\nfHU7PjQuLDAOFBVaVWt1ef1YZzpUAi4NTAAAAAACAB3+zQIIAiUAJwAxAAABIyYjIgYVFBYfARYV\nFAcGIyInMxYXFjMyNjU0Ji8BJicmNTQ2MzIWATMVFgYHNTYnIwH5hwFkJSwUHbFqQDxw+QaJCBMa\nOTE3FRqnQBged2dtfP7segJHNUUCQwFuSRsXEBEJMx9pVDMwtCUOExwZEBQINBUYITdTYWH+AGc6\nVAIuDUwAAgAO/s0CVgLZAAcAEQAAAREjESM1IRUBMxUWBgc1NicjAYGW3QJI/qZ6Akc1RQJDAlz9\npAJcfX39aGc6VAIuDUwAAAACAA7+zQEtAqIAFAAeAAABFSMRFBYzMjcVBiMiNREjNTM1MxUDMxUW\nBgc1NicjAS1OEhwLFSQtiUVFjGB6Akc1RQJDAhFd/tokFwNiC38BTF2Rkf2zZzpUAi4NTAAAAAAB\nAAgCXwFGAvUABgAAEzMXIycHI3RrZ05SUkwC9ZZkZAAAAAABAAkCXwFHAvUABgAAEyMnMxc3M9tr\nZ05SUkwCX5ZhYQAAAAABABACgAE7As8AAwAAARUhNQE7/tUCz09PAAAAAQAjAl0BKwLsAA4AAAEV\nFAYjIiY9ATMWMzI2NwErTDg5SzgJRCEjBwLsCzhMTDkKQh8jAAEAcAJtAN4C5wADAAATFSM13m4C\n53p6AAIATQJOAQEDAgAIABQAABIyFhUUBiImNDciBhUUFjMyNjU0JoJMMzVKNVsSGRkSERgYAwI0\nJyU0NEwEGBIRGRkREhgAAQAt/xYBDAAAAA8AADsBDgEVFDMyNxUGIyImNDapS0AtTB4bJyhDTUIn\nOCYyBi8KM1hKAAH/9wJtAVkC7QAVAAABMwYjIi8BJiMiBgcjPgEzMh8BFjMyARo/BlkYH0cQDhIS\nBD8DMikUJEcOFCAC7X8MGgYVGDpCDRkGAAL/1AJiAVQC9QADAAcAABMHIzchByM3mH5GRgE6fkZG\nAvWTk5OTAAABAHQCTgDaAxUABQAAExUHIyc12iAoHgMVZGNjZAAAAAMAVQJtAX0DeQADAAcADQAA\nExUjNSEVIz0BFQcjJzW2YQEoYSAoHgLnenp6epJaY2NaAAADABoAAAK/AtkABwAKABAAACUhByMB\nMxMjCwMVByMnNQH1/u8xmQEDpvyaWV9fbSAoHpOTAtn9JwEQAR3+4wHJZGNjZAAAAAABAEAAqQC8\nASQAAwAAEzMVI0B8fAEkewACADQAAAL3AtkACwARAAABFSEVIREhFSEVIRUBFQcjJzUBbAGL/d8C\nD/6HAV390SAoHgE6vX0C2X2lfQGfZGNjZAAAAAIALQAAAxwC2QALABEAAAEhESMRMxEhETMRIwEV\nByMnNQKG/t+WlgEgl5b+DSAoHgFL/rUC2f7vARH9JwLZZGNjZAAAAgAxAAABaQLZAAMACQAAAREj\nESMVByMnNQFpljwgKB4C2f0nAtlkY2NkAAADAAP/6QMSAuUAEAAbACEAAAEyFxYVFAYHBiAnLgE1\nNDc2FyIGFBYzMjY1NCYlFQcjJzUBspxeZjcvXv7KXjE1Zl2cW25uW1pvbf5aICgeAuVlbLJNlTJl\nZTSTUqtuZYCK6IqKcHaMdGRjY2QAAAAAAgBOAAADQQLZAAgADgAAAREjEQMzGwEzIRUHIyc1AlqW\n8qeVi6j9cyAoHgEO/vIBDgHL/r4BQmRjY2QAAgAJAAADJALlACEAJwAAJRUhNTMmJyY1NDYgFhUU\nBwYHMxUhNTY3NjU0JiIGFRQXFgMVByMnNQGF/sekOhxAxgEwxkAcOqT+x0UZNWy0bD4W1yAoHn19\nfSQjTnuVw8OVe04jJH19LCFGdm2Cgm2ARxoCNGRjY2QABP/3AAABHwN5AAMABwALABEAABMRIxE3\nFSM1IRUjPQEVByMnNdGME2EBKGEgKB4CHP3kAhzLenp6epJaY2NaAAIAGgAAAr8C2QAHAAoAACUh\nByMBMxMjCwIB9f7vMZkBA6b8mllfX5OTAtn9JwEQAR3+4wADAFIAAAKaAtkAEAAXAB4AADMRITIX\nFhUUBgcWFRQGBwYjAxUzMjU0IwMVMzI1NCNSAUVuPkIuNnknIT95sqNqaqOzb28C2TU6US9FIkZr\nLFUcNQJcpVNS/t69Xl8AAAABAEoAAAJKAtkABQAAMxEhFSERSgIA/pYC2X39pAAAAAIAAwAAAswC\n2QADAAYAADMBMwElIQMDAQTBAQT9/AE/oALZ/Sd9AcwAAAAAAQBPAAACcALZAAsAABMVIRUhESEV\nIRUhFeUBi/3fAg/+hwFdATq9fQLZfaV9AAAAAQAeAAACQgLZAAkAAAEVASEVITUBITUCQv6MAXT9\n3AF1/osC2X3+IX19Ad99AAAAAQBEAAACkQLZAAsAAAEhESMRMxEhETMRIwH7/t+WlgEgl5YBS/61\nAtn+7wER/ScAAwAo/+kC5gLlAAMAFAAfAAABFSE1EzIXFhUUBgcGICcuATU0NzYXIgYUFjMyNjU0\nJgIN/vWEnF5mNy9e/speMTVmXZxbbm5bWm9tAZdiYgFOZWyyTZUyZWU0k1KrbmWAiuiKinB2jAAB\nAD8AAADVAtkAAwAAExEjEdWWAtn9JwLZAAAAAQBKAAACzQLZAAsAADcVIxEzEQEzCQEjA+CWlgEd\nsf7dAUKz7/T0Atn+wAFA/sb+YQFCAAH/+wAAAqAC2QAGAAAjATMBIwsBBQEDnwEDmbm6Atn9JwIt\n/dMAAAABAEIAAAMIAtkADAAAExEjETMbATMRIxEDI9iW4ISA4paBlgI4/cgC2f28AkT9JwI4/cgA\nAQBEAAAClQLZAAkAACEBESMRMwERMxEB//7blpoBIZYB+P4IAtn+EAHw/ScAAAAAAwAbAAACaALZ\nAAMABwALAAAzNSEVATUhFQE1IRUbAk391gH//eMCQn19ATp9fQEifX0AAAIAKP/pAuYC5QAQABsA\nAAEyFxYVFAYHBiAnLgE1NDc2FyIGFBYzMjY1NCYBhpxeZjcvXv7KXjE1Zl2cW25uW1pvbQLlZWyy\nTZUyZWU0k1KrbmWAiuiKinB2jAAAAQBCAAACjwLZAAcAADMRIREjESERQgJNl/7gAtn9JwJc/aQA\nAgBMAAACeQLZAAoAEgAAExEjESEyFhUUBiMnMzI2NTQrAeKWAUJyeXhku4w8OXWMAQT+/ALZdG5v\nhH02OG0AAAEAGgAAAkMC2QALAAAzNTcnNSEVIRcHIRUa7eoCFv6m5uoBbnf57H197PN9AAAAAAEA\nDgAAAlYC2QAHAAABESMRIzUhFQGBlt0CSAJc/aQCXH19AAEAGwAAAooC2QAIAAABESMRAzMbATMB\no5byp5WLqAEO/vIBDgHL/r4BQgAAAwA8//IC+gLnABgAHgAmAAAFNSYnLgE1NDY3Njc1MxUWFx4B\nFAYHBgcVJxEGFRQWExE+ATU0JyYBXVc7Qk1NQjtXfV08QEdHQDxdfZNMxEVNNyAOWQgfIodSUYci\nHwhZWQghIoOmgyMhCFnOAVcXk0dZAUr+qQ1dR1YuGgAAAAABABYAAAKNAtkACwAAARMjJwcjEwMz\nFzczAaPqsoyLrubesoCGrgF0/oz9/QFvAWrw8AAAAQA2AAAC9gLZAB8AACE1JicuATc1MxUUFhcW\nMxEzETI3PgE9ATMVFgYHBgcVAU2JRyodAZYNFyQ4kz4nEAqWASY3RHWCBUswe4La2nJPGScB2/4l\nMhlMatrajYcuNgWCAAAAAAEAJQAAAvwC5QAjAAAlFSE1MyYnJjU0NjMyFhUUBwYHMxUhNTY3NjU0\nJiMiBhUUFxYBXf7IozgdQMaXmMZAHTij/shFGTVsW1psPhZ9fX0jJE57lcPClntOJCN9fSwhRnZt\ngoJtgEcaAAAAAAP/9wAAAR8DmgADAAcACwAAExEjETcVIzUhFSM11ZYmbgEobgLZ/ScC2cF6enp6\nAAMAGwAAAooDmgAIAAwAEAAAAREjEQMzGwEzJRUjNSEVIzUBo5byp5WLqP6ebgEobgEO/vIBDgHL\n/r4BQsF6enp6AAAAAwAY/+kCgwMVABIAHgAkAAABEyMnDgEjIiY1NDYzMhcWFzczAy4BIyIGFRQW\nMjc2AxUHIyc1AgR/mjIoXz9ee31eTz0cGSmS7Bs9KC04OFgjEyUgKB4BEv7ui1ROonp7pT8eMYX+\n9lVOX0xNYzYfAmZkY2NkAAAAAgAK/+kB4wMVACcALQAAARUGBw4BFRQWMzI2NzMGBwYjIiY1NDcm\nNTQ2MzIWFyMmIyIGFRQXFhMVByMnNQElRhwVGC8nKzIOjBAqRntmeFE/b19oew6MEU4jKDEYJiAo\nHgE3WgEHBSEXIScoLUgrSV1PXSE1R0VRWFVDIh4vDQcB3WRjY2QAAAIAQv8mAiUDFQARABcAABMz\nFTYzMhYVESMRNCMiBhURIwEVByMnNUKMOWlXXoxaND2MAUsgKB4CHE5XYVr9vAInYTow/rwDFWRj\nY2QAAAAAAgBFAAAA0QMVAAMACQAAExEjETcVByMnNdGMeSAoHgIc/eQCHPlkY2NkAAAEADL/6QIV\nA3kAFQAZAB0AIwAAExEUFxYzMjc2NREzERQHBiMiJyY1ETcVIzUhFSM9ARUHIyc1vhkbMjEcGIwr\nOouDPDS/YQEoYSAoHgIc/r5JGh0eG0cBQv64dDJFPDR7AUjLenp6epJaY2NaAAAAAgAW/+gCdwIl\nABIAHgAAARMjJw4BIyImNTQ2MzIXFhc3MwMmIyIGFRQWMzI3NgH5fpkyKF8+W3Z4W048Ghwokuwy\nTCozMykqIxEBEv7ui1RPont8pD8aNYX+9qNfTk1iNhoAAAIAQv8mAj4C5AAVAC0AABcRNDY3NjMy\nFhUUBxYXFhUUBiMiJxUZARYzMjY1NCcmDwEjNTY3NjU0JiMiBwZCERc+hmR9WzsaNYBhUzwwOjVF\nQyggDwUyFi4yKTgZD9oCuUhOHlFpVF06FBo1XmKENPcCx/6GJE88WSEVAgFSAwwZQiw2LRsAAAAB\nAA7/JgIeAhwACAAAFzUDMxsBMwMV1MaWcnKWxtrkAhL+eQGH/e7kAAAAAAIAJP/pAjoC7QATAB4A\nABMhFSMXHgEVFAYjIiY1NDc+ATcnFyIGFBYzMjY1NCZrAY/Wkkg8jn18j1MdPjSbxDlGRjk4R0UC\n7W9vN3hZhZmYhI1NGhcEeNhfnF9fTFBfAAEAEf/pAe8CJQAnAAABFQYHDgEVFBYzMjY3MwYHBiMi\nJjU0NyY1NDYzMhYXIyYjIgYVFBcWATFJHBYZMSksMw2MECpFf2Z6VkRyYGh8DowRTyUqMhoBN1oB\nBwUhFyEnJy5IK0ldTl4hNUhEUVhVQyIeLw0HAAAAAAEAGP8mAdoC2QAkAAATNSEVDgEHBhUUFxYf\nAR4BFRQGByM2NTQmLwEmJy4BNTQ3PgE3RgF9SFIrWCoYSCZJOxMedjUfMyVPLyswVyJAOQJocXEj\nQjl1bUwZDgcEBzY9LU5Pdi4cFAQDBxcWZEJ/ejA9JwAAAQBC/yYCJQIlABEAABMzFTYzMhYVESMR\nNCMiBhURI0KMOWlXXoxaND2MAhxOV2Fa/bwCJ2E6MP68AAAAAwAR/+kCDALiAA4AFwAgAAABMhcW\nFRQGIyInJjU0NzYTMyYnJiMiBwYXIxQXFjMyNzYBEIVDNIJ9kj8rREQE4wEKFVNHGwvg4wgTWEMc\nEQLidlyyuL2BW6rBWlj+wEEuYE8luFIqb0wvAAAAAQBFAAAA0QIcAAMAABMRIxHRjAIc/eQCHAAA\nAAEAPAAAAiUCHAALAAATNzMHEyMnBxUjETPIsZ+4xaKBOoyMAUrSzP6w8D+xAhwAAAEAEAAAAiEC\n2QAHAAAzEyczASMLARC/XY0BIplzdQHr7v0nAV/+oQABAEH/JgIkAhwAEwAAEzMRFDMyNjURMxEj\nNQ4BIyInESNBjGUvN4yMGjUnPCCFAhz+r2s5MQFS/eREMCY//vkAAQARAAACGwIcAAYAACEjAzMb\nATMBYZO9lHVtlAIc/nUBiwAAAQAO/yYB0wLZADYAAAUjPgE1NCcmLwEmJy4BNTQ3NjcmNTQ3IzUh\nFSMiBwYVFBYXFjsBFSMiBw4BFRQXFh8BFhcWFRQBoXUhEhAOMS5eKyMoPB49ZjVSAY5ZRCEuHhck\nOj5AUCkeJCIUQUVDGSHaUjcWHgsKBQQKHxlVMVkxGhQlWjwscXEQFzEZKgoPcQ8LNiE0GA8ICAgY\nHjpFAAAAAAIAJ//pAj0CJQAKABUAAAEyFhUUBiMiJhA2FyIGFBYzMjY1NCYBMX+Nj3x9jo59OUZG\nOThHRQIlmYmDl5kBCplxX5xfX0xQXwAAAAABAEYAAAK4AhwACwAAARUjESMRIxEjESM1ArhJjMiM\nSQIccP5UAaz+VAGscAAAAAACAEH/JgJFAiUAEAAcAAAXETQ2NzYzMhYVFAYjIiYnERMiBhUUFjMy\nNjU0JkEbIkWAeoh/ZjRFGnk6Pz84Nz492gHPUWQoU5qJfZwpL/7lAo5aU1JbWU9UXgAAAAEACP8m\nAgACJQAlAAABIy4BIyIGFRQXFh8BFhcWFRQGByM2NTQmLwEuATU0Njc2MzIXFgIAhgU3LzdEMCJI\nOFAXIREddS8aI1htcDIrRGl+QygBTDI2UUJUKx4ZExwWITAgQk1rJRUXChgdiWdAdiU5VDEAAgBF\n/+kCfAIlABIAHQAAARUjFhUUBwYjIiY1NDc+ATMyFwciBhQWMzI2NTQmAnx4VUZHfXyORiJlNCI+\nVjlGRjk4R0UCHHBMa21QT5mFgkwlKwloX5xfX0xQXwABAAsAAAG0AhwABwAAMxEjNSEVIxGajwGp\njgGscHD+VAAAAAABADL/6QIVAhwAFQAAExEUFxYzMjc2NREzERQHBiMiJyY1Eb4ZGzIxHBiMKzqL\ngzw0Ahz+vkkaHR4bRwFC/rh0MkU8NHsBSAACAB//JgKsAiUAGgAjAAAlETYzMhYVFAcGBxUjNSYn\nJjU0NjcVBhUUFxYTETY3NjU0JyYBJCEfn6lyOVqDWzdzZ19ELR67OB4tLR5XAcoEk4ukRyIHzc0H\nIkelaIsYVzV1WzYjAV7+mwUjM1ZYMyQAAQAL/yYCNgIcAAsAAAE3MwMTIwsBIxMDMwEhcZO9zpp9\nf5XNvpcBJ/X+lf51ARH+7wGHAW8AAAABADj/JgK6AhwAGwAABTUmJy4BNREzEQYWFxEzET4BJxEz\nERQGBwYHFQE2iUccEowBNT6FPTgCjBchSH/azAFVJUVGAST+41VLAgG//kEBTlMBHf7cSUwmSgHM\nAAEASP/pAwYCHAAmAAABMxYVFAcGIyInBiMiJyY1NDczBhUUFjMyNzY9ATMVFBcWMzI2NTQCBpho\nPTlUYjMzYlQ4PmiYdComJRINfhETICYqAhyCqH5JQmVlQUiBp4KGokdRJhtNqqpTHR5RR6IAAAAD\n//cAAAEfAucAAwAHAAsAABMRIxE3FSM1IRUjNdGMIG4BKG4CHP3kAhzLenp6egADADL/6QIVAucA\nFQAZAB0AABMRFBcWMzI3NjURMxEUBwYjIicmNRE3FSM1IRUjNb4ZGzIxHBiMKzqLgzw0zG4BKG4C\nHP6+SRodHhtHAUL+uHQyRTw0ewFIy3p6enoAAAADACf/6QI9AxUACgAVABsAAAEyFhUUBiMiJhA2\nFyIGFBYzMjY1NCYDFQcjJzUBMX+Nj3x9jo59OUZGOThHRQcgKB4CJZmJg5eZAQqZcV+cX19MUF8B\nYWRjY2QAAAIAMv/pAhUDFQAVABsAABMRFBcWMzI3NjURMxEUBwYjIicmNRElFQcjJzW+GRsyMRwY\njCs6i4M8NAElICgeAhz+vkkaHR4bRwFC/rh0MkU8NHsBSPlkY2NkAAAAAgBI/+kDBgMVACYALAAA\nATMWFRQHBiMiJwYjIicmNTQ3MwYVFBYzMjc2PQEzFRQXFjMyNjU0AxUHIyc1AgaYaD05VGIzM2JU\nOD5omHQqJiUSDX4REyAmKqAgKB4CHIKofklCZWVBSIGngoaiR1EmG02qqlMdHlFHogF/ZGNjZAAC\nAAf/6QI1AuIAJQAwAAATMxYXHgEzMjc2PQEmJyY1NDYzMhcWFzY3FQYHBgcOASMiJyYnIyU0Jy4B\nIyIGFRQWB6IECQsyI04XCoxLbnZci0YgCRwNEBkBJxxwSXw7HAsqAX4WDTciISxqASxhIiYpaDBN\nEAknPG9QaIc+bQMCXwQBk1Q9RGEsWd1EOyInLCA1QgAAAwAw/yYCvQKXABUAHQAlAAAFNSYnJjU0\nNzY3NTMVFhcWFRQHBgcVGQE2NzY0JyYDEQYHBhQXFgE1WjlyaTxgg2A8aXI5WjkdLS0dvDkdLS0d\n2s0HIkelmEoqB3x8BypKmKVHIgfNApL+nwchM6wyIv6lAWEGIjKsMyEAAAIATP/1AukCHAAVAC4A\nABMjNSEyFxYVFAYjIicGIyInJjU0NzY3Iw4BFRQWMzI3Nj0BMxUUFxYzMjY1NCcmkkYBIZ5bg3VW\nRzc2SEQ0VB0N1R0yLCUgGhIPjBURFh4mYjUBs2k4UqZpjjg4LkeHVjwZFyVbQ0BJHBo+bW1HGRVJ\nOn0yGwAAAAACAE8AAAJwA6gACwAPAAATFSEVIREhFSEVIRUBMxcj5QGL/d8CD/6HAV3+hX5GRgE6\nvX0C2X2lfQJulgADAEoAAAJrA5oACwAPABMAABMVIRUhESEVIRUhFQEVIzUhFSM14AGL/d8CD/6H\nAV3+924BKG4BOr19Atl9pX0CYHp6enoAAAABADL//QMWAtkAHgAAMxEjNSEVIxU2MzIXFh0BDgEn\nIzUzFjY3NTQmIyIHEf3LAiPCVXRlMSQCXD2ARxshAjEraCkCXH19tUI7LTyvQFkDfQEdGnEgJUX+\n3AAAAAIAdwAAAgYDlQAFAAkAADMRIRUjEQM3Mwd3AY/5IEOFWALZff2kAxt6egAAAQAe/+kCtALl\nAB4AAAEhHgEzMjcXDgEjIicmNTQ2NzYzMhcHLgEjIgcGByEB5P7SC19OiDKMJqt5o1tOMi1alNRf\ngh5TPVwxFw4BKAE6ZWyiLXd+fGqYUZM0Zr1AQTxKJT8AAAEAIP/pAnkC5QAlAAABIyYjIgYVFBYf\nAR4BFRQGIyImJzMWMzI2NTQmLwEuATU0NjMyFgJfjAiRO0M5UXJlXJ2OjJsHkgicRE8+TGVvXpCD\ni5MB+3IwKignEBYUX1VwfXx1eTQuLDAOFBVaVWp2eQABAEAAAADWAtkAAwAAExEjEdaWAtn9JwLZ\nAAAAA//2AAABHgOaAAMABwALAAATESMRNxUjNSEVIzXUliZuAShuAtn9JwLZwXp6enoAAQAb/+kB\n6QLZABEAAAEzERQGIyInJj0BMxUUFjMyNQFTlnpxZz89liYqUgLZ/elocTk3aUxMLypZAAAAAgAQ\n//8ECwLZABQAHAAAMzUzMjcRIREzMhYUBiMhESMRFgYnJTMyNjQmKwEQNSMBAhOgaIeHaP7K5wJe\nPwIYoCkwMCmgfSMCOf7rgMSAAlz+OTtbAX04XDYAAAACADQAAAQQAtkAEgAaAAATESMRMxEhETMR\nMzIWFRQGIyERFzMyNjQmKwHKlpYBIZagaIeHaP7KlqApMDApoAFL/rUC2f7vARH+639jYoABS844\nXDYAAAAAAQA/AAADGwLZABsAADMRIzUhFSMVPgEzMhYXFhURIxE0JyYjIgcGBxH3uAITxS9PRj5M\nGiaWEhRFUiILDgJcfX21JxsbICw9/rsBJBkXFSILGP7cAAAAAAIAIQAAAjIDlQAMABAAADMRMxEz\nEzMDEyMDIxETNzMHIZZXYJhzn5+GVj5DhVkC2f7vARH+r/54AUv+tQMbenoAAAAAAgBBAAACjgOo\nAAsADwAAMxEzEQE1MxEjEQEVEzMXI0GWASGWlv7fBH5GRgLZ/j0BaFv9JwG//ppZA6iWAAAAAAIA\nBgAAAnEDpQAOABwAADM1Mz4BPwEDMxsBMwEGBxMzBgcGIyInJiczFjMyM4ESDAoT6Zubmpv+5C5l\nwlgBFCxlbikOAVkJREN9AwwbKAIK/o8Bcf2EWwIDpTUhR1IdLkoAAAABAE3/YAKDAtkACwAAMxEz\nESERMxEjFSM1TZYBCpbQlgLZ/aQCXP0noKAAAAIAFwAAArwC2QAHAAoAACUhByMBMxMjCwIB8v7v\nMZkBA6/zmllfX5OTAtn9JwEQAR3+4wACAEoAAAKdAtkADAAUAAAzESEVIRUzMhYVFAYjJzMyNjQm\nKwFKAhH+hclmjotpydcjLS4i1wLZfaWAXF59fTRSNwAAAAMATwAAApcC2QAQABcAHgAAMxEhMhcW\nFRQGBxYVFAYHBiMDFTMyNTQjAxUzMjU0I08BSW08QS42eSchP3izo2pqo7NvbwLZNTlSL0UiRmss\nVRw1AlylU1L+3r1eXwAAAAEAdwAAAgYC2QAFAAAzESEVIxF3AY/5Atl9/aQAAAAAAv/z/3gCxgLZ\nAA4AFQAABxEzPgEnESERMxEjNSEVAREjERQGBw0ZQVgBAeBClv5ZAWW0LSaIAQUBWkABwf2k/vuI\niAEFAd/+titQGgAAAAABAEkAAAJqAtkACwAAExUhFSERIRUhFSEV3wGL/d8CD/6HAV0BOr19Atl9\npX0AAAAB//QAAAOLAtkAFQAAIREjAyMTAzMTMxEzETMTMwMTIwMjEQF5YYaennOYW2eWXluXc5+f\nhlcBS/61AYgBUf7vARH+7wER/q/+eAFL/rUAAAEAO//pAjsC5QAvAAA3MxQXFjMyNjU0JyYrATUz\nMjY1NCYjIgYdASM1NDc+ATMyFhUUBx4BFRQGIyInJjU7lhcbOi83Jx8jOC0sNzQqKzCWNyBmOWiH\nYDc8k21+SzfySB4jOTE5GhR9MigmLjAqGRllNB4jcFVmNRNcQWSIUTthAAAAAAEAQQAAAo4C2QAL\nAAAzETMRATUzESMRARVBlgEhlpb+3wLZ/j0BaFv9JwG//ppZAAIAQQAAAo4DpQALABkAADMRMxEB\nNTMRIxEBFRMzBgcGIyInJiczFjMyQZYBIZaW/t/eWQMTLGRtKw0BWAtDRALZ/j0BaFv9JwG//ppZ\nA6U4HkdSGzBKAAABADoAAAJOAtkADAAAMxEzETMTMwMTIwMjETqWVmWYc56ehloC2f7vARH+r/54\nAUv+tQAAAQAF//8CcQLZAA4AADM1MzI3ESERIxEjERYGJwU1IwECE5bnAl4/fSMCOf0nAlz+OTtb\nAQAAAAABAD4AAAMEAtkADAAAExEjETMbATMRIxEDI9SW4ISA4paBlgI4/cgC2f28AkT9JwI4/cgA\nAQBDAAACkALZAAsAABMRIxEzESERMxEjEdmWlgEhlpYBS/61Atn+7wER/ScBSwAAAgAm/+kC5ALl\nABAAGwAAATIXFhUUBgcGICcuATU0NzYXIgYUFjMyNjU0JgGEnF5mNy9e/speMTVmXZxbbm5bWm9t\nAuVlbLJNlTJlZTSTUqtuZYCK6IqKcHaMAAABAEgAAAKIAtkABwAAMxEhESMRIRFIAkCW/uwC2f0n\nAl79ogACAEUAAAJyAtkACgASAAATESMRITIWFRQGIyczMjY1NCsB25YBQnJ5eGS7jDw5dYwBBP78\nAtl0bm+EfTY4bQAAAQAq/+kCqQLlABkAAAEjJiMiBhUUFjMyNjczDgEjIiY1NDYzMhcWAqmQHX9Z\nZGFXRlMIkAeniJixs5upVyoB4oOIeXeGTEZ9k82wss1zOAABAA0AAAJVAtkABwAAAREjESM1IRUB\ngJbdAkgCXP2kAlx9fQABAAYAAAJxAtkADgAAMzUzPgE/AQMzGwEzAQYHM4ESDAoT6Zubmpv+5C5l\nfQMMGygCCv6PAXH9hFsCAAADACMAAAMsAtkAFQAeACcAACE1IyImNTQ2OwE1MxUzMhYVFAYrARUD\nIyIGFRQWOwETETMyNjU0JiMBXzZxlZVxNpYxcJaVcTGZGT1NTT0ZmxQ9Tk0+ZZdycJZlZZZwcpdl\nAfdMPT5OARX+604+PUwAAQAWAAAChALZAAsAAAETIycHIxMDMxc3MwGf5a+Ki6ri4rZ/iq8Bcv6O\n/f0BcgFn8PAAAAEARP9hArwC2QALAAAzETMRIREzETMRIzVElgEKlkKWAtn9pAJc/aT+5J8AAQAh\nAAACgwLZABIAACE1DgEjIiY1ETMRFBYzMjcRMxEB7UZCLoOTlkU+SmmW+RMKdGgBIf7fLDAdAWD9\nJwAAAAEAMQAAA7sC2QALAAAzETMRMxEzETMRMxExluSW5JYC2f2kAlz9pAJc/ScAAQA0/2ED8ALZ\nAA8AADMRMxEzETMRMxEzETMRIzU0ltuW3ZZClgLZ/aQCXP2kAlz9pP7knwAAAAACABAAAAMrAtkA\nCwATAAAhESM1IREzMhYUBiMnMzI2NCYrAQEG9gGMoGiHh2igoCkwMCmgAlx9/uuAxIB9OFw2AAAA\nAAMAawAAA2gC2QAJABEAFQAAMxEzETMyFhQGIyczMjY0JisBAREzEWuWoGiHh2igoCkwMCmgAdGW\nAtn+64DEgH04XDb+uQLZ/ScAAAACAGQAAAKJAtkACQARAAAzETMRMzIWFAYjJzMyNjQmKwFklqBo\nh4dooKApMDApoALZ/uuAxIB9OFw2AAABABP/6QKpAuUAHQAAASE1ISYnJiMiBgcnNjMyFxYVFAcG\nIyImJzcWMzI2AhH+0gEoDhcxXD1THoJf1KRZUF1alXmuI4wyiE5fATp9PyVKPEFAvXprmahtaYF0\nLaJsAAACADX/6QPdAuUAFAAgAAATMz4BMzIXFhAHBiMiJyYnIxEjETMFIgYVFBYzMjY1NCbLcx2t\ngZdaY2Nal8dcKQhqlpYBvVZoaFdVaWcByIiVZW7+qm5lrE1p/rUC2XSLc3SKiXF3iwAAAAIAMv/+\nAoMC2QAaACMAACERIw4BHQEGJyM+ATc1JjY3JicmNTQ3NjMhEQM1IyIGFRQWMwHtxB0XBTSKFhQD\nAS8qLBUtSz1dAVWWrio2NSsBEwEYG4tWAggqLXkzOwITGzlPY0I2/ScBkMw6LS43AAACABv/6QIM\nAiUAHAApAAAlFSMmNQYjIiY1ND8BNjc2NTQjIgYHIzYzMhURFCc1Bg8BDgEVFBYzMjYCDJkQSlpK\nWp84RRMYUTQqBYcN2uCMEygwLCQpIzU6EREUIk1ZSY8bCgsKDhw2ICq7pv7UJasmCQgJCSIfHiNC\nAAAAAgAq/+kCQANPABwAJwAAATMOAQcOAQc2MzIXFhUUBiMiJicmNTQ3PgE3PgEDIgYUFjMyNjU0\nJgF4kgRHZVpNBk1QcUg9jn1Tfh4cTh9QSCggQjlGRjk4R0UDT3ZgFRM0MDRWSnqFmUtDPoTDaCsz\nFwsz/p1fnF9fTFBfAAMAVwAAAiwCHAAMABQAHAAAMxEhMhYVFAcWFRQGIyczMjY0JisBNTMyNjQm\nKwFXATc+VVhjWUWrhBghIRiEhBQaGhSEAhxQOlQlIWFCVXEjMiNfHCwbAAABAEkAAAGTAhwABQAA\nMxEhFSMRSQFKvgIccf5VAAAAAAIAB/+QAmgCHAAOABQAABc1MzI2JxEhETMVIzUhFSURIxUGBwc4\nJCsBAakyjP63AReRAT1w4Uc7ASn+VeFwcOEBOqVkMQAAAAIAHf/pAhMCJQAXABwAACUhFhcWMzI3\nMw4BIyImNTQ2MzIWFxYVFCUzJiMiAhL+lwMRHz1PGpAXilt0hYZzUnsbFf6Y1wtiXeJCGy5BUF+V\ngoidU0o6Ug9SeAAAAf/4AAACxQIcABUAACEjNSMHIxMnMxczNTMVMzczBxMjJyMBqYw8WZBwWY1F\nPIwzRY9bcI9aM+/vAS3vvLy8vO/+0+8AAAAAAQAi/+kBxwIlACwAADczFhcWMzI2NTQnJisBNTMy\nNTQmIyIGHQEjNTQ2MzIWFRQHHgEVFAYjIicuASKMARAVJR8mGBExGxtPIh4dI4ZxWFtuTS0odlps\nPBcTsy0UGCYdIhMOXzsbHx4ZDCc+T1FCVCgZPStKYkUaOQAAAAEARgAAAiECHAALAAAzETMRNzUz\nESMRBxVGjMOMjMMCHP67/kf95AFF/kcAAgBGAAACIQLqAAsAHQAAMxEzETc1MxEjEQcVEzMGBw4B\nIyImJyY1Mx4BMzI2RozDjIzDqkQBDA9HKSpHDwxDAyElJCECHP67/kf95AFF/kcC6iUZHiYmHhok\nHhkZAAAAAQAjAAAB2QIcAAwAABMzFTM3MwcTIycjFSMjjEFGjlpvj1pBjAIcvLzv/tPv7wAAAQAl\nAAACJwIcAA8AADM1Mz4BJxEhESMRIxEWBgclMREYAQGpjJEBTzdxAhsTAXv95AGr/to2TgEAAAAA\nAQBRAAACkwIcAAwAACEjEQMjAxEjETMbATMCk4Zmb2SDvGJnvQGc/mQBnP5kAhz+awGVAAEAQAAA\nAhsCHAALAAAzETMVMzUzESM1IxVAjMOMjMMCHMjI/eTj4wACACf/6QI9AiUACgAVAAABMhYVFAYj\nIiYQNhciBhQWMzI2NTQmATF/jY98fY6OfTlGRjk4R0UCJZmJg5eZAQqZcV+cX19MUF8AAAAAAQBJ\nAAACEwIcAAcAADMRIREjESMRSQHKjLICHP3kAav+VQAAAgA8/yYCQAIlAA4AGQAAExU2MzIWFRQG\nIyInESMRBCIGFRQWMzI2NTTIMmhifIFiZDGMATdqQUE1NEICHFBZoH58olf+5gL2bF1NS11cSk4A\nAAAAAQAk/+kCDAIlABkAAAEjLgEjIgcGFBYzMjY3Mw4BIyImNTQ2MzIWAgyGDC0rPhkbPDUqLg2G\nCn9ieIWGeWZ7AVI1LS4zoFksNWFxlIaKmHAAAAAAAQAQAAAB2gIcAAcAADMRIzUhFSMRr58Byp8B\nq3Fx/lUAAAAAAQAS/yYCIwIcAA4AAAEzAw4BBwYjNRY2NwMzEwGTkN4SJyggZUQxB8madwIc/YE0\nLQ4IcQIgNQIy/ncAAwAv/yYDOwLgABoAJAAvAAAhIyImNTQ2OwE1MxUzMhceARUUBgcOASsBFSMZ\nAQ4BBwYVFBcWExE+ATc2NTQnLgEBcBV9r6yAFYwVfVMpMTYuJm8xFYwwNhk2OSreLTMYOzYZNKBz\ncZjExEokazY5biQdJdoBSwE6BBIVLkJGMSMBNf7GAhASLUpGMBURAAAAAQATAAACGgIcAAsAAAET\nIycHIxMDMxc3MwFmtKhbXKi0sKhYV6gBEP7wqKgBEAEMo6MAAAEAR/9gAkQCHAALAAAzETMRMxEz\nETMRIzVHjK2MOIwCHP5VAav+Vf7voAAAAQAoAAACDgIcABIAACE1BiMiJyY9ATMVFBYzMjc1MxEB\nf1lNYS8hjC0nNkSMtBoyJ0zd3RgcGPn95AAAAQA8AAADBgIcAAsAADMRMxEzETMRMxEzETyMk4yT\njAIc/lUBq/5VAav95AABACv/YQNEAhwADwAAMxEzETMRMxEzETMRMxEjNSuMn4yejDiMAhz+VQGr\n/lUBq/5V/vCfAAAAAAIAGQAAAp8CHAAMABQAADMRIzUhFTMyFhUUBiMnMzI2NCYrAcyzAT+PUmZo\nUI+IFh0dFogBq3HIXUpLYnEgMiAAAAAAAwBlAAAC8AIcAAoAEgAWAAAzETMVMzIWFRQGIyczMjY0\nJisBBREzEWWMj1JmaFCPiBYdHRaIAXOMAhzIXUpLYnEgMiDjAhz95AAAAAIAXAAAAi8CHAAKABIA\nADMRMxUzMhYVFAYjJzMyNjQmKwFcjI9SZmhQj4gWHR0WiAIcyF1KS2JxIDIgAAEACf/pAhICJQAZ\nAAA3NTMuASMiByc+ATMyFhAGIyImJzcWMzI2N63TCEMuRyV8IHlQfI6OfWKCGoceWjJBCeJfND9L\nPD1Dmf72mV5ZJGpHQQAAAAIAMf/pAzUCJQATAB8AABMzNjc2MzIWFRQGIyImJyMVIxEzBSIGFRQW\nMzI2NTQmvWkQJ0iFfY6PfHSKC2SMjAFtOUZGOThHRQFUSy9XmYaFmIF54wIcaGBNTl9fTFBfAAIA\nMQAAAgECHAAWAB4AACE1IyIGHQEUByM+ATc+ATcmNTQ2MyERAzUjIgYUFjMBdVwlHhSREQ0CAhMf\nVFtKASuMjRYbHBXJHSUiPSgZNTcyKBQkZkdY/eQBOnEgMh8AAAMAFv/pAg0C9QAXABwAIAAAJSEW\nFxYzMjczDgEjIiY1NDYzMhYXFhUUJTMmIyIDMxcjAgz+lgMRHz1QG4oXiFtzhIZ0UnsbFf6X1wti\nXSx/RUXiRBsvRFBflYKInVNKPVEMUXsBO5YABAAd/+kCEwLnABcAHAAgACQAACUhFhcWMzI3Mw4B\nIyImNTQ2MzIWFxYVFCUzJiMiExUjNSEVIzUCEv6XAxEePk8akBeKW3SFhnNSexsV/pjXC2JdO24B\nKG7iQxwvRFBflYKInVNKOlIPUnsBLXp6enoAAAABACT/dAIqAuAAIQAAMxEjNTM1MxUzFSMVNjMy\nFh0BFgYHIzUzPgEnNTQjIgYHFY5qaoyGhkI6QVECZEp8XxwiATQWIhYCG11oaF3VL1REtUppAV0B\nJRzKMhYc3QAAAAACAEkAAAGTAvQABQAJAAAzESEVIxEDNzMHSQFKvjdZhoYCHHH+VQJWnp4AAAEA\nFv/pAh8CJQAaAAAlIx4BMzI3Fw4BIyImNTQ2MzIWFwcmIyIGBzMBe9cJQTJaHYgbgmF9jo58UHkg\nfCVHLkMI0+JBR2okWV6YhoWZQz08Sz80AAEAHf/pAggCJQAlAAABIzQjIgYVFBYfARYVFAcGIyIn\nMx4BMzI1NCYvASYnJjU0NjMyFgH5iGQlLBQdsWo4Pnr1BokIMDVpFRqnQBged2ZtfQFuSRsXEBEJ\nMyBnTzI3tCcfNRAUCDQVGCE3U2FhAAACAEUAAADRAtkAAwAHAAATESMRNxUjNdGMjIwCHP3kAhy9\nfX0AAAAAA//4AAABIALnAAMABwALAAATESMRNxUjNSEVIzXQjCJuAShuAhz95AIcy3p6enoAAgAF\n/yYA0wLZAA0AEQAAExEUBw4BKwE1MzI2NRE3FSM10zQVJlAPDx8UjIwCHP2DVRgJA3ERGQJbvX19\nAAAAAAIAIQAAA5sCHAAWAB4AADM1Mz4BJxEhFTMyFhUUBiMhESMRFgYHJTMyNjQmKwEhMREYAQHD\nplJmaFD+zqsBTzcBvKAWHBwWoHECGxMBe8hdSktiAav+2jZOAXEgMiAAAAIARgAAA2gCHAASABoA\nADMRMxUzNTMVMzIWFRQGIyE1IxUlMzI2NCYrAUaMw4yPUmZoUP7lwwFPiBYdHRaIAhzIyMhdSkti\n4+NxIDIgAAAAAf/pAAACLALgABsAADMRIzUzNTMVMxUjFT4BMzIWFREjETQmIyIGBxFQZ2eMiYk0\nRytKYIwvKCUzFQIeXWVlXXMnHV9J/rkBJycvKS3+2QACACMAAAHXAvQAAwAQAAATNzMPATMVMzcz\nBxMjJyMVI75cg4P3jD5Gj1twkFo+jAJWnp46vLzv/tPv7wACAEYAAAIhAvUACwAPAAAzETMRNzUz\nESMRBxUDMxcjRozDjIzDMX5GRgIc/rv+R/3kAUX+RwL1lgAAAAACABL/JgIjAuoADgAeAAABMwMO\nAQcGIzUWNjcDMxsBMwYHDgEiJicmJzMeATI2AZOQ3hInKCBlRDEHyZp3SUQBDA5IUkgODAFEAyFI\nIQIc/YE0LQ4IcQIgNQIy/ncCVygWHiYmHhYoHhkZAAABAEz/YAIRAhwACwAAMxEzETMRMxEjFSM1\nTIytjJ2MAhz+VQGr/eSgoAAAAAIAGQAAAxYC2QASABoAABMjNTM1MxUzFSMVMzIWFRQGIyE3MzI2\nNCYrAZ+GhpbU1O1lj4xo/n2W+iQtLiP6Af6FVlaFR4FbXn19NFI3AAAAAgA5AAACiwKjABMAGgAA\nEyM1MzUzFTMVIxUzMhcWFRQGIyE3MzI1NCsBj1ZXf2dnvkYsTGlV/sKAuz4+uwGzaYeHaWQcM1tK\nW284OQAAAAADACj/9QLmAuQADgAdACwAAAEyFhUUBgcGICcmNTQ3NgEGIyImJyYjIgceATMyNiU2\nMzIXHgEzMjcuASMiBgGMmcE1MV3+yF1mZl8BWUooHiIyKy0lJQ1nU0li/pQyKjw0KRoVMzILaVRL\nYwLk0qZQkDRjY2ynqmxj/jQWDiAcCmJrVe4OIxwLE2VwWAAAAAADACT/9QI6AicACwAZACgAAAEy\nFhUUBiMiJjU0NhU2MzIXFjMyNy4BIyIGFwYjIicmIyIHFhcWMzI2ATN5jo59fI+POBYeJx4SDSsG\nRDUyQe44ExYfIxoVJgkWIjwvQQInl4KDlpWDhZX1Fh8YEkRQRpUWGhwPOB8wPwAAAQBMAAAC8QLi\nABAAAAEVJicmIyIHAyMDMxsBNjMyAvEIGBIQGQbPf/aWo4IlcCcCzosFDQkP/bEC2f3bAbF9AAEA\nPQAAAk8CIgAQAAABFSYjIgYHAyMDMxM3PgEzMgJPKQoODgh4e8iNeDsQQjgeAhdzDxAZ/nYCHP6k\n5UE8AAABAE8AAAI3A1MACAAAATczBxUjESMRAW9DhVn5lgLZenp9/aQC2QAAAQBYAAACKAK6AAgA\nAAE3MwcVIxEjEQFJWYaGvowCHJ6ecf5VAhwAAAEAGQAAAdoC2QANAAATMxUjESMRIzUzESEVI+G9\nvZYyMgGP+QG3ff7GATp9ASJ9AAEAFwAAAYoCHAANAAATMxUjFSM1IzUzNSEVI8ygoIwpKQFKvgFB\nX+LiX9txAAAAAAEAQv9hBB8C2QAZAAAhESMDIxMDMxMzETMRMxMzAxMzESM1IwMjEQHOZ4eennOY\nW26Wa1uXcmxkljqGZQFL/rUBiAFR/u8BEf7vARH+r/71/uSfAUv+tQABADT/YANIAhwAGQAAISM1\nIwcjEyczFzM1MxUzNzMHFzMRIzUjJyMB74xGWZBwWY1FRoxBRo5aRVmMMlpB7+8BLe+8vLy877z+\n76DvAAAAAAEAQv9gAn8C2QAQAAAhIwMjESMRMxEzEzMDEzMRIwHpNoZVlpZRZZhzbGCWAUv+tQLZ\n/u8BEf6v/vX+4wAAAAABAED/YAInAhwAEAAAISMnIxUjETMVMzczBxczESMBm0NaMoyMMkaPW0Zp\njO/vAhy8vO+8/u8AAAEAQwAAAn4C2QAUAAATNTMVMxMzAxMjAyMVIzUjESMRMxH3TxpbmHOenoYU\nTx6WlgHIjIwBEf6v/ngBS4yM/rUC2f7vAAAAAAEAQAAAAg4CHAAUAAATNTMVMzczBxMjJyMVIzUj\nFSMRMxXsHhtGjlpvj1obHiCMjAFgaWm87/7T72Nj7wIcvAABAEP/YALSAtkADwAAExEjETMRIREz\nETMRIzUjEdmWlgEhlkKWQgFL/rUC2f7vARH9pP7joAFLAAEAQP9fAlMCHAAPAAAzETMVMzUzETMR\nIzUjNSMVQIzDjDiMOMMCHMjI/lX+7qHj4wAAAAABABsAAAKKAtkACAAAAREjEQMzGwEzAaOW8qeV\ni6gBDv7yAQ4By/6+AUIAAAEAC/8mAhwCHAAIAAABMwMVIzUDMxMBjJDAjMWaeAIc/eTa2gIc/ncA\nAAAAAQAbAAACigLZABAAACUzFSMVIzUjNTM1AzMbATMDAaODg5aDg/KnlYuo5+99cnJ9IAHK/r8B\nQf42AAAAAQAL/yYCHAIcAA4AACEzFSMVIzUjNTMDMxsBMwFca2uMa2vFmnhvkF97e18CHP53AYkA\nAAEAFv9hArYC2QAPAAABFzMRIzUjJwcjEwMzFzczAZ6YgJZMiYyp4uK2f4mwAXL1/uSf/f0BcgFn\n8PAAAAEADP9hAkICHAAPAAABFzMRIzUjJwcjEwMzFzczAV9peoxLW1yotLCoWFeoARCf/vCfqKgB\nEAEMo6MAAAEAKP9eAswC2QAWAAAhNQ4BIyImNREzERQWMzI3ETMRMxEjNQH0RkIug5OWRT5KaZZC\nlvkTCnRoASH+3ywwHQFg/aT+4aIAAAEAMv9jAlACHAAWAAAhNQYjIicmPQEzFRQWMzI3NTMRMxEj\nNQGJWU1hLyGMLSc2RIw4jLQaMidM3d0YHBj5/lX+8p0AAQAoAAACiwLZABYAACUVIzUuATcRMxEU\nFzUzFTY3ETMRIzUGAYFPfY0BlnNPOzmWllbgi4cCdmQBIf7fVAiYkwcRAWD9J/kWAAAAAAEAMgAA\nAhgCHAAZAAAlFSM1BiMiJyY9ATMVFBc1MxU2NzUzESM1BgFDPBATYi8hjEk8JiOMjx6jfHQBMiVO\n3d0vBX15Bw35/eS0CgABAEMAAAKlAtkAEgAAExU+ATMyFhURIxE0JiMiBxEjEdlGQi6Dk5ZFPkpp\nlgLZ+RMKdGj+3wEhLDAd/qAC2QAAAQBSAAACLQLgABMAADMRMxE+ATMyFhURIxE0JiMiBgcRUow0\nRitKYIwvJyUzFQLg/ssoHV9K/rkBJycwKS7+2QAAAAABAEAAAADWAtkAAwAAExEjEdaWAtn9JwLZ\nAAAAAQBAAAAA1gLZAAMAABMRIxHWlgLZ/ScC2QAAAAIAJv/pAuQC5QAYAB8AABMhJiMiBgcnNjMy\nFx4BFRQGBwYgJy4BNTQFIR4BMzI2KgIfJJxBVh+CYdmCWjtCNjBe/speMDYCI/54EGZOT2UBp747\nQkC9TDOjXFGUNGVlNJNRHlpdZGQAAgAj/+kCGQIlABcAHQAAEyEmJyYjIgcjPgEzMhYVFAYjIiYn\nJjU0BSMeATMyJAFoAxEdPk8akBeJXHSFhnNSexsVAWjXBTcxXQEsQhsuQVBflYKInVNKOlIPUjs9\nAAAAAwAXAAACvAOlAAcACgAYAAAlIQcjATMTIwsCEzMGBwYjIicmJzMWMzIB8v7vMZkBA6/zmllf\nX6xZAxMsZG0rDQFYC0NEk5MC2f0nARABHf7jApU4HkdSGzBKAAADABv/6QIMAuoAHAApADkAACUV\nIyY1BiMiJjU0PwE2NzY1NCMiBgcjNjMyFREUJzUGDwEOARUUFjMyNgMzBgcOASImJyYnMx4BMjYC\nDJkQSlpKWp84RRMYUTQqBYcN2uCMEygwLCQpIzU6BEQBDA5IUkgODAFEAyFIIRERFCJNWUmPGwoL\nCg4cNiAqu6b+1CWrJgkICQkiHx4jQgJOKBYeJiYeFigeGRkAAAAAAwAm/+kC5ALlABAAFwAdAAAB\nMhcWFRQGBwYgJy4BNTQ3NgEhHgEzMjYlIS4BIgYBhJxeZjcvXv7KXjE1Zl0BYP54EGZOT2X+iAGI\nEWWcZQLlZWyyTZUyZWU0k1KrbmX+RV1kZNpcYmIAAAAAAwAn/+kCPQIlAAoAEAAWAAABMhYVFAYj\nIiYQNhMjHgEyNiczLgEiBgExf42PfH2Ojvj2C0BgQOv2C0BgQAIlmYmDl5kBCpn+sz1BQZs9QUEA\nAAAAAgBDAAACZAOlAAsAGQAAExUhFSERIRUhFSEVAzMGBwYjIicmJzMWMzLZAYv93wIP/ocBXaFZ\nAxMsZG4pDgFYC0NEATq9fQLZfaV9Ams4HkdSGjFKAAAAAAMAJ//pAh0C6gAXABwALAAAJSEWFxYz\nMjczDgEjIiY1NDYzMhYXFhUUJTMmIyITMwYHDgEiJicmJzMeATI2Ahz+lwMRHz1PGpAXilt0hYZz\nUnsbFf6Y1wtiXadDAQsPSFJIDgwBRAMhSCHiQhsuQVBflYKInVNKOlIPUngBMycXHiYmHhYoHhkZ\nAAAAAgANAAADpAOoAAwAEAAAISMLASMDMxsBMxsBMyUzFyMC2od6d4fOn3FxlHZtn/29fkZGAjn9\nxwLZ/d4CIv3dAiPPlgACAAUAAAL+AvUADAAQAAAhIwsBIwMzGwEzGwEzJTMXIwJlkVFWkJiRVlKM\nUVKR/gh+RkYBff6DAhz+hgF6/oYBetmWAAIADQAAA6QDqAAMABAAACEjCwEjAzMbATMbATMlByM3\nAtqHeneHzp9xcZR2bZ/+0X5GRgI5/ccC2f3eAiL93QIjz5aWAAAAAAIABQAAAv4C9QAMABAAACEj\nCwEjAzMbATMbATMlByM3AmWRUVaQmJFWUoxRUpH+7X5GRgF9/oMCHP6GAXr+hgF62ZaWAAAAAAMA\nDQAAA6QDmgAMABAAFAAAISMLASMDMxsBMxsBMyUVIzUhFSM1AtqHeneHzp9xcZR2bZ/+Dm4BKG4C\nOf3HAtn93gIi/d0CI8F6enp6AAAAAwAFAAAC/gLnAAwAEAAUAAAhIwsBIwMzGwEzGwEzJRUjNSEV\nIzUCZZFRVpCYkVZSjFFSkf5ZbgEobgF9/oMCHP6GAXr+hgF6y3p6enoAAAACABsAAAKKA6gACAAM\nAAABESMRAzMbATMlMxcjAaOW8qeVi6j+ZX5GRgEO/vIBDgHL/r4BQs+WAAIACf8lAhoC9QASABYA\nAAEzAw4BBwYjIic1FjMyNjUDMxMDMxcjAYqQ3hEhHSo7FhwaCycwyZp3mX5GRgIc/YExKgwRBGkG\nNCoCMv53AmKWAAAAAAH/9wDPAi0BNwADAAABFSE1Ai39ygE3aGgAAAAB//kAzwPrATcAAwAAARUh\nNQPr/A4BN2hoAAAAAf/5AM8D6wE3AAMAAAEVITUD6/wOATdoaAAAAAL/6P65AkD/iAADAAcAAAEV\nITUlFSE1AkD9qAJY/aj+/kVFikVFAAABAEQB1QDOAtkACQAAEyM1JjY3FQYXM86HA0hCUwNQAdVt\nQVEFLg9KAAAAAAEAQgHVAMwC2QAJAAATMxUWBgc1NicjQocDSEJTA1AC2W1BUAYuD0oAAAAAAQBC\n/3kAzAB9AAkAADczFRYGBzU2JyNChwNIQlMDUH1tQVAGLg9KAAEATgHVANgC2QAJAAATFSMGFxUu\nATc12FADU0JIAwLZfUoPLgZQQW0AAAAAAgBIAdUBtQLZAAkAEwAAEyM1JjY3FQYXMxcjNSY2NxUG\nFzPShwNIQlMDUOOHA0hCUwNQAdVtQVEFLg9KfW1BUQUuD0oAAAAAAgBJAdUBuwLZAAkAEwAAEzMV\nFgYHNTYnIzczFRYGBzU2JyNJhwNIQlMDUOiHA0hCUwNQAtltQVAGLg9KfW1BUAYuD0oAAAAAAgBI\n/3kBswB9AAkAEwAANzMVFgYHNTYnIzczFRYGBzU2JyNIhwNIQlMDUOGHA0hCUwNQfW1BUAYuD0p9\nbUFQBi4PSgABAB//PgILAsUACwAAARUjESMRIzUzNTMVAguzhrOzhgHldP3NAjN04OAAAAEAHP8+\nAggCxQATAAABFSMVMxUjFSM1IzUzNSM1MzUzFQIIs7OzhrOzs7OGAeV033Tg4HTfdODgAAAAAAEA\nMgCvASwBqQAIAAATMhYUBiImNDaxMklJaElKAalJaElJaEkAAAADAFwAAAOMAJIAAwAHAAsAADcV\nIzUhFSM1IRUjNfKWAeOWAeOWkpKSkpKSkgAAAAAHAAv/6gPeAuMACgAUABgAIwAuADkAQwAAEzIW\nFRQGIyImNDYXIgYUFjI2NTQmJTMBIwEyFhUUBiMiJjQ2FyIGFRQWMjY1NCYlMhYVFAYjIiY0Nhci\nBhQWMjY1NCagP1dYPT5YVz4dKSk6KikBMkP+W0IBiz9XWD0+WFg9HSkqOikpAVM/V1g9PlhXPh0p\nKjopKQLjVz88Vld6V1AoOikpHB0pT/0JASdXPzxWV3pXUCkcHSkpHB0pUFc/PFZXeldQKDopKRwd\nKQAAAAABADoBoQC6AqEAAwAAEwMjE7pHOTYCof8AAQAAAgBxAaEBdgKhAAMABwAAEwMjEzMDIxPx\nRzk2z0c5NgKh/wABAP8AAQAAAAABAFMASAD6AeEABgAANzU3FQcXFVOnZWXacpV1WVlyAAEAUABI\nAPcB4QAGAAATFQc1Nyc196dlZQFPc5R1WVlyAAAAAAQAYAAAAiYC1gAFAAkADwATAAATFQMjAzUT\nFSM1ARUDIwM1ExUjNfYqQymWlgHGKkMplpYC1tL+ywE10v28kpICRNL+ywE10v28kpIAAAAAAf96\nA1EB0gOWAAMAAAEVITUB0v2oA5ZFRQAAAAH/iv/sAYgCywADAAABMwEjATFX/llXAsv9IQACAAYB\nDgFAAs4ADwAZAAATMhcWFRQHBiMiJyY1NDc2FiIGFRQWMjY1NKNUKSAnK0tRLCAnKXBGGxtGGwLO\nQDBzdjA3PzJveTA3SkJUUkFAUlUAAAACAAMBHAFDAsUACgANAAABFSMVIzUjNRMzESM1BwFDLl+z\npW1fagHES11dSgEC/v+kpAAAAQAGAQ8BQgLFABsAAAEVIwc2MzIWFRQGIyImNzMWMzI2NTQmIyIH\nIzcBMLkNJiQ/T1xJRFMBXQI5ICQkISgOVikCxVBNFlJCRVZIOTQpIyUpIO8AAgAIAQ4BQgLOABoA\nJAAAASMuASMiBwYHNjMyFhUUBiMiJyY1NDYzMhcWBiIGFRQWMjY1NAE7WAkXFSsSCAEkLz1KVURX\nKSFWU08kEHA6JCQ4JQJfFRArEi4dTT5GVz8yZnJ3MRaZKSIgKCogIgAAAAEABgEcAUcCxQAKAAAB\nFQ4BByM+ATcjNQFHUEoGYA5CSdoCxUVbpGVulVZQAAAAAAMAAgEOAUUCzgAWACAAKwAAAR4BFRQG\nIyImNTQ3LgE1NDYzMhYVFAYmIgYVFBYzMjY0ByIGFBYzMjY1NCYBACUgWUhJWUUeGFQ/PlQXXzgj\nIx0bI0AeJCQeHyQkAgMVMSU+TEw+RSYWJhsyQkIyGidrHRYXHR0uiiQ8IyMdHyQAAgAGAQ4BQALO\nABYAIQAAEzMWMzI1BiMiJjU0NjMyFxYVFAYjIiYTIgYUFjMyNjU0JgxcAjFGITA+TFZEVSwfVVI9\nT5EcISEcHSQjAYQpaCBSQkNURjFddHhCATQpRicoISQpAAEAKgELAWcCUgASAAATMxU2MzIXFh0B\nIzU0IyIGHQEjKmIlP0gfEGI0JCFiAkooMDEYOMa/OyouogAAAAEAFgAAAk0C2QAWAAABFT4BMzIX\nFSYjIh0BIxEjESMRIRUhFQGmF04xCQgZE3uMbpYCAP6WAbdqNzwBjgR7ugE6/sYC2X2lAAEAH//p\nAhkCywBAAAABIxYXMxUjBgc2MzIXFjMyNxcGIyImIyIHJz4BNyM1My4BJyM1MycuATU0NzYzMhcW\nFyMnLgEnJiMiBhUUFxYXMwF3egkDbm4NZEwkFCsnGS86KUxFIoIhNDk3Pi4BbWQBCAJZPAQfEko+\nZqE5FgWDAQQPEB4vKzcbFweLATwVCzdCTSULCh1tLSAeZSs/KzcEFwU3BzY0IFo8MW4qTwsiIg4b\nMycXNy8SAAAEAFv/9AP9AtkAFAA3AEIASQAAARUjFRQWMzI3FQYjIj0BIzUzNTMVFzMeATMyNTQv\nAS4BNTQ2MzIWFyMuASMiFRQWHwEWFRQGIyIBESMRMzIWFRQGIyczMjU0KwECmiwJDgwJGBdRJydU\nclIEGh86GWAoHUU7P0kBUQEaHSwKEGU/SUCR/g6WrHJ5eGQlFFdXFAEeNpwTDAI1BkSwNk5OyRUR\nHRAHHQwfHS00NS4WEhsKCAUcEDkuNQEQ/vwC2XRub4R9bW4AAAEABv/pAiIC1AArAAATMyY0NyM3\nMz4BMzIWFwcuASMiBzMHIwYUFzMHIx4BMzI2NxUGIyImJyYnIx4oAgE/GDAclmw0TDYtL0EiXiX7\nGPADAtkZtRRFLR45O2cxO3IiLRNIAT4OKgxEgI4cKIEmHYxEGCIKRERKFCCVIj0yQmAAAQGIAUwB\n9gHGAAMAAAEVIzUB9m4Bxnp6AAAAAAEAeP/2AmACYQA/AAAlJyY1NDY3JiMiFRQXFhceARUUBy4B\nJyY1NDYzMhcHDgEVFBYXFhUUBw4BIyIvASYjIgcnPgEzMh8BFjMyNjU0AeA8HB8qQGKUFQ00FBsr\nAhktNW9keokCPiwUKEJDJmAbFiNDGhgTJgolKRMUIV4wFxsm6k0lLR0vIRJBGQ0HEgchEyMuISIg\nKEBJUS8OKzYgGiUrSD5RLRolESENDwgxIxAtFzgoKQAAAAAC//z/6wFsAucAJgAvAAATDgEVFDMy\nNjc2MzIVFAcGIyImNTQ3BiMiJjU0Njc+ATMyFhUUBwYHPgE1NCYjIgaqDBcSDhcQCwwRFCY2IykN\nLg0GCjAkLmdCHyZCI1JASw4LIDMBIjmZExkZIhURFCJCMisoZCwMBwsqKfDeMCldcTsgR6JDERaa\nAAAAAAQARwAABC0C5QAJAA0AGAAjAAAhAxEjETMTETMRMzUhFQMyFhUUBiImNTQ2FyIGFBYzMjY1\nNCYBrOx5fOl5YgGk1mZydMhzc2QuODkuLTk4Afj+CALZ/hAB8P0nX18C5ZmJgpiYhoWZcV+cX19M\nT2AAAAAAAgBV/1cCXAGSADwARwAAARcOARUUFz4BMzIWFRQHBiMiJjU0NjMyFhUUBgcGFRQWMzI2\nNz4BNTQmIyIHBgcWFRQGIyImNTQ2NyY1NBcOARUUFjMyNjU0ATkLRj8Mdn47LDY/S08mMR8WDRAV\nEBUkFxk0ExkhHxkzVE83ODgpJTEcJhcgJhMkHBYdAZIQKVc4Ihl7WD80VkhYLCIcKRAMDhUBAhMR\nGyIdJWcpISlIQUV0ODJGNigfPTk8JHvvOS0dICoeFy4AAAACAEj/+gK1AlwAUgBeAAA3Jz4BMzIX\nFjI2NzY9AzQmIyIGFRQXFhcWFRQHJzY1NCcuATU0NjMyFzYzMhYVFAYHHgEfAR4BMzI3FwYjIi8B\nLgEnJiMiBxUUBwYjIiYnJiIBFTY3NjU0JiIHHgF0EREqHxkgDQ4SBQ00Lic1IAg3LS0LAzksIWZK\nUSs/UT9VQEYWGAwdBxIQBhANPzQcESoJCQoOHwkHLDU8FBMjCx4BEEojMTVSJQkFDAUxLRcIFg8m\nSJQKCkNLNygnGgccFyAkNQMPCSQgGTQuT21DQlE8KDoZDicrbxwXBg5PQ6glFQYKATloQ04IFwgB\nVSUSEho2JjAbISwAAAACAEX/7gKmApsAFwAfAAAlJwYrARUjESEyFhUUBgcXNzMHFyMnByMDMzI2\nNTQrAQHTSAcLq4kBJmlvLikgIXdgYncjJHakgDc1bICBbgHuAptqZUBkGTs+kZNBQQFyMTRkAAAA\nAgBHAREDoQLZAAcAFAAAAREjESM1IRUBIwMRIxEzGwEzESMRAS9fiQFtAT9eVVuJVlSJWwKL/oYB\nek5O/oYBXf6jAcj+ogFe/jgBXQAAAAABABQAAALrAuUAJAAAJRUhNTMuAScmNTQ2MzIWFRQHBgcz\nFSE1Njc2NTQmIyIGFRQXFgFM/siqKyYROsaYl8ZDGj+q/shHGTNsW1psOhl9fX0dHxZLc5XDwpV8\nTh4pfX0uIkZybYODbXpHHwACADX/9QIVAhYAGwAlAAAlIQcWFxYzMjY3NjczDwEGIyImNDYzMhYX\nFhcVJzUmJyYjIgYHFQIV/osBDhYlQTdRFAICQAICMK5xgYRwSnMZFAJdCA0vTDI8GPReLhQgMS0G\nBAcFm4/8lkc+M1oJL1EVDzcpM1AAAAABABwAAAHZAncAPQAAATcjIicmNTQ3FRQWOwEyFhUUBy4B\nKwEHBhUUFh8BFhUUBwEGFRQXHgEVFAYrATUzMjU0JyY1ND8BJyY1NDcBK0MoKg0WKxcdRCEcDQMR\nEBYsDxMcJyEP/tUXLikXLEJSEiMaHRw4RhsPASSeDhMtOS4QGBMhJiktExBqKBgZKSMxKh0bIAF4\nKhgpPjcwHiwePRwLKzMbHjNpVyIaHiEABQAS/+wDLQLLAAMACwAdACYALwAAATMBIwMjNTI3MxEj\nBRYVFAYiJjU0NyY1NDYyFhUUJyIGFBYyNjQmFiIGFBYyNjU0AjRX/llXEGt1FUBfAmpGVIZURjhO\ndk6IHSMkOCMjAj4kJD4kAsv9IQJRPUv+VzQnRj1MTD1GJx06MkFBMjppHjIfHzIeqCdAJSUfIgAA\nAAUAF//sAzQCzgADABUAHgAnAE0AAAEzASMlFhUUBiImNTQ3JjU0NjIWFRQnIgYUFjI2NCYWIgYU\nFjI2NTQBNTMyNTQmIyIGByM2NzYzMhYVFAcWFRQGIiYnMxYzMjY1NCYnJgJVV/5ZVwJARlSGVEY4\nTnZOiRwjIzgkIwI+JCQ+JP2uCkwdGB8ZAVkEGSZSQk80QleSUAFcAz4bIxkVEgLL/SH8J0Y9TEw9\nRicdOjJBQTI6aR4yHx8yHqgnQCUlHyIBNz46GR0hKUQeMUA1OSAhRj9LS0RCIhoWIAUEAAAABQAT\n/+wDNALWAAMAFQAfACgARAAAATMBIyUWFRQGIiY1NDcmNTQ2MhYVFCYiBhQWMzI2NTQGIgYUFjI2\nNTQBFSMHNjMyFhUUBiMiJjczFjMyNjU0JiMiByM3AkhX/llXAk1GVIZURjdOdk1sOCMjGxwkIT4k\nJD4k/kmwDSEoO0pVRT5PAVIDOR8lJCEnDkwmAsv9IfwnRj1MTD1GJxw7MkFCMTppHzAgHxkYiSdA\nJSUfIgI2S1kaUkFFVkY3NSsmJywh7QAAAAAFADX/7AMkAtYAAwAVAB4AJwAyAAABMwEjJRYVFAYi\nJjU0NyY1NDYyFhUUJyIGFBYyNjQmFiIGFBYyNjU0ARUOAQcjPgE3IzUCK1f+WVcCWkZUhlRGOE52\nTogdIyM4JCMCPiQkPiT+kEtHBlUOQkXTAsv9IfwnRj1MTD1GJx06MkFBMjppHjIfHzIeqCdAJSUf\nIgI2QlynZW6cVUsAAAAAAQBVAI8DkQHfABoAAAEhHgEVFCMiJyYnJjU0Nz4BNzYzMhUUBwYHIQOR\n/WoSLBIIEjdmGxRJPSUKCRIYEBYClgEZFlYOEBRBOQ8JCwssMC0LEBEuHh0AAAEASP+VAZgC0QAa\nAAAXEQ4BIyI1NDc2NzYzMhceARcWFRQjIicmJxHSF1YNEBRBOQ8JCwssMC0LEBEuHh1rApYSLBII\nEjdmGxRJPSUKCRIYEBb9agAAAAABAFUAjwORAd8AGgAAEzUhJicmNTQzMhceARcWFRQHBgcGIyI1\nNDY3VQKWHQ0UEgkKJ0FLDBtmNxIIEiwSARk8JxwoDxALLTQsBwsJDzlBFBAOVhYAAAAAAQBI/5UB\nmALRABoAAAERPgEzMhUUBwYHBiMiJy4BJyY1NDMyFxYXEQEOFlYOEBRBOQ8JCwssMC0LEBEuHh0C\n0f1qEiwSCBI3ZhsUST0lCgkSGBAWApYAAAEAegCPA24B3wAzAAABIRYXFhUUIyImJy4BJyY1NDc2\nNzYzMhYVFAYHIS4BNTQzMhcWFxYVFAYHDgEHBiMiNTQ2Asn+VRoRFBIHBw4hQkYMG2U3EggHCysU\nAasSLBIKEDVnGwYNSD8kCgkSJQEYIyAoDhAGECYzKQcLCQ85QRQJBg5WGBZXDhAUPzsPCQgHBysy\nLAsRDkgAAQBI/+ABmQLRADEAADcDDgEjIjU0NzY3NjMyFx4BFxYVFCMiJyYnEzY3NjMyFRQHDgEH\nBiMiJyYnJjU0MzIW0wEXVg0QFEE5DwkLCywwLQsQES4eHQElHigPEAstNCwHCwkPOUEUEA5VhQGm\nEiwSCBI3ZhsUST0lCgkSGBAW/locDxQSCQolQkwMG2Y3EggSLAAAAAEAWwBWAnYCcgAIAAATAQcB\nFSM1MxXCAbQq/kw9+gI1/ksqAbWU+z0AAAAAAQBbAFYCdwJyAAgAAAEjNTMVIzUBJwIQlPs9/ksq\nAjU9+5T+SyoAAAEAWwBWAncCcgAIAAAlATcBNTMVIzUCEP5LKgG1PfuTAbUq/kuU+z0AAAAAAQBb\nAFYCdgJyAAgAADczFSM1MxUBF8KT+j0BtCqTPfuUAbUqAAAAAAIASP+RAZkDCAADADUAABchFSET\nAw4BIyI1NDc2NzYzMhceARcWFRQjIicmJxM2NzYzMhUUBw4BBwYjIicmJyY1NDMyFngBCP74WwEW\nVg4QFEE5DwkLCywwLQsQES4YIwEnHCgPEAstNCwHCwkPOUEUEA5WRCsBKwGmEiwSCBI3ZhsUST0l\nCgkSGA0Z/lodDRQSCQolQkwMG2Y3EggSKwABAKIAlQN0Ag8ACwAAARUhFwclNSUXByE1A3T9kdIX\n/uIBHhfSAi8CD/RSNIBNfzVRtAAAAQAIAEkCyQIFAA0AABMXIRUhFxUtARUHIRUhT1ICKP4JPP76\nAQY8Aff92AEnRyo0Od7eOTQqAAABAIsAAAJHAogADQAAAQcRIxEHIxsBIycRIxEBaUcqNDne3jk0\nKgJBUv4RAb48AQb++jz+QgHvAAEACQBJAsoCBQANAAABJyE1ISc1DQE1NyE1IQKDUv3YAfc8AQb+\n+jz+CQIoASdHKjQ53t45NCoAAQCLAAACRwKIAA0AACU3ETMRNzMLATMXETMRAWlHKjQ53t45NCpH\nUgHv/kI8/voBBjwBvv4RAAACAAYASQLQAgUADQATAAATISc1DQE1NyEXFS0BFQ8BFyE3J9ABNjwB\nBv76PP7KPP76AQZtUlIBmFJSAZg0Od7eOTQ0Od7eOV5HR0dHAAAAAAL/aQAAAa8CmwAHAAoAAAE3\nMwMjAzMfASMTAQxEX+pu7ltG6tRtAdPI/WUCm8hH/tAAAAACABr/8QHOAu4AHQAqAAATJzYzMhYV\nFAYHBiMiJjU0NzYzMhYXNjU0JyYjIgYTJiMiBhUUFjMyNjc2aig+RnOVJhxCclBuSjJIKDo0Czcl\nSRwcyyhBPFYvKilCFBECnjQcw5ZOrTN2cFJnTDIZKEkneEw0CP55P31XQUlAOjYAAAH/swAAAdQC\n2QALAAABITUhNSE1IREhNSEBPv6jAV3+hwIP/d8BiwE6faV9/Sd9AAMAaP/zA3sCpwATABoAIgAA\nPwEmNTQ2MzIXNxcHFhUUBiMiJwc3ASYiBhUUCQEWMzI2NTRoeTrHjYtnbiBvQseMk2l4gAHBVvCp\nAg7+PVh/d6omZVtnj8tnXSZcXnCPy3JkqgF3WbF9VAED/odksXxiAAAAAv/NAAAClgLZAAMABgAA\nIwEzASUhAzMBBMEBBP38AT+gAtn9J30B6QAAAAACAEUAAAKhAnYAAwAGAAATIQEjNxMhRQJc/v1Y\nLLf+kwJ2/YpmAccAAQDpAAAC/wHuABYAACUhFjchFSEiJy4BNTQ3PgEzIRUhJgchAv/+MgmiASP+\n6FYsO0FjHEE+ARj+3aIJAc7YnQM+Ehp4V5JBEw0+A54AAAADAOn/wQL/AkEAHQAhACYAACUHFjMh\nFSEiJwcnNy4BNTQ3PgE7ATcXBzMVIwczFSEjFhcTIyYHMwIQVwkaASP+6C0jJishPUFiHEI+jy8q\nIVF0WMz+2acFUcx3ognK2JkBPgRDFzkZeleRQhMNUxg7Pps9cRwBZQOeAAAAAQDpAAAC/wHuABYA\nADc1ISYHITUhMhceARUUBw4BIyE1IRY36QHOB6T+3QEYViw6QmIcQj7+6AEjpAfYPZ4DPhIZeFGZ\nQRMNPgWfAAEAGP+pAx4C+AAfAAATNSEVDgEXEQYWFxUhNT4BNREhEQYWFxUhNT4BJxE2JhgDBjsl\nAQElO/7POyX+nQEmO/7OOyYBASYC3xkZAic7/as7JwIZGQInOwKc/WQ7JwIZGQInOwJVOycAAQAB\n/6gCVgLxABcAAAEXIy4BJyMTASEWNjczBgcOAQcUByEJAQIRBhMPM0Dn7v8AAS1CLxkWEwUCBwID\n/dEBMP7QAvGfQywC/p7+sAEmTFEoDDUOAw8BjQG8AAABACgArAIgASMAAwAAARUhNQIg/ggBI3d3\nAAAAAgDsAAAC/QKWAAMADwAAEzUhFQMjNSM1MzUzFTMVI+0CDOk37e037e0CXzc3/aHvN+/vNwAA\nAAAB/4r/7AGIAssAAwAAATMBIwExV/5ZVwLL/SEAAQFlAGUCgwF+ABEAACUnNxcnMwc3FwcXBycX\nIzcHJwHOaSZUE1ATVCZpaSZUE1ATVCbyJUFJb29JQSUmQUlvb0lBAAABAEAAqQC8ASQAAwAAEzMV\nI0B8fAEkewABAAr/3AIDA5EABwAAARcLAQcnNxMB3ySY8V4SlMEDkQX8UAHxLiFJ/nQAAAIAxQBk\nAqoBewAYACcAACUVBicGBwYjIiY1NDYzMhc2OwEVIyIHHgEnJicuASMiBhUUFjMyNzYCql1XEA0+\nUzpJSztaUU1bDAY9QSg3wAkKJCsaIiclHjhABqc+BWwTDUZLPD1NZmY9SysgSwkJIhcoIyIqQQYA\nAAMAGQB8ArABlAAYACIAKwAAATY3NjMyFhQGIyInJicGBwYiJjQ2MzIXFhcWMzI2NTQmIyIHJiMi\nBhQWMzIBZDMWOzw6UlI6PDsWMzIWPXRSUjo8OxZWWUIlNDQlQaFYQyU0NCVBASktEC5SdFIuEC0t\nEC5SdFIuEE5ZNCUkNFhYNEg0AAEAMgAAA6IDZgAFAAAzETMRIRUyQgMuA2b83EIAAAAAAQDTAAAD\nFQGhAAUAAAEXASEVIQKDHf6gAdX9vgGhIf6qKgAAAQFIAAABiwKcAAMAAAERIxEBi0MCnP1kApwA\nAAIA+wAAAdcCnAADAAcAACEjETMjESMRAddDQ5lDApz9ZAKcAAEA8wAAAvUCAQAGAAABEyMLASMT\nAhXgULGxUOACAf3/AZn+ZwIBAAABAPMAAAL1AgEABgAAISMDMxsBMwIVQuBQsbFQAgH+ZwGZAAAB\nAHAAAAJiAmMAGwAAISMRNCYnLgEjIgYHBhURIxE0Njc2MzIWFx4BFQJiTQwQF0wtMVITFk0QG0aI\nSHIgEwwBDltUGSInLicrkf7yAQt4WiVhOzchWG0AAQEYAAAC0AIvABsAAAEVFAYHBiMiJicuAT0B\nMxUUFhceATMyNjc2PQEC0A4ZQHU+ZRwSCzwMERVHJyxNExQCL/ZvUSJXNTEeT2b2+VVMGR4jLCQn\nhPkAAAEAD/+XAR8DkQAoAAATFRQHBiMiJjU0NjMyFxYzMjU0JyY9ATQ3NjMyFhUUBiInJiMiFRQX\nFrwVFUQaJRwUExAMBxIGDhUVQxolHCgPDAcSBg8CC+XiVFkgFxQdDgwcDT+QQeTiVFkfFxUdDwwc\nDT+bAAAAAwEk/2QCwgNrACsALwAzAAAlNS4BNDY3NT4BNz4BMzIXByYjIgcGHQEeARQGBxUUBgcO\nASMiJzcWMzI3Nj0BBhQ3FTY0Aag8SEg8AQMHD2JFJjEYGhMpDgU7SEg7AwgQZU4vGxgaESwNBTLJ\nMXc5GGmAahcJbi0cOEELhQskDDRQF2qAahcbbS8eOj0JhQskDfXJJn6jyCh4AAAAAwDEAAADJAIl\nAAoAFAAeAAABMhYVFAYiJjU0NgMyFhUUBiImNDYhMhYVFAYiJjQ2AfYYHyAyICDcFyAgMiAhAggX\nICAyICECJSAZGCEgGRof/k0hGBkgIDIgIRgZICAyIAAAAAMAqAAAA0ACVgALABYAIQAAJTIWFRQG\nIyImNTQ2AzIWFRQGIyImNDYhMhYVFAYjIiY0NgH1GiMiGxwjJPMaIyMaHCMjAjgaIyMaHCMjfCQa\nGyMiHBsjAdokGhsjIzYjJBobIyM2IwAABADEAAADIwJXAAkAEwAcACUAACUyFhUUBiImNDYhMhYV\nFAYiJjQ2ATIWFAYiJjQ2ITIWFAYiJjQ2AQMaIyM2IyMB/xojIzYjI/45GiMjNiMjAf8aIyM2IyN8\nJBobIyM2IyQaGyMjNiMB2yM2IyM2IyM2IyM2IwAAA/+aAGEBewGzAAMABwAcAAABFSE1BRUhNQEX\nBiMiJicmIyIGByc2MzIXFjMyNgF7/h8B4f4fAbYkLFgWHDZTFBogICg1Tx9TSBMbJQERMzN+MjIB\nIB9OBhEYFSQfTRkWFwAAAAIAIAA5AgUBkwAYADIAAAEXBgcGIyInJiMiByc2NzY3NjMyFxYzMjYf\nAQYHBiMiJyYjIgcnPgE3Njc2MzIXFjMyNgHfJiMOIi8fVUweNyklCgggECIlHlxFHB0nFyYjDiEw\nH1VMHjcpJQQNAR4SIiUeXEUcHScBkT4pDiIXFDExDA4uDBoYExKkPikNIxcUMTEGEgItDRoYExIA\n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\nLQPo/i1CAV1ChEJC/m8AAAAB/27/BgNWARsACwAAJSE1IRUhESMRIxEjAP/+bwPo/m9CQkLZQkL+\nLQHT/i0AAAAD/27/BgNWAV0AAwAJAA8AAAMhFSEFESMRIRUpATUhESOSA+j8GAJXQgHT/an+bwHT\nQgFdQoT+bwHTQkL+LQAAAv9uAJcDVgLuAAMACwAAJzUhFSURMxEhFSE1kgPo/etCAdP8GJdCQsYB\nkf5vQkIAAf9uANkDVgLuAAsAACc1IREzETMRMxEhFZIBkUJCQgGR2UIB0/4tAdP+LUIAAAAAA/9u\nAJcDVgLuAAMACQAPAAAnNSEVJSEVIREzAxEzESE1kgPo/m8Bkf4tQsZC/i2XQkLGQgHT/m8Bkf4t\nQgAAAAH/bv8GA1YC7gATAAAlNSE1IREzESEVIRUhFSERIxEhNQFB/i0B00IB0/4tAdP+LUL+LdlC\nQgGR/m9CQkL+bwGRQgAAAf9u/wYDVgLuABMAACUhNSERMxEzETMRIRUhESMRIxEjAP/+bwGRQkJC\nAZH+b0JCQtlCAdP+LQHT/i1C/i0B0/4tAAAE/27/BgNWAu4ABQALABEAFwAAASEVIREzAxEzESE1\nBREjESEVKQE1IREjAcUBkf4tQsZC/i0CV0IB0/2p/m8B00IBXUIB0/5vAZH+LULG/m8B00JC/i0A\nAf9uAPoDVgLuAAMAACcRIRGSA+j6AfT+DAAAAAH/bv8GA1YA+gADAAAHESERkgPo+gH0/gwAAAAB\n/27/BgNWAu4AAwAABxEhEZID6PoD6PwYAAAAAf9u/wYBYgLuAAMAAAcRIRGSAfT6A+j8GAAAAAEB\nYv8GA1YC7gADAAAFESERAWIB9PoD6PwYAAAZ/27/agLyAu4AAwAHAAsADwATABcAGwAfACMAJwAr\nAC8AMwA3ADsAPwBDAEcASwBPAFMAVwBbAF8AYwAAAzMVIzczFSMlMxUjJTMVIzczFSMFMxUjFTMV\nIxUzFSMVMxUjEzMVIxUzFSMVMxUjFTMVIxMzFSMVMxUjFTMVIxUzFSMTMxUjFTMVIxUzFSMVMxUj\nEzMVIxUzFSMVMxUjFTMVI5JkZMhkZAJYZGT+cGRkyGRk/ahkZGRkZGRkZMhkZGRkZGRkZMhkZGRk\nZGRkZMhkZGRkZGRkZMhkZGRkZGRkZALuZGRkZGRkZGRkZGRkZGRkZGQCvGRkZGRkZGQCvGRkZGRk\nZGQCvGRkZGRkZGQCvGRkZGRkZGQAMv9u/wYDVgLuAAMABwALAA8AEwAXABsAHwAjACcAKwAvADMA\nNwA7AD8AQwBHAEsATwBTAFcAWwBfAGMAZwBrAG8AcwB3AHsAfwCDAIcAiwCPAJMAlwCbAJ8AowCn\nAKsArwCzALcAuwC/AMMAxwAAAzMVIzczFSMlMxUjJTMVIzczFSMhMxUjNzMVIzczFSM3MxUjNzMV\nIwEzFSM3MxUjJTMVIyUzFSM3MxUjITMVIzczFSM3MxUjNzMVIzczFSMBMxUjNzMVIyUzFSMlMxUj\nNzMVIyEzFSM3MxUjNzMVIzczFSM3MxUjATMVIzczFSMlMxUjJTMVIzczFSMhMxUjNzMVIzczFSM3\nMxUjNzMVIwEzFSM3MxUjJTMVIyUzFSM3MxUjITMVIzczFSM3MxUjNzMVIzczFSOSZGTIZGQCWGRk\n/nBkZMhkZP4MZGTIZGTIZGTIZGTIZGT8fGRkyGRkAlhkZP5wZGTIZGT+DGRkyGRkyGRkyGRkyGRk\n/HxkZMhkZAJYZGT+cGRkyGRk/gxkZMhkZMhkZMhkZMhkZPx8ZGTIZGQCWGRk/nBkZMhkZP4MZGTI\nZGTIZGTIZGTIZGT8fGRkyGRkAlhkZP5wZGTIZGT+DGRkyGRkyGRkyGRkyGRkAu5kZGRkZGRkZGRk\nZGRkZGRkZGT9qGRkZGRkZGRkZGRkZGRkZGRkZAGQZGRkZGRkZGRkZGRkZGRkZGRkAZBkZGRkZGRk\nZGRkZGRkZGRkZGQBkGRkZGRkZGRkZGRkZGRkZGRkZAAAAAAR/3j/BgNgAu4AJQApAC0AMQA1ADkA\nPQBBAEUASQBNAFEAVQBZAF0AYQBlAAAFITUzNSM1MzUjNTM1IzUzNSM1MzUzFTM1MxUzNTMVMzUz\nFTM1MwcjFTMnIxUzJyMVMycjFTMFIxUzJyMVMycjFTMnIxUzBSMVMycjFTMnIxUzJyMVMwUjFTMn\nIxUzJyMVMycjFTMDYPwYZGRkZGRkZGRkZGRkZGRkZGRkZGRkyGRkyGRkyGRkAlhkZMhkZMhkZMhk\nZAJYZGTIZGTIZGTIZGQCWGRkyGRkyGRkyGRk+mRkZGRkZGRkZGRkZGRkZGRkZMhkZGRkZGRkZGRk\nZGRkZGRkZGRkZGRkZGRkZGRkZGRkAAH/wQAAApoC2QADAAADIREhPwLZ/ScC2f0nAAACACsAAAIy\n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\nAAgAOAIiAAMAAQQJAAsAJgJ5AAMAAQQJAAwAKAK1AAMAAQQJABAAGgL0AAMAAQQJABEACAMeAAMA\nAQQJABIAGgMtAEMAbwBwAHkAcgBpAGcAaAB0ACAAMgAwADEANAAgAGIAeQAgACgAVQBSAFcAKQAr\nACsAIABEAGUAcwBpAGcAbgAgACYAIABEAGUAdgBlAGwAbwBwAG0AZQBuAHQAIABHAG0AYgBIAABD\nb3B5cmlnaHQgMjAxNCBieSAoVVJXKSsrIERlc2lnbiAmIERldmVsb3BtZW50IEdtYkgAAE4AaQBt\nAGIAdQBzAFMAYQBuAEwAAE5pbWJ1c1NhbkwAAEIAbwBsAGQAAEJvbGQAADEALgAwADAAMAA7AFUA\nUgBXACAAOwBOAGkAbQBiAHUAcwBTAGEAbgBMAC0AQgBvAGwAADEuMDAwO1VSVyA7TmltYnVzU2Fu\nTC1Cb2wAAE4AaQBtAGIAdQBzAFMAYQBuAEwALQBCAG8AbAAATmltYnVzU2FuTC1Cb2wAAFYAZQBy\nAHMAaQBvAG4AIAAxAC4AMAAwADAAOwBQAFMAIAAxAC4AMAAwADsAaABvAHQAYwBvAG4AdgAgADEA\nLgAwAC4ANQA3ADsAbQBhAGsAZQBvAHQAZgAuAGwAaQBiADIALgAwAC4AMgAxADgAOQA1AABWZXJz\naW9uIDEuMDAwO1BTIDEuMDA7aG90Y29udiAxLjAuNTc7bWFrZW90Zi5saWIyLjAuMjE4OTUAAE4A\naQBtAGIAdQBzAFMAYQBuAEwALQBCAG8AbAAATmltYnVzU2FuTC1Cb2wAACgAVQBSAFcAKQArACsA\nIABEAGUAcwBpAGcAbgAgACYAIABEAGUAdgBlAGwAbwBwAG0AZQBuAHQAAChVUlcpKysgRGVzaWdu\nICYgRGV2ZWxvcG1lbnQAAGgAdAB0AHAAOgAvAC8AdwB3AHcALgB1AHIAdwBwAHAALgBkAGUAAGh0\ndHA6Ly93d3cudXJ3cHAuZGUAAGgAdAB0AHAAOgAvAC8AdwB3AHcALgB1AHIAdwBwAHAALgBjAG8A\nbQAAaHR0cDovL3d3dy51cndwcC5jb20AAE4AaQBtAGIAdQBzACAAUwBhAG4AcwAgAEwAAE5pbWJ1\ncyBTYW5zIEwAAEIAbwBsAGQAAEJvbGQAAE4AaQBtAGIAdQBzAFMAYQBuAEwAQgBvAGwAAE5pbWJ1\nc1NhbkxCb2wAAAAAAAIAAAAAAAD/iABFAAAAAAAAAAAAAAAAAAAAAAAAAAAC+QAAAAEAAgADAAQA\nBQAGAAcACAAJAAoACwAMAA0ADgAPABAAEQASABMAFAAVABYAFwAYABkAGgAbABwAHQAeAB8AIAAh\nACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0A\nPgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBa\nAFsAXABdAF4AXwBgAGEBAgCjAIQAhQC9AJYA6ACGAI4AiwCdAKkApAEDAIoA2gCDAJMA8gDzAI0A\nlwCIAMMA3gDxAJ4AqgD1APQA9gCiAK0AyQDHAK4AYgBjAJAAZADLAGUAyADKAM8AzADNAM4A6QBm\nANMA0ADRAK8AZwDwAJEA1gDUANUAaADrAO0AiQBqAGkAawBtAGwAbgCgAG8AcQBwAHIAcwB1AHQA\ndgB3AOoAeAB6AHkAewB9AHwAuAChAH8AfgCAAIEA7ADuALoBBAEFAQYBBwEIAQkA/QD+AQoBCwEM\nAQ0A/wEAAQ4BDwEQAQEBEQESARMBFAEVARYBFwEYARkBGgEbARwA+AD5AR0BHgEfASABIQEiASMB\nJAElASYBJwEoASkBKgErASwA+gDXAS0BLgEvATABMQEyATMBNAE1ATYBNwE4ATkBOgE7AOIA4wE8\nAT0BPgE/AUABQQFCAUMBRAFFAUYBRwFIAUkBSgCwALEBSwFMAU0BTgFPAVABUQFSAVMBVAD7APwA\n5ADlAVUBVgFXAVgBWQFaAVsBXAFdAV4BXwFgAWEBYgFjAWQBZQFmAWcBaAFpAWoAuwFrAWwBbQFu\nAOYA5wFvAKYBcAFxAXIBcwF0AXUBdgF3AXgBeQDYAOEBegDbANwA3QDgANkA3wF7AXwBfQF+AX8B\ngAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEBkgGTAZQBlQGWAZcBmAGZAZoBmwGc\nAZ0BngGfAaABoQGiAaMBpAGlAaYBpwGoAakBqgGrAawBrQGuAa8BsAGxAbIBswCbAbQBtQG2AbcB\nuAG5AboBuwG8Ab0BvgG/AcABwQHCAcMBxAHFAcYBxwHIAckBygHLAcwBzQHOAc8B0AHRAdIB0wHU\nAdUB1gHXAdgB2QHaAdsB3AHdAd4B3wHgAeEB4gHjAeQB5QHmAecB6AHpAeoB6wHsAe0B7gHvAfAB\n8QHyAfMB9AH1AfYB9wH4AfkB+gH7AfwB/QH+Af8CAAIBAgICAwIEAgUCBgIHAggCCQIKAgsCDAIN\nAg4CDwIQAhECEgITAhQCFQIWAhcCGAIZAhoCGwIcAh0CHgIfAiACIQIiAiMCJAIlAiYCJwIoAikC\nKgIrAiwCLQIuAi8CMAIxAjICMwI0AjUCNgI3AjgCOQI6AjsCPAI9Aj4CPwJAAkECQgJDAkQCRQJG\nAkcCSAJJAkoCSwJMAk0CTgJPAlACUQJSAlMCVAJVALIAswJWAlcAtgC3AMQCWAC0ALUAxQCCAMIA\nhwCrAMYCWQJaAL4AvwJbAlwAvAJdAl4CXwJgAmECYgJjAmQA9wJlAmYCZwJoAmkCagJrAmwCbQJu\nAIwCbwJwAnECcgJzAnQCdQJ2AncCeAJ5AnoCewJ8An0CfgJ/AoACgQKCAoMChAKFAoYChwCYAogC\niQCoAooCiwKMAo0AmgCZAO8CjgKPApACkQClApIAkgKTApQClQKWApcCmAKZApoAnAKbApwCnQKe\nAp8ApwCPAqAAlACVAqECogKjAqQCpQKmAqcCqAKpAqoCqwKsAq0CrgKvArACsQKyArMCtAK1ArYC\ntwK4ArkCugK7ArwCvQK+Ar8CwALBAsICwwLEAsUCxgLHAsgCyQLKAssCzALNAs4CzwLQAtEC0gLT\nAtQC1QLWAtcC2ALZAtoC2wLcAt0C3gLfAuAC4QLiAuMC5ALlAuYC5wLoALkC6QLqAusC7ALtAu4C\n7wLwAvEC8gLzAvQC9QL2AvcC+AL5AMAAwQL6AvsHdW5pMDBBMAd1bmkwMEFEB0FtYWNyb24HYW1h\nY3JvbgZBYnJldmUGYWJyZXZlB0FvZ29uZWsHYW9nb25lawtDY2lyY3VtZmxleAtjY2lyY3VtZmxl\neApDZG90YWNjZW50CmNkb3RhY2NlbnQGRGNhcm9uBmRjYXJvbgZEY3JvYXQHRW1hY3JvbgdlbWFj\ncm9uBkVicmV2ZQZlYnJldmUKRWRvdGFjY2VudAplZG90YWNjZW50B0VvZ29uZWsHZW9nb25lawZF\nY2Fyb24GZWNhcm9uC0djaXJjdW1mbGV4C2djaXJjdW1mbGV4Ckdkb3RhY2NlbnQKZ2RvdGFjY2Vu\ndAxHY29tbWFhY2NlbnQMZ2NvbW1hYWNjZW50C0hjaXJjdW1mbGV4C2hjaXJjdW1mbGV4BEhiYXIE\naGJhcgZJdGlsZGUGaXRpbGRlB0ltYWNyb24HaW1hY3JvbgZJYnJldmUGaWJyZXZlB0lvZ29uZWsH\naW9nb25lawJJSgJpagtKY2lyY3VtZmxleAtqY2lyY3VtZmxleAxLY29tbWFhY2NlbnQMa2NvbW1h\nYWNjZW50DGtncmVlbmxhbmRpYwZMYWN1dGUGbGFjdXRlDExjb21tYWFjY2VudAxsY29tbWFhY2Nl\nbnQGTGNhcm9uBmxjYXJvbgRMZG90BGxkb3QGTmFjdXRlBm5hY3V0ZQxOY29tbWFhY2NlbnQMbmNv\nbW1hYWNjZW50Bk5jYXJvbgZuY2Fyb24LbmFwb3N0cm9waGUDRW5nA2VuZwdPbWFjcm9uB29tYWNy\nb24GT2JyZXZlBm9icmV2ZQ1PaHVuZ2FydW1sYXV0DW9odW5nYXJ1bWxhdXQGUmFjdXRlBnJhY3V0\nZQxSY29tbWFhY2NlbnQMcmNvbW1hYWNjZW50BlJjYXJvbgZyY2Fyb24GU2FjdXRlBnNhY3V0ZQtT\nY2lyY3VtZmxleAtzY2lyY3VtZmxleAxUY29tbWFhY2NlbnQMdGNvbW1hYWNjZW50BlRjYXJvbgZ0\nY2Fyb24EVGJhcgR0YmFyBlV0aWxkZQZ1dGlsZGUHVW1hY3Jvbgd1bWFjcm9uBlVicmV2ZQZ1YnJl\ndmUFVXJpbmcFdXJpbmcNVWh1bmdhcnVtbGF1dA11aHVuZ2FydW1sYXV0B1VvZ29uZWsHdW9nb25l\nawtXY2lyY3VtZmxleAt3Y2lyY3VtZmxleAtZY2lyY3VtZmxleAt5Y2lyY3VtZmxleAZaYWN1dGUG\nemFjdXRlClpkb3RhY2NlbnQKemRvdGFjY2VudAVsb25ncwpBcmluZ2FjdXRlCmFyaW5nYWN1dGUH\nQUVhY3V0ZQdhZWFjdXRlC09zbGFzaGFjdXRlC29zbGFzaGFjdXRlDFNjb21tYWFjY2VudAxzY29t\nbWFhY2NlbnQHdW5pMDIxQQd1bmkwMjFCB3VuaTAyQzkFdG9ub3MNZGllcmVzaXN0b25vcwpBbHBo\nYXRvbm9zB3VuaTAzODcMRXBzaWxvbnRvbm9zCEV0YXRvbm9zCUlvdGF0b25vcwxPbWljcm9udG9u\nb3MMVXBzaWxvbnRvbm9zCk9tZWdhdG9ub3MRaW90YWRpZXJlc2lzdG9ub3MFQWxwaGEEQmV0YQVH\nYW1tYQd1bmkwMzk0B0Vwc2lsb24EWmV0YQNFdGEFVGhldGEESW90YQVLYXBwYQZMYW1iZGECTXUC\nTnUCWGkHT21pY3JvbgJQaQNSaG8FU2lnbWEDVGF1B1Vwc2lsb24DUGhpA0NoaQNQc2kHdW5pMDNB\nOQxJb3RhZGllcmVzaXMPVXBzaWxvbmRpZXJlc2lzCmFscGhhdG9ub3MMZXBzaWxvbnRvbm9zCGV0\nYXRvbm9zCWlvdGF0b25vcxR1cHNpbG9uZGllcmVzaXN0b25vcwVhbHBoYQRiZXRhBWdhbW1hBWRl\nbHRhB2Vwc2lsb24EemV0YQNldGEFdGhldGEEaW90YQVrYXBwYQZsYW1iZGEHdW5pMDNCQwJudQJ4\naQdvbWljcm9uA3Jobwd1bmkwM0MyBXNpZ21hA3RhdQd1cHNpbG9uA3BoaQNjaGkDcHNpBW9tZWdh\nDGlvdGFkaWVyZXNpcw91cHNpbG9uZGllcmVzaXMMb21pY3JvbnRvbm9zDHVwc2lsb250b25vcwpv\nbWVnYXRvbm9zBnRoZXRhMQRwaGkxBm9tZWdhMQd1bmkwNDAwCWFmaWkxMDAyMwlhZmlpMTAwNTEJ\nYWZpaTEwMDUyCWFmaWkxMDA1MwlhZmlpMTAwNTQJYWZpaTEwMDU1CWFmaWkxMDA1NglhZmlpMTAw\nNTcJYWZpaTEwMDU4CWFmaWkxMDA1OQlhZmlpMTAwNjAJYWZpaTEwMDYxB3VuaTA0MEQJYWZpaTEw\nMDYyCWFmaWkxMDE0NQlhZmlpMTAwMTcJYWZpaTEwMDE4CWFmaWkxMDAxOQlhZmlpMTAwMjAJYWZp\naTEwMDIxCWFmaWkxMDAyMglhZmlpMTAwMjQJYWZpaTEwMDI1CWFmaWkxMDAyNglhZmlpMTAwMjcJ\nYWZpaTEwMDI4CWFmaWkxMDAyOQlhZmlpMTAwMzAJYWZpaTEwMDMxCWFmaWkxMDAzMglhZmlpMTAw\nMzMJYWZpaTEwMDM0CWFmaWkxMDAzNQlhZmlpMTAwMzYJYWZpaTEwMDM3CWFmaWkxMDAzOAlhZmlp\nMTAwMzkJYWZpaTEwMDQwCWFmaWkxMDA0MQlhZmlpMTAwNDIJYWZpaTEwMDQzCWFmaWkxMDA0NAlh\nZmlpMTAwNDUJYWZpaTEwMDQ2CWFmaWkxMDA0NwlhZmlpMTAwNDgJYWZpaTEwMDQ5CWFmaWkxMDA2\nNQlhZmlpMTAwNjYJYWZpaTEwMDY3CWFmaWkxMDA2OAlhZmlpMTAwNjkJYWZpaTEwMDcwCWFmaWkx\nMDA3MglhZmlpMTAwNzMJYWZpaTEwMDc0CWFmaWkxMDA3NQlhZmlpMTAwNzYJYWZpaTEwMDc3CWFm\naWkxMDA3OAlhZmlpMTAwNzkJYWZpaTEwMDgwCWFmaWkxMDA4MQlhZmlpMTAwODIJYWZpaTEwMDgz\nCWFmaWkxMDA4NAlhZmlpMTAwODUJYWZpaTEwMDg2CWFmaWkxMDA4NwlhZmlpMTAwODgJYWZpaTEw\nMDg5CWFmaWkxMDA5MAlhZmlpMTAwOTEJYWZpaTEwMDkyCWFmaWkxMDA5MwlhZmlpMTAwOTQJYWZp\naTEwMDk1CWFmaWkxMDA5NglhZmlpMTAwOTcHdW5pMDQ1MAlhZmlpMTAwNzEJYWZpaTEwMDk5CWFm\naWkxMDEwMAlhZmlpMTAxMDEJYWZpaTEwMTAyCWFmaWkxMDEwMwlhZmlpMTAxMDQJYWZpaTEwMTA1\nCWFmaWkxMDEwNglhZmlpMTAxMDcJYWZpaTEwMTA4CWFmaWkxMDEwOQd1bmkwNDVECWFmaWkxMDEx\nMAlhZmlpMTAxOTMHdW5pMDQ2Mgd1bmkwNDYzB3VuaTA0NzIHdW5pMDQ3Mwd1bmkwNDc0B3VuaTA0\nNzUJYWZpaTEwMDUwCWFmaWkxMDA5OAd1bmkwNDkyB3VuaTA0OTMHdW5pMDQ5Ngd1bmkwNDk3B3Vu\naTA0OUEHdW5pMDQ5Qgd1bmkwNDlDB3VuaTA0OUQHdW5pMDRBMgd1bmkwNEEzB3VuaTA0QUUHdW5p\nMDRBRgd1bmkwNEIwB3VuaTA0QjEHdW5pMDRCMgd1bmkwNEIzB3VuaTA0QjYHdW5pMDRCNwd1bmkw\nNEI4B3VuaTA0QjkHdW5pMDRCQQd1bmkwNEJCB3VuaTA0QzAHdW5pMDRDRgd1bmkwNEQ4CWFmaWkx\nMDg0Ngd1bmkwNEUyB3VuaTA0RTMHdW5pMDRFOAd1bmkwNEU5B3VuaTA0RUUHdW5pMDRFRgZXZ3Jh\ndmUGd2dyYXZlBldhY3V0ZQZ3YWN1dGUJV2RpZXJlc2lzCXdkaWVyZXNpcwZZZ3JhdmUGeWdyYXZl\nB3VuaTIwMDIJYWZpaTAwMjA4DXVuZGVyc2NvcmVkYmwNcXVvdGVyZXZlcnNlZAZtaW51dGUGc2Vj\nb25kCWV4Y2xhbWRibAd1bmkyMDNFDHplcm9zdXBlcmlvcgxmb3Vyc3VwZXJpb3IMZml2ZXN1cGVy\naW9yC3NpeHN1cGVyaW9yDXNldmVuc3VwZXJpb3INZWlnaHRzdXBlcmlvcgxuaW5lc3VwZXJpb3IJ\nbnN1cGVyaW9yBGxpcmEGcGVzZXRhBEV1cm8JYWZpaTYxMjQ4CElmcmFrdHVyCWFmaWk2MTI4OQlh\nZmlpNjEzNTILd2VpZXJzdHJhc3MIUmZyYWt0dXIHdW5pMjExRQd1bmkyMTI2CWVzdGltYXRlZAVh\nbGVwaAlvbmVlaWdodGgMdGhyZWVlaWdodGhzC2ZpdmVlaWdodGhzDHNldmVuZWlnaHRocwlhcnJv\nd2xlZnQHYXJyb3d1cAphcnJvd3JpZ2h0CWFycm93ZG93bglhcnJvd2JvdGgJYXJyb3d1cGRuB3Vu\naTIxOTYHdW5pMjE5Nwd1bmkyMTk4B3VuaTIxOTkMYXJyb3d1cGRuYnNlDmNhcnJpYWdlcmV0dXJu\nDGFycm93ZGJsbGVmdAphcnJvd2RibHVwDWFycm93ZGJscmlnaHQMYXJyb3dkYmxkb3duDGFycm93\nZGJsYm90aAl1bml2ZXJzYWwLZXhpc3RlbnRpYWwIZW1wdHlzZXQIZ3JhZGllbnQHZWxlbWVudApu\nb3RlbGVtZW50CHN1Y2h0aGF0B3VuaTIyMTMHdW5pMjIxNQxhc3Rlcmlza21hdGgHdW5pMjIxOQxw\ncm9wb3J0aW9uYWwKb3J0aG9nb25hbAVhbmdsZQd1bmkyMjIzB3VuaTIyMjUHdW5pMjIyNwd1bmky\nMjI4DGludGVyc2VjdGlvbgV1bmlvbgd1bmkyMjJFCXRoZXJlZm9yZQd1bmkyMjM1B3VuaTIyMzcJ\nY29uZ3J1ZW50C2VxdWl2YWxlbmNlDHByb3BlcnN1YnNldA5wcm9wZXJzdXBlcnNldAlub3RzdWJz\nZXQHdW5pMjI4NQxyZWZsZXhzdWJzZXQOcmVmbGV4c3VwZXJzZXQHdW5pMjI5NQ5jaXJjbGVtdWx0\naXBseQ1wZXJwZW5kaWN1bGFyBWhvdXNlDXJldmxvZ2ljYWxub3QKaW50ZWdyYWx0cAppbnRlZ3Jh\nbGJ0CWFuZ2xlbGVmdAphbmdsZXJpZ2h0CFNGMTAwMDAwCFNGMTEwMDAwCFNGMDEwMDAwCFNGMDMw\nMDAwCFNGMDIwMDAwCFNGMDQwMDAwCFNGMDgwMDAwCFNGMDkwMDAwCFNGMDYwMDAwCFNGMDcwMDAw\nCFNGMDUwMDAwCFNGNDMwMDAwCFNGMjQwMDAwCFNGNTEwMDAwCFNGNTIwMDAwCFNGMzkwMDAwCFNG\nMjIwMDAwCFNGMjEwMDAwCFNGMjUwMDAwCFNGNTAwMDAwCFNGNDkwMDAwCFNGMzgwMDAwCFNGMjgw\nMDAwCFNGMjcwMDAwCFNGMjYwMDAwCFNGMzYwMDAwCFNGMzcwMDAwCFNGNDIwMDAwCFNGMTkwMDAw\nCFNGMjAwMDAwCFNGMjMwMDAwCFNGNDcwMDAwCFNGNDgwMDAwCFNGNDEwMDAwCFNGNDUwMDAwCFNG\nNDYwMDAwCFNGNDAwMDAwCFNGNTQwMDAwCFNGNTMwMDAwCFNGNDQwMDAwB3VwYmxvY2sHZG5ibG9j\nawVibG9jawdsZmJsb2NrB3J0YmxvY2sHbHRzaGFkZQVzaGFkZQdka3NoYWRlCWZpbGxlZGJveAd1\nbmkyNUExBkgxODU0MwZIMTg1NTEKZmlsbGVkcmVjdAd0cmlhZ3VwB3RyaWFncnQHdHJpYWdkbgd0\ncmlhZ2xmBmNpcmNsZQZIMTg1MzMJaW52YnVsbGV0CWludmNpcmNsZQpvcGVuYnVsbGV0CXNtaWxl\nZmFjZQxpbnZzbWlsZWZhY2UDc3VuBmZlbWFsZQRtYWxlBXNwYWRlBGNsdWIFaGVhcnQHZGlhbW9u\nZAttdXNpY2Fsbm90ZQ5tdXNpY2Fsbm90ZWRibAJmZgNmZmkDZmZsAAAAAAAB//8AAgABAAAADAAA\nABAAAAACAAAABAAAAAIAAAABAAAACgBsAKAAAkRGTFQADmxhdG4AGgAEAAAAAP//AAEAAAAoAAZB\nWkUgADJDUlQgADJERVUgAChNT0wgADxST00gADxUUksgADIAAP//AAIAAAABAAD//wACAAAAAgAA\n//8AAwAAAAEAAwAEYWFsdAAabGlnYQAgbGlnYQAobG9jbAAuAAAAAQAAAAAAAgACAAMAAAABAAMA\nAAABAAEABAAKABIAGgAiAAEAAAABACAAAQAAAAEAJgAEAAAAAQAsAAQAAAABAEYAAQAGACkAAQAC\nASABIQABAAYAKQABAAIBIAEhAAEAHAABAAgAAgAGAA4C9wADAEkATAL1AAIATAABAAEASQABABoA\nAQAIAAIABgAMAvQAAgBJAvYAAgBPAAEAAQBJAAEAAAAKAFQAYgACREZMVAAObGF0bgAaAAQAAAAA\n//8AAQAAACgABkFaRSAAKENSVCAAKERFVSAAKE1PTCAAKFJPTSAAKFRSSyAAKAAA//8AAQAAAAFr\nZXJuAAgAAAABAAAAAQAEAAIAAAABAAgAAT3GAAQAAADmAdYB4AH+AlgCXgJwAvIDGAOaA6gErgUU\nBaoGDAamB3AH9ggYCD4IXAlKCgAKKgq0Cz4MTAxuDSwNtg90D9oRDBJqEvAUEhSYFPIVdBWuFdwW\nRhZ8FuIXhBgaGDQYZhiMGUIZZBmGGbAaEho4Gk4bSBumHEQcbhz8HaYd9B5+HsQfHh9sH5IfwCA6\nH5IggCDyIWghfiGEIZIhhCGEIbwh5iHsIfIh7CIQIjIifCKOIo4VdCKOIpwiriL8IwojECMeIzAj\nNhxEI3gjhiOkI9Yj3CPiJDgkPiRkJM4lDCUeJSQlSiWAJYYllCX6Jnwm1ibkJv4nECciJygnLic0\nJ34nkCfiKAQoGigwKG4osCi2KNgo5ikQKSIpdCmOKgQqPip0KqIqtCryKyArJit8K4YrwCvGLBgs\nOiyALNItIC1GLWgtii2sLbIuBC4WLkAuWi5gLnYuQC6QLy4vTC9qL7AwSjC8MPYxNDHmMewyLjKA\nMsYzBDNiM6w0ajUkNV4vLjWcNbo16DYqNkA2XjaANro22Db2Nxw3IjdIN243pDfWOCw4cjioOMo4\n6DkGOSQ5RjloOX45nDnCOfQ6kjq0OyY7vDwWPFw89j0YPXI9mAACAjcABgI7AAMABwAk/74ANwAF\nADkACwA6ABUAO//8ADz//gA9AAoAFgAk//UALf/2ADcADwA5AAkAOgAPADsABgA8AAcAPQARAEUA\nDwBJAAoASgAJAEsACwBMAAsATQATAE4ADwBPAAsAUwAPAFz//ACI//0CNgAnAvUAGQL2ABkAAQAR\n/+YABAAQAAsCMgAcAjf/3gI7/9sAIAAk//8AJgAgACoAIAAtACQAMgAhADQAIAA2ABUAN//HADn/\n5AA6//UAO//dADz/wAA9//MARAANAEkAAQBKABcAVgAMAFcABgBZ//wAWgAIAFv/4wBc//sAXf/u\nAIP//wCG//8Ah///AIgACACmAA0Bw//HAcT/7QHj/9gB5P/3AAkACv/bAA3/6AAQAAsAdAAMAHUA\nBQB7/+cCMgAcAjf/3gI7/9sAIAASABcAJQAnACcAKgAoACkAKQArACsALgAsADEALQADAC4AKwAv\nACgAMAAvADEALgA1ACgANwAdADgAJwA5ABUAOgAfADsAEAA8ABIAPQAeAEUAHABJABgASgAWAEsA\nGABMABgATQAZAE4AHABPABgAVwAYAFwACQL1ACoC9gAqAAMACgAKAjcABgI7AAMAQQAK/8UADP/8\nAA8AEQAQAAYAEQARACQADgAl//MAJv/eACr/2wAt//kAMv/cADT/2gA2/+4AN/+vADj/3QA5/8AA\nOv/PADsAEAA8/6oAPQAMAEAAAgBE//4ARf//AEb/8wBH//IASP/1AEr/7wBS/+8AVP/2AFb/+gBX\n/+4AWP/zAFn/2gBa/+cAXP/dAF0AEQBg//EAbf/TAIn/3gCY/9wAm//dAJz/3QCd/90Anv/dAJ//\nqgCp//MAvv/zAL//3QEk/60BJv+wAWj/3AFv/9wBc/+wAXT/qgF1/8oBd//QAYL/1gGM/9kBkv/e\nAZT/9AGV/+0BnP/0Ajf/wgI7/74CRP/WABkAJP/fACb/9AAt//4AMv/0ADb//QA3//MAOf/ZADr/\n5wA8/8wAPf/zAFz/+gCD/98AhP/fAIX/3wCG/98Ah//fAIj/6wCU//QAlf/0AJb/9ACY//QAmv/4\nART//AGK/+ICeQAFACUACgAHAA8ABAAQABsAEQAEAB0AFAAeABQAJP/jACb/+wAq//kAKwAEAC0A\nBwAuAAEAMv/6ADYAAwA3//wAOf/kADr/7gA8/9QAPf/2AEQAAgBIAAgAUgABAFb//wBcAAcAg//j\nAIb/4wCH/+MAiP/vAJX/+gCY//oApgACAKgAAgC4AAEBFAACARUABwI3AAUCOwACABgAEAAmACT/\n2AAtAAEAN//vADn/3QA6/+oAO//eADz/yAA9/+0ARAACAEgACgBSAAQAXP//AIL/2ACD/9gAhP/Y\nAIX/2ACG/9gAh//YAIj/5QCmAAIAqAADALgABAEVAAoAJgAQAAsAJAADACb/9QAy//QANv/+ADn/\n+gA7AAUAPP/4AD0AAQBEAAIARQABAEb/+gBH//wASv/2AEv//gBM//4ATf/6AE4AAQBP//4AUv/5\nAFT//QBX//gAWf/nAFr/8gBc/+UAXQAFAJX/9ACY//QAzv/1AWj/9AFv//QBdf/gAYL/3wGD//YB\njP/lAZP/9AI3//0CO//5ADIACgAVAA//twAQAAkAEf+3ACT/wQAm/+4AKv/vAC3/5gAy//AANv/9\nADcAEgA6ABIAPAAKAD0ACgBE//AASP/4AEv/+ABM//gATf/3AE//+ABS//IAVf/lAFj/5wBc/+0A\ngv/BAIP/wQCE/8EAhf/BAIb/wQCH/8EAiP/NAJj/8ACj//AApv/wAKf/8ACo/+8Aq//4ALX/8gC4\n//IAuv/xALz/5wC+/+cAxP/BAMb/xgET//IBFP/2ARX/+AEx/+cCNwAPAjsADAAhAAr/+wAPAAoA\nEAAdABEACgAdABwAHgAcACT/9wArAAQANgABADf/7wA5/9wAOv/sADv/+QA8/8cAPf/5AEQABwBI\nAAwAUgADAFr//wBc//wAgv/3AIP/9wCE//cAhf/3AIb/9wCH//cAiAADAKYABwCoAAcAuAADARUA\nCQI3//cCO//0AAgAJP/4ACwADAA3//4APP/2AEQACgCIAAQApgAKAKgACgAJACT/+AAt//kAN//+\nADn/+AA6//4AO//6ADz/9gA9AAUAiAAEAAcAJP/gAC4AAwA8//QAXP/+AIb/4ACH/+AAiP/qADsA\nCv/7AAwABwAQ/9IAJAAUACX/+AAm/8kAJ//7ACj/+gAp//wAKv/KACv//wAsAAEALf/wAC//+QAx\n//8AMv/LADP/+wA0/8oANf/5ADb/4QA3AAwAOP/uADkABgA6AAwAOwAWADwABAA9ABIAQAAKAET/\n/ABI/+YATf//AFL/3wBY/+kAWv/VAFz/vgBg//AAiAAgAJX/ywCY/8sApv/8AKf//ACo//wAtf/f\nALj/3wC+/+kAx//4ART/1gEV/+UBb//LAXX/swF7/+YBfP//AY7/3QGU/+cBmP/WAZv/3QGc/+cC\nN//zAjv/7wAtAAr/dwAM/9wAEP/zACQACAAm/+YAKv/iADD/9QAy/+MANv/9ADf/oAA4/+gAOf+l\nADr/uwA8/48APQAGAED/3wBEAAcATP/1AE3/8wBS//oAWP/4AFz/yABg/88AgwAIAIYACACHAAgA\niAAVAIn/5QCU/+MAlf/jAJb/4wCX/+MAmP/jAJ7/6ACf/48ApgAHALj/+gC+//gAv//IAM7/5gEU\n/+0BJP+gASb/oAI3/3QCO/9xAAoAJP/8ADEADgA3AAIAOgACADz/+gA9AAkATQAJAFwAAwCIAAgB\nhAAVACIADwANABEADQAk//oAJgAGACoABQAyAAYAPP/4AD0ABwBEAAwASAAQAE0ABwBSAAgAWAAJ\nAFwAAQCD//oAhv/6AIf/+gCIAAYAiQAGAJUABgCYAAYAowAMAKYADACnAAwAqAAMAKsAEAC1AAgA\nuAAIALoADAC+AAkBYf/6AXwAFgGEABMBmP/6ACIAD//0ABAAKAAR//QAHQAaAB4AGgAk/9sAKv//\nAC0AAwAzAAEANv//ADf/6wA5/9wAOv/pADv/3QA8/8QAPf/sAFn//QBaAAIAW//3AFz//QBd//4A\ng//bAIb/2wCH/9sAiP/jARQACAFh/9sBZv/sAWv/6gFz/+sBdP/EAXb/3QF3//cBiv/pAEMACgAT\nAA//pQAR/6UAJP+8ACX/7wAm//oAJ//yACj/8QAp//MAKv/7ACv/9gAs//kALf/TAC7/8wAv//AA\nMP/3ADH/9gAy//sAM//yADT/+gA1//AANv/+ADcABgA4/+8AOf/tADr/9gA7/9wAPP/hAD3//wBE\n//kASP/4AEkADQBL//QATP/0AE3/8gBP//QAUv/yAFcADQBaABAAXAANAIP/vACE/7wAhv+8AIf/\nvACI/8kAo//5AKb/+QCn//kAqP/4AKv/+AC1//IAuP/yALr/8QDE/7wAxv/BARQAAgEV//gBYf+8\nAW//+wF8AAEBgP/4AYT//wGO//ABm//wAZ3/3gI3ABECOwANAAgADAAbABAAKQA1AAYAOAACAEAA\nIQBYAA4AYAAQAL4ADgAvAAoACQAMABkAEAAMACQAAgAl//4AJv/6ACj//wApAAEAKv/4ACsABAAs\nAAcALf/yAC4AAQAv//8AMAAFADEABAAy//kANP/4ADX//wA2AAIAN///ADj/+wA5/+UAOv/uADsA\nBAA8/9oAQAAeAEgAAQBS//sAXAAEAGAADgCIAA4Aif/6AJX/+QCY//kAnv/7AJ//2gCoAAEAqwAB\nALX/+wC4//sAvwAEARQAAQEk//0BJv//AjcABQI7AAIAIgAQACYAJP/sACb//wAq//4ALQAIADL/\n/wA2AAUAN//6ADn/4QA6/+4APP/UAEQABgBGAAgASAALAEsABABMAAQATwAEAFIABQBUAAsAVwAC\nAFn//wBaAAMAg//sAIb/7ACH/+wAiP/4AKYABgCoAAYAqwALALgABQEUAAcBFQALAjf//AI7//kA\nbwAKAAYADAATAA//vQAQ/9AAEf+9AB3/zQAe/80AJP+pACX/9gAm/+wAJ//5ACj/+AAp//oAKv/p\nACv//QAt/6kALv/6AC//9wAw//4AMf/9ADL/6gAz//kANP/oADX/9wA2AAMANwAYADj/+QA5ABIA\nOgAYADsADgA8ABAAPQAQAEAAFgBE/7YARv+4AEj/uQBK/7QAS//+AEz//gBN//0AT//+AFL/sgBV\n/7gAVv+1AFj/ugBZ/60AWv+yAFz/sABg//sAbf+ZAIL/qQCD/6kAhP+pAIX/qQCG/6kAh/+pAIj/\ntACU/+oAlf/qAJb/6gCX/+oAmP/qAJr/6ACj/8UApv/iAKj/tgCp/7gAq/+8AK//8QC1/7UAtv/Y\nALj/0wC6/7kAvP/oAL7/6AC/AAMAxP+pAMb/qgDH/7YAyf+4ANv/uQES/+oBE//IART/9QEV/7gB\nF//lAR3/wQEh/7UBMf/oATP/6AFh/6kBa/+4AW//6gFzABgBdAAQAXX/zgF7/70BfP/RAYD/vgGE\n/8ABhf/9AY7/sAGQ/60Bkv+hAZT/ugGb/7MBnP/sAZ3/rwI3//4CO//7AkT/nAAZAA//+wAR//sA\nJP/eADYABQA3//0AOf/3ADr//QA7//MAPP/1AD3/+wBN//wAUAACAFEAAQBTAAMAVQABAFn//ABb\n//kAXP//AF3/9ACD/94AhP/eAIX/3gCG/94Ah//eAIj/6gBMAAwADwAP/7oAEP/rABH/ugAd/+UA\nHv/lACT/ugAm/94AKP/0ACr/2wAr//oALP/8AC3/wgAv//QAMv/cADX/9AA2/+oANwAUADj/9gA8\nAAwAQAASAET/0QBG/9AASP/WAEr/zQBL//sATP/7AE3/+QBP//sAUv/QAFX/3QBY/94AXP/3AGD/\n+ABt/7cAgv+6AIP/ugCE/7oAhf+6AIb/ugCH/7oAiP/GAJT/3ACV/9wAlv/cAJf/3ACY/9wAmv/g\nAKP/0QCm/94AqP/RAKv/1gCv/9sAtf/QALb/0AC4/9AAuv/TALz/4AC+/+AAv//5AMT/ugDG/7oA\nx//TANH/0gDb/9cA3f/WARL/3AET/9ABFP/mARX/1gEX/90BG//2AR3/zgEx/+ABM//gAkT/uQBX\nAAoAFgAMABMAD//UABD//QAR/9QAHf/5AB7/+QAk/8cAJf/3ACb/6QAn//kAKP/4ACn/+wAq/+oA\nK//+AC3/1QAu//sAL//4ADD//wAx//4AMv/rADP/+gA1//gANv/zADcAGAA4//oAOQASADoAGAA8\nABAAPQAQAEAAGABE/+MARv/kAEj/5gBK/+EAS///AEz//wBN//0AT///AFL/4ABV/+cAWP/oAGAA\nBQBt/8gAgv/HAIP/xwCE/8cAhf/HAIb/xwCH/8cAiP/UAJT/6wCV/+sAlv/rAJf/6wCY/+sAmv/w\nAKP/4wCm/+MAqP/kAKv/5gCv/+UAtf/gALb/4AC4/+AAuv/kALz/6gC+/+oAvwACAMT/xwDG/8wA\nx//jANH/4gDb/+cA3f/mARL/6wET/+ABFP/1ARX/5gEX/+cBG//6AR3/4wEx/+oBM//qAjcAEgI7\nAA4CRP/KACEACgABAAwADgAQ/+QAJAAQACb/3wAy/90ANP/cADcAEwA6ABMAPAALAEAAEQBE//kA\nSP/nAFL/3wBY/+gAXP/bAGD/+wCIABwAmP/dAKj/+gCr/+cAuP/fAL7/6AEU/+cBe//mAXz//wGA\n/+gBjv/dAZP/2AGY/9UBm//dAjf/+QI7//YASAAKAAQADAARAA//sgAQ/84AEf+yAB3/1QAe/9UA\nJP+sACb/ywAq/8sALf+tADL/zAA0/8oANv/jADcAFgA5ABAAOgAWADsADAA9AA4AQAAUAET/vgBI\n/8EASv+3AEz//ABS/7oAU//SAFT/vgBY/9AAWf/lAGD/+QBt/6EAgv+sAIP/rACE/6wAhf+sAIb/\nrACH/6wAiP+4AJT/zACV/8wAlv/MAJf/zACY/8wAmv/QAKP/vgCm/+AAqP++AKv/wQCv/9YAtf+6\nALj/0QC6/8EAvP/SAL7/0gDE/6wAxv+sAMf/vgDb/8EBE/+6ART/1AEX/9ABM//SAWH/rAFo/8wB\nb//MAXMAFgF1/7gBj//KAZv/uAI7//wCRP+kAnn/0gAhAAoAEwAMABcADwAVABD/8wARABUAHQAP\nAB4ADwAkAAgAKAABACwACQAy/+8AOP/6ADoADgA8AAYAPQAGAEAAIQBEAAcATP/2AFL/+gBZ//QA\nWv/5AFz/+gBgABAAiAAUAJX/7wCmAAcAqAAHALj/+gEU//kBhAAMAY7/+AI3AA0COwAJABYAJP/4\nAC3//QA3ABIAOQAMADoAEgA7AAgAPAAKAD0AGwBFABgASQARAEoADwBLABQATAAUAE0AFwBOABgA\nTwAUAFMAGQBcAAIAiAADAjYALAL1AB8C9gAfACAAJAAbACUAKAAmACIAJwAqACoAHwArAC8ALAAx\nAC0ADgAuACwALwApADAAMAAxAC8AMgAgADMAKwA0AB4ANQApADYAKAA3/+wAOAAgADoADwA7AB0A\nPP/rAD0AIQBHADUASQAuAEoALwBMADUATQAzAE8ANQCrADkC9QApAvYAKQAOAA8AAwARAAMASv/+\nAE3//ABW//4AV//9AFn/7QBa//gAWwANAFz/7QBdAAsAof/+AjIAJAI3//MACwAN//wAD//5ABH/\n+QAdAA0AHgANAE3//QBZ/+sAWv/6AFz/6wBd//sCMgAvABoABP/kAA0AAgAPAAEAEAAQABEAAQAd\nAA4AHgAOACL/2QAtAAgARAAFAEYAAQBIAAcAS//9AE3/+wBP//0AVgAEAFcAAQBY//8AXP/zAKYA\nBQCoAAYAvv//ARUABgIyAB4CN//5Ajv/9gANAAwADwAP//8AEf//AEAAGABEAAMASv//AE3//wBZ\n//0AWgABAF3/+wBgAAkApgADAjIAIgAZAAT/6AAN//8AD//8ABAAHgAR//wAHQAQAB4AEAAi/9AA\nRAAFAEUABQBJ//wASgABAEsAAQBN//0ATgAFAE8AAQBWAAQAV//8AFn/7gBa//kAW//pAFz/7gCm\nAAUCMgAvAjf/9AAoAAT/5AAMAA0ADQAOAA//7QAR/+0AHQAIAB4ACAAi//wAQAAQAEb/+ABH//kA\nSP/9AEkAFABK//YATP/7AE3/+QBP//sAUv/2AFb//wBXABQAWP//AFoAGABcABQAXQAIAGD//wCr\n//0Ar//7ALX/9gC4//YAuv/4AL7//wC/ABYAxwACARX//AEX//0BMf//AjIAEQI3AAcCOwADAlz/\n9gAlAAT/4wAMAAkAD//5ABAACwAR//kAHQANAB4ADQAi/98AQAASAET//gBH//8ASAACAEn/+QBK\n//kAS//4AE3/+QBO//wAT//4AFL/+gBT//0AVf/6AFb/+gBX//sAWf/3AFr//ABc//oAXf/1AGAA\nAwCm//4Ap//+AKj//gCrAAIAtf/6ALj/+gIyABwCN//2Ajv/8gAGAA3/+gBZ/+cAXP/oAL//6AIy\nACACN//vAAwADAANAA0AAwA3//wAQAAWAEr//ABN//0AWf/7AF3/+QBgAAcCMgAgAjf/+QI7//YA\nCQAMAA4ADQAEAEAAFwBc//8AYAAIALX//wC4//8A2wAHAjIAIQAtAAT/6QANAAoADwACABD/5gAR\nAAIAHf//AB7//wAi//sARP/9AEUAAgBG/+oAR//tAEj/8ABJABQASv/nAEv//wBM//8ATf/+AE4A\nAgBP//8AUAACAFL/6gBTAAMAVP/tAFb/9gBXABQAWP//AFkAEwBaABgAWwAYAFwAFABdABUAo//9\nAKb//QCn//0AqP/+AKv/8AC1/+oAuP/qAL7//wDH//oA2//xAjL/+AI3//kCO//1AAgAD//9ABH/\n/QBK//wATf/9AFn/+wBc//0AXf/5AjIAIAAIAEr//gBN//oAUwABAFn/7ABa//cAXP/sAF3/+wIy\nACMACgA3/7IASv/+AE3/+gBTAAEAWf/qAFr/9wBc/+oAXf/7AjIAIwI3//EAGAAN//cAD//2ABH/\n9gAdAAoAHgAKADf/rgBK//0ATf/6AFf/+ABZ/+gAWv/zAFv/5wBc/+gAXf/4AYAABgGC/+QBiv/m\nAYz/5wGP/90Bk//6AZQAAgGW/9cCMgAtAjf/7gAJAA3//ABN//0AV//7AFn/6wBa//kAXP/qAF3/\n+wC//+oCMgAvAAUADAAPAEAAGABGAAEAYAAJAjIAIgA+AAT/5QAKAAMADQARAA//xAAQ/9sAEf/E\nAB3/9wAe//cAIv/9AEQABQBF//8ASAAEAEkAFQBK//0AS//7AEz/+wBN//oATv//AE//+wBQ//8A\nUf/9AFL//wBUAAEAVf/9AFYAAgBXABUAWQAUAFoAGQBbABAAXAAWAF0ACACiAAUAowAFAKQABQCm\nAAUApwAFAKgABACqAAQAqwAEAKwABAC0//8Atf//ALb//wC4//8Auv/+AL8AFgDHAAYA2wAGAQb/\n/QEK//0BE///ARUABAEX//0BG//9ASUAFQEnABUBPAAIAT4ACAFAAAgCMv/oAjcACQI7AAUAFwAE\n/+UADwAEABAADwARAAQAHQANAB4ADQAi/9YARAAFAEn//wBK//wATgABAFMAAQBWAAUAV///AFn/\n7wBa//cAXP/vAF0ABgCmAAUAqwAFAjIAIQI3//ECO//uACcABP/nAA0ACgAPAAMAEP/9ABEAAwAd\nAA8AHgAPACL/9gBEAAUARv/2AEf/+QBI//wASv/zAEv//gBM//4ATf/5AFL/9gBTAAEAVP/5AFYA\nAQBXAA4AWP/+AFkADQBaABIAXAAOAF0ACwCjAAUApgAFAKcABQCoAAUAq//8ALX/9gC4//YAvv/+\nAMcAAwDb//0CMgAOAjcAAQI7//4ACgAP//0AEf/9AEr//QBN//0AWf/7AFv/+wBc//wAXf/5AjIA\nIAI3//oAIwANAA4AD//LABD//QAR/8sAHf/6AB7/+gBE//EARv/qAEj/7wBK/+kATP/7AE3/+QBP\n//sAUv/pAFX//QBW/+4AWP//AFwAFACi//EAo//xAKT/8QCl//EApv/xAKf/8QCo//EAqv/vAKv/\n7wCs/+8AtP/pALX/6QC4/+kAuv/tAL7//wEV/+8CMgALACoABP/oAAoABwANABQAD//eABAACQAR\n/94AHQAHAB4ABwAi//8ARP/4AEb/9wBI//oASQAYAEr/9ABM//8ATf/9AE///wBS//MAUwACAFb/\n9gBXABgAWAACAFwAGABdAAwAov/4AKP/+ACk//gApf/4AKb/+ACn//gAqP/4AKr/+gCr//oArP/6\nALT/8wC1//MAuP/zALr/+QC+AAICMgAYAjcACQI7AAUAEwAE/+IADQAHAA//+wAQ/+QAEf/7AB3/\n/wAe//8AIv/5AET/9QBG/+cASP/tAFL/5wBU/+oAXAASAKv/7QC4/+cCMv/xAjf/9wI7//MAIgAE\n/+UADQAMAA//zAAQ//4AEf/MAB3/+wAe//sAIv/8AET/8ABG/+oASP/wAEr/5wBN//oAT//8AFL/\n6gBW/+4Aov/wAKP/8ACk//AApf/wAKb/8ACn//AAqP/wAKr/8ACr//AArP/wALT/6gC1/+oAuP/q\nALr/6wDP/+oBHf/uAjIACQI3AAIAEQAE/+MADQAMAA8AAgAQ//IAEQACAB0ADQAeAA0ARAAGAEj/\n/QBM//oAUv/2AFj/+ABcAAoApgAGALj/9gC+//gCMv/zABYAJP/uAC3/7wA3//sAOf/3ADoABAA7\n//gAPP/zAD0ACwBFAA0ASQAFAEoABgBLAAkATAAJAE0ABgBOAA0ATwAJAFMADQBc//kAiP/6AjYA\nHAL1ABMC9gATABMBWP/eAVv/vgFc/70BYf/eAWv/7gFz/6gBdP+sAYz/6AGT//UBsf/gAbz/+wHD\n/6kBxP/gAcj/7QHQ/+kB3P/oAeP/8gHk/+YB6P/pAAkAJP/JADf/lgA5/7IAOv/EADz/lACD/8kA\nhv/JAIf/yQCI/9YACwAPABEAEQARACb/3gAq/9sAMv/cADT/2gA3/68AOP/dADn/wAA6/88APP+q\nAB4ADwARABAABgARABEAJv/eACr/2wAy/9wANP/aADf/rwA4/90AOf/AADr/zwA8/6oARP/+AEX/\n/wBG//MAR//yAEj/9QBK/+8AUv/vAFT/9gBX/+4AWP/zAFn/2gBa/+cAXP/dAG3/0wEm/7ACN//C\nAjv/vgJE/9YAEQAPABEAEQARACb/3gAq/9sAMv/cADT/2gA3/68AOP/dADn/wAA6/88APP+qAFn/\n2gBa/+cAn/+qAL//3QEk/60BJv+wABwADwARABAABgARABEAJv/eACr/2wAy/9wANP/aADf/rwA4\n/90AOf/AADr/zwA8/6QARP/+AEX//wBG//MAR//yAEr/7wBS/+8AVP/2AFf/7gBY//MAWf/aAFr/\n5wBc/90Abf/TAjf/wgI7/74CRP/WAB0ADwARABAABgARABEAJv/eACr/2wAy/9wANP/aADf/rwA4\n/+AAOf/AADr/zwA8/6oARP//AEX//wBG//MAR//1AEj/+QBK/+8AUv/vAFT/9gBX/+4AWP/zAFn/\n2gBa/+sAXP/dAG3/0wI3/8ICO/++AkT/1gAFADcAAwA5//4AOgADADsACQA9AAUAAQAk/+MAAwA3\n/+sAOf/cADz/xAAKAA//9AAR//QAHQAaAB4AGgAk/9sAN//rADn/3AA6/+kAPP/EAD3/7AAKAA//\n9AAR//QAHQAaAB4AGgAk/9sAN//rADn/3AA6/+kAO//dADz/xAABACT/3QABACT/3gAHAA//+wAR\n//sAJP/eAFAAAgBRAAEAUwADAFUAAQAIAA//+wAR//sAJP/eAEUAAwBQAAIAUQABAFMAAwBVAAEA\nEgAP/7IAEP/OABH/sgAd/9UAHv/VAC3/rQCD/6wAhP+sAIb/rACj/74Aq//BALX/ugC8/9IAxP+s\nAMb/rADb/8EBE/+6ASH/vQAEAEgACABOAAIAV//7AFr/+wADAFn/7QBa//gAXP/tAAQAVQABAFn/\n7QBa//gAXP/uABMABP/oAA///AAQAB4AEf/8AB0AEAAeABAAIv/QAEUABQBGAAUARwAHAEoAAQBP\nAAEAVAAIAFf//ABZ/+4AWv/5AFz/7gI3//QCO//wAAMAWf/uAFr/+QBc/+4AAQBZ//sAAwBZ/+gA\nWv/zAFz/6AAEAFn/6ABa//MAXP/oATz/+AABAFf/+AAQAA3/9wAP//YAEf/2AB0ACgAeAAoAN//P\nAEr//QBN//oAV//4AFn/6ABa//MAW//nAFz/6ABd//gCMgAtAjf/7gADAA//zAAR/8wAz//qAAcA\nN/+vADz/qgBc/90An/+qAL//3QEk/60BJv+wAAwADwAQABEAEAAdAA0AHgANACb/4AA3/7AAPP+p\nAFz//ACf/6kAv//8AST/sAEm/7UAAQAy//oAAQBIAAcAFQAP/74AEf++AB3/1AAe/9QARP/TAEj/\nywBQ//MAUf/yAFL/xQBV//IAVv/PAFj/8QBcAAsAXf/6AKP/0wCr/8sAtf/FALz/9AC+//QAvwAO\nATH/9AABAT7//wAJADL/4wA3/88AOf/JADz/xwBZ/8sAn//HAL//ygEk/88BJv/PABoAD//AABH/\nwAAd/9UAHv/VAET/1ABH/8kASP/NAEkACwBK/8cAUv/GAFP/9gBW/9EAVwALAFj/8gBZAAYAXf/8\nAKP/1ACr/80Atf/GALb/1gC8//YAz//RANH/yAEj/9UBMf/2AUD//wAPAA8AHwARAB8AHQAMAB4A\nDAAy/+wAN/+pADn/rgA6/8QAPP+YAFn/1ABa/+QAn/+YAL//0gEk/6kBJv+pAAQANwAGADoABgA7\nAAsAPQAHAAEAWAAFAAkAD//EABH/xABEAAUAUP//AFH//QBWAAIAVwAVAFkAFABdAAgADQAP/8UA\nEf/FAB3/9QAe//UARAAFAEgABABM//sAUv//AFkAFACjAAUAqwAEAK//+wC1//8AAQBa//cAAwBO\nAAEAUwABAFf//wAZAIP/qACE/6gAhv+oAKP/wACr/74Atf+3ALz/4wC///8AxP+oAMb/rgDH/7sA\n2/++AQb/4QEK/+EBE//IARf/4QEb//0BHf+9ASX//gEn//kBMf/jATP/4wE8/+0BPv/tAUD/7QAg\nAA//vQAQ/9AAEf+9AB3/0gAe/9IAJP+uAC3/rwCD/64AhP+uAIb/rgCY/+oAo//FAKv/wwC1/7wA\nvP/oAL8AAwDE/64Axv+zAMf/wADb/8MBBv/lAQr/5QET/8gBF//lARv/+gEd/8EBJQABASf//gEz\n/+gBPP/xAT7/8QFA//EAFgAP/+EAEf/hAET/6gBI/+MAUP/gAFH/3gBS/9gAVf/eAFb/5gBX//4A\nWP/hAFz/8wBd//AAo//qAKv/4wC1/9gAvP/hAL//9QEbAA4BI//tATH/4QFA//wAAwAPAAIAHQAN\nAB4ADQAGAA8AAgAdAA0AHgANAEb/+ABI//0Atf/2AAQADwACAB0ADQAeAA0ASP/9AAQBgv/WAYz/\n2QGS/94Blf/xAAEBjP/MAAEBiv/oAAEBkv+DABIADwARABEAEQAy/9wAN/+vADz/qgB9/+IBaP/c\nAW//3AFz/7ABdP+qAXX/ygF3/9ABgv/WAYz/2QGS/94BlP/0AZX/7QGc//QABAAk/98BYf/fAYr/\n4gJ5AAUAFAAP/3IAEf9yACT/qAAy/+kAPAAPAFL/oAFh/6gBa/+3AW//6QF7/7sBfP/QAYD/qQGE\n/7gBif/NAYz/4QGO/54BkP+TAZT/0gGc/+sCef/OAAgAMv/0AWj/9AFv//QBdf/gAYL/3wGD//YB\njP/lAZP/9AAFADL/7wBS//oBb//vAYQADAGO//gABQAk/9sAPP/FAWH/2wFr/+oBdP/FAA8ADwAB\nABEAAQAd/+oAHv/qADL/ywBS/98Bb//LAXX/swF7/+YBfP//AY7/3QGU/+cBmP/WAZv/3QGc/+cA\nEAAPAB0AEQAdADL/6AA3/7gAPP+wAFL/+wB9/+4BaP/oAW//6AFz/7wBdP+wAXwAEQGEAA0Bjv/5\nAZv/+QI3/8kAAQGEABUACAAk//oAUgAIAWH/+gF8ABYBhAATAY4ABgGY//oBmwAGAAMBewAFAYAA\nCQGcAAUACgAk/9sAPP/EAWH/2wFm/+wBa//qAXP/6wF0/8QBdv/dAXf/9wGK/+kABABSAAUBfAAT\nAYr//AGOAAMAFAAP/6UAEf+lAB3/+QAk/7wAPP/hAFL/8gFh/7wBaP/7AWv/zAFv//sBcwAGAXT/\n4QF1//EBfAABAYD/+AGE//8Bjv/wAZv/8AGd/94Cef/jAAYAMv/rAWj/7gFv/+sBjv/+AZP/2gGW\n/94AHQAP/70AEf+9AB3/0gAe/9IAJP+uADL/6gA3ABgAPAAQAFL/vAB9/60BYf+uAWv/vQFv/+oB\ncwAYAXQAEAF1/84Be//CAXz/0QGA/8MBhP/FAYX//QGO/7oBkP+3AZL/qwGU/9MBm/+6AZz/7AGd\n/68CNwANAA4AD/+yABH/sgAk/6wAMv/MADcAFgB9/7QBYf+sAWj/zAFv/8wBcwAWAXX/uAGP/8oB\nm/+4Ann/0gANACT/xgA3/9AAPP+zAFL/9AFh/8YBa//WAXP/0AF0/7MBiv/SAY7/8gGY/+QBm//y\nAZ3/5AALADL/3QBS/98BaP/dAW//3QF7/+YBfP//AYD/6AGO/90Bk//YAZj/1QGb/90ABAAk/84A\nMv/4AWH/zgFv//gADwAPABoAEQAaAB0AIAAeACAAUgAJAH3/9gGCACABgwAJAYQAFQGFAAsBhwAb\nAY0AEAGOAAcBkv/5AZj/+wALAB4AKABSAB4BgAAlAYMAHQGFACYBhwApAYoAEgGOABwBkwAlAZUA\nHQGYAA4AAQGD//4AFQAE//YADwAUABEAFAAdABoAHgAaAFIAAwB9//ABggAaAYMAAwGEAA8BhQAF\nAYcAFQGNAAoBjgABAY8AAQGS//MBkwAeAZUAAgGaAAsBmwABAZwACwACAYL/9QGK/+8ADgBS/+gB\ne//uAXz//AGA/+8Bg//mAYT/+AGK/80Bjf//AY7/5gGQ/+ABmP/WAZv/5gGcAAUBnf/WAAEBjP/q\nABQAUgAYAXsAHQF8ACoBgAAfAYMAFwGEACcBhQAgAYcAIwGKAAwBjQAmAY4AFgGSAAcBkwAfAZQA\nFQGVABcBlv/7AZgACAGbABYBnAAVAZ0ACAAIAFL/+gF8ABgBgAACAYQAFAGO//gBmP/vAZv/+AGd\n/+8AEQAPAAIAEQACAFL/6QB9/90Be//vAXwAAQGA//ABg//pAYT//gGHAAsBjv/nAZL/2AGV/+cB\nmP/aAZv/5wGcAAEBnf/aABQADwAKABEACgBS/+0Aff/kAXv/8wF8AAcBgv/PAYQAAwGM/9IBjf/7\nAY7/6wGS/9wBk//TAZT/8AGV/+wBmP/gAZv/6wGc//ABnf/gAjf/wgATAA//zQAR/80AHf/8AB7/\n/ABS/+oAff/oAXv/8AF8//0BgP/xAYP/6gGK/9ABjv/oAZL/2QGV/+0BmP/bAZv/6AGcAAQBnf/b\nAjcABQAJAFL//wF7AAMBfAAaAYAABAGEABYBjv/9AZv//QGcAAIBnf/xAAgBgAAIAYL/5gGK/+gB\njP/pAY//3wGT//wBlAAEAZb/2QAIAFL/4AF7/+YBiv/WAY7/3gGb/94BnP/rAZ3/0AI3//IACAAE\n/+QAff/yAYL/5wGK/+kBjP/pAY//3wGT//0Blv/ZAAEBiv/VABQAD//UABH/1AAd//wAHv/8AFL/\n/gB9//UBewADAXwAEQF+//8BgAAEAYr/0QGO//wBkP/yAZL/7QGTABsBmP/sAZv//AGcAAcBnf/s\nAjcACAAEAYIAAwGK/+4BkwAHAZb//QAKAFL/2gF7/+ABfP/vAYD/4QGE/+sBhwAIAY7/2AGY/8wB\nm//YAZ3/zAAGAYL/1gGK/90BjP/cAY//0QGT/+wBlv/MAAEBjAADAAUBgv/mAYz/6QGP/98Bk//8\nAZb/2QAGAYIAAwGK/+4BjAADAY//6wGTAAcBlv/9ACcBpf/fAar/2QGs/+4BrwAJAbX/uwG8/94B\nv//ZAcL/2wHDAAYBxAAJAcX/xAHI//0B0f+fAdP/rgHV/5MB1v+eAdf/0QHY/6QB2f+3Adv/yAHc\n/5sB3f+xAd7/ugHf/5kB4P+1AeH/wAHi/5sB4//SAeT/1AHl/5cB5v/NAef/tgHo/8YB6//NAe//\nxgHw/54B9f+iAfr/nQH//+0ABwGs/5QBr//mAcP/ogHE/+UByP/iAcv/nAHr/84ABwGs/6YBr//4\nAcP/tAHE//cByP/0Acv/rgHr/+AAEQGl/98BuP/SAb//2wHC/90Bxf/RAdH/7wHS/90B1v/dAdj/\n5QHf/9gB4v/aAeP/0AHk/88B5f/KAej/yAH1/+EB///RACYBpf/fAar/8wGsAAcBrwAjAbH/pgG1\n/9YBuP/oAbz/+QG//9oBwv/bAcMAIAHF/9UByAAWAdD/3wHR/84B0v/ZAdX/tgHW/8YB1//0Adj/\n0gHZ/9kB2//rAdz/vQHd/9QB3v/cAd//wQHg/9gB4f/gAeL/xAHj//QB5f+7Aeb/7wHn/9kB6P/o\nAe//5gHw/8wB9f/KAfr/vwAcAA8ADwAQAAcAEQAPAB0ACwAeAAsAff/jAaX/4wGqABIBrP+mAbj/\n4wG8ABcBv//fAcL/4QHD/7QBxf/WAcj/0QHL/7AB2P/1AdwABwHf/+8B4v/wAeP/zwHk/9cB5f/g\nAej/3AHr/8gB+gAJAf//1AAOAaz/zAGv/+sBsf/jAbf/8QHD/+UBxP/rAcj/4QHJ//8B1//1AeP/\nzAHk/9UB6//HAfr/7wH//9wADwGs/9kBr//oAbH/3wG3//UBw//yAcT/7AHI/+0ByQAFAdf//gHj\n//YB5P/0Aej/8AHr//IB+v/sAf//9AAsAA//mAAQ/6sAEf+YAB3/sgAe/7IBpf/fAar/2QGs/+4B\nrwAJAbX/uwG8/94Bv//ZAcL/2wHDAAYBxAAJAcX/xAHI//0B0f+fAdP/rgHV/5MB1v+eAdf/0QHY\n/6QB2f+3Adv/yAHc/5sB3f+xAd7/ugHf/5kB4P+1AeH/wAHi/5sB4//SAeT/1AHl/5cB5v/NAef/\ntgHo/8YB6//NAe//xgHw/54B9f+iAfr/nQH//+0AAQHF/+YAEAGl//sBuP/0Ab//9wHC//UBxf/p\nAdEABwHS//0B1v/9Adj//wHf//gB4v/5AeP/6QHk/+kB5f/pAej/4QH//+0AFAGq//sBrP/eAa//\n6gGx/+IBtQAJAbf/+wG4//MBw//3AcT/7gHG/98ByP/yAdD/7wHc/+0B4//5AeT/9wHm//QB6P/z\nAfD/9AH6/+8B///3ABEBpf/wAbj/6AG//+wBwv/tAcX/3gHR//0B0v/yAdb/8QHY//MB3//sAeL/\n7gHj/94B5P/eAeX/3QHo/9YB9f/1Af//4gAPAar/+QGs/9IBr//lAbH/2wG1//sBt//4Abj/8AG8\n//4Bw//rAcT/7wHG/9wBy//pAdD/8gHc/+wB+v/uABcAD/+hABD//AAR/6EAHf/1AB7/9QGq/90B\nsf+6AbX/0QG8/+MBwv/4AdD/7QHR//YB0//mAdT/7QHV/8sB1v/xAdj/9wHc/9MB3//sAeL/7gHl\n/+cB9f/1Afr/1QASAar/+wGs/+IBr//qAbH/4gG3//4BuP/0Ab//+QHC//oBw//7AcT/8gHF//UB\nxv/iAdD/8wHjAAkB5AACAej//gH6/+0B/wADAC8AD/+9ABD/0AAR/70AHf/SAB7/0gB9/6wBpf/w\nAar/6gGs//8BrwAaAbH/rwG1/80BuP/5Abz/8AG//+oBwv/sAcMAGAHEABoBxf/WAdD/8gHR/8AB\n0//AAdT/xwHV/7EB1v+/Adf/4wHY/7cB2f/IAdv/2gHc/6wB3f/DAd7/ywHf/7oB4P/HAeH/0gHi\n/7sB4//jAeT/5gHl/6wB5v/eAef/yAHo/9cB6//fAfD/ugH1/8IB+v+uAf///gAuAA//owAQ/90A\nEf+jAB3/2gAe/9oAff/EAaX/3gGq//MBrAAHAbH/sgG1/9UBuP/oAbz/+AG//9kBwv/bAcMAIAHE\nACMBxf/UAcgAFgHQ/94B0f/OAdL/2QHV/7YB1v/GAdf/9AHY/9IB2f/ZAdv/6wHc/70B3f/UAd7/\n3AHf/8EB4P/YAeH/4AHi/8QB4//0AeT/9AHl/7sB5v/vAef/2QHo/+gB7//mAfD/zAH1/8oB+v+/\nAf//9gAOAar/6AGv/9sBsf/PAbX/4QG3/+sBvP/uAcT/3QHG/80ByP/+Acv/0QHQ/+IB1f/fAdz/\n3wH6/+EADwGl/98BuP/ZAb//2wHC/90Bxf/QAdH/9QHW/98B2P/qAd//2QHi/90B4//VAeT/1gHl\n/8gB6P/JAfX/4QAHAaz/jgGv/+ABw/+dAcT/4AHI/9wBy/+WAev/yAALAar//QGs/9YBr//tAbH/\n3wG8AAEBw//vAcT/8wHIAAQBy//uAdD/9gH6//UAEAGq//cBrP/RAa//5wGx/9kBtf/6Abf/+gG4\n//EBvP/8AcP/6gHE/+0Bxv/aAcj//wHL/+gB0P/wAdz/6gH6/+wABQHj//4B5P/pAej/8wH6AAUB\n///uAAcB2P/8AeP/+AHk/+QB5v/iAej//QHw//cB///pAAgB1//+Adj/9wHj//oB5P/mAeb/4QHo\n/+8B8P/xAf//5gAOAA//vgAQ/9EAEf++AB3/6wAe/+sB1f/ZAdz/4AHf//oB4v/9AeX/8gHwAAMB\n9QACAfr/4gH/ABMABwHXAAgB2AAGAdz//wHk/+0B5v/uAegABAH///EABwHSAAQB1gAEAd///QHi\nAAEB5f/wAfUABQH/ABAACQHXAAUB3P/9AeMABAHk//AB5v/sAej/+QHw//wB+v//Af//8AABAfr/\n8wAJAdH/+gHS//cB1v/4Adj/8gHf//AB4v/0AeX/4gH1//gB/wACAAkB1wABAdj//wHc//IB4//6\nAeT/5gHm/+gB6//1Afr/9AH//+sADQAP//wAEAAeABH//AAdAA4AHgAOAdcAAwHc//QB4//7AeT/\n5wHm/+kB8P/7AfUACQH//+wADAGv//gB0QAGAdcAAQHYAAQB3P/7AeMAAwHk/+8B5f/8Aeb/5wHo\nAAEB8P/9Afr//QAVAA//yQAQ/9wAEf/JAB3/9QAe//UAff/yAdEABAHV/9gB1v/+AdgABgHc/98B\n3//5AeL//AHjABUB5AASAeX/8QHoAAkB8AACAfUAAQH6/+EB/wASABEAD//RABAAAgAR/9EAff/r\nAdH/9QHV/9kB1v/xAdj/+AHc/+AB3//sAeL/7gHjABYB5f/mAegACgHw//MB9f/1Afr/4gANAdT/\n7wHV/+0B1//0Adj/9AHc/94B4//wAeT/3gHm/9gB6P/6Aev/6wHw//EB+v/gAf//3gAIAdH/9wHW\n/+sB2P/sAd//5gHi/+gB5f/XAfX/7wH/AA8ABwHW//gB4v/1AeP/twHk/8QB6P/sAev/qgH//8kA\nBwHW//kB4v/2AeP/uAHk/8UB6P/tAev/qwH//8oABwHc//kB4wABAeT/7gHoAAYB6//+Afr/+wH/\n//MACAHXAAQB3P/0AeP//AHk/+gB5v/qAev/+AH6//YB///tAAgB1f/ZAdz/4AHf//oB4v/9AeX/\n8gHwAAMB9QACAfr/4gAFAeP/vQHk/8oB6P/yAev/sAH//88ABwHWAAMB4//DAeT/0AHo//gB6/+2\nAfUABwH//9UACQHR//4B0v/8Adb//QHY//cB3//1AeL/+QHl/+cB9f/9Af8AAwAMAdH/9QHV/98B\n1v/3Adj/+AHc/+AB3//yAeL/9AHjABYB5f/mAegACgHw//MB9f/7ACcBpf/zAar/7QGsAAEBrwAf\nAbX/zwG8//IBv//tAcL/7wHDABoBxAAdAcX/2AHIABAB0P/0AdH/tAHT/8IB1f+nAdb/swHX/+UB\n2P+4Adn/ywHb/9wB3P+vAd3/xQHe/84B3/+uAeD/yQHh/9QB4v+vAeP/5gHk/+gB5f+rAeb/4QHn\n/8oB6P/aAev/4QHv/9oB8P+yAfX/tgH6/7EACAHV/9EB3P/ZAd//8wHi//YB5f/rAfD//QH1//sB\n+v/bABwARAAdAEUAIgBGAC0ARwAvAEgAMwBJABMASgAqAEsAHgBMAB4ATQAdAE4AIgBPAB4AUAAh\nAFEAIABSACwAUwAiAFQALwBVACAAVgAcAFcAFQBYACIAWQAKAFoAFwBb//EAXAAJAKYAHQC4ACwA\nvgAiACUAJP+3ACb/+QAq//gAMv/5ADT/9wA2AAkAN//7ADkABQA6AAwAO//xADz/9QBE//UARv/v\nAEf/8gBI//UASQAIAEr/7gBS/+8AVP/yAFb/9ABXAAoAWQADAFoACwBb//cAXAAEAF3/8QCD/7cA\nhv+3AIf/twCI/8QApv/1AKj/9QC4/+8BFAADARX/9QL1AAUC9gAFABYADAApAA//zQAR/80AJP+w\nAEAAMABH/+UAUv/iAFX/7QBW/+gAV//5AFn/9wBa//4AXP/3AGAAHACD/7AAhv+wAIf/sACI/70A\nuP/iAR3/6AEh/+oBI//oABEAJAAFACb/7QAq/+sALQANADL/7AA0/+oANgAEADf/sgA5/7EAOv/I\nADz/ogA9ABAASv/uAFn/yABa/9sAXP/LAF0ADAAmACT/vAAm//4AKv/8ADL//QA0//wANgANADf/\n/wA5AAkAOgARADv/9gA8//kAPQAEAET/+QBG//QAR//2AEj/+gBJAA0ASv/zAFL/8wBU//cAVv/5\nAFcADgBZAAgAWgAQAFv/+wBcAAgAXf/1AIP/vACG/7wAh/+8AIj/yACm//kAqP/6ALj/8wEUAAcB\nFf/5AvUACQL2AAkACAAk/7kAOQAIADoAEAA8//kAg/+5AIb/uQCH/7kAiP/FABYAJAAKACb/8QAq\n/+8ALQASADL/8AA0/+8ANgAJADf/tgA5/7YAOv/NADv//wA8/6YAPQAVAEr/8gBWAAQAWf/MAFr/\n3wBc/9AAXQAQAIgAFgCf/6YBJv+2AAkAJP/NADf/mgA5/7YAOv/IADz/mACD/80Ahv/NAIf/zQCI\n/9oACwAy//4APP/HAFIAEAFv//4BdP/HAXsAFgF8ACcBhAAjAY4ADgGUABYBnQABAAEA5gAEAAoA\nCwANAA8AEAARABIAIgAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5\nADoAOwA8AD0APgA/AEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkA\nWgBbAFwAXQBeAG0AfQCCAIMAhACFAIYAhwCIAIkAlACVAJYAlwCYAJoAmwCcAJ0AngCfAKEAogCj\nAKYApwCoAKsArACvALQAtQC2ALgAvgC/AMQAxgDOAM8A0QDbAP8BAAEDARQBFQEXARsBHQEjASQB\nJgEnATwBPgFAAVgBWgFdAV4BYQFiAWMBZQFmAWgBagFrAWwBbQFuAW8BcAFxAXIBcwF0AXUBdgF3\nAXsBfAF+AYABgQGCAYMBhAGFAYkBigGMAY0BjgGPAZABkgGTAZQBlgGYAZoBmwGcAZ0BpAGqAasB\nrQGvAbEBsgGzAbQBtgG3AbgBuwG/AcEBwgHDAcQBxQHGAcsBzQHOAc8B0QHSAdMB1AHWAdcB2AHa\nAdsB3wHhAeIB4wHkAeUB5gHrAe0B7gHvAfQB+gH7Af0B/wIHAggCMgI2AjcCOAI6AjsCPAJFAnkA\nAAABAAAAANpTmfAAAAAA0e+yRQAAAADR77JF\n`;\nexport const NimbusSansLRegItaItalic = `AAEAAAAPAIAAAwBwRkZUTX4y/nsAAYXAAAAAHEdERUYAJQAAAAFC+AAAABhHUE9To8g9cwABRDgA\nAEGIR1NVQjf5Jh4AAUMQAAABKE9TLzJrPcJdAAABeAAAAGBjbWFwlCMf9gAADbwAAAZMZ2FzcP//\nAAMAAULwAAAACGdseWZ+ca9eAAAZ/AABDCRoZWFkBvCogQAAAPwAAAA2aGhlYQepBTAAAAE0AAAA\nJGhtdHj64e61AAAB2AAAC+Jsb2Nh2MEbSAAAFAgAAAX0bWF4cANtAMsAAAFYAAAAIG5hbWXBhObo\nAAEmIAAABN1wb3N0oc2ragABKwAAABfuAAEAAAABAADgKtKuXw889QALA+gAAAAA0e+yRQAAAADR\n77JF/27+5ASCBC4AAgAIAAIAAAAAAAAAAQAAAtn+8QDIBEb/bv6dBIIAZAAVAAAAAAAAAAAAAAAA\nAvgAAQAAAvkAyAAyAAAAAAACAAAAAQABAAAAQAAAAAAAAAADAlsBkAAFAAgCigJY//AASwKKAlgA\nSgFeADIBNQAAAAAFAAAAAAAAAAAAAocAAAAAAAAAAAAAAABVUlcgAAEAIPsEAtn+8QDIBC4BHGAA\nAJ8AAAAAAgQCzgAAACAAAwEWAAAAAAAAAU0AAAEWAAABFgB8AWMAsQIsADYCLABFA3kAhgKbAFMA\nvwCtAU0AcQFN//kBhQCpAkgAXAEWADcBTQBhARYAVwEW//QCLABiAiwA0AIsACICLABHAiwAPwIs\nAEYCLABdAiwAiQIsAEoCLABTARYAbgEWAE4CSABXAkgASgJIADACLAC4A/cAUAKbABECmwBPAtIA\ncALSAFkCmwBaAmMAWgMKAG0C0gBTARYAZAH0AC8CmwBPAiwAUANBAEsC0gBMAwoAaAKbAFsDCgBo\nAtIAXQKbAFkCYwCeAtIAfAKbALkDsACxApsAFgKbAKgCYwAcARYAEwEWAJMBFv/pAdUAcwIs/8UB\nTQCzAiwAQQIsADYB9ABMAiwASQIsAFQBFgBZAiwAIAIsAEYA3gBCAN7/vwH0ADoA3gBEA0EARwIs\nAEYCLABQAiwABwIsAEcBTQBFAfQAPQEWAGECLABYAfQAegLSAHYB9AARAfQACAH0AB8BTgBbAQQA\nNgFO//ACSACJARYAAAFNAEwCLABgAiwALAIsAG4CLABkAQQANgIsAD8BTQCfAuEANwFyAGsCLACT\nAkgAYwFNAGEC4QA3AU0AoAGQALwCSAAyAU0ARwFNAF4BTQDaAiwAEgIZAJEBFgCmAU0AAQFNALAB\nbQByAiwAeQNCAJUDQgB/A0IAbAJjAFYCmwARApsAEQKbABECmwARApsAEQKbABED6AALAtIAcAKb\nAFoCmwBaApsAWgKbAFoBFgBkARYAZAEWAGQBFgBkAtIAWQLSAEwDCgBoAwoAaAMKAGgDCgBoAwoA\naAJIAHEDCgAgAtIAfALSAHwC0gB8AtIAfAKbAKgCmwBbAmMARgIsAEECLABBAiwAQQIsAEECLABB\nAiwAQQN5ADsB9ABMAiwAVAIsAFQCLABUAiwAVAEWAF4BFgBeARYAXgEWAF4CLABQAiwARgIsAFAC\nLABQAiwAUAIsAFACLABQAkgAXAJjABMCLABYAiwAWAIsAFgCLABYAfQACAIsAAcB9AAIApsAEQIs\nAEECmwARAiwAQQKbABECLABBAtIAcAH0AEwC0gBwAfQATALSAHEB9ABMAtIAcAH0AEwC0gBZAoMA\nRQLSAFkCLABJApsAWgIsAFQCmwBaAiwAVAKbAFoCLABUApsAWgIsAFQCmwBaAiwAVAMKAG0CLAAg\nAwoAbQIsACADCgBuAiwAIAMKAG0CLAARAtIAUwIsAEYC0gBTAiwARgEWAGQBFgBeARYAZAEWAF4B\nFgBkARYAXgEWABwA3gAAARYAZAEWAF4C3QApAbwAUAH0AC8A3v+/ApsATwH0ADoB9AA3AiwAUADe\nAEQCLABQAN7//wIsAFABKwBAAiwAUAGQAFUCLABLAN4APgLSAEwCLABGAtIATAIsAEYC0gBMAiwA\nRgJnAGUC0wBtAiwARgMKAGgCLABQAwoAaAIsAFADCgBoAiwAUAPoAGUDsABVAtIAXQFNAEUC0gBd\nAU0ABQLSAF0BTQBFApsAWQH0AD0CmwBZAfQAPQKbAFkB9AA9ApsAWQH0AD0CYwCeARYANwJjAJ4B\nPQBgAmMAngEWAFkC0gB8AiwAWALSAHwCLABYAtIAfAIsAFgC0gB8AiwAWALSAHwCLABYAtIAfAIs\nAFgDsACxAtIAdgKbAKgB9AAIApsAqAJjABwB9AAfAmMAHAH0AB8CYwAcAfQAHwDeAD0CLP/gApsA\nEQIsAEED6AALA3kAOwMKACACYwATApsAWQH0AD0CYwCeARYANwFNAJIBTQCwAU0AoAFNAKUBTQD0\nAU0A2AFNACMBTQCCAU0AWwFNARABTQCiApsAEQEWAKYDFQClA04AnwGFAKQDGgBvA2EArQMHACcA\n3gBFApsAEQKbAE8COgBJAp//9gKbAFoCYwAcAtIAUwMKAGoBFgBkApsATwKbABADQQBLAtIATAKI\nAD4DCgBoAtUAUgKbAFsCWAAdAmMAngKbAKgDRQCDApsAFgM/AJYC+QAgARYAZAKbAKgCOgBSAbcA\nKwIrAEQA3gBFAiYAXgI6AE0COwAgAfQAewIsAFUBtwArAc8AXAIrAEQCHgBcAN4ARQH0ADgB7AAS\nAiQAEwH0AHsBvwBCAiwAVAKeAIQCPQANAeYATAJbAGIBdgBkAiYAXgKMAFACIv/5AtgAfgMLAH4A\n3gBFAiYAXgIsAFQCJgBeAwsAfgImADQCLABNAwsAhgKbAFoCmwBVA0sAuAIgAFcCxABsApsAXAEW\nAFwBFgBcAfQAMAQqACID1gBEA0wAuwJNAEICywBLAn8AkALUAFECmwAQAosASgKbAFECIABUAsD/\n6wKbAFUDlf/xAmYAZQLLAEsCywBLAk0AQgKuAA8DQQBJAtIAUAMKAGwC1QBSApsAXALSAHQCYwCd\nAn8AkAMbAHsCmwAUAtcATAKhAIoDmABBA5sAPAMlAHIDdgBVAosASwK2ADUD/gA5AqoAIQIsAEQC\nMwBZAgoANQHtAHsCKf/sAiwAVgKw//IB0QBIAiwATwIsAE8B2AA2AjQALQKuADUCJgBHAiwAVQIm\nAEsCLAAMAfQATANBAPcB9AAMA0MAkwH0ABoCPABXAgYAdAM+AE4DUwBUAm0ARwLgAFkCDgBHAewA\nMQLwADQCFgA3AiwAVAIsAFYCLABMAXoARgHwAFIB9ABHAN4ARQDeAEgA3v++A44ALwM8ADwCLABM\nAdgANgIsAE8B9AAMAiwAVQL4AFADCwCAAwoAXgIsAFUC+ACoAk4ApgHsADoBUwAuAhoAUAGFAEcE\nAwABAzMAAgKaAFACGwBHAmoAUAH5AEcC0gBRAiYARwKbAKgB9ACFApsAqAH0AEsCxQAUAg8AFgK3\nAJUB+ABuArcAlQH4AG4CtwA9AjcAUgEWAFwBFgBcAwoAZwIsAFYCmwAQAiwARAMKAGwCLABVApEA\nUAIsAFYDsACxAtIAdgOwALEC0gB2A7AAsQLSAHYCmwCoAfQACAH0AAACLAAuA+gAKgPoACoCKP+2\nAN4AowDeAKYA3gAlAN4AvAFNAJIBTQCWAU0AFAIsAH8CLAAzAV4AeAPoAHMD6ABdALwAWgFiAF8B\nTQCMAU0AbQH0AFkBTQAxARb/hQFNAG4BTQBYAU0AXQFNAGsBTQCGAU0AYAFNAGUBbQBuAiwAIQIs\nACwERgBrAiwADAN1AfcC0gB4AUMACwQ7AFACiABCAwoASAL3AJ4D6ADQAwAAHAJYAEkB9AAcA0IA\nhgNCAHcDQgB7A0IAZAPoAFYB9ABQA+gAVgH0AFAD6AB7AfQAUgLSAFsC0gBbAtIAWwLSAFsB9ABS\nA+gAogLSAAgC0gCLAtIACQLSAIsC0gABARb/cgHcABYBqv/ZA+gAaAJk/+wC5QBFA+gA6QPoAOkD\n6ADpAzcABgJY/+4CSABRA+gA7AEW/4UD6AFlARYApgHFADoD6ADFAskATgPTADID6ADTAtIBHALS\nAPgD6ADzA+gA8wLPAG4D6AEYARIAAQPoASYD6ADEA+gAqAPoAMQBFv+aAiUAPAIlADkCSAA9AiUA\nHAIlACcD6ADpA+gA6QPoAOkD6ADQA+gA6QPoAOkD6AC5A+gAugPoAMkCXAALAkgANAJcARcCXACz\nAU0AOgFNADoCxP9uAnEBGALEAUECxP9uAsQBQQLE/24CxAFBAsT/bgLE/24CxP9uAsT/bgLE/24C\nxAD/AsQBQQLEAP8CxAD/AsT/bgLE/24CxP9uAsQBQQLEAP8CxAD/AsT/bgLE/24CxP9uAsQBQQLE\nAP8CxAD/AsT/bgLE/24CxP9uAsT/bgLE/24CxP9uAsT/bgLE/24CxP9uAsT/bgLE/24CxP9uAsT/\nbgLE/24CxP9uAsT/bgLEAWICxP9uAsT/bgLZ/3gCXP/BAlwAKwFiADEBYgAxA+gAiAPeAMMD3gDo\nA94AwwPeAMEB1wAHAlwAFwJcACsCXP/4Alz/wQFiAFwD/QCSBBwAogOVAE0C7gC9Au4AZwITAAQC\nkP/bAlL/5gH+//gB9AAzAu4AUgIsAFkB9ABTAfQAWQMKAFkAWQAAAAAAAwAAAAMAAAAcAAEAAAAA\nBEIAAwABAAAAHAAEBCYAAACmAIAABgAmAH4BfwGSAf8CGwLJAt0DigOMA6EDzgPWBF8EYwR1BJ0E\nowSzBLsEwATPBNkE4wTpBO8ehR7zIAIgFSAeICYgMyA+IEQgcCB5IH8gpyCsIQUhJiEuITUhXiGZ\nIaghtSHUIgMiCSIlIisiLiI3IkgiZSKHIpcipSMCIxAjISMqJQIlHCUkJSwlNCU8JWwlkyWhJawl\nsiW8JcQlzyXZJeYmQiZr+wT//wAAACAAoAGSAfoCGALGAtgDhAOMA44DowPRBAAEYgRyBJAEogSu\nBLYEwATPBNgE4gToBO4egB7yIAIgEyAXICAgMCA5IEQgcCB0IH8goyCsIQUhESEuITUhWyGQIagh\ntSHQIgAiBSILIiciLiI0IkUiYCKCIpUipSMCIxAjICMpJQAlDCUkJSwlNCU8JVAlgCWgJaolsiW6\nJcQlyiXYJeYmOiZg+wD////j/8L/sP9J/zEAAP54/dL90f3Q/c8AAP2h/Z/9kQAA/W/9Zf1j/V/9\nUf1J/UH9Pf0546njPeIv4h/iHgAAAAAAAOIE4dnh1uHRAADhqOFQAADhMOEq4QXg1ODG4LrgoAAA\n4HMAAOBl4GMAAAAAAADgGQAA3/7fot+V34bffwAAAADdjd2G3X/deN1lAADdOt0y3S0AAN0eAADd\nDt0CAAAAAAAAAAEAAAAAAAAAAAAAAJwAAAAAAAAAAAAAAJgAAAAAAAAAnAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAmgCmAKwAAAAAAAAAAACuAAAAAACyAAAAAAAAAAAAAAAAAAAAzgAAANIA\nAAAAAQIBCAEOAAABFgAAAAAAAAAAAAABEAEUAAAAAAAAAAAAAAEqAAAAAAAAAUoAAAFMAAAAAAFS\nAWIBeAAAAU0BTgAAAU8BngAAAAAAAAGfAaACBwIIAgkCCgAAAAACCwIMAAAAAAINAg4CDwIQAj0C\nPgI/AAAAAAAAAkACQQAAAkICQwJEAkUAAAJGAAACRwJRAlIAAAAAAlMCVgAAAlcAAAAAAlgAAAJZ\nAAAAAAAAAloAAAJbAAAAAAAAAlwAAAAAAAACXQJ1AAACdgJ3An0AAAAAAAACfgAAAn8CgAKBAAAC\nggAAAoMAAAKEAoUAAAAAAoYChwKIAokAAAAAAooAAAKLApICkwAAApQClQAAAAAClgKXApgAAAAA\nApkCmgKhAAACogKqAAACqwKsAAAAAAAAAq0AAAAAAAACrgAAAAAAAAKvAAAAAAAAArAC0gAAAAAA\nAALTAAAAAAAAAtQAAAAAAAAC1QAAAAAAAALWAtcC2ALZAuAAAALhAuMC5AAAAAAAAALlAukC6gLr\nAAAAAAAAAuwAAALtAu4AAAAAAu8AAALwAvEAAAAAAAAC8gLzAvQC9QL2AvcC+AAGAgoAAAAAAQAA\nAQAAAAAAAAAAAAAAAAAAAAEAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAEAAAAAAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsA\nHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4\nADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQA\nVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQAAAIYAhwCJAIsAkwCYAJ4AowCiAKQApgClAKcAqQCr\nAKoArACtAK8ArgCwALEAswC1ALQAtgC4ALcAvAC7AL0AvgI9AHIAZABlAGkCPwB4AKEAcABrAlwA\ndgBqApcAiACaAocAcwKZApoAZwB3AnYCfwJ+AY8CkABsAHwBeACoALoAgQBjAG4ChQFCApYCeQBt\nAH0CQABiAIIAhQCXARQBFQIyAjMCOgI7AjYCNwC5AuMAwQE6AkgCVAJEAkUC9QL2Aj4AeQI4AjwC\nQQCEAIwAgwCNAIoAjwCQAJEAjgCVAJYAAACUAJwAnQCbAPMBTQFUAHEBUAFRAVIAegFVAVMBTgAA\nAAAAAAAAAAAAGgA0AGYAyAEWAWgBeAGQAaoByAHgAfYCBAISAiACVgJsApwC5AMEAzYDegOUA+IE\nJAQ4BFYEagSABJQEyAU4BVIFigW+BeYGAgYaBl4GegaKBrIGzgbgBvwHFgdUB3YHtAf2CEgIXAiG\nCJgItgjUCOwJBgkaCSgJPAlQCV4JbAnMCgQKPApwCqgKzgseC0YLXAt+C5oLqgvoDA4MQAx2DKwM\nxg0MDTYNXA1uDYoNpA3GDeAOHg4sDmgOjg6ODqYO8g9MD44Ptg/KEDYQShCaEPYREhEkETIRkhGg\nEcQR5BIQElISYBKYErgSxhLwEwYTPhNeE5IT1hQuFGIUhBSmFMwVCBUwFWoVkhXoFgoWLBZSFnwW\nkhaoFsIW3hcSF0oXkBfUGBwYehjGGOAZJhlWGYYZuhnwGg4aMhp0GtobQBuqHCYckh0QHX4d2B4Y\nHlYemB7eHvQfCh8kH0AflB/aIBQgTCCIINohGiFEIYohuCHmIhgiTCJ4Iq4i4iMEI2ojnCQOJEAk\nriTqJSglaCWqJegmKCZmJqgm2iceJ1InkCeyJ/IoJChyKJQo0ikGKVgpfinAKg4qaCrCKygrbCu8\nLA4saiyQLMQs8C0kLVItgC2WLawt0i34LiAuSi5gLnAuoC7SLwQvKi9UL34vmC+wL8Yv6DAGMCYw\nQjBcMHIwkDCqMMow+DEgMVQxeDGqMeAyEjJGMowyxjMcM2YzsjPyNDI0ijTSNPY1RjVyNb415jY+\nNow26Dc6N644GDh0OMY46jkkOUI5fDmaOc46GDpcOow6ujr6Ozg7gDvGO/w8LjxuPKw81Dz6PRw9\nSD1uPY49rj3OPe4+Ej42PlY+iD7IP04/fj/0QEJAjkDuQURBaEGiQbRBxkHUQfJCAEImQkxCdEKI\nQphCtkLaQuhDDkM0Q0xDlEO0Q/ZEGkQ0RGxEfkSSRK5EyETkRSBFMEVMRWJFfkWYRbZF9EYKRixG\nSEZcRnRGwkbgRxRHTEdoR45H0EgUSEZIXkieSNZJIEk2SXJJrEnuShZKWEpmSoBKlEq+StBLIEtQ\nS2pLokviTBhMLExWTJ5MukzwTTRNUE2ITcBN9E5ATo5O0E8UTzZPXk+YT7BP7FA6UEpQZlCMUMRQ\n9lEkUUhRbFGiUbxR1lH+UjRSRlJuUohStFL6UxZTSFNkU4ZTolO+U/BUBlQoVFpUblSMVNBU7lUI\nVTBVSlVqVZJVwFXmViBWXFaWVvBXNFdkV3RXmlfOV/RYMFhMWH5YmFi2WNJY6lkcWTBZXFmOWaJZ\nxloIWiJaOlpeWnhallq6WuJbAls0W3BbplvmXChcYlx6XKxc7l0EXSBdQl1yXZ5dzl3uXhBeTF5k\nXpJevl8aX2ZfiF+qX8Bf1l/0YA5gPmBoYIpgqGDOYPBhEGEsYURhWmF8YZxhvmHcYgZiLmJcYopi\ntGLaYupi+mMuY2JjlGQGZD5kdmSoZPRlGGU8ZWBlgmWuZdhl9mYeZh5mLGY6ZkhmXmZ2Zoxmoma8\nZuJnCGcsZ0ZnameCZ5xoCmgYaC5oQGhUaIBojmicaM5o7GkcaVppcmmyafJqGGpCap5rHmtca2pr\nxmwIbFBstG04bWptlG3MbgRuWm6ybyxvnG/ycCBwTnB8cKpw+nFIcV5xcnGIcZxx8HIKciZyQnJe\ncnpyonK8cvxzGHNSc2ZzenOic+B0BnRKdHp0iHSkdLJ01HTidPh1NHV+dY51oHWudcB11HXmdhZ2\nQnZ6dtB3Anc2d3J3pHfgeAJ4IHg6eFZ4enieeNJ5BnkweVp5knnMeeB5+noMejB6VHpyepB6nHqq\nerp6ynraeup6/nsQeyJ7NntOe2J7dnuMe6J7vHvSe+h8AnwYfC58SHxefHR8jnymfMB84Hz4fRB9\nMH1KfWJ9gn2afbJ90n30fhZ+Qn5Qfl5+bH56foh/FIA4gMCAzoDigPCBBIESgSCBLoE8gUqBZoGK\ngaKBwIHughCCaoK2gxiDSoOeg9aEKoRUhGqEmITIhQ6FQoVwhcSGEgACAHwAAAFrAtkABQAJAAAB\nAwcjNxMDByM3AWtKQygXSjEWVBYC2f6i09MBXv2OZ2cAAAAAAgCxAdABxwLFAAUACwAAEzMPASM/\nATMPASM3yl4YNygBt14YNygBAsVvhoZvb4aGAAAAAAIANv/sAokCuQAbAB8AAAEHMwcjBzMHIwcj\nNyMHIzcjNzM3IzczNzMHMzcDIwczAnhNXg5pSWsOdlNMU31TTFNlDnBJbQ15TUxMfE1mfEp9ArnC\nQLhA09PT00C4QMLCwv7+uAADAEX/ggJlAwIAMQA4AD8AAAEzBx4BFRQHIzc2NTQmJwcWFxYVFAYH\nBg8BIzcuATU0NzMHBhUUFhcTJicmNTQ2NzY3AzcOARUUFhcDPgE1NCYBlzsLS1MGTwEBMSk1Wh85\nLiZFchY7FlhSCE8BAy43OlkZLSkiP2pCMz9TK1o4UFUxAwI2BE9EFhgPCQwoMQL5HBQmRDltIj8D\nZ2cOS0QdLQsdEikvEAEQHhYmPTJjIDoI/snwBVI5JStw/vkGVkkkLAAABQCG/+wDfwLFAAMADwAb\nACcAMwAAATMBIxMyFhUUBiMiJjU0NhciBhUUFjMyNjU0JgEyFhUUBiMiJjU0NhciBhUUFjMyNjU0\nJgL3Qv3aQog6UIFUO02CQTFMLyMxTi4BhjpQgVQ7TYJBMUwvIzFOLgLF/ScCvks3UX1LOU99Qksv\nIy9LLyUt/thLN1F9SzlPfUJLLyMvSy8lLQAAAwBT/+kChALFACAALAA2AAABMwYHFyMnDgEjIiY1\nNDc2NyYvASY1NDYzMhYVFAYHFzYnPgE1NCYjIgYVFBYTJw4BFRQWMzI2AjVPFFBaai5EZD1PW3Ah\n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\nZBE6VAE9cLQ8AgxSNSwDVQFcVv7wAuSUAAMAXf7kAwIC2QAgACsANQAAEwMjEyEyFhUUBgcGBx4B\nFRQHBhUUFwcjJjU0Njc2NTQjJzMyNzY1NCcmKwEDMwcOASM3Mjcj/kNemwFQYFolHhgxIxkVBhUF\ncQQGEghl3udcLCQVGUnmD2QTDUUvCDoQNwE6/sYC2UtPL1scFRwXJyIXcyERIhMXHBQXIUsiGktS\nNS4/Jhcc/T1dPkUmWAACAAX+5AG0AhsADwAZAAATMwc+ATMyFwcrAQ4BBwMjBzMHDgEjNzI3I7VL\nES9LKwwUEgoFS2QROlQQZBMORC8IOhA3AgxSNSwDVQFdVf7wPF0+RSZYAAAAAwBdAAADAgOrACAA\nKwAyAAATAyMTITIWFRQGBwYHHgEVFAcGFRQXByMmNTQ2NzY1NCMnMzI3NjU0JyYrATcjJzMXNzP+\nQ16bAVBgWiUeGDEjGRUGFQVxBAYSCGXe51wsJBUZSebnX0A/OGhAATr+xgLZS08vWxwVHBcnIhdz\nIREiExccFBchSyIaS1I1Lj8mFxyQlGJiAAACAEUAAAHmAuQADwAWAAATMwc+ATMyFwcrAQ4BBwMj\nASMnMxc3M7RMES9LKwwUEgoFS2MSOlQBIV9APzhoQAIMUjUsA1UBXFb+8AJQlGJiAAIAWf/pAsoD\nqwA4ADwAAAEjNjU0JyYjIgcGFRQWHwEWFxYVFAYHBiMiJjU0NzMGFRQWMzI3NjU0Ji8BLgE1NDY3\nNjMyFxYVFAMzByMCwlgEICJWYTcsKzqsQx8YMCdaonGACVcEUFV4PC80PasyPSkfUpxxOzaUcLQ8\nAgMZCzEdHzEoNSEkETETMSUpK2IjVGVbHiEZEERBOCwzJS4RMA5KLyZfH1U0L0cTAYOUAAAAAgA9\n/+kCIQLkADIANgAAASM3PQE0IyIHBhUUHwEeARUUBiMiJjU0NzMGFRQzMjc+ATU0JyYvAS4BNTQ3\nNjMyFhUUAzMHIwICVAFcQCIeVUxCN4ZwWGIGWQJsRygNEw0LLkpNPTw/bklbV3C0PAF6CwUGPiEc\nIicVExA1LllrRDwXHBQFTSIKJg4QEQ0NExQzLk05PEE1EgFRlAAAAgBZ/+kCygOsADgAPwAAASM2\nNTQnJiMiBwYVFBYfARYXFhUUBgcGIyImNTQ3MwYVFBYzMjc2NTQmLwEuATU0Njc2MzIXFhUUAzMX\nIycHIwLCWAQgIlZhNywrOqxDHxgwJ1qicYAJVwRQVXg8LzQ9qzI9KR9SnHE7NvFfQD84aEACAxsJ\nMR0fMSg1ISQRMRMxJSkrYiNUZVseIRkQRUA4LDMlLhEwDkovJl8fVTQvRxMBhJZjYwAAAAIAPf/p\nAggC5QAyADkAAAEjNz0BNCMiBwYVFB8BHgEVFAYjIiY1NDczBhUUMzI3PgE1NCcmLwEuATU0NzYz\nMhYVFAMzFyMnByMCAlQBXEAiHlVMQjeGcFhiBlkCbEcoDRMNCy5KTT08P25JW6VfQD84aEABegsF\nBj4hHiAnFRMQNS5Za0Q8FxwUBU0iCiYOEBENDRMUMy5NOTxCNBIBUpZjYwAAAQBZ/yoCygLlAFMA\nAAUHNjMyFhUUBiMiJzcWMzI2NTQmIyIHBgcnNyYnJjU0NzMGFRQWMzI3NjU0Ji8BLgE1NDY3NjMy\nFxYVFAcjNjU0JyYjIgcGFRQWHwEWFxYVFAYHBgFSEg0IHCdRQDJEHDYoHCMSDQYKBgUNJVYpUAlX\nBFBVeDwvND2rMj0pH1KccTs2CFgEICJWYTcsKzqsQx8YRzVUFiICHhUwPSImHR8YCQ0CAQEGRgsa\nNWUeIRkQREE4LDMlLhEwDkovJl8fVTQvRxMlGQsxHR8xKDUhJBExEzElKTZ0IzYAAAEAPf8qAggC\nGwBNAAAXBzYzMhYVFAYjIic3FjMyNjU0JiMiBwYHJzcmNTQ3MwYVFDMyNz4BNTQnJi8BLgE1NDc2\nMzIWFRQHIzc9ATQjIgcGFRQfAR4BFRQGBwb+Eg0IHCdRPzNEHDcnHCMSDQULBQYNJpgGWQJsRygN\nEw0LLkpNPTw/bklbBlQBXEAiHlVMQjcuJzsXIQIeFTA9IiYdHxgJDQIBAQZGE2wXHBQFTSIKJg4Q\nEQ0NExQzLk05PEE1EhkLBQY+IRwiJxUTEDUuMFQYJAAAAgBZ/+kCygOrAAYAPwAAASMnMxc3MxMj\nNjU0JyYjIgcGFRQWHwEWFxYVFAYHBiMiJjU0NzMGFRQWMzI3NjU0Ji8BLgE1NDY3NjMyFxYVFAIj\nX0A/OGhAH1gEICJWYTcsKzqsQx8YMCdaonGACVcEUFV4PC80PasyPSkfUpxxOzYDF5RiYv5YGQsx\nHR8xKDUhJBExEzElKStiI1RlWx4hGRBEQTgsMyUuETAOSi8mXx9VNC9HEwAAAAIAPf/pAiMC5AAG\n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\nLzgpKg9JVEkOGh0/alVpCwEmUhMwHgQCDP6tJhIiKRsdSwFT/q1EORo5RzobNAJSW2hoAAACAH7/\n6QLxAwsALQAzAAABMwcGFRQzMjY3NjU0JzMWFRQGBwYjIicmJwYjIiY1NDc2NzMOARUUFjMyNzY3\nEzMPASMnAbBUKgw0HDYTMT1bOy8mQFQ6IQ8KP1I+R1AvNWhbaSEdJx8bEXxSEzAfAwGNyDcXQici\nWm9sWVB3SZIxUCcSIFlbT4h8SypQzGErLyYeTAJGW2hoAAIANP/oAngC6AAnADUAABMzBhUUMzI2\nNzY3JicuATU0NjMyFhUUBzI3BysBBgcOASMiJjU0NyMlNjU0JyYjIgYVFBYXFkNzDGwsTxYmFnM4\nNT1tUl5vDB0VEhgYGzIkc0RXYAMmAb8NHyI7Lz8wKjUBJksmgTMrSnUMIB5gNk5pdWItTQFJklU9\nQ2deESW2NzhMIyg8LSZDFhoAAAMATf8mAlMClgAWAB4AJgAAFzcmJyY1NDY3Nj8BMwceARUUBgcG\nDwEDEwYHDgEVFBMDNjc+ATU0vio0IkU/M0FfGlIbTVZDN0FfKhdYQywaIftYTioZINrEBxw4elKe\nLjsDe3sLc1xUniw1BMQBDwGbBzkidTp6AYv+ZQs9I3A2fgAAAAIAhv/1AvwCDAAUAC0AAAEjNyEy\nFxYVFAYjIiYnBiMiJjU0NjcjBgcGFRQWMzI/ATMHBhUUMzI3NjU0JyYBFWIPAQuXSU+TXyY4DT9P\nPk1O0yREIz8hHlkjD1QPCj4vJS5JMgHIRDc6anzAKSVOXUpYozErMlZ2LDGnRkYsJlY6SVlhLB4A\nAAACAFoAAALvA6sACwAPAAABByEHIRMhByEHIQcDFyMnAP82Aa0R/fWbAfoR/mQyAYwSqEg1fQFM\n+lIC2VLpUgJflJQAAAMAVQAAAukDkgALAA8AEwAAEwchByETIQchByEHAwcjNyEHIzf5NgGuEf31\nmwH5Ef5kMgGNEYYWaBYBCRZoFgFM+lIC2VLpUgJGZ2dnZwAAAQC4//8DPwLZACQAADMTIzchByMH\nPgEzMhcWFRQPAQ4BJyM3MzI/ATY1NCYjIgcGBwP3icgRAfARyjEtVk5qKywEIQpiTZMSh0YOIQM2\nPG87KAs7AodSUuouICgpNBITmFFZAVJPnA4LIyAuHzb+6gAAAAACAFcAAAK4A6sABQAJAAATIQch\n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\nAAADJAIlAAoAFAAeAAABMhYVFAYiJjU0NgMyFhUUBiImNDYhMhYVFAYiJjQ2AfYYHyAyICDcFyAg\nMiAhAggXICAyICECJSAZGCEgGRof/k0hGBkgIDIgIRgZICAyIAAAAAMAqAAAA0ACVgALABYAIQAA\nJTIWFRQGIyImNTQ2AzIWFRQGIyImNDYhMhYVFAYjIiY0NgH1GiMiGxwjJPMaIyMaHCMjAjgaIyMa\nHCMjfCQaGyMiHBsjAdokGhsjIzYjJBobIyM2IwAABADEAAADIwJXAAkAEwAcACUAACUyFhUUBiIm\nNDYhMhYVFAYiJjQ2ATIWFAYiJjQ2ITIWFAYiJjQ2AQMaIyM2IyMB/xojIzYjI/45GiMjNiMjAf8a\nIyM2IyN8JBobIyM2IyQaGyMjNiMB2yM2IyM2IyM2IyM2IwAAA/+aAGEBewGzAAMABwAcAAABFSE1\nBRUhNQEXBiMiJicmIyIGByc2MzIXFjMyNgF7/h8B4f4fAbYkLFgWHDZTFBogICg1Tx9TSBMbJQER\nMzN+MjIBIB9OBhEYFSQfTRkWFwAAAAIAPABLAk0BggATACYAADcnNjMyFxYzMjY3FwYjIiYnJiMi\nByc2MzIXFjI2NxcGIyImJyYjIn4kTFQkRT8bHS4gJU9YFS89JRkyVSROUiRFPzgvHyVPVxUwPCYZ\nMvMbciMgHicZcBIeE/EbciMgHyYZcBIeEwAAAAEAOQACAlAB4AATAAA3IzczNyM3ITcXBzMHIwcz\nByEHJ7R7D6FP2g4BAWA+QocPrk7mDv7yUz5vSGRIfSdWSGRIbScAAwA9ADMCbgGfAAMABwALAAAB\nByE3JQchNwEHITcCTw/+HA8CAw/+HQ4BpQ7+HA8BDUhIkkhI/txISAAAAgAcAAACggJIAAMACgAA\nJQchPwIlBw0BBwIUD/4XDzMPAhUR/loBYRFISEjsRc9PpKNNAAIAJwAAAmECSAADAAoAADchByEB\nBwU3LQE3NgHpD/4XAjoP/esRAab+nxFISAF5Rc9PpKNNAAAAAQDpAAAC/wHuABQAACUVISInLgE1\nNDc+ATMhFSEiBhQWMwL//uhWLDtBYxxBPgEY/t1bUlJbPj4SGnlWkkETDT5YwlgAAAAAAQDpAAAC\n/wHuABQAADchMjY0JiMhNSEyFx4BFRQHDgEjIekBI1tSUlv+3QEYViw6QmIcQj7+6D5Ywlg+Ehl5\n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\nAZFCAAAB/27/BgNWAu4AEwAAJSE1IREzETMRMxEhFSERIxEjESMA//5vAZFCQkIBkf5vQkJC2UIB\n0/4tAdP+LUL+LQHT/i0AAAT/bv8GA1YC7gAFAAsAEQAXAAABIRUhETMDETMRITUFESMRIRUpATUh\nESMBxQGR/i1CxkL+LQJXQgHT/an+bwHTQgFdQgHT/m8Bkf4tQsb+bwHTQkL+LQAB/24A+gNWAu4A\nAwAAJxEhEZID6PoB9P4MAAAAAf9u/wYDVgD6AAMAAAcRIRGSA+j6AfT+DAAAAAH/bv8GA1YC7gAD\nAAAHESERkgPo+gPo/BgAAAAB/27/BgFiAu4AAwAABxEhEZIB9PoD6PwYAAAAAQFi/wYDVgLuAAMA\nAAURIREBYgH0+gPo/BgAABn/bv9qAvIC7gADAAcACwAPABMAFwAbAB8AIwAnACsALwAzADcAOwA/\nAEMARwBLAE8AUwBXAFsAXwBjAAADMxUjNzMVIyUzFSMlMxUjNzMVIwUzFSMVMxUjFTMVIxUzFSMT\nMxUjFTMVIxUzFSMVMxUjEzMVIxUzFSMVMxUjFTMVIxMzFSMVMxUjFTMVIxUzFSMTMxUjFTMVIxUz\nFSMVMxUjkmRkyGRkAlhkZP5wZGTIZGT9qGRkZGRkZGRkyGRkZGRkZGRkyGRkZGRkZGRkyGRkZGRk\nZGRkyGRkZGRkZGRkAu5kZGRkZGRkZGRkZGRkZGRkZAK8ZGRkZGRkZAK8ZGRkZGRkZAK8ZGRkZGRk\nZAK8ZGRkZGRkZAAy/27/BgNWAu4AAwAHAAsADwATABcAGwAfACMAJwArAC8AMwA3ADsAPwBDAEcA\nSwBPAFMAVwBbAF8AYwBnAGsAbwBzAHcAewB/AIMAhwCLAI8AkwCXAJsAnwCjAKcAqwCvALMAtwC7\nAL8AwwDHAAADMxUjNzMVIyUzFSMlMxUjNzMVIyEzFSM3MxUjNzMVIzczFSM3MxUjATMVIzczFSMl\nMxUjJTMVIzczFSMhMxUjNzMVIzczFSM3MxUjNzMVIwEzFSM3MxUjJTMVIyUzFSM3MxUjITMVIzcz\nFSM3MxUjNzMVIzczFSMBMxUjNzMVIyUzFSMlMxUjNzMVIyEzFSM3MxUjNzMVIzczFSM3MxUjATMV\nIzczFSMlMxUjJTMVIzczFSMhMxUjNzMVIzczFSM3MxUjNzMVI5JkZMhkZAJYZGT+cGRkyGRk/gxk\nZMhkZMhkZMhkZMhkZPx8ZGTIZGQCWGRk/nBkZMhkZP4MZGTIZGTIZGTIZGTIZGT8fGRkyGRkAlhk\nZP5wZGTIZGT+DGRkyGRkyGRkyGRkyGRk/HxkZMhkZAJYZGT+cGRkyGRk/gxkZMhkZMhkZMhkZMhk\nZPx8ZGTIZGQCWGRk/nBkZMhkZP4MZGTIZGTIZGTIZGTIZGQC7mRkZGRkZGRkZGRkZGRkZGRkZP2o\nZGRkZGRkZGRkZGRkZGRkZGRkAZBkZGRkZGRkZGRkZGRkZGRkZGQBkGRkZGRkZGRkZGRkZGRkZGRk\nZAGQZGRkZGRkZGRkZGRkZGRkZGRkAAAAABH/eP8GA2AC7gAlACkALQAxADUAOQA9AEEARQBJAE0A\nUQBVAFkAXQBhAGUAAAUhNTM1IzUzNSM1MzUjNTM1IzUzNTMVMzUzFTM1MxUzNTMVMzUzByMVMycj\nFTMnIxUzJyMVMwUjFTMnIxUzJyMVMycjFTMFIxUzJyMVMycjFTMnIxUzBSMVMycjFTMnIxUzJyMV\nMwNg/BhkZGRkZGRkZGRkZGRkZGRkZGRkZGTIZGTIZGTIZGQCWGRkyGRkyGRkyGRkAlhkZMhkZMhk\nZMhkZAJYZGTIZGTIZGTIZGT6ZGRkZGRkZGRkZGRkZGRkZGRkyGRkZGRkZGRkZGRkZGRkZGRkZGRk\nZGRkZGRkZGRkZGQAAf/BAAACmgLZAAMAAAMhESE/Atn9JwLZ/ScAAAIAKwAAAjICBwADAAcAADMR\nIREnESERKwIHNP5hAgf9+TQBn/5hAAABADEAgwExAYMAAwAANxEhETEBAIMBAP8AAAAAAgAxAIMB\nMQGEAAMABwAANxEhESc1IxUxAQA0mIMBAf7/NJmZAAAAAAEAiAAAA2EBbQADAAAzESERiALZAW3+\nkwAAAAABAMMAQwMbAnQAAgAAJSEBAxv9qAEsQwIxAAAAAQDoAIkDHgIZAAIAAAEFEQMe/coBUcgB\nkAAAAAEAwwAnAxsCWAACAAATIQHDAlj+1AJY/c8AAAABAMEAiQL3AhkAAgAAEyURwQI2AVHI/nAA\nAAAAAgAHAAABxQLoAAUACQAAARMDIwMbAgsBAQXAwD7AwCCgoKEC6P6M/owBdAF0/VQBOAE4/sgA\nAAACABcAVgJFAoQACgAVAAABMhYUBiMiJjU0NhciBhUUFjMyNjQmAS5ypaV0cqOmcV6IhV9hh4cC\n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\nAtwAFQAZAB0AAAEHIwMjEyM3Mzc+ATMyFwcmIyIGDwEhAyMTNwcjNwFsDlZhVGFGDkYTDE86FhcP\nDQ4hHwgPAQ1vVG+AFlQWAgxD/jcByUNZOD8FRQIdJkX99AIMzWdnAAIAWQAAAkkC3AAVABkAAAEH\nIwMjEyM3Mzc+ATMyFwcmIyIGDwElAyMTAXIOVmFUYUYORhMMTzoWFw8NDiEfCA8BLZtUmwIMQ/43\nAclDWTg/BUUCHSZFzf0nAtkABABZAAADXQLcABUAKwAvADMAAAEHIwMjEyM3Mzc+ATMyFwcmIyIG\nDwEhByMDIxMjNzM3PgEzMhcHJiMiBg8BIQMjEzcHIzcBcg5WYVRhRg5GEwxPOhYXDw0OIR8IDwFs\nDlZhVGFGDkYTDE86FhcPDQ4hHwgPAP9vVG+AFlQWAgxD/jcByUNZOD8FRQIdJkVD/jcByUNZOD8F\nRQIdJkX99AIMzWdnAAAAAwBZAAADXwLcABUAKwAvAAABByMDIxMjNzM3PgEzMhcHJiMiBg8BIQcj\nAyMTIzczNz4BMzIXByYjIgYPASUDIxMBcg5WYVRhRg5GEwxPOhYXDw0OIR8IDwFsDlZhVGFGDkYT\nDE86FhcPDQ4hHwgPAS2bVJsCDEP+NwHJQ1k4PwVFAh0mRUP+NwHJQ1k4PwVFAh0mRc39JwLZAAAA\nAAAaAT4AAQAAAAAAAAAzAGgAAQAAAAAAAQAKALIAAQAAAAAAAgAGAMsAAQAAAAAAAwAcAQwAAQAA\nAAAABAARAU0AAQAAAAAABQA5AdMAAQAAAAAABgARAjEAAQAAAAAACAAcAn0AAQAAAAAACwATAsIA\nAQAAAAAADAAUAwAAAQAAAAAAEAANAzEAAQAAAAAAEQAOA10AAQAAAAAAEgAQA44AAwABBAkAAABm\nAAAAAwABBAkAAQAUAJwAAwABBAkAAgAMAL0AAwABBAkAAwA4ANIAAwABBAkABAAiASkAAwABBAkA\nBQByAV8AAwABBAkABgAiAg0AAwABBAkACAA4AkMAAwABBAkACwAmApoAAwABBAkADAAoAtYAAwAB\nBAkAEAAaAxUAAwABBAkAEQAcAz8AAwABBAkAEgAgA2wAQwBvAHAAeQByAGkAZwBoAHQAIAAyADAA\nMQA0ACAAYgB5ACAAKABVAFIAVwApACsAKwAgAEQAZQBzAGkAZwBuACAAJgAgAEQAZQB2AGUAbABv\nAHAAbQBlAG4AdAAgAEcAbQBiAEgAAENvcHlyaWdodCAyMDE0IGJ5IChVUlcpKysgRGVzaWduICYg\nRGV2ZWxvcG1lbnQgR21iSAAATgBpAG0AYgB1AHMAUwBhAG4ATAAATmltYnVzU2FuTAAASQB0AGEA\nbABpAGMAAEl0YWxpYwAAMQAuADAAMAAwADsAVQBSAFcAIAA7AE4AaQBtAGIAdQBzAFMAYQBuAEwA\nLQBSAGUAZwBJAHQAYQAAMS4wMDA7VVJXIDtOaW1idXNTYW5MLVJlZ0l0YQAATgBpAG0AYgB1AHMA\nUwBhAG4ATAAtAFIAZQBnAEkAdABhAABOaW1idXNTYW5MLVJlZ0l0YQAAVgBlAHIAcwBpAG8AbgAg\nADEALgAwADAAMAA7AFAAUwAgADEALgAwADAAOwBoAG8AdABjAG8AbgB2ACAAMQAuADAALgA1ADcA\nOwBtAGEAawBlAG8AdABmAC4AbABpAGIAMgAuADAALgAyADEAOAA5ADUAAFZlcnNpb24gMS4wMDA7\nUFMgMS4wMDtob3Rjb252IDEuMC41NzttYWtlb3RmLmxpYjIuMC4yMTg5NQAATgBpAG0AYgB1AHMA\nUwBhAG4ATAAtAFIAZQBnAEkAdABhAABOaW1idXNTYW5MLVJlZ0l0YQAAKABVAFIAVwApACsAKwAg\nAEQAZQBzAGkAZwBuACAAJgAgAEQAZQB2AGUAbABvAHAAbQBlAG4AdAAAKFVSVykrKyBEZXNpZ24g\nJiBEZXZlbG9wbWVudAAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAHUAcgB3AHAAcAAuAGQAZQAAaHR0\ncDovL3d3dy51cndwcC5kZQAAaAB0AHQAcAA6AC8ALwB3AHcAdwAuAHUAcgB3AHAAcAAuAGMAbwBt\nAABodHRwOi8vd3d3LnVyd3BwLmNvbQAATgBpAG0AYgB1AHMAIABTAGEAbgBzACAATAAATmltYnVz\nIFNhbnMgTAAAUgBlAGcAdQBsAGEAcgAgAEkAdABhAGwAaQBjAABSZWd1bGFyIEl0YWxpYwAATgBp\nAG0AYgB1AHMAUwBhAG4ATABSAGUAZwBJAHQAYQAATmltYnVzU2FuTFJlZ0l0YQAAAAAAAgAA//QA\nAP+CADIAAAAAAAAAAAAAAAAAAAAAAAAAAAL5AAAAAQACAAMABAAFAAYABwAIAAkACgALAAwADQAO\nAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsAHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoA\nKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4ADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBH\nAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQECAKMA\nhACFAL0AlgDoAIYAjgCLAJ0AqQCkAQMAigDaAIMAkwDyAPMAjQCXAIgAwwDeAPEAngCqAPUA9AD2\nAKIArQDJAMcArgBiAGMAkABkAMsAZQDIAMoAzwDMAM0AzgDpAGYA0wDQANEArwBnAPAAkQDWANQA\n1QBoAOsA7QCJAGoAaQBrAG0AbABuAKAAbwBxAHAAcgBzAHUAdAB2AHcA6gB4AHoAeQB7AH0AfAC4\nAKEAfwB+AIAAgQDsAO4AugEEAQUBBgEHAQgBCQD9AP4BCgELAQwBDQD/AQABDgEPARABAQERARIB\nEwEUARUBFgEXARgBGQEaARsBHAD4APkBHQEeAR8BIAEhASIBIwEkASUBJgEnASgBKQEqASsBLAD6\nANcBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsA4gDjATwBPQE+AT8BQAFBAUIBQwFEAUUB\nRgFHAUgBSQFKALAAsQFLAUwBTQFOAU8BUAFRAVIBUwFUAPsA/ADkAOUBVQFWAVcBWAFZAVoBWwFc\nAV0BXgFfAWABYQFiAWMBZAFlAWYBZwFoAWkBagC7AWsBbAFtAW4A5gDnAW8ApgFwAXEBcgFzAXQB\ndQF2AXcBeAF5ANgA4QF6ANsA3ADdAOAA2QDfAXsBfAF9AX4BfwGAAYEBggGDAYQBhQGGAYcBiAGJ\nAYoBiwGMAY0BjgGPAZABkQGSAZMBlAGVAZYBlwGYAZkBmgGbAZwBnQGeAZ8BoAGhAaIBowGkAaUB\npgGnAagBqQGqAasBrAGtAa4BrwGwAbEBsgGzAJsBtAG1AbYBtwG4AbkBugG7AbwBvQG+Ab8BwAHB\nAcIBwwHEAcUBxgHHAcgByQHKAcsBzAHNAc4BzwHQAdEB0gHTAdQB1QHWAdcB2AHZAdoB2wHcAd0B\n3gHfAeAB4QHiAeMB5AHlAeYB5wHoAekB6gHrAewB7QHuAe8B8AHxAfIB8wH0AfUB9gH3AfgB+QH6\nAfsB/AH9Af4B/wIAAgECAgIDAgQCBQIGAgcCCAIJAgoCCwIMAg0CDgIPAhACEQISAhMCFAIVAhYC\nFwIYAhkCGgIbAhwCHQIeAh8CIAIhAiICIwIkAiUCJgInAigCKQIqAisCLAItAi4CLwIwAjECMgIz\nAjQCNQI2AjcCOAI5AjoCOwI8Aj0CPgI/AkACQQJCAkMCRAJFAkYCRwJIAkkCSgJLAkwCTQJOAk8C\nUAJRAlICUwJUAlUAsgCzAlYCVwC2ALcAxAJYALQAtQDFAIIAwgCHAKsAxgJZAloAvgC/AlsCXAC8\nAl0CXgJfAmACYQJiAmMCZAD3AmUCZgJnAmgCaQJqAmsCbAJtAm4AjAJvAnACcQJyAnMCdAJ1AnYC\ndwJ4AnkCegJ7AnwCfQJ+An8CgAKBAoICgwKEAoUChgKHAJgCiAKJAKgCigKLAowCjQCaAJkA7wKO\nAo8CkAKRAKUCkgCSApMClAKVApYClwKYApkCmgCcApsCnAKdAp4CnwCnAI8CoACUAJUCoQKiAqMC\npAKlAqYCpwKoAqkCqgKrAqwCrQKuAq8CsAKxArICswK0ArUCtgK3ArgCuQK6ArsCvAK9Ar4CvwLA\nAsECwgLDAsQCxQLGAscCyALJAsoCywLMAs0CzgLPAtAC0QLSAtMC1ALVAtYC1wLYAtkC2gLbAtwC\n3QLeAt8C4ALhAuIC4wLkAuUC5gLnAugAuQLpAuoC6wLsAu0C7gLvAvAC8QLyAvMC9AL1AvYC9wL4\nAvkAwADBAvoC+wd1bmkwMEEwB3VuaTAwQUQHQW1hY3JvbgdhbWFjcm9uBkFicmV2ZQZhYnJldmUH\nQW9nb25lawdhb2dvbmVrC0NjaXJjdW1mbGV4C2NjaXJjdW1mbGV4CkNkb3RhY2NlbnQKY2RvdGFj\nY2VudAZEY2Fyb24GZGNhcm9uBkRjcm9hdAdFbWFjcm9uB2VtYWNyb24GRWJyZXZlBmVicmV2ZQpF\nZG90YWNjZW50CmVkb3RhY2NlbnQHRW9nb25lawdlb2dvbmVrBkVjYXJvbgZlY2Fyb24LR2NpcmN1\nbWZsZXgLZ2NpcmN1bWZsZXgKR2RvdGFjY2VudApnZG90YWNjZW50DEdjb21tYWFjY2VudAxnY29t\nbWFhY2NlbnQLSGNpcmN1bWZsZXgLaGNpcmN1bWZsZXgESGJhcgRoYmFyBkl0aWxkZQZpdGlsZGUH\nSW1hY3JvbgdpbWFjcm9uBklicmV2ZQZpYnJldmUHSW9nb25lawdpb2dvbmVrAklKAmlqC0pjaXJj\ndW1mbGV4C2pjaXJjdW1mbGV4DEtjb21tYWFjY2VudAxrY29tbWFhY2NlbnQMa2dyZWVubGFuZGlj\nBkxhY3V0ZQZsYWN1dGUMTGNvbW1hYWNjZW50DGxjb21tYWFjY2VudAZMY2Fyb24GbGNhcm9uBExk\nb3QEbGRvdAZOYWN1dGUGbmFjdXRlDE5jb21tYWFjY2VudAxuY29tbWFhY2NlbnQGTmNhcm9uBm5j\nYXJvbgtuYXBvc3Ryb3BoZQNFbmcDZW5nB09tYWNyb24Hb21hY3JvbgZPYnJldmUGb2JyZXZlDU9o\ndW5nYXJ1bWxhdXQNb2h1bmdhcnVtbGF1dAZSYWN1dGUGcmFjdXRlDFJjb21tYWFjY2VudAxyY29t\nbWFhY2NlbnQGUmNhcm9uBnJjYXJvbgZTYWN1dGUGc2FjdXRlC1NjaXJjdW1mbGV4C3NjaXJjdW1m\nbGV4DFRjb21tYWFjY2VudAx0Y29tbWFhY2NlbnQGVGNhcm9uBnRjYXJvbgRUYmFyBHRiYXIGVXRp\nbGRlBnV0aWxkZQdVbWFjcm9uB3VtYWNyb24GVWJyZXZlBnVicmV2ZQVVcmluZwV1cmluZw1VaHVu\nZ2FydW1sYXV0DXVodW5nYXJ1bWxhdXQHVW9nb25lawd1b2dvbmVrC1djaXJjdW1mbGV4C3djaXJj\ndW1mbGV4C1ljaXJjdW1mbGV4C3ljaXJjdW1mbGV4BlphY3V0ZQZ6YWN1dGUKWmRvdGFjY2VudAp6\nZG90YWNjZW50BWxvbmdzCkFyaW5nYWN1dGUKYXJpbmdhY3V0ZQdBRWFjdXRlB2FlYWN1dGULT3Ns\nYXNoYWN1dGULb3NsYXNoYWN1dGUMU2NvbW1hYWNjZW50DHNjb21tYWFjY2VudAd1bmkwMjFBB3Vu\naTAyMUIHdW5pMDJDOQV0b25vcw1kaWVyZXNpc3Rvbm9zCkFscGhhdG9ub3MHdW5pMDM4NwxFcHNp\nbG9udG9ub3MIRXRhdG9ub3MJSW90YXRvbm9zDE9taWNyb250b25vcwxVcHNpbG9udG9ub3MKT21l\nZ2F0b25vcxFpb3RhZGllcmVzaXN0b25vcwVBbHBoYQRCZXRhBUdhbW1hB3VuaTAzOTQHRXBzaWxv\nbgRaZXRhA0V0YQVUaGV0YQRJb3RhBUthcHBhBkxhbWJkYQJNdQJOdQJYaQdPbWljcm9uAlBpA1Jo\nbwVTaWdtYQNUYXUHVXBzaWxvbgNQaGkDQ2hpA1BzaQd1bmkwM0E5DElvdGFkaWVyZXNpcw9VcHNp\nbG9uZGllcmVzaXMKYWxwaGF0b25vcwxlcHNpbG9udG9ub3MIZXRhdG9ub3MJaW90YXRvbm9zFHVw\nc2lsb25kaWVyZXNpc3Rvbm9zBWFscGhhBGJldGEFZ2FtbWEFZGVsdGEHZXBzaWxvbgR6ZXRhA2V0\nYQV0aGV0YQRpb3RhBWthcHBhBmxhbWJkYQd1bmkwM0JDAm51AnhpB29taWNyb24DcmhvB3VuaTAz\nQzIFc2lnbWEDdGF1B3Vwc2lsb24DcGhpA2NoaQNwc2kFb21lZ2EMaW90YWRpZXJlc2lzD3Vwc2ls\nb25kaWVyZXNpcwxvbWljcm9udG9ub3MMdXBzaWxvbnRvbm9zCm9tZWdhdG9ub3MGdGhldGExBHBo\naTEGb21lZ2ExB3VuaTA0MDAJYWZpaTEwMDIzCWFmaWkxMDA1MQlhZmlpMTAwNTIJYWZpaTEwMDUz\nCWFmaWkxMDA1NAlhZmlpMTAwNTUJYWZpaTEwMDU2CWFmaWkxMDA1NwlhZmlpMTAwNTgJYWZpaTEw\nMDU5CWFmaWkxMDA2MAlhZmlpMTAwNjEHdW5pMDQwRAlhZmlpMTAwNjIJYWZpaTEwMTQ1CWFmaWkx\nMDAxNwlhZmlpMTAwMTgJYWZpaTEwMDE5CWFmaWkxMDAyMAlhZmlpMTAwMjEJYWZpaTEwMDIyCWFm\naWkxMDAyNAlhZmlpMTAwMjUJYWZpaTEwMDI2CWFmaWkxMDAyNwlhZmlpMTAwMjgJYWZpaTEwMDI5\nCWFmaWkxMDAzMAlhZmlpMTAwMzEJYWZpaTEwMDMyCWFmaWkxMDAzMwlhZmlpMTAwMzQJYWZpaTEw\nMDM1CWFmaWkxMDAzNglhZmlpMTAwMzcJYWZpaTEwMDM4CWFmaWkxMDAzOQlhZmlpMTAwNDAJYWZp\naTEwMDQxCWFmaWkxMDA0MglhZmlpMTAwNDMJYWZpaTEwMDQ0CWFmaWkxMDA0NQlhZmlpMTAwNDYJ\nYWZpaTEwMDQ3CWFmaWkxMDA0OAlhZmlpMTAwNDkJYWZpaTEwMDY1CWFmaWkxMDA2NglhZmlpMTAw\nNjcJYWZpaTEwMDY4CWFmaWkxMDA2OQlhZmlpMTAwNzAJYWZpaTEwMDcyCWFmaWkxMDA3MwlhZmlp\nMTAwNzQJYWZpaTEwMDc1CWFmaWkxMDA3NglhZmlpMTAwNzcJYWZpaTEwMDc4CWFmaWkxMDA3OQlh\nZmlpMTAwODAJYWZpaTEwMDgxCWFmaWkxMDA4MglhZmlpMTAwODMJYWZpaTEwMDg0CWFmaWkxMDA4\nNQlhZmlpMTAwODYJYWZpaTEwMDg3CWFmaWkxMDA4OAlhZmlpMTAwODkJYWZpaTEwMDkwCWFmaWkx\nMDA5MQlhZmlpMTAwOTIJYWZpaTEwMDkzCWFmaWkxMDA5NAlhZmlpMTAwOTUJYWZpaTEwMDk2CWFm\naWkxMDA5Nwd1bmkwNDUwCWFmaWkxMDA3MQlhZmlpMTAwOTkJYWZpaTEwMTAwCWFmaWkxMDEwMQlh\nZmlpMTAxMDIJYWZpaTEwMTAzCWFmaWkxMDEwNAlhZmlpMTAxMDUJYWZpaTEwMTA2CWFmaWkxMDEw\nNwlhZmlpMTAxMDgJYWZpaTEwMTA5B3VuaTA0NUQJYWZpaTEwMTEwCWFmaWkxMDE5Mwd1bmkwNDYy\nB3VuaTA0NjMHdW5pMDQ3Mgd1bmkwNDczB3VuaTA0NzQHdW5pMDQ3NQlhZmlpMTAwNTAJYWZpaTEw\nMDk4B3VuaTA0OTIHdW5pMDQ5Mwd1bmkwNDk2B3VuaTA0OTcHdW5pMDQ5QQd1bmkwNDlCB3VuaTA0\nOUMHdW5pMDQ5RAd1bmkwNEEyB3VuaTA0QTMHdW5pMDRBRQd1bmkwNEFGB3VuaTA0QjAHdW5pMDRC\nMQd1bmkwNEIyB3VuaTA0QjMHdW5pMDRCNgd1bmkwNEI3B3VuaTA0QjgHdW5pMDRCOQd1bmkwNEJB\nB3VuaTA0QkIHdW5pMDRDMAd1bmkwNENGB3VuaTA0RDgJYWZpaTEwODQ2B3VuaTA0RTIHdW5pMDRF\nMwd1bmkwNEU4B3VuaTA0RTkHdW5pMDRFRQd1bmkwNEVGBldncmF2ZQZ3Z3JhdmUGV2FjdXRlBndh\nY3V0ZQlXZGllcmVzaXMJd2RpZXJlc2lzBllncmF2ZQZ5Z3JhdmUHdW5pMjAwMglhZmlpMDAyMDgN\ndW5kZXJzY29yZWRibA1xdW90ZXJldmVyc2VkBm1pbnV0ZQZzZWNvbmQJZXhjbGFtZGJsB3VuaTIw\nM0UMemVyb3N1cGVyaW9yDGZvdXJzdXBlcmlvcgxmaXZlc3VwZXJpb3ILc2l4c3VwZXJpb3INc2V2\nZW5zdXBlcmlvcg1laWdodHN1cGVyaW9yDG5pbmVzdXBlcmlvcgluc3VwZXJpb3IEbGlyYQZwZXNl\ndGEERXVybwlhZmlpNjEyNDgISWZyYWt0dXIJYWZpaTYxMjg5CWFmaWk2MTM1Mgt3ZWllcnN0cmFz\ncwhSZnJha3R1cgd1bmkyMTFFB3VuaTIxMjYJZXN0aW1hdGVkBWFsZXBoCW9uZWVpZ2h0aAx0aHJl\nZWVpZ2h0aHMLZml2ZWVpZ2h0aHMMc2V2ZW5laWdodGhzCWFycm93bGVmdAdhcnJvd3VwCmFycm93\ncmlnaHQJYXJyb3dkb3duCWFycm93Ym90aAlhcnJvd3VwZG4HdW5pMjE5Ngd1bmkyMTk3B3VuaTIx\nOTgHdW5pMjE5OQxhcnJvd3VwZG5ic2UOY2FycmlhZ2VyZXR1cm4MYXJyb3dkYmxsZWZ0CmFycm93\nZGJsdXANYXJyb3dkYmxyaWdodAxhcnJvd2RibGRvd24MYXJyb3dkYmxib3RoCXVuaXZlcnNhbAtl\neGlzdGVudGlhbAhlbXB0eXNldAhncmFkaWVudAdlbGVtZW50Cm5vdGVsZW1lbnQIc3VjaHRoYXQH\ndW5pMjIxMwd1bmkyMjE1DGFzdGVyaXNrbWF0aAd1bmkyMjE5DHByb3BvcnRpb25hbApvcnRob2dv\nbmFsBWFuZ2xlB3VuaTIyMjMHdW5pMjIyNQd1bmkyMjI3B3VuaTIyMjgMaW50ZXJzZWN0aW9uBXVu\naW9uB3VuaTIyMkUJdGhlcmVmb3JlB3VuaTIyMzUHdW5pMjIzNwljb25ncnVlbnQLZXF1aXZhbGVu\nY2UMcHJvcGVyc3Vic2V0DnByb3BlcnN1cGVyc2V0CW5vdHN1YnNldAd1bmkyMjg1DHJlZmxleHN1\nYnNldA5yZWZsZXhzdXBlcnNldAd1bmkyMjk1DmNpcmNsZW11bHRpcGx5DXBlcnBlbmRpY3VsYXIF\naG91c2UNcmV2bG9naWNhbG5vdAppbnRlZ3JhbHRwCmludGVncmFsYnQJYW5nbGVsZWZ0CmFuZ2xl\ncmlnaHQIU0YxMDAwMDAIU0YxMTAwMDAIU0YwMTAwMDAIU0YwMzAwMDAIU0YwMjAwMDAIU0YwNDAw\nMDAIU0YwODAwMDAIU0YwOTAwMDAIU0YwNjAwMDAIU0YwNzAwMDAIU0YwNTAwMDAIU0Y0MzAwMDAI\nU0YyNDAwMDAIU0Y1MTAwMDAIU0Y1MjAwMDAIU0YzOTAwMDAIU0YyMjAwMDAIU0YyMTAwMDAIU0Yy\nNTAwMDAIU0Y1MDAwMDAIU0Y0OTAwMDAIU0YzODAwMDAIU0YyODAwMDAIU0YyNzAwMDAIU0YyNjAw\nMDAIU0YzNjAwMDAIU0YzNzAwMDAIU0Y0MjAwMDAIU0YxOTAwMDAIU0YyMDAwMDAIU0YyMzAwMDAI\nU0Y0NzAwMDAIU0Y0ODAwMDAIU0Y0MTAwMDAIU0Y0NTAwMDAIU0Y0NjAwMDAIU0Y0MDAwMDAIU0Y1\nNDAwMDAIU0Y1MzAwMDAIU0Y0NDAwMDAHdXBibG9jawdkbmJsb2NrBWJsb2NrB2xmYmxvY2sHcnRi\nbG9jawdsdHNoYWRlBXNoYWRlB2Rrc2hhZGUJZmlsbGVkYm94B3VuaTI1QTEGSDE4NTQzBkgxODU1\nMQpmaWxsZWRyZWN0B3RyaWFndXAHdHJpYWdydAd0cmlhZ2RuB3RyaWFnbGYGY2lyY2xlBkgxODUz\nMwlpbnZidWxsZXQJaW52Y2lyY2xlCm9wZW5idWxsZXQJc21pbGVmYWNlDGludnNtaWxlZmFjZQNz\ndW4GZmVtYWxlBG1hbGUFc3BhZGUEY2x1YgVoZWFydAdkaWFtb25kC211c2ljYWxub3RlDm11c2lj\nYWxub3RlZGJsAmZmA2ZmaQNmZmwAAAAAAAH//wACAAEAAAAMAAAAEAAAAAIAAAAEAAAAAgAAAAEA\nAAAKAGwAoAACREZMVAAObGF0bgAaAAQAAAAA//8AAQAAACgABkFaRSAAMkNSVCAAMkRFVSAAKE1P\nTCAAPFJPTSAAPFRSSyAAMgAA//8AAgAAAAEAAP//AAIAAAACAAD//wADAAAAAQADAARhYWx0ABps\naWdhACBsaWdhAChsb2NsAC4AAAABAAAAAAACAAIAAwAAAAEAAwAAAAEAAQAEAAoAEgAaACIAAQAA\nAAEAIAABAAAAAQAmAAQAAAABACwABAAAAAEARgABAAYAKQABAAIBIAEhAAEABgApAAEAAgEgASEA\nAQAcAAEACAACAAYADgL3AAMASQBMAvUAAgBMAAEAAQBJAAEAGgABAAgAAgAGAAwC9AACAEkC9gAC\nAE8AAQABAEkAAQAAAAoAVABiAAJERkxUAA5sYXRuABoABAAAAAD//wABAAAAKAAGQVpFIAAoQ1JU\nIAAoREVVIAAoTU9MIAAoUk9NIAAoVFJLIAAoAAD//wABAAAAAWtlcm4ACAAAAAEAAAABAAQAAgAA\nAAEACAABP0gABAAAAOcB2AHiAgACWgJgAnIC+AMeA6ADrgSwBRYFrAYSBsQHjggQCDYIYAh6CXgK\nMgpcCtoLbAx2DJgNdg4MD84QNBFmEswTUhR4FPoVVBXaFhAWRhawFuoXWBgSGKwYxhj0GRoZ1Bn6\nGhgaQhqgGsYa3Bv6HFgdAh0wHb4ebB66H0wfkh/sIDogYCCOIQQhSiF4IeYiWCJuInQigiJ0InQi\nrCLWItwi4iLcIvwjGiNkI3YjhBXaI3YjkiOkI/IkACQGJBQkJiQsHQIkaiR4JJYkyCTOJNglLiU0\nJVolwCX+JhQmGiZAJoomlCaiJwgniifkJ/IoDCgeKDAoNig8KEIojCieKPApEikoKT4pfCnGKcwp\n7in8KioqNCqGKqQrGitUK4oruCvKLAQsMiw4LIoslCzOLNQtJi1ULZot7C46LmAugi6kLsYuzC8i\nLzQvOi9oL4IviC+eL2gvuDBWMHQwkjDYMW4x5DIeMlwzCjMQM1YzrDPyNDQ0ljTkNaI2XDaWNtQ2\n8jcQN0I3hDeaN7w33jgYODo4XDiCOIg4rjjUOQ45QDmWOeQ6Gjo8Olo6eDqaOsQ64jr4Oxo7QDty\nPBQ8NjysPT49mD3iPng+nj74Px4AAgI3AAoCOwASAAcAJP/LADf/+wA5AAcAOgASADv/5AA8//oA\nPf/oABYAJP/wAC3/7gA3//gAOf/2ADoAAwA7//EAPP/+AD3/5gBFAA8ASQADAEoACgBLAAcATAAJ\nAE0AEABOAA0ATwAIAFMAEQBc//QAiP/tAjYAJgL1ABcC9gAUAAEAEf/HAAQAEP/tAjIABQI3/8wC\nO//UACEAJP//ACYAGAAqABsALQAaADIAHQA0ABwANgAKADf/tAA5/9YAOv/wADv/zwA8/6sAPf/f\nAET/9ABJ//kASgAXAFb//ABX//wAWf/2AFr//wBb/9AAXP/zAF3/xQCD//8Ahv//AIf//wCI//kA\npv/0AbH//wHD/7UBxP/DAeP/awHk//EACQAK/8kADf/LABD/7AB0//kAdf/uAHv/xwIyAAQCN//L\nAjv/0wAgABIAFAAlACQAJwAfACgAHwApAB8AKwAiACwAGgAt//0ALgAkAC8AJAAwACYAMQAmADUA\nHQA3AA4AOAAdADkACwA6ABkAOwAGADwAEwA9//wARQAaAEkADgBKABQASwASAEwAFABNABQATgAY\nAE8AEwBXAA8AXP/9AvUAJwL2ACQAAwAKABECNwAMAjsAFABAAAr/yQAM//UADwAEABEABQAkAAoA\nJf/rACb/4gAq/+EALf/1ADL/4wA0/+MANv/hADf/mQA4/98AOf+3ADr/zwA7AAgAPP+jAD0ABQBA\nAAcARP/yAEX//gBG//sAR//8AEj/9ABK//oAUv/5AFT//QBW//cAV//zAFj/9QBZ/+EAWv/qAFz/\n2wBdAAUAYAAIAG3/1gCJ/98AmP/jAJv/3wCc/98Anf/fAJ7/3wCf/6MAqf/7AL7/9QC//9sBJP+c\nASb/nAFo/+UBb//jAXP/nAF0/6MBdf/MAXf/zAGC/9sBjP/hAZL/8AGU//IBlf/2AZz/8gI3/8QC\nO//MAkT/2gAZACT/4wAm//kALf/+ADL//QA2//cAN//cADn/2AA6/+0APP/GAD3/6gBc/+wAg//j\nAIT/4wCF/+MAhv/jAIf/5ACI/+MAlP/9AJX//QCW//0AmP/9AJoACAEU//8Biv/rAnn/9QAlAA//\n7wAQABMAEf/rAB3/7gAe//oAJP/XACb/8QAn//IAKv/vACv/9QAt//sALv/3ADL/9QA2/+4AN//T\nADn/0AA6/+cAPP++AD3/1wBE/+8ASP/1AFL/+gBW//UAXP/xAIP/1wCG/9cAh//XAIj/0wCV//UA\nmP/1AKb/7wCo//IAuP/6ART/9wEV//gCN//7AjsAAwAZABAAGAAk/9wAKP/zAC3/8wA3/8gAOf/R\nADr/6QA7/88APP+5AD3/ywBE//UASP/9AFL//wBc/+sAgv/cAIP/3ACE/9wAhf/cAIb/3ACH/9wA\niP/UAKb/9QCo//gAuP//ARX//AAsAAr/5QAQ//AAJP/4ACb/2wAp/90AMv/fADb/2QA3/+8AOf/n\nADr/7AA7//UAPP/uAD3/8wBE/+gARf/tAEb/5gBH/+gASP/iAEr/6QBL/+UATP/nAE3/5ABO/+sA\nT//mAFL/5ABU/+kAVv/rAFf/4ABZ/9gAWv/eAFz/0wBd//MAlf/fAJj/3wDO/9sBaP/eAW//3wF1\n/9MBgv/VAYP/4gGM/9gBk//dAjf/4QI7/+kAMgAK//MAD/+XABD/9gAR/5oAJP+3ACb/3QAq/98A\nLf/EADL/4gA2/9wANwACADr//wA8AAEAPf/wAET/1ABI/+EAS//sAEz/7QBN/+0AT//tAFL/4wBV\n/9MAWP/WAFz/1wCC/7cAg/+3AIT/twCF/7cAhv+3AIf/twCI/60AmP/iAKP/1ACm/9QAp//UAKj/\n2ACr/+EAtf/jALj/4wC6/+MAvP/WAL7/1gDE/7cAxv+3ARP/4wEU/+EBFf/gATH/1gI3/+0CO//1\nACAACv/7AA///gAQABUAEf/8AB3/+AAeAAMAJP/vACv/+wA2//QAN//OADn/1QA6/+kAO//pADz/\nugA9/+wARP/5AFIAAQBa//oAXP/pAIL/7wCD/+8AhP/vAIX/7wCG/+8Ah//vAIj/8QCm//kAqP/8\nALgAAQEV//8CN//1Ajv//QAJACT/7AAs//cAN//qADz/7ABE//kAXP/tAIj/7wCm//kAqP/8AAoA\nJP/pAC3/6gA3/+gAOf/hADr/7wA7/+YAPP/pAD3/5ABc/+kAiP/sAAYAJP/iADz/7QBc/+sAhv/i\nAIf/4gCI/9oAPwAK/+gADAACABD/1QAkAAwAJf/tACb/0wAn/+gAKP/oACn/6AAq/88AK//uACz/\n5gAt/+sAL//wADD/8gAx//IAMv/XADP/6AA0/9IANf/nADb/1AA3AAQAOP/uADkABgA6AAsAOwAK\nADwADgA9AAcAQAADAET/6ABI/9IAS//2AEz/9gBN//cAT//3AFL/1wBY/98AWv/JAFz/uQBgAAkA\niAAPAJX/1wCY/9cApv/oAKf/6ACo/+sAtf/XALj/1wC+/98Ax//rART/2QEV/9QBb//XAXX/uQF7\n/9YBfP/uAY7/1QGU/9gBmP/GAZv/1QGc/9gCN//lAjv/7QAuAAr/dAAM/8wAEP9/ACQABwAm/8sA\nKv/KADD/7AAy/8wANv/iADf/jwA4/9AAOf+MADr/sgA8/38APQADAED/0wBE//gASP/mAEz/8gBN\n//EAUv/qAFj/7gBc/7sAYP/bAIMABwCGAAcAhwAHAIgACgCJ/8wAlP/MAJX/zACW/8wAl//MAJj/\nzACe/9AAn/9/AKb/+AC4/+oAvv/uAL//uwDO/8sBFP/VAST/jwEm/48CN/9yAjv/egAKACT/7wAx\nAAUAN//uADr/9gA8/+8APf/qAE0ABABc//AAiP/yAYQADwAfAA//+QAR//oAJP/tACb//QAq//sA\nN//sADr/8wA8/+0APf/oAET/+gBNAAIAUgABAFj//gBc/+0Ag//tAIb/7QCH/+0AiP/wAIn/+QCj\n//oApv/6AKf/+gCo//0AtQABALgAAQC6AAgAvv/+AWH/7QF8AAwBhAAMAZj/6wAkAA//5wAQAB4A\nEf/oAB3/+QAeAAMAJP/iACb//AAq//4ALf/6ADP/+QA2//cAN//NADn/2AA6//AAO//VADz/wAA9\n/9EAWf/5AFoAAwBb/+4AXP/xAF3/6gCD/+IAhv/iAIf/4gCI/9sBFAABAWH/4gFm/9EBa//jAXP/\nzQF0/8ABdv/VAXf/8AGK/+4Cef/wAEIACgARAA//gQAQ/94AEf9+ACT/swAl/9wAJv/mACf/1wAo\n/9cAKf/XACr/6AAr/9sALP/SAC3/sAAu/90AL//cADD/3wAx/94AMv/sADP/1gA0/+oANf/VADb/\n4QA3/+YAOP/bADn/1QA6/+AAO//BADz/0AA9/9QARP/cAEj/3wBJ//sAS//jAEz/5ABN/+MAT//k\nAFL/4gBc//kAg/+zAIT/swCG/7MAh/+zAIj/sACj/9wApv/cAKf/3ACo/+AAq//fALX/4gC4/+IA\nuv/iAMT/swDG/7MBFP/qARX/3wFh/7MBb//sAXz/8gGA/+UBhP/yAY7/4wGb/+MBnf/BAjcADAI7\nABQACAAMABUAEAAgADX//AA4//0AQAAiAFgABwBgACQAvgAHADcACgAHAAwADwAQAAUAJP/9ACX/\n+wAm//UAJ//2ACj/9QAp//UAKv/2ACv//AAs//QALf/sAC7//gAv//4AMv/5ADP/9QA0//kANf/0\nADb/9gA3/94AOP/1ADn/1wA6/+wAO//7ADz/yAA9//gAQAAcAET/9wBI//wAUv/+AFj/+gBc/+8A\nYAAeAIn/9QCV//kAmP/5AJ7/9QCf/8gAo//3AKb/9wCn//cAqP/6AKv//AC1//4AuP/+ALz/+gC+\n//oAv//wART//gEV//sBJP/eASb/3gI3AAMCOwALACUAEAAVACT/4QAm//QAKv/2AC3//QAy//gA\nNv/1ADf/3AA5/9MAOv/pADz/xgA9/+gARP/yAEb//wBI//sAS//4AEz/+gBN//gAT//5AFL//QBU\nAAEAV//1AFn/7QBa//QAXP/uAIP/4QCG/+EAh//iAIj/4QCm//IAqP/1AKv/+wC4//0BFP/6ARX/\n+wI3//sCOwACAHAACv/6AAz//AAP/6QAEP+6ABH/oQAd/6AAHv+wACT/mgAl/+wAJv/QACf/5wAo\n/+YAKf/mACr/zQAr/+sALP/iAC3/lAAu/+0AL//sADD/7wAx/+4AMv/SADP/5gA0/84ANf/lADb/\n4wA3AAkAOP/rADkAAQA6AAYAO//7ADwACAA9//cAQAAIAET/nwBG/6wASP+oAEr/rwBL//MATP/0\nAE3/9ABP//QAUv+qAFX/qQBW/6cAWP+mAFn/lgBa/6MAXP+TAGAABQBt/4kAgv+aAIP/mgCE/5oA\nhf+aAIb/mgCH/5oAiP+WAJT/0gCV/9IAlv/SAJf/0gCY/9IAmv/VAKP/oQCm/8wAqP+iAKn/rACr\n/6gAr//iALX/qgC2/8cAuP/QALr/rwC8/74Avv/QAL//0wDE/5oAxv+aAMf/nwDJ/6wA2/+oARL/\n0gET/78BFP/ZARX/pwEX/8ABHf+uASH/pwEx/74BM/+/AWH/mgFr/5oBb//SAXMACQF0AAgBdf+q\nAXv/tQF8/8IBgP+rAYT/tgGF/+YBjv+oAZD/pQGS/6EBlP+jAZv/qAGc/70Bnf+TAjf/8wI7//sC\nRP+NABkAD//nABH/6QAk/+EANv/1ADf/6gA5/+MAOv/tADv/3gA8/+sAPf/XAE3/+ABQ//cAUf/3\nAFX/+ABZ/+4AWv/zAFv/5QBc/+oAXf/bAIP/4QCE/+EAhf/hAIb/4QCH/+EAiP/ZAEwADP/8AA//\nrwAQ/98AEf+sAB3/xgAe/88AJP+8ACb/1wAo/+AAKv/ZACv/6AAs/98ALf+5AC//6QAy/9sANf/f\nADb/2AA3AAMAOP/oADwACABAAAIARP/BAEb/0gBI/8kASv/SAEv/8ABM/+4ATf/wAE//8QBS/9AA\nVf/LAFj/zQBc/+EAYAAEAG3/sACC/7wAg/+8AIT/vACF/7wAhv+8AIf/vACI/7gAlP/bAJX/2wCW\n/9sAl//bAJj/2wCa/+QAo//BAKb/xACo/8oAq//JAK//2gC1/9AAtv/QALj/0AC6/9IAvP/OAL7/\nzgC//+QAxP+8AMb/vADH/8EA0f/WANv/yQDd/8oBEv/bARP/0AEU/90BFf/OARf/ywEb//oBHf/P\nATH/zgEz/84CRP+0AFkACgATAAwACQAP/8sAEP/2ABH/zAAd/9wAHv/sACT/0gAl//UAJv/uACf/\n8AAo//AAKf/wACr/6wAr//MALP/rAC3/zwAu//UAL//1ADD/9wAx//cAMv/tADP/7wA1/+4ANv/r\nADcABwA4/+0AOQADADoACAA8AAsAPf/1AEAAEQBE/9sARv/qAEj/4QBK/+wAS//zAEz/8gBN//QA\nT//0AFL/6ABV/+QAWP/kAFz/7gBgABQAbf/JAIL/0gCD/9IAhP/SAIX/0gCG/9IAh//SAIj/yQCU\n/+0Alf/tAJb/7QCX/+0AmP/tAJr/+ACj/9sApv/bAKj/3gCr/+EAr//kALX/6AC2/+gAuP/oALr/\n7QC8/+QAvv/kAL//8QDE/9IAxv/SAMf/2wDR/+4A2//hAN3/4QES/+0BE//oART/9AEV/+YBF//k\nARv//gEd/+gBMf/kATP/5AI3ABECOwAZAkT/zQAhAAr/6AAM//kAEP/RACQACAAm/9QAMv/YADT/\n2AA3//4AOgABADwABQBA//8ARP/kAEj/1gBS/9gAWP/bAFz/vQBgAAEAiAALAJj/2ACo/+cAq//W\nALj/2AC+/9sBFP/fAXv/1wF8/+oBgP/ZAY7/1gGT/8oBmP/CAZv/1gI3/+sCO//zAEkACv/6AAwA\nAwAP/5YAEP+vABH/lAAd/6YAHv+vACT/owAm/78AKv/AAC3/oQAy/8MANP/DADb/zwA3AAkAOQAI\nADoADAA7AAMAPf/3AEAACABE/6UASP+uAEr/rwBM//QAUv+wAFP/wgBU/7QAWP+4AFn/zgBgAAoA\nbf+JAIL/owCD/6MAhP+jAIX/owCG/6MAh/+jAIj/nwCU/8MAlf/DAJb/wwCX/8MAmP/DAJr/zwCj\n/6UApv/JAKj/qACr/64Ar//QALX/sAC4/80Auv+1ALz/uwC+/80AxP+jAMb/owDH/6UA2/+oARP/\nsAEU/8UBF/+2ATP/uwFh/6MBaP/CAW//wwFzAAkBdf+qAY//uQGb/64CN//6AjsAAQJE/40Cef+1\nACAACgADAAz/9gAP/+MAEP+cABH/4wAd/9gAHv/YACQABQAo/+IALP/dADL/0gA4/+UAPAACAEAA\nAgBE//YASP/jAEz/7wBS/+gAWf/UAFr/1gBc/9QAiAAIAJX/0gCm//YAqP/5ALj/6AEU/9YBFf/l\nAYT//wGO/+QCNwADAjsACwAWACQAAgAt//oANwAEADn//gA6ABIAO//7ADwAAgA9//IARQAgAEkA\nEwBKABsASwAYAEwAGgBNABoATgAeAE8AGQBTACIAXAAGAIj/+gI2ACkC9QAiAvYAHwAhACQAEgAl\nACYAJgAfACcAIQAqACAAKwAkACwAHAAtABEALgAmAC8AJgAwACgAMQAoADIAIwAzACAANAAjADUA\nHwA2ACEAN//WADgAHgA5//gAOgAOADsADwA8/+IAPQAMAEcAOABJACsASgA2AEwANABNADAATwAz\nAKsAMAL1ACoC9gAnAA0AD//2ABH/9wBN//0AVv/+AFf/9gBZ/+oAWv/1AFsADgBc/+YAXQAHAKH/\n+QIyABkCN//uAA0ADf/2AA//6wAR/+0AHf/yAB7//QBKAAYATQABAFYAAQBZ//EAWv/9AFz/6wBd\n/+oCMgAtABoABP/kAA0AAQAP//oAEP/2ABH/+wAd//AAIv/IAC0ACwBEAAEARgAEAEv//gBN//8A\nTgAEAE///wBSAAIAVgACAFf//gBY//8AXP/wAKYAAQCoAAQAtQACALgAAgC+//8CMgAPAjsACAAO\nAAwACAAP//EAEf/yAEAAGwBE//oASgAGAE0AAgBZ//cAWv/6AFz/8wBd/+8AYAAdAKb/+gIyAB8A\nGwAE/98ADf/0AA//6wAQAAcAEf/pAB3/6QAe//UAIv+3AET/8gBJ//MASv//AEv/+QBN//oATv//\nAE//+gBW//sAV//3AFn/6wBa//cAW//jAFz/5wBd/+gAof/5AKb/8gFA/+gCMgAhAjf/9QAuAAT/\n2gAK//sADf/7AA//4AAQ//UAEf/fAB3/5gAe//AAIv/uAEAADgBE//AARv/5AEf/+gBI//EASQAM\nAEr/9wBM//UATf/2AE//9QBS//cAVv/8AFcAEQBY//YAWgAQAFwACQBd//sAYAAQAKP/8ACm//AA\np//wAKj/9ACr//EAr//nALX/9wC4//cAuv/4AL7/9gC/AAkAx//tARX/9AEX//MBMf/2AjIADgI3\n//wCOwADAlz/8wAmAAT/4wAMAAYADf/4AA//8gAQAAUAEf/wAB3/7wAe//sAIv/XAEAAGQBE//kA\nRwAEAEj//QBJ//cASgABAEv//QBN//8ATgACAE///gBSAAEAUwAGAFX//gBW//4AV//8AFn/9QBa\n//oAXP/yAF3/7QBgAB8Apv/5AKf/+QCo//wAq//9ALUAAQC4AAEBFf//AjIAHgI3//gABgAN//EA\nWf/tAFz/6QC//+kCMgAeAjf/8gALAAwACAAN//YAN//wAEAAGwBN//0AWf/zAFr/+ABd/+sAYAAd\nAjIAHQI3//gACQAMAAoADf/4AEAAFwBc//AAYAAfALX//gC4//4A2//8AjIAHgAuAAT/3gAN//IA\nD//5ABD/0wAR//kAHf/lAB7/7QAi/+oARP/wAEUAAgBG//AAR//yAEj/6ABJAAgASv/wAEv/+wBM\n//0ATf/8AE///ABQ//oAUf/7AFL/7gBTAAMAVP/zAFX/+wBW//IAVwANAFj/8gBZAAoAWgAMAFsA\nFQBcAAQAXQAOAKP/8ACm//AAp//wAKj/8wCr/+gAtf/uALj/7gC+//IAx//zANv/6AIy/+0CN//x\nAjv/+QAJAA//8QAR//EASgABAE3//gBZ//MAWv/2AFz/7wBd/+wCMgAeAAcATf/8AFMABQBZ/+0A\nWv/3AFz/6QBd/+4CMgAeAAoAN/+hAEoAAgBN//sAUwAEAFn/7QBa//YAXP/pAF3/7gIyAB4CN//y\nABcADf/xAA//5QAR/+cAHf/nAB7/9wA3/6IATf/8AFf/+ABZ/+sAWv/3AFv/5QBc/+UAXf/kAYAA\nAQGC/+YBiv/pAYz/6wGP/94Bk//uAZT/+QGW/9ECMgAnAjf/8gAJAA3/9gBKAAgAV//9AFn/8wBa\n//wAXP/qAF3/7AC//+oCMgAsAAUADAAJAEAAHABGAAYAYAAiAjIAIQBHAAT/2wAK//oADf/8AA//\nugAQ/88AEf+6AB3/4QAe/+EAIv/0AET/9ABFAAEARv/8AEf/+wBI//UASQAQAEr/+wBL//gATP/5\nAE3/+QBO//4AT//5AFD/9wBR//cAUv/5AFT//ABV//gAVwAVAFj/+gBZABIAWgAUAFsACQBcAA4A\nXf//AKL/9ACj//QApP/0AKb/9ACn//QAqP/4AKn/+QCq//UAq//1AKz/9QC0//kAtf/5ALb/+QC4\n//kAuv/4ALz/+gC+//oAvwAOAMf/8QDP//wA0f/9ANv/8QEG//cBCv/3ARP/+QEV//YBF//4ARv/\n+AElABQBJwAWATH/+gEz//oBPP//AT7//wFA//8CMv/oAjf/+wI7AAIAFwAE/9oAD//3ABD/9AAR\n//YAHf/nAB7/8wAi/70ARP/4AEn/8QBK//kATv/6AFP//wBW//oAV//zAFn/5gBa//AAXP/hAF3/\n9gCm//gAq//2AjIADAI3/+wCO//0ACoABP/ZAA3/+QAP/+oAEP/uABH/6wAd/+kAHv/0ACL/7AA2\n/+8ARP/1AEb/9gBH//gASP/yAEr/9wBL//UATP/zAE3/9gBQ//EAUf/xAFL/9ABT//oAVP/5AFX/\n8gBW//gAVwAOAFj/9ABZAAoAWgANAFwABgBdAAMAo//1AKb/9QCn//UAqP/4AKv/8gC1//QAuP/0\nAL7/9ADH//YA2//yAjIABwI3//gACwAP/+oAEf/sAEr//wBN//wAWf/yAFr/9gBb/+sAXP/uAF3/\n6QIyABsCN//1ACMADQAEAA//twAQ//MAEf+4AB3/4AAe/+QARP/mAEb/7wBI/+sASv/uAEz/+ABN\n//cAT//4AFL/7QBV//YAVv/zAFj/+QBcAAsAov/mAKP/5gCk/+YApf/mAKb/5gCn/+YAqP/sAKr/\n6wCr/+sArP/rALT/7QC1/+0AuP/tALr/8AC+//kBFf/qAjIADAArAAT/2gAKAAYADQAIAA//zQAQ\n//4AEf/MAB3/5AAe/+4AIv/xAET/7ABG//sASP/zAEkADwBK//wATP/4AE3/9wBP//gAUv/5AFP/\n/wBV//YAVv/2AFcAFABY//kAXAALAF3//gCi/+wAo//sAKT/7ACl/+wApv/sAKf/7ACo/+8Aqv/z\nAKv/8wCs//MAtP/5ALX/+QC4//kAuv/5AL7/+QIyABcCNwAIAjsAEAATAAT/0gAN//IAD//oABD/\nzgAR/+kAHf/cAB7/5wAi/+oARP/hAEb/7ABI/+MAUv/qAFT/7gBcAAQAq//jALj/6gIy/+cCN//x\nAjv/+QAkAAT/1QAK//0ADf//AA//uQAQ/+8AEf+5AB3/1wAe/+AAIv/tAET/4ABG/+sASP/iAEr/\n6gBN//IAT//zAFL/6QBW/+wAov/gAKP/4ACk/+AApf/gAKb/4ACn/+AAqP/mAKr/4gCr/+IArP/i\nALT/6QC1/+kAuP/pALr/7ADP/+sBHf/sAjIACAI3//4COwAFABEABP/LAA3/9gAP/90AEP/FABH/\n3QAd/9IAHv/ZAET/7gBI/98ATP/pAFL/4gBY/+QAXP/3AKb/7gC4/+IAvv/kAjL/3wAWACT/+gAt\n//EAN//1ADn/8wA6AAcAO//yADz/9gA9/+kARQAWAEkACQBKABEASwAOAEwAEABNAA8ATgAUAE8A\nDwBTABkAXP/9AIj/8QI2ACEC9QAYAvYAFQATAVj/4QFb/8UBXP/CAWH/4QFr/+IBc/+SAXT/jQGM\n/9QBk/+9AbH/4gG8/9UBw/+SAcT/ogHI/9IB0P/qAdz/yAHj/1UB5P/QAej/0QAJACT/0gA3/4cA\nOf+pADr/xAA8/4IAg//SAIb/0gCH/9IAiP/MAAsADwAEABEABQAm/+IAKv/hADL/4wA0/+MAN/+Z\nADj/3wA5/7cAOv/PADz/owAdAA8ABQARAAUAJv/gACr/4gAy/+QANP/kADf/mQA4/90AOf+4ADr/\nzwA8/6IARP/xAEX//ABG//oAR//8AEj/8wBK//oAUv/4AFT//QBX//IAWP/0AFn/4ABa/+sAXP/e\nAG3/1QEm/5oCN//FAjv/zQJE/9kAEQAPAAQAEQAFACb/4gAq/+EAMv/jADT/4wA3/5kAOP/fADn/\ntwA6/88APP+jAFn/4QBa/+oAn/+jAL//2wEk/5wBJv+cAAsADwACABEABAAm/+AAKv/hADL/5AA0\n/+QAN/+ZADj/3QA5/7gAOv/QADz/oAAbAA8ABQARAAUAJv/gACr/4gAy/+QANP/kADf/mQA4/94A\nOf+5ADr/zwA8/58ARP/xAEX//wBG//oAR//7AEr/+wBS//gAVP/8AFf/8gBY//QAWf/gAFr/6gBc\n/9sAbf/VAjf/xQI7/80CRP/ZABwADwAEABEABQAm/+IAKv/hADL/4wA0/+MAN/+ZADj/3wA5/7cA\nOv/PADz/owBE//IARf/+AEb/+wBH//wASP/0AEr/+gBS//kAVP/9AFf/8wBY//UAWf/hAFr/6gBc\n/9sAbf/WAjf/xAI7/8wCRP/aAAUAN//wADn/6QA6/+0AO//3AD3/9QABACT/1wADADf/zQA5/9gA\nPP/AAAoAD//nABH/6AAd//kAHgADACT/4gA3/80AOf/YADr/8AA8/8AAPf/RAAoAD//nABH/6AAd\n//kAHgADACT/4gA3/80AOf/YADr/8AA7/9UAPP/AAAEAJP/gAAEAJP/hAAYAD//nABH/6QAk/+EA\nUP/3AFH/9wBV//gABwAP/+cAEf/pACT/4QBF//8AUP/3AFH/9wBV//gAEgAP/5YAEP+vABH/lAAd\n/6YAHv+vAC3/oQCD/6MAhP+jAIb/owCj/6UAq/+uALX/sAC8/7sAxP+jAMb/owDb/6gBE/+wASH/\nrQAEAEj/8gBO//UAV//vAFr/6wADAFn/6gBa//UAXP/mAAMAWf/rAFr/9ABc/+cABABV//sAWf/s\nAFr/+ABc/+gAEwAE/98AD//rABAACQAR/+kAHf/pAB7/9QAi/7cARgABAEcAAgBK//8AT//6AFQA\nAwBX//cAWf/rAFr/9wBc/+cAXf/oAjf/9QI7//0AAwBZ/+sAWv/3AFz/5wABAFn/5QADAFn/6wBa\n//cAXP/lAAQAWf/rAFr/9wBc/+UBPP/kAAEAV//4AA8ADf/xAA//5QAR/+cAHf/nAB7/9wA3/8cA\nTf/8AFf/+ABZ/+sAWv/3AFv/5QBc/+UAXf/kAjIAJwI3//IAAwAP/7MAEf+0AM//6wAHADf/mQA8\n/6IAXP/dAJ//ogC//90BJP+ZASb/mQAMAA8AAwARAAYAHf/0AB7/+wAm/+EAN/+ZADz/oABcABMA\nn/+gAL8AEwEk/6kBJv+ZAAEAMv/1AAIASP//AFIABAAVAA//xwAR/8IAHf/FAB7/zgBE/88ASP/R\nAFD/5QBR/+YAUv/YAFX/5gBW/9kAWP/nAFz/+wBd/9MAo//PAKv/0QC1/9gAvP/uAL7/7gC/AAMB\nMf/uAAEBPv/sAAkAMv/MADf/uAA5/7AAPP+2AFn/vgCf/7YAv/+7AST/uAEm/7gAGQAP/8cAEf/I\nAB3/zwAe/9UARP/UAEf/3ABI/9YASQAGAEr/2gBS/9gAU//7AFb/4ABXABAAWP/wAF3/7QCj/9QA\nq//WALX/2AC2/+QAvP/1AM//4ADR/94BI//oATH/9QFA//UADwAP/+8AEf/vAB3/5AAe/+QAMv/W\nADf/mAA5/5YAOv+7ADz/iABZ/8cAWv/YAJ//iAC//8QBJP+YASb/mAAFADf/+gA5//QAOv/4ADv/\n9QA9//gAAQBY//gACQAP/7wAEf+4AET/9ABH//sAUP/3AFH/9wBXABUAWQASAF3//wASAA//vAAR\n/7gAHf/hAB7/4QBE//QAR//7AEj/9QBM//kAUv/5AFj/+gBZABIAo//0AKv/9QCv/+wAtf/5ALz/\n+gDR//0BMf/6AAIARv/6AFr/7wADAE7/+gBT//wAV//0ABkAg/+dAIT/nQCG/50Ao/+hAKv/qAC1\n/6oAvP++AL//0wDE/50Axv+dAMf/nwDb/6gBBv+2AQr/zAET/78BF//AARv/+gEd/64BJf/rASf/\n7QEx/74BM/+/ATz/vgE+/74BQP/bACAAD/+kABD/ugAR/6EAHf+gAB7/sAAk/50ALf+UAIP/nQCE\n/50Ahv+dAJj/0gCj/6EAq/+oALX/qgC8/74Av//TAMT/nQDG/50Ax/+fANv/qAEG/7YBCv/MARP/\nvwEX/8ABG//6AR3/rgEl/+sBJ//tATP/vwE8/74BPv++AUD/2wAWAA//2AAR/9gARP/hAEj/4QBQ\n/90AUf/dAFL/4wBV/94AVv/kAFf/+gBY/98AXP/zAF3/7wCj/+EAq//hALX/4wC8/98Av//zARsA\nBwEj/+oBMf/fAUD/7wADAA//3QAd/9IAHv/ZAAYAD//dAB3/0gAe/9kARv/mAEj/3wC1/+IABAAP\n/90AHf/SAB7/2QBI/98ABAGC/9sBjP/hAZL/8AGV//YAAQGM/8AAAQGK/+kAAQGS/4gAEgAPAAQA\nEQAFADL/4wA3/5kAPP+jAH3/4QFo/+UBb//jAXP/nAF0/6MBdf/MAXf/zAGC/9sBjP/hAZL/8AGU\n//IBlf/2AZz/8gAEACT/4wFh/+MBiv/rAnn/9QAUAA//WAAR/1cAJP+iADL/2gA8ABEAUv9jAWH/\nogFr/6MBb//aAXv/vgF8/8sBgP9kAYT/bgGJ/2cBjP9aAY7/YQGQ/14BlP9cAZz/xgJ5/68ACAAy\n/98BaP/eAW//3wF1/9MBgv/VAYP/4gGM/9gBk//dAAUAMv/SAFL/6AFv/9IBhP//AY7/5AAFACT/\n4QA8/74BYf/hAWv/4QF0/74ADwAP//UAEf/0AB3/3gAe/94AMv/XAFL/1wFv/9cBdf+5AXv/1gF8\n/+4Bjv/VAZT/2AGY/8YBm//VAZz/2AASAA8AAwARAAQAMv/jADf/mAA8/6MAUv/4AH3/4AFo/+UB\nb//jAXP/mwF0/6MBe//3AXwAAgGEAAIBjv/2AZT/8QGb//YCN//EAAEBhAAPAAgAJP/tAFIAAQFh\n/+0BfAAMAYQADAGOAAMBmP/rAZsAAwADAXv/4gGA/+QBnP/cAAsAJP/iADz/wAFh/+IBZv/RAWv/\n4wFz/80BdP/AAXb/1QF3//ABiv/uAnn/8AACAXwACgGK/+sAFAAP/4EAEf9+AB3/zAAk/7MAPP/Q\nAFL/4gFh/7MBaP/rAWv/tAFv/+wBc//mAXT/0AF1/94BfP/yAYD/5QGE//IBjv/jAZv/4wGd/8EC\nef/GAAcAMv/LAFL/6QFo/8oBb//LAY7/5QGT/8kBlv/KAB0AD/+kABH/oQAd/6AAHv+wACT/nQAy\n/9IANwAJADwACABS/6oAff+WAWH/nQFr/50Bb//SAXMACQF0AAgBdf+qAXv/tQF8/8IBgP+rAYT/\ntgGF/+YBjv+oAZD/pQGS/6EBlP+jAZv/qAGc/70Bnf+TAjf/8wAOAA//lgAR/5QAJP+jADL/wwA3\nAAkAff+WAWH/owFo/8IBb//DAXMACQF1/6oBj/+5AZv/rgJ5/7UADQAk/8UAN/+hADz/pQBS//QB\nYf/FAWv/xQFz/6EBdP+lAYr/1gGO//IBmP/aAZv/8gGd/9oACwAy/9gAUv/YAWj/1wFv/9gBe//X\nAXz/6gGA/9kBjv/WAZP/ygGY/8IBm//WAAQAJP/NADL/8QFh/80Bb//xAA4ADwAJABEACQAdAAEA\nHgAMAFIADgB9/+kBggAaAYMACwGEABkBhwAPAY0ACQGOAAwBkgAFAZj/9AALAB4ABwBSAA4BgAAQ\nAYMADAGFAAgBhwANAYoABgGOAAwBkwALAZUADgGY//gAAQGD//4AFAAE//AADwAJABEACQAdAAEA\nHgAMAFIADgB9/+kBggAaAYMACAGEABkBhwAPAY0ACQGOAAwBjwADAZIABQGTAB0BlQAKAZoABwGb\nAAwBnAAHAAIBgv/rAYr/5wAOAFL/6QF7/+wBfP/7AYD/7wGD/+YBhP/7AYr/0gGN//UBjv/rAZD/\n5AGY/9IBm//rAZz/+AGd/9IAAQGM/+0AFABSAA4BewANAXwAIAGAABABgwAMAYQAIAGFAAgBhwAN\nAYoABgGNABUBjgAMAZIABQGTAAsBlAAGAZUADgGW/+IBmP/4AZsADAGcAAYBnf/4AAsAUv/cAXv/\n3AF8//QBgP/eAYT/9AGO/9cBlP/eAZj/zAGb/9cBnP/eAZ3/zAARAA//9wAR//cAUv/sAH3/yQF7\n/+8BfP/6AYD/7QGD/+kBhP/6AYf//gGO/+oBkv/jAZX/5wGY/9UBm//qAZz/8wGd/9UAFAAP//sA\nEf/7AFL/7gB9/9ABe//vAXz/+wGC/9ABhP/7AYz/1gGN/+oBjv/sAZL/5QGT/88BlP/pAZX/6wGY\n/9cBm//sAZz/6QGd/9cCN//EABMAD/+4ABH/uAAd/+AAHv/kAFL/7QB9/9IBe//sAXz//gGA/+8B\ng//rAYr/0gGO/+wBkv/lAZX/6QGY/9IBm//sAZz/+QGd/9ICNwAEAAkAUv/tAXv/7wF8//oBgP/x\nAYT/+gGO/+0Bm//tAZz/5AGd/9IACAGAAAYBgv/oAYr/7AGM/+0Bj//kAZP/7wGU//wBlv/TAAgA\nUv/nAXv/5gGK/9IBjv/lAZv/5QGc/+MBnf/MAjf/7wAIAAT/4QB9/+sBgv/mAYr/6gGM/+sBj//f\nAZP/6wGW/9EAAQGK/+IAFQAP/80AEf/MAB3/5QAe/+UAUv/8AH3/uwF7//wBfAANAX7/+wGA//4B\niv/QAY7//AGQ//ABkv/1AZMAGwGV//QBmP/aAZv//AGc//0Bnf/aAjf//QAEAYL/9gGK/+kBk//7\nAZb/4wABAZP/6gALAFL/0wF7/9IBfP/iAYD/1AGE/+IBh//tAY7/0QGY/7wBm//RAZz/4gGd/7wA\nBgGC/9EBiv/WAYz/2QGP/80Bk//WAZb/vwABAYz/9QAFAYL/6AGM/+0Bj//kAZP/7wGW/9MABgGC\n//YBiv/pAYz/9QGP/+IBk//7AZb/4wAnAaX/4AGq/80BrAACAa8ADgG1/7oBvP/WAb//2QHC/9kB\nwwARAcQADAHF/7gByAACAdH/bgHT/30B1f9nAdb/cwHX/24B2P9sAdn/cAHb/3wB3P9cAd3/fQHe\n/3QB3/90AeD/cgHh/3wB4v94AeP/HAHk/10B5f96Aeb/XgHn/2wB6P9MAev/dAHv/30B8P9uAfX/\ndQH6/1sB///qAAcBrP+SAa//sQHD/48BxP+vAcj/ygHL/5YB6//OAAcBrP+UAa//swHD/5ABxP+w\nAcj/ywHL/5cB6//QABEBpf/LAbj/wwG//8sBwv/HAcX/ugHR/98B0v/NAdb/zQHY/90B3//NAeL/\n0gHj/2sB5P+0AeX/qAHo/6EB9f/PAf//xwAlAaX/0QGq/8cBrP/8Aa8ADgGx/6gBtf+yAbj/0gG8\n/9ABv//NAcL/ywHDAAsBxf/AAdD/3wHR/7wB0v/OAdX/ngHW/7oB1//ZAdj/vwHZ/8IB2//PAdz/\nqQHd/88B3v/GAd//uwHg/8QB4f/RAeL/vgHj/54B5f+XAeb/2gHn/74B6P/PAe//1QHw/8QB9f++\nAfr/qAAdAA8AAwARAAQAHf/yAB7//gB9/+ABpf/kAaoAAQGs/50Br//MAbj/2gG8AAsBv//hAcL/\n4AHD/5wBxP/KAcX/zwHI/8gBy/+uAdj/7gHc//4B3//2AeL/+gHj/3sB5P/dAeX/1AHo/8wB6//T\nAfr//QH//9cADgGs/9IBr//eAbH/6gG3/+sBw//hAcT/3QHI/9YByf/2Adf/9wHj/3wB5P/lAev/\n1AH6/+IB///jAA8BrP/MAa//ywGx/+cBt//qAcP/2wHE/9QByP/pAckABgHX//sB4/+rAeT/7AHo\n/+UB6wADAfr/6gH///AAKwAP/2wAEP+BABH/agAd/2wAHv90AaX/3wGq/8sBrwAMAbX/uAG8/9UB\nv//YAcL/1wHDAA8BxAALAcX/tgHIAAEB0f9tAdP/ewHV/2YB1v9yAdf/bAHY/2sB2f9uAdv/ewHc\n/1sB3f97Ad7/cgHf/3IB4P9wAeH/egHi/3cB4/8bAeT/XAHl/3gB5v9dAef/agHo/0sB6/9zAe//\nfAHw/2wB9f90Afr/WgH//+kAAQHF/9UAEQGl/+gBuP/dAb//4wHC/+QBxf/SAdH/8wHS/+oB1v/n\nAdj/8QHf/+cB4v/sAeP/fwHk/9EB5f/DAej/uQH1/+kB///eABUBqv/fAaz/xgGv/8QBsf/dAbX/\n5QG3/+MBuP/mAbz/6QHD/9UBxP/NAcb/0QHI/+IB0P/0Adz/4wHj/6MB5P/kAeb/3wHo/9sB8P/2\nAfr/3gH//+kAEQGl/9MBuP/MAb//0wHC/88Bxf/BAdH/3QHS/9UB1v/SAdj/2gHf/9IB4v/XAeP/\ncQHk/7gB5f+uAej/qAH1/9QB///aABABqv/hAaz/ugGv/8IBsf/gAbX/0wG3/+UBuP/qAbz/6gHD\n/8kBxP/RAcb/1AHI/+0By//fAdD//AHc/+sB+v/qABgAD/+AABD/3gAR/30AHf/MAB7/zAGq/7wB\nsf+zAbX/rQG8/8UBwv/nAcj/6wHQ/+YB0f/gAdP/6gHU/8cB1f+3Adb/4AHY/+QB3P/EAd//4gHi\n/+UB5f++AfX/5QH6/8MAEwGq/94BrP/OAa//zwGx/+ABt//nAbj/7gG8/+gBv//5AcL/9QHD/90B\nxP/UAcX/5gHG/9YB0P/7AeP/tgHk//YB6P/rAfr/5AH///UALwAP/50AEP+5ABH/oAAd/58AHv+o\nAH3/lQGl/9gBqv/EAaz/+gGvAAUBsf+cAbX/sQG4/90BvP/OAb//0QHC/9ABwwAIAcQABAHF/68B\n0P/pAdH/owHT/7AB1P+NAdX/nAHW/6YB1/+kAdj/mgHZ/6MB2/+wAdz/lAHd/7AB3v+nAd//pgHg\n/6UB4f+rAeL/qwHj/1EB5P+QAeX/gQHm/5AB5/+fAej/gQHr/6kB8P+jAfX/qAH6/5MB///iAC4A\nD/+VABD/0AAR/5kAHf+5AB7/wgB9/60Bpf/VAar/xQGs//sBsf+2AbX/sAG4/9ABvP/PAb//0AHC\n/8wBwwAJAcQACwHF/78ByP//AdD/3QHR/7oB0v/MAdX/rAHW/70B1//XAdj/vQHZ/8EB2//NAdz/\nqAHd/84B3v/FAd//vgHg/8MB4f/QAeL/wgHj/5wB5P/eAeX/mQHm/9gB5/+9Aej/zQHv/9MB8P/C\nAfX/vwH6/6cB///nAA4Bqv/MAa//swGx/88Btf/BAbf/1AG8/9UBxP++Acb/wwHI/+YBy//AAdD/\n6QHV/9oB3P/cAfr/2wAPAaX/2QG4/80Bv//UAcL/0AHF/8IB0f/hAdb/0wHY/94B3//TAeL/2AHj\n/3UB5P+/AeX/rwHo/6kB9f/VAAcBrP+XAa//tgHD/5QBxP+0Acj/zwHL/5sB6//TAAcBrP+YAa//\ntwHD/5UBxP+1Acj/0AHL/5wB6//UAAwBqv/jAaz/vgGv/8QBsf/iAbX/1wG8/+wBw//NAcT/1wHI\n//IBy//jAdD//gH6/+wAEAGq/9sBrP+0Aa//vAGx/9oBtf/NAbf/3wG4/+QBvP/kAcP/wwHE/8sB\nxv/OAcj/5wHL/9kB0P/2Adz/5QH6/+QABQHj/6QB5P/gAej/2QH6//0B///nAAgB1//4Adj/9AHj\n/6QB5P/nAeb/5AHo/+0B8P/5Af//7gAIAdcAAgHY//4B4/+zAeT/7QHm/+8B6P/uAfAAAQH///kA\nDgAP/4YAEP+ZABH/ggAd/8wAHv/MAdX/twHc/8QB3//hAeL/5QHl/7sB8P/qAfX/5QH6/8MB///2\nAAgB1//0Adj/8wHc/+UB5P/nAeb/5AHo/+8B8P/4Af//7gAIAdL//AHW//YB2P/zAd//+gHi//8B\n5f/UAfX//AH/AAEACQHX//cB3P/tAeP/rQHk/+UB5v/jAej/5QHw//oB+v/pAf//7QABAfr/4QAJ\nAdH/4AHS/+YB1v/hAdj/3gHf/+UB4v/pAeX/vgH1/+YB///sAAkB1//3Adj/9gHc/+YB4/+nAeT/\n6gHm/+MB6///Afr/5QH///IADgAP//EAEAAXABH/7wAd//QAHv//Adf//QHY//sB3P/sAeP/qwHk\n//AB5v/pAej/9AH1AAkB///3AAwBr//AAdH//wHX//oB2P/+Adz/8gHj/7cB5P/sAeX/3AHm/+YB\n6P/0AfD//AH6/+4AFQAP/1sAEP9uABH/VwAd/5sAHv+bAH3/VAHR/7EB1f+GAdb/rwHY/7QB3P+T\nAd//sAHi/7QB4/+IAeT/xgHl/4oB6P+5AfD/uQH1/7QB+v+SAf//xQATAA//ugAQ//AAEf+6AB3/\n2AAe/+AAff/MAdH/5AHV/9AB1v/mAdj/6AHc/9EB3//nAeL/6wHj/8UB5f/DAej/9gHw/+0B9f/o\nAfr/0AANAdT/wAHV/80B1//WAdj/0wHc/8YB4/+FAeT/yQHm/8IB6P/SAev/3QHw/9sB+v/FAf//\n0QAIAdH/5AHW/+gB2P/kAd//6QHi/+0B5f/FAfX/6gH/AAMABwHW//QB4v/5AeP/XAHk/80B6P/f\nAev/uQH//9UABwHW//MB4v/4AeP/WwHk/8wB6P/eAev/uAH//9QACAHc/+4B4/+qAeT/7gHo//IB\n6wACAfAAAQH6/+kB///1AAoB1//wAdj/7wHc/98B4/+gAeT/4wHm/9wB6P/nAev/+AH6/94B///r\nAAcB1f/WAdz/4wHiAAMB5f/aAfAACQH1AAMB+v/iAAUB4/9UAeT/xQHo/9YB6/+xAf//zAAIAdb/\n+QHi//4B4/9hAeT/0gHo/+MB6/++AfX/+wH//9kACQHR/+kB0v/vAdb/7AHY/+cB3//tAeL/8QHl\n/8oB9f/uAf//7gAMAdH/5QHV/9cB1v/uAdj/5gHc/9cB3//uAeL/8wHj/8MB5f/LAej/9AHw/+sB\n9f/wACgBpf/sAar/2AGsAA0BrwAeAbX/xQG8/+IBv//lAcL/5AHDABwBxAAcAcX/wwHIABAB0P/9\nAdH/dgHT/4YB1f9zAdb/fgHX/30B2P90Adn/eQHb/4YB3P9oAd3/hgHe/30B3/9+AeD/ewHh/4EB\n4v+DAeP/KAHk/2cB5f+FAeb/aQHn/3UB6P9YAev/gAHv/4cB8P99AfX/gAH6/2cB///4AAgB1f/d\nAdz/6gHfAAcB4gALAeX/4gHwABAB9QALAfr/6QAdAEQADgBFACcARgAwAEcAMgBIACsASQATAEoA\nMgBLAB0ATAAfAE0AIQBOACMATwAeAFAAHABRAB0AUgAtAFMAJwBUADMAVQAdAFYAFgBXABYAWAAf\nAFkAEABaABoAW//rAFwADQBd/+AApgAOALgALQC+AB8AJAAk/8MAJv/9ACr/+wA0//0AN//yADkA\nAgA6AA4AO//iADz/9gA9/98ARP/oAEb/+ABH//kASP/0AEn//ABK//kAUv/2AFT/+gBW//sAV///\nAFkAAgBaAAcAW//uAFz//ABd/+AAg//DAIb/wwCH/8MAiP+0AKb/6ACo/+sAuP/2ARQAAgEV//MC\n9QABAvb//wAWAAwAKAAP/8EAEf/AACT/xABAACoAR//yAFL/7gBV//AAVv/0AFf/9QBZ//oAWv//\nAFz/+ABgADEAg//EAIb/xACH/8QAiP+0ALj/7gEd//QBIf/0ASP/9AASACQADgAm//UAKv/1AC0A\nGwAy//cANP/5ADYABgA3/6oAOf+wADr/0wA8/5oAPQAOAEr/+ABWAAMAWf/NAFr/3QBc/8kAXQAB\nACUAJP/SACYACwAqAA0AMgAPADQADAA2AA8AOQARADoAHQA7//YAPAAHAD3/7gBE//cARgAKAEcA\nCwBIAAIASQALAEoABwBSAAQAVAAMAFYADQBXAA4AWQAUAFoAGABb//0AXAAPAF3/8QCD/9IAhv/S\nAIf/0gCI/8MApv/3AKj/+gC4AAQBFAAUARUAAQL1ABAC9gANAAkAJP/UADcAAgA5ABIAOgAdADwA\nBQCD/9QAhv/UAIf/1ACI/8QAFgAkAB4AJgADACoAAwAtACsAMgAGADQABwA2ABYAN/+5ADn/wAA6\n/+IAOwAKADz/qQA9AB0ASgAHAFYAEwBZ/90AWv/sAFz/2QBdABEAiAAeAJ//qQEm/7kACQAk/9gA\nN/+NADn/rgA6/8kAPP+IAIP/2ACG/9gAh//YAIj/1gAKADL/8AA8/6sAUgAGAW//8AF0/6sBewAF\nAXwAEAGEABABjgAEAZ3/7QABAOcABAAKAAsADQAPABAAEQASACIAJAAlACYAJwAoACkAKgArACwA\nLQAuAC8AMAAxADIAMwA0ADUANgA3ADgAOQA6ADsAPAA9AD4APwBEAEUARgBHAEgASQBKAEsATABN\nAE4ATwBQAFEAUgBTAFQAVQBWAFcAWABZAFoAWwBcAF0AXgBtAH0AggCDAIQAhQCGAIcAiACJAJQA\nlQCWAJcAmACaAJsAnACdAJ4AnwChAKIAowCmAKcAqACrAKwArwC0ALUAtgC4AL4AvwDEAMYAzgDP\nANEA2wD/AQABAwEUARUBFwEbAR0BIwEkASYBJwE8AT4BQAFYAVoBXQFeAWEBYgFjAWUBZgFoAWoB\nawFsAW0BbgFvAXABcQFyAXMBdAF1AXYBdwF7AXwBfgGAAYEBggGDAYQBhQGJAYoBjAGNAY4BjwGQ\nAZIBkwGUAZUBlgGYAZoBmwGcAZ0BpAGqAasBrQGvAbEBsgGzAbQBtgG3AbgBuwG/AcEBwgHDAcQB\nxQHGAcsBzQHOAc8B0QHSAdMB1AHWAdcB2AHaAdsB3wHhAeIB4wHkAeUB5gHrAe0B7gHvAfQB+gH7\nAf0B/wIHAggCMgI2AjcCOAI6AjsCPAJFAnkAAAABAAAAANpTmfAAAAAA0e+yRQAAAADR77JF\n`;\n\nexport const NimbusSansLBolItaBoldItalic = `AAEAAAAPAIAAAwBwRkZUTX4y/n0AAX8AAAAAHEdERUYAJQAAAAE9GAAAABhHUE9TORd/zQABPlgA\nAECmR1NVQjf5Jh4AAT0wAAABKE9TLzJsiMW0AAABeAAAAGBjbWFwlCMf9gAADbwAAAZMZ2FzcP//\nAAMAAT0QAAAACGdseWZEAl6WAAAZ/AABBkBoZWFkBxaobQAAAPwAAAA2aGhlYQfOBZQAAAE0AAAA\nJGhtdHg+/eP4AAAB2AAAC+Jsb2NhsdPy1AAAFAgAAAX0bWF4cANtAMsAAAFYAAAAIG5hbWVGXdJp\nAAEgPAAABONwb3N0of+rfQABJSAAABfuAAEAAAABAADiy6g2Xw889QALA+gAAAAA0e+yRgAAAADR\n77JG/2n+ywSsBDEAAwAIAAIAAAAAAAAAAQAAAtn+8QDIBHr/af7NBKwAZAAVAAAAAAAAAAAAAAAA\nAvgAAQAAAvkAyAAyAAAAAAACAAAAAQABAAAAQAAAAAAAAAADAnICvAAFAAgCigJY//AASwKKAlgA\nSgFeAEUBOwAAAAAIAAAAAAAAAAAAAocAAAAAAAAAAAAAAABVUlcgACEAIPsEAtn+8QDIBDEBNWAA\nAJ8AAAAAAg4CzgAAACAAAwEWAAAAAAAAAU0AAAEWAAABTQBwAdoAsQIsACECLAA7A3kAgQLSAFkA\n7gCxAU0AVAFN/+sBhQCRAkgAVwEWABsBTQBGARYAQAEW//8CLABRAiwArAIsAB4CLABDAiwAOQIs\nADsCLABVAiwAgwIsADwCLABEAU0AcQFNAEwCSABNAkgAPQJIACYCYwCoA88ASQLSABoC0gBSAtIA\nawLSAE0CmwBPAmMASgMKAGsC0gBEARYAPwIsADsC0gBKAmMAUANBAEIC0gBEAwoAagKbAEwDCgBt\nAtIAUAKbAEwCYwCOAtIAdwKbALMDsACoApsAFgKbALYCYwAeAU0AFwEWAIoBTf/nAkgAdwIs/78B\nTQCvAiwAMgJjADsCLABNAmMATwIsAEABTQBaAmMAGgJjAEMBFgBDARb/1QIsADsBFgBDA3kAPAJj\nAD8CYwBSAmMACwJjAEgBhQA/AiwAPAFNAGUCYwBYAiwAgQMKAHgCLAAQAiwAJQH0ABUBhQBUARgA\nOQGFAB0CSABhARYAAAFNABoCLABPAiwAMQIsAEICLABrARgAOQIsADgBTQCTAuEANgFyAGACLACH\nAkgAZwFNAEYC4QA3AU0AlgGQAKQCSAAyAU0ARAFNAFsBTQD3AmMACwIsAHkBFgCPAU3/8wFNAJoB\nbQBcAiwAZwNCAJIDQgCLA0IAZwJjADQC0gAaAtIAGgLSABoC0gAaAtIAGgLSABoD6AABAtIAawKb\nAE8CmwBPApsATwKbAE8BFgA/ARYAPwEWAD8BFgA/AtIASQLSAEQDCgBqAwoAagMKAGoDCgBqAwoA\nagJIAGYDCgAiAtIAdwLSAHcC0gB3AtIAdwKbALYCmwBMAmMAQwIsADICLAAyAiwAMgIsADICLAAy\nAiwAMgN5ADYCLABNAiwAQAIsAEACLABAAiwAQAEWAEMBFgBDARYAQwEWAEMCYwBTAmMAPwJjAFIC\nYwBSAmMAUgJjAFICYwBSAkgATQJjAAwCYwBYAmMAWAJjAFgCYwBYAiwAJQJjAAsCLAAlAtIAGgIs\nADIC0gAaAiwAMgLSABoCLAAyAtIAawIsAE0C0gBrAiwATQLSAGwCLABNAtIAawIsAE0C0gBNAucA\nWgLSAEkCYwBPApsATwIsAEACmwBPAiwAQAKbAE8CLABAApsATwIsAEACmwBPAiwAQAMKAGsCYwAa\nAwoAawJjABoDCgBtAmMAHAMKAGsCYwAaAtIARAJjAEMC0gBEAmMAQwEWAD8BFgBDARYAPwEWAEMB\nFgBAARYAQwEWAAcBFgAHARYAPwEWAEMDDgA/AiwAVwIsADsBFv/VAtIASgIsADsCLAA7AmMAUAEW\nAEMCYwBQARYACwJjAFABkABDAmMAUAHfAEQCYwA2ARYAMgLSAEQCYwA/AtIARAJjAD8C0gBEAmMA\nPwLEAGkC0wBLAmMAPwMKAGoCYwBSAwoAagJjAFIDCgBqAmMAUgPoAFoDsABHAtIAUAGFAD8C0gBQ\nAYUACALSAFABhQA/ApsATAIsADwCmwBMAiwAPAKbAEwCLAA8ApsATAIsADwCYwCOAU0APgJjAI4B\nhQBlAmMAjgFNAFIC0gB3AmMAWALSAHcCYwBYAtIAdwJjAFgC0gB3AmMAWALSAHcCYwBYAtIAdwJj\nAFgDsACoAwoAeAKbALYCLAAlApsAtgJjAB4B9AAVAmMAHgH0ABUCYwAeAfQAFQEWAD4CLP/rAtIA\nGgIsADID6AABA3kANgMKACICYwAMApsATAIsADwCYwCOAU0APgFNAIcBTQCnAU0AlgFNALwBTQDx\nAU0A1gFNABcBTQB1AU0AUgFNAQYBTQCWAtIAGgEWAI8DVgC6A4oAswHZALYDTACSA6IA1QNPAFEB\nFgBFAtIAGgLSAFICYgBOAp//7gKbAE8CYwAeAtIARAMKAGoBFgA/AtIASgKb//sDQQBCAtIARAKR\nACIDCgBqAs4AQAKbAEwCTgAVAmMAjgKbALYDNgCBApsAFgM9AJEDDQAbARYAPwKbALYCbABaAd8A\nOgJjAEIBFgBFAk8AWAJsAFUCbQAaAiwAgQJiAFUB3wAzAewAUAJjAEICLgBVARYARQI2AEACLAAQ\nAlsADgIsAIABwgA5AmMAVQLIAHQCXQAMAhQATwKYAG0BmQBqAk8AWALAAEUCQv/dAwUAbANCAHIB\nFgBFAk8AWAJjAFUCTwBYA0IAcgJPADYC9QBiA0IAegKbAE8CmwBJA3YAywJmAE8CzwBjApsATAEW\nAEABFgA/AiwAPgRGABAEEgA4A1YAoAJuADwCzwBBAqUATwLPAE0C0gAXAsQARQLSAE8CZgBWAtL/\n5QKbAEkDn//2AoMAagLPAEECzwBBAmcAOAKv//0DQQA9AtIAQgMKAGwCzwBIApsARQLSAGgCYwCO\nAqUATwMNAGACmwAWAtkARALEAHsD0wBDA90APwNWAIgD6AB1AsQAXgLPAEgEEgAzAtkANwIsADcC\nawBaAlwAUgIWAEQCav/3AiwASgLg//wB/gBKAmMARAJjAEQB+wA0Am4AHgLkAFECXABAAmMAVQJj\nAEwCYwAOAiwAUQN5AN4CLAAxA3UAegIsABIChgBXAkcAZgN5AD4DpwBLAsMAaQNWAGUCUgBSAigA\nKwNhADkCTQA0AiwAQAIsAEoCYwCOAdUAPwIzAEkCLAA9ARYARQEWAEMBFv/XA8kAIQOKAEYCYwBf\nAfsAOQJjAEQCLAAxAmMATwM2AGQDTwCTAwoAagJjAEADEAC1AmYAiQI/AHsB0wBFAd8ASwGQAEAE\nZgA3A4AALALYAEMCXQBAAqYAQwIvAD8C0gBDAlsAQAKbALYCHwB+ApsAogIfAFECzQAWAk0ADALN\nAIACWQBwAs0AgAJZAHACzQBDAkkAUgEWAEABFgBAAwoAaAI/AFQC0gAXAiwANwMKAGwCYwBVAo8A\nQwI/AFQDsACoAwoAeAOwAKgDCgB4A7AAqAMKAHgCmwC2AiwAJQH0AAACLAAjA+gAJQPoACUCKP+f\nARYApwEWAKUBFgAlARYAyQH0AKsB9ACtAfQAJQIsAG0CLAAjAV4AbwPoAFwD6ABIAPAAZwHfAH8B\nTQCAAU0AYAJcAFEBTQAZARb/hgFNAGQBTQBUAU0AVwFNAGcBTQCDAU0AVwFNAFwBjABpAiwAGwIs\nADEEUABKAiwAFQN1AWsC0gB4AgQASwR6ADwCrQBVAwoASAL3AJ4D6ADVAwAAFQJYAEQB9AAcA0IA\nhwNCAG0DQgBoA0IAhAPoAFYB9ABQA+gAVgH0AFAD6AB7AfQAUgLSAFsC0gBbAtIAWwLSAFsB9ABS\nA+gAogLSAAgC0gCLAtIACQLSAIsC0v/LARb/aQHuABoBqv/WA+gAaAJk/84C5QBFA+gA6QPoAOkD\n6ADpAzcABgJY/+wCSABNA+gA7AEW/4YD6AFlARYAjwIlAGoD6ADFAskATgPTADID6ADTAtIBSALS\nAPsD6ADzA+gA8wLSAFUD6AEYARIAAQPoARwD6ADEA+gAqAPoAMQBFv+aAiUAOQIlACwCRwAvAiUA\nEgIlABsD6ADpA+gA6QPoAOkD6ADQA+gA6QPoAOkD6AC5A+gAugPoAMkCXAALAkgAQwJcARcCXACz\nAU0AOgFNADoCxP9uAnEBGALEAUECxP9uAsQBQQLE/24CxAFBAsT/bgLE/24CxP9uAsT/bgLE/24C\nxAD/AsQBQQLEAP8CxAD/AsT/bgLE/24CxP9uAsQBQQLEAP8CxAD/AsT/bgLE/24CxP9uAsQBQQLE\nAP8CxAD/AsT/bgLE/24CxP9uAsT/bgLE/24CxP9uAsT/bgLE/24CxP9uAsT/bgLE/24CxP9uAsT/\nbgLE/24CxP9uAsT/bgLEAWICxP9uAsT/bgLZ/3gCXP/BAlwAKwFiADEBYgAxA+gAiAPeAMMD3gDo\nA94AwwPeAMEB7gBiAlwAFwJcACsCXP/4Alz/wQFiAFUD/QCSBBwAogOVAE0C7gC9Au4AZwITAAQC\nkP/bAlL/5gH+//gB9AAzAu4AUgKaAFoCYwBaAmMAWgOvAFoAWgAAAAAAAwAAAAMAAAAcAAEAAAAA\nBEIAAwABAAAAHAAEBCYAAACmAIAABgAmAH4BfwGSAf8CGwLJAt0DigOMA6EDzgPWBF8EYwR1BJ0E\nowSzBLsEwATPBNkE4wTpBO8ehR7zIAIgFSAeICYgMyA+IEQgcCB5IH8gpyCsIQUhJiEuITUhXiGZ\nIaghtSHUIgMiCSIlIisiLiI3IkgiZSKHIpcipSMCIxAjISMqJQIlHCUkJSwlNCU8JWwlkyWhJawl\nsiW8JcQlzyXZJeYmQiZr+wT//wAAACAAoAGSAfoCGALGAtgDhAOMA44DowPRBAAEYgRyBJAEogSu\nBLYEwATPBNgE4gToBO4egB7yIAIgEyAXICAgMCA5IEQgcCB0IH8goyCsIQUhESEuITUhWyGQIagh\ntSHQIgAiBSILIiciLiI0IkUiYCKCIpUipSMCIxAjICMpJQAlDCUkJSwlNCU8JVAlgCWgJaolsiW6\nJcQlyiXYJeYmOiZg+wD////j/8L/sP9J/zEAAP54/dL90f3Q/c8AAP2h/Z/9kQAA/W/9Zf1j/V/9\nUf1J/UH9Pf0546njPeIv4h/iHgAAAAAAAOIE4dnh1uHRAADhqOFQAADhMOEq4QXg1ODG4LrgoAAA\n4HMAAOBl4GMAAAAAAADgGQAA3/7fot+V34bffwAAAADdjd2G3X/deN1lAADdOt0y3S0AAN0eAADd\nDt0CAAAAAAAAAAEAAAAAAAAAAAAAAJwAAAAAAAAAAAAAAJgAAAAAAAAAnAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAmgCmAKwAAAAAAAAAAACuAAAAAACyAAAAAAAAAAAAAAAAAAAAzgAAANIA\nAAAAAQIBCAEOAAABFgAAAAAAAAAAAAABEAEUAAAAAAAAAAAAAAEqAAAAAAAAAUoAAAFMAAAAAAFS\nAWIBeAAAAU0BTgAAAU8BngAAAAAAAAGfAaACBwIIAgkCCgAAAAACCwIMAAAAAAINAg4CDwIQAj0C\nPgI/AAAAAAAAAkACQQAAAkICQwJEAkUAAAJGAAACRwJRAlIAAAAAAlMCVgAAAlcAAAAAAlgAAAJZ\nAAAAAAAAAloAAAJbAAAAAAAAAlwAAAAAAAACXQJ1AAACdgJ3An0AAAAAAAACfgAAAn8CgAKBAAAC\nggAAAoMAAAKEAoUAAAAAAoYChwKIAokAAAAAAooAAAKLApICkwAAApQClQAAAAAClgKXApgAAAAA\nApkCmgKhAAACogKqAAACqwKsAAAAAAAAAq0AAAAAAAACrgAAAAAAAAKvAAAAAAAAArAC0gAAAAAA\nAALTAAAAAAAAAtQAAAAAAAAC1QAAAAAAAALWAtcC2ALZAuAAAALhAuMC5AAAAAAAAALlAukC6gLr\nAAAAAAAAAuwAAALtAu4AAAAAAu8AAALwAvEAAAAAAAAC8gLzAvQC9QL2AvcC+AAGAgoAAAAAAQAA\nAQAAAAAAAAAAAAAAAAAAAAEAAgAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAEAAAAAAAMABAAFAAYABwAIAAkACgALAAwADQAOAA8AEAARABIAEwAUABUAFgAXABgAGQAaABsA\nHAAdAB4AHwAgACEAIgAjACQAJQAmACcAKAApACoAKwAsAC0ALgAvADAAMQAyADMANAA1ADYANwA4\nADkAOgA7ADwAPQA+AD8AQABBAEIAQwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQA\nVQBWAFcAWABZAFoAWwBcAF0AXgBfAGAAYQAAAIYAhwCJAIsAkwCYAJ4AowCiAKQApgClAKcAqQCr\nAKoArACtAK8ArgCwALEAswC1ALQAtgC4ALcAvAC7AL0AvgI9AHIAZABlAGkCPwB4AKEAcABrAlwA\ndgBqApcAiACaAocAcwKZApoAZwB3AnYCfwJ+AY8CkABsAHwBeACoALoAgQBjAG4ChQFCApYCeQBt\nAH0CQABiAIIAhQCXARQBFQIyAjMCOgI7AjYCNwC5AuMAwQE6AkgCVAJEAkUC9QL2Aj4AeQI4AjwC\nQQCEAIwAgwCNAIoAjwCQAJEAjgCVAJYAAACUAJwAnQCbAPMBTQFUAHEBUAFRAVIAegFVAVMBTgAA\nAAAAAAAAAAAAGgA0AGQAugEIAVoBbAGIAaQBwgHaAfAB/gIMAhoCUAJkApQC1gL2AyoDagOGA9IE\nEgQmBEQEWARuBIIEugUkBT4FeAWmBcoF5gX+BjgGVAZkBooGpga4BtQG7gciB0wHhAfGCBAIJAhM\nCF4IegiUCKwIxgjaCOgI/AkQCR4JLAmECbAJ4goQCkoKcAq4Ct4K9AsYCzILQgt+C6QL0gv+DCwM\nRgyKDLIM2AzqDQYNIA1GDWANpA20DfYOHA4cDjQOfA7KDwgPMA9ID6YPuhAIEFoQdhCIEJYQ8BD+\nESIRQhFuEaoRuBHsEgwSGhI+ElISghKiEtITEhNqE6ITxBPmFAwURBRsFKYUzhUaFTwVXhWEFawV\nwhXYFfIWDhY+FnQWrhboFyYXeBe6F9QYGhhIGHYYqBjcGPoZJBlgGb4aHBp+GvQbWhvQHDwcjBzK\nHQgdSh2QHaYdvB3WHfIePh6EHrge7B8kH24fqh/YIB4gTCB6IKwg4CEMITohbCGOIewiHCKGIrYj\nHCNSI4wjxiQCJEAkeiS0JPAlHiVeJY4lxiXoJigmWCaoJsonCCc4J4gnrifwKDQohijUKTApeinK\nKhQqaiqQKsAq7CsiK04reiuQK6YryivsLA4sNixMLFwsiCy6LOotEC0+LWothC2eLbQt2C34Lhou\nOi5ULmouiC6kLsQu8i8cL1QveC+qL+IwFjBKMIYwvDEGMUgxijHGMgYyWjKiMsQzFjNCM44ztjQG\nNFI0pjT2NV41wDYUNmQ2ijbCNuA3GDc2N2Y3rDfwOCA4TjiIOMI5CjlQOYY5ujn6OjQ6WjqAOqI6\n0jr2OxY7NjtWO3Y7mju+O9w8DjxOPMw8/D1uPbw+CD5kPr4+5D8cPy4/QD9OP2o/eD+eP74/5D/4\nQApAKEBMQFpAgECmQL5A/EEcQWRBikGkQd5B8EIEQiBCOkJWQpBCoEK8QtBC7EMGQyRDWENsQ5ZD\nsEPEQ9xEIkQ8RHJEsETMRPBFMkV8RbBFyEYKRkJGiEaeRtZHEkdIR3JHrEe8R9ZH6kgQSCJIbEia\nSLRI5kkmSVhJbEmYSdZJ8koqSmpKhkq+SvZLLEt2S7pMBkxKTGxMlEzQTOhNGk1kTXRNkE22Te5O\nJE5UTnZOmE7UTu5PCE8wT2ZPeE+kT8BP6lAuUEpQgFCcULpQ2FD0USRROFFiUZZRqlHKUghSIlI8\nUmJSfFKcUshS+FMgU1RTkFPMVB5UYFSUVKRUzFT+VSJVYlV8Va5VyFXoVgRWHFZKVl5WjFa+VtJW\n8lc6V1RXbleSV6xXzFf0WCBYRFh6WLBY4lkgWWBZmFmwWeZaKFo+WlpafFqyWuBbEFswW1BbiFug\nW9Jb/lxKXJJcslzSXOhc/l0aXTRdZF2OXbBdzl32XhheOl5YXnBehl6mXsJe4l8CXy5fWF+KX7hf\n3mAEYBRgJGBYYIpgvmEmYVhhimHAYgpiLGJOYnJilGK+YuhjBmMyYzJjQGNOY1xjcmOIY55jtGPQ\nY/ZkHGRCZFxkfmSWZLBlHmUsZUJlVGVoZZRlomWwZeRmAmYwZmpmgmbCZv5nJGdQZ6hoJmhkaHJo\nzmkWaVppvmpCanRqnmraaxZrbGvAbDxsrG0IbTZtZG2SbcBuEG5ebnRuiG6ebrJvCG8ibz5vWm92\nb5Jvum/UcBRwMHBqcH5wknC6cPhxHnFicZJxoHG8ccpx7HH6chByTHKWcqZyuHLGcthy7HL+cypz\nVnOQc950EHREdIB0snT2dRh1NnVSdWx1kHW0deh2HHZGdnB2qHbidvZ3EHcid0Z3aneId6Z3snfA\nd9B34HfweAB4FHgmeDh4THhkeHh4jHiieLh40njoeP55GHkueUR5Xnl0eYp5pHm8edZ59noOeiZ6\nRnpgenh6mHqwesh66HsKeyx7WHtme3R7gnuQe558Kn1OfdZ95H34fgZ+Gn4ofjZ+RH5SfmB+fn6i\nfrp+2H8Gfyh/gn/OgDCAYoC2gO6BQoFsgYKBsIHggiKCVoKEgtaDIAACAHAAAAGhAtYABQAJAAAB\nBwMjEzcTByM3AaEta0MYLRoflh8C1tL+ywE10v28kpIAAAAAAgCxAdYCQwLZAAUACwAAAQ8BIyc3\nIQ8BIyc3AVccRTgNHAF2HEU4DRwC2YKBgYKCgYGCAAIAIf/gApQCuQAbAB8AABcjNyM3MzcjNzM3\nMwczNzMHMwcjBzMHIwcjNyM3MzcjimlTTRVhPmMWdkdqSGdHakhXFWo+YxV3VGlTZihnPmYgzGSY\nZK2tra1kmGTMzGSYAAMAO/+CAnQC+wArADIAOAAAASM2NTQnBx4BFRQGBwYPASM3LgE1NDczBhUU\nFzcmNTQ2NzY/ATMHFhcWFRQFNwYHBhUUFwc+ATU0Am+AAzorXFRHOTpRFkQXV10IggFBLqVFOjVI\nC0QMTicy/tomJRAvYyowNQHyHQs8CskdUD1CeCAfCWlpCVdJGyAOE0sN1SqGPWweHAc2NgchLE4X\nYbUHDCA4MqnECzsqPAAFAIH/7AOHAsUAAwAPABsAJwAzAAABMwEjEzIWFRQGIyImNTQ2FyIGFRQW\nMzI2NTQmATIWFRQGIyImNTQ2FyIGFRQWMzI2NTQmAvRN/dlMkkNWiVhBVolBKD4pICk+KgGDQ1aJ\nWEFWiUEoPikgKT4qAsX9JwLRUT9WhlM+VYZiPigcJj0oHSb+/VE/VoZTPlWGYj4oHCY9KB0mAAAD\nAFn/6QLQAtMAIAArADUAAAEzDgEHFyMnDgEjIiY1NDc2NyY1NDYzMhYVFAcGBxc+AQ8BDgEVFBYz\nMjY3AzY1NCMiBhUUFgJfcQhCLF6gJUVVOl5oaiVDNYdaRFU1HkxSGRv8NCUgNCUaNzIbUDMdJAwB\n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\nYGgaDzQdDRIMFh09MUksImtTSZc2MTdcFJBcNDyHWzhCAUCTYWEAAAACAGv/6QMzA6YAJQA1AAAB\nAyM3DgEjIiY1NDY3NjMyFhUUByMuASMiBw4BFRQWMzI3NjcjNxMzDgEjIiY1NDczFRQWMzIDG1Ra\nBzhrRoScQzt8vnqWAooGU0eBSBsjYEpcRiQSphuvKwtbOzA6BSsnI04BiP52Wjs0moNXs0SRdWAE\nHDk8cCl7NU5lRiI6fQIePlE5LxIVCBseAAADABr/JgKQAvIAIgAuAD8AAAEzAw4BIyInLgE1NDcz\nBxQWMzI2PwEOASMiJjU0Njc2MzIXByIGFRQWMzI2NTQmEzMOASMiJjU0NzMGFRQWMzICC4V3FJ19\nWjUeJAOQATAmN1EKEDBILkxjNCtUeFgnfj1gLSdDYjKGKgpcOzA6BisBJyNPAhz90mBoGg80HQ0S\nDBYdPTFJLCJsUkmXNmhcFJBcNDyHWzhCAT09UjgvFBQEBBseAAAAAgBt/+kDMQOaACsALwAAAQMj\nNw4BBwYjIiYnJjU0Njc+ATMyFxYVFAcjJicmIyIHBhUUFjMyNzY3IzcTByM3AxpUWgMcIRpIUkhn\nKTlBOTapYXlISQGNBhUnUXZTRFdKVk4oEaYbfRpuGgGI/nZgJB8NJTQ6UWdTsEZDSkFBWQ4MNhUq\nc12DTltIJTV9AhJ6egAAAAMAHP8mAo8C5wAkADAANAAAATMDBiEiJy4BNTQ3MxQXFjMyNj8BBiMi\nJyY1NDY3PgEzMhcWFwciBhUUFjMyNjU0JhMHIzcCCoV2Kv7/WDIfKQKRDBczMlIKEDptSi01Miol\nbTo3JRoKez5hKydDZC9MGm4aAhz90sgbEDweAhIZDRlALklOMDteRJA3MTcrHhMZkVwwNYZaNzsB\nN3p6AAACAGv+zQMzAuUAJQAwAAABAyM3DgEjIiY1NDY3NjMyFhUUByMuASMiBw4BFRQWMzI3Njcj\nNwMzBw4BBzc+ATcjAxtUWgc4a0aEnEM7fL56lgKKBlNHgUgbI2BKXEYkEqYbtHoVB1o4CiEwBEMB\niP52Wjs0moNXs0SRdWAEHDk8cCl7NU5lRiI6ff48YDpYBS4HMSEAAwAa/yYCkANWACIALgA5AAAB\nMwMOASMiJy4BNTQ3MwcUFjMyNj8BDgEjIiY1NDY3NjMyFwciBhUUFjMyNjU0JjcjNz4BNwcOAQcz\n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\nITcCcBb9yRYBN2hoAAEAJQDPBC4BNwADAAABByE3BC4W/A0WATdoaAABACUAzwQuATcAAwAAAQch\nNwQuFvwNFgE3aGgAAv+f/uECJP+0AAMABwAABQchNyUHITcCBg/9qA8Cdg/9qA/aRUWORUUAAAAB\nAKcB1QFlAtkACQAAASM3PgE3BwYHMwEuhxcKWkMKVg1RAdVtQVEFLg9KAAEApQHVAWQC2QAJAAAT\nMwcOAQc3Njcj3IgXCVlGClYNUQLZbUJQBS4PSgAAAQAl/3kA5AB9AAkAADczBw4BBzc2NyNciBcJ\nWUYKVg1RfW1CUAUuD0oAAAABAMkB1QFwAtkADQAAAQcjBhUUFwcuATU0PwEBcBpRA0AJMj4IFwLZ\nfRUILw0uAzYpECVtAAAAAAIAqwHVAkwC2QAJABMAAAEjNz4BNwcGBzMXIzc+ATcHBgczATKHFwpa\nQwpWDVHIhxcKWkMKVg1RAdVtQVEFLg9KfW1BUQUuD0oAAAACAK0B1QJTAtkACQATAAATMwcOAQc3\nNjcjJTMHDgEHNzY3I+SHFwpaQwpWDVEBA4cXClpDClYNUQLZbUFRBS4PSn1tQVEFLg9KAAAAAgAl\n/3kBzgB9AAkAEwAANzMHDgEHNzY3IyUzBw4BBzc2NyNchxcKWkMKVg1RAQaHFwpaQwpWDVF9bUFR\nBS4PSn1tQVEFLg9KAAAAAAEAbf8+AnICxQALAAABByMDIxMjNzM3MwcCchmzd4Z3sxmzMIUvAeV0\n/c0CM3Tg4AAAAAABACP/PgJvAsUAEwAAAQcjBzMHIwcjNyM3MzcjNzM3MwcCbxmyMLMZsjCGMLMZ\nsjCzGbIwhjAB5XTfdODgdN904OAAAAEAbwCvAW8BqQALAAABMhYVFAYjIiY1NDYBAi4/WzsuPFkB\nqTwsOVk7LTpYAAAAAAMAXAAAA6sAkgADAAcACwAAJQcjNyEHIzchByM3AREflh8B4x+WHwHjH5Yf\nkpKSkpKSkgAHAEj/6wP9AuMAAwAPABsAJwAzAD8ASwAAATMBIxMyFhUUBiMiJjU0NhciBhUUFjMy\nNjU0JhMyFhUUBiMiJjU0NhciBhUUFjMyNjU0JiUyFhUUBiMiJjU0NhciBhUUFjMyNjU0JgKOQ/25\nQvQ2Rm9INUZvNiE0IxoiMyPLNkZvSDRGbjciMyIaIjMiAWc2Rm9INEZuNyIzIhoiMyIC4v0JAvhC\n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\nByc+ATMyHwEWMzI2NTQB4DwcHypAYpQVDTQUGysCGS01b2R6iQI+LBQoQkMmYBsWI0MaGBMmCiUp\nExQhXjAXGybqTSUtHS8hEkEZDQcSByETIy4hIiAoQElRLw4rNiAaJStIPlEtGiURIQ0PCDEjEC0X\nOCgpAAAAAAIAS//uAg8C4wAmADAAAAEGFRQzMjY3NjMyFRQHBiMiJjU0NwYjIiY1NDc2Nz4BMzIW\nFRQHBgc2NzY1NCYjIgYBHCsaEx8VCw8QGDFAKjARPxAFCx0UODiBUCYsUy5may0gFBAqQAEksjUc\nGiMTDRMiQTArJW8yCgUKFQwy7d8uKFxwPihcYUUzFBeZAAAAAAQAPAAABKwC5QAJAA0AHQAoAAAh\nCwEjEzMbATMDMzchBwMyFhUUBgcGIyImNTQ2NzYXJgYVFBYzMjY1NAGyjWx9mnuLa3yaZRQBsRRM\nU2YpHlGBU2UpHVBiOFYrJTpTAgL9/gLZ/gYB+v0nX18C5WtXQJQteWtYPpQtenEDjF81PYlebgAA\nAAACAFX/VwJcAZIAPABHAAABFw4BFRQXPgEzMhYVFAcGIyImNTQ2MzIWFRQGBwYVFBYzMjY3PgE1\nNCYjIgcGBxYVFAYjIiY1NDY3JjU0Fw4BFRQWMzI2NTQBOQtGPwx2fjssNj9LTyYxHxYNEBUQFSQX\nGTQTGSEfGTNUTzc4OCklMRwmFyAmEyQcFh0BkhApVzgiGXtYPzRWSFgsIhwpEAwOFQECExEbIh0l\nZykhKUhBRXQ4MkY2KB89OTwke+85LR0gKh4XLgAAAAIASP/6ArUCXABSAF4AADcnPgEzMhcWMjY3\nNj0DNCYjIgYVFBcWFxYVFAcnNjU0Jy4BNTQ2MzIXNjMyFhUUBgceAR8BHgEzMjcXBiMiLwEuAScm\nIyIHFRQHBiMiJicmIgEVNjc2NTQmIgceAXQRESofGSANDhIFDTQuJzUgCDctLQsDOSwhZkpRKz9R\nP1VARhYYDB0HEhAGEA0/NBwRKgkJCg4fCQcsNTwUEyMLHgEQSiMxNVIlCQUMBTEtFwgWDyZIlAoK\nQ0s3KCcaBxwXICQ1Aw8JJCAZNC5PbUNCUTwoOhkOJytvHBcGDk9DqCUVBgoBOWhDTggXCAFVJRIS\nGjYmMBshLAAAAAIAngAAAqACmwAWAB4AAAEXNzMHFyMnByM3JyMRIxEhMhYVFAcGJTMyNjQmKwEB\n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\nPmUcEgs8DBEVRycsTRMUAi/2b1EiVzUxHk9m9vlVTBkeIywkJ4T5AAABAAH/MwERAy0AKQAAExUU\nBwYjIiY1NDYzMhcWMzI1NCcmPQE0NzYzMhYVFAYjIicmIyIVFBcWrhUVRBolHBQTEAwHEgYOFRVE\nGiQcFBMQDAcSBg8Bp+XiVFkgFxQdDgwcDT+SP+TiVFkgFhUdDgwcCkKRAAMBHP9kAroDawArAC8A\nMwAAJTUuATQ2NzU+ATc+ATMyFwcmIyIHBh0BHgEUBgcVFAYHDgEjIic3FjMyNzY9AQYUNxU2NAGg\nPEhIPAEDBw9iRSYxGBoTKQ4FO0hIOwMIEGVOLxsYGhEsDQUyyTF3ORhpgGoXCW4tHDhBC4ULJAw0\nUBdqgGoXG20vHjo9CYULJA31ySZ+o8goeAAAAAMAxAAAAyQCJQAKABQAHgAAATIWFRQGIiY1NDYD\nMhYVFAYiJjQ2ITIWFRQGIiY0NgH2GB8gMiAg3BcgIDIgIQIIFyAgMiAhAiUgGRghIBkaH/5NIRgZ\nICAyICEYGSAgMiAAAAADAKgAAANAAlYACwAWACEAACUyFhUUBiMiJjU0NgMyFhUUBiMiJjQ2ITIW\nFRQGIyImNDYB9RojIhscIyTzGiMjGhwjIwI4GiMjGhwjI3wkGhsjIhwbIwHaJBobIyM2IyQaGyMj\nNiMAAAQAxAAAAyMCVwAJABMAHAAlAAAlMhYVFAYiJjQ2ITIWFRQGIiY0NgEyFhQGIiY0NiEyFhQG\nIiY0NgEDGiMjNiMjAf8aIyM2IyP+ORojIzYjIwH/GiMjNiMjfCQaGyMjNiMkGhsjIzYjAdsjNiMj\nNiMjNiMjNiMAAAP/mgBhAXsBswADAAcAHAAAARUhNQUVITUBFwYjIiYnJiMiBgcnNjMyFxYzMjYB\ne/4fAeH+HwG2JCxYFhw2UxQaICAoNU8fU0gTGyUBETMzfjIyASAfTgYRGBUkH00ZFhcAAAACADkA\nJAJeAaMAFQAsAAA3Jz4BMzIXFjI2NxcGBwYjIicmIyIGByc+ATMyFxYzMjY3Fw4BBwYjIiYjIgad\nOS9PMyFDOjIlGTsyKS4vHEBCEhkmRjguUDMgQzsYGiQZPB8mFi4vG4QSGSXwK0o8GxkXHydJGx0a\nGhvwK0o8GxkXHycsKQ8dNBoAAQAs/7YCXQIgABMAADcjNzM3IzchNxcHMwcjBzMHIQcncEQZhl3J\n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\n/wYDVgEbAAsAACUhNSEVIREjESMRIwD//m8D6P5vQkJC2UJC/i0B0/4tAAAAA/9u/wYDVgFdAAMA\nCQAPAAADIRUhBREjESEVKQE1IREjkgPo/BgCV0IB0/2p/m8B00IBXUKE/m8B00JC/i0AAAL/bgCX\nA1YC7gADAAsAACc1IRUlETMRIRUhNZID6P3rQgHT/BiXQkLGAZH+b0JCAAH/bgDZA1YC7gALAAAn\nNSERMxEzETMRIRWSAZFCQkIBkdlCAdP+LQHT/i1CAAAAAAP/bgCXA1YC7gADAAkADwAAJzUhFSUh\nFSERMwMRMxEhNZID6P5vAZH+LULGQv4tl0JCxkIB0/5vAZH+LUIAAAAB/27/BgNWAu4AEwAAJTUh\nNSERMxEhFSEVIRUhESMRITUBQf4tAdNCAdP+LQHT/i1C/i3ZQkIBkf5vQkJC/m8BkUIAAAH/bv8G\nA1YC7gATAAAlITUhETMRMxEzESEVIREjESMRIwD//m8BkUJCQgGR/m9CQkLZQgHT/i0B0/4tQv4t\nAdP+LQAABP9u/wYDVgLuAAUACwARABcAAAEhFSERMwMRMxEhNQURIxEhFSkBNSERIwHFAZH+LULG\nQv4tAldCAdP9qf5vAdNCAV1CAdP+bwGR/i1Cxv5vAdNCQv4tAAH/bgD6A1YC7gADAAAnESERkgPo\n+gH0/gwAAAAB/27/BgNWAPoAAwAABxEhEZID6PoB9P4MAAAAAf9u/wYDVgLuAAMAAAcRIRGSA+j6\nA+j8GAAAAAH/bv8GAWIC7gADAAAHESERkgH0+gPo/BgAAAABAWL/BgNWAu4AAwAABREhEQFiAfT6\nA+j8GAAAGf9u/2oC8gLuAAMABwALAA8AEwAXABsAHwAjACcAKwAvADMANwA7AD8AQwBHAEsATwBT\nAFcAWwBfAGMAAAMzFSM3MxUjJTMVIyUzFSM3MxUjBTMVIxUzFSMVMxUjFTMVIxMzFSMVMxUjFTMV\nIxUzFSMTMxUjFTMVIxUzFSMVMxUjEzMVIxUzFSMVMxUjFTMVIxMzFSMVMxUjFTMVIxUzFSOSZGTI\nZGQCWGRk/nBkZMhkZP2oZGRkZGRkZGTIZGRkZGRkZGTIZGRkZGRkZGTIZGRkZGRkZGTIZGRkZGRk\nZGQC7mRkZGRkZGRkZGRkZGRkZGRkArxkZGRkZGRkArxkZGRkZGRkArxkZGRkZGRkArxkZGRkZGRk\nADL/bv8GA1YC7gADAAcACwAPABMAFwAbAB8AIwAnACsALwAzADcAOwA/AEMARwBLAE8AUwBXAFsA\nXwBjAGcAawBvAHMAdwB7AH8AgwCHAIsAjwCTAJcAmwCfAKMApwCrAK8AswC3ALsAvwDDAMcAAAMz\nFSM3MxUjJTMVIyUzFSM3MxUjITMVIzczFSM3MxUjNzMVIzczFSMBMxUjNzMVIyUzFSMlMxUjNzMV\nIyEzFSM3MxUjNzMVIzczFSM3MxUjATMVIzczFSMlMxUjJTMVIzczFSMhMxUjNzMVIzczFSM3MxUj\nNzMVIwEzFSM3MxUjJTMVIyUzFSM3MxUjITMVIzczFSM3MxUjNzMVIzczFSMBMxUjNzMVIyUzFSMl\nMxUjNzMVIyEzFSM3MxUjNzMVIzczFSM3MxUjkmRkyGRkAlhkZP5wZGTIZGT+DGRkyGRkyGRkyGRk\nyGRk/HxkZMhkZAJYZGT+cGRkyGRk/gxkZMhkZMhkZMhkZMhkZPx8ZGTIZGQCWGRk/nBkZMhkZP4M\nZGTIZGTIZGTIZGTIZGT8fGRkyGRkAlhkZP5wZGTIZGT+DGRkyGRkyGRkyGRkyGRk/HxkZMhkZAJY\nZGT+cGRkyGRk/gxkZMhkZMhkZMhkZMhkZALuZGRkZGRkZGRkZGRkZGRkZGRk/ahkZGRkZGRkZGRk\nZGRkZGRkZGQBkGRkZGRkZGRkZGRkZGRkZGRkZAGQZGRkZGRkZGRkZGRkZGRkZGRkAZBkZGRkZGRk\nZGRkZGRkZGRkZGQAAAAAEf94/wYDYALuACUAKQAtADEANQA5AD0AQQBFAEkATQBRAFUAWQBdAGEA\nZQAABSE1MzUjNTM1IzUzNSM1MzUjNTM1MxUzNTMVMzUzFTM1MxUzNTMHIxUzJyMVMycjFTMnIxUz\nBSMVMycjFTMnIxUzJyMVMwUjFTMnIxUzJyMVMycjFTMFIxUzJyMVMycjFTMnIxUzA2D8GGRkZGRk\nZGRkZGRkZGRkZGRkZGRkZMhkZMhkZMhkZAJYZGTIZGTIZGTIZGQCWGRkyGRkyGRkyGRkAlhkZMhk\nZMhkZMhkZPpkZGRkZGRkZGRkZGRkZGRkZGTIZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRk\nZAAB/8EAAAKaAtkAAwAAAyERIT8C2f0nAtn9JwAAAgArAAACMgIHAAMABwAAMxEhEScRIRErAgc0\n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\nAAYAEQJAAAEAAAAAAAgAHAKMAAEAAAAAAAsAEwLRAAEAAAAAAAwAFAMPAAEAAAAAABAADQNAAAEA\nAAAAABEACwNmAAEAAAAAABIAEAOUAAMAAQQJAAAAZgAAAAMAAQQJAAEAFACcAAMAAQQJAAIAFgC9\nAAMAAQQJAAMAOADhAAMAAQQJAAQAIgE4AAMAAQQJAAUAcgFuAAMAAQQJAAYAIgIcAAMAAQQJAAgA\nOAJSAAMAAQQJAAsAJgKpAAMAAQQJAAwAKALlAAMAAQQJABAAGgMkAAMAAQQJABEAFgNOAAMAAQQJ\nABIAIANyAEMAbwBwAHkAcgBpAGcAaAB0ACAAMgAwADEANAAgAGIAeQAgACgAVQBSAFcAKQArACsA\nIABEAGUAcwBpAGcAbgAgACYAIABEAGUAdgBlAGwAbwBwAG0AZQBuAHQAIABHAG0AYgBIAABDb3B5\ncmlnaHQgMjAxNCBieSAoVVJXKSsrIERlc2lnbiAmIERldmVsb3BtZW50IEdtYkgAAE4AaQBtAGIA\ndQBzAFMAYQBuAEwAAE5pbWJ1c1NhbkwAAEIAbwBsAGQAIABJAHQAYQBsAGkAYwAAQm9sZCBJdGFs\naWMAADEALgAwADAAMAA7AFUAUgBXACAAOwBOAGkAbQBiAHUAcwBTAGEAbgBMAC0AQgBvAGwASQB0\nAGEAADEuMDAwO1VSVyA7TmltYnVzU2FuTC1Cb2xJdGEAAE4AaQBtAGIAdQBzAFMAYQBuAEwALQBC\nAG8AbABJAHQAYQAATmltYnVzU2FuTC1Cb2xJdGEAAFYAZQByAHMAaQBvAG4AIAAxAC4AMAAwADAA\nOwBQAFMAIAAxAC4AMAAwADsAaABvAHQAYwBvAG4AdgAgADEALgAwAC4ANQA3ADsAbQBhAGsAZQBv\nAHQAZgAuAGwAaQBiADIALgAwAC4AMgAxADgAOQA1AABWZXJzaW9uIDEuMDAwO1BTIDEuMDA7aG90\nY29udiAxLjAuNTc7bWFrZW90Zi5saWIyLjAuMjE4OTUAAE4AaQBtAGIAdQBzAFMAYQBuAEwALQBC\nAG8AbABJAHQAYQAATmltYnVzU2FuTC1Cb2xJdGEAACgAVQBSAFcAKQArACsAIABEAGUAcwBpAGcA\nbgAgACYAIABEAGUAdgBlAGwAbwBwAG0AZQBuAHQAAChVUlcpKysgRGVzaWduICYgRGV2ZWxvcG1l\nbnQAAGgAdAB0AHAAOgAvAC8AdwB3AHcALgB1AHIAdwBwAHAALgBkAGUAAGh0dHA6Ly93d3cudXJ3\ncHAuZGUAAGgAdAB0AHAAOgAvAC8AdwB3AHcALgB1AHIAdwBwAHAALgBjAG8AbQAAaHR0cDovL3d3\ndy51cndwcC5jb20AAE4AaQBtAGIAdQBzACAAUwBhAG4AcwAgAEwAAE5pbWJ1cyBTYW5zIEwAAEIA\nbwBsAGQAIABJAHQAYQBsAGkAYwAAQm9sZCBJdGFsaWMAAE4AaQBtAGIAdQBzAFMAYQBuAEwAQgBv\nAGwASQB0AGEAAE5pbWJ1c1NhbkxCb2xJdGEAAAACAAD/9AAA/7QARQAAAAAAAAAAAAAAAAAAAAAA\nAAAAAvkAAAABAAIAAwAEAAUABgAHAAgACQAKAAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZ\nABoAGwAcAB0AHgAfACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUA\nNgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBS\nAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAQIAowCEAIUAvQCWAOgAhgCOAIsAnQCpAKQB\nAwCKANoAgwCTAPIA8wCNAJcAiADDAN4A8QCeAKoA9QD0APYAogCtAMkAxwCuAGIAYwCQAGQAywBl\nAMgAygDPAMwAzQDOAOkAZgDTANAA0QCvAGcA8ACRANYA1ADVAGgA6wDtAIkAagBpAGsAbQBsAG4A\noABvAHEAcAByAHMAdQB0AHYAdwDqAHgAegB5AHsAfQB8ALgAoQB/AH4AgACBAOwA7gC6AQQBBQEG\nAQcBCAEJAP0A/gEKAQsBDAENAP8BAAEOAQ8BEAEBAREBEgETARQBFQEWARcBGAEZARoBGwEcAPgA\n+QEdAR4BHwEgASEBIgEjASQBJQEmAScBKAEpASoBKwEsAPoA1wEtAS4BLwEwATEBMgEzATQBNQE2\nATcBOAE5AToBOwDiAOMBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoAsACxAUsBTAFNAU4B\nTwFQAVEBUgFTAVQA+wD8AOQA5QFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUBZgFn\nAWgBaQFqALsBawFsAW0BbgDmAOcBbwCmAXABcQFyAXMBdAF1AXYBdwF4AXkA2ADhAXoA2wDcAN0A\n4ADZAN8BewF8AX0BfgF/AYABgQGCAYMBhAGFAYYBhwGIAYkBigGLAYwBjQGOAY8BkAGRAZIBkwGU\nAZUBlgGXAZgBmQGaAZsBnAGdAZ4BnwGgAaEBogGjAaQBpQGmAacBqAGpAaoBqwGsAa0BrgGvAbAB\nsQGyAbMAmwG0AbUBtgG3AbgBuQG6AbsBvAG9Ab4BvwHAAcEBwgHDAcQBxQHGAccByAHJAcoBywHM\nAc0BzgHPAdAB0QHSAdMB1AHVAdYB1wHYAdkB2gHbAdwB3QHeAd8B4AHhAeIB4wHkAeUB5gHnAegB\n6QHqAesB7AHtAe4B7wHwAfEB8gHzAfQB9QH2AfcB+AH5AfoB+wH8Af0B/gH/AgACAQICAgMCBAIF\nAgYCBwIIAgkCCgILAgwCDQIOAg8CEAIRAhICEwIUAhUCFgIXAhgCGQIaAhsCHAIdAh4CHwIgAiEC\nIgIjAiQCJQImAicCKAIpAioCKwIsAi0CLgIvAjACMQIyAjMCNAI1AjYCNwI4AjkCOgI7AjwCPQI+\nAj8CQAJBAkICQwJEAkUCRgJHAkgCSQJKAksCTAJNAk4CTwJQAlECUgJTAlQCVQCyALMCVgJXALYA\ntwDEAlgAtAC1AMUAggDCAIcAqwDGAlkCWgC+AL8CWwJcALwCXQJeAl8CYAJhAmICYwJkAPcCZQJm\nAmcCaAJpAmoCawJsAm0CbgCMAm8CcAJxAnICcwJ0AnUCdgJ3AngCeQJ6AnsCfAJ9An4CfwKAAoEC\nggKDAoQChQKGAocAmAKIAokAqAKKAosCjAKNAJoAmQDvAo4CjwKQApEApQKSAJICkwKUApUClgKX\nApgCmQKaAJwCmwKcAp0CngKfAKcAjwKgAJQAlQKhAqICowKkAqUCpgKnAqgCqQKqAqsCrAKtAq4C\nrwKwArECsgKzArQCtQK2ArcCuAK5AroCuwK8Ar0CvgK/AsACwQLCAsMCxALFAsYCxwLIAskCygLL\nAswCzQLOAs8C0ALRAtIC0wLUAtUC1gLXAtgC2QLaAtsC3ALdAt4C3wLgAuEC4gLjAuQC5QLmAucC\n6AC5AukC6gLrAuwC7QLuAu8C8ALxAvIC8wL0AvUC9gL3AvgC+QDAAMEC+gL7B3VuaTAwQTAHdW5p\nMDBBRAdBbWFjcm9uB2FtYWNyb24GQWJyZXZlBmFicmV2ZQdBb2dvbmVrB2FvZ29uZWsLQ2NpcmN1\nbWZsZXgLY2NpcmN1bWZsZXgKQ2RvdGFjY2VudApjZG90YWNjZW50BkRjYXJvbgZkY2Fyb24GRGNy\nb2F0B0VtYWNyb24HZW1hY3JvbgZFYnJldmUGZWJyZXZlCkVkb3RhY2NlbnQKZWRvdGFjY2VudAdF\nb2dvbmVrB2VvZ29uZWsGRWNhcm9uBmVjYXJvbgtHY2lyY3VtZmxleAtnY2lyY3VtZmxleApHZG90\nYWNjZW50Cmdkb3RhY2NlbnQMR2NvbW1hYWNjZW50DGdjb21tYWFjY2VudAtIY2lyY3VtZmxleAto\nY2lyY3VtZmxleARIYmFyBGhiYXIGSXRpbGRlBml0aWxkZQdJbWFjcm9uB2ltYWNyb24GSWJyZXZl\nBmlicmV2ZQdJb2dvbmVrB2lvZ29uZWsCSUoCaWoLSmNpcmN1bWZsZXgLamNpcmN1bWZsZXgMS2Nv\nbW1hYWNjZW50DGtjb21tYWFjY2VudAxrZ3JlZW5sYW5kaWMGTGFjdXRlBmxhY3V0ZQxMY29tbWFh\nY2NlbnQMbGNvbW1hYWNjZW50BkxjYXJvbgZsY2Fyb24ETGRvdARsZG90Bk5hY3V0ZQZuYWN1dGUM\nTmNvbW1hYWNjZW50DG5jb21tYWFjY2VudAZOY2Fyb24GbmNhcm9uC25hcG9zdHJvcGhlA0VuZwNl\nbmcHT21hY3JvbgdvbWFjcm9uBk9icmV2ZQZvYnJldmUNT2h1bmdhcnVtbGF1dA1vaHVuZ2FydW1s\nYXV0BlJhY3V0ZQZyYWN1dGUMUmNvbW1hYWNjZW50DHJjb21tYWFjY2VudAZSY2Fyb24GcmNhcm9u\nBlNhY3V0ZQZzYWN1dGULU2NpcmN1bWZsZXgLc2NpcmN1bWZsZXgMVGNvbW1hYWNjZW50DHRjb21t\nYWFjY2VudAZUY2Fyb24GdGNhcm9uBFRiYXIEdGJhcgZVdGlsZGUGdXRpbGRlB1VtYWNyb24HdW1h\nY3JvbgZVYnJldmUGdWJyZXZlBVVyaW5nBXVyaW5nDVVodW5nYXJ1bWxhdXQNdWh1bmdhcnVtbGF1\ndAdVb2dvbmVrB3VvZ29uZWsLV2NpcmN1bWZsZXgLd2NpcmN1bWZsZXgLWWNpcmN1bWZsZXgLeWNp\ncmN1bWZsZXgGWmFjdXRlBnphY3V0ZQpaZG90YWNjZW50Cnpkb3RhY2NlbnQFbG9uZ3MKQXJpbmdh\nY3V0ZQphcmluZ2FjdXRlB0FFYWN1dGUHYWVhY3V0ZQtPc2xhc2hhY3V0ZQtvc2xhc2hhY3V0ZQxT\nY29tbWFhY2NlbnQMc2NvbW1hYWNjZW50B3VuaTAyMUEHdW5pMDIxQgd1bmkwMkM5BXRvbm9zDWRp\nZXJlc2lzdG9ub3MKQWxwaGF0b25vcwd1bmkwMzg3DEVwc2lsb250b25vcwhFdGF0b25vcwlJb3Rh\ndG9ub3MMT21pY3JvbnRvbm9zDFVwc2lsb250b25vcwpPbWVnYXRvbm9zEWlvdGFkaWVyZXNpc3Rv\nbm9zBUFscGhhBEJldGEFR2FtbWEHdW5pMDM5NAdFcHNpbG9uBFpldGEDRXRhBVRoZXRhBElvdGEF\nS2FwcGEGTGFtYmRhAk11Ak51AlhpB09taWNyb24CUGkDUmhvBVNpZ21hA1RhdQdVcHNpbG9uA1Bo\naQNDaGkDUHNpB3VuaTAzQTkMSW90YWRpZXJlc2lzD1Vwc2lsb25kaWVyZXNpcwphbHBoYXRvbm9z\nDGVwc2lsb250b25vcwhldGF0b25vcwlpb3RhdG9ub3MUdXBzaWxvbmRpZXJlc2lzdG9ub3MFYWxw\naGEEYmV0YQVnYW1tYQVkZWx0YQdlcHNpbG9uBHpldGEDZXRhBXRoZXRhBGlvdGEFa2FwcGEGbGFt\nYmRhB3VuaTAzQkMCbnUCeGkHb21pY3JvbgNyaG8HdW5pMDNDMgVzaWdtYQN0YXUHdXBzaWxvbgNw\naGkDY2hpA3BzaQVvbWVnYQxpb3RhZGllcmVzaXMPdXBzaWxvbmRpZXJlc2lzDG9taWNyb250b25v\ncwx1cHNpbG9udG9ub3MKb21lZ2F0b25vcwZ0aGV0YTEEcGhpMQZvbWVnYTEHdW5pMDQwMAlhZmlp\nMTAwMjMJYWZpaTEwMDUxCWFmaWkxMDA1MglhZmlpMTAwNTMJYWZpaTEwMDU0CWFmaWkxMDA1NQlh\nZmlpMTAwNTYJYWZpaTEwMDU3CWFmaWkxMDA1OAlhZmlpMTAwNTkJYWZpaTEwMDYwCWFmaWkxMDA2\nMQd1bmkwNDBECWFmaWkxMDA2MglhZmlpMTAxNDUJYWZpaTEwMDE3CWFmaWkxMDAxOAlhZmlpMTAw\nMTkJYWZpaTEwMDIwCWFmaWkxMDAyMQlhZmlpMTAwMjIJYWZpaTEwMDI0CWFmaWkxMDAyNQlhZmlp\nMTAwMjYJYWZpaTEwMDI3CWFmaWkxMDAyOAlhZmlpMTAwMjkJYWZpaTEwMDMwCWFmaWkxMDAzMQlh\nZmlpMTAwMzIJYWZpaTEwMDMzCWFmaWkxMDAzNAlhZmlpMTAwMzUJYWZpaTEwMDM2CWFmaWkxMDAz\nNwlhZmlpMTAwMzgJYWZpaTEwMDM5CWFmaWkxMDA0MAlhZmlpMTAwNDEJYWZpaTEwMDQyCWFmaWkx\nMDA0MwlhZmlpMTAwNDQJYWZpaTEwMDQ1CWFmaWkxMDA0NglhZmlpMTAwNDcJYWZpaTEwMDQ4CWFm\naWkxMDA0OQlhZmlpMTAwNjUJYWZpaTEwMDY2CWFmaWkxMDA2NwlhZmlpMTAwNjgJYWZpaTEwMDY5\nCWFmaWkxMDA3MAlhZmlpMTAwNzIJYWZpaTEwMDczCWFmaWkxMDA3NAlhZmlpMTAwNzUJYWZpaTEw\nMDc2CWFmaWkxMDA3NwlhZmlpMTAwNzgJYWZpaTEwMDc5CWFmaWkxMDA4MAlhZmlpMTAwODEJYWZp\naTEwMDgyCWFmaWkxMDA4MwlhZmlpMTAwODQJYWZpaTEwMDg1CWFmaWkxMDA4NglhZmlpMTAwODcJ\nYWZpaTEwMDg4CWFmaWkxMDA4OQlhZmlpMTAwOTAJYWZpaTEwMDkxCWFmaWkxMDA5MglhZmlpMTAw\nOTMJYWZpaTEwMDk0CWFmaWkxMDA5NQlhZmlpMTAwOTYJYWZpaTEwMDk3B3VuaTA0NTAJYWZpaTEw\nMDcxCWFmaWkxMDA5OQlhZmlpMTAxMDAJYWZpaTEwMTAxCWFmaWkxMDEwMglhZmlpMTAxMDMJYWZp\naTEwMTA0CWFmaWkxMDEwNQlhZmlpMTAxMDYJYWZpaTEwMTA3CWFmaWkxMDEwOAlhZmlpMTAxMDkH\ndW5pMDQ1RAlhZmlpMTAxMTAJYWZpaTEwMTkzB3VuaTA0NjIHdW5pMDQ2Mwd1bmkwNDcyB3VuaTA0\nNzMHdW5pMDQ3NAd1bmkwNDc1CWFmaWkxMDA1MAlhZmlpMTAwOTgHdW5pMDQ5Mgd1bmkwNDkzB3Vu\naTA0OTYHdW5pMDQ5Nwd1bmkwNDlBB3VuaTA0OUIHdW5pMDQ5Qwd1bmkwNDlEB3VuaTA0QTIHdW5p\nMDRBMwd1bmkwNEFFB3VuaTA0QUYHdW5pMDRCMAd1bmkwNEIxB3VuaTA0QjIHdW5pMDRCMwd1bmkw\nNEI2B3VuaTA0QjcHdW5pMDRCOAd1bmkwNEI5B3VuaTA0QkEHdW5pMDRCQgd1bmkwNEMwB3VuaTA0\nQ0YHdW5pMDREOAlhZmlpMTA4NDYHdW5pMDRFMgd1bmkwNEUzB3VuaTA0RTgHdW5pMDRFOQd1bmkw\nNEVFB3VuaTA0RUYGV2dyYXZlBndncmF2ZQZXYWN1dGUGd2FjdXRlCVdkaWVyZXNpcwl3ZGllcmVz\naXMGWWdyYXZlBnlncmF2ZQd1bmkyMDAyCWFmaWkwMDIwOA11bmRlcnNjb3JlZGJsDXF1b3RlcmV2\nZXJzZWQGbWludXRlBnNlY29uZAlleGNsYW1kYmwHdW5pMjAzRQx6ZXJvc3VwZXJpb3IMZm91cnN1\ncGVyaW9yDGZpdmVzdXBlcmlvcgtzaXhzdXBlcmlvcg1zZXZlbnN1cGVyaW9yDWVpZ2h0c3VwZXJp\nb3IMbmluZXN1cGVyaW9yCW5zdXBlcmlvcgRsaXJhBnBlc2V0YQRFdXJvCWFmaWk2MTI0OAhJZnJh\na3R1cglhZmlpNjEyODkJYWZpaTYxMzUyC3dlaWVyc3RyYXNzCFJmcmFrdHVyB3VuaTIxMUUHdW5p\nMjEyNgllc3RpbWF0ZWQFYWxlcGgJb25lZWlnaHRoDHRocmVlZWlnaHRocwtmaXZlZWlnaHRocwxz\nZXZlbmVpZ2h0aHMJYXJyb3dsZWZ0B2Fycm93dXAKYXJyb3dyaWdodAlhcnJvd2Rvd24JYXJyb3di\nb3RoCWFycm93dXBkbgd1bmkyMTk2B3VuaTIxOTcHdW5pMjE5OAd1bmkyMTk5DGFycm93dXBkbmJz\nZQ5jYXJyaWFnZXJldHVybgxhcnJvd2RibGxlZnQKYXJyb3dkYmx1cA1hcnJvd2RibHJpZ2h0DGFy\ncm93ZGJsZG93bgxhcnJvd2RibGJvdGgJdW5pdmVyc2FsC2V4aXN0ZW50aWFsCGVtcHR5c2V0CGdy\nYWRpZW50B2VsZW1lbnQKbm90ZWxlbWVudAhzdWNodGhhdAd1bmkyMjEzB3VuaTIyMTUMYXN0ZXJp\nc2ttYXRoB3VuaTIyMTkMcHJvcG9ydGlvbmFsCm9ydGhvZ29uYWwFYW5nbGUHdW5pMjIyMwd1bmky\nMjI1B3VuaTIyMjcHdW5pMjIyOAxpbnRlcnNlY3Rpb24FdW5pb24HdW5pMjIyRQl0aGVyZWZvcmUH\ndW5pMjIzNQd1bmkyMjM3CWNvbmdydWVudAtlcXVpdmFsZW5jZQxwcm9wZXJzdWJzZXQOcHJvcGVy\nc3VwZXJzZXQJbm90c3Vic2V0B3VuaTIyODUMcmVmbGV4c3Vic2V0DnJlZmxleHN1cGVyc2V0B3Vu\naTIyOTUOY2lyY2xlbXVsdGlwbHkNcGVycGVuZGljdWxhcgVob3VzZQ1yZXZsb2dpY2Fsbm90Cmlu\ndGVncmFsdHAKaW50ZWdyYWxidAlhbmdsZWxlZnQKYW5nbGVyaWdodAhTRjEwMDAwMAhTRjExMDAw\nMAhTRjAxMDAwMAhTRjAzMDAwMAhTRjAyMDAwMAhTRjA0MDAwMAhTRjA4MDAwMAhTRjA5MDAwMAhT\nRjA2MDAwMAhTRjA3MDAwMAhTRjA1MDAwMAhTRjQzMDAwMAhTRjI0MDAwMAhTRjUxMDAwMAhTRjUy\nMDAwMAhTRjM5MDAwMAhTRjIyMDAwMAhTRjIxMDAwMAhTRjI1MDAwMAhTRjUwMDAwMAhTRjQ5MDAw\nMAhTRjM4MDAwMAhTRjI4MDAwMAhTRjI3MDAwMAhTRjI2MDAwMAhTRjM2MDAwMAhTRjM3MDAwMAhT\nRjQyMDAwMAhTRjE5MDAwMAhTRjIwMDAwMAhTRjIzMDAwMAhTRjQ3MDAwMAhTRjQ4MDAwMAhTRjQx\nMDAwMAhTRjQ1MDAwMAhTRjQ2MDAwMAhTRjQwMDAwMAhTRjU0MDAwMAhTRjUzMDAwMAhTRjQ0MDAw\nMAd1cGJsb2NrB2RuYmxvY2sFYmxvY2sHbGZibG9jawdydGJsb2NrB2x0c2hhZGUFc2hhZGUHZGtz\naGFkZQlmaWxsZWRib3gHdW5pMjVBMQZIMTg1NDMGSDE4NTUxCmZpbGxlZHJlY3QHdHJpYWd1cAd0\ncmlhZ3J0B3RyaWFnZG4HdHJpYWdsZgZjaXJjbGUGSDE4NTMzCWludmJ1bGxldAlpbnZjaXJjbGUK\nb3BlbmJ1bGxldAlzbWlsZWZhY2UMaW52c21pbGVmYWNlA3N1bgZmZW1hbGUEbWFsZQVzcGFkZQRj\nbHViBWhlYXJ0B2RpYW1vbmQLbXVzaWNhbG5vdGUObXVzaWNhbG5vdGVkYmwCZmYDZmZpA2ZmbAAA\nAAAAAf//AAIAAQAAAAwAAAAQAAAAAgAAAAQAAAACAAAAAQAAAAoAbACgAAJERkxUAA5sYXRuABoA\nBAAAAAD//wABAAAAKAAGQVpFIAAyQ1JUIAAyREVVIAAoTU9MIAA8Uk9NIAA8VFJLIAAyAAD//wAC\nAAAAAQAA//8AAgAAAAIAAP//AAMAAAABAAMABGFhbHQAGmxpZ2EAIGxpZ2EAKGxvY2wALgAAAAEA\nAAAAAAIAAgADAAAAAQADAAAAAQABAAQACgASABoAIgABAAAAAQAgAAEAAAABACYABAAAAAEALAAE\nAAAAAQBGAAEABgApAAEAAgEgASEAAQAGACkAAQACASABIQABABwAAQAIAAIABgAOAvcAAwBJAEwC\n9QACAEwAAQABAEkAAQAaAAEACAACAAYADAL0AAIASQL2AAIATwABAAEASQABAAAACgBUAGIAAkRG\nTFQADmxhdG4AGgAEAAAAAP//AAEAAAAoAAZBWkUgAChDUlQgAChERVUgAChNT0wgAChST00gAChU\nUksgACgAAP//AAEAAAABa2VybgAIAAAAAQAAAAEABAACAAAAAQAIAAE+aAAEAAAA5gHWAeAB/gJU\nAloCbALuAxQDlgOkBKoFDAWSBfgGpgdsB/IIGAhCCGAJXgoQCjoKyAtWDGgMig1gDeoPrBASEUQS\nqhMsFE4U0BUiFagV3hYQFnIWrBcWF8gYThhkGJYYvBl6GZwZuhngGj4aaBqGG6gb/hyIHK4dOB3i\nHjAewh8AH1ofqB/OH/wgdiC8IOohXCHOIeQh6iH4Ieoh6iIiIkwiUiJYIlIidiKYIuIi8CL+Iwwi\n8CM+I1AjmiOoI64jvCPOI9QciCQWJCQkQiR0JH4k1CTaJQAlZiWgJbYlvCXqJjQmPiZMJrInNCeO\nJ5wntifIJ9on4CfmJ+woNihIKJoovCjOKOQpIilkKWopjCmWKcQp1iooKkYqvCr2KywrWitsK6or\n2CveLDQsPix4LH4s0Cz+LUQtli3kLgYuKC5GLmgubi7ELtYu3C8KLyQvKi9ALwovWi/4MBYwNDB6\nMQwxgjG8MfYyqDKuMuwzPjOEM8Y0KDRyNTA15jYgNl42fDaaM4Q2xDbaNvw3GjdUN3I3kDe2N7w3\n2jgAODY4aDi+OQg5PjlgOX45nDm+Oeg6CjogOkI6aDqWOzg7WjvQPGo8xD0OPZw9wj4cPkIAAgI3\nAAwCOwAIAAcAJP/GADf//gA5ABAAOgAaADv/9QA8AAEAPf/2ABUAJP/8AC3/+AA3AAcAOgAOADv/\n/gA8//4APQALAEUAFwBJAA0ASgASAEsAEwBMABMATQARAE4AFwBPABMAUwAZAFwAAQCIAAICNgAu\nAvUAHQL2AB0AAQAR/+YABAAQAA4CMgAgAjf/4gI7/94AIAAkAAMAJgAlACoAJQAtACUAMgAmADQA\nJAA2ABcAN//KADn/5wA6//sAO//iADz/wgA9//YARAAQAEkABABKAB8AVgAOAFcABwBZ//4AWgAL\nAFv/5QBd/+QAgwADAIYAAwCHAAMAiAAMAKYAEAGxAAUBw//KAcT/2QHj/3kB5P/6AAkACv/dAA3/\n7AAQAA4AdAAQAHUABQB7/+gCMgAfAjf/4QI7/90AIAASABsAJQApACcAKwAoACoAKQAtACsAMAAs\nADIALQAJAC4ALQAvACoAMAAxADEAMAA1ACoANwAUADgAKQA5ABQAOgAiADsAEAA8AAgAPQAXAEUA\nIwBJAB4ASgAeAEsAHwBMAB8ATQAdAE4AIwBPAB8AVwAdAFwADQL1AC4C9gAuAAMACgAQAjcADAI7\nAAgAQQAK/8oADP//AA8AFAAQAA0AEQAWACQABQAl/+oAJv/nACr/5AAt/+0AMv/kADT/4wA2/+0A\nN/+qADj/5AA5/8AAOv/RADsABwA8/6oAPQADAEAABQBE//wARf/+AEb/9wBH//kASP/+AEr/+ABS\n//UAVP/9AFb/9wBX//MAWP/3AFn/3QBa/+wAXP/gAF0ACABg//oAbf/ZAIn/5wCY/+QAm//kAJz/\n5ACd/+QAnv/kAJ//qgCp//cAvv/3AL//4AEk/64BJv+yAWj/5AFv/+QBc/+yAXT/qgF1/88Bd//R\nAYL/2wGM/94Bkv/nAZT/9wGV//sBnP/3Ajf/xwI7/8MCRP/cABgAJP/dACb/+wAt//UAMv/4ADf/\n5wA5/90AOv/uADz/xwA9/+kAXP/xAIP/3QCE/90Ahf/dAIb/3QCH/90AiP/kAJT/+ACV//gAlv/4\nAJj/+ACa//kBFAADAYr/5QJ5//4AIQAKABIADwAMABAAIgARAAkAHQAbAB4AHAAk/+IAJwADACsA\nBwAtAAEALgAEADYABwA3//EAOf/mADr/9QA8/88APf/0AEQACgBIAA4AUgAFAFYABQBcAAEAg//i\nAIb/4gCH/+IAiP/vAKYACgCoAAgAuAAFARQACAEVAAoCNwANAjsACQAZABAALQAk/+QAKAAFAC3/\n/AA3/+cAOf/nADr/+AA7/+YAPP/OAD3/8ABEAAwASAATAFIACgBc//wAgv/kAIP/5ACE/+QAhf/k\nAIb/5ACH/+QAiP/rAKYADACoAAoAuAAKARUADwArABAACgAk//oAJv/1ACn//QAy//EANv/8ADf/\n+AA5//EAOv/3ADv//AA8/+8APf/5AET//QBF//0ARv/5AEf//ABI//8ASv/7AEv/+QBM//kATf/6\nAE7//QBP//kAUv/2AFT/+wBW//gAV//1AFn/5wBa//MAXP/nAF3//wCV//EAmP/xAM7/9QFo//UB\nb//xAXX/3QGC/+MBg//1AYz/5wGT/+oCN//9Ajv/+QAxAAoADQAP/7oAEAAPABH/ugAk/8cAJv/m\nACr/5wAt/94AMv/oADb/8AA3AAkAOgAIAD0AAQBE/+kASP/0AEv/8ABM//AATf/wAE//8ABS/+oA\nVf/hAFj/4ABc/+QAgv/HAIP/xwCE/8cAhf/HAIb/xwCH/8cAiP/NAJj/6ACj/+kApv/pAKf/6QCo\n/+cAq//0ALX/6gC4/+oAuv/pALz/4AC+/+AAxP/HAMb/xwET/+oBFP/vARX/8AEx/+ACNwAKAjsA\nBgAhAAoAAQAPABEAEAAkABEAEAAdAB8AHgAeACT/7gArAAcANgADADf/4gA5/+EAOv/yADv/8AA8\n/8wAPf/zAEQACQBIABAAUgAHAFoABABc//YAgv/uAIP/7gCE/+4Ahf/uAIb/7gCH/+4AiP/7AKYA\nCQCoAAcAuAAHARUADAI3//8CO//7AAkAJP/vACwAEwA3//cAPP/tAEQACwBc//gAiP/7AKYACwCo\nAA0ACgAk/+8ALf/xADf/9wA5/+8AOv/+ADv/8QA8/+wAPf/9AFz//ACI//sABwAk/+QALgAIADz/\n6gBc//YAhv/kAIf/5ACI//AAPwAK//MADP//ABD/2wAkAAoAJf/uACb/0wAn//EAKP/wACn/8wAq\n/80AK//2ACz/+AAt/+UAL//wADD/9wAx//YAMv/OADP/8gA0/8wANf/wADb/2AA3AAUAOP/mADn/\n/gA6AAQAOwAMADz//AA9AAgAQAADAET/7wBI/9oAS//3AEz/9wBN//YAT//3AFL/0wBY/90AWv/L\nAFz/vABg/+wAiAAXAJX/zgCY/84Apv/vAKf/7wCo/+4Atf/TALj/0wC+/90Ax//sART/2wEV/9gB\nb//OAXX/uAF7/9ABfP/mAY7/zgGU/9cBmP/FAZv/zgGc/9cCN//sAjv/6AAsAAr/ewAM/9MAEP/d\nACT//wAm/9oAKv/VADD/7QAy/9YANv/wADf/mQA4/9sAOf+ZADr/sAA8/4cAPf/+AED/1QBI//YA\nTP/uAE3/7QBS/+4AWP/uAFz/vgBg/8YAg///AIb//wCH//8AiAALAIn/2QCU/9YAlf/WAJb/1gCX\n/9YAmP/WAJ7/2wCf/4cAuP/uAL7/7gC//74Azv/aART/4QEk/5oBJv+ZAjf/dwI7/3MACgAk//MA\nMQAVADf/+wA6AAIAPP/xAD3//QBNABAAXP/8AIj//wGEABcAIwAPABIAEQAUACT/8QAmAAoAKgAH\nADIABwA3//kAPP/uAD3//wBEABEASAAVAE0ADQBSAAwAWAANAFz//gCD//EAhv/xAIf/8QCI//0A\niQAKAJUABwCYAAcAowARAKYAEQCnABEAqAAPAKsAFQC1AAwAuAAMALoADgC+AA0BYf/xAXwAEQGE\nABQBmP/9ACMAD//+ABAALgAR//wAHQAcAB4AHwAk/+IAJgACAC3//AAzAAQANgAEADf/3gA5/+IA\nOv/zADv/3wA8/8kAPf/uAFn//QBaAAkAW//zAFz/+gBd//oAg//iAIb/4gCH/+IAiP/pARQACwFh\n/+IBZv/uAWv/7AFz/94BdP/JAXb/3wF3//YBiv/vAnn//gBEAAoAGQAP/60AEAAHABH/rQAk/8YA\nJf/tACb/8wAn/+8AKP/uACn/8QAq//MAK//0ACz/9gAt/88ALv/xAC//7gAw//UAMf/0ADL/9AAz\n//AANP/yADX/7gA2//UAN//7ADj/6wA5/+EAOv/rADv/zgA8/9UAPf/zAET/8gBI//YASQAHAEv/\n7ABM/+wATf/sAE//7ABS/+wAVwAGAFoABwBcAAUAg//GAIT/xgCG/8YAh//GAIj/zACj//IApv/y\nAKf/8gCo//IAq//2ALX/7AC4/+wAuv/rAMT/xgDG/8sBFP/7ARX/8gFh/8YBb//0AXz/8gGA//AB\nhP/1AY7/7QGb/+0Bnf/cAjcAFQI7ABEACAAMACIAEAAvADUABwA4AAQAQAApAFgADwBgABgAvgAP\nADUACgAPAAwAHAAQABUAJP/5ACcAAwAoAAIAKQAEACr//AArAAcALAAKAC3/6wAuAAQALwABADAA\nCAAxAAcAMv/9ADMAAwA0//8ANQABADYAAwA3//MAOf/mADr/9AA7//sAPP/PAD3/+ABAACQARAAG\nAEgACgBSAAEAWAAFAFz//ABgABMAiAAFAJX//QCY//0An//PAKMABgCmAAYApwAGAKgABACrAAoA\ntQABALgAAQC8AAUAvgAFAL///QEUAAcBFQAGAST/8gEm//MCNwALAjsABwAiABAAKgAk/+YAJgAD\nAC0AAQA2AAgAN//wADn/5gA6//cAPP/QAD3/9wBEAAsARgALAEgAEgBLAAkATAAJAE0ABgBPAAkA\nUgAJAFQADgBXAAYAWf/4AFoAAgBc//sAg//mAIb/5gCH/+YAiP/yAKYACwCoAAkAqwASALgACQEU\nAAwBFQAOAjcABABwAAr//gAMAAkAD//GABD/1AAR/8AAHf/TAB7/0wAk/6wAJf/uACb/3wAn//AA\nKP/vACn/8gAq/9wAK//1ACz/9wAt/6kALv/yAC//7wAw//YAMf/1ADL/3QAz//EANP/dADX/7wA2\n//YANwAPADj/8QA5AAgAOgAOADsABAA8AAYAPQAHAEAADgBE/8AARv++AEj/xQBK/7kAS//2AEz/\n9gBN//YAT//2AFL/vABV/78AVv+7AFj/vwBZ/6oAWv+1AFz/pwBg//MAbf+iAIL/rACD/6wAhP+s\nAIX/rACG/6wAh/+sAIj/sgCU/90Alf/dAJb/3QCX/90AmP/dAJr/1wCj/8AApv/YAKj/vgCp/74A\nq//FAK//6gC1/7wAtv/OALj/ywC6/8AAvP/ZAL7/2QC///cAxP+sAMb/rADH/8AAyf++ANv/xQES\n/90BE//FART/6AEV/8EBF//XAR3/uwEh/7sBMf/ZATP/2QFh/6wBa/+8AW//3QFzAA8BdAAGAXX/\nxwF7/7gBfP/CAYD/ugGE/78Bhf/vAY7/ugGQ/7oBkv+uAZT/vwGb/7oBnP/bAZ3/rgI3//YCO//y\nAkT/pgAZAA8AAgARAAEAJP/lADYACAA3//UAOf/tADr/9wA7/+kAPP/rAD3/8gBQAAUAUQADAFMA\nBwBVAAMAWf/zAFr//gBb//IAXP/2AF3/9QCD/+UAhP/lAIX/5QCG/+UAh//lAIj/7ABMAAwABgAP\n/8IAEP/xABH/wgAd/+0AHv/oACT/wwAm/98AKP/sACr/3wAr//EALP/0AC3/vwAv/+sAMv/fADX/\n6wA2/+kANwAMADj/7QA8AAMAQAAKAET/2gBG/9cASP/eAEr/1ABL//MATP/zAE3/8wBP//MAUv/V\nAFX/2QBY/9cAXP/vAGD/+gBt/7wAgv/DAIP/wwCE/8MAhf/DAIb/wwCH/8MAiP/JAJT/3wCV/98A\nlv/fAJf/3wCY/98Amv/jAKP/2gCm/9oAqP/YAKv/3gCv/9cAtf/VALb/1QC4/9UAuv/VALz/1wC+\n/9cAv//yAMT/wwDG/8MAx//aANH/0QDb/94A3f/eARL/3wET/9UBFP/nARX/2gEX/9kBG//tAR3/\n1QEx/9cBM//XAkT/vwBZAAoAGgAMABAAD//ZABAAAwAR/9gAHf/9AB7//gAk/9MAJf/0ACb/8gAn\n//cAKP/2ACn/+AAq/+0AK//7ACz//gAt/88ALv/4AC//9QAw//wAMf/7ADL/7QAz//cANf/1ADb/\n9wA3ABAAOP/xADkACQA6AA8APAAHAD0ACABAABgARP/pAEb/5gBI//EASv/qAEv/9wBM//cATf/3\nAE//9wBS/+MAVf/oAFj/6gBc//kAYAAJAG3/0ACC/9MAg//TAIT/0wCF/9MAhv/TAIf/0wCI/9oA\nlP/tAJX/7QCW/+0Al//tAJj/7QCa//IAo//pAKb/6QCo/+cAq//xAK//5gC1/+MAtv/jALj/4wC6\n/+sAvP/qAL7/6gC///sAxP/TAMb/0wDH/+kA0f/kANv/8QDd//EBEv/tARP/4wEU//oBFf/pARf/\n6AEb//EBHf/kATH/6gEz/+oCNwAXAjsAEwJE/9MAIAAK//0ADAAGABD/7AAkAAcAJv/kADL/5AA0\n/+MANwAMADoACwA8AAMAQAAOAET/7wBI/+gAUv/fAFj/4QBc/9MAiAAUAJj/5ACo/+4Aq//oALj/\n3wC+/+EBFP/sAXv/4AF8/+cBgP/jAY7/3gGT/9IBmP/UAZv/3gI3//gCO//0AEgACgAIAAwABwAP\n/7cAEP/SABH/uAAd/9cAHv/XACT/sQAm/9EAKv/RAC3/tAAy/9EANP/QADb/2QA3AA0AOQAGADoA\nDAA7AAIAPQAFAEAADABE/8QASP/JAEr/xABM//QAUv/AAFP/ygBU/8UAWP/HAFn/2wBg//EAbf+m\nAIL/sQCD/7EAhP+xAIX/sQCG/7EAh/+xAIj/vgCU/9EAlf/RAJb/0QCX/9EAmP/RAJr/0wCj/8QA\npv/WAKj/wgCr/8kAr//PALX/wAC4/8kAuv/FALz/yQC+/8kAxP+xAMb/uADH/8QA2//JARP/wAEU\n/9kBF//HATP/yQFh/7EBaP/RAW//0QFzAA0Bdf+7AY//0QGb/74CNwAEAkT/qgJ5/9AAIAAKABIA\nDAARAA8ADgAQ/+UAEQAOAB0AAQAe//8AJP//ACj/9QAs//0AMv/sADj/8wA6AAQAPP/8AD3//gBA\nABkASP/2AEz/7QBS/+4AWf/nAFr/7ABc/+4AYAAEAIgACwCV/+wAqP//ALj/7gEU//kBFf/zAY7/\n6wI3AAwCOwAIABQAJP/+ADcACQA5AAYAOgAUADsABgA9ABMARQAeAEkAFABKABkASwAaAEwAGgBN\nABkATgAeAE8AGgBTABsAXAAJAIgACgI2ADAC9QAkAvYAJAAhACQAFQAlAC4AJgAqACcAMAAqACcA\nKwA1ACwANwAtABkALgAyAC8ALwAwADYAMQA1ADIAKAAzADEANAAmADUALwA2AC4AN//tADgAJwA5\nAAMAOgAUADsAEgA8//AAPQAgAEcAOQBJADQASgA2AEwAOgBNADUATwA6AKsAQQL1ADAC9gAwAA0A\nDwAHABEABwBKAAEAVv//AFf//gBZ//AAWv/8AFsABABc//IAXQACAKEAAQIyACcCN//4AAwAD//9\nABH//AAdABIAHgASAEoABQBN//8AVv//AFn/7wBa//0AXP/xAF3/9QIyADQAGAAE/+gADQAIAA8A\nAgAQABMAEQAFAB0AEQAeABAAIv/PAEQAAgBIAAUAS//+AE3//ABOAAEAT//+AFL//QBW//4AV//9\nAFz/6wCmAAIAtf/9ALj//QEVAAICMgAfAjv//AAOAAwAFwAPAAIAEQAEAEAAHwBEAAQASgADAE0A\nBABZ//QAWv//AFz/+ABd//kAYAAPAKYABAIyACgAGgAE/+wADQADABAAIAAR//8AHQARAB4AEQAi\n/8wARAADAEUABQBJ//0ASgAEAEsAAQBNAAEATgAFAE8AAQBWAAEAWf/yAFr//gBb/+4AXP/wAF3/\n+wChAAEApgADAUD/+wIyAC8CN//6ACwABP/iAAoAAgAMAAkADQAPAA//8QAQAAYAEf/zAB0ABgAe\nAAoAIv/yAEAAEQBE//oARv/7AEf/+gBJAA0ASv/9AEz/+wBN//oAT//7AFL/+ABW//YAVwAMAFj/\n+gBaAA4AXAAMAGAAAgCj//oApv/6AKf/+gCo//0Ar//7ALX/+AC4//gAuv/5AL7/+gC/AAwAx///\nARX//gEX//0BMf/6AjIAEwI3AAUCOwABAlz/7gAhAAT/6gAMABIADQAIABAAEgAdAA8AHgAOACL/\n2QBAABkARAABAEgABwBJ//8ASgACAE0AAgBOAAMAUv//AFMABQBVAAEAV///AFn/8QBa//4AXP/1\nAF3/9QBgAA0ApgABAKcAAQCoAAIAqwAHALX//wC4//8BFQAEAjIAJAI3//0CO//5AAUAWf/uAFz/\n8AC///ACMgAnAjf/9wAMAAwAFAANAAgAN//0AEAAHABNAAEAWf/yAFr//ABd//YAYAAMAjIAJQI3\n//8CO//7AAkADAAWAA0ACQBAAB0AXP/2AGAADQC1//8AuP//ANsACwIyACcALwAE/+AADQACAA8A\nBQAQ/+cAEQADAB3//wAe//4AIv/zAET/8gBF//sARv/tAEf/8QBI//QASQAOAEr/8ABL//cATP/3\nAE3/9QBO//sAT//3AFD/+gBR//kAUv/rAFP/+wBU//QAVf/5AFb/7QBXAA4AWP/3AFkACwBaABAA\nWwAPAFwADQBdAA0Ao//yAKb/8gCn//IAqP/xAKv/9AC1/+sAuP/rAL7/9wDH//IA2//0AjL/+QI3\n//MCO//vAAgADwADABEAAQBNAAEAWf/yAFr//ABc//UAXf/2AjIAJQAHAEoAAQBTAAUAWf/wAFr/\n/gBc//IAXf/2AjIAJwAJADf/sgBN//4AUwADAFn/7gBa//wAXP/wAF3/9AIyACcCN//3ABcADf/+\nAA//+gAR//kAHQAPAB4ADwA3/7AASv//AE3//ABX//wAWf/sAFr/+gBb/+wAXP/qAF3/8gGAAAEB\ngv/pAYr/6AGM/+wBj//tAZP/7gGW/9sCMgAxAjf/9AAKAA3//wBKAAMATQABAFf//gBZ//AAWv/+\nAFz/8ABd//QAv//wAjIAMgAHAAwAEwBAABoARgACAFgAAwBgAA8AvgADAjIAJQBIAAT/3QAKAAgA\nDQAWAA//ywAQ/98AEf/JAB3/8gAe//AAIv/0AET//wBF//gARv/5AEf/+gBIAAEASQAPAEr/+wBL\n//QATP/0AE3/8wBO//gAT//0AFD/9wBR//YAUv/4AFP/+QBU//4AVf/2AFb//ABXAA4AWP/4AFkA\nCwBaABAAWwAGAFwADwBdAAEAov//AKP//wCk//8Apv//AKf//wCo//4Aqf/8AKoAAQCrAAEArAAB\nALT/+AC1//gAtv/4ALj/+AC6//cAvP/4AL7/+AC/AA8Az//5ANH/9QDbAAQBBv/2AQr/9gET//gB\nFf/+ARf/9gEb//YBJQAQAScADgEx//gBM//4ATwAAQE+AAEBQAABAjL/7AI3AAoCOwAGABUABP/r\nAA8ACQAQABIAEQAKAB0AEAAeABAAIv/RAEQABQBJ//wATgAEAFMAAwBX//8AWf/uAFr/+gBc/+8A\nXQABAKYABQCrAAgCMgAhAjf/+gI7//YAIgAE/+gADQAPAA8AAgAQAAEAHQANAB4ACgAi/+0ANv/+\nAEb/+wBH//4ASAABAEr/+wBL//wATP/8AE3//ABR//4AUv/5AFMAAgBV//4AVv/8AFcABwBY//0A\nWQADAFoACABcAAYAXQADAKj//wCrAAEAtf/5ALj/+QC+//0A2wAEAjIAEgI3AAMACQBKAAIATQAC\nAFn/8wBa//4AW//zAFz/9QBd//kCMgAkAjf//QAiAA0AEgAP/88AEf/SAB3/+gAe//4ARP/yAEb/\n7QBI//gASv/wAEz/8wBN//MAT//zAFL/6wBV//UAVv/tAFj/9wBcAA0Aov/yAKP/8gCk//IApf/y\nAKb/8gCn//IAqP/wAKr/+ACr//gArP/4ALT/6wC1/+sAuP/rALr/8gC+//cBFf/wAjIADQAqAAT/\n5wAKAAwADQAaAA//4wAQABAAEf/lAB0ABwAeAAsAIv/3AET//wBG//oASAAEAEkAEgBK//0ATP/7\nAE3//ABP//sAUv/3AFX//QBW//oAVwASAFj//QBcABEAXQAEAKL//wCj//8ApP//AKX//wCm//8A\np///AKj//QCqAAQAqwAEAKwABAC0//cAtf/3ALj/9wC6//8Avv/9AjIAHQI3AA4COwAKABMABP/b\nAA0ABAAP//sAEP/mABH/+gAd//0AHv/8ACL/8QBE//AARv/sAEj/8gBS/+kAVP/uAFwACwCr//IA\nuP/pAjL/9wI3//kCO//1ACQABP/dAAoAAQANABEAD//QABAAAQAR/84AHf/7AB7/+gAi//IARP/u\nAEb/7gBI//UASv/sAE3/8wBP//MAUv/sAFb/6QCi/+4Ao//uAKT/7gCl/+4Apv/uAKf/7gCo/+wA\nqv/1AKv/9QCs//UAtP/sALX/7AC4/+wAuv/uAM//7gEd/+kCMgAKAjcABQI7AAEADwAE/+EADQAT\nAA///wAQ/+4AEf/9AB0ABgAeAAYASP/+AEz/+QBS//UAWP/6AFwAAgC4//UAvv/6AjL/9wAWACT/\n8wAt//QAN//zADn//AA6AAkAO//7ADz/6QA9AAcARQARAEkACwBKAA0ASwANAEwADQBNAA4ATgAR\nAE8ADQBTABQAXP/9AIj//wI2ACMC9QAbAvYAGwATAVj/4wFb/8ABXP++AWH/4wFr//MBc/+pAXT/\nqwGM/+EBk//qAbH/5QG8//sBw/+pAcT/yQHI/+wB0P/qAdz/4gHj/7AB5P/dAej/4gAJACT/0QA3\n/5cAOf+3ADr/yQA8/5gAg//RAIb/0QCH/9EAiP/YAAsADwAUABEAFgAm/+cAKv/kADL/5AA0/+MA\nN/+qADj/5AA5/8AAOv/RADz/qgAeAA8AFQAQAA0AEQAUACb/5QAq/+EAMv/lADT/5AA3/6oAOP/l\nADn/wQA6/9IAPP+qAET//QBF//wARv/5AEf/+ABI//8ASv/1AFL/9gBU//sAV//yAFj/9gBZ/98A\nWv/rAFz/4ABt/9oBJv+yAjf/yAI7/8QCRP/dABEADwAUABEAFgAm/+cAKv/kADL/5AA0/+MAN/+q\nADj/5AA5/8AAOv/RADz/qgBZ/90AWv/sAJ//qgC//+ABJP+uASb/sgALAA8AEwARABMAJv/lACr/\n4QAy/+IANP/gADf/qwA4/+MAOf/BADr/0QA8/6wAHAAPABMAEAANABEAFAAm/+YAKv/jADL/4wA0\n/+IAN/+sADj/5gA5/8IAOv/TADz/rABE//sARf/9AEb/+QBH//gASv/3AFL/9wBU//wAV//zAFj/\n9wBZ/98AWv/sAFz/4gBt/9sCN//JAjv/xQJE/94AHAAPABMAEAANABEAFgAm/+YAKv/jADL/5AA0\n/+IAN/+qADj/4wA5/8IAOv/QADz/rQBE//wARf/9AEb/+gBH//kASv/4AFL/9wBU//wAV//zAFj/\n9wBZ/90AWv/rAFz/3wBt/9sCN//GAjv/wgJE/98ABQA3//0AOf/2ADr//AA7AAEAPf/+AAEAJP/i\nAAMAN//eADn/4gA8/8kACgAP//4AEf/8AB0AHAAeAB8AJP/iADf/3gA5/+IAOv/zADz/yQA9/+4A\nCgAP//4AEf/8AB0AHAAeAB8AJP/iADf/3gA5/+IAOv/zADv/3wA8/8kAAQAk/+kAAQAk/+UABwAP\nAAIAEQABACT/5QBQAAUAUQADAFMABwBVAAMACAAPAAIAEQABACT/5QBFAAUAUAAFAFEAAwBTAAcA\nVQADABIAD/+3ABD/0gAR/7gAHf/XAB7/1wAt/7QAg/+xAIT/sQCG/7EAo//EAKv/yQC1/8AAvP/J\nAMT/sQDG/7gA2//JARP/wAEh/78AAwBIAAoATgAGAFr//QADAFn/8ABa//wAXP/yAAMAWf/vAFr/\n/gBc//IADAAPAAgAEQAFAEoAAgBX//8AWf/vAFr//QBbAAQAXP/vAF0AAgChAAICMgAmAjf/9wAE\nAFUABABZ//MAWv//AFz/8gASAAT/7AAQACAAEf//AB0AEQAeABEAIv/MAEUABQBGAAUARwAHAEoA\nBABPAAEAVAAKAFn/8gBa//4AXP/wAF3/+wI3//oCO//2AAMAWf/yAFr//gBc//AAAQBZ//IAAwBZ\n/+wAWv/6AFz/6gAEAFn/7ABa//oAXP/qATz/8gABAFf//AAQAA3//gAP//oAEf/5AB0ADwAeAA8A\nN//HAEr//wBN//wAV//8AFn/7ABa//oAW//sAFz/6gBd//ICMgAxAjf/9AADAA//0AAR/84Az//u\nAAcAN/+qADz/qgBc/+AAn/+qAL//4AEk/64BJv+yAAwADwATABEAFgAdABEAHgAQACb/5gA3/64A\nPP+tAFz/+gCf/60Av//6AST/rgEm/7IAAgBIAAcAUv//ABUAD//IABH/xwAd/9sAHv/bAET/2ABI\n/9kAUP/0AFH/8gBS/9AAVf/yAFb/0wBY//EAXAALAF3/+wCj/9gAq//ZALX/0AC8//QAvv/0AL8A\nDwEx//QAAQE+//gACQAy/9YAN//HADn/wAA8/74AWf/BAJ//vgC//8QBJP/IASb/xwAZAA//xQAR\n/8QAHf/YAB7/2ABE/9MAR//OAEj/1gBJAAcASv/MAFL/xwBT//EAVv/OAFcABwBY/+0AXf/3AKP/\n0wCr/9YAtf/HALb/0AC8//AAz//NANH/yQEj/9IBMf/wAUD/+gAOAA8AFQARABcAHQACADL/3wA3\n/6IAOf+wADr/wQA8/5kAWf/RAFr/4ACf/5kAv//SAST/owEm/6IABQA3//8AOf/3ADr//QA7AAIA\nPf//AAEAWAAGAAsAD//LABH/ygBE//8AR//7AFD/+ABR//YAU//5AFb//ABXAA8AWQALAF0AAgAS\nAA//ywAR/8oAHf/vAB7/8ABE//8AR//6AEgAAQBM//QAUv/4AFj/+ABZAAsAo///AKsAAQCv//QA\ntf/4ALz/+ADR//UBMf/4AAIARgABAFr/+gADAE4ABQBTAAMAV//9ABkAg/+sAIT/rACG/6wAo/+6\nAKv/vwC1/7YAvP/TAL//8QDE/6wAxv+sAMf/wADb/8UBBv/RAQr/0QET/8QBF//RARv/8wEd/7sB\nJf/xASf/7AEx/9MBM//TATz/3QE+/90BQP/eACAAD//GABD/1AAR/8AAHf/TAB7/0wAk/7MALf+w\nAIP/swCE/7MAhv+zAJj/3QCj/8AAq//FALX/vAC8/9kAv//3AMT/swDG/7MAx//AANv/xQEG/9cB\nCv/XARP/xQEX/9cBG//wAR3/uwEl//cBJ//wATP/2QE8/+MBPv/jAUD/4wAWAA//5wAR/+YARP/i\nAEj/5gBQ/+MAUf/hAFL/3QBV/+EAVv/dAFf/+ABY/+AAXP/rAF3/6ACj/+IAq//mALX/3QC8/+AA\nv//sARsABgEj/+cBMf/gAUD/8wADAA///wAdAAYAHgAGAAYAD///AB0ABgAeAAYARv/4AEj//gC1\n//UABAAP//8AHQAGAB4ABgBI//4ABAGC/9sBjP/eAZL/5wGV//sAAQGM/80AAQGK/+gAAQGS/4sA\nEgAPABQAEQAWADL/5AA3/6oAPP+qAH3/6QFo/+QBb//kAXP/sgF0/6oBdf/PAXf/0QGC/9sBjP/e\nAZL/5wGU//cBlf/7AZz/9wAEACT/3QFh/90Biv/lAnn//gAUAA//dwAR/3MAJP+cADL/2gA8AAMA\nUv+GAWH/nAFr/6kBb//aAXv/rgF8/7sBgP+HAYT/kgGJ/6UBjP+9AY7/hQGQ/38BlP+qAZz/2AJ5\n/7cACAAy//EBaP/1AW//8QF1/90Bgv/jAYP/9QGM/+cBk//qAAQAMv/sAFL/7gFv/+wBjv/rAAUA\nJP/iADz/yQFh/+IBa//sAXT/yQAPAA8ABAARAAUAHf/sAB7/5wAy/84AUv/TAW//zgF1/7gBe//Q\nAXz/5gGO/84BlP/XAZj/xQGb/84BnP/XABAADwAgABEAIAAy/+0AN/+2ADz/tgB9//UBaP/tAW//\n7QFz/7oBdP+2AXwABgGEAAoBjv//AZQAAgGb//8CN//QAAEBhAAXAAgAJP/xAFIADAFh//EBfAAR\nAYQAFAGOAAsBmP/9AZsACwACAXv//AGA//8ACwAk/+IAPP/JAWH/4gFm/+4Ba//sAXP/3gF0/8kB\ndv/fAXf/9gGK/+8Cef/+AAQAUgALAXwADwGK//QBjgAJABQAD/+tABH/rQAd//cAJP/GADz/1QBS\n/+wBYf/GAWj/9gFr/9UBb//0AXP/+wF0/9UBdf/uAXz/8gGA//ABhP/1AY7/7QGb/+0Bnf/cAnn/\n5gAHADL/7ABS//sBaP/sAW//7AGO//gBk//YAZb/3QAdAA//xgAR/8AAHf/TAB7/0wAk/7MAMv/d\nADcADwA8AAYAUv+8AH3/sgFh/7MBa/+8AW//3QFzAA8BdAAGAXX/xwF7/74BfP/CAYD/wAGE/8UB\nhf/vAY7/ugGQ/7oBkv+uAZT/vwGb/7oBnP/bAZ3/rgI3//8ADgAP/7cAEf+4ACT/sQAy/9EANwAN\nAH3/tgFh/7EBaP/RAW//0QFzAA0Bdf+7AY//0QGb/74Cef/QAA0AJP/NADf/uwA8/7YAUv/3AWH/\nzQFr/9cBc/+7AXT/tgGK/9oBjv/5AZj/6wGb//kBnf/rAAsAMv/kAFL/3wFo/+QBb//kAXv/4AF8\n/+cBgP/jAY7/3gGT/9IBmP/UAZv/3gAEACT/0QAy//QBYf/RAW//9AAPAA8AEwARABUAHQAaAB4A\nGwBSAAkAff/yAYIAFAGDAAMBhAAQAYUAAgGHABIBjQANAY4ABwGS//wBmP/6AAsAHgAhAFIADwGA\nABEBgwANAYUADwGHABoBigAFAY4ADQGTABMBlQAVAZgAAgABAYP//gAVAAT/9QAPABMAEQAUAB0A\nGgAeABoAUgAIAH3/8gGCABQBgwADAYQAEAGFAAEBhwASAY0ADQGOAAcBjwAKAZL//AGTABYBlQAL\nAZoADQGbAAcBnAANAAIBgv/sAYr/5wAOAFL/6QF7/+oBfP/sAYD/7AGD/+gBhP/wAYr/zQGN//gB\njv/oAZD/5QGY/94Bm//oAZz//AGd/94AAQGM/+4AFABSAA8BewAOAXwAGQGAABEBgwANAYQAHAGF\nAA8BhwAaAYoABQGNABoBjgANAZIAAQGTABIBlAASAZUAFQGW//IBmAACAZsADQGcABIBnQACAAsA\nUv/jAXv/4AF8//YBgP/iAYT/+QGO/98BlP/nAZj/1gGb/98BnP/nAZ3/1gARAA///wAR//4AUv/p\nAH3/0gF7/+kBfP/wAYD/7AGD/+cBhP/0AYcABQGO/+cBkv/bAZX/7wGY/90Bm//nAZz//AGd/90A\nFAAPAAsAEQANAFL/7AB9/9sBe//rAXz/8gGC/9IBhP/2AYz/1QGN/+8Bjv/rAZL/3wGT/9cBlP/v\nAZX/8AGY/98Bm//rAZz/7wGd/98CN//FABMAD//PABH/0QAd//oAHv/9AFL/6gB9/98Be//rAXz/\n8gGA/+0Bg//pAYr/1QGO/+0Bkv/hAZX/8QGY/98Bm//tAZz/+QGd/98CNwAIAAgAUv/1AXv/9AGA\n//cBhAADAY7/9gGb//YBnP/yAZ3/5AAIAYAABQGC/+oBiv/pAYz/7gGP/+4Bk//tAZQAAwGW/9wA\nBwBS//IBe//yAYr/2gGO//EBm//xAZz/8wGd/+IACAAE/+8Aff/7AYL/7wGK/+4BjP/1AY//9QGT\n//IBlv/hAAEBiv/gABUAD//kABH/5QAd//4AHv/9AFL/8gB9/+gBe//1AXz/+wF+//IBgP/3AYr/\n1QGO//MBkP/sAZL/5wGTAAwBlf/4AZj/5AGb//MBnP/5AZ3/5AI3AAUABAGC//oBiv/tAZP//QGW\n//MAAQGT//QACwBS/90Be//eAXz/4AGA/+ABhP/jAYf//QGO/9wBmP/NAZv/3AGc//QBnf/NAAYB\ngv/eAYr/3AGM/+EBj//iAZP/4AGW/9AAAQGM//sABQGC/+oBjP/uAY//7gGT/+0Blv/cAAYBgv/6\nAYr/7QGM//sBj//2AZP//QGW//MAJwGl/8cBqv/EAaz/6QGv/+cBtf+fAbz/zgG//8QBwv/GAcP/\n8gHE/+YBxf++Acj/5wHR/3kB0/+CAdX/YQHW/30B1/+gAdj/dgHZ/4kB2/+RAdz/cAHd/4MB3v+L\nAd//dwHg/4UB4f+SAeL/eQHj/2oB5P+mAeX/dwHm/54B5/+AAej/lwHr/6QB7/+TAfD/dAH1/30B\n+v9uAf//1AAHAaz/qQGv/9ABw/+hAcT/zwHI/9ABy/+bAev/xgAHAaz/uAGv/+ABw/+wAcT/3wHI\n/98By/+qAev/1QARAaX/7QG4/9wBv//oAcL/6gHF/+oB0f/tAdL/6gHW/+4B2P/hAd//6QHi/+YB\n4/+ZAeT/0gHl/80B6P/JAfX/7wH//9cAJAGl/8oBqv/eAawAAQGx/6IBtf+5Abj/0AG8/+cBv//J\nAcL/yQHDAAoBxf/OAdD/ywHR/7sB0v/CAdX/nQHW/7kB1//cAdj/vQHZ/8UB2//NAdz/rAHd/78B\n3v/HAd//tAHg/8EB4f/LAeL/tgHj/6YB5f+fAeb/2gHn/7wB6P/TAe//zQHw/7sB9f+6Afr/qgAd\nAA8AEgAQAAwAEQAVAB0AEAAeAA8Aff/qAaX/6QGqAAgBrP+7Aa//6gG4/9wBvAARAb//5QHC/+cB\nw/+xAcT/6QHF/+UByP/XAcv/sAHY/+8B3AABAd//9QHi//cB4/+JAeT/3AHl/90B6P/YAev/zAH/\n/9cADgGs/9cBr//dAbH/5AG3//YBw//gAcT/3AHI/+QByf/8Adf//wHj/4cB5P/gAev/zQH6//IB\n///iAA4BrP/bAa//2QGx/+ABw//kAcT/4AHI//QByQABAdcABgHj/7UB5P/rAej/6gHr/+8B+v/x\nAf//7wAsAA//eQAQ/4wAEf91AB3/jgAe/5MBpf/HAar/xAGs/+kBr//nAbX/nwG8/84Bv//EAcL/\nxQHD//IBxP/mAcX/vQHI/+cB0f+AAdP/ggHV/2AB1v99Adf/oAHY/3YB2f+JAdv/kQHc/28B3f+C\nAd7/iwHf/3cB4P+FAeH/kQHi/3kB4/9pAeT/pQHl/3YB5v+dAef/fwHo/5YB6/+kAe//kwHw/3sB\n9f99Afr/bgH//9MAAQHF/+4ADwGl//8BuP/zAb//+wHC//0Bxf/9AdEABQHWAAQB2P/4AeIAAQHj\n/6kB5P/nAeX/5AHo/+AB9QAFAf//8wAUAar/9gGs/9oBr//SAbH/2wG1//gBt//6Abj/7gHD/+MB\nxP/fAcb/4AHI/+8B0P/wAdz/7QHj/7MB5P/qAeb/6gHo/+UB8P/2Afr/6wH//+4AEQGl//ABuP/k\nAb//6wHC/+0Bxf/tAdH/9gHS//IB1v/2Adj/6AHf//AB4v/yAeP/mQHk/9cB5f/VAej/0QH1//YB\n///jABABqv/8Aaz/0QGv/9oBsf/gAbX/7AG3//8BuP/zAbwABAHD/9cBxP/hAcb/4QHI//sBy//a\nAdD/9QHc//cB+v/1ABgAD/+oABAABgAR/6gAHf/3AB7/9QGq/+EBsf/CAbX/yQG8/+sBwv/zAcj/\n9wHQ/+IB0f/yAdP/4QHU/+gB1f/FAdb/8AHY//EB3P/OAd//6wHi/+sB5f/aAfX/8gH6/80AEgGq\n//wBrP/iAa//1wGx/+ABt///Abj/9QG8AAUBv///AcP/6wHE/+YBxf/+Acb/5QHQ//YB4//HAeT/\n+QHo//QB+v/xAf//+AAvAA//xgAQ/9QAEf/AAB3/0wAe/9MAff+yAaX/5QGq/+IBrAAGAa8ABAGx\n/64Btf+9Abj/6wG8/+wBv//iAcL/4wHDAA8BxAADAcX/2wHQ/+gB0f+9AdP/tgHU/70B1f+lAdb/\nwAHX/8IB2P+0Adn/vQHb/8UB3P+xAd3/tgHe/78B3/+6AeD/uQHh/78B4v+8AeP/hwHk/8MB5f+i\nAeb/uwHn/7MB6P+0Aev/wgHw/7kB9f/AAfr/rwH///EALQAP/6AAEP/aABH/oQAd/84AHv/UAH3/\nswGl/9EBqv/dAawAAQGx/68Btf+4Abj/zwG8/+YBv//NAcL/zwHDAAoBxP/+AcX/zQHQ/8oB0f++\nAdL/wgHV/6QB1v/AAdf/3AHY/7wB2f/FAdv/zQHc/6sB3f++Ad7/xwHf/7sB4P/BAeH/ywHi/70B\n4/+lAeT/3wHl/6IB5v/ZAef/uwHo/9IB7//MAfD/ugH1/8EB+v+qAf//4QAOAar/7QGv/9ABsf/R\nAbX/2wG3//ABvP/2AcT/0gHG/9YByP/vAcv/wgHQ/+cB1f/kAdz/7QH6/+sADwGl/+YBuP/ZAb//\n4gHC/+QBxf/eAdH/6AHW/+IB2P/aAd//3AHi/94B4/+SAeT/zQHl/78B6P+/AfX/4gAHAaz/rQGv\n/9QBw/+lAcT/0wHI/9QBy/+eAev/yQAHAaz/pgGv/80Bw/+eAcT/zAHI/80By/+XAev/wgAKAaz/\n1gGv/98Bsf/lAbX/8QG8AAkBw//cAcT/5gHL/98B0P/6Afr/+gAFAeP/ugHk/+0B6P/uAfr//QH/\n//MACAHXAAEB2P/1AeP/sgHk/+cB5v/oAej/8wHw//wB///uAAcB2P/2AeP/uAHk/+YB5v/pAej/\n5wHw//cB///tAA4AD/+FABD/mgAR/4UAHf/BAB7/wQHV/7AB3P+/Ad//2QHi/9oB5f/GAfD/4QH1\n/+AB+v+9Af//7gAHAdcACgHY//0B3P/4AeT/7AHm/+8B6P/7Af//8wAHAdIABgHWAAsB3wAFAeIA\nAwHl/+wB9QALAf8ACAAJAdcABAHc//oB4/+8AeT/6wHm/+4B6P/sAfD//AH6//kB///xAAEB+v/0\nAAcB0v//AdYAAgHY//gB3//+AeL//AHl/+QB9QADAAkB1wADAdj/9wHc//AB4/+0AeT/6gHm/+0B\n6//uAfr/7wH///AADQAQACIAEQACAB0AEgAeABIB1wAJAdj/+wHc//UB4/+3AeT/6wHm/+4B6P/2\nAfUADAH///IADAGv/+IB0QAEAdcAAwHY//sB3P/5AeP/wAHk/+kB5f/qAeb/7AHo//gB8P/8Afr/\n9wAVAA//aQAQ/3wAEf9pAB3/mAAe/5gAff+mAdH/ugHV/4cB1v+2Adj/ugHc/5YB3/+wAeL/sQHj\n/5AB5P/GAeX/nQHo/70B8P+5AfX/uAH6/5UB///GABIAD//VABAAAQAR/9IAHv/+AH3/4gHR//AB\n1f/WAdb/9AHY/+8B3P/fAd//7wHi//EB4//VAeX/2AHoAAEB8P/tAfX/9QH6/90ADQHU/+YB1f/Z\nAdf/7AHY/+AB3P/XAeP/oQHk/9EB5v/PAej/5QHr/9wB8P/kAfr/1QH//9gACAHR//IB1v/yAdj/\n6QHf/+wB4v/uAeX/0QH1//IB/wAGAAcB1v/0AeL/8QHj/2wB5P/IAej/4wHr/7kB///PAAcB1v/2\nAeL/8gHj/20B5P/JAej/5QHr/7oB///QAAgB3P/4AeP/vAHk//IB6P/9Aev/9gHwAAIB+v/2Af//\n+AAKAdcAAQHY//UB3P/uAeP/sQHk/+gB5v/rAej/8wHr/+wB+v/tAf//7gAIAdX/wAHc/88B3//p\nAeL/6gHl/9YB8P/xAfX/8AH6/80ABQHj/2sB5P/HAej/4wHr/7gB///OAAgB1v/7AeL/+AHj/3MB\n5P/PAej/6gHr/8AB9f/8Af//1gAJAdEACAHSAAYB1gAKAdj//wHfAAUB4gAHAeX/6wH1AAsB/wAB\nAAsB0f/3AdX/3QHW//sB2P/vAdz/5gHf//YB4v/4AeP/1AHl/98B8P/0AfX//AAoAaX/0QGq/84B\nrP/zAa//8wG1/6kBvP/XAb//zgHC/88Bw//8AcT/7wHF/8cByP/xAdD/1AHR/5kB0/+TAdX/hAHW\n/54B1/+qAdj/kAHZ/5oB2/+iAdz/iAHd/5MB3v+cAd//mAHg/5YB4f+fAeL/mgHj/3MB5P+vAeX/\ngAHm/6cB5/+QAej/oAHr/64B7/+fAfD/lAH1/54B+v+HAf//3QAIAdX/wAHc/88B3//pAeL/6gHl\n/9YB8P/yAfX/8QH6/80AHQBEACIARQAmAEYAMgBHADIASAA6AEkAFgBKADEASwAiAEwAIgBNACIA\nTgAmAE8AIgBQACUAUQAkAFIAMQBTACkAVAA2AFUAJABWAB0AVwAaAFgAJQBZAAwAWgAaAFv/+QBc\nAA4AXf//AKYAIgC4ADEAvgAlACYAJP+/ACb//QAq//kAMv/9ADT//AA2AAsAN//wADkACAA6ABEA\nO//tADz/+AA9/+4ARP/2AEb/9QBH//QASP/8AEkABABK//UAUv/vAFT/+ABW//YAVwAFAFkAAwBa\nAAoAW//1AFwABABd/+kAg/+/AIb/vwCH/78AiP/GAKb/9gCo//kAuP/vARQABAEV//QC9QADAvYA\nAwAWAAwALgAP/9EAEf/TACT/uQBAACsAR//nAFL/5gBV/+8AVv/tAFf//ABZ//sAWv//AFz//ABg\nABoAg/+5AIb/uQCH/7kAiP+/ALj/5gEd/+0BIf/xASP/7QASACQACgAm//gAKv/yAC0AFQAy//UA\nNP/zADYACwA3/7YAOf+2ADr/zgA8/6UAPQASAEr/9ABWAAMAWf/JAFr/3QBc/8kAXQAOACMAJP/E\nACr//QAyAAEANgAQADf/9QA5AAwAOgAWADv/8gA8//0APf/zAET/+wBG//oAR//5AEkACQBK//oA\nUv/zAFT//ABW//oAVwAKAFkACABaAA8AW//6AFwACQBd/+4Ag//EAIb/xACH/8QAiP/KAKb/+wCo\n//0AuP/zARQACQEV//kC9QAIAvYACAAJACT/wQA3//kAOQALADoAFQA8//0Ag//BAIb/wQCH/8EA\niP/IABYAJAAQACb//gAq//gALQAbADL/+wA0//kANgARADf/vAA5/7wAOv/UADsABAA8/6sAPQAY\nAEr/+gBWAAkAWf/PAFr/4wBc/88AXQAUAIgAHQCf/6sBJv+8AAkAJP/VADf/mwA5/7wAOv/OADz/\nnQCD/9UAhv/VAIf/1QCI/90ACQA8/8UAUgARAXT/xQF7ABMBfAAaAYQAGwGOAA8BlAAUAZ0ABAAB\nAOYABAAKAAsADQAPABAAEQASACIAJAAlACYAJwAoACkAKgArACwALQAuAC8AMAAxADIAMwA0ADUA\nNgA3ADgAOQA6ADsAPAA9AD4APwBEAEUARgBHAEgASQBKAEsATABNAE4ATwBQAFEAUgBTAFQAVQBW\nAFcAWABZAFoAWwBcAF0AXgBtAH0AggCDAIQAhQCGAIcAiACJAJQAlQCWAJcAmACaAJsAnACdAJ4A\nnwChAKIAowCmAKcAqACrAKwArwC0ALUAtgC4AL4AvwDEAMYAzwDRANsA/wEAAQMBFAEVARcBGwEd\nASMBJAEmAScBPAE+AUABWAFaAV0BXgFhAWIBYwFlAWYBaAFqAWsBbAFtAW4BbwFwAXEBcgFzAXQB\ndQF2AXcBewF8AX4BgAGBAYIBgwGEAYUBiQGKAYwBjQGOAY8BkAGSAZMBlAGVAZYBmAGaAZsBnAGd\nAaQBqgGrAa0BrwGxAbIBswG0AbYBtwG4AbsBvwHBAcIBwwHEAcUBxgHLAc0BzgHPAdEB0gHTAdQB\n1gHXAdgB2gHbAd8B4QHiAeMB5AHlAeYB6wHtAe4B7wH0AfoB+wH9Af8CBwIIAjICNgI3AjgCOgI7\nAjwCRQJ5AAAAAAABAAAAANpTmfAAAAAA0e+yRgAAAADR77JG\n`;\n","import { ImageCompression, jsPDFOptions } from 'jspdf';\n\nimport { PdfConstructor } from './types';\nimport { FontConfiguration, LineStyle, defaultFontConfigurations } from '../configuration';\n\nimport {\n  NimbusSansLBolBold,\n  NimbusSansLBolItaBoldItalic,\n  NimbusSansLRegItaItalic,\n  NimbusSansLRegNormal,\n} from './fonts/NimbusSansLFonts.base64';\n\nconst defaultOptions: jsPDFOptions = {\n  orientation: 'p',\n  unit: 'pt',\n  format: 'letter',\n  compress: true,\n  putOnlyUsedFonts: true,\n};\n\nclass DocWrapper {\n  currentPage = 1;\n\n  fontConfiguration: FontConfiguration = defaultFontConfigurations.text;\n\n  totalPages = 1;\n\n  doc: any;\n\n  static setup(docConstructor: PdfConstructor, options: jsPDFOptions = defaultOptions): DocWrapper {\n    return new DocWrapper(docConstructor, options);\n  }\n\n  constructor(DocConstructor: PdfConstructor, options: jsPDFOptions) {\n    this.doc = new DocConstructor(options);\n    this.doc.setLineWidth(0);\n    this.doc.setDrawColor(0, 0, 0, 0);\n    this.addFonts();\n  }\n\n  get pageSize(): { width: number, height: number } {\n    return this.doc.internal.pageSize;\n  }\n\n  save(filename: string) {\n    this.doc.save(filename);\n  }\n\n  output() {\n    return this.doc.output('blob');\n  }\n\n  eachPage(callback: () => void) {\n    for (let i = 1; i <= this.totalPages; i += 1) {\n      this.setPage(i);\n      callback();\n    }\n  }\n\n  newPage() {\n    this.doc.addPage();\n    this.totalPages += 1;\n    this.currentPage += 1;\n  }\n\n  setPage(page: number) {\n    this.doc.setPage(page);\n    this.currentPage = page;\n  }\n\n  setFont(fontName: string, fontStyle?: string, fontWeight?: string | number) {\n    this.doc.setFont(fontName, fontStyle, fontWeight);\n  }\n\n  getFont() {\n    return this.doc.getFont();\n  }\n\n  getFontSize() {\n    return this.doc.getFontSize();\n  }\n\n  getFillColor() {\n    return this.doc.getFillColor();\n  }\n\n  setFillColor(color: number | string) {\n    this.doc.setFillColor(color);\n  }\n\n  setFontStyle(styleConfig: FontConfiguration) {\n    this.doc.setFont(styleConfig.name, styleConfig.style, styleConfig.weight);\n    this.doc.setFontSize(styleConfig.size);\n    this.setTextColor(styleConfig.color);\n    this.fontConfiguration = styleConfig;\n  }\n\n  setFontSize(size: number) {\n    this.doc.setFontSize(size);\n  }\n\n  withFontConfiguration(fontConfiguration: FontConfiguration | null, callback: () => any): any {\n    const previousFontConfiguration = this.fontConfiguration;\n    if (fontConfiguration) this.setFontStyle(fontConfiguration);\n    const returnValue = callback();\n    this.setFontStyle(previousFontConfiguration);\n    return returnValue;\n  }\n\n  setTextColor(color: string | number) {\n    switch (typeof color) {\n      case 'string':\n        this.doc.setTextColor(color);\n        break;\n      case 'number':\n        this.doc.setTextColor(color);\n        break;\n      default:\n        break;\n    }\n  }\n\n  getTextDimensions(text: string, fontStyle?: FontConfiguration): { w: number; h: number } {\n    if (!text || text.length === 0) {\n      return { w: 0, h: 0 };\n    }\n\n    return this.withFontConfiguration(fontStyle || null, () => this.doc.getTextDimensions(text));\n  }\n\n  getTextWidth(text: string, fontStyle?: FontConfiguration): number {\n    return this.getTextDimensions(text, fontStyle).w;\n  }\n\n  getTextHeight(text: string, fontStyle?: FontConfiguration): number {\n    return this.getTextDimensions(text, fontStyle).h;\n  }\n\n  getSpaceWidth(): number {\n    return this.getTextWidth(' ');\n  }\n\n  text(text: string, x: number, y: number, style?: FontConfiguration) {\n    this.withFontConfiguration(style || null, () => {\n      this.doc.text(text, x, y);\n\n      if (style?.underline) {\n        const { w: textWidth } = this.doc.getTextDimensions(text);\n        this.doc.setDrawColor(0);\n        this.doc.setLineWidth(1.25);\n        this.doc.line(x, y + 3, x + textWidth, y + 3);\n      }\n    });\n  }\n\n  setDrawColor(color: number | string) {\n    this.doc.setDrawColor(color);\n  }\n\n  setLineWidth(width: number) {\n    this.doc.setLineWidth(width);\n  }\n\n  splitTextToSize(text: string | null, maxWidth: number, fontStyle?: FontConfiguration) {\n    return this.withFontConfiguration(fontStyle || null, () => this.doc.splitTextToSize(text, maxWidth));\n  }\n\n  addImage(\n    imageData: string,\n    format: string,\n    x: number,\n    y: number,\n    width: number,\n    height: number,\n    alias?: string,\n    compression?: ImageCompression,\n    rotation?: number,\n  ) {\n    this.doc.addImage(imageData, format, x, y, width, height, alias, compression, rotation);\n  }\n\n  setLineStyle(style: LineStyle) {\n    this.doc.setDrawColor(style.color);\n    this.doc.setLineWidth(style.width);\n\n    if (style.dash && Array.isArray(style.dash)) {\n      this.doc.setLineDash(style.dash);\n      this.doc.setLineCap(1);\n    } else {\n      this.doc.setLineDash([]);\n    }\n  }\n\n  resetDash() {\n    this.doc.setLineDash([]);\n  }\n\n  line(x1: number, y1: number, x2: number, y2: number): void {\n    this.doc.line(x1, y1, x2, y2);\n  }\n\n  circle(x: number, y: number, r: number, style?: string | null): void {\n    this.doc.circle(x, y, r, style);\n  }\n\n  roundedRect(\n    x: number,\n    y: number,\n    w: number,\n    h: number,\n    rx: number,\n    ry: number,\n    style?: string | null,\n  ): void {\n    this.doc.roundedRect(x, y, w, h, rx, ry, style);\n  }\n\n  rect(\n    x: number,\n    y: number,\n    w: number,\n    h: number,\n    style?: string | null,\n  ): void {\n    this.doc.rect(x, y, w, h, style);\n  }\n\n  withDrawColor(drawColor: number|string, callback: () => void) {\n    const previousDrawColor = this.doc.getDrawColor();\n    this.doc.setDrawColor(drawColor);\n    callback();\n    this.doc.setDrawColor(previousDrawColor);\n  }\n\n  withFillColor(fillColor: number|string, callback: () => void) {\n    const previousFillColor = this.doc.getFillColor();\n    this.doc.setFillColor(fillColor);\n    callback();\n    this.doc.setFillColor(previousFillColor);\n  }\n\n  withFontSize(fontSize: number, callback: () => void) {\n    const previousFontSize = this.doc.getFontSize();\n    this.doc.setFontSize(fontSize);\n    callback();\n    this.doc.setFontSize(previousFontSize);\n  }\n\n  withLineWidth(lineWidth: number, callback: () => void) {\n    const previousLineWidth = this.doc.getLineWidth();\n    this.doc.setLineWidth(lineWidth);\n    callback();\n    this.doc.setLineWidth(previousLineWidth);\n  }\n\n  private addFonts() {\n    this.doc.addFileToVFS('NimbusSansL-Reg.ttf', NimbusSansLRegNormal);\n    this.doc.addFont('NimbusSansL-Reg.ttf', 'NimbusSansL-Reg', 'normal');\n\n    this.doc.addFileToVFS('NimbusSansL-Bol.ttf', NimbusSansLBolBold);\n    this.doc.addFont('NimbusSansL-Bol.ttf', 'NimbusSansL-Bol', 'bold');\n\n    this.doc.addFileToVFS('NimbusSansL-RegIta-italic.ttf', NimbusSansLRegItaItalic);\n    this.doc.addFont('NimbusSansL-RegIta-italic.ttf', 'NimbusSansL-RegIta', 'italic');\n\n    this.doc.addFileToVFS('NimbusSanL-BolIta-bolditalic.ttf', NimbusSansLBolItaBoldItalic);\n    this.doc.addFont('NimbusSanL-BolIta-bolditalic.ttf', 'NimbusSansL-BolIta', 'bolditalic');\n  }\n}\n\nexport default DocWrapper;\n","import {\n  DimensionOpts, FillColorOpts, FillOpts, PositionOpts, RadiusOpts, Renderer, SizeOpts, ThicknessOpts,\n} from './renderer';\n\nimport DocWrapper from '../formatter/pdf_formatter/doc_wrapper';\nimport { ChordDiagramFontConfigurations, FontConfiguration } from '../formatter/configuration';\n\nconst defaultWidth = 150;\nconst defaultHeight = 270;\n\n/**\n * Renderer implementation for drawing chord diagrams to a jsPDF document.\n */\nclass JsPDFRenderer implements Renderer {\n  doc: DocWrapper;\n\n  readonly #x: number;\n\n  readonly #y: number;\n\n  readonly #scale: number;\n\n  height: number;\n\n  width: number;\n\n  fonts: ChordDiagramFontConfigurations;\n\n  constructor(\n    doc: DocWrapper,\n    {\n      x,\n      y,\n      width,\n      fonts,\n    }: {\n      x: number;\n      y: number,\n      width: number,\n      fonts: ChordDiagramFontConfigurations,\n    },\n  ) {\n    this.doc = doc;\n    this.#x = x;\n    this.#y = y;\n    this.#scale = width / defaultWidth;\n    this.width = width;\n    this.height = defaultHeight * this.#scale;\n    this.fonts = fonts;\n  }\n\n  static calculateHeight(width: number): number {\n    return defaultHeight * (width / defaultWidth);\n  }\n\n  circle({\n    x, y, size, fill, thickness,\n  }: FillOpts & PositionOpts & SizeOpts & ThicknessOpts) {\n    this.withLineWidth(thickness, () => {\n      this.doc.withDrawColor(0, () => {\n        this.doc.circle(this.tx(x), this.ty(y), this.scale(size / 2), fill ? 'F' : 'S');\n      });\n    });\n  }\n\n  line({\n    x1, y1, x2, y2, thickness, color = 0,\n  }: { x1: number, y1: number, x2: number, y2: number } & ThicknessOpts & FillColorOpts) {\n    this.withLineWidth(thickness, () => {\n      this.doc.withFillColor(color, () => {\n        this.doc.withDrawColor(color, () => {\n          this.doc.line(this.tx(x1), this.ty(y1), this.tx(x2), this.ty(y2));\n        });\n      });\n    });\n  }\n\n  rect({\n    x, y, width, height, fill, thickness, radius, color = 0,\n  }: DimensionOpts & FillOpts & PositionOpts & RadiusOpts & ThicknessOpts & FillColorOpts) {\n    this.withLineWidth(thickness, () => {\n      this.doc.withDrawColor(color, () => {\n        this.doc.withFillColor(color, () => {\n          this.doc.roundedRect(\n            this.tx(x),\n            this.ty(y),\n            this.scale(width),\n            this.scale(height),\n            this.scale(radius),\n            this.scale(radius),\n            fill ? 'F' : 'S',\n          );\n        });\n      });\n    });\n  }\n\n  text(text: string, { fontStyle, x, y }: { fontSize: number, fontStyle?: string, x: number, y: number }) {\n    const style = fontStyle ?? 'title';\n    const font = this.fonts[style] ?? this.fonts.title;\n    this.withFontConfiguration(font, () => {\n      const textDimensions = this.doc.getTextDimensions(text);\n      this.doc.text(text, this.tx(x) - (textDimensions.w / 2), this.ty(y), font);\n    });\n  }\n\n  private scale(number: number) {\n    return number * this.#scale;\n  }\n\n  private tx(x: number) {\n    return this.#x + this.scale(x);\n  }\n\n  private ty(y: number) {\n    return this.#y + this.scale(y);\n  }\n\n  private withFontConfiguration(fontStyle: FontConfiguration, callback: () => void) {\n    this.doc.withFontConfiguration(fontStyle, callback);\n  }\n\n  private withLineWidth(lineWidth: number, callback: () => void) {\n    this.doc.withLineWidth(this.scale(lineWidth), callback);\n  }\n}\n\nexport default JsPDFRenderer;\n","import DocWrapper from '../../formatter/pdf_formatter/doc_wrapper';\nimport JsPDFDiagramRenderer from '../../chord_diagram/js_pdf_renderer';\nimport Song from '../../chord_sheet/song';\n\nimport ChordDefinition, { isNonSoundingString, isOpenFret } from '../../chord_definition/chord_definition';\nimport ChordDiagram, { Barre, ChordDiagramRenderingConfig, StringMarker } from '../../chord_diagram/chord_diagram';\n\nimport { ChordDiagramFontConfigurations } from '../../formatter/configuration';\n\nimport {\n  FingerNumber, Fret, FretNumber, StringNumber,\n} from '../../constants';\n\n/**\n * Context for chord diagram rendering\n */\nexport interface ChordDiagramRenderingContext {\n  song: Song;\n  doc: DocWrapper;\n  getMinY: () => number;\n  getColumnStartX: () => number;\n  getColumnBottomY: () => number;\n  moveToNextColumn: () => void;\n  dimensions: { columnWidth: number };\n  getX: () => number;\n  getY: () => number;\n  getCurrentColumn: () => number;\n  getCurrentPage: () => number;\n  setPosition: (x: number, y: number, column: number, page: number) => void;\n}\n\n/**\n * Configuration for chord diagram rendering\n */\nexport interface ChordDiagramConfig {\n  enabled: boolean;\n  renderingConfig?: ChordDiagramRenderingConfig;\n  fonts: ChordDiagramFontConfigurations;\n  overrides?: {\n    global?: Record<string, { hide?: boolean; definition?: string }>;\n    byKey?: Record<string, Record<string, { hide?: boolean; definition?: string }>>;\n  };\n}\n\n/**\n * Handles chord diagram rendering for PDF output.\n * Extracted from JsPdfRenderer to improve modularity.\n */\nexport class ChordDiagramRenderer {\n  private context: ChordDiagramRenderingContext;\n\n  private config: ChordDiagramConfig;\n\n  constructor(context: ChordDiagramRenderingContext, config: ChordDiagramConfig) {\n    this.context = context;\n    this.config = config;\n  }\n\n  /**\n   * Renders all chord diagrams for the song\n   */\n  render(): void {\n    if (!this.config.enabled) return;\n\n    const overrides = this.config.overrides || { global: {}, byKey: {} };\n    const layout = this.calculateDiagramLayout();\n    this.initializeDiagramPosition(layout.height);\n\n    let diagramsInRow = 0;\n    const songKey = this.context.song.key || 0;\n\n    this.getChordDefinitions().forEach((def: ChordDefinition) => {\n      const result = this.renderSingleChordDiagram(def, songKey, overrides, layout, diagramsInRow);\n      if (result !== null) diagramsInRow = result;\n    });\n  }\n\n  /**\n   * Calculates layout dimensions for chord diagrams\n   */\n  private calculateDiagramLayout(): { width: number; height: number; spacing: number; perRow: number } {\n    const { renderingConfig } = this.config;\n    const spacing = renderingConfig?.diagramSpacing || 7;\n    const maxPerRow = renderingConfig?.maxDiagramsPerRow || null;\n    const { columnWidth } = this.context.dimensions;\n\n    const minWidth = 30;\n    const maxWidth = 35;\n    const potentialPerRow = Math.floor(columnWidth / (minWidth + spacing));\n    const perRow = maxPerRow ? Math.min(maxPerRow, potentialPerRow) : potentialPerRow;\n    const totalSpacing = (perRow - 1) * spacing;\n    const width = Math.max(minWidth, Math.min(maxWidth, (columnWidth - totalSpacing) / perRow));\n    const height = JsPDFDiagramRenderer.calculateHeight(width);\n\n    return {\n      width, height, spacing, perRow,\n    };\n  }\n\n  /**\n   * Initializes position for diagram rendering\n   */\n  private initializeDiagramPosition(height: number): void {\n    let x = this.context.getX();\n    let y = this.context.getY();\n    let currentColumn = this.context.getCurrentColumn();\n\n    if (y === this.context.getMinY() && this.context.getCurrentPage() > 1) {\n      currentColumn = 1;\n      x = this.context.getColumnStartX();\n    }\n    if (y + height > this.context.getColumnBottomY()) {\n      this.context.moveToNextColumn();\n      y = this.context.getMinY();\n      x = this.context.getColumnStartX();\n      currentColumn = this.context.getCurrentColumn();\n    }\n\n    this.context.setPosition(x, y, currentColumn, this.context.getCurrentPage());\n  }\n\n  /**\n   * Renders a single chord diagram\n   */\n  private renderSingleChordDiagram(\n    chordDef: ChordDefinition,\n    songKey: any,\n    overrides: any,\n    layout: { width: number; height: number; spacing: number; perRow: number },\n    diagramsInRow: number,\n  ): number | null {\n    const { shouldHide, customDefinition } = this.processChordOverrides(chordDef.name, songKey, overrides);\n    if (shouldHide) return null;\n\n    const definition = customDefinition ? ChordDefinition.parse(customDefinition) : chordDef;\n    const newRowCount = this.positionForNextDiagram(layout, diagramsInRow);\n\n    this.drawChordDiagram(definition, layout.width, layout.spacing);\n    return newRowCount + 1;\n  }\n\n  /**\n   * Positions for the next diagram, handling row and column breaks\n   */\n  private positionForNextDiagram(\n    layout: { width: number; height: number; spacing: number; perRow: number },\n    diagramsInRow: number,\n  ): number {\n    let { count, x, y } = this.getInitialPosition(diagramsInRow);\n    ({ count, x, y } = this.handleRowBreak(layout, count, x, y));\n    ({ count, x, y } = this.handleColumnBreak(layout, count, x, y));\n    this.context.setPosition(x, y, this.context.getCurrentColumn(), this.context.getCurrentPage());\n    return count;\n  }\n\n  private getInitialPosition(diagramsInRow: number): { count: number; x: number; y: number } {\n    return { count: diagramsInRow, x: this.context.getX(), y: this.context.getY() };\n  }\n\n  private handleRowBreak(\n    layout: { width: number; height: number; spacing: number; perRow: number },\n    count: number,\n    x: number,\n    y: number,\n  ): { count: number; x: number; y: number } {\n    const { columnWidth } = this.context.dimensions;\n    const columnStartX = this.context.getColumnStartX();\n    const needsRowBreak = count >= layout.perRow || x + layout.width > columnStartX + columnWidth;\n    if (needsRowBreak) {\n      return { count: 0, x: this.context.getColumnStartX(), y: y + layout.height + layout.spacing };\n    }\n    return { count, x, y };\n  }\n\n  private handleColumnBreak(\n    layout: { width: number; height: number; spacing: number; perRow: number },\n    count: number,\n    x: number,\n    y: number,\n  ): { count: number; x: number; y: number } {\n    if (y + layout.height > this.context.getColumnBottomY()) {\n      this.context.moveToNextColumn();\n      return { count: 0, x: this.context.getColumnStartX(), y: this.context.getMinY() };\n    }\n    return { count, x, y };\n  }\n\n  /**\n   * Draws a single chord diagram\n   */\n  private drawChordDiagram(definition: ChordDefinition, width: number, spacing: number): void {\n    const { fonts } = this.config;\n    const diagram = this.buildChordDiagram(definition);\n    const x = this.context.getX();\n    const y = this.context.getY();\n    const renderer = new JsPDFDiagramRenderer(this.context.doc, {\n      x, y, width, fonts,\n    });\n    diagram.render(renderer);\n\n    const newX = x + width + spacing;\n    this.context.setPosition(newX, y, this.context.getCurrentColumn(), this.context.getCurrentPage());\n  }\n\n  /**\n   * Processes chord overrides from configuration\n   */\n  private processChordOverrides(\n    chordName: string,\n    songKey: number | string,\n    overrides: any,\n  ): { shouldHide: boolean; customDefinition: string | null } {\n    const keyOverride = overrides?.byKey?.[songKey]?.[chordName];\n    if (keyOverride) return this.extractOverrideValues(keyOverride);\n\n    const globalOverride = overrides?.global?.[chordName];\n    if (globalOverride) return this.extractOverrideValues(globalOverride);\n\n    return { shouldHide: false, customDefinition: null };\n  }\n\n  /**\n   * Extracts override values from configuration\n   */\n  private extractOverrideValues(override: any): { shouldHide: boolean; customDefinition: string | null } {\n    return {\n      shouldHide: override.hide ?? false,\n      customDefinition: override.definition ?? null,\n    };\n  }\n\n  /**\n   * Gets chord definitions from the song\n   */\n  private getChordDefinitions(): ChordDefinition[] {\n    const chordDefinitions = this.context.song.chordDefinitions.withDefaults();\n\n    return this.context.song\n      .getChords()\n      .map((chord) => chordDefinitions.get(chord))\n      .filter((chordDefinition) => chordDefinition !== null);\n  }\n\n  /**\n   * Builds a chord diagram from a chord definition\n   */\n  private buildChordDiagram(chordDefinition: ChordDefinition): ChordDiagram {\n    const openStrings = chordDefinition.frets\n      .map((fret: Fret, index: number) => (isOpenFret(fret) ? (index + 1) as StringNumber : null))\n      .filter((stringNumber: StringNumber | null) => stringNumber !== null);\n\n    const unusedStrings = chordDefinition.frets\n      .map((fret: Fret, index: number) => (isNonSoundingString(fret) ? (index + 1) as StringNumber : null))\n      .filter((stringNumber: StringNumber | null) => stringNumber !== null);\n\n    const markers: StringMarker[] = [];\n    const barres: Barre[] = [];\n\n    this.processFingeringAndBarres(chordDefinition, markers, barres);\n\n    const finalMarkers = markers.filter((marker) => (\n      !barres.some((barre) => marker.string >= barre.from && marker.string <= barre.to && marker.fret === barre.fret)\n    ));\n\n    const { renderingConfig } = this.config;\n\n    return new ChordDiagram({\n      chord: chordDefinition.name,\n      openStrings,\n      unusedStrings,\n      markers: finalMarkers,\n      barres,\n      baseFret: chordDefinition.baseFret,\n    }, renderingConfig);\n  }\n\n  /**\n   * Processes fingering information and identifies barres\n   */\n  private processFingeringAndBarres(\n    chordDefinition: ChordDefinition,\n    markers: StringMarker[],\n    barres: Barre[],\n  ): void {\n    if (!chordDefinition.fingers || chordDefinition.fingers.length === 0) {\n      this.addMarkersWithoutFingering(chordDefinition.frets, markers);\n      return;\n    }\n\n    const fretFingerGroups = this.groupFretsByFinger(chordDefinition);\n    this.processFretFingerGroups(fretFingerGroups, markers, barres);\n  }\n\n  /**\n   * Adds markers without fingering information\n   */\n  private addMarkersWithoutFingering(frets: Fret[], markers: StringMarker[]): void {\n    frets.forEach((fret: Fret, index: number) => {\n      if (!isNonSoundingString(fret) && !isOpenFret(fret)) {\n        markers.push({ string: (index + 1) as StringNumber, fret, finger: 0 });\n      }\n    });\n  }\n\n  /**\n   * Groups frets by finger for barre detection\n   */\n  private groupFretsByFinger(chordDefinition: ChordDefinition): Record<number, Record<number, number[]>> {\n    const groups: Record<number, Record<number, number[]>> = {};\n\n    chordDefinition.frets.forEach((fret: Fret, index: number) => {\n      if (isNonSoundingString(fret) || isOpenFret(fret)) return;\n\n      const finger = chordDefinition.fingers[index] || 0;\n      if (finger === 0) return;\n\n      const fretNum = fret as number;\n      groups[fretNum] = groups[fretNum] || {};\n      groups[fretNum][finger] = groups[fretNum][finger] || [];\n      groups[fretNum][finger].push((index + 1) as StringNumber);\n    });\n\n    return groups;\n  }\n\n  /**\n   * Processes grouped frets/fingers into markers and barres\n   */\n  private processFretFingerGroups(\n    groups: Record<number, Record<number, number[]>>,\n    markers: StringMarker[],\n    barres: Barre[],\n  ): void {\n    Object.entries(groups).forEach(([fretStr, fingers]) => {\n      const fret = parseInt(fretStr, 10) as FretNumber;\n      Object.entries(fingers).forEach(([fingerStr, strings]) => {\n        this.processFingerGroup(fret, parseInt(fingerStr, 10) as FingerNumber, strings, markers, barres);\n      });\n    });\n  }\n\n  /**\n   * Processes a single finger group into either a marker or barre\n   */\n  private processFingerGroup(\n    fret: FretNumber,\n    finger: FingerNumber,\n    strings: number[],\n    markers: StringMarker[],\n    barres: Barre[],\n  ): void {\n    if (strings.length > 1) {\n      this.addBarreIfValid(fret, strings, barres);\n    } else {\n      markers.push({ string: strings[0] as StringNumber, fret: fret as number, finger });\n    }\n  }\n\n  /**\n   * Adds a barre if string positions are valid\n   */\n  private addBarreIfValid(fret: FretNumber, strings: number[], barres: Barre[]): void {\n    strings.sort((a, b) => a - b);\n    const from = strings[0] as StringNumber;\n    const to = strings[strings.length - 1] as StringNumber;\n\n    if (from >= 1 && from <= 6 && to >= 1 && to <= 6 && from <= to) {\n      barres.push({ from, to, fret });\n    }\n  }\n}\n\nexport default ChordDiagramRenderer;\n","import { Blob } from 'buffer';\n\nimport Dimensions from '../../layout/engine/dimensions';\nimport DocWrapper from '../../formatter/pdf_formatter/doc_wrapper';\nimport PdfChordDiagramRenderer from './pdf_chord_diagram_renderer';\nimport Song from '../../chord_sheet/song';\n\nimport { MeasuredItem } from '../../layout/engine';\nimport { PdfConstructor } from '../../formatter/pdf_formatter/types';\nimport { getCapos } from '../../helpers';\n\nimport LayoutSectionRenderer, { LayoutRenderingBackend } from '../shared/layout_section_renderer';\nimport Renderer, { PositionedElement } from '../renderer';\n\nimport {\n  FontConfiguration,\n  PDFFormatterConfiguration,\n} from '../../formatter/configuration';\n\nclass JsPdfRenderer extends Renderer {\n  private configuration: PDFFormatterConfiguration;\n\n  private _dimensions: Dimensions | null = null;\n\n  private _dimensionCacheKey: string | null = null;\n\n  doc: DocWrapper;\n\n  constructor(\n    song: Song,\n    docConstructor: PdfConstructor,\n    configuration: PDFFormatterConfiguration,\n  ) {\n    super(song);\n    this.doc = DocWrapper.setup(docConstructor);\n    this.configuration = configuration;\n  }\n\n  //\n  // PUBLIC API IMPLEMENTATION\n  //\n\n  getFontConfiguration(objectType: string): FontConfiguration {\n    return this.configuration.fonts[objectType];\n  }\n\n  getDocumentMetadata(): Record<string, any> {\n    return {\n      pageWidth: this.getPageWidth(),\n      pageHeight: this.getPageHeight(),\n      marginLeft: this.getLeftMargin(),\n      marginRight: this.getRightMargin(),\n      marginTop: this.getTopMargin(),\n      marginBottom: this.getBottomMargin(),\n      columnWidth: this.getColumnWidth(),\n      columnCount: this.getColumnCount(),\n      currentPage: this.doc.currentPage,\n      totalPages: this.doc.totalPages,\n      renderTime: this.renderTime,\n      dimensions: this.dimensions,\n    };\n  }\n\n  save(filename: string): void {\n    this.doc.save(filename);\n  }\n\n  async generatePDF(): Promise<Blob> {\n    return this.doc.output();\n  }\n\n  getDoc(): DocWrapper {\n    return this.doc;\n  }\n\n  //\n  // ABSTRACT METHOD IMPLEMENTATIONS\n  //\n\n  protected initializeBackend(): void {\n    // Any PDF-specific initialization\n  }\n\n  protected createNewPage(): void {\n    this.doc.newPage();\n  }\n\n  protected renderChordDiagrams(): void {\n    const { chordDiagrams } = this.configuration.layout;\n    const diagramRenderer = new PdfChordDiagramRenderer(\n      this.createDiagramContext(),\n      this.createDiagramConfig(chordDiagrams),\n    );\n    diagramRenderer.render();\n  }\n\n  private createDiagramContext() {\n    return {\n      song: this.song,\n      doc: this.doc,\n      getMinY: () => this.getMinY(),\n      getColumnStartX: () => this.getColumnStartX(),\n      getColumnBottomY: () => this.getColumnBottomY(),\n      moveToNextColumn: () => this.moveToNextColumn(),\n      dimensions: this.dimensions,\n      getX: () => this.x,\n      getY: () => this.y,\n      getCurrentColumn: () => this.currentColumn,\n      getCurrentPage: () => this.currentPage,\n      setPosition: (x: number, y: number, column: number, page: number) => {\n        this.x = x;\n        this.y = y;\n        this.currentColumn = column;\n        this.currentPage = page;\n      },\n    };\n  }\n\n  private createDiagramConfig(chordDiagrams: any) {\n    return {\n      enabled: chordDiagrams.enabled,\n      renderingConfig: chordDiagrams.renderingConfig,\n      fonts: chordDiagrams.fonts,\n      overrides: chordDiagrams.overrides,\n    };\n  }\n\n  protected renderHeadersAndFooters(): void {\n    const layoutRenderer = this.createLayoutRenderer();\n\n    if (this.getHeaderConfig()) {\n      this.doc.eachPage(() => {\n        layoutRenderer.renderLayout(this.getHeaderConfig()!, 'header');\n      });\n    }\n    if (this.getFooterConfig()) {\n      this.doc.eachPage(() => {\n        layoutRenderer.renderLayout(this.getFooterConfig()!, 'footer');\n      });\n    }\n  }\n\n  private createLayoutRenderer(): LayoutSectionRenderer {\n    const backend = this.createLayoutBackend();\n    return new LayoutSectionRenderer(backend, {\n      metadata: this.song.metadata,\n      margins: this.dimensions.margins,\n      extraMetadata: this.getExtraMetadata(this.doc.currentPage, this.doc.totalPages),\n    });\n  }\n\n  private createLayoutBackend(): LayoutRenderingBackend {\n    return {\n      pageSize: this.doc.pageSize,\n      currentPage: this.doc.currentPage,\n      totalPages: this.doc.totalPages,\n      text: (content, x, y) => this.doc.text(content, x, y),\n      getTextWidth: (text) => this.doc.getTextWidth(text),\n      splitTextToSize: (text, maxWidth) => this.doc.splitTextToSize(text, maxWidth),\n      setFontStyle: (style) => this.doc.setFontStyle(style),\n      addImage: (src, format, x, y, width, height, alias, compression, rotation) => {\n        this.doc.addImage(src, format, x, y, width, height, alias, compression, rotation);\n      },\n      line: (x1, y1, x2, y2) => this.doc.line(x1, y1, x2, y2),\n      setLineStyle: (style) => this.doc.setLineStyle(style),\n      resetDash: () => this.doc.resetDash(),\n      setDrawColor: (color) => this.doc.setDrawColor(color),\n      setLineWidth: (width) => this.doc.setLineWidth(width),\n    };\n  }\n\n  protected measureText(text: string, font: FontConfiguration): { width: number; height: number } {\n    const dimensions = this.doc.getTextDimensions(text, font);\n    return {\n      width: dimensions.w,\n      height: dimensions.h,\n    };\n  }\n\n  protected calculateChordBaseline(yOffset: number, items: MeasuredItem[], chordText: string): number {\n    const chordFont = this.getFontConfiguration('chord');\n    const chordDimensions = this.doc.getTextDimensions(chordText, chordFont);\n    return yOffset + this.getMaxChordHeight(items) - chordDimensions.h;\n  }\n\n  protected finalizeRendering(): void {\n    const pageCount = Math.max(this.currentPage, this.doc.totalPages);\n\n    while (this.doc.totalPages < pageCount) {\n      this.doc.newPage();\n    }\n\n    for (let page = 1; page <= pageCount; page += 1) {\n      const pageElements = this.getElementsForPage(page);\n      if (pageElements.length > 0) {\n        this.doc.setPage(page);\n        pageElements.forEach((element) => {\n          this.drawElement(element);\n        });\n      }\n    }\n  }\n\n  //\n  // ABSTRACT ACCESSOR IMPLEMENTATIONS\n  //\n\n  protected getConfiguration() {\n    return this.configuration;\n  }\n\n  protected get dimensions(): Dimensions {\n    const currentKey = this.generateDimensionCacheKey();\n    if (this._dimensionCacheKey !== currentKey || this._dimensions === null) {\n      this._dimensions = this.buildDimensions();\n      this._dimensionCacheKey = currentKey;\n    }\n    return this._dimensions;\n  }\n\n  protected getDocPageSize(): { width: number; height: number } {\n    return this.doc.pageSize;\n  }\n\n  //\n  // PRIVATE HELPERS\n  //\n\n  private drawElement(element: PositionedElement): void {\n    if (element.style) {\n      this.doc.setFontStyle(element.style);\n    }\n\n    switch (element.type) {\n      case 'chord':\n      case 'lyrics':\n      case 'sectionLabel':\n      case 'comment': {\n        this.doc.text(element.content, element.x, element.y);\n        this.drawUnderlineIfNeeded(element);\n        break;\n      }\n      default:\n        // eslint-disable-next-line no-console\n        console.warn(`Unknown element type: ${element.type}`);\n        break;\n    }\n  }\n\n  private drawUnderlineIfNeeded(element: PositionedElement): void {\n    const isTitleSeparator = element.content?.trim() === '>';\n    if (element.style?.underline && !isTitleSeparator) {\n      const { w: textWidth } = this.doc.getTextDimensions(element.content);\n      this.doc.setDrawColor(0);\n      this.doc.setLineWidth(1.25);\n      this.doc.line(element.x, element.y + 3, element.x + textWidth, element.y + 3);\n    }\n  }\n\n  private buildDimensions(): Dimensions {\n    const { width, height } = this.doc.pageSize;\n    const {\n      columnCount,\n      columnSpacing,\n      minColumnWidth,\n      maxColumnWidth,\n    } = this.configuration.layout.sections.global;\n\n    return new Dimensions(width, height, this.configuration.layout, {\n      columnCount,\n      columnSpacing,\n      minColumnWidth,\n      maxColumnWidth,\n    });\n  }\n\n  private generateDimensionCacheKey(): string {\n    const { width, height } = this.doc.pageSize;\n    const { layout } = this.configuration;\n    const { global } = layout.sections;\n\n    return [\n      width,\n      height,\n      layout.global.margins.left,\n      layout.global.margins.right,\n      layout.global.margins.top,\n      layout.global.margins.bottom,\n      layout.header.height,\n      global.columnCount,\n      global.columnSpacing,\n      global.minColumnWidth || 0,\n      global.maxColumnWidth || 0,\n    ].join('-');\n  }\n\n  protected getExtraMetadata(page: number, totalPages: number): Record<string, string | string[]> {\n    const baseMetadata: Record<string, string | string[]> = {\n      page: page.toString(),\n      pages: totalPages.toString(),\n      renderTime: this.renderTime.toString(),\n    };\n\n    const capo = this.song.metadata.getSingle('capo');\n    const key = this.song.metadata.getSingle('key');\n\n    if (capo && key) {\n      const capoInt = parseInt(capo, 10);\n      baseMetadata.capoKey = getCapos(key)[capoInt];\n    }\n\n    return baseMetadata;\n  }\n}\n\nexport default JsPdfRenderer;\n","import { Blob } from 'buffer';\nimport JsPDF from 'jspdf';\n\nimport DocWrapper from './pdf_formatter/doc_wrapper';\nimport { JsPdfMeasurer } from '../layout/measurement/js_pdf_measurer';\nimport JsPdfRenderer from '../rendering/pdf/js_pdf_renderer';\nimport MeasurementBasedFormatter from './measurement_based_formatter';\nimport { PDFFormatterConfiguration } from './configuration';\nimport { PdfConstructor } from './pdf_formatter/types';\nimport Song from '../chord_sheet/song';\nimport { getPDFDefaultConfig } from './configuration';\nimport { LayoutConfig, LayoutEngine } from '../layout/engine';\n\n/**\n * PdfFormatter formats a song into a PDF document.\n */\nclass PdfFormatter extends MeasurementBasedFormatter<PDFFormatterConfiguration> {\n  private song: Song = new Song();\n\n  private renderer: JsPdfRenderer | null = null;\n\n  /**\n   * Get the default configuration for PDF formatter\n   */\n  protected getDefaultConfiguration(): PDFFormatterConfiguration {\n    return getPDFDefaultConfig();\n  }\n\n  /**\n   * Formats a song into a PDF.\n   * @param song - The song to format.\n   * @param docConstructor - The PDF document constructor.\n   */\n  format(\n    song: Song,\n    docConstructor: PdfConstructor = JsPDF,\n  ): void {\n    this.song = song;\n\n    // Create the PDF renderer\n    this.renderer = new JsPdfRenderer(\n      song,\n      docConstructor,\n      this.configuration,\n    );\n\n    // Initialize the renderer\n    this.renderer.initialize();\n\n    // Create the layout engine\n    const layoutEngine = this.createLayoutEngine();\n\n    // Compute paragraph layouts\n    const paragraphLayouts = layoutEngine.computeParagraphLayouts();\n\n    // Render everything with a single call\n    this.renderer.render(paragraphLayouts);\n  }\n\n  /**\n   * Create the layout engine with the appropriate configuration\n   */\n  // eslint-disable-next-line max-lines-per-function\n  private createLayoutEngine(): LayoutEngine {\n    if (!this.renderer) {\n      throw new Error('Renderer not initialized');\n    }\n\n    // Get dimensions and metadata from the renderer\n    const rendererMetadata = this.renderer.getDocumentMetadata();\n    const { dimensions } = rendererMetadata;\n\n    // Create the layout configuration\n    const layoutConfig: LayoutConfig = {\n      width: dimensions.columnWidth,\n      fonts: {\n        chord: this.configuration.fonts.chord,\n        lyrics: this.configuration.fonts.text,\n        comment: this.configuration.fonts.comment,\n        sectionLabel: this.configuration.fonts.sectionLabel,\n      },\n      chordSpacing: this.configuration.layout.sections.global.chordSpacing,\n      chordLyricSpacing: this.configuration.layout.sections.global.chordLyricSpacing,\n      linePadding: this.configuration.layout.sections.global.linePadding,\n      useUnicodeModifiers: this.configuration.useUnicodeModifiers,\n      normalizeChords: this.configuration.normalizeChords,\n\n      // Column and page layout information\n      minY: dimensions.minY,\n      columnWidth: dimensions.columnWidth,\n      columnSpacing: this.configuration.layout.sections.global.columnSpacing,\n      minColumnWidth: this.configuration.layout.sections.global.minColumnWidth,\n      maxColumnWidth: this.configuration.layout.sections.global.maxColumnWidth,\n      paragraphSpacing: this.configuration.layout.sections.global.paragraphSpacing || 0,\n      columnBottomY: this.renderer.getContentBottomY(),\n      displayLyricsOnly: !!this.configuration.layout.sections?.base?.display?.lyricsOnly,\n      decapo: this.configuration.decapo,\n      repeatedSections: this.configuration.layout.sections?.base?.display?.repeatedSections,\n    };\n\n    if (this.configuration.layout.sections.global.columnCount) {\n      layoutConfig.columnCount = this.configuration.layout.sections.global.columnCount;\n    }\n\n    // Return the layout engine\n    return new LayoutEngine(\n      this.song,\n      new JsPdfMeasurer(this.renderer.getDoc()),\n      layoutConfig,\n    );\n  }\n\n  /**\n   * Save the formatted document as a PDF file\n   */\n  save(): void {\n    if (this.renderer) {\n      this.renderer.save(`${this.song.title || 'untitled'}.pdf`);\n    }\n  }\n\n  /**\n   * Generate the PDF as a Blob object\n   */\n  async generatePDF(): Promise<Blob> {\n    if (this.renderer) {\n      return this.renderer.generatePDF();\n    }\n    throw new Error('Renderer not initialized');\n  }\n\n  /**\n   * Get the document wrapper - primarily for testing purposes.\n   */\n  getDocumentWrapper(): DocWrapper {\n    if (!this.renderer) {\n      throw new Error('Renderer not initialized');\n    }\n    return this.renderer.doc;\n  }\n}\n\nexport default PdfFormatter;\n","export { default as PdfFormatter } from './formatter/pdf_formatter';\nexport { JsPdfMeasurer } from './layout/measurement';\n"],"names":[],"version":3,"file":"main.d.ts.map"}