markdownLanguage top-level constant

Language const markdownLanguage

Markdown (text.html.markdown).

Implementation

const markdownLanguage = Language(
  name: 'markdown',
  scopeName: 'text.html.markdown',
  displayName: 'Markdown',
  aliases: ['md'],
  grammar: <String, Object?>{
    'displayName': 'Markdown',
    'name': 'markdown',
    'patterns': [
      {'include': '#frontMatter'},
      {'include': '#block'},
    ],
    'repository': {
      'ampersand': {
        'match': '&(?!([0-9A-Za-z]+|#[0-9]+|#x\\h+);)',
        'name': 'meta.other.valid-ampersand.markdown',
      },
      'block': {
        'patterns': [
          {'include': '#separator'},
          {'include': '#heading'},
          {'include': '#blockquote'},
          {'include': '#lists'},
          {'include': '#fenced_code_block'},
          {'include': '#raw_block'},
          {'include': '#link-def'},
          {'include': '#html'},
          {'include': '#table'},
          {'include': '#paragraph'},
        ],
      },
      'blockquote': {
        'begin': '(^|\\G) {0,3}(>) ?',
        'captures': {
          '2': {'name': 'punctuation.definition.quote.begin.markdown'},
        },
        'name': 'markup.quote.markdown',
        'patterns': [
          {'include': '#block'},
        ],
        'while': '(^|\\G)\\s*(>) ?',
      },
      'bold': {
        'begin':
            '(?<open>(\\*\\*(?=\\w)|(?<!\\w)\\*\\*|(?<!\\w)\\b__))(?=\\S)(?=(<[^>]*+>|(?<raw>`+)([^`]|(?!(?<!`)\\k<raw>(?!`))`)*+\\k<raw>|\\\\[-\\]!#(-+.>\\[\\\\_`{}]?+|\\[((?<square>[^]\\[\\\\]|\\\\.|\\[\\g<square>*+])*+](( ?\\[[^]]*+])|(\\([\\t ]*+<?(.*?)>?[\\t ]*+((?<title>["\'])(.*?)\\k<title>)?\\))))|(?!(?<=\\S)\\k<open>).)++(?<=\\S)(?=__\\b|\\*\\*)\\k<open>)',
        'captures': {
          '1': {'name': 'punctuation.definition.bold.markdown'},
        },
        'end': '(?<=\\S)(\\1)',
        'name': 'markup.bold.markdown',
        'patterns': [
          {
            'applyEndPatternLast': 1,
            'begin': '(?=<[^>]*?>)',
            'end': '(?<=>)',
            'patterns': [
              {'include': 'text.html.derivative'},
            ],
          },
          {'include': '#escape'},
          {'include': '#ampersand'},
          {'include': '#bracket'},
          {'include': '#raw'},
          {'include': '#bold'},
          {'include': '#italic'},
          {'include': '#image-inline'},
          {'include': '#link-inline'},
          {'include': '#link-inet'},
          {'include': '#link-email'},
          {'include': '#image-ref'},
          {'include': '#link-ref-literal'},
          {'include': '#link-ref'},
          {'include': '#link-ref-shortcut'},
          {'include': '#strikethrough'},
        ],
      },
      'bracket': {
        'match': '<(?![!\$/?A-Za-z])',
        'name': 'meta.other.valid-bracket.markdown',
      },
      'escape': {
        'match': '\\\\[-\\]!#(-+.>\\[\\\\_`{}]',
        'name': 'constant.character.escape.markdown',
      },
      'fenced_code_block': {
        'patterns': [
          {'include': '#fenced_code_block_css'},
          {'include': '#fenced_code_block_basic'},
          {'include': '#fenced_code_block_ini'},
          {'include': '#fenced_code_block_java'},
          {'include': '#fenced_code_block_lua'},
          {'include': '#fenced_code_block_makefile'},
          {'include': '#fenced_code_block_perl'},
          {'include': '#fenced_code_block_r'},
          {'include': '#fenced_code_block_ruby'},
          {'include': '#fenced_code_block_php'},
          {'include': '#fenced_code_block_sql'},
          {'include': '#fenced_code_block_vs_net'},
          {'include': '#fenced_code_block_xml'},
          {'include': '#fenced_code_block_xsl'},
          {'include': '#fenced_code_block_yaml'},
          {'include': '#fenced_code_block_dosbatch'},
          {'include': '#fenced_code_block_clojure'},
          {'include': '#fenced_code_block_coffee'},
          {'include': '#fenced_code_block_c'},
          {'include': '#fenced_code_block_cpp'},
          {'include': '#fenced_code_block_diff'},
          {'include': '#fenced_code_block_dockerfile'},
          {'include': '#fenced_code_block_git_commit'},
          {'include': '#fenced_code_block_git_rebase'},
          {'include': '#fenced_code_block_go'},
          {'include': '#fenced_code_block_groovy'},
          {'include': '#fenced_code_block_pug'},
          {'include': '#fenced_code_block_ignore'},
          {'include': '#fenced_code_block_js'},
          {'include': '#fenced_code_block_js_regexp'},
          {'include': '#fenced_code_block_json'},
          {'include': '#fenced_code_block_jsonc'},
          {'include': '#fenced_code_block_jsonl'},
          {'include': '#fenced_code_block_less'},
          {'include': '#fenced_code_block_objc'},
          {'include': '#fenced_code_block_swift'},
          {'include': '#fenced_code_block_scss'},
          {'include': '#fenced_code_block_perl6'},
          {'include': '#fenced_code_block_powershell'},
          {'include': '#fenced_code_block_python'},
          {'include': '#fenced_code_block_julia'},
          {'include': '#fenced_code_block_regexp_python'},
          {'include': '#fenced_code_block_rust'},
          {'include': '#fenced_code_block_scala'},
          {'include': '#fenced_code_block_shell'},
          {'include': '#fenced_code_block_ts'},
          {'include': '#fenced_code_block_tsx'},
          {'include': '#fenced_code_block_csharp'},
          {'include': '#fenced_code_block_fsharp'},
          {'include': '#fenced_code_block_dart'},
          {'include': '#fenced_code_block_handlebars'},
          {'include': '#fenced_code_block_markdown'},
          {'include': '#fenced_code_block_log'},
          {'include': '#fenced_code_block_erlang'},
          {'include': '#fenced_code_block_elixir'},
          {'include': '#fenced_code_block_latex'},
          {'include': '#fenced_code_block_bibtex'},
          {'include': '#fenced_code_block_twig'},
          {'include': '#fenced_code_block_yang'},
          {'include': '#fenced_code_block_abap'},
          {'include': '#fenced_code_block_restructuredtext'},
          {'include': '#fenced_code_block_unknown'},
        ],
      },
      'fenced_code_block_abap': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(abap)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.abap',
            'patterns': [
              {'include': 'source.abap'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_basic': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(html?|shtml|xhtml|inc|tmpl|tpl)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.html',
            'patterns': [
              {'include': 'text.html.basic'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_bibtex': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(bibtex)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.bibtex',
            'patterns': [
              {'include': 'text.bibtex'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_c': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:([ch])((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.c',
            'patterns': [
              {'include': 'source.c'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_clojure': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(cl(?:js??|ojure))((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.clojure',
            'patterns': [
              {'include': 'source.clojure'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_coffee': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(coffee|Cakefile|coffee.erb)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.coffee',
            'patterns': [
              {'include': 'source.coffee'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_cpp': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(c(?:pp|\\+\\+|xx))((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.cpp source.cpp',
            'patterns': [
              {'include': 'source.cpp'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_csharp': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(c(?:s|sharp|#))((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.csharp',
            'patterns': [
              {'include': 'source.cs'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_css': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(css(?:|.erb))((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.css',
            'patterns': [
              {'include': 'source.css'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_dart': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(dart)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.dart',
            'patterns': [
              {'include': 'source.dart'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_diff': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(patch|diff|rej)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.diff',
            'patterns': [
              {'include': 'source.diff'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_dockerfile': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:([Dd]ockerfile)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.dockerfile',
            'patterns': [
              {'include': 'source.dockerfile'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_dosbatch': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(bat(?:|ch))((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.dosbatch',
            'patterns': [
              {'include': 'source.batchfile'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_elixir': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(elixir)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.elixir',
            'patterns': [
              {'include': 'source.elixir'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_erlang': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(erlang)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.erlang',
            'patterns': [
              {'include': 'source.erlang'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_fsharp': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(f(?:s|sharp|#))((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.fsharp',
            'patterns': [
              {'include': 'source.fsharp'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_git_commit': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:((?:COMMIT_EDIT|MERGE_)MSG)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.git_commit',
            'patterns': [
              {'include': 'text.git-commit'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_git_rebase': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(git-rebase-todo)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.git_rebase',
            'patterns': [
              {'include': 'text.git-rebase'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_go': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(go(?:|lang))((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.go',
            'patterns': [
              {'include': 'source.go'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_groovy': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(g(?:roovy|vy))((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.groovy',
            'patterns': [
              {'include': 'source.groovy'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_handlebars': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(h(?:andlebars|bs))((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.handlebars',
            'patterns': [
              {'include': 'text.html.handlebars'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_ignore': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:((?:git|)ignore)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.ignore',
            'patterns': [
              {'include': 'source.ignore'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_ini': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(ini|conf)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.ini',
            'patterns': [
              {'include': 'source.ini'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_java': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(java|bsh)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.java',
            'patterns': [
              {'include': 'source.java'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_js': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(jsx??|javascript|es6|mjs|cjs|dataviewjs|\\{\\.js.+?})((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.javascript',
            'patterns': [
              {'include': 'source.js'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_js_regexp': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(regexp)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.js_regexp',
            'patterns': [
              {'include': 'source.js.regexp'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_json': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(json5??|sublime-settings|sublime-menu|sublime-keymap|sublime-mousemap|sublime-theme|sublime-build|sublime-project|sublime-completions)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.json',
            'patterns': [
              {'include': 'source.json'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_jsonc': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(jsonc)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.jsonc',
            'patterns': [
              {'include': 'source.json.comments'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_jsonl': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(jsonl(?:|ines))((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.jsonl',
            'patterns': [
              {'include': 'source.json.lines'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_julia': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(julia|\\{\\.julia.+?})((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.julia',
            'patterns': [
              {'include': 'source.julia'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_latex': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:((?:la|)tex)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.latex',
            'patterns': [
              {'include': 'text.tex.latex'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_less': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(less)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.less',
            'patterns': [
              {'include': 'source.css.less'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_log': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(log)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.log',
            'patterns': [
              {'include': 'text.log'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_lua': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(lua)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.lua',
            'patterns': [
              {'include': 'source.lua'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_makefile': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:((?:[Mm]|GNUm|OCamlM)akefile)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.makefile',
            'patterns': [
              {'include': 'source.makefile'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_markdown': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(m(?:arkdown|d))((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.markdown',
            'patterns': [
              {'include': 'text.html.markdown'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_objc': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(objectivec|objective-c|mm|objc|obj-c|[hm])((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.objc',
            'patterns': [
              {'include': 'source.objc'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_perl': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(perl|pl|pm|pod|t|PL|psgi|vcl)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.perl',
            'patterns': [
              {'include': 'source.perl'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_perl6': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(perl6|p6|pl6|pm6|nqp)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.perl6',
            'patterns': [
              {'include': 'source.perl.6'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_php': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(php3??|php4|php5|phpt|phtml|aw|ctp)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.php',
            'patterns': [
              {'include': 'text.html.basic'},
              {'include': 'source.php'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_powershell': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(p(?:owershell|s1|sm1|sd1|wsh))((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.powershell',
            'patterns': [
              {'include': 'source.powershell'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_pug': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(jade|pug)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.pug',
            'patterns': [
              {'include': 'text.pug'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_python': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(python|py3??|rpy|pyw|cpy|SConstruct|Sconstruct|sconstruct|SConscript|gypi??|\\{\\.python.+?})((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.python',
            'patterns': [
              {'include': 'source.python'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_r': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:([RSrs]|Rprofile|\\{\\.r.+?})((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.r',
            'patterns': [
              {'include': 'source.r'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_regexp_python': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(re)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.regexp_python',
            'patterns': [
              {'include': 'source.regexp.python'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_restructuredtext': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(r(?:estructuredtext|st))((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.restructuredtext',
            'patterns': [
              {'include': 'source.rst'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_ruby': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(ruby|rbx??|rjs|Rakefile|rake|cgi|fcgi|gemspec|irbrc|Capfile|ru|prawn|Cheffile|Gemfile|Guardfile|Hobofile|Vagrantfile|Appraisals|Rantfile|Berksfile|Berksfile.lock|Thorfile|Puppetfile)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.ruby',
            'patterns': [
              {'include': 'source.ruby'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_rust': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(rust|rs|\\{\\.rust.+?})((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.rust',
            'patterns': [
              {'include': 'source.rust'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_scala': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(s(?:cala|bt))((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.scala',
            'patterns': [
              {'include': 'source.scala'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_scss': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(scss)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.scss',
            'patterns': [
              {'include': 'source.css.scss'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_shell': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(shell|sh|bash|zsh|bashrc|bash_profile|bash_login|profile|bash_logout|.textmate_init|\\{\\.bash.+?})((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.shellscript',
            'patterns': [
              {'include': 'source.shell'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_sql': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(sql|ddl|dml)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.sql',
            'patterns': [
              {'include': 'source.sql'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_swift': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(swift)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.swift',
            'patterns': [
              {'include': 'source.swift'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_ts': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(t(?:ypescript|s))((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.typescript',
            'patterns': [
              {'include': 'source.ts'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_tsx': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(tsx)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.typescriptreact',
            'patterns': [
              {'include': 'source.tsx'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_twig': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(twig)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.twig',
            'patterns': [
              {'include': 'source.twig'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_unknown': {
        'begin': '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?=([^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
      },
      'fenced_code_block_vs_net': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(vb)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.vs_net',
            'patterns': [
              {'include': 'source.asp.vb.net'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_xml': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(xml|xsd|tld|jsp|pt|cpt|dtml|rss|opml)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.xml',
            'patterns': [
              {'include': 'text.xml'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_xsl': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(xslt??)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.xsl',
            'patterns': [
              {'include': 'text.xml.xsl'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_yaml': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(ya?ml)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.yaml',
            'patterns': [
              {'include': 'source.yaml'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'fenced_code_block_yang': {
        'begin':
            '(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(yang)((\\s+|[,:?{])[^`]*)?\$)',
        'beginCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
          '4': {'name': 'fenced_code.block.language.markdown'},
          '5': {'name': 'fenced_code.block.language.attributes.markdown'},
        },
        'end': '(^|\\G)(\\2|\\s{0,3})(\\3)\\s*\$',
        'endCaptures': {
          '3': {'name': 'punctuation.definition.markdown'},
        },
        'name': 'markup.fenced_code.block.markdown',
        'patterns': [
          {
            'begin': '(^|\\G)(\\s*)(.*)',
            'contentName': 'meta.embedded.block.yang',
            'patterns': [
              {'include': 'source.yang'},
            ],
            'while': '(^|\\G)(?!\\s*([`~]{3,})\\s*\$)',
          },
        ],
      },
      'frontMatter': {
        'applyEndPatternLast': 1,
        'begin': '\\A(?=(-{3,}))',
        'end': '^(?: {0,3}\\1-*[\\t ]*|[\\t ]*\\.{3})\$',
        'endCaptures': {
          '0': {'name': 'punctuation.definition.end.frontmatter'},
        },
        'patterns': [
          {
            'begin': '\\A(-{3,})(.*)\$',
            'beginCaptures': {
              '1': {'name': 'punctuation.definition.begin.frontmatter'},
              '2': {'name': 'comment.frontmatter'},
            },
            'contentName': 'meta.embedded.block.frontmatter',
            'patterns': [
              {'include': 'source.yaml'},
            ],
            'while': '^(?!(?: {0,3}\\1-*[\\t ]*|[\\t ]*\\.{3})\$)',
          },
        ],
      },
      'heading': {
        'captures': {
          '1': {
            'patterns': [
              {
                'captures': {
                  '1': {'name': 'punctuation.definition.heading.markdown'},
                  '2': {
                    'name': 'entity.name.section.markdown',
                    'patterns': [
                      {'include': '#inline'},
                      {'include': 'text.html.derivative'},
                    ],
                  },
                  '3': {'name': 'punctuation.definition.heading.markdown'},
                },
                'match': '(#{6})\\s+(.*?)(?:\\s+(#+))?\\s*\$',
                'name': 'heading.6.markdown',
              },
              {
                'captures': {
                  '1': {'name': 'punctuation.definition.heading.markdown'},
                  '2': {
                    'name': 'entity.name.section.markdown',
                    'patterns': [
                      {'include': '#inline'},
                      {'include': 'text.html.derivative'},
                    ],
                  },
                  '3': {'name': 'punctuation.definition.heading.markdown'},
                },
                'match': '(#{5})\\s+(.*?)(?:\\s+(#+))?\\s*\$',
                'name': 'heading.5.markdown',
              },
              {
                'captures': {
                  '1': {'name': 'punctuation.definition.heading.markdown'},
                  '2': {
                    'name': 'entity.name.section.markdown',
                    'patterns': [
                      {'include': '#inline'},
                      {'include': 'text.html.derivative'},
                    ],
                  },
                  '3': {'name': 'punctuation.definition.heading.markdown'},
                },
                'match': '(#{4})\\s+(.*?)(?:\\s+(#+))?\\s*\$',
                'name': 'heading.4.markdown',
              },
              {
                'captures': {
                  '1': {'name': 'punctuation.definition.heading.markdown'},
                  '2': {
                    'name': 'entity.name.section.markdown',
                    'patterns': [
                      {'include': '#inline'},
                      {'include': 'text.html.derivative'},
                    ],
                  },
                  '3': {'name': 'punctuation.definition.heading.markdown'},
                },
                'match': '(#{3})\\s+(.*?)(?:\\s+(#+))?\\s*\$',
                'name': 'heading.3.markdown',
              },
              {
                'captures': {
                  '1': {'name': 'punctuation.definition.heading.markdown'},
                  '2': {
                    'name': 'entity.name.section.markdown',
                    'patterns': [
                      {'include': '#inline'},
                      {'include': 'text.html.derivative'},
                    ],
                  },
                  '3': {'name': 'punctuation.definition.heading.markdown'},
                },
                'match': '(#{2})\\s+(.*?)(?:\\s+(#+))?\\s*\$',
                'name': 'heading.2.markdown',
              },
              {
                'captures': {
                  '1': {'name': 'punctuation.definition.heading.markdown'},
                  '2': {
                    'name': 'entity.name.section.markdown',
                    'patterns': [
                      {'include': '#inline'},
                      {'include': 'text.html.derivative'},
                    ],
                  },
                  '3': {'name': 'punctuation.definition.heading.markdown'},
                },
                'match': '(#{1})\\s+(.*?)(?:\\s+(#+))?\\s*\$',
                'name': 'heading.1.markdown',
              },
            ],
          },
        },
        'match': '(?:^|\\G) {0,3}(#{1,6}\\s+(.*?)(\\s+#{1,6})?\\s*)\$',
        'name': 'markup.heading.markdown',
      },
      'heading-setext': {
        'patterns': [
          {
            'match': '^(={3,})(?=[\\t ]*\$\\n?)',
            'name': 'markup.heading.setext.1.markdown',
          },
          {
            'match': '^(-{3,})(?=[\\t ]*\$\\n?)',
            'name': 'markup.heading.setext.2.markdown',
          },
        ],
      },
      'html': {
        'patterns': [
          {
            'begin': '(^|\\G)\\s*(<!--)',
            'captures': {
              '1': {'name': 'punctuation.definition.comment.html'},
              '2': {'name': 'punctuation.definition.comment.html'},
            },
            'end': '(-->)',
            'name': 'comment.block.html',
          },
          {
            'begin':
                '(?i)(^|\\G)\\s*(?=<(script|style|pre)(\\s|\$|>)(?!.*?</(script|style|pre)>))',
            'end': '(?i)(.*)((</)(script|style|pre)(>))',
            'endCaptures': {
              '1': {
                'patterns': [
                  {'include': 'text.html.derivative'},
                ],
              },
              '2': {'name': 'meta.tag.structure.\$4.end.html'},
              '3': {'name': 'punctuation.definition.tag.begin.html'},
              '4': {'name': 'entity.name.tag.html'},
              '5': {'name': 'punctuation.definition.tag.end.html'},
            },
            'patterns': [
              {
                'begin': '(\\s*|\$)',
                'patterns': [
                  {'include': 'text.html.derivative'},
                ],
                'while': '(?i)^(?!.*</(script|style|pre)>)',
              },
            ],
          },
          {
            'begin':
                '(?i)(^|\\G)\\s*(?=</?[A-Za-z]+[^\\&/;gt\\s]*(\\s|\$|/?>))',
            'patterns': [
              {'include': 'text.html.derivative'},
            ],
            'while': '^(?!\\s*\$)',
          },
          {
            'begin':
                '(^|\\G)\\s*(?=(<(?:[-0-9A-Za-z](/?>|\\s.*?>)|/[-0-9A-Za-z]>))\\s*\$)',
            'patterns': [
              {'include': 'text.html.derivative'},
            ],
            'while': '^(?!\\s*\$)',
          },
        ],
      },
      'image-inline': {
        'captures': {
          '1': {
            'name': 'punctuation.definition.link.description.begin.markdown',
          },
          '2': {'name': 'string.other.link.description.markdown'},
          '4': {'name': 'punctuation.definition.link.description.end.markdown'},
          '5': {'name': 'punctuation.definition.metadata.markdown'},
          '7': {'name': 'punctuation.definition.link.markdown'},
          '8': {'name': 'markup.underline.link.image.markdown'},
          '9': {'name': 'punctuation.definition.link.markdown'},
          '10': {'name': 'markup.underline.link.image.markdown'},
          '12': {'name': 'string.other.link.description.title.markdown'},
          '13': {'name': 'punctuation.definition.string.begin.markdown'},
          '14': {'name': 'punctuation.definition.string.end.markdown'},
          '15': {'name': 'string.other.link.description.title.markdown'},
          '16': {'name': 'punctuation.definition.string.begin.markdown'},
          '17': {'name': 'punctuation.definition.string.end.markdown'},
          '18': {'name': 'string.other.link.description.title.markdown'},
          '19': {'name': 'punctuation.definition.string.begin.markdown'},
          '20': {'name': 'punctuation.definition.string.end.markdown'},
          '21': {'name': 'punctuation.definition.metadata.markdown'},
        },
        'match':
            '(!\\[)((?<square>[^]\\[\\\\]|\\\\.|\\[\\g<square>*+])*+)(])(\\()[\\t ]*((<)((?:\\\\[<>]|[^\\n<>])*)(>)|((?<url>(?>[^()\\s]+)|\\(\\g<url>*\\))*))[\\t ]*(?:((\\().+?(\\)))|((").+?("))|((\').+?(\')))?\\s*(\\))',
        'name': 'meta.image.inline.markdown',
      },
      'image-ref': {
        'captures': {
          '1': {
            'name': 'punctuation.definition.link.description.begin.markdown',
          },
          '2': {'name': 'string.other.link.description.markdown'},
          '4': {'name': 'punctuation.definition.link.description.end.markdown'},
          '5': {'name': 'punctuation.definition.constant.markdown'},
          '6': {'name': 'constant.other.reference.link.markdown'},
          '7': {'name': 'punctuation.definition.constant.markdown'},
        },
        'match':
            '(!\\[)((?<square>[^]\\[\\\\]|\\\\.|\\[\\g<square>*+])*+)(]) ?(\\[)(.*?)(])',
        'name': 'meta.image.reference.markdown',
      },
      'inline': {
        'patterns': [
          {'include': '#ampersand'},
          {'include': '#bracket'},
          {'include': '#bold'},
          {'include': '#italic'},
          {'include': '#raw'},
          {'include': '#strikethrough'},
          {'include': '#escape'},
          {'include': '#image-inline'},
          {'include': '#image-ref'},
          {'include': '#link-email'},
          {'include': '#link-inet'},
          {'include': '#link-inline'},
          {'include': '#link-ref'},
          {'include': '#link-ref-literal'},
          {'include': '#link-ref-shortcut'},
        ],
      },
      'italic': {
        'begin':
            '(?<open>(\\*(?=\\w)|(?<!\\w)\\*|(?<!\\w)\\b_))(?=\\S)(?=(<[^>]*+>|(?<raw>`+)([^`]|(?!(?<!`)\\k<raw>(?!`))`)*+\\k<raw>|\\\\[-\\]!#(-+.>\\[\\\\_`{}]?+|\\[((?<square>[^]\\[\\\\]|\\\\.|\\[\\g<square>*+])*+](( ?\\[[^]]*+])|(\\([\\t ]*+<?(.*?)>?[\\t ]*+((?<title>["\'])(.*?)\\k<title>)?\\))))|\\k<open>\\k<open>|(?!(?<=\\S)\\k<open>).)++(?<=\\S)(?=_\\b|\\*)\\k<open>)',
        'captures': {
          '1': {'name': 'punctuation.definition.italic.markdown'},
        },
        'end': '(?<=\\S)(\\1)((?!\\1)|(?=\\1\\1))',
        'name': 'markup.italic.markdown',
        'patterns': [
          {
            'applyEndPatternLast': 1,
            'begin': '(?=<[^>]*?>)',
            'end': '(?<=>)',
            'patterns': [
              {'include': 'text.html.derivative'},
            ],
          },
          {'include': '#escape'},
          {'include': '#ampersand'},
          {'include': '#bracket'},
          {'include': '#raw'},
          {'include': '#bold'},
          {'include': '#image-inline'},
          {'include': '#link-inline'},
          {'include': '#link-inet'},
          {'include': '#link-email'},
          {'include': '#image-ref'},
          {'include': '#link-ref-literal'},
          {'include': '#link-ref'},
          {'include': '#link-ref-shortcut'},
          {'include': '#strikethrough'},
        ],
      },
      'link-def': {
        'captures': {
          '1': {'name': 'punctuation.definition.constant.markdown'},
          '2': {'name': 'constant.other.reference.link.markdown'},
          '3': {'name': 'punctuation.definition.constant.markdown'},
          '4': {'name': 'punctuation.separator.key-value.markdown'},
          '5': {'name': 'punctuation.definition.link.markdown'},
          '6': {'name': 'markup.underline.link.markdown'},
          '7': {'name': 'punctuation.definition.link.markdown'},
          '8': {'name': 'markup.underline.link.markdown'},
          '9': {'name': 'string.other.link.description.title.markdown'},
          '10': {'name': 'punctuation.definition.string.begin.markdown'},
          '11': {'name': 'punctuation.definition.string.end.markdown'},
          '12': {'name': 'string.other.link.description.title.markdown'},
          '13': {'name': 'punctuation.definition.string.begin.markdown'},
          '14': {'name': 'punctuation.definition.string.end.markdown'},
          '15': {'name': 'string.other.link.description.title.markdown'},
          '16': {'name': 'punctuation.definition.string.begin.markdown'},
          '17': {'name': 'punctuation.definition.string.end.markdown'},
        },
        'match':
            '\\s*(\\[)([^]]+?)(])(:)[\\t ]*(?:(<)((?:\\\\[<>]|[^\\n<>])*)(>)|(\\S+?))[\\t ]*(?:((\\().+?(\\)))|((").+?("))|((\').+?(\')))?\\s*\$',
        'name': 'meta.link.reference.def.markdown',
      },
      'link-email': {
        'captures': {
          '1': {'name': 'punctuation.definition.link.markdown'},
          '2': {'name': 'markup.underline.link.markdown'},
          '4': {'name': 'punctuation.definition.link.markdown'},
        },
        'match':
            '(<)((?:mailto:)?[!#-\'*+\\--9=?A-Z^-~]+@[-0-9A-Za-z]+(?:\\.[-0-9A-Za-z]+)*)(>)',
        'name': 'meta.link.email.lt-gt.markdown',
      },
      'link-inet': {
        'captures': {
          '1': {'name': 'punctuation.definition.link.markdown'},
          '2': {'name': 'markup.underline.link.markdown'},
          '3': {'name': 'punctuation.definition.link.markdown'},
        },
        'match': '(<)((?:https?|ftp)://.*?)(>)',
        'name': 'meta.link.inet.markdown',
      },
      'link-inline': {
        'captures': {
          '1': {'name': 'punctuation.definition.link.title.begin.markdown'},
          '2': {
            'name': 'string.other.link.title.markdown',
            'patterns': [
              {'include': '#raw'},
              {'include': '#bold'},
              {'include': '#italic'},
              {'include': '#strikethrough'},
              {'include': '#image-inline'},
            ],
          },
          '4': {'name': 'punctuation.definition.link.title.end.markdown'},
          '5': {'name': 'punctuation.definition.metadata.markdown'},
          '7': {'name': 'punctuation.definition.link.markdown'},
          '8': {'name': 'markup.underline.link.markdown'},
          '9': {'name': 'punctuation.definition.link.markdown'},
          '10': {'name': 'markup.underline.link.markdown'},
          '12': {'name': 'string.other.link.description.title.markdown'},
          '13': {'name': 'punctuation.definition.string.begin.markdown'},
          '14': {'name': 'punctuation.definition.string.end.markdown'},
          '15': {'name': 'string.other.link.description.title.markdown'},
          '16': {'name': 'punctuation.definition.string.begin.markdown'},
          '17': {'name': 'punctuation.definition.string.end.markdown'},
          '18': {'name': 'string.other.link.description.title.markdown'},
          '19': {'name': 'punctuation.definition.string.begin.markdown'},
          '20': {'name': 'punctuation.definition.string.end.markdown'},
          '21': {'name': 'punctuation.definition.metadata.markdown'},
        },
        'match':
            '(\\[)((?<square>[^]\\[\\\\]|\\\\.|\\[\\g<square>*+])*+)(])(\\()[\\t ]*((<)((?:\\\\[<>]|[^\\n<>])*)(>)|((?<url>(?>[^()\\s]+)|\\(\\g<url>*\\))*))[\\t ]*(?:((\\()[^()]*(\\)))|((")[^"]*("))|((\')[^\']*(\')))?\\s*(\\))',
        'name': 'meta.link.inline.markdown',
      },
      'link-ref': {
        'captures': {
          '1': {'name': 'punctuation.definition.link.title.begin.markdown'},
          '2': {
            'name': 'string.other.link.title.markdown',
            'patterns': [
              {'include': '#raw'},
              {'include': '#bold'},
              {'include': '#italic'},
              {'include': '#strikethrough'},
              {'include': '#image-inline'},
            ],
          },
          '4': {'name': 'punctuation.definition.link.title.end.markdown'},
          '5': {'name': 'punctuation.definition.constant.begin.markdown'},
          '6': {'name': 'constant.other.reference.link.markdown'},
          '7': {'name': 'punctuation.definition.constant.end.markdown'},
        },
        'match':
            '(?<![]\\\\])(\\[)((?<square>[^]\\[\\\\]|\\\\.|\\[\\g<square>*+])*+)(])(\\[)([^]]*+)(])',
        'name': 'meta.link.reference.markdown',
      },
      'link-ref-literal': {
        'captures': {
          '1': {'name': 'punctuation.definition.link.title.begin.markdown'},
          '2': {'name': 'string.other.link.title.markdown'},
          '4': {'name': 'punctuation.definition.link.title.end.markdown'},
          '5': {'name': 'punctuation.definition.constant.begin.markdown'},
          '6': {'name': 'punctuation.definition.constant.end.markdown'},
        },
        'match':
            '(?<![]\\\\])(\\[)((?<square>[^]\\[\\\\]|\\\\.|\\[\\g<square>*+])*+)(]) ?(\\[)(])',
        'name': 'meta.link.reference.literal.markdown',
      },
      'link-ref-shortcut': {
        'captures': {
          '1': {'name': 'punctuation.definition.link.title.begin.markdown'},
          '2': {'name': 'string.other.link.title.markdown'},
          '3': {'name': 'punctuation.definition.link.title.end.markdown'},
        },
        'match':
            '(?<![]\\\\])(\\[)((?:[^]\\[\\\\\\s]|\\\\[]\\[])+?)((?<!\\\\)])',
        'name': 'meta.link.reference.markdown',
      },
      'list_paragraph': {
        'begin': '(^|\\G)(?=\\S)(?![*->]\\s|[0-9]+\\.\\s)',
        'name': 'meta.paragraph.markdown',
        'patterns': [
          {'include': '#inline'},
          {'include': 'text.html.derivative'},
          {'include': '#heading-setext'},
        ],
        'while':
            '(^|\\G)(?!\\s*\$|#| {0,3}([-*>_] {2,}){3,}[\\t ]*\$\\n?| {0,3}[*->]| {0,3}[0-9]+\\.)',
      },
      'lists': {
        'patterns': [
          {
            'begin': '(^|\\G)( {0,3})([-*+])([\\t ])',
            'beginCaptures': {
              '3': {'name': 'punctuation.definition.list.begin.markdown'},
            },
            'name': 'markup.list.unnumbered.markdown',
            'patterns': [
              {'include': '#block'},
              {'include': '#list_paragraph'},
            ],
            'while': '((^|\\G)( {2,4}|\\t))|^([\\t ]*)\$',
          },
          {
            'begin': '(^|\\G)( {0,3})([0-9]+[).])([\\t ])',
            'beginCaptures': {
              '3': {'name': 'punctuation.definition.list.begin.markdown'},
            },
            'name': 'markup.list.numbered.markdown',
            'patterns': [
              {'include': '#block'},
              {'include': '#list_paragraph'},
            ],
            'while': '((^|\\G)( {2,4}|\\t))|^([\\t ]*)\$',
          },
        ],
      },
      'paragraph': {
        'begin': '(^|\\G) {0,3}(?=[^\\t\\n ])',
        'name': 'meta.paragraph.markdown',
        'patterns': [
          {'include': '#inline'},
          {'include': 'text.html.derivative'},
          {'include': '#heading-setext'},
        ],
        'while': '(^|\\G)((?=\\s*[-=]{3,}\\s*\$)| {4,}(?=[^\\t\\n ]))',
      },
      'raw': {
        'captures': {
          '1': {'name': 'punctuation.definition.raw.markdown'},
          '3': {'name': 'punctuation.definition.raw.markdown'},
        },
        'match': '(`+)((?:[^`]|(?!(?<!`)\\1(?!`))`)*+)(\\1)',
        'name': 'markup.inline.raw.string.markdown',
      },
      'raw_block': {
        'begin': '(^|\\G)( {4}|\\t)',
        'name': 'markup.raw.block.markdown',
        'while': '(^|\\G)( {4}|\\t)',
      },
      'separator': {
        'match': '(^|\\G) {0,3}([-*_])( {0,2}\\2){2,}[\\t ]*\$\\n?',
        'name': 'meta.separator.markdown',
      },
      'strikethrough': {
        'captures': {
          '1': {'name': 'punctuation.definition.strikethrough.markdown'},
          '2': {
            'patterns': [
              {
                'applyEndPatternLast': 1,
                'begin': '(?=<[^>]*?>)',
                'end': '(?<=>)',
                'patterns': [
                  {'include': 'text.html.derivative'},
                ],
              },
              {'include': '#escape'},
              {'include': '#ampersand'},
              {'include': '#bracket'},
              {'include': '#raw'},
              {'include': '#bold'},
              {'include': '#italic'},
              {'include': '#image-inline'},
              {'include': '#link-inline'},
              {'include': '#link-inet'},
              {'include': '#link-email'},
              {'include': '#image-ref'},
              {'include': '#link-ref-literal'},
              {'include': '#link-ref'},
              {'include': '#link-ref-shortcut'},
            ],
          },
          '3': {'name': 'punctuation.definition.strikethrough.markdown'},
        },
        'match':
            '(?<!\\\\)(~{2,})(?!(?<=\\w~~)_)((?:[^~]|(?!(?<![\\\\~])\\1(?!~))~)*+)(\\1)(?!(?<=_\\1)\\w)',
        'name': 'markup.strikethrough.markdown',
      },
      'table': {
        'begin': '(^|\\G)(\\|)(?=[^|].+\\|\\s*\$)',
        'beginCaptures': {
          '2': {'name': 'punctuation.definition.table.markdown'},
        },
        'name': 'markup.table.markdown',
        'patterns': [
          {'match': '\\|', 'name': 'punctuation.definition.table.markdown'},
          {
            'captures': {
              '1': {'name': 'punctuation.separator.table.markdown'},
            },
            'match': '(?<=\\|)\\s*(:?-+:?)\\s*(?=\\|)',
          },
          {
            'captures': {
              '1': {
                'patterns': [
                  {'include': '#inline'},
                ],
              },
            },
            'match': '(?<=\\|)\\s*(?=\\S)((\\\\\\||[^|])+)(?<=\\S)\\s*(?=\\|)',
          },
        ],
        'while': '(^|\\G)(?=\\|)',
      },
    },
    'scopeName': 'text.html.markdown',
  },
);